[{"firstHeader":"class","last_chapter_rule":"","title":"我的主页","author":"@LoyDgIk","version":43,"type":"other","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch(\"hiker://assets/home.js\"));\n\nvar _urgent=false;\nsetResult(HikerHome.load(\"main\",_urgent));","searchFind":"","search_url":"","titleColor":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视艺人库","author":"子丑寅卯","version":1,"type":"video","url":"https://www.dianyinggou.com/csoMore/all-fyAll-/page_fypage.html","col_type":"movie_3","class_name":"美国&英国&韩国&日本&比利时&瑞典&伊朗","class_url":"meiguo&yingguo&hanguo&riben&bilishi&ruidian&yilang","area_name":"中国&中国香港&中国台湾&法国&德国","area_url":"zhongguo&zgxg&zhongguotaiwan&faguo&deguo","sort_name":"","year_name":"泰国&印度&意大利&加拿大&西班牙&澳大利亚&&&&","sort_url":"","year_url":"taiguo&yindu&yidali&jianada&xibanya&aodaliya","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.celebrity&&a');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h4&&Text'),       \r\ndesc: parseDomForHtml(list[j], 'ul,-2&&Text'),       \r\npic_url: parseDom(list[j], 'img&&data-url'),       \r\nurl: parseDom(list[j],'a&&href') +'#immersiveTheme#'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.movies&&.each');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),       \r\ndesc: parseDomForHtml(list[j], '.rightBox&&Text'),       \r\npic_url: parseDom(list[j], 'img&&data-url'),       \r\nurl: parseDom(list[j],'a&&href') +'#immersiveTheme#'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.dianyinggou.com/so/**/page_fypage.html","titleColor":"#ffff00ff","group":"##常用","detail_col_type":"text_3","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\nvar jshtml=request(parseDom(html,'center&&a&&href'),{});\r\nvar conts = parseDomForArray(jshtml, 'body&&.movies&&.each');\r\nd.push({\r\n\ttitle: '星座'+parseDomForHtml(html, '.rightInfo&&Text').split('星座')[1].replace(/出生/g,'\\n出生').replace(/职业/g,'\\n职业'),\ndesc: '职业'+parseDomForHtml(html, '.rightInfo&&Text').split('职业')[1].split('简介')[0],\r\n\tpic_url: parseDom(html, '.celebrity_one&&.thumb&&img&&data-url'),\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic_blur'\r\n});\nd.push({\r\n\ttitle: parseDomForHtml(html, '.brief&&Text'),\r\n\turl: getUrl(),\r\n\tcol_type: 'text_1'\r\n});\r\n\n\r\n\t\tfor (var j = 0; j < conts.length; j++) {\r\n\t\t\td.push({\r\n\t\t\ttitle:parseDomForHtml(conts[j],'a&&title'),\n      pic_url: parseDom(conts[j], 'img&&data-url'),\n   desc: parseDomForHtml(conts[j], '.info&&Text'),\r\n\t\t\turl: parseDom(conts[j],'a&&href'),\r\n       col_type: conts.length >2?'movie_3':'movie_2'\r\n\t\t\t});\r\n\t\t}\n\n\nd.push({\r\n\t\t\ttitle:'‘‘查看更多→’’'+parseDomForHtml(html,'center&&a&&Text'),\r\n\t\t\turl: parseDom(html,'center&&a&&href') ,\r\n       col_type: 'text_center_1'\r\n\t\t\t});\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://dianyinggou.com/pic/celebrity/3/1054453.jpg"},{"last_chapter_rule":"","title":"阿里小站·⭐","author":"小🔥星","version":11,"type":"news","url":"https://pan666.net/t/fyAll?page=fypage","col_type":"text_center_1","class_name":"影视&图片&软件&游戏&音乐","class_url":"video&picture&software&games&music","area_name":"动漫&书籍&学习&求助&其他&网盘转移&","area_url":"comic&books&learn&help&other&panmove&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&#flarum-content&&ul&&li;a&&Text;;;a&&href","searchFind":"body&&.container;a&&Text;a&&href;;;;","search_url":"https://pan.alixiaozhan.net/?q=**page=fypage","titleColor":"#ff228be6","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&#flarum-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'',\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/10/28/5LoQQs.png"},{"last_chapter_rule":"","title":"北川X♔","author":"蓝莓果酱UX","version":0,"type":"video","url":"https://www.bcwzg.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear/","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&4K","class_url":"1&13&3&4&25","area_name":"全部&内地&香港&台湾&美国","area_url":"&内地&香港&台湾&美国","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-Text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src')+ '@Referer=',\n        });\r\n    }\nsetResult(d)","search_url":"https://www.bcwzg.com/vodsearch/**----------fypage---/","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nconst Color = \"#19B89D\";\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var jx = 'https://www.viplanguang.com/jx/?url=';\n        var play = jx + jsurl;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+ \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                } else if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n});\n\n//影片信息\nd.push({\n    title: '分类：/' + parseDomForHtml(html, '.video-info-aux&&Text').substring(0, 18) + '\\n' + parseDomForHtml(html, '.video-info-items,0&&Text').substring(0, 18) + '\\n' + parseDomForHtml(html, '.video-info-items,1&&Text').substring(0, 18),\n    desc: parseDomForHtml(html, '.video-info-items,3&&Text').substring(0, 18),\n    img: parseDom(html, '.module-item-pic&&img&&data-src') + '@Referer=',\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n//简介\nvar des_desc = parseDomForHtml(html, '.video-info-item,5&&Text').replace('[收起部分]', '').replace('详情', '');\n\nd.push({\n    title: '‘‘’’<small>简介:<span style=\"color:#808080\">' + des_desc.substr(0, 68) + '...</span><small><span style=\"color:' + Color + '\">详情</span></small></small>',\n    url: 'hiker://empty#' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nvar tabs = parseDomForArray(html, 'body&&.module-tab-item'); //线路\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y'); //选集\n\n//线路选择\nfor (var i = 0; i < conts.length; i++) {\n    if (getVar('shsort', '1') == '1') {\n        var list = parseDomForArray(conts[i], 'body&&a');\n    } else {\n        var list = parseDomForArray(conts[i], 'body&&a').reverse();\n    }\n    var line = parseDomForHtml(tabs[i], \"span&&Text\").replace('在线', '');\n    var obj = {\n        \"腾讯\": \"https://lanmeiguojiang.com/tubiao/movie/131.svg\",\n        \"优酷视频\": \"https://lanmeiguojiang.com/tubiao/movie/128.svg\",\n        \"奇艺视频\": \"https://lanmeiguojiang.com/tubiao/movie/130.svg\",\n        \"芒果\": \"https://lanmeiguojiang.com/tubiao/movie/32.svg\",\n        \"B站\": \"https://lanmeiguojiang.com/tubiao/movie/20.svg\",\n        \"咪咕\": \"https://lanmeiguojiang.com/tubiao/movie/134.svg\",\n        \"西瓜\": \"https://lanmeiguojiang.com/tubiao/movie/135.svg\",\n        \"搜狐视频\": \"https://lanmeiguojiang.com/tubiao/movie/129.svg\",\n        \"PPTV\": \"https://lanmeiguojiang.com/tubiao/movie/133.svg\",\n        \"乐视视频\": \"https://lanmeiguojiang.com/tubiao/movie/58.svg\",\n        \"1905\": \"https://lanmeiguojiang.com/tubiao/movie/132.svg\",\n        \"风行\": \"https://lanmeiguojiang.com/tubiao/movie/136.svg\",\n        \"流畅线路\": \"https://lanmeiguojiang.com/tubiao/movie/127.svg\",\n\"流畅线路1\": \"https://lanmeiguojiang.com/tubiao/movie/127.svg\",\n        \"站长专线\": \"https://lanmeiguojiang.com/tubiao/movie/139.svg\",\n\"蓝光授权\": \"https://lanmeiguojiang.com/tubiao/movie/112.svg\"\n    };\n\n    //技术支持:追剧君,图标支持:蓝莓\n\n    var lx = '\\t\\t' + '<b><span style=\"color:' + Color + '\">' + line + '</span></b>' + '\\t\\t' + '<font color=#f20c00><b>' + [i + 1] + '</font></b><small>' + ' / ' + [tabs.length];\n    if (list != null) {\n        d.push({\n            title: lx,\n            url: \"hiker://empty@lazyRule=.js:putVar('shsort', getVar('shsort','1')=='1'?'0':'1');refreshPage();'toast://切换排序成功'\",\n            img: obj[line] || \"https://lanmeiguojiang.com/tubiao/movie/115.svg\",\n            col_type: 'avatar'\n        });\n        //选集列表\n        for (var j = 0; j < list.length; j++) {\n            var jm = pdfh(list[j], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\n            var url = pd(list[j], 'a&&href');\n            if (list.length <= 2) {\n                var col = 'text_2'\n            } else {\n                var col = jm.length > 6 ? 'text_2' : 'text_4'\n            }\n            d.push({\n                title: jm,\n                url: url + lazy,\n                col_type: col,\n                extra: {\n                    id: url,\n                    blockRules: [\n                        \".jpg\",\n                        \".jpeg\",\n                        \".png\",\n                        \".mp4\",\n                        \".m3u8\",\n                        \".gif\"\n                    ]\n                }\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/50.png"},{"last_chapter_rule":"","title":"偷渡","author":"发粪涂墙","version":0,"type":"other","url":"https://www.lanzoux.com/u/GoldRiver","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\r\neval(getResCode().match(/var pgs;([\\s\\S]*?)document/)[1])\r\neval('var body =' + getResCode().match(/data :([\\s\\S]*?\\})/)[1])\r\nvar list = JSON.parse(post('https://www.lanzoux.com/filemoreajax.php', {\r\n    body: body\r\n})).text\r\nfor (var j of list) {\r\n    d.push({\r\n        title: j.name_all,\r\n        desc: j.size + '     ' + j.time,\r\n        url: $('https://www.lanzoux.com/tp/' + j.id).lazyRule(() => {\r\n            eval(pdfh(request(input), 'body&&script&&Html').split('(')[0]);\r\n            return JSON.parse(fetch(domianload+downloads,{headers:{'User-Agent':'Mozilla/5.0'},redirect:false, withHeaders:true})).headers.location[0]\r\n        })\r\n    });\r\n}\r\n\r\nsetResult(d)","searchFind":"","search_url":"","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"WiKiHowⓂ️","author":"","version":1,"type":"other","url":"https://zh.wikihow.com/fyAll?pg=fypage","col_type":"card_pic_1","class_name":"个人形象与时尚&人际关系&假期与节日&健康&兴趣与手艺&宗教与哲学","class_url":"Category:%E4%B8%AA%E4%BA%BA%E5%BD%A2%E8%B1%A1%E4%B8%8E%E6%97%B6%E5%B0%9A&Category:%E4%BA%BA%E9%99%85%E5%85%B3%E7%B3%BB&Category:%E5%81%87%E6%9C%9F%E4%B8%8E%E8%8A%82%E6%97%A5&Category:%E5%81%A5%E5%BA%B7&Category:%E5%85%B4%E8%B6%A3%E4%B8%8E%E6%89%8B%E8%89%BA&Category:%E5%AE%97%E6%95%99%E4%B8%8E%E5%93%B2%E5%AD%A6","area_name":"宠物与动物&家居与园艺&家庭生活&工作&教育与交流&旅行&汽车与其他交通工具","area_url":"Category:%E5%AE%A0%E7%89%A9%E4%B8%8E%E5%8A%A8%E7%89%A9&Category:%E5%AE%B6%E5%B1%85%E4%B8%8E%E5%9B%AD%E8%89%BA&Category:%E5%AE%B6%E5%BA%AD%E7%94%9F%E6%B4%BB&Category:%E5%B7%A5%E4%BD%9C&Category:%E6%95%99%E8%82%B2%E4%B8%8E%E4%BA%A4%E6%B5%81&Category:%E6%97%85%E8%A1%8C&Category:%E6%B1%BD%E8%BD%A6%E4%B8%8E%E5%85%B6%E4%BB%96%E4%BA%A4%E9%80%9A%E5%B7%A5%E5%85%B7","sort_name":"","year_name":"艺术与娱乐&计算机与电子产品&运动与保健&金融与商业&青少年&饮食与休闲","sort_url":"","year_url":"Category:%E8%89%BA%E6%9C%AF%E4%B8%8E%E5%A8%B1%E4%B9%90&Category:%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8E%E7%94%B5%E5%AD%90%E4%BA%A7%E5%93%81&Category:%E8%BF%90%E5%8A%A8%E4%B8%8E%E4%BF%9D%E5%81%A5&Category:%E9%87%91%E8%9E%8D%E4%B8%8E%E5%95%86%E4%B8%9A&Category:%E9%9D%92%E5%B0%91%E5%B9%B4&Category:%E9%A5%AE%E9%A3%9F%E4%B8%8E%E4%BC%91%E9%97%B2","find_rule":"js:\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.responsive_thumb');\nfor (var j in list) {\n  let expert=\"\";\n  try{\n       expert =parseDomForHtml(list[j],'.cat_expert&&Text');\n  }catch(e){}\n  if(expert!==\"\") expert = '<font color=\"#0066CC\">👤'+expert+'</font>'\n  d.push({\n       title: '‘‘’’<small>' + expert + '\\n\\n\\n\\n\\n\\n</small><font color=\"#FF0066\">' + parseDomForHtml(list[j],'.responsive_thumb_title&&Text') + '❓</font>',\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       desc: '0',\n       url: parseDom(list[j],'a&&href')+'#fullTheme#'\n  });\n}\n\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '#searchresults_list&&a');\n    for (var j in list) {\n        let url = parseDom(list[j], 'a&&href');\n        d.push({\n            title: parseDomForHtml(list[j], '.result_title&&Text'),\n            desc: parseDomForHtml(list[j], '.sr_updated&&Text'),\n            img: parseDom(list[j], '.result_thumb&&style'),\n            url: parseDom(list[j], '.result_thumb&&style')==\"\"?url+'@rule=#hp_coauthor_container||#cat_container&&.hp_thumb||.responsive_thumb;p&&Text;img&&data-src;.hp_expert||noscript&&Text;a&&href;movie_1':url\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://zh.wikihow.com/wikiHowTo?search=**&start=fypage@-1@*15@?","group":"##常用","detail_col_type":"rich_text","detail_find_rule":"js:\n//以下是 列表解析规则（JS）\nvar res = {};\nvar d = [];\n//自定义颜色\nconst Color=\"#FA7298\";\nvar size=16;\nvar html=getResCode();\n\n\neval(JSON.parse(request(\"hiker://page/css\")).rule);\neval(JSON.parse(request(\"hiker://page/view\")).rule);\neval(JSON.parse(request(\"hiker://page/tips\")).rule);\n\n// 取缓存\nif(getMyVar(\"wikihow.url\")!==MY_URL){\n    putMyVar(\"wikihow.methodNum\", \"0\");\n    putMyVar(\"wikihow.url\", MY_URL);\n} \n\nconst methodNum = getMyVar(\"wikihow.methodNum\")\nconst categories = parseDomForArray(html, '#mw-content-text&&.section.steps');\n\nlet categoriesLength = \"\";\ntry{\n     categoriesLength = parseDomForArray(categories[0], '.steps_list_2');\n}catch(e){}\n\nvar firstStep=\"\";\n//if(categoriesLength == \"\") setError(categories[0]);\nif(categoriesLength == \"\") firstStep = '<p><big>🔆</big>&nbsp;&nbsp;&nbsp;&nbsp;' + parseDomForHtml(categories.shift(),'.section_text&&p&&Html')+'</p>';\n\nlet headerTitle = getBigText(getStrongText(parseDomForHtml(html, '#section_0&&Text')+\"❓🙋\")) + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文👀]'));\n\n//var subTime = getCodeText(parseDomForHtml(html,'.article-meta--a&&li,0&&Text').replace(\"发布于\",\"日期:\"));\n\nvar subType = parseDomForArray(html,'#breadcrumb&&a');\n\nvar type=getCodeText(\"🏷️标签: \");\n\nfor(var i=1;i<subType.length;i++){\n    type += getCodeText(parseDomForHtml(subType[i],'a&&Text'));\n}\n\n\nlet professionalAudit = '';\ntry{\n\tprofessionalAudit = '<strong>专业人士审核</strong>'+(\"<br>\"+parseDomForHtml(html,'.section.专业人士审核&&p&&Html')).replace(\"审阅时间\",\"🕐审阅时间\").replace(\"审阅人\",\"🕵️审阅人\").replace(/<br>/g,\"<br>⚫&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\")+\"<br><br>\";\n}catch(e){}\n\nvar section = parseDomForHtml(html,'#mf-section-0&&Html');\n\nvar sectionTitle = parseDomForHtml(html,'head&&title&&Text');\nvar sectionType = \"个部分\";\nif(sectionTitle.includes(\"方法\")) sectionType = \"种方法\";\n\nvar suplist = parseDomForArray(html,\"body&&.reference-text\");\nvar supArray = [];\nfor(let i =0;i<suplist.length;i++) supArray.push(parseDomForHtml(suplist[i],\"span&&Text\"));\n\nsection = supTagReplacement2(section,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n\nsection = '<p>'+section.replace(/<p>/,\"<span><big>🙇</big>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\").replace(/<\\/p>/,'<span>').replace(/<li>/g,'<span>💠&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;').replace(/<\\/li>/g,'</span><br>').replace(/<ul>/,'<br>')+'</p>';\n\nvar subContent =getSmallText(section+firstStep+professionalAudit) + getStrongText(\"以下有\" + categories.length + sectionType+\"实现:\");\n\nvar authorPic=\"https://img2.baidu.com/it/u=1677342743,1708324479&fm=26&fmt=auto&gp=0.jpg\"\ntry{\n    authorPic = parseDomForHtml(html,'.ar_avatar&&img&&src');\n}catch(e){}\n\nvar anchor ='共同创作者:  ';\nvar name = parseDomForHtml(html,'.coauthor_link&&Text');\nif(name.includes(\"作者\")) name=\"匿名作者\";\nvar anchorInfo = parseDomForHtml(html,'#byline_hover_body&&Text')\n\nd.push({title: headerTitle+'&nbsp;' +'<br>'+type,});\nd.push({col_type:'line'});\nd.push({\n\ttitle:anchor + getColorText(name,\"blue\") + \"  👈\",\n  \tpic_url:authorPic,\n\turl:\"toast://\"+anchorInfo,\n\tcol_type: 'avatar'\n});\n\nd.push({title: subContent,\n        extra: {\n                    textSize: size,\n                    click: true\n                }});\n\n// d.push({col_type:'line'});\n// d.push({col_type:\"blank_block\"});\n\ncategories.forEach((category, index) => {\n\n\t// let title = '方法'+(index+1).toString()+\": \"+parseDomForHtml(category, '.in-block&&.mw-headline&&Text');\n\tlet title = sectionType.replace(/种|个/,\"\")+(index+1).toString();\n\td.push({\n\n\t\ttitle: index.toString()===getMyVar(\"wikihow.methodNum\")?'““””<b><font color='+Color+'>'+title+'♥️</font></b>':title,\n\t\turl: $(MY_URL).lazyRule((params) => {\n\n\t\t\tputMyVar(\"wikihow.methodNum\", params.index.toString());\n\t\t\trefreshPage(true);\n\t\t\treturn \"hiker://empty\";\n\t\t}, {index: index,}),\n\t\tcol_type: 'scroll_button',\n\t});\n})\nd.push({col_type:\"blank_block\",});\n\nlet content = parseDomForHtml(categories[getMyVar(\"wikihow.methodNum\")], 'Html');\nlet headTitle=parseDomForHtml(content,'.mw-headline&&Text');\n\nd.push({\n\ttitle:'““””<big><strong>'+headTitle+'🗒️</strong></big>',\n\turl:'hiker://empty',\n\tcol_type:'text_center_1',\n    extra: {\n                textSize: size,\n                click: true\n            }\n\n});\nlet titleArray = [];\ntry{\n   titleArray = parseDomForArray(content,'.section_text&&.mw-headline');\n}catch(e){}\n\nlet stepContentArray = parseDomForArray(content,'.section_text&&ol');\nfor(let l=0;l<stepContentArray.length;l++){\n if(titleArray.length > 0) d.push({\n      title:'““””'+getBigText(getColorText(parseDomForHtml(titleArray[l],'Text'),'blue')),\n      url: 'hiker://empty',\n      col_type: 'text_center_1',\n\t  extra: {\n                textSize: size,\n                click: true\n\t         }\n});\n   let stepList=[];\n   let stepContent = parseDomForArray(stepContentArray[l],'ol&&li');\n   for(let i=0;i<stepContent.length;i++){\n\t   if(stepContent[i].indexOf(\"<li \") == 0) stepList.push(stepContent[i]);\n   }\n\nfor(let i=0;i<stepList.length;i++){\n\ttry{\n\t\tlet imgJs = parseDomForHtml(stepList[i].split('<div class=\"step_num\">')[0],'.image_details&&span,0&&Html');\n\t\timgJs=eval(\"[\"+imgJs+\"]\"); //smallUrl bigUrl\n\t\td.push({\n\t\t   pic_url: imgJs[0].smallUrl,\n\t\t   url: imgJs[0].smallUrl,\n\t\t   col_type: 'pic_1_full',\n            extra: {\n                        textSize: size,\n                        click: true\n                    }\n\t\t});\n\t}catch(e){}\n\n\ttry{\n\t\tlet pics = parseDomForHtml(stepList[i],'.video-player&&video&&data-poster');\n\t\tlet videos = \"https://www.wikihow.com/video\"+parseDomForHtml(stepList[i],'.video-player&&video&&data-src');\n\n\t\td.push({\n\t\t title:'““””'+getBigText(getStrongText(\"视频查看📺👇\")),\n       url:videos,\n\t\t   col_type:'text_center_1'\n\t\t});\n\n\t\td.push({\n\t\t   pic_url: pics,\n\t\t   url: videos,\n\t\t   col_type: 'pic_1_full',\n            extra: {\n                        textSize: size,\n                        click: true\n                    }\n\t\t});\n\n\t}catch(e){}\n \n\tlet stepNum = parseDomForHtml(stepList[i],'.step_num&&Text');\n\tstepNum = getBigText(getStrongText(\"步骤\"+stepNum+\"、\"));\n\tlet quoteContent = parseDomForHtml(stepList[i],'.step&&Html').replace(/<script>([\\s\\S]*?)<\\/script>/g,'');\n let temp = quoteContent.split(\"</b>\");\n let symbol = '<br><big>💎</big>&nbsp;&nbsp;&nbsp;&nbsp;';\n if(temp[temp.length-1].match(/^\\s*$/)) symbol='';\n\tlet stepNumContent = (stepNum+quoteContent.split('<ul>')[0]).replace(/<b/,\"<big><b\")\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t.replace(/。<\\/b>/,'。</b></big>'+symbol)\n             .replace(/<\\/b>。/,'</b>。</big>'+symbol);\n\tstepNumContent = supTagReplacement2(stepNumContent,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n\tlet liArray = parseDomForArray(quoteContent,'ul&&li');\n\tlet liList = '';\n d.push({title:getSmallText(stepNumContent),\n        extra: {\n                    textSize: size,\n                    click: true\n                }});\n\tfor(let j = 0;j<liArray.length;j++){\n\t\tliContent = liArray[j].split('\\n')[0];\n\n\t\tliList += liContent+'<br>';\n\t\tif(liArray[j].includes('smallUrl')){\n\t\t\tliList = supTagReplacement2(liList,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n\t\t\tliList = liList.replace(/<li>/g,'<span><big>🔘</big>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');\n\t\t\td.push({title:getSmallText(getBlockquoteText(liList)),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n\t\t\tliList = '';\n\n\t\t  let imgLiJs = parseDomForHtml(liArray[j],'.image_details&&span&&Html');\n\t\t\timgLiJs=eval(\"[\"+imgLiJs+\"]\"); //smallUrl bigUrl\n\t\t\td.push({\n\t\t\t\t  pic_url: imgLiJs[0].smallUrl,\n\t\t\t\t  url: imgLiJs[0].smallUrl,\n\t\t\t\t  col_type: 'pic_1_full',\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }\n\t\t\t});\t\n\t\t}\n\t}\n\n\n  if(liList!==\"\"){\n      liList = supTagReplacement2(liList,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n\t\t\tliList = liList.replace(/<li>/g,'<span><big>🔘</big>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');\n    liList = getBlockquoteText(liList);\n}\n\n\tlet greenBox = \"\";\n\ttry{\n\t\tgreenBox = parseDomForHtml(stepList[i],'.green_box.mobile&&Html');\n\t\tgreenBox = supTagReplacement2(greenBox,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray).replace(/p>/g,'span>');\n\t}catch(e){}\n  \n\tif(greenBox !==\"\"){\n\t\tif(greenBox.includes(\"专家提示\")){\n\t\t\tlet personPic = parseDomForHtml(greenBox,\".green_box_person_circle&&img&&src\");\n\t\t\tlet personName = parseDomForHtml(greenBox,\".green_box_expert_info&&span&&Text\");\n\t\t\tlet personType = parseDomForHtml(greenBox,\".green_box_expert_info--span&&Text\");\n\t\t\tlet personInfo = parseDomForHtml(greenBox,\".green_box_expert_dialog--.green_box_expert_dialog_upper&&Text\");\n\t\t\tlet personUrl = parseDom(greenBox,\".green_box_person.expert&&data-link\");\n\t\t\tlet personContent = parseDomForHtml(greenBox,\".green_box_content&&Html\");\n\n     d.push({title:getSmallText(liList+'⭐&nbsp;&nbsp;&nbsp;'+personContent),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n\n\t\t\t//d.push({title:\"<strong>专家提示</strong>\",});\n\t\t\td.push({\n\t\t\t\ttitle:getAddressTag(personUrl,personName)+\"   \"+getColorText(personType,\"#FA7298\") + \"  👈  专家提示\",\n\t\t\t\tpic_url:personPic,\n\t\t\t\turl:\"toast://\"+personInfo,\n\t\t\t\tcol_type: 'avatar'\n\t\t\t});\n\t\t\t\n\t\t}else{\n\t\t\td.push({title:getSmallText(liList+getColorText(\"⭐\"+greenBox,\"#009933\")),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n\t\t}\n\t}else{\n     if(liList!==\"\") d.push({title:getSmallText(liList),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n  }\n}}\n\n  \nlet readly='';\ntry{\n\treadly = parseDomForHtml(html,'.section.你需要准备&&ul&&Html').replace(/<\\/li>/g,\"</span><br>\")\n\t.replace(/<li>/g,'<span>☑️&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')\n\t.replace(/<div class=\"checkmark\"><\\/div>/g,\"\");\n}catch(e){}\n\n\n\nlet tips = '';\ntry{\n\ttips = parseDomForHtml(html,'.section.小提示&&ul&&Html').replace(/<\\/li>/g,\"</span><br>\")\n\t.replace(/<li>/g,'<span>🔷&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');\n\ttips = supTagReplacement2(tips,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n}catch(e){}\n\nlet warning = '';\ntry{\n\twarning = parseDomForHtml(html,'.section.警告&&ul&&Html').replace(/<\\/li>/g,\"</span><br>\")\n\t.replace(/<li>/g,'<span>⭕&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;');\n\twarning = supTagReplacement2(warning,/<(sup) id=\"_ref([\\s\\S]*?)<\\/(sup)>/g,supArray);\n}catch(e){}\n\nif(readly !== ''){\n\t//d.push({col_type: 'line'});\n\td.push({\n\t\ttitle: '““””<b>你需要准备♨️</b>',\n\t\turl:\"hiker://empty\",\n\t\tcol_type:\"text_center_1\",\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }\n\t});\n\td.push({title: getSmallText(readly),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n}\n\nif(tips !== ''){\n\t//d.push({col_type: 'line'});\n\td.push({\n\t\ttitle:  '““””<b>小提示🗯️</b>',\n\t\turl:\"hiker://empty\",\n\t\tcol_type:\"text_center_1\",\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }\n\t});\n\td.push({title: getSmallText(tips),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n}\n\nif(warning !== ''){\n\t//d.push({col_type: 'line'});\n\td.push({\n\t\ttitle: '““””<b>警告⚠️</b>',\n\t\turl:\"hiker://empty\",\n\t\tcol_type:\"text_center_1\",\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }\n\t});\n\td.push({title: getSmallText(warning),\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n}\n\nlet tipsButtom = '该文章来源于WiKiHow，如您喜欢，请进入官网浏览';\nlet warningButtom = '此规则仅供个人学习交流使用,请使用后24小时内删除';\nd.push({col_type: 'line_blank'});\nd.push({\n   title: '““””'+GetTips(tipsButtom,warningButtom),\n   url: MY_URL,\n   col_type: 'text_center_1'\n});\nd.push({col_type: 'line_blank'});\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"name\":\"CSS函数集\",\"path\":\"css\",\"rule\":\"function getNewText(text,css){\\n   return '<'+css+'>' + text + '</'+css+'>';\\n}\\n\\nfunction getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"视图处理\",\"path\":\"view\",\"rule\":\"//获取重定向地址\\nfunction getRedirectAddress(url){\\n    let urlRedirect = '';\\n    try{\\n        let urlCode = fetch(url,{redirect:false,withHeaders:true});\\n        urlRedirect = JSON.parse(urlCode).headers.location[0];\\n    }catch(e){}\\n    return urlRedirect;\\n}\\n\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\n//删除重定向图片链接\\nfunction deleteInvalidImgTag(context, searchValue,replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl != '') {\\n                if(getRedirectAddress(imgUrl) != ''){\\n                    returnValue = returnValue.replace(item,replaceValue);\\n                }\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction GetImgTagArrayString(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = '';\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            returnValue += matchArray[i];\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction imgTagGetUrlArray(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = [];\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue.push(imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\n\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('wikihow.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagOne(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '\\\\n<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('wikihow.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a>&nbsp;&nbsp;&nbsp;<a href=\\\"web://' + imgUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction imgTagReplacementOne(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTagOne(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet videoError = '<p><font color=\\\"grey\\\">视频暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction videoTag(context, videoUrl) {\\n    let replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + (videoUrl) + '\\\">[点击查看视频]</a></p>';\\n    if (getMyVar('wikihow.hideImg')=='1') {\\n        replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + videoUrl + '\\\">[点击查看视频]</a></p>';\\n    }\\n    return context.replace(/<video data-v>/g, replaceString);\\n}\\nfunction videoTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(source|video).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let videoUrl = RegExp.$3;\\n            if(videoUrl.indexOf(\\\"//\\\")==0){videoUrl = \\\"https:\\\" + videoUrl;}\\n            if(videoUrl.includes(\\\"zhainanmi\\\")) continue;\\n            if (videoUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = videoTag(returnValue, videoUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet linkError = '<p><font color=\\\"grey\\\">链接暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction linkTag(context, linkUrl) {\\n    let replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + (linkUrl) + '\\\">[点击查看链接]</a></p>';\\n    if (getMyVar('wikihow.hideImg')=='1') {\\n        replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + linkUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<link data-v>/g, replaceString);\\n}\\nfunction linkTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(iframe).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let linkUrl = RegExp.$3;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = linkTag(returnValue, linkUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction cssTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(div|p|strong)>.*?<\\\\/(div|p|strong)>/.test(item);\\n            let css = RegExp.$2;\\n            if (css.match(/^\\\\s*$/)) {\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction supTagReplacement2(context, searchValue,supArray) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            let supTag = parseDomForHtml(matchArray[i],'sup&&a&&Html');\\n            let supNum = parseInt(supTag.replace(/\\\\[|\\\\]/g,\\\"\\\"))-1;\\n            if (supTag !== '') {\\n                let showLink = 'toast://';\\nif(supArray[supNum].indexOf('http')==0) showLink = '';\\n                returnValue = returnValue.replace(item, '<small><sup><a href=\\\"'+ showLink + supArray[supNum]+'\\\">'+supTag+'</a></sup></small>');\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"提示\",\"path\":\"tips\",\"rule\":\"\\nfunction GetHome(num){\\n    let retract = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    for(let i=1;i<num;i++) retract += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    return '<span>'+retract+'</span>';\\n}\\n\\nfunction GetComment(main,autor,time,floor){\\n\\n    let fontStyle = '<font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;&nbsp;'+time+' &nbsp;</span></font>';\\n    let buttonData = getColorText(autor,'#2979FF')+fontStyle+getColorText(floor,'#2979aa');\\n    let comment = '';\\n\\n    if(floor==''){\\n        comment =GetHome(1)+main+getNewText('<br>'+GetHome(1)+buttonData,'small');\\n    }else{\\n        comment = main+getNewText('<br>'+ buttonData,'small');\\n    }\\n    return comment;\\n}\\n\\nfunction GetTips(tips,warning){\\n    let tipsStyle = '<small><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+tips+' &nbsp;</span></small>';\\n    let warningStyle = '<small><small><font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+warning+' &nbsp;</span></font></small></small>';\\n    return tipsStyle+'<br>'+warningStyle;\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"雪人影视♔","author":"蓝莓果酱UX","version":12,"type":"video","url":"https://qpys.qd234.cn/vodshow/fyclass/by/fysort/page/fypage/year/fyyear/","col_type":"movie_3","class_name":"剧集&电影&综艺&动漫&B站","class_url":"2&1&3&4&20","area_name":"","area_url":"","sort_name":"时间&热门&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更多","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.hl-vod-list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '.hl-one-list&&li');\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], '.remarks&&Text'),\r\n        pic_url: parseDom(list[j], 'a&&data-original'),\r\n        content: parseDomForHtml(list[j], '.hl-item-sub,2&&Text'),\r\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\r\n    })\r\n}\r\nsetResult(d)","search_url":"https://qpys.qd234.cn/vodsearch/page/fypage/wd/**/","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.hl-from-list&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.hl-plays-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.hl-col-xs-12,4&&Text');\n\nvar 主演 = parseDomForHtml(html, '.hl-col-xs-12,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.hl-col-xs-12,10&&Text');\n\nvar 状态 = parseDomForHtml(html, '.hl-col-xs-12,2&&Text');\n\nvar 图片 = parseDom(html, '.hl-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.hl-col-xs-12,12&&Text').replace('剧情： ','').replace('收起','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i)\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前选择线路 </font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_2' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\t\naddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t}\n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    function maoss(jxurl, ref, key) {\\n        eval(getCryptoJS());\\n        try {\\n            var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;\\n            if (ref) {\\n                var html = request(jxurl, {\\n                    headers: {\\n                        'Referer': ref\\n                    }\\n                });\\n            } else {\\n                var html = request(jxurl);\\n            }\\n            if (html.indexOf('&btwaf=') != -1) {\\n                html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)\\\"/)[1], {\\n                    headers: {\\n                        'Referer': ref\\n                    }\\n                })\\n            }\\n            var token_iv = html.split('_token = \\\"')[1].split('\\\"')[0];\\n            var key = CryptoJS.enc.Utf8.parse(token_key);\\n            var iv = CryptoJS.enc.Utf8.parse(token_iv);\\n            eval(html.match(/var config = {[\\\\s\\\\S]*?}/)[0] + '');  \\n            if (config.url.slice(0, 4) != 'http') {\\n                //config.url = decodeURIComponent(AES(config.url, key, iv));\\n                config.url = CryptoJS.AES.decrypt(config.url, key, {\\n                    iv: iv,\\n                    padding: CryptoJS.pad.Pkcs7\\n                }).toString(CryptoJS.enc.Utf8)\\n            }\\n            return config.url;\\n        } catch (e) {\\n            return '';\\n        }\\n    }\\n\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl =\\n            unescape(base64Decode(jsurl));\\n    } else {\\n        jsurl\\n    };\\n\\n    var from = player.from;\\n    if (jsurl.search(/m3u8|mp4/) > -1) {\\n        var video = jsurl\\n    } else if (jsurl.match(/LT|xueren/)) {\\n        log(jsurl)\\n        let playurl = maoss(\\\"https://diaoyong.qd234.cn/?url=\\\" + jsurl, false, \\\"A42EAC0C2B408473\\\");\\n        return playurl\\n    } else {\\n        var play = input;\\n        showLoading(\\\"网页嗅探中,请稍后...\\\");\\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\\n            var urls = _getUrls()\\n            for (var i in urls) {\\n                if (!urls[i].includes(\\\"v=\\\") && !urls[i].includes(\\\"url=\\\") && urls[i].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                    //fy_bridge_app.log(urls[i])\\n                    return urls[i];\\n                } else if (urls[i].match(/\\\\.flv/)) {\\n                    //fy_bridge_app.log(urls[i])\\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                }\\n            }\\n        })\\n    }\\n    return video\\n});\"}]","icon":"https://lanmeiguojiang.com/tubiao/q/133.png"},{"last_chapter_rule":"","title":"Icons8","author":"永远の明日","version":3,"url":"hiker://empty?page=fypage","col_type":"icon_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/index?page='+getParam('page'))).rule)","searchFind":"","search_url":"","titleColor":"","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"icon_4\",\"name\":\"首页\",\"path\":\"index\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"Icons8-searchKey\\\");clearVar(\\\"Icons8-style\\\");clearVar(\\\"Icons8-animated\\\");clearVar(\\\"Icons8-author\\\");clearVar(\\\"Icons8-size\\\");clearVar(\\\"Icons8-color\\\")')\\nsetPageTitle('Icons8')\\nlet el = [],\\n    APIKey = getItem('APIKey', ''),\\n    searchKey = getVar('Icons8-searchKey', ''),\\n    page = getParam('page'),\\n    style = getVar('Icons8-style', 'all'),\\n    animated = getVar('Icons8-animated', ''),\\n    author = getVar('Icons8-author', 'all')\\n\\nif (page == 1) {\\n    let styles = ['ios', 'ios-filled', 'ios-glyphs' ,'material' ,'material-outlined' ,'material-rounded' ,'material-sharp' ,'material-two-tone' ,'color' ,'small' ,'glyph-neue' ,'color-glass' ,'officexs' ,'offices' ,'office' ,'officel' ,'wired' ,'dusk' ,'cute-clipart' ,'ultraviolet' ,'dotty' ,'nolan' ,'cotton' ,'pastel-glyph' ,'android' ,'emoji' ,'fluency' ,'fluency-systems-regular' ,'fluency-system-filled' ,'plumpy' ,'doodle' ,'flat-round' ,'metro' ,'windows' ,'clouds' ,'carbon-copy' ,'plasticine']\\n    el.push({\\n        title: 'all' == style ? '““””' + '全风格'.bold().fontcolor('#12b668') : '全风格',\\n        url: $('#noLoading#').lazyRule(() => {\\n            putVar('Icons8-style', 'all')\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }),\\n        col_type: 'scroll_button'\\n    })\\n    styles.forEach((v) => {\\n        el.push({\\n            title: v == style ? '““””' + v.bold().fontcolor('#12b668') : v,\\n            url: $('#noLoading#').lazyRule((style) => {\\n                putVar('Icons8-style', style)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v),\\n            col_type: 'scroll_button'\\n        })\\n    })\\n    el.push({ col_type: 'blank_block' })\\n\\n    let animateds = { '': '全类型', 'false': '静态图', 'true': '动态图' }\\n    for (let k in animateds) {\\n        let v = animateds[k]\\n        el.push({\\n            title: k == animated ? '““””' + v.bold().fontcolor('#12b668') : v,\\n            url: $('#noLoading#').lazyRule((animated) => {\\n                putVar('Icons8-animated', animated)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, k),\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    el.push({\\n        title: '|',\\n        url: 'hiker://empty',\\n        col_type: 'scroll_button'\\n    })\\n    let authors = { 'all': '全作者', 'icons8': 'Icons8', 'external': '其它' }\\n    for (let k in authors) {\\n        let v = authors[k]\\n        el.push({\\n            title: k == author ? '““””' + v.bold().fontcolor('#12b668') : v,\\n            url: $('#noLoading#').lazyRule((author) => {\\n                putVar('Icons8-author', author)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, k),\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    el.push({\\n        title: '|',\\n        url: 'hiker://empty',\\n        col_type: 'scroll_button'\\n    })\\n\\n    if (!MY_PARAMS.newWindow)\\n        el.push({\\n            title: '““””' + '分离页面'.fontcolor('#ffc152'),\\n            url: 'hiker://page/index?page=fypage',\\n            col_type: 'scroll_button',\\n            extra: { newWindow: true, windowId: MY_RULE.title }\\n        })\\n    el.push({\\n        title: '““””' + '设置APIKey'.fontcolor('#ffc152'),\\n        url: 'hiker://page/setAPIKey#noRecordHistory#',\\n        col_type: 'scroll_button'\\n    }, {\\n        title: '搜索',\\n        desc: '搜索关键词...',\\n        url: $.toString(() => {\\n            putVar('Icons8-searchKey', input)\\n            refreshPage(false)\\n        }),\\n        col_type: 'input',\\n        extra: { defaultValue: searchKey }\\n    }, { col_type: 'line' })\\n}\\n\\nif (searchKey) {\\n    let queryString = '?term=' + searchKey,\\n        queryParams = {\\n            amount: 24,\\n            offset: 24 * (page - 1),\\n            platform: style,\\n            authors: author,\\n            isAnimated: animated,\\n            language: 'zh-CN',\\n            token: APIKey\\n        }\\n    for (let k in queryParams)\\n        if (queryParams[k])\\n            queryString += '&' + k + '=' + queryParams[k]\\n log(fetch('https://search.icons8.com/api/iconsets/v5/search' + queryString))\\n    JSON.parse(fetch('https://search.icons8.com/api/iconsets/v5/search' + queryString)).icons.forEach((v) => {\\n        el.push({\\n            title: v.name,\\n            url: 'hiker://page/detail#noHistory#',\\n            img: 'https://img.icons8.com/?id=' + v.id + '&size=48&format=' + (v.isAnimated ? 'gif' : 'png') + '&token=' + APIKey,\\n            extra: v\\n        })\\n    })\\n\\n}\\nsetResult(el)\\n\"},{\"col_type\":\"text_center_1\",\"name\":\"详情\",\"path\":\"detail\",\"rule\":\"js:\\nlet el = [],\\n    APIKey = getItem('APIKey', ''),\\n    { id, name, isFree, isAnimated, platform, category } = MY_PARAMS,\\n    background = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAADElEQVQImWP4/v07AAXOAuavUUVpAAAAAElFTkSuQmCC'\\nMY_URL = 'https://www.icons8.com/icon/' + id + '/' + name\\n\\nel.push({\\n    title: 'id:' + id + ', 风格:' + platform + ', 类型:' + category,\\n    desc: '““””' + '如要分享url请自行去除token(APIKey)字段，防止被窃'.fontcolor('red'),\\n    url: 'copy://' + id\\n}, { col_type: 'line_blank' }, {\\n    title: '““””<b>静态图',\\n    url: MY_URL\\n})\\nif (!isFree) el[0].desc += '<br>' + '该图标矢量图url需要付费APIKey'.fontcolor('#ffd700')\\n\\nlet sizes = ['32', '48', '64', '96', '128', '192', '256', '512'],\\n    size = getVar('Icons8-size', '64'),\\n    sizeIndex = sizes.indexOf(size)\\nel.push({ col_type: 'big_blank_block' }, {\\n    title: '““””' + '尺寸:'.bold().fontcolor('#409eff'),\\n    url: 'hiker://empty',\\n    col_type: 'scroll_button'\\n})\\nsizes.forEach((v, i) => {\\n    el.push({\\n        title: (sizeIndex == i ? '✔ ' : '') + v,\\n        url: $('#noLoading#').lazyRule((size) => {\\n            putVar('Icons8-size', size)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: sizeIndex == -1 ? '✔ 自定义: ' + size : '自定义',\\n    url: $(size, '输入尺寸，范围 1~512').input(() => {\\n        putVar('Icons8-size', input)\\n        refreshPage(false)\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nlet colors = ['cccccc', '95a5a6', '34496e', 'e74c3c', 'f1c40f', '2ecc71', '1abc9c', '3598db', '9b59b6'],\\n    color = getVar('Icons8-color', ''),\\n    colorIndex = colors.indexOf(color)\\nel.push({ col_type: 'blank_block' }, {\\n    title: '““””' + '<b>着色:'.bold().fontcolor('#409eff'),\\n    url: 'hiker://empty',\\n    col_type: 'scroll_button'\\n})\\nel.push({\\n    title: (color ? '' : '✔ ') + '无',\\n    url: $('#noLoading#').lazyRule(() => {\\n        clearVar('Icons8-color')\\n        refreshPage(false)\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n})\\ncolors.forEach((v, i) => {\\n    el.push({\\n        title: (colorIndex == i ? '✔ ' : '') + '““””' + '■'.fontcolor('#' + v),\\n        url: $('#noLoading#').lazyRule((color) => {\\n            putVar('Icons8-color', color)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: color && colorIndex == -1 ? '✔ 自定义: ““””' + '■'.fontcolor('#' + color) : '自定义',\\n    url: $(color, '输入六位16进制颜色代码').input(() => {\\n        putVar('Icons8-color', input)\\n        refreshPage(false)\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nlet pngUrl = 'https://img.icons8.com/?format=png&id=' + id + '&size=' + size + '&color=' + color + '&token=' + APIKey\\nel.push({\\n    url: 'pics://' + pngUrl,\\n    img: pngUrl,\\n    desc: '0',\\n    col_type: 'card_pic_2'\\n}, {\\n    title: '““””<small><br></small>' + ' &nbsp &nbsp 保存PNG'.fontcolor('#757575'),\\n    url: $('#noLoading#').lazyRule((savePath, pngUrl) => {\\n        saveImage(pngUrl, savePath)\\n        return 'toast://已保存至路径:\\\\n' + savePath\\n    }, 'hiker://files/cache/Icons8/' + name + '-' + id + '.png', pngUrl),\\n    img: background,\\n    col_type: 'card_pic_2_2'\\n}, {\\n    title: '““””<small><br></small>' + ' &nbsp &nbsp 复制PNG <small>(url)'.fontcolor('#757575'),\\n    url: 'copy://' + pngUrl,\\n    img: background,\\n    col_type: 'card_pic_2_2'\\n})\\n\\nlet getSvg = (id, size, color, APIKey, isFree, saveMode) => {\\n    let url = 'https://img.icons8.com/?format=svg&id=' + id + '&size=' + size + '&color=' + color + '&token=' + APIKey,\\n        svg = fetch(url)\\n    if (!isFree)\\n        if (APIKey) {\\n            isFree = true\\n            try {\\n                if (!JSON.parse(svg).success)\\n                    isFree = false\\n            } catch (e) {}\\n        }\\n    if (isFree) {\\n        return saveMode ? svg : url\\n    } else {\\n        svg = base64Decode(JSON.parse(fetch('https://api-icons.icons8.com/siteApi/icons/icon?id=' + id)).icon.svg)\\n        if(color) svg = svg.replace(/^(<svg.*?)fill=\\\".*?\\\"(.*?>)/, '$1$2').replace(/^<svg/, '$& fill=\\\"#' + color + '\\\" ')\\n        svg = svg.replace(/^(<svg.*?)height=\\\".*?\\\"(.*?>)/, '$1$2').replace(/^<svg/, '$& height=\\\"' + size + 'px\\\" ')\\n        svg = svg.replace(/^(<svg.*?)width=\\\".*?\\\"(.*?>)/, '$1$2').replace(/^<svg/, '$& width=\\\"' + size + 'px\\\" ')\\n        return saveMode ? svg : 'data:image/svg+xml;base64,' + base64Encode(svg)\\n    }\\n}\\nel.push({\\n    title: '““””<b>保存SVG',\\n    url: $().lazyRule((getSvg, id, size, color, APIKey, isFree, savePath) => {\\n        writeFile(savePath, getSvg(id, size, color, APIKey, isFree, true))\\n        return 'toast://已保存至路径:\\\\n' + savePath\\n    }, getSvg, id, size, color, APIKey, isFree, 'hiker://files/cache/Icons8/' + name + '-' + id + '.svg'),\\n    img: background,\\n    col_type: 'text_2'\\n}, {\\n    title: '““””<b>复制SVG <small>(url/base64)',\\n    url: $().lazyRule((getSvg, id, size, color, APIKey, isFree) => {\\n        copy(getSvg(id, size, color, APIKey, isFree, false))\\n        return 'toast://链接为 ' + (isFree ? 'url' : 'base64')\\n    }, getSvg, id, size, color, APIKey, isFree),\\n    img: background,\\n    col_type: 'text_2'\\n})\\n\\nif (isAnimated) {\\n    let gifUrl = 'https://img.icons8.com/?format=gif&id=' + id + '&token=' + APIKey\\n    el.push({ col_type: 'line_blank' }, {\\n        title: '““””<b>动态图',\\n        url: MY_URL\\n    }, {\\n        url: 'pics://' + gifUrl,\\n        img: gifUrl,\\n        desc: '0',\\n        col_type: 'card_pic_2'\\n    }, {\\n        title: '““””<small><br></small>' + ' &nbsp &nbsp 保存GIF'.fontcolor('#757575'),\\n        url: $('#noLoading#').lazyRule((savePath, gifUrl) => {\\n            saveImage(gifUrl, savePath)\\n            return 'toast://已保存至路径:\\\\n' + savePath\\n        }, 'hiker://files/cache/Icons8/' + name + '-' + id + '.gif', gifUrl),\\n        img: background,\\n        col_type: 'card_pic_2_2'\\n    }, {\\n        title: '““””<small><br></small>' + ' &nbsp &nbsp 复制GIF <small>(url)'.fontcolor('#757575'),\\n        url: 'copy://' + gifUrl,\\n        img: background,\\n        col_type: 'card_pic_2_2'\\n    })\\n}\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"设置ApiKey\",\"path\":\"setAPIKey\",\"rule\":\"js:\\nsetResult([{\\n    title: '保存',\\n    desc: '输入APIKey...',\\n    url: $.toString(()=>{\\n        setItem('APIKey', input)\\n        back()\\n        return 'toast://已更新APIKey'\\n    }),\\n    col_type: 'input',\\n    extra: { defaultValue: getItem('APIKey', '') }\\n}, { col_type: 'line_blank' }, {\\n    title: '建议申请并使用APIKey，免费APIKey可获得更好的使用体验（比如5个APIKey与加上APIKey可切换使用可防止部分被暂时禁止访问），付费APIKey可获取矢量图的url。<br><br>\\\\\\n    申请方法：进入Icons8<a href=\\\"web://https://developers.icons8.com\\\">开发者页面</a>，点击【Get APIKey】，按照提示填写内容，在最后页面会有5个APIKey，都能使用，可以先选择使用icons APIKey',\\n    col_type: 'rich_text'\\n}])\"}]","icon":"https://img.icons8.com/?format=png&id=118527&size=64"},{"title":"聚BT-X5","author":"永远の明日","version":9,"url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet datas = JSON.parse(getVar('juBT-datas')), url = datas.pop(), selected = getVar('juBT-selected', '0'),\n  data = [{\n    url: $('').x5Rule((titles, selected) => {\n      let html = `<meta name=\"viewport\" content=\"width=device-width\"><style>button{margin:0.3rem;border:1px none;background:#f4f6f3;border-radius:0.25rem;font-size:1.025rem;color:#747673}#selected,#expand{background:#e6f3e3;color:#38b076}#expand{position:fixed;top:0.25rem;right:1rem;border-style:solid}</style><script>function reset(i){fy_bridge_app.putVar('juBT-selected',i);fy_bridge_app.refreshPage(true)}</script><button id=\"expand\" onclick=\"fy_bridge_app.refreshX5Desc(Math.abs(document.body.clientHeight-75)<5?'360&&float':'75&&float')\">≡</button>`\n      titles.forEach((v, i) => html += `<button id=\"` + (i == selected ? `selected` : ``) + `\" onclick=\"reset(` + i + `);\">` + v + `</button>`)\n      document.body.innerHTML = ''\n      document.write(html)\n      let id = setInterval(() => {\n        document.body.scrollTop = document.getElementById('selected').offsetTop - 35\n        if (Math.abs(document.getElementById('selected').offsetTop - document.body.scrollTop - 35) < 1 || document.getElementById('selected').offsetTop < 35)\n          clearInterval(id)\n      }, 5)\n    }, datas.map((v) => v.title), selected),\n    desc: '75&&float', col_type: 'x5_webview_single'\n  }, { title: datas[selected].title + ' 🔗', url: url + '#' + datas[selected].url, col_type: 'text_center_1' }]\nArray.prototype.push.apply(data, datas[selected].children)\nsetResult(data)","searchFind":"js:\nconst key = MY_URL.slice(14)\nlet datas = JSON.parse(getVar('juBT-datas')), data = []\ndatas.slice(0, -1).forEach((v) => {\n  Array.prototype.push.apply(data, v.children\n    .filter((vv) => vv.title.indexOf(key) >= 0)\n    .map((vv) => ({ title: vv.title, url: vv.url, desc: v.title }))\n  )\n})\nsetResult(data)","search_url":"hiker://empty#**","titleColor":"#f20c00","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"// 聚BT论坛 https://bbs.ijubt.net/\n// https://jubtnet.github.io/jubt/index.html\n// https://raw.sevencdn.com/jubtnet/jubt/master/index.html\n// https://cdn.jsdelivr.net/gh/jubtnet/jubt@master/index.html\n// https://raw.fastgit.org/jubtnet/jubt/master/index.html\nif (!getVar('juBT-datas')) {\n  // 在这里的fetch中更换发布页的网址，目前测试了上面3个都能用，修改后需要先重启海阔视界\n  let url = 'https://cdn.jsdelivr.net/gh/jubtnet/jubt@master/index.html',\n    urls = parseDomForArray(fetch(url, {}), 'tbody&&tr')\n  for (let i of urls)\n    if (parseDomForHtml(i, 'Text').split(' ')[2] == 'No') {\n      url = parseDomForHtml(i, 'a&&href') + '/cn/index.html'\n      break\n    }\n  let datas = fetch(url, {})\n    .match(/<h4(?:(?!h4).)*h4><div(?:(?!h4).)*div>/g)\n    .slice(1).map((v) => ({\n      title: parseDomForHtml(v, 'h4&&Text'),\n      url: parseDomForHtml(v, 'h4&&i&&id'),\n      children: parseDomForArray('<body>' + v + '</body>', 'body&&.row>div').map((v) => ({ title: parseDomForHtml(v, 'a,1&&Text'), url: parseDomForHtml(v, 'div,1&&data-original-title') })),\n    })).concat(url)\n  putVar('juBT-datas', JSON.stringify(datas))\n}\n","icon":"#f20c00"},{"title":"馨客栈导航","author":"永远の明日","version":3,"url":"hiker://empty","col_type":"flex_button","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet datas = JSON.parse(getVar('mackxin-datas')), selected = getVar('mackxin-selected', '0'), data = []\ndatas.forEach((v, i) => data.push({\n  title: (i == selected ? '““' : '') + v.title,\n  url: i == selected ? 'hiker://empty' : $('#noLoading#').lazyRule((i) => {\n    putVar('mackxin-selected', i)\n    refreshPage(true)\n    return 'hiker://empty'\n  }, i),\n  col_type: 'scroll_button',\n}))\ndata.push({ title: datas[selected].title + ' 🔗', url: 'http://mackxin.com/nav.html#' + datas[selected].url, col_type: 'text_center_1' })\nArray.prototype.push.apply(data, datas[selected].children)\nsetResult(data)","searchFind":"js:\nconst key = MY_URL.slice(14)\nlet datas = JSON.parse(getVar('mackxin-datas')), data = []\ndatas.forEach((v) => {\n  Array.prototype.push.apply(data, v.children\n    .filter((vv) => vv.title.indexOf(key) >= 0)\n    .map((vv) => ({ title: vv.title, url: vv.url, desc: v.title }))\n  )\n})\nsetResult(data)","search_url":"hiker://empty#**","titleColor":"#f20c00","group":"##常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"if (!getVar('mackxin-datas')) {\n  let html = fetch('http://mackxin.com/nav.html', { headers: { 'User-Agent': PC_UA } }),\n    datas = parseDomForArray(html, '.xin-right&&section').map((v) => ({\n      title: parseDomForHtml(v, 'h2&&Text'),\n      url: encodeURI(parseDomForHtml(v, 'section&&id')),\n      children: parseDomForArray(v, 'ul&&li').map((vv) => {\n        let item = { url: /href=\"(.*?)\"/.exec(vv)[1] }\n        if (item.url.indexOf('http') != 0) item.url = 'http://mackxin.com/' + item.url\n        item.title = '““””<b>&nbsp&nbsp&nbsp ' + (parseDomForHtml(vv, 'a&&Text') || item.url) + ' &nbsp&nbsp&nbsp</b>'\n        return item\n      }),\n    }))\n  putVar('mackxin-datas', JSON.stringify(datas))\n}","icon":"#f20c00"},{"title":"今日热榜𝔥","author":"Hood","version":4,"url":"https://tophub.today/c/fyclass?p=fypage&order=fyarea;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_1_vertical_pic","class_name":"综合&科技&娱乐&社区&博客&购物","class_url":"news&tech&ent&community&blog&shopping","area_name":"热门&最新","area_url":"&ID","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.bc-cc&&.cc-cd');\n\nfor (var i in list) {\r\n\n//标题列表\nvar ttt=parseDomForArray(list[i], '.cc-cd&&.t');\n\n//标题\nvar title = '  【'+parseDomForHtml(list[i], '.cc-cd-ih&&Text')+'】\\n1. '+parseDomForHtml(list[i], '.t&&Text');\n\n//图片\nvar img = parseDom(list[i], 'img&&src').replace(/_.*/,'');\r\n\n//链接\nvar url = parseDom(list[i], 'a&&href');\n\n//描述\nif(ttt.length>2){\nvar desc = '2. '+parseDomForHtml(list[i], '.t,1&&Text')+'\\n3. '+parseDomForHtml(list[i], '.t,2&&Text');\n}else if(ttt.length<2){\nvar desc = '暂无更多';\n}else{\nvar desc = '2. '+parseDomForHtml(list[i], '.t,1&&Text');\n}\n\nitems.push({\r\n        title: title,\n        pic_url: img,\r\n        url: url,\n        desc: desc});\n}\n\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"##推荐","detail_col_type":"text_1","detail_find_rule":"tbody&&tr;\ntr--td,2&&Text.js:input.replace('','');\n*;\ntd,2&&Text;\na&&href","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"22小站","author":"LZX","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://22.vin/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"last_chapter_rule":"","title":"兰客导航","author":"LZX","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://b.lackk.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"last_chapter_rule":"","title":"必应导航","author":"LZX","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://nav.kksan.top/#yjlogin\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"last_chapter_rule":"","title":"博海拾贝ᴺᵐ","author":"Namo","version":1,"url":"https://bohaishibei.com/page/fypage/","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".content-list&&.clear:not(:contains(优惠));h2&&Text;*;.entry-meta&&Text;a&&href","searchFind":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.content-list&&.clear');\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'h2&&Text'),\n        desc: parseDomForHtml(list[i], '.entry-meta&&Text'),        \n        url: parseDom(list[i], 'a&&href'),\n    })\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://bohaishibei.com/post/tag/**/page/fypage/","titleColor":"#ffff7000","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"js:var res={};\nvar d = [];\nd.push({\n    col_type: \"text_1\",\n    title: \"““””<big>\" + parseDomForHtml(getResCode(), \".entry-title&&Text\") + \"</big>\",\n});\nd.push({\n    title: parseDomForHtml(getResCode(), \".entry-content&&Html\"),\n    col_type: 'rich_text',\n    extra: {\n        textSize: 16,\n        click: true\n    }\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/8.png"},{"last_chapter_rule":"","title":"落尘之木ᴺᵐ","author":"Namo","version":0,"url":"https://www.luochenzhimu.com/page/fypage","col_type":"movie_1_left_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.content&&.excerpt');\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'h2&&Text'),\n        desc: parseDomForHtml(list[i], '.meta&&Text'),\n\t      pic_url:parseDom(list[i],'img&&data-src'),\n        url: parseDom(list[i], 'a&&href'),\n    })\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.content-wrap&&.excerpt&&li');\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'h2&&Text'),\n        desc: parseDomForHtml(list[i], '.info&&Text'),        \n        url: parseDom(list[i], 'a&&href'),\n    })\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.423down.com/page/fypage?s=**","titleColor":"#ffff7000","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"js:var res={};\nvar d = [];\nd.push({\n    col_type: \"text_1\",\n    title: \"““””<big>\" + parseDomForHtml(getResCode(), \"h1&&Text\") + \"</big>\",\n});\nd.push({\n    title: parseDomForHtml(getResCode(), \".article-content&&Html\").split('push({});')[1],\n    col_type: 'rich_text',\n    extra: {\n        textSize: 16,\n        click: true\n    }\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://img.luochenzhimu.com/public/2020/01/home.png"},{"last_chapter_rule":"","title":"视界论坛R","author":"微笑&发粪涂墙&Reborn","version":42,"url":"https://haikuoshijie.cn/topics/node/fyAll?p=fypage","col_type":"text_1","class_name":"最新&热门&推荐&视界","class_url":"newest&hot&recommend&1","area_name":"求助&插件&教程&方圆&摸鱼","area_url":"5&7&8&2&6","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\n// 使用 emoji 图标替换文本，使用/1 不使用/0\nvar useEmoji = 1;\n// 帖子分类颜色\nvar nodeColor = \"#2979FF\";\n// 是否显示点赞数评论数等，显示/1 不显示/0\nvar showLike = 1;\n\n/**\n * 通过插件自动获取 Token 到文件中然后自动读取\n *\n * 注意：以上方的 token 为主\n */\nlet token = getItem('hikerbbs_token', '');\nvar cookie = token === '' ? '' : 'userToken=' + token;\nvar headers = '';\nif (cookie !== '') {\n    headers = ';get;UTF-8;{User-Agent@Android&&Cookie@' + cookie + '}';\n}\n\nvar html = getResCode();\nvar list = parseDomForArray(html, '.topic-list&&.topic-item');\nfor (let j = 0; j < list.length; j++) {\n    let author = parseDomForHtml(list[j], '.topic-author&&Text');\n    let metaItems = parseDomForArray(list[j], '.topic-meta&&.meta-item');\n    // setError(JSON.stringify(metaItems));\n    let metaNode = parseDomForHtml(metaItems[1], 'Text');\n    let meta = parseDomForHtml(metaItems[0], 'Text') +\n        '  ' +\n        '<font color=\"' + nodeColor + '\">' + metaNode + '</font>';\n    let metaTags = parseDomForArray('<div>' + metaItems[2] + '</div>', 'div&&.tag');\n    // setError(JSON.stringify(metaTags));\n    let metaTag = '';\n    for (let i = 0; i < metaTags.length; i++) {\n        metaTag = (metaTag === '' ? metaTag : (metaTag + '  ')) +\n            parseDomForHtml(metaTags[i], 'Text')\n    }\n    metaTag = metaTag.replace('置顶', '““置顶””');\n    meta = meta + '  ' + metaTag;\n    let desc = author + ' ““””' + meta;\n    if (showLike) {\n        let likeItems = parseDomForArray(list[j], '.like&&.like-item');\n        // setError(JSON.stringify(list[j]));\n        let likeCount = parseDomForHtml(likeItems[0], 'Text');\n        let commentCount = parseDomForHtml(likeItems[1], 'Text');\n        let seeCount = parseDomForHtml(likeItems[2], 'Text');\n        let like = '获赞：' + (likeCount != null && likeCount !== 'undefined' && likeCount !== '' ? likeCount : '0') +\n            '\\t\\t' +\n            '评论：' + (commentCount != null && commentCount !== 'undefined' && commentCount !== '' ? commentCount : '0') +\n            '\\t\\t' +\n            '查看：' + (seeCount != null && seeCount !== 'undefined' && seeCount !== '' ? seeCount : '0');\n        // 👍🏻👍❤️🧡♥️💛🖤♡♥💬👁️➿𓁺\n        if (useEmoji)\n            like = like.replace(\"获赞：\", \"❤️ \")\n            .replace(\"评论：\", \"💬 \")\n            .replace(\"查看：\", \"👁️ \");\n        desc = desc + '\\n\\n' + like;\n    }\n    let url = parseDom(list[j], 'h1&&a&&href') + \"#fypage\" + \"#noHistory#\" +\n        (headers === '' ? '' : headers);\n    url = url.replace(/\\n/g, '');\n    // setError(url);\n    // https://haikuoshijie.cn/topic/2982#fypage#noHistory#;GET;utf-8;{Cookie@userToken=xxxxxx}\n    d.push({\n        title: parseDomForHtml(list[j], 'h1&&Text'),\n        desc: desc,\n        url: 'hiker://page/detail#noHistory#',\n        extra: {\n            url: url,\n        }\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\n\nlet token = getItem('hikerbbs_token', '');\nvar cookie = token === '' ? '' : 'userToken=' + token;\nvar headers = '';\nif (cookie !== '') {\n    headers = ';get;UTF-8;{User-Agent@Android&&Cookie@' + cookie + '}';\n}\n\n/**\n * 获取搜索源码\n * etc.\n * hiker://empty/#fypage@-1@*11@#**\n * https://cn.bing.com/search?q=site:haikuoshijie.cn+**&first=fypage@-1@*11@&wd=**\n */\nlet urlSplits = MY_URL.split('#');\nlet searchUrl = 'https://cn.bing.com/search?q=site:haikuoshijie.cn+'\n    + urlSplits[2]\n    + '&wd='\n    + urlSplits[2]\n    + '&first='\n    + urlSplits[1];\n\nlet html = fetch(searchUrl, {\n    headers: {\n        'User-Agent': MOBILE_UA\n    },\n})\n\n// setError(html);\n\nvar list = parseDomForArray(html, '#b_results&&.b_algo');\n// log(JSON.stringify(list));\nfor (var j in list) {\n    try {\n        // log(JSON.stringify(list[j]));\n        let url = parseDomForHtml(list[j], 'a&&href');\n        // log(JSON.stringify(url));\n        url = url + \"#fypage\" + \"#noHistory#\" + (headers === \"\" ? \"\" : headers)\n        d.push({\n            title: parseDomForHtml(list[j], 'h2&&Text'),\n            url: 'hiker://page/detail#noHistory#',\n            extra: {\n                url: url,\n            },\n            content: parseDomForHtml(list[j], 'p&&Text').replace(/Translate · /g, ''),\n            desc: url\n        });\n    } catch (e) { }\n}\n\nres.data = d;\nsetSearchResult(res);","search_url":"hiker://empty/#fypage@-1@*11@#**","titleColor":"#ff148e8e","group":"##推荐","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"let oldTokenFile = 'hiker://files/rules/js/hikerbbs_token.js';\nif (fileExist(oldTokenFile)) {\n    let fileToken = fetch(oldTokenFile, {});\n    if (fileToken != null && fileToken != '') {\n        writeFile(oldTokenFile, '');\n    }\n}","pages":"[{\"col_type\":\"text_1\",\"name\":\"个人配置\",\"path\":\"settings\",\"rule\":\"js:\\n// 是否显示帖子分类，显示/1 不显示/0\\nvar showMeta = 1;\\n// 帖子分类字体大小 big/大 span/中 small/小\\nvar metaSize = 'small';\\n// 帖子分类颜色\\nvar nodeColor = \\\"#2979FF\\\";\\n// 是否显示正文，显示/1 不显示/0\\nvar showContent = 1;\\n// 是否显示评论，显示/1 不显示/0\\nvar showComment = 1;\\n// 是否隐藏图片，隐藏/1 不隐藏/0\\nvar hideImg = 0;\\n// 使用 emoji 图标替换文本，使用/1 不使用/0\\nvar useEmoji = 1;\\n// 评论用户颜色\\nvar userColor = \\\"#2979FF\\\";\\n// 评论回复引用用户颜色\\nvar quoteUserColor = \\\"black\\\";\\n\\n// 是否显示填写 Token 提示，显示/1 不显示/0\\nvar showInputTokenTips = 1;\\n// 是否开启收藏/点赞结果提示，是/1 否/0\\nvar resultTips = 1;\\n// 第几套图标，-1为随机，从下面三个数组挑选\\nvar iconIndex = -1;\\n// 收藏图标\\nvar starIcons = [ \\n    \\\"hiker://files/icon/bbs收藏.svg\\\",\\n/*'https://www.easyicon.net/api/resizeApi.php?id=1286217&size=128',*/\\n];\\nvar starIconsWebMapping = [\\n    \\\"https://cdn.jsdelivr.net/gh/RebornQ/cdn.hiker/icons/bbs收藏.svg\\\"\\n];\\n// 点赞图标\\nvar likeIcons = [ \\n    \\\"hiker://files/icon/bbs点赞.svg\\\",\\n/*'https://www.easyicon.net/api/resizeApi.php?id=1288217&size=128',\\n    'https://www.easyicon.net/api/resizeApi.php?id=1211507&size=128',\\n    'https://www.easyicon.net/api/resizeApi.php?id=1239511&size=128'*/\\n];\\nvar likeIconsWebMapping = [\\n    \\\"https://cdn.jsdelivr.net/gh/RebornQ/cdn.hiker/icons/bbs点赞.svg\\\"\\n];\\n// 回复图标\\nvar commentIcons = [ \\n    \\\"hiker://files/icon/bbs回复.svg\\\",\\n/*'https://www.easyicon.net/api/resizeApi.php?id=1239495&size=128',*/\\n];\\nvar commentIconsWebMapping = [\\n    \\\"https://cdn.jsdelivr.net/gh/RebornQ/cdn.hiker/icons/bbs回复.svg\\\"\\n];\\n// 原文章图标\\n/*var articleIcons = [ 'https://www.easyicon.net/api/resizeApi.php?id=1238522&size=128',\\n];*/\\nif (!fileExist(starIcons[0])) {\\n    writeFile(starIcons[0], request(starIconsWebMapping[0]));\\n}\\nif (!fileExist(likeIcons[0])) {\\n    writeFile(likeIcons[0], request(likeIconsWebMapping[0]));\\n}\\nif (!fileExist(commentIcons[0])) {\\n    writeFile(commentIcons[0], request(commentIconsWebMapping[0]));\\n}\"},{\"col_type\":\"text_1\",\"name\":\"富文本通用函数\",\"path\":\"richtext\",\"rule\":\"js:\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nString.prototype.replaceWithConfirm = function (confirmValue, searchValue, replaceValue) {\\n    let returnValue = this;\\n    if (confirmValue) {\\n        returnValue = this.replace(searchValue, replaceValue)\\n    }\\n    return returnValue;\\n};\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=https://haikuoshijie.cn') + '\\\"></p>';\\n    if (hideImg) {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction abbreviateReplyText(context, textArray) {\\n    let content = context;\\n    for (let i = 0; i < textArray.length; i++) {\\n        let text = parseDomForHtml(textArray[i], \\\"p&&Text\\\");\\n        if (text.length > 30) {\\n            content = content.replace(text, text.substring(0, 30) + \\\"......\\\");\\n        }\\n    }\\n    return content;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"帖子详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar urlSplits = MY_URL.split(\\\"#\\\");\\nvar mUrl = urlSplits[0];\\nvar page = urlSplits[1];\\nvar colType = 'rich_text';\\n// mUrl = MY_PARAMS.link\\n// log(MY_URL)\\n\\n\\neval(JSON.parse(request('hiker://page/settings')).rule)\\n/**\\n * 用户 Token (需要先登录才能获取)\\n *\\n * 抓包 Cookie 中的 userToken= 后面那串东西\\n * 或\\n * 不填写固定值 则需配合专用插件自动获取\\n * 但每次运行视界都需打开一次论坛\\n */\\nvar token = getItem('hikerbbs_token', '');\\n\\neval(JSON.parse(request('hiker://page/richtext')).rule)\\n\\nif (page > 1) {\\n\\n    let cursor = getVar(\\\"cursor\\\");\\n    if (page === '2') cursor = getVar(\\\"first_page_cursor\\\");\\n    cursor = cursor === '' ? '0' : cursor;\\n\\n    let urlTemplate = \\\"http://haikuoshijie.cn/api/comment/list?entityType=topic&entityId={entityId}&cursor={cursor}\\\";\\n    if (/topic\\\\/(\\\\d+)/.test(MY_URL) === true) {\\n        let entityId = RegExp.$1;\\n        if (entityId != null && entityId !== \\\"\\\") {\\n            let noMore = getVar(\\\"noMore\\\" + entityId);\\n            noMore = noMore === '' ? '0' : noMore;\\n            urlTemplate = urlTemplate.replace(\\\"{entityId}\\\", entityId);\\n            url = urlTemplate.replace(\\\"{cursor}\\\", cursor);\\n            // url = \\\"http://haikuoshijie.cn/api/comment/list?entityType=topic&entityId=398&cursor=9183\\\";\\n            let json = {};\\n            try {\\n                json = JSON.parse(fetch(url, {}));\\n                let data = json.data;\\n                let results = data.results;\\n                if (results != null) {\\n                    let nowTime = new Date().getTime();\\n                    putVar({\\n                        key: 'cursor',\\n                        value: data.cursor\\n                    });\\n\\n                    function timeDiff(nowTime, createTime) {\\n                        Date.prototype.format = function(fmt) {\\n                            let o = {\\n                                \\\"M+\\\": this.getMonth() + 1, //月份\\n                                \\\"d+\\\": this.getDate(), //日\\n                                \\\"h+\\\": this.getHours(), //小时\\n                                \\\"m+\\\": this.getMinutes(), //分\\n                                \\\"s+\\\": this.getSeconds(), //秒\\n                                \\\"q+\\\": Math.floor((this.getMonth() + 3) / 3), //季度\\n                                \\\"S\\\": this.getMilliseconds() //毫秒\\n                            };\\n                            if (/(y+)/.test(fmt)) {\\n                                fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \\\"\\\").substr(4 - RegExp.$1.length));\\n                            }\\n                            for (let k in o) {\\n                                if (new RegExp(\\\"(\\\" + k + \\\")\\\").test(fmt)) {\\n                                    fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : ((\\\"00\\\" + o[k]).substr((\\\"\\\" + o[k]).length)));\\n                                }\\n                            }\\n                            return fmt;\\n                        };\\n                        let time = new Date(createTime).format(\\\"yyyy-MM-dd hh:mm:ss\\\");\\n                        let timeDiff = nowTime - createTime;\\n                        let days = Math.floor(timeDiff / (24 * 3600 * 1000)); // 计算出天数\\n                        let dayLeave = timeDiff % (24 * 3600 * 1000); // 计算天数后剩余的时间\\n                        let hours = Math.floor(dayLeave / (3600 * 1000)); // 计算天数后剩余的小时数\\n                        let hourLeave = timeDiff % (3600 * 1000); // 计算剩余小时后剩余的毫秒数\\n                        let minutes = Math.floor(hourLeave / (60 * 1000)); // 计算剩余的分钟数\\n                        if (0 < days && days < 31) {\\n                            time = days + \\\"天前\\\"\\n                        } else if (days < 0) {\\n                            if (hours > 0) {\\n                                time = hours + \\\"小时前\\\";\\n                            } else {\\n                                time = minutes + \\\"分钟前\\\";\\n                            }\\n                        }\\n                        return time;\\n                    }\\n\\n                    for (let i = 0; i < results.length; i++) {\\n                        let result = results[i];\\n                        let quoteContent = '';\\n                        if (result.quote != null) {\\n                            let quote = result.quote;\\n                            let content = parseDomForHtml(quote.content, 'body&&Html');\\n                            let nickname = quote.user.nickname;\\n\\n                            // https://blog.csdn.net/GrootBaby/article/details/99980395\\n                            let createTime = quote.user.createTime;\\n                            let time = timeDiff(nowTime, createTime);\\n\\n                            try {\\n                                content = content\\n                                    .replace(/<a[\\\\s\\\\S].*?<\\\\/a>/g, '');\\n                                let commentReplyTextArray = content.match(/<p[\\\\s\\\\S].*?<\\\\/p>/g);\\n                                content = abbreviateReplyText(content, commentReplyTextArray);\\n                            } catch (e) {}\\n                            quoteContent = '<blockquote class=\\\"comment-quote\\\"><div class=\\\"comment-quote-user\\\"><a class=\\\"quote-nickname\\\"><font color=\\\"' + quoteUserColor + '\\\">' +\\n                                nickname +\\n                                '</font></a><span class=\\\"quote-time\\\"><font color=\\\"grey\\\">' +\\n                                '\\\\t\\\\t' +\\n                                time +\\n                                '</font></span></div><div itemprop=\\\"text\\\">' +\\n                                content +\\n                                '</div></blockquote>';\\n                        }\\n                        let content = '<p>' + result.content + '</p>';\\n                        let meta = '<br><small><font color=\\\"' + userColor + '\\\">' +\\n                            result.user.nickname +\\n                            '</font>\\\\t\\\\t<font color=\\\"grey\\\">' +\\n                            timeDiff(nowTime, result.createTime) +\\n                            '\\\\t\\\\t回复' +\\n                            '</font></small>';\\n                        let commentContent = quoteContent + content + meta;\\n                        let title = commentContent\\n                            .replace(/<img class=\\\"avatar([\\\\s\\\\S]*?)>/g, '')\\n                            .replace(/(<(p)([\\\\s\\\\S]*?)>)|<p>|<\\\\/p>/g, '')\\n                            .replaceWithCallback(/<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/g, \\\"<img data-v>\\\", imgTagReplacement2)\\n                            .replace(/<img([\\\\s\\\\S]*?)>/g, imgError)\\n                            .replace(/<showimg/g, '<img');\\n                        d.push({\\n                            title: title,\\n                            desc: '',\\n                            url: MY_URL,\\n                            col_type: colType\\n                        });\\n                        d.push({\\n                            col_type: 'line'\\n                        });\\n                    }\\n                } else {\\n                    if (noMore) {\\n                        d.push({\\n                            title: \\\"<p></p>\\\" + '<center><font color=\\\"grey\\\">已无更多评论</font></center>',\\n                            col_type: colType\\n                        });\\n                        putVar({\\n                            key: 'noMore' + entityId,\\n                            value: 1\\n                        });\\n                    }\\n                }\\n            } catch (e) {}\\n        }\\n    }\\n} else {\\n    var html = getResCode();\\n    try {\\n        var js = parseDom(html, '.main-content&&Html');\\n        var hasRule = 0;\\n\\n        // setError(html);\\n\\n        try {\\n\\n            let title = '<p></p><big style=\\\"padding-left: 15px\\\"><strong>' + parseDomForHtml(html, '.topic-header-center&&h1&&Html') + \\\"</strong></big>\\\";\\n            let meta = '';\\n            // parseDomForHtml(html,'.topic-header-center&&.topic-meta&&Html')\\n            let count = '<span style=\\\"color: grey\\\">' + parseDomForHtml(html, '.topic-header-center&&.topic-header-right&&Text') + \\\"</span>\\\";\\n\\n            if (showMeta) {\\n                let metaItems = parseDomForArray(html, '.topic-meta&&.meta-item');\\n                // setError(JSON.stringify(metaItems));\\n                let metaNode = parseDomForHtml(metaItems[2], 'Text');\\n                meta = '<font color=\\\"grey\\\">' + parseDomForHtml(metaItems[0], 'Text') +\\n                    '  ' +\\n                    parseDomForHtml(metaItems[1], 'Text') +\\n                    '  ' +\\n                    '</font><font color=\\\"' + nodeColor + '\\\">' + metaNode + '</font><font color=\\\"grey\\\">';\\n                let metaTags = parseDomForArray('<div>' + metaItems[3] + '</div>', 'div&&.tag');\\n                // setError(JSON.stringify(metaTags));\\n                let metaTag = '';\\n                for (let i = 0; i < metaTags.length; i++) {\\n                    metaTag = (metaTag === '' ? metaTag : (metaTag + '  ')) +\\n                        parseDomForHtml(metaTags[i], 'Text')\\n                }\\n                // metaTag = metaTag.replace('置顶', '““置顶””');\\n                metaSize = metaSize === '' ? 'small' : metaSize;\\n                meta = '<' + metaSize + '>' + meta + '  ' + metaTag + '</font></' + metaSize + '>' + '<br>';\\n                // setError(meta);\\n            }\\n\\n            // 👍🏻❤️🧡♡♥💬👁️➿𓁺\\n            if (useEmoji)\\n                count = count.replace(\\\"获赞：\\\", \\\"❤️ \\\")\\n                .replace(\\\"评论：\\\", \\\"💬 \\\")\\n                .replace(\\\"查看：\\\", \\\"👁️ \\\");\\n\\n            let header = \\\"\\\" + title + '\\\\t<small><font color=\\\"grey\\\"><a href=\\\"' + MY_URL + '\\\">[查看原文]</a></font></small>' + \\\"<br>\\\" + meta + count + '';\\n\\n            d.push({\\n                title: header,\\n                col_type: colType\\n            });\\n\\n            for (let i = 0; i < 2; i++)\\n                d.push({\\n                    col_type: 'line'\\n                });\\n\\n            if (showContent) {\\n                let title = parseDomForHtml(html, '.content&&Html')\\n                    .replaceWithCallback(/<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/g, \\\"<img data-v>\\\", imgTagReplacement2)\\n                    .replace(/<img([\\\\s\\\\S]*?)>/g, imgError)\\n                    .replace(/<showimg/g, '<img')\\n                    .replace(/(<(div)([\\\\s\\\\S]*?)>)|<div>|<\\\\/div>/g, '');\\n                d.push({\\n                    title: \\\"<p></p>\\\" + title,\\n                    desc: '',\\n                    url: '',\\n                    col_type: colType\\n                });\\n\\n            }\\n\\n            var regExp = /(.*?)￥(.*?)￥(.*)/;\\n            if (js.indexOf('>海阔') !== -1) {\\n\\n                /*if (showContent) {\\n                for(var i = 0; i < 2; i++)\\n                d.push({\\n                       col_type: 'line'\\n                  });\\n                }*/\\n\\n                let col = \\\"text_1\\\";\\n                let list = js.match(/>海阔[\\\\s\\\\S]*?<\\\\//g);\\n                if (list != null && list.length !== 0) hasRule = 1;\\n                if (list != null && list.length > 1) {\\n                    d.push({\\n                        title: \\\"<p></p>\\\" + \\\"<big><b>本文所有规则一键导入</b></big>\\\",\\n                        col_type: colType\\n                    });\\n                }\\n                for (let j = 0; j < list.length; j++) {\\n                    let title = list[j].split('>')[1].split('</')[0];\\n                    let mTitle = title;\\n\\n                    if (regExp.test(title) === true) {\\n                        col = \\\"text_3\\\";\\n                        if (list.length === 1) mTitle = \\\"一键导入\\\";\\n                        if (list.length > 1) {\\n                            // var regExp1 = /(title\\\":\\\"(.*?)\\\")|(base64:\\\\/\\\\/@(.*?)@)|((.*?)@)/;\\n                            // setError (RegExp.$2)\\n                            mTitle = RegExp.$3;\\n                            mTitle = (mTitle != null && mTitle !== '') ? mTitle : title;\\n                            switch (RegExp.$2) {\\n                                case \\\"home_rule\\\":\\n                                    /title\\\":\\\"(.*?)\\\"/.test(mTitle);\\n                                    mTitle = RegExp.$1;\\n                                    break;\\n                                case \\\"home_rule_v2\\\":\\n                                    /base64:\\\\/\\\\/@(.*?)@/.test(mTitle);\\n                                    mTitle = RegExp.$1;\\n                                    break;\\n                                case \\\"js_url\\\":\\n                                    /(.*?)@/.test(mTitle);\\n                                    mTitle = RegExp.$1;\\n                                    break;\\n                                case \\\"home_rule_url\\\":\\n                                    mTitle = \\\"首页合集\\\";\\n                                    break;\\n                                case \\\"bookmark_url\\\":\\n                                    mTitle = \\\"书签合集\\\";\\n                                    break;\\n                            }\\n                        }\\n                    }\\n                    title = (mTitle != null && mTitle !== '') ? mTitle : title;\\n                    if (title.length > 14) col = \\\"text_2\\\";\\n\\n                    d.push({\\n                        title: title,\\n                        desc: '🔔‘‘’’<b> 点击导入 </b>🔔',\\n                        url: 'rule://' + base64Encode(decodeURIComponent(list[j].split('>')[1].split('</')[0].replace(/amp;/g, '')\\n                            .replace(/&lt;/g, '<')\\n                            .replace(/&gt;/g, '>'))),\\n                        col_type: col\\n                    });\\n                }\\n            } else\\n            if (js.indexOf('<code>方圆') !== -1) {\\n\\n                /*if (showContent) {\\n                for(var i = 0; i < 2; i++)\\n                d.push({\\n                       col_type: 'line'\\n                  });\\n                }*/\\n\\n                let list = js.match(/<code>方圆[\\\\s\\\\S]*?<\\\\/code/g);\\n\\n                if (list != null && list.length !== 0) hasRule = 1;\\n                if (list != null && list.length > 1) {\\n                    d.push({\\n                        title: \\\"<p></p>\\\" + \\\"<big><b>本文所有规则一键导入</b></big>\\\",\\n                        col_type: colType\\n                    });\\n                }\\n\\n                for (let j = 0; j < list.length; j++) {\\n                    let title = parseDomForHtml(list[j], 'code&&Text');\\n                    let mTitle = title;\\n\\n                    if (regExp.test(title) === true) {\\n                        col = \\\"text_3\\\";\\n                        if (list.length === 1) mTitle = \\\"一键导入\\\";\\n                        if (list.length > 1) {\\n                            mTitle = RegExp.$3;\\n                            mTitle = (mTitle != null && mTitle !== '') ? mTitle : title;\\n                            switch (RegExp.$2) {\\n                                case \\\"source\\\":\\n                                    /title\\\":\\\"(.*?)\\\"/.test(mTitle);\\n                                    mTitle = RegExp.$1;\\n                                    break;\\n                            }\\n                        }\\n                    }\\n                    title = (mTitle != null && mTitle !== '') ? mTitle : title;\\n\\n                    d.push({\\n                        title: title,\\n                        desc: '点击导入',\\n                        url: 'rule://' + base64Encode(decodeURIComponent(list[j].split('>')[1].split('</')[0].replace(/amp;/g, '')\\n                            .replace(/&lt;/g, '<')\\n                            .replace(/&gt;/g, '>'))),\\n                        col_type: col\\n                    });\\n                }\\n            } else {\\n\\n            }\\n\\n            if (token !== '') {\\n                let starIcon = starIcons[0];\\n                let likeIcon = likeIcons[0];\\n                let commentIcon = commentIcons[0];\\n                // let articleIcon = articleIcons[0];\\n                let starIconMax = starIcons.length - 1;\\n                let likeIconMax = likeIcons.length - 1;\\n                let commentIconMax = commentIcons.length - 1;\\n                // let articleIconMax = articleIcons.length-1;\\n                if (iconIndex === -1) {\\n                    let maxLen = Math.max(starIconMax, likeIconMax, commentIconMax /*, articleIconMax*/ );\\n                    iconIndex = Math.floor((Math.random() * (maxLen + 1)));\\n                }\\n                starIcon = starIcons[iconIndex > starIconMax ? starIconMax : iconIndex];\\n                likeIcon = likeIcons[iconIndex > likeIconMax ? likeIconMax : iconIndex];\\n                commentIcon = commentIcons[iconIndex > commentIconMax ? commentIconMax : iconIndex];\\n                // articleIcon = articleIcons[iconIndex > articleIconMax ? articleIconMax : iconIndex];\\n                let isStarred = 0;\\n                let starStatus = '';\\n                try {\\n                    starStatus = parseDomForHtml(html, \\\".favorite.active&&Html\\\");\\n                } catch (e) {\\n                    starStatus = ''\\n                }\\n                if (starStatus !== '') isStarred = 1;\\n                // setError(starStatus);\\n                d.push({\\n                    col_type: 'line',\\n                });\\n                d.push({ //  text_center_1 icon_small_3\\n                    title: isStarred === 0 ? '收藏' : '已收藏',\\n                    pic_url: starIcon,\\n                    col_type: 'icon_small_3',\\n                    url: $(mUrl).lazyRule((token, resultTips, isStarred) => {\\n                        // let token =  getItem('hikerbbs_token', '');\\n                        var mUrl = input;\\n                        let message = '';\\n                        if (/topic\\\\/(\\\\d+)/.test(mUrl) === true) {\\n                            let entityId = RegExp.$1;\\n                            if (entityId != null && entityId !== \\\"\\\") {\\n                                let starUrl = 'https://haikuoshijie.cn/api/topic/favorite/' + entityId;\\n                                if (isStarred) {\\n                                    starUrl = 'https://haikuoshijie.cn/api/favorite/delete?entityType=topic&entityId=' + entityId;\\n                                }\\n                                let options = {\\n                                    headers: {\\n                                        'X-User-Token': token\\n                                    },\\n                                    body: '',\\n                                    method: 'GET'\\n                                };\\n                                /*setError (options);*/\\n                                let starResult = fetch(starUrl, options);\\n                                /*setError (starResult);*/\\n                                if (resultTips) {\\n                                    starResult = JSON.parse(starResult);\\n                                    message = starResult.message;\\n                                    if (starResult.message === '') {\\n                                        if (starResult.success === true) {\\n                                            message = isStarred === 1 ? '已取消收藏' : '收藏成功';\\n                                            refreshPage(false);\\n                                        }\\n                                    } else if (starResult.message === '请先登录') {\\n                                        setItem('hikerbbs_token', '');\\n                                        message = '请先登录';\\n                                    }\\n                                    message = 'toast://' + message;\\n                                }\\n                            }\\n                        }\\n                        return message\\n                    }, token, resultTips, isStarred)\\n                });\\n                d.push({ //  text_center_1 icon_small_3\\n                    title: '点赞',\\n                    pic_url: likeIcon,\\n                    col_type: 'icon_small_3',\\n                    url: $(mUrl).lazyRule((token, resultTips) => {\\n                        var mUrl = input;\\n                        // let token =  getItem('hikerbbs_token', '');\\n                        let message = '';\\n                        if (/topic\\\\/(\\\\d+)/.test(mUrl) === true) {\\n                            let entityId = RegExp.$1;\\n                            if (entityId != null && entityId !== \\\"\\\") {\\n                                let likeUrl = 'https://haikuoshijie.cn/api/topic/like/' + entityId;\\n                                let options = {\\n                                    headers: {\\n                                        'X-User-Token': token\\n                                    },\\n                                    body: '',\\n                                    method: 'POST'\\n                                };\\n                                /*setError (options);*/\\n                                let likeResult = fetch(likeUrl, options);\\n                                // log(likeResult);\\n                                if (resultTips) {\\n                                    likeResult = JSON.parse(likeResult);\\n                                    message = likeResult.message;\\n                                    if (likeResult.message === '') {\\n                                        if (likeResult.success === true) message = '点赞成功';\\n                                        refreshPage(false);\\n                                    } else if (likeResult.message === '请先登录') {\\n                                        setItem('hikerbbs_token', '');\\n                                        message = '请先登录';\\n                                    }\\n                                    message = 'toast://' + message;\\n                                }\\n                            }\\n                        }\\n                        return message\\n                    }, token, resultTips)\\n                });\\n                d.push({\\n                    title: '回复',\\n                    pic_url: commentIcon,\\n                    col_type: 'icon_small_3',\\n                    url: mUrl\\n                });\\n                /*d.push({\\n                    title: '原文',\\n                    pic_url: articleIcon,\\n                    col_type: 'icon_small_3',\\n                    url: mUrl\\n                });*/\\n                d.push({\\n                    col_type: 'line',\\n                });\\n            } else {\\n                if (!getItem(\\\"hikerbbs_token\\\", \\\"\\\")) {\\n                    let loginPage = $.require(\\\"hiker://page/verify?rule=\\\" + \\\"视界论坛R\\\");\\n                    loginPage = 'base64://' + base64Encode(loginPage({ onSuccess(userInfo) { /*log(userInfo)*/ }}))\\n                    // log(loginPage)\\n                    d.push({\\n                        title: \\\"<p></p>\\\" + '<small><font color=\\\"grey\\\">' + '如需收藏或点赞功能，需先' + '<a href=\\\"' + loginPage + '\\\">登录</a>一次再返回刷新' + \\\"</font></small>\\\",\\n                        col_type: colType\\n                    });\\n                }\\n            }\\n\\n            if (showComment) {\\n                /*if (hasRule) {\\n                for(var i = 0; i < 2; i++)\\n                d.push({\\n                       col_type: 'line'\\n                  });\\n                }*/\\n\\n                /cursor:\\\"(.*?)\\\"/.test(html);\\n                let cursorTemp = RegExp.$1;\\n                let cursor = (cursorTemp != null && cursorTemp !== '') ? cursorTemp : '0';\\n                putVar({\\n                    key: 'cursor',\\n                    value: cursor\\n                });\\n                putVar({\\n                    key: 'first_page_cursor',\\n                    value: cursor\\n                });\\n\\n                d.push({\\n                    title: \\\"<p></p>\\\" + \\\"<big><b>\\\" + parseDomForHtml(html, '.comment-title&&Html') + \\\"</b></big>\\\",\\n                    col_type: colType\\n                });\\n                var pl = parseDom(html, '.comments&&Html')\\n                    .match(/<li[\\\\s\\\\S]*?<\\\\/li/g);\\n                if (pl == null || pl.length === 0) {\\n                    d.push({\\n                        title: \\\"<p></p>\\\" + '<font color=\\\"grey\\\">暂无评论</font>',\\n                        col_type: colType\\n                    });\\n                } else {\\n                    for (let j = 0; j < pl.length; j++) {\\n                        // /(<(div|p)([\\\\s\\\\S]*?)>)|<div>|<p>|<\\\\/div>|<\\\\/p>/g\\n                        let commentContent = parseDomForHtml(pl[j], '.comment-content&&Html')\\n                            .replace(/<img class=\\\"avatar([\\\\s\\\\S]*?)>/g, '')\\n                            .replace(/(<(p)([\\\\s\\\\S]*?)>)|<p>|<\\\\/p>/g, '')\\n                            .replaceWithCallback(/<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/g, \\\"<img data-v>\\\", imgTagReplacement2)\\n                            .replace(/<img([\\\\s\\\\S]*?)>/g, imgError)\\n                            .replace(/<showimg/g, '<img');\\n                        try {\\n                            let commentReplyText = parseDomForHtml(pl[j], '.comment-quote&&Html');\\n                            let commentQuoteUsername = parseDomForHtml(commentReplyText, \\\".quote-nickname&&Html\\\");\\n                            let commentQuoteTime = parseDomForHtml(commentReplyText, \\\".quote-time&&Html\\\");\\n                            commentReplyText = commentReplyText\\n                                .replace(/<a[\\\\s\\\\S].*?<\\\\/a>/g, '');\\n                            let commentReplyTextArray = commentReplyText.match(/<p[\\\\s\\\\S].*?<\\\\/p>/g);\\n                            commentContent = abbreviateReplyText(commentContent, commentReplyTextArray)\\n                                .replace(commentQuoteUsername, '<font color=\\\"' + quoteUserColor + '\\\">' + commentQuoteUsername + '</font>')\\n                                .replace(commentQuoteTime, '<font color=\\\"grey\\\">' + commentQuoteTime + '</font>');\\n                        } catch (e) {}\\n                        d.push({ // p,-2\\n                            title: \\\"<p></p>\\\" + commentContent + '<br><small>' + parseDomForHtml(pl[j], '.comment-nickname&&Html').replace(/<a[\\\\s\\\\S].*?>/g, '<font color=\\\"' + userColor + '\\\">').replace(/<\\\\/a>/g, \\\"</font>\\\") + '\\\\t\\\\t<font color=\\\"grey\\\">' + parseDomForHtml(pl[j], '.comment-meta--span&&Text') + '</font></small>',\\n                            desc: '',\\n                            url: MY_URL,\\n                            col_type: colType\\n                        });\\n                        d.push({\\n                            col_type: 'line'\\n                        });\\n                    }\\n                }\\n            }\\n        } catch (e) {}\\n    } catch (e) {\\n        d.push({\\n            title: '<p style=\\\"text-align: center;\\\">该页面无法解析或话题不存在</p><p style=\\\"text-align: center;\\\"><a href=\\\"' + MY_URL + '\\\">查看原文</a></p>',\\n            col_type: 'rich_text'\\n        })\\n    }\\n}\\n\\nres.data = d;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"验证页面\",\"path\":\"verify\",\"rule\":\"evalPrivateJS(\\\"3cLXjtBC0G3dIAf32EY0nQM6hi25ocHyN0ZccoQp9rvV6zJ99kH0brtERsczuW+ccs2yQyVIU6i2gGGGBtsg3I4J1QTByLjOVAGEaoHoTqK0p5bF5a6WC/EAVGEQhokoIYxXX+PgCecuqlu7AtSknxwwGde5U7DxRJtWXHcKWo20LTxYB8R3rdxElnuzOfE9xhpU5+nFZfYUcYRt08/qTfLYnxxJl7s8GhXOfKx0zhP5YL9WDmTqThykJ3WiSjBli6xICWJrSPQh3roXFpagj0rDplVcLva0B+KV/pG5CPRYwPK5IWLmfx9ZbPkVLwSOaLngCTr8K1cYTVNaHNRNiXbyuNPQgL8Q0ptqjywBxEop2i5Jn5Cw/0PMMcIYk5vAGCpbeIRBBmMdaCqOTaAoMB8X7QM3qMk4bEyGt78TnKfJkCaMOQuA+lo3am1jNvZYkCJ4jORjI1ZgTQqE7PfLZNRTPCtd+3/uoo4AuU36yWXXxijikojaTbsvViFyvv8KOsBMioLfn/X4uTLaVRDCCbpDsTIetdlQhA0OAnE8l70tV587KnBZsaGZ9PMkvM38sQwLx9z8lMVg9RBbAe/eb8sVp+Lto47ETvMzB5tq37nTwXujtDYWHns+lHyvmjaN64nS34BX0AeVmW70kCm4X9P92sKA9SK+/NHsqf13COv73R9joSXqLk2Pnl45fpe/EglQ6JH1fZB+QoDxgRJ1WsGgjrP+ORoz0DcOLV2gppR0SPAsYjdnBkO1cCQ6x+WufQr7JW9leGGDU2avMQN0qLOFVEdFethPe+b+LwbSf3z65UoGhFrbVItFAO/k5w/TW1V26oilFYyXFZ+v7EHE8N5XbqPfLG5AAUEvrchS4WZCnCwka1oBQ7196/QOjjQ2F3sMR9d4Dr7U+UYQmHh3FsHL77NcgX2kZESwnzFZ3b8s/mKgae7p8/lhMFcByZxAC7LdWHydx0hZ+QtrU/Nvz4JE5C3nuYWs6PI8fj2qn3sWyT28PhU/UlmjF5aA+epyVC+cXLf/5sJJCNbbRIXrwCp4W3tp0s7c0h9dfNl8+oU9lTjHnYNZ6kQ2KWcNk9a+Pif0cYrLGG+qcfWADOV09fRx4ibYG3+wtppp0I5MEGze3/yGoYpsLT5uyr6CKWQVnjxxc80QwrKOFkgxZ7mfpk3QGZoaLC36Lw4+3JqB0fUs2N81E7Ddo0usxe7HGr/9msD+vhDjV+8bntDyO55xUK6idOPQ8jwM1nJ1du2lmXpBxb0Q5zxlyFpVY50ndwfuhNyuiYQi5a8xWFHWryIBvJqbnx0+EFbKczbrWmOQ3IPS3+sZdjkFUPxOWBME09ciX/q+Mg1EAhfrh7czDIH5rzgW7ZVqG0aUdB1pA9hocpd+bZ0/4ujIw+MrOGONHmxyvq1cLRDQMz5i8/I0W3ZpShUgs6JPE+chD5Af5wrhV13999bxiLaMkRmTj3Ru3UtCyyvLSNZWc/sIn/vWSAHU9nQUEBGUplbqM6Jdj2Wh3M3yh6yKJjdLcYASe1eNTWs+ae5joWCY8Lzupn/6/GAii8S7hgtOfffexp6dFG2t7tbz3y3HhAQ9GuMC3bzT1bZXu785TYinZJjAM722T/fVCbtXOEmFscwhGIKFOk2q8VcUc4akJbcXW4VsX5PECryIT8FTZ/9ma0OlXwM4w1Si6tiP9jqUFe9smi7tvimjjdme8/8W+jSr0oXxHw5gXzjlO9ERdwA8R5bawEr1KzGLyApb9k3keVrbc29pR8V88zWfWR0lMt4tEaT1tpc26aMVyHDKW0c177GihbND7WzX3Hw5ACwUccKpzPeu8LAaHjelSctdU5jvWkMhrRgB5IIqszKUNGYBWiUx+RK+kMAwhRKDqiLleWCuyojp6NRFkHZFFjBneFO6qc76HSw4zkiNQJrO0KgrGbTev+xhmrO8X06m+tkk0ecsF4QaTqRjJFA0riZtTpbc0bL0v0qtxxqdlEW8viEpEu+S7nAWyJ6l2Xi8fe3rxysWYIqTUURsSuuNQe33u5hDmvg6roxrgc8L7pRH6IDHCvBLXw+J2zttCxWofMB5XIcY4va7fyAkU/SI1Q70Coy8t4fFBjB4DbvVSa+aMluqKoPaA/MQMtquiGJ3VyiRHjdKlmOJhuHQ3MUTuxC0hDaVOGB59mmFS93blFbKYzA+zWHPg1o1C9m9rJeNapf8EA39QiNvnV7krCIzAexgU9gMKNYdJ+6XSuU+6BKDe5Mz3vAV27YkJCwmzt+Bpae/Oqn129gsZmfwRyL3UGyiAdZe3M+Y+2ZqwGyLvQa2gwCFMWqSTJ2lmOQHqezjr648kwm9XjUFEzY8HlnLK8tI1lZz+wif+9ZIAdT2PHbvAbMrNAWiNS/uh4i2RkyRox7hPSfyUfwxQfqLaQ6SIyB1n4deNdPBPsna6EkOjlcUfpcHco5LGToSa9PCxYZNPux3IBitzyUVwT1OS7WMWDmqWowP4ATnKcQ9RtJgHSS66lhqdkWK+oJp5DYLHqGFb9x9STCccczbO6D1xdTD8GwlKCIQkWfqv0IvgCZystGEe2E2xFb9ycmlf6n0WqZGE8vUyvn03fGsdbwQOM7OlDL7DvzzsOQnK+/bCc4nRPioJ6uIl1jF5xE5Mn2MIXAN3XVeP2bW2+tAdB0Zt733UGyiAdZe3M+Y+2ZqwGyLvQa2gwCFMWqSTJ2lmOQHqRsNVcw1ozQXfIPW2LQsltUo3sGUVclMl0YESnjcmDz8PVnVL+z1/vdFC8zeWrEtNmfmLl/MxBrEGPFG1+ctBF/9akTFweOhXC5Tf3ynHrKPPXH9ZzTw4Od9/be26buNwCUiXQ3jyDXuq8Hg3zfd5AnkdIn7hu0BddfSYL4ShDvWkjUUJkpXa//XFtaxMQt8DP+cQaojiyMJMO8G1ql+g8GsrAnebfWFkiIV44NVggene1UGCWS3d1sPIaHnrAtEoUCt+ARrHgLZWiZ6OdtqYeSIv7j6+OJ9SE7NAEJAIkh/RhlU7ivx7G1KPasIinrsigWon7fJxU1JMElt4ER4wC+wO5slFfogNk/OPy3BDpJyDWlaANo0/NXNWWzr5ylT+FjIvT7oNGXJ0WXiOQ1NbN9Z8nfk32G9DvIp1lAkl2nRC7LdWHydx0hZ+QtrU/Nvz4SZiK8eR9m3C230+f0JjCDAFtqkNSVT/FY+v+j00b3s44PKDuMroZjPXH4+72bJPXHOqDkUoywHfvt/4sz2iYFwBG1YTBZxxep4VcZ+HcOCyyvLSNZWc/sIn/vWSAHU9pOeKtJGX3ZnUwxacqo+tWa7uL8AbN09NWQn10kxd323Sfu5RbIcnLEG3yeqUIN+ZJ5WqeTzANnA9Ee6weG2/w2Urx2EG2/3jBjKiIWs2NXPJlaCzpidRa0is2FJPVlh/Msry0jWVnP7CJ/71kgB1PbhZS49es64hgo8snU+mt3Xx/0P3Ed9dmduHotrzBkEtlgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/vyyvLSNZWc/sIn/vWSAHU9vbO5HxIeRh/pleBN++9aeq9gfAcpO7SOOE6hv33pJd2NXWo7ywrhGdcJN5VytArzjPEJv2PLBemuX8uxAtD0UL44SUOxkgl28uP3g4RGCw/R3lUyr7Vi5Z2C4E7U+EbiNM+LoOsCIVKPLIzMY9UI54ZWAn8PC8OASnUmKt5s4TLvh8W+u1lL/2uKMQhfT2dPPBYsnEes5babEbtGxJaGoU1iznBHKxvFttoVZs4RUT7ckGEsQ9p1EjBgcvWheDEIybaCp71v11JvD4axoU01sBh5OTCl7DvoZqDwoixp0O5mM7rGWBhQ3N9D9RK4FDWVZoeUKna5p2IAwctyh4IRnWt69Ng2JBTTP0d21Qrpy/gaxeCn9NT7oni4PBOjgxbBeUaKO7DcFo/Ure+iGjsDmAzNhkbDFyQQvBRQUqWZILR7mTdnYJ3WFJ0GntGTvEm+0ORha/tKuw0SqLIhIXxCUyn16hUlACQTh2GjJwwEAj0yyvLSNZWc/sIn/vWSAHU9oSXX/0EVz2npCr5sKYVQl08i14APG705ihqnbPcXULNc/HVM1CeZoPkw/fJ9VlwSgOoTdgVRc75vUySMOYCr6YuMUa3TtkughVt0IqrKoSzeYyBFf3dY+u4Ch2A9cyL/hYL5qlMsLe7FzfC0o29YEYo+b5qqTvhBODGBCfbUSywyyvLSNZWc/sIn/vWSAHU9t0ezq6AtpU4FWpELoUrJjsDqE3YFUXO+b1MkjDmAq+mo3sYlYaLS3MFG5W8GXJlncsry0jWVnP7CJ/71kgB1PY499mp8Ss/C3x8mWijcUeh9R7L1yDJwzXM70VWSBd1piYwFmWqXn8fXoh+Jj6nJE5So3GS9w+JfFh/HoOA84qCW3V5+DosWT7eQRcJB/6Ucm8vuGIikhXb9KiyKIYBRw/Zz9mwhatc4hStOXx5KR0dKYPyXQT6opwwf/yyq/bX2JZUCzFVaQ+nzyA8NB+5JpPOlDL7DvzzsOQnK+/bCc4n0edCTxQb/OtvSSEJTuYHxEfUuMHkRXnJeF2e0yTqTnrdW/Ww+kayZes0CKJsDH2L6DzNaYOGj4dWqkT6S5efebdlZRUameQIjQ/NeqBNgdVn3NRjpsEor8nJ5c2w3c3DyyvLSNZWc/sIn/vWSAHU9k85G0eu8oxOWueBLcwhpUvHsp1PjPSkcGlJn+XxV+cRKCoh5TwNkRCSZ7cVd4VMvtBNoxVLQ3Q6RS8uM/VSK2Mn19QRxIda+Tx+nKfD4GRgC/iPfelCYuu9BxR+8VPBEfXjj3eCz5wcbgYWdnrtSFxGO8FP2gPMsWSsfffh+c7coyjMiPW+0CkMAILVNKoGGOeRY4YDcu0q+EeE53AvbonAd6UPWWgR6wLIPnTUftFjFZ171zX2eNtc6EWAA1fZpAkGt4w+eqGh2SkqwIzVfHYC7bozcBnYFCld9FXOOhff7SJV0JMRpE5TaAgUd843RGuCFlpHR3QjshqFPpX6O6pfgKDbpALvs1h8TzTVg4zvVJa8J9q1sJywqs2P5DJ443+hTF7ePUSPBBc/5Ligijk=\\\")\"}]","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"知乎日报社R","author":"wingeva&Reborn","version":3,"url":"hiker://empty#fypage","col_type":"movie_1_left_pic","class_name":"最新&上次翻页位置&阅读记录","class_url":"new&last&history","area_name":"昨天&前天&一周前&两周前&一月前","area_url":"1day&2day&week&2week&month","sort_name":"","year_name":"一年前&两年前&三年前&四年前&五年前&六年前&七年前","sort_url":"","year_url":"1year&2year&3year&4year&5year&6year&7year","find_rule":"js:\nDate.prototype.Format = function (fmt) {\n    var o = {\n        \"M+\": this.getMonth() + 1, //月份 \n        \"d+\": this.getDate(), //日 \n        \"h+\": this.getHours(), //小时 \n        \"m+\": this.getMinutes(), //分 \n        \"s+\": this.getSeconds(), //秒 \n        \"q+\": Math.floor((this.getMonth() + 3) / 3), //季度 \n        \"S\": this.getMilliseconds() //毫秒 \n    };\n    if (/(y+)/.test(fmt))\nfmt = fmt.replace(RegExp.$1, (this.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n    for (var k in o){\n    if (new RegExp(\"(\" + k + \")\").test(fmt)) {\nfmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n}\n    }\n    return fmt;\n};\nfunction getPage(date)\n{\nvar cp=getUrl().split(\"#\")[1];\nvar day=new Date(date);\nday.setDate(day.getDate()-cp+1);\nvar str_date=day.Format(\"yyyy/MM/dd\"); \n writeFile(\"hiker://files/cache/readdate@ebox001.txt\",str_date);\n       var pbody=\"csrf_token=\"+getVar(\"csrf@ebox001\")+\"&str_date=\"+str_date;\n//setError(pbody);\n       var url=\"https://www.ebox001.com/news_at_zhihu_before\";\nlet ret=fetch(url,{headers:{'Cookie':getVar(\"cookie@ebox001\"),'Content-Type':'application/x-www-form-urlencoded;charset=UTF-8'},body:pbody,method:'POST'});\nreturn eval(\"(\"+ret+\")\");\n}\nvar d=[];\nvar r={};\nvar res={};\nvar html;\nvar json = JSON.parse(getRule());\n\nif(json.firstHeader==\"class\"){\n   if(json.class_url==\"new\"){     \n html=getPage(getVar(\"today@ebox001\"));      \n   }else if(json.class_url==\"last\"){  \n var readdate=fetch(getVar(\"mReadPosUrl\"),{}); \n html=getPage(readdate);\n   }else if(json.class_url==\"history\"){  \n var history=fetch(getVar(\"mHistoryUrl\"),{}); \n res.data=JSON.parse(history);\n//setError(JSON.stringify(res.data))\n//setHomeResult(res);\n   }\n} else if(json.firstHeader==\"area\"){\nvar days;\nswitch(json.area_url) { \ncase \"1day\": days=1;break;\ncase \"2day\": days=2;break;\ncase \"week\": days=7;break; \ncase \"2week\": days=14;break; \ncase \"month\": days=30;break; \ndefault: days=0;\n} \nlet qday=new Date(getVar(\"today@ebox001\"));\nqday.setDate(qday.getDate()-days);\nlet qdate=qday.Format(\"yyyy/MM/dd\"); \nhtml=getPage(qdate);\n}else if(json.firstHeader==\"year\"){\nvar days;\nswitch(json.year_url) { \ncase \"1year\": days=365;break; \ncase \"2year\": days=365*2;break; \ncase \"3year\": days=365*3;break;\ncase \"4year\": days=365*4;break;\ncase \"5year\": days=365*5;break;\ncase \"6year\": days=365*6;break;\ncase \"7year\": days=365*7;break;\ndefault: days=0;\n} \nlet qday=new Date(getVar(\"today@ebox001\"));\nqday.setDate(qday.getDate()-days);\nlet qdate=qday.Format(\"yyyy/MM/dd\"); \nhtml=getPage(qdate);\n}\n\nif(json.firstHeader!=\"class\"||json.class_url!=\"history\"){\nvar vol=parseDomForArray(html,\".cards&&.card\");\nvar readdate=fetch(getVar(\"mReadPosUrl\"),{});\nvar read=new Date();\nread=\"[\"+(read.getMonth()+1)+\"月\"+(read.getDate())+\"日读过]\"\nfor(i=0;i<vol.length;i++)\n{\nr={\ntitle:parseDomForHtml(vol[i],\"a,1&&Text\"),\npic_url:parseDomForHtml(vol[i],\".image&&img&&src\"),\ndesc:parseDomForHtml(vol[i],\"p&&Text\")+\"\\n\"+readdate,\nurl:parseDomForHtml(vol[i],\"a,1&&href\")\n};\nlet rr={\ntitle:r.title,\npic_url:r.pic_url,\ndesc:r.desc+\"   \"+read,\nurl:r.url\n};\n\nlet lazy=`@lazyRule=.js:var history=fetch(getVar(\"mHistoryUrl\"),{});var hisArr=history?JSON.parse(history):[];var r=`+JSON.stringify(rr)+`;hisArr.unshift(r);writeFile(getVar(\"mHistoryUrl\"),JSON.stringify(hisArr));input`;\nlazy = '';\nr.url+=lazy;\nd.push(r);\n}\nres.data=d;\n//cookie可能失效,清空之\nif(d.length==0) putVar2(\"cookie@ebox001\",\"\")\n}\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"##推荐","detail_col_type":"movie_1","detail_find_rule":"js:\nlet res = {};\nlet items = [];\nlet html = getResCode();\nlet col_type = 'rich_text';\n\n// 是否隐藏图片(省流模式) 1/隐藏 0/不隐藏\nlet hideImg = 0;\n// 是否显示看大图(防止无法加载图片) 1/显示 0/不显示\nlet showFullImgTips = 1;\n\nfunction getBigText(text) {\n    return '<big>' + text + '</big>';\n}\nfunction getSmallText(text) {\n    return '<small>' + text + '</small>';\n}\nfunction getStrongText(text) {\n    return '<strong>' + text + '</strong>';\n}\nfunction getTitleText(text) {\n    return getStrongText(text);\n}\nfunction getColorText(text, color) {\n    return '<font color=\"' + color + '\">' + text + '</font>';\n}\nfunction getGreyText(text) {\n    return getColorText(text, 'grey');\n}\nfunction getCodeText(text) {\n    return '<code>' + text + '</code>';\n}\nfunction getAddressTag(url, text) {\n    return '<a href=\"' + url + '\">' + text + '</a>'\n}\nfunction getImgTag(imgUrl) {\n    return '<img src=\"' + imgUrl + '\">'\n}\nfunction getCenterText(text) {\n    return '<p style=\"text-align: center;\">' + text +'</p>'\n}\n\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\n    let returnValue = this;\n    if (callback != null) {\n        returnValue = callback(this, searchValue, replaceValue);\n    }\n    return returnValue;\n};\n\nfunction imgDescTagReplacement2(context, searchValue, replaceValue) {\n    let matchArray = context.match(searchValue);\n    let returnValue = context;\n    if (matchArray != null) {\n        for (let i = 0; i < matchArray.length; i++) {\n            let item = matchArray[i];\n            // /(<figcaption[\\s\\S]*?>[\\s\\S]*?<\\/figcaption>)/.test(item);\n            // let imgDesc = RegExp.$1;\n            if (item !== '') {\n                returnValue = returnValue.replace(item, getCenterText(getGreyText(getSmallText (item))));\n            }\n        }\n    }\n    return returnValue;\n}\n\nlet imgError = '<font color=\"grey\">图片暂时无法显示，若要查看请<a href=\"' + MY_URL + '\">访问原文</a></font>';\nfunction imgTag(context, sourceTag, imgUrl) {\n    let replaceString = sourceTag;\n    let replaceString1 = imgUrl === ''\n        ? imgError\n        : ('<a href=\"' + imgUrl + '\">'\n            + (hideImg === 1 ? '[点击查看大图]' : '图片无法加载？点我试试~')\n            + '</a><br>');\n    if(showFullImgTips) {\n        replaceString += ('<br>' + getSmallText(replaceString1));\n    }\n    if (hideImg) {\n        replaceString = replaceString1;\n    }\n    return context.replace(/<img data-v>/g, replaceString);\n}\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\n    context = context.replace(/data-src=\"\\/\\//g, 'src=\"https://');\n    let matchArray = context.match(searchValue);\n    let returnValue = context;\n    if (matchArray != null) {\n        for (let i = 0; i < matchArray.length; i++) {\n            let item = matchArray[i];\n            /(<img[\\s\\S]*?(src|data-src)=\"(.*?)\"([\\s\\S]*?)>)/.test(item);\n            let imgUrl = RegExp.$3;\n            if (imgUrl !== '') {\n                returnValue = returnValue.replace(item, replaceValue);\n                returnValue = imgTag(returnValue, item,imgUrl);\n            }\n        }\n    }\n    return returnValue;\n}\n\ntry {\n    let header = '';\n    let headerHtml = parseDomForHtml(html, '.DailyHeader&&Html');\n\n    let headerImgUrl = parseDomForHtml(headerHtml, 'img&&src');\n    let headerImg = getImgTag(headerImgUrl);\n    header += headerImg;\n    \n    let headerTitle = parseDomForHtml(headerHtml, '.DailyHeader-title&&Text');\n    header += ('<br>' + getBigText(getStrongText(headerTitle)));\n\n    items.push({\n        title: header,\n        col_type: col_type\n    });\n} catch (e) { }\n\ntry { \n    let contentHtml = parseDomForHtml(html, '.content-inner&&Html')\n        //.replace(/<img class=\"avatar\"[\\s\\S]*?\">/g, '')\n        .replace(/<div class=\"meta\"[\\s\\S]*?<\\/div>/g, '')\n        .replaceWithCallback(/(<figcaption[\\s\\S]*?>[\\s\\S]*?<\\/figcaption>)/g, \"\", imgDescTagReplacement2)\n        .replaceWithCallback(/(<img[\\s\\S]*?(src|data-src)=\"(.*?)\"([\\s\\S]*?)>)/g, \"<img data-v>\", imgTagReplacement2);\n    items.push({\n        title: contentHtml,\n        col_type: col_type\n    });\n} catch (e) { }\n\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//保存翻页位置的文件地址\nputVar2(\"mReadPosUrl\",\"hiker://files/cache/readdate@ebox001.txt\");\n\n//保存阅读历史的文件地址\nputVar2(\"mHistoryUrl\",\"hiker://files/cache/history@ebox001.txt\");\n\nif(!getVar(\"cookie@ebox001\")){\nvar res=JSON.parse(fetch(\"https://www.ebox001.com/news_at_zhihu\",{withHeaders:true}));\nvar html=res.body;\nvar cookie=JSON.stringify(res.headers);\n/(session=.*?);/.test(cookie);\nputVar2(\"cookie@ebox001\",RegExp.$1);\n       /<input id=\"csrf_token\".*?value=\"(.*?)\"/.test(html);\n  putVar2(\"csrf@ebox001\",RegExp.$1);\n      /#datepickerNews.*?attr\\('value', '(.*?)'/.test(html);\nputVar2(\"today@ebox001\",RegExp.$1);\n}","pages":"[]","icon":"http://static.daily.zhihu.com/img/new_home_v3/mobile_top_logo.png"},{"last_chapter_rule":"","title":"豆娃R","author":"(o˘◡˘o)&Reborn&道阻且右","version":24,"url":"hiker://empty/#fypage#fyclass#fysort#fyarea#fyyear","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"公告栏&规则设置","year_name":"","sort_url":"&mode=settings","year_url":"","find_rule":"js:\nconst { htmlEscape } = $.require(\"hiker://page/stringtool\");\nfunction getPageSource(pageUrl) {\n    let src = request(\"hiker://page/\" + pageUrl);\n    src = JSON.parse(src).rule;\n    // log(src)\n    return src;\n}\n// 下面的开始混淆\ntry {\n    let doubanJs = fetch(getVar(\"db_js_file\"),{});\n    eval(doubanJs);\n    let pluginValidTest = douban.trailerLazyRule\n\n    let urlSplits = MY_URL.split('#');\n    let page = parseInt(urlSplits[1]);\n    page = (page - 1) * 20;\n\n    if (MY_URL.indexOf('mode=settings') > -1) {\n        douban.settingsView();\n    } else {\n        let closeTips = htmlEscape(getPageSource('announcement'))\n        setHomeResult([\n            {\n                title: closeTips,\n                col_type: 'rich_text'\n            },\n            {\n                title: \"‘‘点我复制配置’’\",\n                col_type: \"text_center_1\",\n                url: $().lazyRule(() => {\n                        eval(request('hiker://files/rules/joker/qdb.js'))\n                        if(version >= 202110091826) {\n                            return \"copy://\" + '青豆口令￥影片详情页面配置￥豆娃 eval 版￥Zipper￥N4IgdghgtgpiBcJBiMYYC0AEMBuEA2bASTiADQgAmEALhAqAMYD2YAZgJYDmCIAsgJoD6ABQCCAJSFcAygDoKLCjhhoAvGlnyYAHTC9Bo8dJallaQ1p3CxkmQE8ADopUU7msAoppbAJxgiArguMAKQkAeQA5KVsITwBnGAAKbwBHXxgYiniNEAALFgBrGE94AHpiqLYYMu8AWk9-GAB+OoUlVBEsgEoOqWaYAG4tLFx4rx96jq03NF6g0Iio2ITk1PTMnPzCkrKICuLSGCoWHCb61pR2kC6e+oGwIZxE8eIQOIpZMA5EbwpfTzA0AAka1yBSKpRgUFsTgAxGB6AAJFjpeieazQzrXBTxeIdZQAPjQwEmBw83j8ARUwXCkWicUSMBSaQyWRBm1K5Uqo1q9ROLTanW6vVu9xGZPGxPcACsYgAxI4ONAVCgANWia1IACM+NK+KwFJ1btK5RS0Eb5colCoAORWtANNAsjZg4p6tLFXoxYrS90Uaqkei+DUQMBSaVZNDwU2y+W3KbS4xMA60bLxM0KIjAAC+HVuLCYqZiFutVtx8ZUiYoyfiVuyb1sMS2bDkMBgUgYUHdMA1KLAAAZiojQeS3Z4IAB3YpQCDpQplHC+JtgT2eX3+3xjiBSKAsEPSq0Z7O3UpoHD0NgFiZ3bAPaU5rRroMh17vNgxZUsGBjnG3bMgTOZoA' + '.js:\"hiker://home@青豆\"'                            \n                        }\n                        confirm({ \n                            title: '更新提示',\n                            content: '请先前往青豆更新依赖',\n                            confirm: 'hiker://home@青豆'\n                        })\n                        return 'hiker://empty'\n                     })\n            }\n        ]);\n    }\n} catch (e) {\n    let res = {};\n    let d = [];\n\n    let settingsCacheFile = JSON.parse(getVar('db_settings')).settingsCacheFile;\n    let settings = JSON.parse(fetch(settingsCacheFile, {}));\n\n    function getBigText(text) {\n        return '<big>' + text + '</big>';\n    }\n    function getStrongText(text) {\n        return '<strong>' + text + '</strong>';\n    }\n    function getSmallText(text) {\n        return '<small>' + text + '</small>';\n    }\n    function getColorText(text, color) {\n        return '<font color=\"' + color + '\">' + text + '</font>';\n    }\n    function getGreyText(text) {\n        return getColorText(text, 'grey');\n    }\n\n    let configHtml = `<html><head><meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0,maximum-scale=1.0,minimum-scale=1.0,user-scalable=no\"><style type=\"text/css\">.change_bar { box-shadow: 0 0 18px rgba(70, 70, 40, .255); background-color: rgba(255, 255, 255, .100); border-radius: 50px; display: table; vertical-align: middle; width: 80%; height: 40px; margin: 10px auto; margin-bottom: 30px; margin-top: 260px; margin-top: 90% } #change_input { width: 90%; height: 40px; background-color: transparent; border: none; outline: 0; font-size: 15px; color: #426ab3; padding: 0 20px; border-radius: 50px } p { display: none; text-align: center; font-size: 18px }</style></head><body><script>try { fy_bridge_app.setWebTitle(\"豆瓣设置--{{title}}\"); function getConfig() { return JSON.parse(fy_bridge_app.fetch(\"{{fileUrl}}\", {})) } function change(Config = getConfig()) { var {{itemProperty}} = document.getElementById(\"change_input\").value; Config.{{itemPropertyName}} = {{itemProperty}} == \"默认\" ? {{itemPropertyDefaultValue}} : {{itemPropertyValue}}; fy_bridge_app.writeFile(\"{{fileUrl}}\", JSON.stringify(Config, null, 4)); fy_bridge_app.putVar(\"db_settings\", JSON.stringify(Config)); document.getElementById(\"h_2\").style.textAlign = \"center\"; document.getElementById(\"text1\").style.textAlign = \"center\"; document.getElementById(\"change_bar\").style.visibility = \"hidden\"; document.getElementById(\"demo\").style.display = \"block\"; refresh() }} catch (e) { alert(e)}</script><h2 id=\"h_1\" style=\"text-align:center;\">{{title}}设置</h2><article><form onsubmit=\"return change()\" class=\"change_bar\" id=\"change_bar\"><input class=\"change\" type=\"text\" placeholder=\"请输入{{title}}\" value=\"\" id=\"change_input\" onpaste=\"setTimeout(&quot;change()&quot;,1573)\"></form><h3 id=\"h_2\">当前</h3><h4 id=\"text1\" style=\"color:red;text-align:left;\">{{itemPropertyValueText}}</h4><p id=\"demo\">{{title}}已更换，祝你好运…</p></article><script> function refresh() { document.getElementById(\"text1\").innerHTML = getConfig().{{itemPropertyName}} } refresh();</script></body></html>`\n    function replacedConfigHtml(replaceItem) {\n        return 'hiker://empty@lazyRule=.js:'\n            + JSON.stringify('javascript: document.write('\n                + JSON.stringify(configHtml.replace(/{{title}}/g, replaceItem.title)\n                    .replace(/{{fileUrl}}/g, settingsCacheFile)\n                    .replace(/{{itemProperty}}/g, replaceItem.itemProperty)\n                    .replace(/{{itemPropertyName}}/g, replaceItem.itemPropertyName)\n                    .replace(/{{itemPropertyDefaultValue}}/g, replaceItem.itemPropertyDefaultValue)\n                    .replace(/{{itemPropertyValue}}/g, replaceItem.itemPropertyValue)\n                    .replace(/{{itemPropertyValueText}}/g, replaceItem.itemPropertyValueText))\n                + ');');\n    }\n\n    let settingsMessage = {\n        jsFile: {\n            mode: -1,\n            module: 0,\n            title: '自定义豆瓣规则插件地址',\n            desc: '““””' + getColorText('当前参数：' + settings.jsFile, '#ff8a00'),\n            click: function () {\n                let replaceItem = {\n                    title: settingsMessage.jsFile.title,\n                    itemProperty: 'jsFile',\n                    itemPropertyName: 'jsFile',\n                    itemPropertyDefaultValue: '\"hiker://files/rules/js/rt-douban.js\"',\n                    itemPropertyValue: 'jsFile',\n                    itemPropertyValueText: settings.jsFile\n                };\n                return replacedConfigHtml(replaceItem);\n            }\n        }\n    }\n\n    d.push({\n        title: getStrongText(\"使用前请先导入/配置好插件地址\")\n            + \"<br>\"\n            + getSmallText(getGreyText(\"点击下方选项即可配置，刷新后生效，输入\\\"默认\\\"可恢复默认设置\")),\n        col_type: 'rich_text'\n    })\n\n    d.push({\n        col_type: 'line'\n    })\n\n    let settingMessageList = [];\n    for (let settingsMessageKey in settingsMessage) {\n        settingMessageList.push(settingsMessage[settingsMessageKey]);\n    }\n\n    function setFilterSettingsMessage(module, messageTypeTitle, messageColType) {\n        let filterSettingMessageList = settingMessageList.filter(item => ((item.mode === -1 || item.mode === settings.openSimpleDetailView) && item.module === module));\n        if (filterSettingMessageList.length > 0 && messageTypeTitle !== '') {\n            d.push({\n                title: getBigText(getStrongText(messageTypeTitle)),\n                col_type: 'rich_text'\n            })\n        }\n        for (let i = 0; i < filterSettingMessageList.length; i++) {\n            let filterSettingMessage = filterSettingMessageList[i];\n            d.push({\n                title: filterSettingMessage.title,\n                desc: filterSettingMessage.desc,\n                url: filterSettingMessage.click(),\n                col_type: messageColType\n            });\n        }\n    }\n\n    setFilterSettingsMessage(0, '', 'text_1');\n\n    res.data = d;\n    setHomeResult(res);\n}","searchFind":"js:var res = {};var d = [];\n\nlet json = JSON.parse(getResCode());\nlet html = '<body>' + json.html + '</body>';\n\nlet list=parseDomForArray(html, 'body&&li');\n\nfor(let i in list){\n\nd.push({\ntitle:parseDomForHtml(list[i],'.subject-title&&Text'),\ndesc:parseDomForHtml(list[i],'.rating&&Text'),\npic_url:parseDomForHtml(list[i],'img&&src'),\nurl:parseDomForHtml(list[i],'a&&href').replace('/movie','https://movie.douban.com')+'#'+parseDomForHtml(list[i],'.subject-title&&Text') + '#noHistory#',\ncol_type:'movie_3'\n});\n\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://m.douban.com/j/search/?q=**&t=movie&p=fypage@-1@*1@#;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64)}","titleColor":"#ff148e8e","group":"##推荐","detail_col_type":"rich_text","detail_find_rule":"js:\nlet jsFile = getVar(\"db_js_file\");\njsFile = jsFile === '' ? \"hiker://files/rules/js/rt-douban.js\" : jsFile;\nlet js = fetch(jsFile,{});\nif(js === '') js = fetch('https://gitee.com/reborn0/HikerRules/raw/master/plugins/rt-douwa.min.js',{});\n// log(js)\neval(js);\ndouban.detailView();","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"pc","preRule":"let rule = JSON.parse(request(\"hiker://page/pre-rule?rule=豆娃R\")).rule;\neval(rule)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"片单详情\",\"path\":\"detail\",\"rule\":\"js:\\n// clearItem(\\\"password\\\")\\nsetPageTitle(MY_PARAMS.title);\\nlet jsFile = getVar(\\\"db_js_file\\\");\\njsFile = jsFile === '' ? \\\"hiker://files/rules/js/rt-douban.js\\\" : jsFile;\\nlet js = fetch(jsFile,{});\\nif(js === '') js = fetch('https://gitee.com/reborn0/HikerRules/raw/master/plugins/rt-douwa.min.js',{});\\n// let js = fetch('https://gitee.com/reborn0/HikerRules/raw/master/plugins/rt-douwa.min.js',{});\\n// log(js)\\neval(js);\\ndouban.detailView(MY_PARAMS.id, MY_PARAMS.type, MY_PARAMS.title);\"},{\"col_type\":\"text_1\",\"name\":\"字符串处理工具\",\"path\":\"stringtool\",\"rule\":\"js:\\nconst matchList  = {\\n  // \\\"<\\\":\\\"&lt;\\\",\\n  // \\\">\\\": \\\"&gt;\\\",\\n  // \\\"&\\\": \\\"&amp;\\\",\\n  // '\\\"': \\\"&quot;\\\",\\n  // \\\"'\\\": \\\"acute;\\\",\\n  // \\\" \\\": \\\"&nbsp;\\\",\\n  \\\"\\\\n\\\":\\\"<br>\\\"\\n}\\n// 字符过滤器\\nfunction htmlEscape(text){\\n  let regStr = '(' + Object.keys(matchList).toString() + ')'\\n  regStr = regStr.replace(/,/g, ')|(')  \\n  const regExp = new RegExp(regStr, 'g')\\n  return text.replace(regExp, match => matchList[match])\\n}\\n$.exports.htmlEscape = htmlEscape\"},{\"col_type\":\"text_1\",\"name\":\"公告\",\"path\":\"announcement\",\"rule\":\"<big><strong>公告</strong></big>\\n由于豆娃一级的接口频繁出现封 IP 现象，故暂停豆娃一级界面的支持，搜索和二级仍然保留支持。\\n\\n各位可以去道长仓库导入小程序“青豆”自定义配置进入豆娃的片单详情页面（也就是豆娃的二级）\\n\\n以下是自定义配置的具体操作：\\n1.青豆一级界面点击最上方的大 logo 图片，进入青豆的配置界面；\\n2.找到“自定义影片详情页面”选项，点击“📥”导入配置；\\n3.在弹出的输入框处粘贴下方提供的口令，然后确定-保存即可\\n\\n<font color=\\\"red\\\">重要的事情说 3 遍：<br>不要删掉豆娃规则！不要删掉豆娃规则！不要删掉豆娃规则！</font>\\n\\n别删了之后，到时候青豆那边挂掉了跑来问我为什么用不了啊（抬起巴掌👋🏻.jpg）！~\"},{\"col_type\":\"movie_3\",\"name\":\"预处理\",\"path\":\"pre-rule\",\"rule\":\"js:\\nlet settings = {\\n    /**\\n     * 是否开启视界搜，开启后点击第一项即可使用\\n     *\\n     * 若不开启则点击为查看原文\\n     *\\n     * 开启/1 不开启/0\\n     */\\n    openHikerSearch: 1,\\n    // desc 描述的三行中每行的最大长度\\n    descLineMaxLen: 25,\\n    // 评论用户颜色\\n    userColor: \\\"#2979FF\\\",\\n    // 模块的间距\\n    line_model: 1,\\n    // 模块间距类型（适配以后可能会有的无边距线）\\n    line_type_model: 'line_blank',\\n\\n    // 评分显示类型，0 为星星★☆，1 为文字\\n    ratingType: 0,\\n    // 是否显示'[查看原文]', 0 为不显示，1 为显示\\n    showSource: 0,\\n    // 是否显示'[查看全文]', 0 为不显示，1 为显示\\n    showAllContent: 0,\\n    // 评分对应文字、星星、颜色 [ 五星力荐，四星推荐，三星还行，二星较差，一星很差]\\n    ratingTexts: [\\n        \\\"力荐\\\",\\n        \\\"推荐\\\",\\n        \\\"还行\\\",\\n        \\\"较差\\\",\\n        \\\"很差\\\",\\n    ],\\n    ratingStars: [\\n        \\\"★★★★★\\\",\\n        \\\"★★★★☆\\\",\\n        \\\"★★★☆☆\\\",\\n        \\\"★★☆☆☆\\\",\\n        \\\"★☆☆☆☆\\\",\\n    ],\\n    ratingColors: [\\n        \\\"#00d437\\\",\\n        \\\"#9cdc00\\\",\\n        \\\"#ddcf00\\\",\\n        \\\"#ffa400\\\",\\n        \\\"#ff7800\\\",\\n    ],\\n\\n    /**\\n     * 搜索模式\\n     *\\n     * 0: \\\"hiker://search?s=测试，将会打开搜索弹窗，自动填充搜索的关键词“测试”，由用户自己选择分组和规则后搜索\\\",\\n     * 1: \\\"hiker://search?s=测试&group=②影搜，将会打开搜索弹窗，自动填充搜索的关键词“测试”并且自动切换分组为“②影搜”，用户可切换分组和规则\\\",\\n     * 2: \\\"hiker://search?s=测试&rule=海阔视界，将会直接跳转搜索结果界面，自动选择标题为“海阔视界”的规则进行搜索，并且该界面不可切换别的规则\\\",\\n     * 3: \\\"hiker://search?s=测试&rule=海阔视界&simple=false，将会自动填充搜索的关键词“测试”，并且自动切换分组为“①推荐”、自动选中标题为“海阔视界”的规则，用户可切换分组和规则，并自动开始搜索\\\"\\n     */\\n    searchMode: 0,\\n    // 搜索分组\\n    searchGroup: '',\\n    // 搜索规则\\n    searchRule: '',\\n    searchValue: '',\\n    jsFile: \\\"hiker://files/rules/js/rt-douban.js\\\",\\n    settingsCacheFile: 'hiker://files/douban/settings.json',\\n    openSimpleDetailView: 0\\n}\\n\\nfunction writeObjectToFile(fileUrl, object) {\\n    writeFile(fileUrl, JSON.stringify(object))\\n}\\n\\nfunction writeSettingsToFile(settings) {\\n    writeObjectToFile(settings.settingsCacheFile, settings);\\n}\\n\\ntry {\\n    let settingsTextInFile = fetch(settings.settingsCacheFile, {});\\n    settings = JSON.parse(settingsTextInFile);\\n} catch (e) {\\n    writeSettingsToFile(settings)\\n}\\n\\n/**\\n * 以下完全不需要使用者配置，如看不懂代码请勿乱动\\n */\\nlet searchValues = [\\n    '',\\n    settings.searchGroup === '' ? '' : '&group=' + settings.searchGroup,\\n    settings.searchRule === '' ? '' : '&rule=' + settings.searchRule,\\n    settings.searchRule === '' ? '' : '&rule=' + settings.searchRule + '&simple=false'\\n];\\nsettings.searchValue = searchValues[settings.searchMode];\\nputVar2('db_js_file', settings.jsFile);\\nputVar2('db_settings', JSON.stringify(settings));\\n\\n/* hiker-utils start */\\nlet hikerUtils = \\\"https://cdn.jsdelivr.net/npm/hiker-utils@1.0.3/lib/publicTools.js\\\";\\nputVar({\\n    key: \\\"hiker-utils\\\",\\n    value: hikerUtils\\n});\\n/* hiker-utils end */\"},{\"col_type\":\"movie_3\",\"name\":\"Cookie\",\"path\":\"cookie\",\"rule\":\"var getDoubanCookie=`(function(){if(window['location']['host']=='www.douban.com'){fy_bridge_app['writeFile']('hiker://files/cache/doubancookie.txt',fy_bridge_app['getCookie']('https://www.douban.com/'));}if(window['location']['host']=='m.douban.com'){fy_bridge_app['writeFile']('hiker://files/cache/doubancookie.txt',fy_bridge_app['getCookie']('https://m.douban.com/'));}}());`\\n!fileExist('hiker://files/cache/global_getDoubanCookie.js') ? (writeFile('hiker://files/cache/global_getDoubanCookie.js', getDoubanCookie)) : 0;\\nif (!fileExist('hiker://files/rules/js/global_getDoubanCookie.js') && getVar('confirm', 'true') == 'true') {\\n    confirm({\\n        title: '插件导入提示',\\n        content: '检测到你还没有自动获取Cookie插件，是否立即导入？(点击取消重启软件前不再提示导入)',\\n        confirm: `'rule://'+base64Encode('海阔视界，网页插件￥js_url￥global_getDoubanCookie@hiker://files/cache/global_getDoubanCookie.js');`,\\n        cancel: `putVar('confirm','false');refreshPage();'hiker://empty'`\\n    })\\n}\"}]","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"虎娃X5","author":"Reborn","version":1,"url":"https://bbs.hupu.com/fyAll-fypage;get;utf-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； Win64；； x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36}","col_type":"text_1","class_name":"步行街热帖&NBA热帖","class_url":"all-gambia&all-nba","area_name":"晒晒照片&主干道&娱乐圈&股票&音乐&影视","area_url":"selfie&bxj&4856&finance&3442&ent","sort_name":"","year_name":"王者荣耀&LOL&ACG","sort_url":"","year_url":"kog&lol&acg","find_rule":"body&&.text-list-model&&.list-item;.t-title||.truetit||.red&&Text;;.t-info--a||.author||.forum&&Text+' '+.t-label&&Text;.t-info||.titlelink||.textSpan&&.truetit||a,0&&href.js: input+'#fypage#immersiveTheme#'","searchFind":"js: var json = JSON.parse(getResCode());\r\nvar res = {};\r\nvar list = json.data.list;\n//setError(list)\r\nvar items = list.map(data => ({\r\n    title: parseDomForHtml(data.title,\"Text\"),\n    desc:data.forum_name,\n    content:  \"https://bbs.hupu.com/\"+data.id+\".html\",\r\n    url: \"https://bbs.hupu.com/\"+data.id+\".html#fypage\"\r\n}));\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://m.hupu.com/api/v1/search?keyword=**","titleColor":"#ff148e8e","group":"##推荐","detail_col_type":"rich_text","detail_find_rule":"js:\nlet d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n});\nsetResult(d)","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"期刊杂志♢","author":"Joker","version":2,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener('onClose', $.toString(() => {\n    deleteFile(\"data1\");\n    deleteFile(\"data2\");\n}));\nlet d = [];\nlet now = getItem('now', '推荐期刊');\nlet arr = ['推荐期刊', '期刊大全', '报纸列表', '收藏'];\nfor (let it of arr) {\n    d.push({\n        title: now == it ? '““””' + it.fontcolor('red') : it,\n        col_type: 'scroll_button',\n        url: $('').lazyRule((it) => {\n            setItem(\"now\", it);\n            refreshPage();\n            return 'hiker://empty';\n        }, it)\n    })\n}\nd.push({\n    title: '规则设置',\n    col_type: 'scroll_button',\n    url: 'hiker://page/setting'\n});\nif (now == '期刊大全') {\n    let rescode = readFile('data1', '');\n    if (!rescode || !rescode.startsWith('{')) {\n        rescode = request('http://new-qk.lifves.com/getQikanCategory.php');\n        saveFile('data1', rescode);\n    }\n    let data = JSON.parse(rescode).qikan_category_list;\n    let nowqk = getMyVar('nowqk', data[0].name);\n    d.push({\n        col_type: 'blank_block'\n    });\n    for (let it of data) {\n        d.push({\n            title: it.name == nowqk ? '““””' + it.name.fontcolor('red') : it.name,\n            col_type: 'scroll_button',\n            url: $().lazyRule((it) => {\n                putMyVar('nowqk', it);\n                refreshPage();\n                return 'hiker://empty';\n            }, it.name)\n        })\n    }\n    let list = data.find(it => it.name == nowqk);\n    for (let it of list._child) {\n        d.push({\n            title: it.name,\n            col_type: 'text_4',\n            url: 'hiker://empty#' + it.name\n        })\n    }\n} else if (now == '推荐期刊' || now == '报纸列表') {\n    let rescode = readFile('data2', '');\n    if (!rescode || !rescode.startsWith('{')) {\n        rescode = request('http://new-qk.lifves.com/public/js/index.js');\n        saveFile('data2', rescode);\n    }\n    eval('let fun =' + rescode.split(\",'created'\")[0].split(\"'data':\")[1]);\n    let data = fun();\n    if (now == '推荐期刊') {\n        let qk_list = data.data_list.qk_list;\n        for (let it of qk_list) {\n            d.push({\n                title: it.title,\n                col_type: 'text_4',\n                url: 'hiker://empty#' + it.title\n            });\n        }\n    } else {\n        let bz_list = data.data_list.bz_list;\n        for (let it of bz_list) {\n            d.push({\n                title: it.title,\n                col_type: 'movie_3',\n                img: it.img,\n                url: 'hiker://empty#noLoading#@lazyRule=.js:\"x5://' + it.href + '\"'\n            })\n        }\n    }\n} else if (now == '收藏') {\n    let collection = JSON.parse(readFile('collection') || '{}');\n    for (let i in collection) {\n        let it = collection[i];\n        d.push({\n            title: i,\n            col_type: 'movie_3',\n            img: it.img,\n            url: 'hiker://page/qk?name=' + i + '&img=' + it.img,\n            extra: {\n                href: it.url\n            }\n        })\n    }\n}\nsetResult(d);","searchFind":"js:\nlet d = [];\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\"));\nfor (let item of data_list.data_list) {\n    d.push({\n        title: item.title,\n        url: 'hiker://page/qk?name=' + item.title + '&img=' + item.img,\n        img: item.img,\n        extra:{\n            href:\"http://new-qk.lifves.com/\" + item.href\n        }\n    });\n}\nsetResult(d);","search_url":"http://new-qk.lifves.com/search.php?keyword=**;get;utf-8;{User-Agent@MOBILE_UA}","group":"##推荐","detail_col_type":"movie_3","detail_find_rule":"js:\nlet d = [];\nif (MY_URL.startsWith('hiker://empty#')) {\n    let html = request('http://new-qk.lifves.com/search.php?keyword=' + MY_URL.split('#')[1]);\n    eval(parseDomForHtml(html, \"body&&script,2&&Html\"));\n    for (let item of data_list.data_list) {\n        d.push({\n            title: item.title,\n            url: 'hiker://page/qk?name=' + item.title + '&img=' + item.img,\n            img: item.img,\n            extra:{\n                href:\"http://new-qk.lifves.com/\" + item.href\n            }\n        });\n    }\n} else {}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"期刊分期列表\",\"path\":\"qk\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"year\\\")');\\n\\nlet d = [];\\nlet url = MY_PARAMS.href,\\n    name = getParam('name'),\\n    img = getParam('img');\\nlet collection = JSON.parse(readFile('collection') || '{}');\\nlet isCollected = !!(collection[name] && collection[name].url == url);\\nd.push({\\n    title: isCollected ? '♥已收藏' : '♡添加收藏',\\n    url: $().lazyRule((is, url, name, img) => {\\n        let collection = JSON.parse(readFile('collection') || '{}');\\n        if (is) {\\n            delete collection[name];\\n            saveFile('collection', JSON.stringify(collection));\\n            refreshPage();\\n            return 'toast://已取消收藏'\\n        } else {\\n            collection[name] = {\\n                url: url,\\n                img: img\\n            };\\n            saveFile('collection', JSON.stringify(collection));\\n            refreshPage();\\n            return 'toast://已添加收藏'\\n        }\\n    }, isCollected, url, name, img),\\n    col_type: \\\"scroll_button\\\",\\n});\\n\\neval(parseDomForHtml(request(url), \\\"body&&script,2&&Html\\\"));\\nlet items = {};\\nlet now = getVar('year', String(data_list.data_list[0].year));\\nfor (let list of data_list.data_list) {\\n    if (now == list.year) items = list.list;\\n    d.push({\\n        title: '““””' + (list.year == now ? '<font color=red>' + list.year + '</font>' : list.year),\\n        col_type: 'scroll_button',\\n        url: $().lazyRule((year) => {\\n            putVar('year', String(year));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, list.year)\\n    });\\n}\\nfor (let item of items) {\\n    d.push({\\n        title: item.span,\\n        url: 'hiker://page/qkqk#immersiveTheme#',\\n        img: item.img,\\n        extra:{\\n            href:\\\"http://new-qk.lifves.com/\\\" + item.href\\n        }\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"期刊目录\",\"path\":\"qkqk\",\"rule\":\"js:\\naddListener('onClose', $.toString(() => {\\n    clearVar('item');\\n    deleteFile('stroge');\\n}));\\nlet fullTheme = getItem('fullTheme', 'true') == 'true' ? '#fullTheme#' : '';\\nlet nowItem = getVar('item', '');\\n\\nlet url = MY_PARAMS.href;\\n\\neval(parseDomForHtml(request(url), \\\"body&&script,2&&Html\\\").match(/let\\\\s*data_list.*JSON\\\\.parse\\\\(.*\\\\)/)[0]);\\nlet d = [];\\nif (data_list.data_list.length == 0) {\\n    d.push({\\n        title: '没有内容呦,不信点我去网页看看',\\n        col_type: 'movie_1_vertical_pic_blur',\\n        url: url\\n    })\\n} else {\\n    d.push({\\n        title: data_list.data_list.intro.title,\\n        desc: data_list.data_list.intro.intro,\\n        img: data_list.data_list.intro.img,\\n        col_type: 'movie_1_vertical_pic_blur',\\n        url: url\\n    })\\n    d.push({\\n        title: '目录'.big().bold(),\\n        col_type: 'rich_text'\\n    })\\n\\n\\n    let stroge = {};\\n    for (let i in data_list.data_list.ml) {\\n        let it = data_list.data_list.ml[i];\\n        for (let item in it) {\\n            stroge[it[item].title] = \\\"http://new-qk.lifves.com/\\\" + it[item].href;\\n        }\\n    }\\n    saveFile('stroge', JSON.stringify(stroge));\\n    let star = Object.keys(stroge);\\n\\n    for (let item in data_list.data_list.ml) {\\n        d.push({\\n            title: '““””' + (nowItem == item ? '▼ ' : '▶ ') + '<strong>' + item + '</strong>',\\n            col_type: 'text_1',\\n            url: $('hiker://empty#noLoadind#').lazyRule((item) => {\\n                if (getVar('item', '') == item) {\\n                    clearVar('item');\\n                    refreshPage(false);\\n                    return 'toast://已收起 ' + item;\\n                } else {\\n                    putVar('item', item);\\n                    refreshPage(false);\\n                    return 'toast://已展开 ' + item;\\n                }\\n            }, item),\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n\\n        if (nowItem && nowItem == item) {\\n            data_list.data_list.ml[nowItem].forEach(e => {\\n                let index = star.indexOf(e.title);\\n                d.push({\\n                    title: '““””<small>' + e.title + '</small>',\\n                    desc: '““””<small>' + e.intro + '</small>',\\n                    col_type: 'text_1',\\n                    url: 'hiker://page/text' + fullTheme + '?title=' + e.title + '&index=' + index,\\n                    extra: {\\n                        href: \\\"http://new-qk.lifves.com/\\\" + e.href\\n                    }\\n                })\\n            })\\n        }\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"设置\",\"path\":\"setting\",\"rule\":\"js:\\nlet d = [];\\nlet fontsize = parseInt(getItem('fontsize', String(15)));\\nlet indent = parseInt(getItem('indent', String(7)));\\nlet indents = '';\\nfor (let i = 0; i < indent; i++) {\\n    indents += '&nbsp;';\\n}\\nlet fullTheme = getItem('fullTheme', 'true');\\nlet click = getItem('click', 'true');\\n\\nd.push({\\n    title: '全屏模式' + (fullTheme == 'true' ? '✔' : '✘'),\\n    col_type: 'text_2',\\n    url: $('hiker://empty#noLoading#').lazyRule((i) => {\\n        setItem('fullTheme', i == 'true' ? 'false' : 'true');\\n        refreshPage();\\n        return 'hiker://empty';\\n    }, fullTheme)\\n})\\nd.push({\\n    title: '点击翻页' + (click == 'true' ? '✔' : '✘'),\\n    col_type: 'text_2',\\n    url: $('hiker://empty#noLoading#').lazyRule((i) => {\\n        setItem('click', i == 'true' ? 'false' : 'true');\\n        refreshPage();\\n        return 'hiker://empty';\\n    }, click)\\n})\\n\\nd.push({\\n    title: '调整字号'.big().bold(),\\n    col_type: 'rich_text'\\n})\\nd.push({\\n    title: '字号➕',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('fontsize', String(s + 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, fontsize)\\n}, {\\n    title: '字号➖',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('fontsize', String(s - 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, fontsize)\\n})\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title: '调整缩进'.big().bold(),\\n    col_type: 'rich_text'\\n})\\nd.push({\\n    title: '缩进➕',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('indent', String(s + 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, indent)\\n}, {\\n    title: '缩进➖',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('indent', String(s - 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, indent)\\n})\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title: '预览'.big() + '(字号:' + fontsize + ',缩进:' + indent + ')',\\n    col_type: 'rich_text'\\n}, {\\n    title: '<p>小棉袄帅吗?</p><p>小棉袄怎么这么帅？</p><p>小棉袄真是超超超超超超超超级帅!!!!帅炸了好不好？举世颜无双!!!!</p>'.replace(/\\\\<p\\\\>/g, '<p>' + indents),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: fontsize\\n    }\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"文章\",\"path\":\"text\",\"rule\":\"js:\\naddListener('onClose', $.toString(() => {\\n    clearVar('texthref');\\n    clearVar('texttitle');\\n    clearVar('textindex');\\n}));\\nlet fontsize = parseInt(getItem('fontsize', String(15)));\\nlet indent = parseInt(getItem('indent', String(7)));\\nlet indents = '';\\nfor (let i = 0; i < indent; i++) {\\n    indents += '&nbsp;';\\n}\\nlet fullTheme = getItem('fullTheme', 'true') == 'true' ? '#fullTheme#' : '';\\nlet click = !!(getItem('click', 'true') == 'true');\\nlet stroge = JSON.parse(readFile('stroge'));\\nlet star = Object.keys(stroge);\\n\\nlet href = getVar('texthref', '') || MY_PARAMS.href,\\n    title = getVar('texttitle') || getParam('title'),\\n    index = parseInt(getVar('textindex') || getParam('index'));\\n\\nlet html = request(href, {});\\nlet text = parseDom(html, '.text&&Html');\\nlet author = parseDomForHtml(html, '.author&&Text');\\nlet d = [];\\nd.push({\\n    title: '““””<h2>' + title + '</h2>' + '<small><font color=grey>' + author + '</font> </small>',\\n    col_type: 'text_center_1',\\n    url: href,\\n    extra: {\\n        lineVisible: false\\n    }\\n}, {\\n    title: text.replace(/\\\\>[a-zA-Z0-9+=\\\\/]*\\\\</g, '><').replace(/\\\\<p\\\\>/g, '<p>' + indents),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: parseInt(getItem('fontsize', String(15))),\\n        click: click\\n    }\\n})\\nif (index != 0) {\\n    let title = star[index - 1];\\n    let href = stroge[title];\\n    d.push({\\n        title: '上一篇:' + title,\\n        col_type: 'text_center_1',\\n        url: $('hiker://empty#noLoading#').lazyRule((href, title, index) => {\\n            putVar('texthref', href);\\n            putVar('texttitle', title);\\n            putVar('textindex', String(index - 1));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, href, title, index), //'hiker://page/text' + fullTheme + '?title=' + title + '&index=' + (index - 1),\\n        extra: {\\n            href: href,\\n            lineVisible: false\\n        }\\n    })\\n}\\nif (index != star.index) {\\n    let title = star[index + 1];\\n    let href = stroge[title];\\n    d.push({\\n        title: '下一篇:' + title,\\n        col_type: 'text_center_1',\\n        url: $('hiker://empty#noLoading#').lazyRule((href, title, index) => {\\n            putVar('texthref', href);\\n            putVar('texttitle', title);\\n            putVar('textindex', String(index + 1));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, href, title, index), // 'hiker://page/text' + fullTheme + '?title=' + title + '&index=' + (index + 1),\\n        extra: {\\n            href: href,\\n            lineVisible: false\\n        }\\n    })\\n}\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: 'blank_block'\\n    })\\n}\\nsetResult(d);\"}]","icon":"https://www.lifves.com/favicon.ico"},{"last_chapter_rule":"","title":"白嫖者    ","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"www.bpzhe.com\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"实用在线工具箱---idcd.com  ","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"www.idcd.com\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"炫猿导航","author":"道长","version":1,"type":"all","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://xydh.fun/dieheart\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"全网资源","author":"道长&爱是用心","version":3,"type":"all","url":"hiker://empty##fyAll#pg=fypage","col_type":"movie_3_marquee","class_name":"天堂&樱花&千寻时光&影世界","class_url":"http://vipmv.cc/api.php/provide/vod&https://m3u8.apiyhzy.com/api.php/provide/vod&http://wy.dqyhg.cn/api.php/provide/vod&http://video.yingworld.vip/api.php/provide/vod","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"https://gfzycj.hnmj.vip/api.php/provide/vod?wd=**&pg=fypage&ac=videolist","group":"##文件专用","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"轻合集","author":"小棉袄🌞&永远の明日","version":101,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'filter:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('filter:')) {\n                    let filterKey = typeShow.slice(7)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n\nel.push(typeShow.startsWith('filter:') ? {\n    title: '““””' + ('全部' + (typeShow[7] ? '[' + typeShow.slice(7) + ']' : '')).bold().fontcolor('#12b668'),\n    url: $(typeShow.slice(7), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'filter:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '全部',\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'filter:')\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow.startsWith('filter:')) {\n    let filterKey = typeShow.slice(7)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n} else rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('filter:')) {\n                let filterKey = typeShow.slice(7)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files/rules/js/轻合集数据.js')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"hiker://images/icon4"},{"last_chapter_rule":"","title":"颜色代码","author":"枫林雨殇","version":0,"type":"other","url":"https://teshuzifu.cn/fyAll","col_type":"text_4","class_name":"颜色代码&特殊符号&网名符号&转换工具","class_url":"yansedaima&&wangmingnicheng&%%","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\n\nif (MY_URL.match(/%%/)) {\n    eval(JSON.parse(fetch(\"hiker://page/zhuanhuan\")).rule)\n} else if (MY_URL.match(/wangmingnicheng/)) {\n    eval(JSON.parse(fetch(\"hiker://page/ming\")).rule)\n\n} else  if(MY_URL.match(/yansedaima/)){\neval(JSON.parse(fetch(\"hiker://page/yanse\")).rule)\n\n}else{\n  eval(JSON.parse(fetch(\"hiker://page/zifu\")).rule)\n} \n    setResult(d);","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"转换工具\",\"path\":\"zhuanhuan\",\"rule\":\"var urls = 'https://base64.vip/&https://teshuzifu.cn/fanjianzhuanhuan&https://teshuzifu.cn/pinyin&https://teshuzifu.cn/huoxingwen&https://teshuzifu.cn/mosimima&https://teshuzifu.cn/yansedaima&https://teshuzifu.cn/html&https://teshuzifu.cn/ascma'.split(\\\"&\\\");\\nvar title = 'Base64转换&繁简转换&中文转拼音&火星文生成&摩斯密码&颜色代码&HTML符号&ASCII码'.split(\\\"&\\\");\\n\\nfor (var i in urls) {\\n    var k = i / 2;\\n    if (k % 1 === 0) {\\n        for (let i = 0; i < 20; i++) {\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            })\\n        }\\n    }\\n    d.push({\\n        title: title[i],\\n        url: urls[i],\\n        col_type: 'text_2'\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"网名\",\"path\":\"ming\",\"rule\":\"var html = getResCode();\\nvar arts = parseDomForArray(html, '.flex.f13&&li');\\nvar tabs = [];\\nvar urls = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n    urls.push(parseDom(arts[i], 'a&&href'))\\n}\\nvar fold=getVar(\\\"m\\\",\\\"0\\\")\\nvar title = 'ww';\\nfor (var i = 0; i < tabs.length; i++) {\\n    d.push({\\n        title: getVar(title, '0') == i ? '‘‘’’<strong><font color=\\\"#8A2BE2\\\">' + tabs[i] + '</front></strong>' : tabs[i],\\n        url: urls[i] + `@lazyRule=.js:putVar('` + title + \\\"', '\\\" + i + `');putVar('aa',input);putVar(\\\"m\\\",\\\"1\\\");refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\\n        col_type: 'flex_button'\\n    })\\n}\\nvar htm = request(getVar('aa'))\\nif(fold===\\\"0\\\"){\\nvar list=parseDomForArray(html, 'body&&.item.copy')\\n}else{\\nvar list = parseDomForArray(htm, 'body&&.item.copy')\\n}\\nfor (var j in list) {\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n    for (let i = 0; i < 8; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: parseDomForHtml(list[j], 'Text'),\\n        url: 'copy://' + parseDomForHtml(list[j], 'Text'),\\n        col_type: 'text_center_1',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n    for (let i = 0; i < 8; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"特殊字符\",\"path\":\"zifu\",\"rule\":\"var html = getResCode();\\nvar arts = parseDomForArray(html, 'body&&h1')\\n\\nvar conts = parseDomForArray(html, 'body&&.box');\\n\\nvar tabs = [];\\nvar lists = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\\n}\\nconst fold = getVar(\\\"zifu\\\", \\\"0\\\");\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&p'))\\n}\\nvar tabs = (tabs + \\\",可爱符号,Emoji表情\\\").split(\\\",\\\")\\n\\nvar tab = \\\"www\\\";\\nfor (var i = 0; i < tabs.length; i++) {\\n    d.push({\\n        title: getVar(tab, '0') == i ? '‘‘’’<strong><font color=\\\"#1E90FF\\\">' + tabs[i] + '</front></strong>' : tabs[i],\\n        url: i + `@lazyRule=.js:putVar('` + tab + \\\"', '\\\" + i + `');putVar('bb',input);putVar(\\\"zifu\\\", \\\"1\\\");refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\\n        col_type: 'flex_button'\\n    })\\n}\\n\\nif (getVar('bb') >= lists.length) {\\n    var k = getVar('bb') - lists.length;\\n    log(k)\\n    var urls = [\\\"https://teshuzifu.cn/keaifuhao\\\", \\\"https://teshuzifu.cn/emoji\\\"]\\n    var list = pdfa(request(urls[k]), '.box&&p')\\n} else if(fold===\\\"0\\\"){\\nvar list = lists[0]\\n}else{\\n    var list = lists[getVar('bb')]\\n}\\n\\n\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'Text'),\\n        url: 'copy://' + parseDomForHtml(list[j], 'Text'),\\n        col_type: 'text_4'\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"颜色代码\",\"path\":\"yanse\",\"rule\":\"var html = getResCode();\\nvar list = parseDomForArray(html, \\\"#color&&tr:not(:matches(颜色))\\\")\\nd.push({\\n    title: \\\"   英文代码   \\\",\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"flex_button\\\"\\n});\\nd.push({\\n    title: \\\"    颜色代码    \\\",\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"flex_button\\\"\\n});\\nd.push({\\n    title:  \\\"     RGB       \\\",\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"flex_button\\\"\\n});\\nfor (var i in list) {\\nvar Color=list[i].split('<td>')[3].split('<')[0];\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\n    d.push({\\n        title: list[i].split('<td>')[1].split('<')[0],\\n        url: 'copy://' + list[i].split('<td>')[1].split('<')[0],\\n        col_type: 'text_3'\\n    });\\n\\n    d.push({\\n        title:getHead(list[i].split('<td>')[2].split('<')[0]),\\n        url: 'copy://' + list[i].split('<td>')[3].split('<')[0],\\n        col_type: 'text_3'\\n    });\\n    d.push({\\n        title: list[i].split('<td>')[4].split('<')[0],\\n        url: 'copy://' + list[i].split('<td>')[4].split('<')[0],\\n        col_type: 'text_3'\\n    });\\n\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"Hanjutv","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.hanjutv.me/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"126云导航","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.126yun.cn/article?tag=3&t=1644055167\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"元素工具.js","author":"小棉袄🌞&永远の明日","version":100,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"@js:\nfunction init_duanPluin(){\n    let sel_title = ['配置选择','编辑解析','程序主页','批量删除','更新插件','使用说明','推荐游戏','视频解析','解析测试','火剧网·Q'].map((it) => {\n        if(it==='配置选择'){\n            return '🎯️‍️'+it;\n        }else if(it==='更新插件'){\n            return '🔁'+it;\n        }else if(it==='程序主页'){\n            return '🔮'+it;\n        }else if(it==='使用说明'){\n            return '♥'+it;\n        }else if(it==='推荐游戏'){\n            return '🎨'+it;\n        }else if(it==='视频解析'){\n            return '☁️'+it;\n        }else if(it==='解析测试'){\n            return '𓆣️'+it;\n        }else if(it==='火剧网·Q'){\n            return '🔥'+it;\n        }else if(it==='批量删除'){\n            return '🚨'+it;\n        }else{\n            return '🍀'+it;\n        }\n    });\n    return $(sel_title,2).select(() => {\n        function compare(name) {\n            return function (it) {\n                return it === name;\n            }\n        }\n        if(/配置选择/.test(input)){\n            return require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'),setupPages(\"设置\", 1)\n        }else if(/更新/.test(input)){\n            return $('确定更新插件吗?').confirm(()=>{\n                let base_search_js = 'hiker://files/rules/dzHouse/js/元素工具.js';\n                writeFile(base_search_js,fetch('http://hiker.nokia.press/hikerule/rulelist.json?id=3676'));\n                refreshPage(true);\n                return 'toast://已更新'\n            })\n        }else if(/程序主页/.test(input)){\n            return \"hiker://home@𝑀𝑦𝐹𝑖𝑒𝑙𝑑ᴰⁿ\"\n        }else if(/批量删除/.test(input)){\n            return \"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/plscParse.html\"\n        }else if(/使用说明/.test(input)){\n            return \"https://docs.qq.com/doc/DRENaQkRURUtmd1RQ\"\n        }else if(/推荐游戏/.test(input)){\n            return \"https://lanmeiguojiang.com/web1/youxi.html\"\n        }else if(/视频解析/.test(input)){\n            return \"hiker://home@视频解析\"\n        }else if(/解析测试/.test(input)){\n            return \"hiker://home@解析测试\"\n        }else if(/火剧网·Q/.test(input)){\n            return \"hiker://home@火剧网·Q\"\n        }else{\n              return require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'),setupPages(\"编辑\", 1)\n        }\n    })\n}","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files/rules/js/轻合集数据.js')\nputMyVar('remoteUrl', 'putMyVar('remoteUrl', 'hiker://files/rules/dzHouse/js/元素工具.js')')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"hiker://images/icon4"},{"last_chapter_rule":"","title":"站长必备！福利！影视vip解析接口汇总！不定期更新-益思俱乐","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.yisiclub.cn/1725/.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"手机知网","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \" https://wap.cnki.net/touch/web\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"热播动漫---茶杯狐","author":"套壳网页，只需要改小程序链接##后面的内容即可","version":1,"type":"other","url":"hiker://empty##http://www.925.tv","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],  \nurl: \"https://cupfox.app/list?category=%E7%83%AD%E6%92%AD%E5%8A%A8%E6%BC%AB\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"套大佬网盘模板-原函数-|-菜鸟教程","author":"道长","version":2,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.e0101.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n     js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n  \n       }\n    }\n}\n\n    }]) \n  setResult(d)","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"\n    ","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=2812&auth=89444565-f0fe-59e1-84b0-465dddc9ca67');\nsetResult(d)","pages":"[]","icon":""},{"last_chapter_rule":"","title":"80s手机电影网","author":"套壳网页，只需要改小程序链接##后面的内容即可","version":1,"type":"other","url":"hiker://empty##http://www.925.tv","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],  \nurl: \"https://www.80s.tw\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:\nrequire(config.依赖);\nzuixin()","title":"App模板√","author":"","version":1,"type":"video","url":"hiker://empty##http://221.236.18.123:665/api.php/v1.vod##video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear##fysort","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","area_url":"&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"http://www.ysdr.vip/api.php/v1.vod","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\nrequire(config.依赖);\nyiji()\n/*\n说明：\n1.目前支持v1.vod和普通app，其他类型后期可能会升级\n2.单个app操作简单，将接口api地址更换到排序替换词即可\n3.支持串联合集，排序分类用&拼接，名称和替换词一一对应即可\n4.其他都由模板自动处理\n*/","searchFind":"js:\nrequire(config.依赖);\nsousuo()","search_url":"hiker://empty##http://221.236.18.12:665/api.php/v1.vod##search?text=**&pg=fypage&page=fypage&limit=10","group":"##文件专用","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.依赖);\n\n/*自己写解析规则的话，删除此行注释\n//动态解析-需要自己写\nvar lazy = $(\"\").lazyRule(() => {\n    var url = input;    \n    if (url.search(/\\.m3u8|\\.mp4/)>-1) {\n      return SrcParseS.formatUrl(url);\n\t} else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le/)){\n\t\trequire(config.依赖);\n\t\tvar jx = \"\";//指定直链解析即可\n      return SrcParseS.官网(jx + url)\n    }else{return url}\n});\n自己写解析规则的话，删除此行注释*/\nerji()\n/*\n说明：\n1.二级页面特别支持了无错分享页面\n2.通过♥可以进入个性化设置，方便不同的使用场景\n3.默认使用app自带解析，自带解析失败后可以选择嗅探或断插解析，也可以自行写动态解析规则，将下面注释的lazy启用即可\n4.其他都由模板自动处理\n*/","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://src48597962.coding.net/p/src/d/hk/git/raw/master/srcDyTmpl.js\",\n    是否APP: 1,\n    //指定UA:\n});\n//上面的代码不要随意修改，by.帅√`人才 影视模板","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/15.svg"},{"last_chapter_rule":"","title":"奇飞新站","author":"道长&დ᭄释꧔ꦿ然℘⸙","version":1,"type":"video","url":"hiker://empty##http://mkk.gotka.top/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"##晓锋自用","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"53报刊","author":"香雅情","version":0,"type":"other","url":"http://www.53bk.com/baokan/left.aspx?bk=fyclass&cn=fyarea","col_type":"text_3","class_name":"报纸&杂志","class_url":"1&6","area_name":"国内&国外","area_url":"1&0","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#TreeView1&&td:not(:has(img)):has(a):not(:contains(大全));a&&Text;*;*;a&&href","searchFind":"","search_url":"","titleColor":"","group":"##晓锋自用","detail_col_type":"text_3","detail_find_rule":"js:\nvar res ={};\nvar d=[];\n\nvar conts=parseDom(getResCode(),'body&&Html').match(/<ul[\\s\\S]*?<\\/ul>/g);\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n  var list=conts[i].match(/<a.*?<\\/a>/g);\n\t\tfor(var j = 0; j<list.length; j++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:parseDom(list[j], \"a&&href\"),\n      col_type: list.length <= 20 ? 'text_2' : 'text_3'\n\t\t\t});\n   }\n  }\n\n//二级模板\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"子弹影视","author":"子丑寅卯","version":5,"type":"other","url":"https://www.i8k.cc/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&29&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#vod_list&&li;a&&title;a&&data-original;.score&&Text;a&&href.js:input+'#immersiveTheme#'","searchFind":".stui-pannel_bd&&li;h3&&Text;a&&href.js:input+'#immersiveTheme#';.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"https://www.zidanx.com/vodsearch/**----------fypage---.html","titleColor":"#ffff00ff","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); 顺搜(d)\r\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\r\n// 子\r\nvar des_desc = parseDom(getResCode(), 'head&&meta,-1&&content').replace(getUrl()+\"/\",\"\");\r\n// 丑\nvar des_pic = parseDomForHtml(getResCode(), 'body&&.poster&&img&&src');\r\n// 寅\r\nvar tabs = parseDom(getResCode(), 'body&&#playNumTab&&Html').match(/data-id=[\\s\\S]*?<\\/a/g);\r\n// 卯\n\r\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"playNumList[\\s\\S]*?<\\/ul/g);\r\n\r\nd.push({\r\n\ttitle: '共有' + conts.length + '条线路',\r\n desc: des_desc.split('：')[1],\r\n\tpic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic_blur'\r\n});\r\n\n\r\nfor (var i = 0; i < conts.length; i++) {\r\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\r\n\tif (list != null) {\r\n\t\td.push({\r\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\r\n\t\t\tcol_type: 'text_1'\r\n\t\t});\n\r\n\t\tfor (var j = 0; j < list.length; j++) {\r\n\t\t\td.push({\r\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\r\n\t\t\t\turl:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n   col_type: list.length >2?'text_3':'text_2'\r\n\t\t\t\t\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp4.itc.cn%2Fimages01%2F20210703%2F9bfd1d504f58440a94db34c7a75955c4.jpeg&refer=http%3A%2F%2Fp4.itc.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1636973259&t=8654411ff55a41640d9b33389d89eeb5"},{"last_chapter_rule":"","title":"𝑀𝑦𝐹𝑖𝑒𝑙𝑑ᴰⁿ","author":"断念","version":17,"type":"tool","url":"hiker://empty?class=fyAll","col_type":"text_center_1","class_name":"MyParseS&编辑文件&更新","class_url":"&editFile&Update","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nthis.d = [];\n\nfunction jxItemHead() {\n    addListener('onRefresh', $.toString(() => {\n        switch (getVar('kqjxcs', '0')) {\n            case '0':\n                putVar('kqjxcs', 1);\n                break;\n            case '1':\n                putVar('kqjxcs', 2);\n                break;\n            default:\n                putVar('kqjxcs', 0);\n                break;\n        }\n    }));\n    if (getVar('kqjxcs') == 2) {\n        d.push({\n            title: '‘‘’’<span style=\"color:#FACC2E\">解析测试',\n            url: $().lazyRule(() => {\n                var vipUrl = getVar('pluginLink');\n                if (vipUrl.substr(0, 4) == 'http') {\n                    require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\n                    return aytmParse(vipUrl);\n                } else {\n                    return 'toast://输入框未填Url或者无效Url';\n                }\n            }),\n            col_type: 'text_center_1',\n        });\n    }\n    var ruleV = getVar(\"ruleVersion\"),\n        updTips = '\\n点击“更新脚本依赖”更新’’';\n    var jxItNewV = getVar('jxItNewV', ''),\n        jxItemV = getVar('jxItemV');\n    if (MY_RULE.version < ruleV) {\n        jxItNewV = '小程序有新版本: ' + ruleV;\n        updTips = '\\n更新好小程序后点击更新脚本依赖’’';\n    }\n    var versionTips = jxItNewV == '' ? 'Version ' + jxItemV : '‘‘' + jxItNewV + updTips;\n\n    d.push({\n        title: '‘‘’’<big><big><span style=\"color:#0C0000\">MyParseS',\n        desc: versionTips,\n        url: !getVar('kqjxcs') ? 'toast://这是标题' : setupPages('设置', 1),\n        /* $([\"切换解析\", \"检测解析\", \"切换皮肤\"], 2).select(() => $().rule((k) => {\n                setResult([{\n                    title: k\n                }])\n            }, input)),*/\n        extra: {\n            newWindow: true,\n            windowId: \"MyParseS\",\n            lineVisible: false\n        },\n        col_type: 'text_center_1'\n    });\n    splitLine('line', 5);\n}\n\nfunction rulesUpdate() {\n    require(fLinks.kT + 'MyFieldUpdate.txt');\n    d.push({\n        title: '‘‘’’<small>刷新数据',\n        desc: '‘‘’’<small>页面数据为缓存数据，不定时自动更新，可手动点击更新',\n        url: $('#noLoading#').lazyRule((Url) => {\n            let nowTime = Date.now();\n            if (nowTime - getItem('isRefreshTime', '') > 600000) {\n                require(Url);\n                setItem('isRefreshTime', nowTime + '');\n                getCloudData(0);\n                refreshPage(false);\n                return getVar('getDataState');\n            } else {\n                return 'toast://间隔小于10分钟';\n            }\n        }, fLinks.jxItUrl)\n    });\n    d.push({\n        col_type: 'blank_block'\n    });\n    d.push({\n        col_type: 'line'\n    });\n    d.push({\n        title: '‘‘’’<strong>规 则</strong><br><small><span style=\"color:grey\">点击查看更新日志',\n        url: fLinks.gxrz\n    });\n    let MyRs = [];\n    let allRs = JSON.parse(fetch('hiker://home'));\n    for (let r = 0; r < allRs.length; r++) {\n        let aRs = allRs[r];\n        if (aRs.author == '断念') {\n            MyRs.push({\n                title: aRs.title,\n                version: aRs.version\n            });\n        }\n    }\n    for (let i = 0; i < Rules.length; i++) {\n        let localV = '未导入',\n            Rs = Rules[i];\n        for (let j = 0; j < MyRs.length; j++) {\n            if (MyRs[j].title == Rs.title + 'ᴰⁿ') {\n                localV = MyRs[j].version;\n            }\n        }\n        let yV = localV != Rs.version ? '‘‘' + Rs.version + '’’' : Rs.version;\n        let RsDesc = Rs.desc != undefined ? '</strong><span style=\"color:grey\"><small>(' + Rs.desc + ')' : '';\n        d.push({\n            title: '‘‘’’<strong><span style=\"color:#298A08\">' + Rs.title + RsDesc,\n            desc: '‘‘’’<small>本地版本</small><big> ' + localV + ' : ' + yV + ' </big>‘‘’’<small>云端版本</small>',\n            col_type: 'text_1',\n            url: localV == Rs.version ? 'toast://没有新版本' : $('#noLoading#').lazyRule((Url) => {\n                return parsePaste(Url);\n            }, Rs.url)\n        });\n    }\n    d.push({\n        title: '‘‘’’<strong>脚 本',\n        url: fLinks.gxrz\n    });\n    for (let s = 0; s < Script.length; s++) {\n        let St = Script[s];\n        d.push({\n            title: '‘‘’’<span style=\"color:#298A08\"><small>' + St.title + ' - ' + St.version,\n            col_type: 'text_2',\n            url: ('' + St.url).startsWith('toast') ? St.url : $(St.url + '#noLoading#').lazyRule((fLinks) => {\n                var arr = input.split('##');\n                var from = arr[0],\n                    name = arr[1];\n                var Url = name == undefined ? from : fLinks[from] + name;\n                var html = fetchCache(Url, 2);\n                if (name) {\n                    writeFile('hiker://files/cache/' + name, html);\n                }\n                return 'toast://导入成功';\n            }, fLinks)\n        });\n    }\n}\n\nfunction czGuide() {\n    return fLinks.czzy\n}\n\nfunction tofLink(Url) {\n    return 'hiker://files/libs/' + md5(Url) + '.js';\n}\n\nfunction editFile() {\n    var Lists = [{\n        title: '用户解析文件',\n        link: fLinks.parses\n    }, {\n        title: 'Parse_Dn.js',\n        link: fLinks.cjcache\n    }, {\n        title: '网页脚本代码',\n        link: fLinks.x5cache\n    }, {\n        title: '调用路由代码',\n        link: tofLink(fLinks.routeUrl)\n    }, {\n        title: '解析项主代码',\n        link: tofLink(fLinks.jxItUrl)\n    }, {\n        title: '编辑解析项代码',\n        link: tofLink(fLinks._bjUrl)\n    }];\n    for (i of Lists) {\n        d.push({\n            title: i.title,\n            url: 'editFile://' + i.link,\n            //col_type: 'text_2'\n        })\n    }\n    if (!getVar('editFilePopup')) {\n        confirm({\n            title: '温馨提示',\n            content: '此项功能不建议小白用户使用',\n            confirm: 'putVar(\"editFilePopup\",\"1\")'\n        })\n    }\n}\n\ntry {\n    require(\"https://gitea.com/AI957/Hiker/raw/m/v/Route.js\");\n    switch (getParam('class')) {\n        case \"editFile\":\n            editFile();\n            setResult(d);\n            break;\n        case \"Update\":\n            rulesUpdate();\n            setResult(d);\n        default:\n            require(fLinks.jxItUrl);\n            jxItem.lqFile();\n            Route.addLanJie(d);\n            break;\n    }\n} catch (e) {\n    d.push({\n        title: \"操作指引\",\n        url: czGuide(),\n        col_type: \"text_center_1\"\n    })\n    confirm({\n        title: '程序出错了(_ _)',\n        content: '行数: ' + e.lineNumber + '\\n详情: ' + e.message,\n        confirm: '`copy://' + e.message + '`'\n    });\n    setResult(d);\n}","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//如果出现获取不到远程资源的情况，把“//kT”的“//”去掉然后重启APP\n\nvar kT = \"https://gitea.com/AI957/Hiker/raw/branch/m/v/\",\n    kT2 = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/',\n    kT3 = 'https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/';\nkT = kT2;\nvar fLinks = {\n    kT: kT,\n    kT2: kT2,\n    kT3: kT3,\n    cjFrom: 'hiker://page/Parse_Dn.js',\n    x5From: 'hiker://page/Parse_Dn.html',\n    _bjUrl: kT + 'jxItem_bj.js',\n    jxItUrl: kT + 'jxItem.js',\n    routeUrl: 'https://gitea.com/AI957/Hiker/raw/m/v/Route.js',\n    cjcache: 'hiker://files/cache/Parse_Dn.js',\n    x5cache: 'hiker://files/cache/Parse_Dn.html',\n    plgl: 'hiker://files/cache/plglParse.html',\n    LanJie: 'hiker://files/cache/x5ParseLanJie.txt',\n    config: 'hiker://files/cache/MyParseSet.json',\n    parses: 'hiker://files/rules/DuanNian/MyParse.json',\n    czzy: 'https://docs.qq.com/doc/DVXNGVGdLREFPY3Zz',\n    gxrz: 'https://www.yuque.com/duannian-coqtb/ely8ca/gaf7op',\n    vue: 'hiker://files/cache/vue@2.5.16.js',\n    jquery: 'hiker://files/cache/jquery@2.1.4.js',\n    x5Route: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/'\n};\nlet fRoute = 'hiker://files/cache/fileLinksᴰⁿ.txt';\nif (!getVar('jxItemV') || getVar('jxItNewV', '0') !== '0') {\n    writeFile(fRoute, 'var fLinks=' + $.stringify(fLinks));\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"Parse_Dn.html\",\"path\":\"Parse_Dn.html\",\"rule\":\"<!DOCTYPE html>\\n<html>\\n<head>\\n    <meta charset=\\\"utf-8\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" />\\n    <!--\\n    <script src=\\\"https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.min.js\\\"></script>\\n    <script src=\\\"https://code.jquery.com/jquery-2.1.4.min.js\\\"></script>\\n    \\n    <script src=\\\"http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js\\\"></script>\\n    <script src=\\\"http://apps.bdimg.com/libs/vue/1.0.14/vue.js\\\"></script>\\n    -->\\n    <title>Parse_Dn</title>\\n    <style type=text/css>\\n        html, body {\\n            height: auto;\\n            overflow: hidden;\\n        }\\n        body {\\n            margin: 0 5px 0 5px;\\n            padding: 0 0px 0 0px;\\n            //background: #F9F0DA;\\n            font-weight: 0;\\n            font-family: \\\"Microsoft YaHei\\\",\\\"宋体\\\",\\\"Segoe UI\\\", \\\"Lucida Grande\\\", Helvetica, Arial,sans-serif, FreeSans, Arimo;\\n        }\\n        #div2{\\n           margin-top:35px;\\n        }\\n        /*输入框父元素*/\\n        div.box {\\n            height: 53px;\\n            line-height: 20px;\\n            position: relative;\\n        }\\n        /*输入框尺寸*/\\n        form {\\n            background: transparent;\\n            position: relative;\\n            width: 92%;\\n        }\\n        input, label, .lieb button {\\n            border: none;\\n            outline: none;\\n        }\\n        /*字体位置*/\\n        input {\\n            width: 77%;\\n            height: 32px;\\n            padding-left: 66px;\\n            padding-right: 30px;\\n        }\\n        label {\\n            text-align:center;\\n            line-height: 43px;\\n            height: 40px;\\n            width: 60px;\\n            cursor: pointer;\\n            position: absolute;\\n        }\\n        /*小框*/\\n        .bar label {\\n            background: #D06B6C;\\n            border-radius: 555 555px 555px 555;\\n            width: 60px;\\n            font-size: 13px;\\n            color: #F9F0DA;\\n            top: 0;\\n            left: 3px;\\n        }\\n        /*输入框样式*/\\n        .bar input {\\n            background: #F9F0DA;\\n            border: 3px solid #D06B6C;\\n            border-radius: 4px;\\n        }\\n        /*列表*/\\n        .lieb button {\\n            text-align:center;\\n            line-height:40px;\\n            height: 40px;\\n            width: 27px;\\n            cursor: pointer;\\n            position: absolute;\\n        }\\n        /*列表*/\\n        .lieb button{\\n            border-radius: 4px;\\n            background: #D06B6C;\\n            font-size: 13px;\\n            color: #F9F0DA;\\n            top: 0;\\n            right: 0px;\\n        }\\n        /*头像*/\\n        .round_icon{\\n            width: 40px;\\n            height: 40px;\\n            display: flex;\\n            border-radius: 50%;\\n            align-items: center;\\n            justify-content: center;\\n            overflow: hidden;\\n        }\\n\\n        .jx-ul, .cj-ul {\\n            z-index: 999;\\n            position: fixed;\\n            width: 77%;\\n           // left: 10%;\\n        }\\n        .jx-ul, .cj-ul {\\n            display: none;\\n        }\\n        .jx-ul {\\n            top: 3%;\\n        }\\n        .cj-ul {\\n            top: 30%;\\n        }\\n        li {\\n            height: 35px;\\n            border: 1px solid #01bfda;\\n            border-radius: 6px;\\n            background: rgba(0, 0, 0, 0.8);\\n            color: white;\\n            line-height: 35px;\\n            text-align: center;\\n            font-size: 16px;\\n            white-space: nowrap;\\n            overflow: hidden;\\n            text-overflow: ellipsis;\\n        }\\n        li {\\n            list-style: none;\\n        }\\n        li:hover {\\n            cursor: pointer;\\n            background: rgba(139, 131, 120, 0.9);\\n        }\\n        li[check=\\\"true\\\"] {\\n            background: rgba(139, 0, 0, 0.9);\\n        }\\n\\n    </style>\\n</head>\\n\\n<body>\\n    <div class=\\\"fung\\\">\\n        <a style=\\\"float:left;\\\">\\n            <button  style=\\\"border: none;border-radius:10px;background: #c5464a;width: 80px; font-size: 18px;color: #F9F0DA;\\\" onclick=\\\"cancel();\\\">关 闭</button>\\n        </a>\\n        <a style=\\\"float:right\\\">\\n            <button style=\\\"border: none;border-radius:10px;background: #068006;width: 80px; font-size: 18px;color: #F9F0DA;\\\"onclick=\\\"clickme('配 置 已 保 存 ！', 1000, '开');\\\">保 存</button> \\n        </a>\\n    </div>\\n    <br>\\n    <div id=\\\"div2\\\"></div>\\n    <div>\\n        <a style=\\\"float:left;margin-top:5px;\\\" onclick=\\\"openDnPage()\\\">\\n            <img src=\\\"https://s3.ax1x.com/2021/02/22/y7wb9O.jpg\\\" class=\\\"round_icon\\\"  alt=\\\"\\\">\\n        </a>\\n        <span style=\\\"line-height:60px;font-size:18px;color: grey;\\\">&nbsp;&nbsp;断&nbsp;念</span>\\n        <a style=\\\"float:right;margin-top:5px;\\\">\\n            <button  style=\\\"border: none;border-radius:10px;background: #05BFC5;width: 185px;height:40px; font-size: 18px;color: #F9F0DA;\\\" onclick=\\\"clickme('配 置 已 保 存 ！', 1000, '关');\\\">保存设置并关闭界面</button>\\n        </a>\\n    </div>\\n    <div class=\\\"zj-div\\\">\\n        <ul class=\\\"jx-ul\\\" style=\\\"height:444px;overflow-y:auto;\\\">\\n            <li class=\\\"myChoice\\\" style=\\\"z-index:9999;position: fixed;width:76.5%;color:red;\\\"></li>\\n            <li class=\\\"useless\\\"></li>\\n            <li class=\\\"xlList\\\" v-for=\\\"item in jxData\\\">{{item}}</li>\\n        </ul>\\n        <ul class=\\\"cj-ul\\\">\\n            <li style=\\\"background:grey;\\\">请选择插件</li>\\n            <li v-for=\\\"item in cjData\\\">{{item}}</li>\\n        </ul>\\n    </div>\\n</body>\\n<script>\\n    eval(fy_bridge_app.fetch(\\\"hiker://files/cache/jquery@2.1.4.js\\\"));\\n    eval(fy_bridge_app.fetch(\\\"hiker://files/cache/vue@2.5.16.js\\\"));\\n    eval(fy_bridge_app.getInternalJs());\\n    \\n    var settings = {\\n        qy: 'yun1717',\\n        yk: 'yun1717',\\n        tx: 'yun1717',\\n        mg: 'yun1717',\\n        bl: 'yun1717',\\n        oth: 'yun1717',\\n        qju: '默认',\\n        cj: 'hiker://files/cache/Parse_Dn.js'\\n    };\\n    \\n    var oldRoute = \\\"hiker://files/cache/MyParseSet.json\\\";\\n    var mySet = fy_bridge_app.fetch(oldRoute);\\n    \\n    var newRoute = \\\"hiker://files/rules/DuanNian/MyParse.json\\\";\\n    var newConfig = fy_bridge_app.fetch(newRoute);\\n    var mySelect = [];\\n    try{\\n        eval(\\\"newConfig =\\\" + newConfig + \\\";\\\");\\n        settings = newConfig.settings.qju == undefined ? settings : newConfig.settings;\\n        var ycTitle = ['defaultParse', 'maoss', 'CityIP', 'cacheM3u8', 'pcUA', 'parseLc', 'gparse', 'nparse'];\\n        for(var i = 0; i < newConfig.title.length; i++){\\n            var Titles = newConfig.title[i];\\n            if(ycTitle.includes(Titles) == false){\\n                mySelect.push(Titles);\\n            }\\n        }\\n    }catch(e){}\\n    var sfRefresh = settings.cj;\\n    function Did(id){\\n        return document.getElementById(id);\\n    }\\n    \\n    if(mySet == ''){\\n        Did(\\\"div2\\\").insertAdjacentHTML('afterBegin','\\\\\\n<h4>提示：<br>①注意插件选项，没有手动导入插件的话不用动它。如设置不当会导致规则无法使用，<br>解决办法：小程序首页点击恢复默认插件；<br>②全局设置如果选择了非默认那么全部的解析会使用这一设置，不想这样的话请填入默认；<br>③绿色保存按钮仅仅保存配置不会关闭设置页面，配置后想保存并关闭设置页面的话请点蓝色按钮；<br>④阅读完提示点关闭加载完整设置页面，如出问题无法自行解决点图片进入论坛向我反馈。<br></h4>');\\n    }\\n    \\n    var boxData = [\\n        {\\n            title: \\\"奇 奇\\\",\\n            id: \\\"qy\\\",\\n            value: settings.qy,\\n        }, {\\n            title: \\\"酷 酷\\\",\\n            id: \\\"yk\\\",\\n            value: settings.yk,\\n        }, {\\n            title: \\\"腾 腾\\\",\\n            id: \\\"tx\\\",\\n            value: settings.tx,\\n        }, {\\n            title: \\\"果 果\\\",\\n            id: \\\"mg\\\",\\n            value: settings.mg,\\n        }, {\\n            title: \\\"哩 哩\\\",\\n            id: \\\"bl\\\",\\n            value: settings.bl,\\n        }, {\\n            title: \\\"其 他\\\",\\n            id: \\\"oth\\\",\\n            value: settings.oth,\\n        }, {\\n            title: \\\"全 局\\\",\\n            id: \\\"qju\\\",\\n            value: settings.qju,\\n        }, {\\n            title: \\\"插 件\\\",\\n            id: \\\"cj\\\",\\n            value: settings.cj,\\n        }\\n    ];\\n\\n    var inputBox = \\\"\\\";\\n    for(let i = 0; i < boxData.length; i++){\\n        let b = boxData[i];\\n        inputBox += '<div class=\\\"box bar\\\">\\\\\\n            <form>\\\\\\n                <label type=\\\"submit\\\">' + b.title + '</label>\\\\\\n                <input type=\\\"text\\\" placeholder=\\\"输入解析名或者URL......\\\" value=\\\"' + b.value + '\\\" id=\\\"' + b.id + '\\\">\\\\\\n            </form>\\\\\\n            <div class=\\\"lieb\\\">\\\\\\n                <button id=\\\"' + b.id + 'Select\\\">☰</button>\\\\\\n            </div>\\\\\\n        </div>';\\n    }\\n    Did(\\\"div2\\\").insertAdjacentHTML('afterend', inputBox);\\n    Did(\\\"cj\\\").placeholder = \\\"输入插件地址......\\\";\\n    Did(\\\"qju\\\").placeholder = \\\"此项建议留空或者填默认两个字\\\";\\n    \\n    new Vue({\\n        el: \\\".zj-div\\\",\\n        data: {\\n            jxData: mySelect,\\n            cjData: [\\\"hiker://files/cache/Parse_Dn.js\\\", \\\"hiker://files/rules/dzHouse/js/srcauto.js\\\", \\\"hiker://files/rules/js/Parse-V2_Dn.js\\\"]\\n        }\\n    });\\n\\n    $(document).ready(function() {\\n        var len = $('.jx-ul').children('li').length;\\n        var len2 = $('.cj-ul').children('li').length;\\n        $('.lieb button').click(function(e) {\\n            if($('.lieb button').text().includes('━')){\\n                $('.lieb button').css('background', '');\\n                $('.lieb button').text('☰');\\n            }else{\\n                $(this).text('━');\\n                $(this).css('background', 'red');\\n            }\\n            $('li').attr('check', 'false');\\n            var inputid = \\\"#\\\" + this.id.split(\\\"Select\\\")[0];\\n            var arr = $(inputid).val().split(',');\\n            arr = arr[0] == '' ? [] : arr;\\n            $('.myChoice').text(arr);\\n            if (inputid !== '#cj' && $('.cj-ul').css('display')=='none') {\\n                $('.jx-ul').slideToggle(300);\\n                e.stopPropagation();\\n                for (let i = 1; i < len; i++) {\\n                    var jxList = $('.jx-ul li:not(.myChoice)').eq(i);\\n                    if (arr.includes(jxList.text())) {\\n                        jxList.attr('check', 'true');\\n                    }\\n                    jxList.unbind('click').click(function(e) {\\n                        e.stopPropagation();\\n                        if ($(this).attr('check') !== \\\"true\\\") {\\n                            $(this).attr('check', 'true');\\n                            arr.unshift($(this).text());\\n                            $(inputid).val(arr);\\n                            $('.myChoice').text(arr);\\n                        } else {\\n                            $(this).attr('check', 'false');\\n                            for (var a = 0; a < arr.length; a++) {\\n                                if (arr[a] == $(this).text()) {\\n                                    arr.splice(a, 1);\\n                                    $(inputid).val(arr);\\n                                    $('.myChoice').text(arr);\\n                                }\\n                            }\\n                        }\\n                    })\\n                }\\n            } else if($('.jx-ul').css('display')=='none'){\\n                $('.cj-ul').slideToggle(200);\\n                e.stopPropagation();\\n                for (let i = 0; i < len2; i++) {\\n                    var cjList = $('.cj-ul li').eq(i);\\n                    if ($(inputid).val() == cjList.text()) {\\n                        cjList.attr('check', 'true');\\n                    }\\n                    cjList.unbind('click').click(function() {\\n                        if (i !== 0) {\\n                            $(inputid).val($(this).text());\\n                            $(this).attr('check', 'true');\\n                            $(this).siblings().attr('check', 'false');\\n                        }\\n                    })\\n                }\\n            }\\n        });\\n        $(document).not($('.xlList')).click(function(e) {\\n            $('.jx-ul').slideUp();\\n            $('.cj-ul').slideUp();\\n            $('.lieb button').text('☰');\\n            $('.lieb button').css('background', '');\\n        });\\n        $(function(){\\n            $('label').mouseup(function(){\\n                let inputid = '#' + $(this).next().attr('id');\\n                oneOrDbl(inputid);\\n            });\\n            var count = 0;\\n            var timer;\\n            function oneOrDbl(inputid){\\n                count++;\\n                timer = window.setTimeout(function(){\\n                    if(count == 1){\\n                        let arr = $(inputid).val().split(',');\\n                        arr.splice(0, 1);\\n                        $(inputid).val(arr);\\n                    }else{\\n                        $(inputid).val('');\\n                    }\\n                    window.clearTimeout(timer);\\n                    count = 0;\\n                },260)\\n            }\\n        })\\n    });\\n    \\n    function Toast(msg,duration){  \\n        duration=isNaN(duration)?2000:duration;  \\n        var m = document.createElement('div');  \\n        m.innerHTML = msg;  \\n        m.style.cssText=\\\"width:45%; min-width:150px; background:#311; opacity:0.6; height:auto;min-height: 45px; color:#fff; line-height:45px; text-align:center; border-radius:10px; position:fixed; top:60%; left:26%; z-index:999999;\\\";  \\n        document.body.appendChild(m);  \\n        setTimeout(function() {  \\n            var d = 0.5;  \\n            m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';  \\n            m.style.opacity = '0';  \\n            setTimeout(function() { document.body.removeChild(m) }, d * 1000);  \\n        }, duration);  \\n    }  \\n\\n    function openDnPage(){\\n        fba.open(JSON.stringify({\\n            rule: \\\"=^_^=\\\",\\n            title: \\\"管理解析\\\",\\n            url: \\\"hiker://empty#noHistory#\\\",\\n            findRule: \\\"js:this.d=[];eval(fetch('hiker://files/cache/fileLinksᴰⁿ.txt'));require(fLinks.jxItUrl);jxItem.jxList();setResult(d)\\\"\\n        }));\\n    }\\n    function cancel(){\\n        if(mySet==''){\\n            fy_bridge_app.writeFile(oldRoute, JSON.stringify(settings, null, 4));\\n            fy_bridge_app.refreshPage(true);\\n        }else{\\n            fy_bridge_app.back(false);\\n        }\\n    }\\n    function clickme(msg,duration,title){\\n        for(let i = 0; i < boxData.length; i++){\\n            let id = boxData[i].id;\\n            settings[id] = Did(id).value;\\n        }\\n        if(settings.qju == ''){\\n            settings.qju = '默认';\\n        }\\n        try{\\n            eval('var bcConfig=' + fy_bridge_app.fetch(newRoute));\\n            Object.assign(bcConfig.settings, settings);\\n            fy_bridge_app.writeFile(newRoute, $$$.stringify(bcConfig));\\n        }catch(e){}\\n        fy_bridge_app.writeFile(oldRoute, $$$.stringify(settings));\\n            \\n        Toast(msg,duration);\\n        if(title==\\\"关\\\"){\\n            if(sfRefresh != Did(\\\"cj\\\").value){\\n                fy_bridge_app.back();\\n            }else{\\n                fy_bridge_app.back(false);\\n            }\\n        }else{\\n            fy_bridge_app.refreshPage(true);\\n        }\\n    }\\n\\n</script>   \\n</html>\"},{\"col_type\":\"movie_3\",\"name\":\"Parse_Dn.js\",\"path\":\"Parse_Dn.js\",\"rule\":\"//============免嗅调用============\\n//－－－=^_^=\\n//@断念\\n\\nvar parseRoute = 'hiker://files/rules/DuanNian/MyParse.json';\\nvar MyParseS = {};\\nvar mySet = {};\\nif (fileExist(parseRoute)) {\\n    eval('var parseFile =' + fetch(parseRoute));\\n    MyParseS = parseFile.codes;\\n    mySet = parseFile.settings;\\n}\\nvar parseTitle = [\\n    \\\"🥚\\\",\\n    \\\"yun1717\\\",\\n    \\\"PanGu\\\",\\n    \\\"FuXing\\\",\\n    \\\"https://jxx.smys8.cn/index.php?url=\\\",\\n    \\\"https://okjx.cc/?url=\\\",\\n    \\\"https://jx.m3u8.tv/jiexi/?url=\\\",\\n    \\\"https://sb.5gseo.net/?url=\\\"\\n];\\n\\n//－－－=^_^=\\n\\n//接口设置.\\n\\nvar setUrl = \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\";\\nvar set_switch = setUrl;\\nvar lazy = `require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');aytmParse(input)`;\\n\\n//var parwix = `var yurl='https://daili.mayixiongdi.cn/?url=';Referer': 'https://www.mayixiongdi.cn/ys?id=';'https://daili.mayixiongdi.cn/api.php', 'Referer':'https://daili.mayixiongdi.cn';\\n// 全民https://pcvideoaliyun.tianshangrenjian.mgtv.com.88wuma.com/?url=\\n\\n//－－－备 用－－－\\n/*\\n * 影视工场： https://ysgc.cc/\\n * 江湖: 555电影 https://www.555dy2.com/phone.html ｜ 17看 http://17kanyy.cn/ http://jhjiexi.30vr.cn/?url= ｜ http://api.maizimall.com/index.php?url=\\n * 江湖: http://www.tianshuyun.net/index.php/vod/play/id/448377/sid/1/nid/1.html\\n * 江湖2: http://98hyk.cn/index.php/vod/play/id/72841/sid/1/nid/1.html\\n * 人人迷: https://vip.susou.tv/player/?url= ｜ https://www.momdm.cc/\\n * \\n * wuigen: https://www.5igen.com/dmplayer/player/?url=\\n * 干饭(人人迷): https://jx.zui.cm/?url=\\n * https://2.66movie.top/player/?url=\\n * \\n */\\n\\n\\nvar tools = {\\n    MD5: function(data) {\\n        eval(getCryptoJS());\\n        return CryptoJS.MD5(data).toString(CryptoJS.enc.Hex);\\n    },\\n    AES: function(text, key, iv, isEncrypt) {\\n        eval(getCryptoJS());\\n        var key = CryptoJS.enc.Utf8.parse(key);\\n        var iv = CryptoJS.enc.Utf8.parse(iv);\\n        if (isEncrypt) {\\n            return CryptoJS.AES.encrypt(text, key, {\\n                iv: iv,\\n                mode: CryptoJS.mode.CBC,\\n                padding: CryptoJS.pad.Pkcs7\\n            }).toString();\\n        };\\n        return CryptoJS.AES.decrypt(text, key, {\\n            iv: iv,\\n            padding: CryptoJS.pad.Pkcs7\\n        }).toString(CryptoJS.enc.Utf8);\\n    },\\n    //ascii\\n    nextCharacter: function(asciiValue, k) {\\n        var s = asciiValue;\\n        return String.fromCharCode(s + k);\\n    },\\n    //凯撒\\n    caesarCipher: function(stringValue, k) {\\n        var newString = \\\"\\\";\\n        for (var i = 0; i < stringValue.length; i++) {\\n            newString += this.nextCharacter(stringValue[i].charCodeAt(), k);\\n        }\\n        return newString;\\n    },\\n    handleUrl: function(url, vipUrl, name) {\\n        if(url == \\\"\\\" || url == vipUrl) {\\n            log(name + \\\"解析失败\\\");\\n            return vipUrl;\\n        }\\n        if (url[0] == '/') {\\n            url = 'https:' + url;\\n        }\\n        if (url.indexOf('=http') != -1) {\\n            url = url.indexOf('&url=') > -1 ? url : 'http' + decodeURIComponent(url.split('=http')[1]);\\n        }\\n        if (vipUrl.indexOf('mgtv.com') != -1 && url.indexOf('User-Agent') == -1) {\\n            url = url + ';{User-Agent@app}';\\n        } else if (url.indexOf('.flv') != -1) {\\n            url = url + ';{User-Agent@app&&Referer@' + vipUrl + '}';\\n        }\\n        return url + '#isVideo=true#';\\n    }\\n};\\n\\nvar ParseS = {};\\nvar originalParseS = {\\n    CityIP: 'http://pv.sohu.com/cityjson',\\n    pcUA: 'User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',\\n    defaultParse: function(url) {\\n        showLoading(\\\"正在调用网页解析...\\\");\\n        return $(url).webLazy(() => {\\n            var Urls = _getUrls();\\n            var Reg1 = /\\\\.mp4|\\\\.m3u8\\\\?|.m3u8$|\\\\.flv|\\\\.avi|\\\\.rmvb/;\\n            var Reg2 = /playm3u8|.css$|.js$|.ico$|cnzz\\\\./;\\n            for (let i = 0; i < Urls.length; i++) {\\n                let isUrl = Urls[i];\\n                if (Reg1.test(isUrl) && !Reg2.test(isUrl)) {\\n                    fba.hideLoading();\\n                    return isUrl + \\\"#isVideo=true#\\\";\\n                }\\n            }\\n        });\\n    },\\n    maoss: function(jxurl, ref, key) {\\n        try {\\n            var getVideoInfo = function(text) {\\n                return tools.AES(text, key, iv);\\n            };\\n            key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;\\n            if (ref) {\\n                var html = request(jxurl, {\\n                    headers: {\\n                        'Referer': ref\\n                    }\\n                });\\n            } else {\\n                var html = request(jxurl);\\n            }\\n            if (html.indexOf('&btwaf=') != -1) {\\n                html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)\\\"/)[1], {\\n                    headers: {\\n                        'Referer': ref\\n                    }\\n                })\\n            }\\n            var iv = html.split('_token = \\\"')[1].split('\\\"')[0];\\n            eval(html.match(/var config = {[\\\\s\\\\S]*?}/)[0] + '');\\n            if (config.url.slice(0, 4) != 'http') {\\n                config.url = decodeURIComponent(tools.AES(config.url, key, iv));\\n            }\\n            return config.url;\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n    LLQ: function(jxurl) {\\n        try {\\n            var api = jxurl.split('?url=')[0] + \\\"api.php\\\";\\n            var b64id = base64Encode(jxurl.split('url=')[1]);\\n            var parseid = tools.caesarCipher(b64id, -1);\\n            var json = JSON.parse(request(api, {\\n                headers: {\\n                    'Referer': jxurl\\n                },\\n                method: 'POST',\\n                body: 'url=' + parseid\\n            }));\\n            url = (json.code == 200 ? base64Decode(tools.caesarCipher(json.url, -1)) : '');\\n            return url;\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n    PanGu: function(vipUrl, data) {\\n        /*var ref = 'https://www.pangujiexi.com/';\\n        var parse = 'https://panguapi.ntryjd.net/jiexi/?url=' + vipUrl;\\n        var api = 'https://panguapi.ntryjd.net/jiexi/api.php';\\n        */\\n        //var ref = 'https://xmystv.com/';\\n        //var parse = 'https://www.99kpw.com/pangu/index.php?url=' + tailUrl;\\n        //var api = 'https://www.99kpw.com/pangu/api.php';\\n        var parse = \\\"https://www.pangujiexi.com/pangu/?url=\\\" + vipUrl;\\n        var api = \\\"https://panguapi.ntryjd.net/pangu2021/api.php\\\";\\n        if (data) {\\n            ref = data[0];\\n            parse = data[1];\\n            api = data[2];\\n        }\\n        var Time = (Math.floor(new Date().getTime() / 1000) * 1).toString();\\n        var json = request(api, {\\n            headers: {\\n                \\\"Referer\\\": parse\\n            },\\n            body: \\\"url=\\\" + vipUrl + \\\"&referer=\\\" + base64Encode(parse) + \\\"&ref=1&time=\\\" + Time + \\\"&type=&other=\\\" + base64Encode(vipUrl) + \\\"&ios=0\\\",\\n            method: \\\"POST\\\"\\n        });\\n        var url = json[0] == \\\"{\\\" ? JSON.parse(json).url : \\\"\\\";\\n        return url;\\n    },\\n    yun1717: function(vipUrl) {\\n        var isyk = vipUrl.indexOf('youku');\\n        var ref = \\\"https://www.1717yun.com/jx/ty.php?url=\\\" + vipUrl;\\n        var parse = \\\"https://1717yun.com.zh188.net/0828/?url=\\\" + vipUrl;\\n        var api = \\\"https://1717yun.com.zh188.net/1004/..index..php\\\";\\n        return isyk == -1 ? this.PanGu(vipUrl, [ref, parse, api]) : this.PanGu(vipUrl, [ref + ',vip:', parse + ',vip:', api]);\\n    },\\n    FuXing: function(vipUrl) {\\n        try {\\n            //if(vipUrl.indexOf('v.youku')!=-1){\\n            //    vipUrl = (JSON.parse(request(vipUrl, {redirect:false, withHeaders:true})).headers.location + '').replace(/\\\\?.*/,'');\\n            //}\\n            var ref = 'https://jx.xuetuiguang.cn/jiexi/?url=' + vipUrl;\\n            var parse = ref;\\n            var api = 'https://jx.xuetuiguang.cn/jiexi/apiu_fx.php';\\n            return this.PanGu(vipUrl, [ref, parse, api]);\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n    \\\"🥚\\\": function(vipUrl) {\\n        let 作者_视界知名大佬;\\n        try {\\n            var play = JSON.parse(fetch(\\\"http://www.zruiry.com/yun/api.php\\\", {\\n                body: \\\"url=\\\" + input,\\n                method: \\\"POST\\\"\\n            })).url;\\n            if (play.startsWith(\\\"/\\\")) {\\n                return \\\"https:\\\" + play;\\n            } else {\\n                return play;\\n            }\\n        } catch (e) {\\n            return \\\"\\\";\\n        }\\n    }\\n};\\n\\nvar froms = ['duoduozy', 'rx', 'renrenmi', 'ltnb', 'xfyun'];\\nfor(let i in froms) {\\n    let name = froms[i] + \\\"(通用函数)\\\";\\n    ParseS[name] = function(Url, referer){\\n        return this.defaultParse(referer);\\n    };\\n}\\nObject.assign(ParseS, originalParseS, MyParseS);\\n//覆盖顺序，第三个覆盖第二个然后覆盖第一个\\n\\n\\nfunction aytmParse(vipUrl, parseName) {\\n    this.request = function(param0, param1, param2) {\\n        param1 = param1 == undefined ? {} : param1;\\n        if(isNaN(param1.timeout)) {\\n            param1.timeout = 3000;\\n        }\\n        param2 = MY_RULE;\\n        var retStr = method_request.invoke(javaContext, param0, param1, param2);\\n        return retStr == null ? retStr : retStr + \\\"\\\";\\n    };\\n    this.fetch = function(param0, param1, param2) {\\n        param1 = param1 == undefined ? {} : param1;\\n        param1.headers = param1.headers == undefined ? {} : param1.headers;\\n        param1.headers['User-Agent'] = PC_UA;\\n        if(isNaN(param1.timeout)) {\\n            param1.timeout = 3000;\\n        }\\n        param2 = MY_RULE;\\n        var retStr = method_fetch.invoke(javaContext, param0, param1, param2);\\n        return retStr == null ? retStr : retStr + \\\"\\\";\\n    };\\n    var host = vipUrl.match(/\\\\.(.*?)\\\\//);\\n    host = host == null ? null : host[1];\\n    var noUrl = \\\"toast://接收到的链接为: \\\";\\n    switch (mySet.qju) {\\n        case \\\"默认\\\":\\n            switch (host) {\\n                case \\\"qq.com\\\":\\n                    str = mySet.tx;\\n                    break;\\n                case \\\"iqiyi.com\\\":\\n                    str = mySet.qy;\\n                    break;\\n                case \\\"youku.com\\\":\\n                    str = mySet.yk;\\n                    break;\\n                case \\\"mgtv.com\\\":\\n                    str = mySet.mg;\\n                    break;\\n                case \\\"bilibili.com\\\":\\n                    str = mySet.bl;\\n                    break;\\n                default:\\n                    str = host == null ? noUrl : mySet.oth;\\n                    break;\\n            }\\n            break;\\n        default:\\n            str = host == null ? noUrl : mySet.qju;\\n            break;\\n    }\\n    if (parseName) {\\n        str = parseName;\\n    }\\n    let myChoice = str.split(',');\\n    let len = myChoice.length;\\n    for (let i = 0; i < len; i++) {\\n        let name = myChoice[i];\\n        if (typeof ParseS[name] == 'function') {\\n            let url = ParseS[name](vipUrl);\\n            let Reg = new RegExp(\\\"m3u8|mp4|\\\" + vipUrl + \\\"|http\\\");\\n            if (i != len - 1 && !Reg.test(url)) {\\n                log(name + '解析失败');\\n                continue;\\n            }\\n            return tools.handleUrl(url, vipUrl, name);\\n        } else if (typeof ParseS[name] == 'string') {\\n            return ParseS.defaultParse(ParseS[name] + vipUrl, tools.handleUrl, name);\\n        } else {\\n            return name.substr(0, 4) == \\\"http\\\" || host == null ? name + vipUrl : \\\"toast://\\\" + name + \\\" 不是直链也不是免嗅\\\";\\n        }\\n    }\\n};\\n\\nvar playParse = {\\n    playerS: function(jurl) {\\n        var html = request(jurl),\\n            Url = '',\\n            from = '';\\n        var code1 = html.match(/var player_[\\\\s\\\\S]*?}/);\\n        var dpUrl = pdfh(html, \\\"iframe&&data-play\\\");\\n        if (code1 != null) {\\n            eval(code1[0].replace(/player_.*?{/, 'pdata={'));\\n            Url = pdata.url;\\n            from = pdata.from;\\n        } else if (dpUrl != '') {\\n            Url = dpUrl.startsWith(\\\"http\\\") ? ddpUrl : dpUrl.slice(3);\\n        } else {\\n            code2 = html.match(/var now[\\\\s\\\\S]*?var pn[\\\\s\\\\S]*?;/);\\n            if (code2 != null) {\\n                eval(code2[0]);\\n                Url = now;\\n                from = pn;\\n            }\\n        }\\n        if (Url.substr(0, 8).match(/JT..JT../) || Url.startsWith(\\\"aHR0\\\")) {\\n            Url = base64Decode(Url);\\n        }\\n        if (Url.substr(0, 8).match(/%..%../)) {\\n            Url = unescape(Url);\\n        }\\n        if (froms.includes(from)) {\\n            var name = from + '(通用函数)';\\n            return ParseS[name](Url, jurl);\\n        }\\n        if (/html|bilibili/.test(Url)) {\\n            return aytmParse(Url);\\n        } else {\\n            return Url.startsWith('http') ? Url + '#isVideo=true#' : ParseS.defaultParse(jurl);\\n        }\\n    },\\n    player_xx: function(jurl) {\\n        return $(jurl).lazyRule(() => {\\n            eval(fetch(JSON.parse(fetch('hiker://files/cache/MyParseSet.json')).cj));\\n            return playParse.playerS(input);\\n        }) \\n    }\\n};\\n\\nfunction setParse() {\\n    this.d = [];\\n    require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\n    Route.setParse();\\n    setResult(d);\\n}\"}]","icon":"https://static01.imgkr.com/temp/238137efb61645879687a8503f34d893.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&.sort-item'\nvar 列表名 = 'body&&a'\n章节.A()","title":"动漫星球","author":"晓.module-items&&.module-item","version":0,"type":"video","url":"https://www.dmxq.me/vodshow/fyclass--fysort--fyarea----fypage---fyyear.html","col_type":"movie_3","class_name":"钛合金区&珍藏番剧&大电影&海外剧场","class_url":"1&2&4&3","area_name":"语言&国语&英语&粤语&闽南语&韩语&日语&其它","area_url":"&国语&英语&粤语&闽南语&韩语&日语&其它","sort_name":"热门&时间&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"hits&time&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更多","find_rule":"js:requireCache(config.xiao);\nvar 列表 = '.module-items&&.module-item';\nvar 标题 = 'a&&title';\nvar 描述 = '.module-item-text&&Text';\nvar 图片 = '.lazyloaded&&data-src';\nvar 链接 = 'a&&href';\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&.module-search-item'\nvar 标题 = 'a&&title'\nvar 描述 = '.video-serial&&Text'\nvar 类型 = '.video-info-items,1&&Text'\nvar 简介 = '.video-info-items,2&&Text'\nvar 图片 = 'img&&data-src'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://www.dmxq.me/vodsearch/**----------fypage---.html","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.player-wrapper&&script&&Html'));var url=unescape(base64Decode(player_aaaa.url));var fr=player_aaaa.from;requireCache(config.xiao);if(fr=='duoduozy'){x5rule('https://bo.movie06.com/xplay/?url='+url)}else if(fr=='ltnb'){var input = url;` + LT + `}else if(url.match(/qq|iqiyi|youku|mgtv|bilibili|sohu|ixigua|pptv|migu|le|1905|fun|vip|yaokan|douban|huanxi|cctv/)){var input = url;` + DN + `}else{url + '#isVideo=true#'}`;\n\nvar 线路列表 = 'body&&.module-tab-content&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\nvar 类型 = '.video-info-aux&&Text';\nvar 演员 = '.video-info-items,1&&Text';\nvar 更新 = '.video-info-items,4&&Text';\nvar 导演 = '.video-info-items,3&&Text';\nvar 图片 = '.lazyload&&data-src';\nvar 图片链接 = setUrl;\nvar 简介 = '.video-info-items,-1&&Text&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'https://gitee.com/xiao-zero/xiao/raw/master/js/xiao.js',\n})","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2022/01/14/8/110_5c02f0f438e310ef4c91dd47b6c31c85_con_130x130.png"},{"last_chapter_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));chapter();","title":"资源网采集.CMS搜","author":"香雅情&六神","version":666,"type":"video","url":"hiker://files/rules/xyq/ZYWCJ.txt","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywhm();","searchFind":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywsea();","search_url":"hiker://$$$?wd=**&pg=1&ac=list$$$fypage","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"js:\r\neval(fetch('hiker://files/rules/xyq/zywcj.js',{}));\nTWEJ();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywerj();","ua":"mobile","preRule":"function uprulefile() {\n    try {\n        var ruletxt = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/ZYW.txt', {});\n        var rulejs = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zyw.js', {});\n    } catch (e) {\n        rulejs = \"\";\n        ruletxt = \"\";\n    }\n    if (rulejs.search(/lazyRule/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/zywcj.js\", rulejs);\n        writeFile(\"hiker://files/rules/xyq/ZYWCJ.txt\", ruletxt);\n    } else {\n        setError('规则文件获取失败，可能网络有问题。')\n    };\n};\n\n//检测是否有规则与JS文件\nif (fileExist(\"hiker://files/rules/xyq/zywcj.js\") && fileExist(\"hiker://files/rules/xyq/ZYWCJ.txt\")) {\n    //执行预处理\n    var lac = fetch('hiker://files/rules/xyq/zywcj.js');\n    if (lac.search(/lazyRule/) != -1) {\n        eval(lac);\n        if (filter(base64Decode('VklQ'))) {\n            zywpre();\n        } else {\n            uprulefile();\n        };\n    } else {\n        //如果本地文件不对将尝试自修复\n        uprulefile();\n        eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n        zywpre();\n    };\n} else {\n    uprulefile();\n    //执行预处理\n    eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n    zywpre();\n};","pages":"[]","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zywcj.png"},{"last_chapter_rule":"","title":"帅助手√","author":"帅","version":7,"type":"tool","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS(\"iPY1ENU7ZcjZVq149goTareRVDpv+N7BW2WpaG5FwY/dRtVynSwTmkToloQiJXOnkuElkSSjQxbHPz+Pde7wcop7VhqOJ3dyUUzsb4S/m4VjvGG2GuWDnyzGr49FsGbjUDwS6FQ1jiuH9xeP7433mgvvNbpX/muEuGb8cE++o6NwThBuu48ljNZrLspA05LIPPlL23rW4pB3/JPl7BvqFD22rlp/0pxJh8mX7YGcL20fRyPX9qMGoDcG6FdFrSOnQJ0/eUFppWbL0YQxvcDtdPGRhMZnBNwz62CJr4xFn8E=\")","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"evalPrivateJS(\"YU3IfxkykvqTXjMRSB/8D34oOUU4GqwCQo5AxWI6XOY0qtT4EFdyb2r9LjhADsC7VhTn7e0LiwfI7Bzohp9DmLaBG/EDPh3Om9WpOthS2r/wI37PiZ8dGpNMI9LczfFJQm3pAQYj4F6X8h01aOnocpQE+MLhmZ1jhHU15lh1Q+b5WVwEpUldvMiV6Xeb/7cb7Y0eI3PMAtv7KcJgMF0bopQE+MLhmZ1jhHU15lh1Q+bZGq1JnoSodBjtzUSZlJALypbl7CLnIUVYBnRcQIcSiMowZGKJwqhPcLLdMUJbstgOB3E540bGnayT/tTTWhohiY/EFvWPiloAMVQwyZf8xhQqRXokO0EDNKRbJNMiaxM=\")","pages":"[{\"col_type\":\"movie_3\",\"name\":\"片源地址\",\"path\":\"fromUrl\",\"rule\":\"var urls = {\\n    爱奇艺:'https://www.iqiyi.com/v_1zp7qgh23kg.html',\\n    优酷:'https://v.youku.com/v_show/id_XNTIwMTI4NDg1Mg==.html',\\n    腾讯:'https://v.qq.com/x/cover/mzc002003ph5sbg.html',\\n    芒果:'https://www.mgtv.com/b/343060/10762029.html',\\n    哔哩哔哩:'https://www.bilibili.com/bangumi/play/ep381217',\\n    搜狐:'https://film.sohu.com/album/9457584.html',\\n    西瓜:'https://www.ixigua.com/6551332125654647310',\\n    PPTV:'http://v.pptv.com/show/TIndWsIomNY5tx8.html',\\n    咪咕:'https://www.miguvideo.com/mgs/website/prd/detail.html?cid=633511743',\\n    乐视:'http://www.le.com/ptv/vplay/75843059.html',\\n    1905:'https://vip.1905.com/play/875740.shtml',\\n    风行:'http://www.fun.tv/vplay/g-304143',\\n}\\n\\nvar fromlist = {};\\nvar sitelist = [];\\nfor(var key in urls){\\n  var host = urls[key].match(/\\\\.(.*?)\\\\//)[1];\\n  var from = host.split('.')[0];\\n  if(from!=\\\"\\\"&&key!=\\\"\\\"){\\n    fromlist[key] = from;\\n    fromlist[from] = key;\\n    sitelist.push(key);\\n  }\\n}\"}]","icon":""},{"last_chapter_rule":"js:\neval(fetch('hiker://files/rules/black/blackmovie.js'));\n//getUpdateInfo();","title":"黑黑影视🌚","author":"Blacker","version":0,"type":"other","url":"hiker://empty$$$fypage$$$","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/black/blackmovie.js'));\nhikerHomePage({});","searchFind":"js:\n/**\n没想到会有这么多人支持黑黑影视，作为一个刚入门海阔不久的萌新，还是有些意外和惊喜的。\n在这表达一下对为海阔贡献代码的各位大佬得感谢。\n技术上感谢小棉袄，秃头编写代码.\n免嗅部分，感谢断佬提供的插件，这边也给大家提供了自己的接口，可以自己去换免嗅。\n然后搜索框的UI用的是墙老的，然后为了方便大家能够获取，把它单独放到了我的云。墙佬还是永远的神\n在代码方面也非常感谢，断老香老对我在写代码过程中遇到的问题进行指点\n在图标样式上，感谢糖果超甜，提供的UI图标\n在代码的编写过程中也参考了众多大佬曾经写过的源，辛苦各位大佬的付出，\n还有感谢七彩人生大佬提供的服务器;\n二级搜索代码套娃自道阻且右大佬的光影，可以结合起来使用，非常舒服\n*/\neval(fetch('hiker://files/rules/black/blackmovie.js'));\nsearchmovie({});","search_url":"hiker://empty$$$**$$$fypage$$$","titleColor":"#f47983","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\neval(base64Decode('bGV0IGxvY2FsID1mZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zeW4udHh0JykgOwppZihsb2NhbD09dW5kZWZpbmVkfHxsb2NhbCE9JzAnKXsKICBsZXTCoGxvY2FsSHRtbMKgPcKgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svYmxhY2suanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRIdG1swqA9wqBmZXRjaCgnaHR0cDovLzgyLjE1Ni4yMjIuNzcvYmxhY2svYmxhY2suanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWbCoCghbG9jYWxIdG1swqB8fMKgbG9jYWxIdG1swqAhPcKgZ2l0SHRtbCnCoHsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3cml0ZUZpbGUoImhpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svYmxhY2suanMiLMKgZ2l0SHRtbCk7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxldMKgQl9wbGF5wqA9wqBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9CX3BsYXkuanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfcGxhecKgPcKgZmV0Y2goJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L2JsYWNrL0JfcGxheS5qcycpOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZsKgKCFCX3BsYXnCoHx8wqBCX3BsYXnCoCE9wqBnaXRfcGxheSnCoHsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3cml0ZUZpbGUoImhpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svQl9wbGF5LmpzIizCoGdpdF9wbGF5KTvCoArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9CgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsZXTCoGJsYWNrbW92aWXCoD3CoGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JsYWNrL2JsYWNrbW92aWUuanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfbW92aWXCoD3CoGZldGNoKCdodHRwOi8vODIuMTU2LjIyMi43Ny9ibGFjay9ibGFja21vdmllLmpzJyk7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmwqAoIWJsYWNrbW92aWXCoHx8wqBibGFja21vdmllwqAhPcKgZ2l0X21vdmllKcKgewrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9ibGFja21vdmllLmpzIizCoGdpdF9tb3ZpZSk7wqAKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQoKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqB0Y8KgPcKgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svc2VhcmNoLmh0bWwnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfdGPCoD3CoGZldGNoKCdodHRwOi8vODIuMTU2LjIyMi43Ny9ibGFjay9zZWFyY2guaHRtbCcpOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZsKgKCF0Y8KgfHzCoHRjwqAhPcKgZ2l0X3RjKcKgewrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zZWFyY2guaHRtbCIswqBnaXRfdGMpO8KgCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KCiAgIHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zeW4udHh0IiwgJzAnKTsKfQoKCnZhcsKgY29uZmlnwqA9wqBmZXRjaCgnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nKTsKaWYoY29uZmlnwqA9PcKgJyfCoHx8wqAhZmV0Y2goSlNPTi5wYXJzZShjb25maWcpLmNqKSl7CsKgwqDCoMKgdmFywqBqc1VybMKgPcKgJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvdi9DbG91ZFBhcnNlLVYyX0RuLmpzJzsKfWVsc2V7CsKgwqDCoMKgdmFywqBqc1VybMKgPcKgSlNPTi5wYXJzZShjb25maWcpLmNqOwp9CnB1dFZhcignanNVcmwnLGpzVXJsKTsKdmFywqBkYXRhwqA9wqBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9kYXRhLmpzJyk7CmlmKCFkYXRhKXsKY29uc3QgZGVmID0gewogICAgICAgIHNlYXJjaE1vZGU6IDAsCiAgICAgICAgc2VhcmNoUGFnZU51bTogMywKICAgICAgICB4NUhlaWdodDogODAsCiAgICAgICAgeXNTdHI6ICfmnoHlk4Em5b2x5pigJjE3OScsCiAgICAgICAgc2VhcmNoOiBbXSwKICAgICAgICBzZWFyY2h0eXBlOiAnaWNvbl9zbWFsbF80JwogICAgfTsKCndyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9kYXRhLmpzIiwgSlNPTi5zdHJpbmdpZnkoZGVmKSk7Cn0='));","pages":"[]","icon":"#f47983"},{"last_chapter_rule":"","title":"独播社采集","author":"爱是用心","version":0,"type":"video","url":"http://35ys.cc/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); 顺搜(d)\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://35ys.cc/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://35ys.cc/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://35ys.cc/api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/72.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"清风自用","author":"Akita","version":0,"type":"all","url":"http://47.107.165.170:8088/util/getYouDaoYun","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nvar jd = json.data;\nfor (var i = 0; i < jd.length; i++) {\n    var r = {};\n    if (jd[i].type == 1) {\n        r.col_type = 'text_2';\n        r.url = jd[i].url;\n    } else {\n        r.col_type = 'text_1';\n    }\n    r.title = jd[i].text;\n    d.push(r);\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"#ff62a6fb"},{"last_chapter_rule":"","title":"京东","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://m.jd.com/?ad_od=3&cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=ba6fb982ce824f8382e493214bab3b10_0_33a17f3877774a89991d1f289a1279cb\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"新小品网gk","author":"子丑寅卯","version":7,"type":"other","url":"https://www.newxiaopin.com/fyAll;get;gbk","col_type":"movie_2","class_name":" 最 新 &张小斐&沈腾&贾冰&黄宏&蔡明&郭冬临&潘长江&宋丹丹&赵丽蓉&陈佩斯&潘斌龙&贾玲&高秀敏&开心麻花","class_url":"new&xp/zhangxiaofei/&xp/shenteng/&xp/jiabing/&xp/huanghong/&xp/caiming/&xp/guodonglin/&xp/panchangjiang/&xp/songdandan/&xp/zhaolirong/&xp/chenpeisi/&xp/panbinlong/&xp/jialing/&xp/gaoxiumin/&xp/kaixinmahua/","area_name":"赵家班&赵本山&小沈阳&宋小宝&王小利&刘小光&小沈龙&宋晓峰&周云鹏&程野&文松&田娃&丫蛋&杨树林","area_url":"zjb/&zjb/zhaobenshan/&zjb/xiaoshenyang/&zjb/songxiaobao/&zjb/wangxiaoli/&zjb/liuxiaoguang/&zjb/xiaoshenlong/&zjb/sxf/&zjb/zyp/&zjb/chengye/&zjb/wensong/&zjb/tianwa/&zjb/yadan/&zjb/yangshulin/","sort_name":" 相 声 &马三立&冯巩&苗阜&姜昆&刘宝瑞&曹云金&何云伟&王自健&高晓攀&李伟健&巩汉林&方清平&李金斗&其他栏目&宫崎骏&孙涛&马丽&马季&二人转&青春期&四平青年&辽宁春晚小品&民间小调&八段锦&床戏&吻戏","year_name":"德云社&郭德纲&高峰&孙越&候震&岳云鹏&郭麒麟&朱云峰&张鹤伦&张文顺&张云雷&孔云龙&栾云平&闫云达","sort_url":"xs/&xs/masanli/&xs/fenggong/&xs/miaofu/&xs/jiangkun/&xs/liubaorui/&xs/caoyunjin/&xs/heyunwei/&xs/wangzijian/&xs/gaoxiaopan/&xs/liweijian/&xs/gonghanlin/&xs/fangqingping/&xs/lijindou/&qita/&movie/gongqijun/&xp/suntao/&xp/mali/&xs/maji/&erz/&weidianying/qcq/&weidianying/spqn/&chunwan/ln/&quyi/mjxd/&quyi/baduanjin/&qita/cx/&qita/wx/","year_url":"dys/&dys/guodegang/&dys/gaofeng/&dys/sunyue/&dys/houzhen/&dys/yueyunpeng/&dys/guoqilin/&dys/zhuyunfeng/&dys/zhanghelun/&dys/zhangwenshun/&dys/zhangyunlei/&dys/kongyunlong/&dys/luanyunping/&dys/yanyunda/","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar config = fetch('hiker://files/cache/MyParseSet.json');\nif(config == '' || !fetch(JSON.parse(config).cj)){\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n}else{\n    var jsUrl = JSON.parse(config).cj;\n} eval(fetch(jsUrl));\n\nd.push({       \r\ntitle:\"插件设置\",   \npic_url: 'http://tva1.sinaimg.cn/large/e0e0b157gy1gfa7er4dsmg20go09fb2h.gif',\nurl:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",    \r\n});\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.catecon&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.catename&&Text').replace(/《|》/g,''),       \r\ndesc: parseDomForHtml(list[j], 'a&&title').replace(/.*播放_/,'').replace(/<.*>/,''),       \r\npic_url: parseDom(list[j], '.lazy&&data-original'),       \r\nurl: $(parseDom(list[j],'a&&href')).lazyRule(() => {\nvar jsurl=pd(request(input),'.player&&Html').split('embed/')[1].split(\"'\")[0];var url='http://v.youku.com/v_show/id_'+jsurl+'.html';let file = \"hiker://files/rules/DuanNian/MyParse.json\";\nif (fileExist(file)) {\neval('json='+fetch(file));\nlet jsUrl = json.settings.cj;\neval(fetch(jsUrl));\nreturn aytmParse(url);\n} \n})\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\nvar config = fetch('hiker://files/cache/MyParseSet.json');\nif(config == '' || !fetch(JSON.parse(config).cj)){\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n}else{\n    var jsUrl = JSON.parse(config).cj;\n} eval(fetch(jsUrl));\n\n\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.main&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.catename&&Text'),       \r\ndesc: parseDomForHtml(list[j], 'a&&title'),       \r\npic_url: parseDom(list[j], '.lazy&&data-original'),       \r\nurl: $(parseDom(list[j],'a&&href')).lazyRule(() => {\nvar jsurl=pd(request(input),'.player&&Html').split('embed/')[1].split(\"'\")[0];var url='http://v.youku.com/v_show/id_'+jsurl+'.html';let file = \"hiker://files/rules/DuanNian/MyParse.json\";\nif (fileExist(file)) {\neval('json='+fetch(file));\nlet jsUrl = json.settings.cj;\neval(fetch(jsUrl));\nreturn aytmParse(url);\n} \n})\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.newxiaopin.com/plus/search.php?keyword=**&searchtype=titlekeyword&channeltype=0&orderby=&kwtype=0&pagesize=10&typeid=0&TotalResult=174&PageNo=fypage;get;gbk;{Referer@https://www.newxiaopin.com}","group":"##晓锋自用","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/more/3.png"},{"last_chapter_rule":"","title":"Baidu","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://m.baidu.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"田园music网","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://www.tyqyyw.com\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"田园音乐","author":"子丑寅卯&顺","version":4,"type":"other","url":"hiker://empty#http://www.tyqyyw.com/分类/page/fypage/","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n\tclearVar('fyclass_sel');\n\tclearVar('fyclass_se');\n\tclearVar('搜索');\n}))\nvar d = [];\n//------分类及替换-------//\nconst fyclass_cont = '最新音乐&轻音乐&有声音乐&有声电台&音乐心情&专辑曲目&MTV&3D音乐&伤感音乐&佛乐&八音盒&古风音乐&优美纯音乐&周杰伦&大自然音乐&小清新&庄重大气&异域风情&怀旧声音&悠扬的音乐&放松减压&新世纪&欢快愉悦&民谣&治愈系音乐&激情轻音&班得瑞&睡眠音乐&网络电台节目&胎教音乐&节奏&轻音乐MV&阳光音乐&静心音乐&魅惑电音';\nconst fyclass_list = '&qingyinyue&yuansheng&diantai&shenghuo&wusun&mtv&tag/3d&tag/shanggan&tag/%e4%bd%9b%e4%b9%90&tag/bayinhe&tag/gufeng&tag/youmei&tag/%e5%91%a8%e6%9d%b0%e4%bc%a6&tag/daziran&tag/qingxin&tag/daqi&tag/yiyufengqing&tag/huaijiu&tag/youyang&tag/fangsong&tag/newage&tag/huankuai&tag/minyao&tag/zhiyu&tag/jiqing&tag/%e7%8f%ad%e5%be%97%e7%91%9e&tag/shuimian&tag/diantai&tag/taijiao&tag/%e8%8a%82%e5%a5%8f&tag/%e8%bd%bb%e9%9f%b3%e4%b9%90mv&tag/yangguang&tag/jingxin&tag/dianyin/';\n//------传递所选中的选项-------//\nconst fyclass_sel = getVar(\"fyclass_sel\", fyclass_cont.split('&')[0]);\nconst fyclass_se = getVar(\"fyclass_se\", fyclass_list.split('&')[0]);\nconst fyclass_conts = fyclass_cont.split('&');\nconst fyclass_lists = fyclass_list.split('&');\nlet fyclass_data = [];\nfor (let i in fyclass_conts) {\n\tfyclass_data.push(fyclass_conts[i]);\n}\nvar fyclass_jsda = [];\nfor (let i in fyclass_lists) {\n\tfyclass_jsda.push(fyclass_lists[i]);\n}\n//链接替换分类\nvar urll = MY_URL.split('#')[1].replace('分类', fyclass_se);\nvar page = MY_URL.match(/page\\/(.*?)\\//)[1];\n//------分类刷新------//\nif (page ==1) {\n\tfor(let i=0;i<10;i++){d.push({col_type: \"blank_block\"})}\n\tfor (let i = 0; i < fyclass_data.length; i++) {\n\t\tlet title = fyclass_data[i] == fyclass_sel ? '““””<b><font color=#1AB16B>' + fyclass_data[i] + '</font></b>' : fyclass_data[i];\n\t\td.push({\n\t\t\ttitle: title,\n\t\t\turl: $(\"#noLoading#\").lazyRule((fyclass_data, fyclass_jsda) => {\n\t\t\t\tclearVar('搜索');\n\t\t\t\tputVar(\"fyclass_sel\", fyclass_data);\n\t\t\t\tputVar(\"fyclass_se\", fyclass_jsda);\n\t\t\t\trefreshPage(false);\n\t\t\t\treturn \"hiker://empty\"\n\t\t\t}, fyclass_data[i], fyclass_jsda[i]),\n\t\t\tcol_type: 'scroll_button'\n\t\t});\n\t}\n\td.push({\n\t\ttitle: 'FM',\n\t\turl: 'http://www.tyqyyw.com/fm/',\n\t\tcol_type: \"scroll_button\"\n\t});\n\td.push({\n\t\ttitle: 'About',\n\t\turl: 'http://www.tyqyyw.com/about/',\n\t\tcol_type: \"scroll_button\"\n\t});\n   d.push({\n\t\ttitle: '随机听音乐',\n\t\turl: 'http://www.tyqyyw.com/随机听音乐/',\n\t\tcol_type: \"icon_small_4\"\n\t});\n\td.push({\n\t\turl: \"putVar('搜索',input);refreshPage(false)\",\n\t\tcol_type: \"input\"\n\t})\n\tvar random = request('http://www.tyqyyw.com/random/').match(/\\d+/g);\n\tvar sj = 'http://www.tyqyyw.com/' + random + '/';\n\tvar tt=pdfh(request(sj), '.article_container&&h1&&Text');\n\td.push({\n\t\ttitle: '““””<font color=#48D1CC>' + \"♪\"+tt + '</font>',\n\t\tcol_type: \"flex_button\",\n\t\turl: $(sj).rule((sj) => {\n\t\t\tvar d = [];\n\t\t\td.push({\n\t\t\t\ttitle: '♪播放',\n\t\t\t\turl: pdfh(request(sj), '.context&&source&&src'),\n\t\t\t\tcol_type: \"text_center_1\"\n\t\t\t});\n\t\t\td.push({\n\t\t\t\ttitle: pdfh(request(sj), '.context--script&&Html'),\n\t\t\t\tcol_type: \"rich_text\",\n\t\t\t});\n\t\t\tsetResult(d)\n\t\t}, sj),\n\t});\n}\n//-----一级页面-------//\nvar sh = getVar(\"搜索\");\ntry {\n\tif (sh) {\n\t\turll =\"http://www.tyqyyw.com/page/\" + page + \"/?s=\" + sh;\n\t\tvar col = \"movie_1_vertical_pic_blur\"\n\t} else {\n\t\tvar col = \"movie_1_left_pic\"\n\t}\n\tvar html = request(urll);\n\tvar list = pdfa(html, '#post_container&&li');\n\tif(list.length !=\"\") {\n    \tfor (let i in list) {\n    \t\td.push({\n    \t\t\ttitle: parseDomForHtml(list[i], 'a&&title'),\n    \t\t\tdesc: pdfh(list[i], '.entry_post&&Text'),\n    \t\t\tpic_url: parseDom(list[i], 'img&&src'),\n    \t\t\turl: pd(list[i], 'a&&href') + `@rule=js: let d = [];d.push({title:'♪播放',url:pdfh(getResCode(),'.context&&source&&src'),col_type:\"text_center_1\"});d.push({title:pdfh(getResCode(),'.context--script&&Html'),col_type:\"rich_text\"});setResult(d);`,\n    \t\t\tcol_type: col\n    \t\t});\n    \t}\n\t}else{\n    \tvar tips=\"暂无更多\";\n    \tif (sh) var tips=\"以上为搜到的全部内容\";\n    \td.push({\n\t\t\ttitle: '““””<small><font color=gray>' + tips+ '</font></small>',\n\t\t\turl: \"hiker://empty\",\n\t\t\tcol_type: \"text_center_1\",\n\t\t\textra: {lineVisible: false}\n\t\t});\n\t}\n} catch (e) {}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '#post_container&&li');\r\nfor (var i in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[i], 'a&&title'),       \r\ndesc: parseDomForHtml(list[i], '.entry_post&&Text'),       \r\npic_url: parseDom(list[i], 'img&&src'),       \r\nurl: pd(list[i], 'a&&href') + `@rule=js:var d = [];d.push({title:'♪播放',url:pdfh(getResCode(),'.context&&source&&src'),col_type:\"text_center_1\"});d.push({title:pdfh(getResCode(),'.context--script&&Html'),col_type:\"rich_text\",extra:{textSize:16}});setResult(d);`,\r\n});\r\n}\r\nsetResult(d);","search_url":"http://www.tyqyyw.com/page/fypage/?s=**","group":"##晓锋自用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://img95.699pic.com/xsj/16/2s/my.jpg!/fh/300"},{"last_chapter_rule":"","title":"奇粹影视","author":"哒哒","version":0,"type":"other","url":"http://www.ikuwoo.cn/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"4K专区&电视剧&电影&综艺&动漫&海外","class_url":"27&2&1&3&4&24","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091&&');\n顺搜(d)\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-note&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-card-item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.module-card-item-title&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], ''),//【描述】\n       content: parseDomForHtml(list[j], '.module-info-item-content&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.ikuwoo.cn/index.php/vod/search.html?wd=**","group":"##锋love ","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-items-box&&span');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace(/简介：/,'').replace('收起','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gimg3.baidu.com/search/src=https%3A%2F%2Fb.bdstatic.com%2Fsearchbox%2Fmappconsole%2Fimage%2F20190515%2F1a903998-822e-401b-a6b0-b86bd07efc96.png&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=b200,200&n=0&g=0n&er=404&q=75&fmt=auto&maxorilen2heic=2000000\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2021/09/26/6/110_cf7f29cc6112519c01b8a991683d40ec_con_130x130.png"},{"last_chapter_rule":"","title":"唯e游戏","author":"轻合集生成器","version":96,"type":"news","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE + ' &nbsp ' + '典藏版'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            /*el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })*/\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        /*el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })*/\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","group":"#0️⃣轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nevalPrivateJS(\"Q3C/YyLdx8TpskTj8GXtu7rLSV3C/lUQ2W6KyS81luo3u3cTjoT7tuqet7yDjZH4mq0eN0OsguNFmIHLwXLcDK68Qb6SOxWXWzMX2UyiXlZqMG65yt6xnxFaozbDGkFyi2DDh6lEjFbpzoTMbczF9g==\")","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\n//log(\\\"start:\\\" + QING_TITLE)\\nlet dataRule = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nlet getRule = $.toString((QING_TITLE, title) => {\\n    //log(\\\"getRule:\\\" + QING_TITLE + \\\"====\\\" + title)\\n    return $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n}, QING_TITLE, RULE.title)\\nRULE = isIndex ? dataRule : Object.assign(dataRule, RULE)\\n//log(dataRule.pageList)\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList || JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\nfunction genRule() {\\n    let _a = Object.assign({}, MY_RULE);\\n    delete _a[\\\"pageList\\\"]\\n    delete _a[\\\"pages\\\"]\\n    return _a\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = genRule()\\n            MY__RULE.params = v.extra || {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule +  ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                let _a = genRule()\\n                _a.detail_find_rule = detailFindRule\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: _a,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: genRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try{\\n            remoteData = fetchCache(url, 24 * interval,{\\n                timeout:3000\\n            });\\n        }catch(e){}\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"https://lanmeiguojiang.com/tubiao/ke/3.png"},{"last_chapter_rule":"","title":"组件展示","author":"小姐姐","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = []\nvar movieStyle = {\n    'movie_3': {\n        title: 'movie_3',\n        col_type: 'movie_3',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_3_marquee': {\n        title: 'movie_3_marquee',\n        col_type: 'movie_3_marquee',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_2': {\n        title: 'movie_2',\n        col_type: 'movie_2',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_1': {\n        title: 'movie_1',\n        col_type: 'movie_1',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_1_left_pic': {\n        title: 'movie_1_left_pic',\n        col_type: 'movie_1_left_pic',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_1_vertical_pic': {\n        title: 'movie_1_vertical_pic',\n        col_type: 'movie_1_vertical_pic',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'movie_1_vertical_pic_blur': {\n        title: 'movie_1_vertical_pic_blur',\n        col_type: 'movie_1_vertical_pic_blur',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n}\nfor (let i in movieStyle) {\n    let tmp = movieStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar textStyle = {\n    'text_1': {\n        title: 'text_1',\n        col_type: 'text_1',\n        desc: 'desc，text_1自带下划线'\n    },\n    'text_center_1': {\n        title: 'text_center_1',\n        col_type: 'text_center_1',\n        desc: 'desc，text_center_1自带下划线'\n    },\n    'text_2': {\n        title: 'text_2',\n        col_type: 'text_2',\n        desc: 'desc'\n    },\n    'text_3': {\n        title: 'text_3',\n        col_type: 'text_3',\n        desc: 'desc'\n    },\n    'text_4': {\n        title: 'text_4',\n        col_type: 'text_4',\n        desc: 'desc'\n    },\n    'long_text': {\n        title: 'long_text',\n        col_type: 'long_text',\n        desc: 'desc'\n    },\n    'rich_text': {\n        title: 'rich_text',\n        col_type: 'rich_text',\n        desc: 'desc'\n    },\n}\nfor (let i in textStyle) {\n    let tmp = textStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar picStyle = {\n    'pic_3': {\n        col_type: 'pic_3',\n        img: 'hiker://images/home_pic1'\n    },\n    'pic_3_square': {\n        col_type: 'pic_3_square',\n        img: 'hiker://images/home_pic1'\n    },\n    'pic_2': {\n        title: 'pic_2',\n        col_type: 'pic_2',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'pic_1': {\n        title: 'pic_1',\n        col_type: 'pic_1',\n        img: 'hiker://images/home_pic1',\n        desc: 'desc'\n    },\n    'pic_1_full': {\n        col_type: 'pic_1_full',\n        img: 'hiker://images/home_pic1'\n    },\n}\nfor (let i in picStyle) {\n    let tmp = picStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar iconStyle = {\n    'icon_4': {\n        title: 'icon_4',\n        col_type: 'icon_4',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_4_card': {\n        title: 'icon_4_card',\n        col_type: 'icon_4_card',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_small_4': {\n        title: 'icon_small_4',\n        col_type: 'icon_small_4',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_small_3': {\n        title: 'icon_small_3',\n        col_type: 'icon_small_3',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_round_4': {\n        title: 'icon_round_4',\n        col_type: 'icon_round_4',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_round_small_4': {\n        title: 'icon_round_small_4',\n        col_type: 'icon_round_small_4',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_2': {\n        title: 'icon_2',\n        col_type: 'icon_2',\n        img: 'hiker://images/home_pic1',\n    },\n    'icon_2_round': {\n        title: 'icon_2_round',\n        col_type: 'icon_2_round',\n        img: 'hiker://images/home_pic1',\n    },\n    'avatar': {\n        title: 'avatar',\n        col_type: 'avatar',\n        img: 'hiker://images/home_pic1',\n    },\n}\nfor (let i in iconStyle) {\n    let tmp = iconStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar buttonStyle = {\n    'flex_button': {\n        title: 'flex_button',\n        col_type: 'flex_button',\n    },\n    'scroll_button': {\n        title: 'scroll_button',\n        col_type: 'scroll_button',\n    }\n}\nfor (let i in buttonStyle) {\n    let tmp = buttonStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar cardStyle = {\n    'card_pic_2': {\n        title: 'card_pic_2',\n        col_type: 'card_pic_2',\n        img: 'hiker://images/home_pic1'\n    },\n    'card_pic_1': {\n        title: 'card_pic_1',\n        col_type: 'card_pic_1',\n        img: 'hiker://images/home_pic1'\n    },\n    'card_pic_2_2_left': {\n        title: 'card_pic_2_2_left',\n        col_type: 'card_pic_2_2_left',\n        img: 'hiker://images/home_pic1'\n    },\n    'card_pic_2_2_left_copy': {\n        title: 'card_pic_2_2_left',\n        col_type: 'card_pic_2_2_left',\n        img: 'hiker://images/home_pic1'\n    },\n    'card_pic_2_2': {\n        title: 'card_pic_2_2',\n        col_type: 'card_pic_2_2',\n        img: 'hiker://images/home_pic1'\n    },\n    'card_pic_2_2_copy': {\n        title: 'card_pic_2_2',\n        col_type: 'card_pic_2_2',\n        img: 'hiker://images/home_pic1'\n    }\n}\nfor (let i in cardStyle) {\n    let tmp = cardStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\n\nvar miscStyle = {\n    'line': {\n        col_type: 'line'\n    },\n    'line_blank': {\n        col_type: 'line_blank'\n    },\n    'blank_block': {\n        col_type: 'blank_block'\n    },\n    'input': {\n        col_type: 'input',\n        title: 'input'\n    },\n    'icon_1_search': {\n        col_type: 'icon_1_search',\n        title: 'icon_1_search'\n    },\n}\n\nfor (let i in miscStyle) {\n    let tmp = miscStyle[i]\n    tmp.url = $('hiker://empty').lazyRule(tips => {\n        copy(tips)\n        return 'confirm://' + tips + '.js:\\'hiker://empty\\''\n    }, JSON.stringify(tmp, null, 4))\n    res.push(tmp)\n}\nsetResult(res)","searchFind":"","search_url":"","titleColor":"","group":"#⃣️0小姐姐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"爱迪TV","author":"@芜恙;高清;采集","version":0,"type":"other","url":"https://aidi.tv/show/fyclass--fysort------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&剧集&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&传记&||&国产剧&港台剧&韩剧&美剧&日剧&英剧","class_url":"dianying&lianxuju&dongman&zongyi&&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&zhuanji&&guochanju&gangtaiju&hanju&meiju&riju&yingju","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        pic_url: parseDom(list[j], 'a&&data-original'),\n        desc: parseDomForHtml(list[j], '.pic_text&&Text'),\n        url: parseDom(list[j], 'a&&href')\n    })\n}\nsetResult(d);","searchFind":".vodlist&&li;h4&&Text;a&&href;.pic_text&&Text;.searchlist_titbox--h4&&Text;a&&data-original","search_url":"https://aidi.tv/vsearch/-------------.html?wd=**","group":"#⃣️Q","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar title = parseDomForHtml(html, 'body&&h2&&Text');\nd.push({\n    title: '视界',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100283/4321985.jpg',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    col_type: 'icon_small_3',\n});\nd.push({\n    title: '豆瓣',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100287/4322096.jpg',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    col_type: 'icon_small_3',\n});\nd.push({\n    title: '五号站',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20200831/90128/3898775.jpg',\n    url: 'http://so.baike567.com/s/o?s=' + title + `@rule=js:var d=[];var html=getResCode();d.push({title:parseDom(html,'.s-box&&Html'),col_type: 'rich_text'});setResult(d);`,\n    col_type: 'icon_small_3',\n});\nd.push({\n    col_type: 'line_blank'\n});\nvar tabs = parseDomForArray(html, '.play_source_tab&&a');\nvar conts = parseDomForArray(html, 'body&&#playlistbox');\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: parseDomForHtml(html, 'body &&.context&&span&&Text').replace(/　/g, ''),\n    pic_url: parseDom(html, 'body&&.lazyload&&data-original'),\n    url: MY_URL + `@rule=js:let d=[];let html=getResCode();let otherInfo=parseDomForArray(html,'.content_detail,1&&li');for(let i=0;i<otherInfo.length-1;i++){if(i==0){let setInfo=parseDomForHtml(otherInfo[i],'li&&Text').match(/(又名：.*)(年份：.*)(地区：.*)(类型：.*)/);for(let j=1;j<setInfo.length;j++){d.push({title:setInfo[j],col_type:'long_text'})}}else{d.push({title:parseDomForHtml(otherInfo[i],'li&&Text'),col_type:'long_text'})}}d.push({title:'简介：'+parseDomForHtml(html,'.context&&span&&Text').replace(/　/g, ''),col_type:'long_text'});setResult(d);`,\n    col_type: 'movie_1_vertical_pic'\n});\nfor (var i in conts) {\n    d.push({\n        title: parseDomForHtml(tabs[i], 'a&&alt'),\n        col_type: 'long_text'\n    });\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'),\n            url: parseDom(list[j], 'a&&href') + `@lazyRule=.js:var url=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;url.indexOf('http')==-1?request('https://aidi.tv/addons/dplayer/?url='+url,{}).match(/vodurl = '(.*?)'/)[1]:url+'#isVideo=true#'`,\n            col_type: list.length > 2 ? 'text_3': 'text_2'\n        })\n    }\n};\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"没名","author":"小姐姐","version":3,"type":"all","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(getVar('xjj_index'))","searchFind":"js:\neval(getVar('xjj_search_module'))","search_url":"hiker://empty##**##fypage","titleColor":"","group":"#⃣️小姐姐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//putVar('xjj_domin', 'http://192.168.2.248:8080')\nputVar('xjj_domin', 'http://f11st.gitee.io/hiker/p')\nif(getVar('xjj_index')=='') putVar('xjj_index', request(getVar('xjj_domin')+'/file/index.js'))\nif(getVar('xjj_search_module')=='') putVar('xjj_search_module', request(getVar('xjj_domin')+'/file/module/search.js'))","pages":"[{\"col_type\":\"movie_3\",\"name\":\"router\",\"path\":\"router.html\",\"rule\":\"js:\\nconst domin_ = getVar('xjj_domin')\\nconst page_path_ = domin_ + '/file/page/'\\n\\nvar page = MY_PARAMS.route\\nvar page_cache = 'xjj_' + page + '_page'\\nvar page_res = getVar(page_cache)\\nif (page_res == '') {\\n    page_res = request(page_path_ + page)\\n    putVar(page_cache, page_res)\\n}\\neval(page_res)\\n\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"在线游戏","author":"情້໌ᮨ","version":0,"type":"news","url":"hiker://empty#fyAll","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res={};\nvar d=[];\nd.push({\r\n    title:\"““””<b>\"+'<span style=\"color: #1aad19\">'+'返回主页'+'</span></b>',\n    url: 'hiker://home@我的主页',\r\n    col_type: 'text_center_1'\r\n});\nd.push({\n    url: 'hiker://search',\n    desc: '搜你想要的...',\n    title: '请输入关键词搜索',\n    col_type: 'icon_1_search'\n});\nd.push({\n    title: \"\",\n    url: \"https://chvin.github.io/react-tetris/\",\ndesc: '0',\n  col_type: 'card_pic_1',\npic_url: \"https://i01piccdn.sogoucdn.com/f92c8bbfcaba00af\"\n});\nd.push({\n    title: \"\",\n    url: \"http://www.minesweeper.cn/\",\n  col_type: 'card_pic_2_2_left',\npic_url: \"http://is4.mzstatic.com/image/thumb/Purple/v4/1e/86/64/1e86646d-9644-f1fe-dd1c-3017f3477ddd/source/512x512bb.jpg\"\n});\nd.push({\n  title: \"\",\n  desc: '', url: 'http://www.2048123.com/', \n      col_type: \"card_pic_2_2\", \n       pic_url: \"https://i03piccdn.sogoucdn.com/20224f3f43c53356\"\n});\nd.push({\n  title: \"\",\n  desc: '', url: 'https://lichess.org/',                        col_type: \"card_pic_2_2\", \n    pic_url: \"https://images.prismic.io/lichess/006a1541-1845-4e44-b75c-626d10aadb69_ukraine-g3b739975a_1920.png?auto=compress,format&rect=0,38,1920,1200&w=400&h=250\"\n});\nd.push({\n    title: \"\",\n    url: \"http://liferestart.syaro.io/public/index.html\",\ndesc: '0',\n  col_type: 'card_pic_2_2_left',\npic_url: \"http://liferestart.syaro.io/favicon.ico\"\n});\nd.push({\n    title: \"\",\n    url: \"https://poki.cn/\",\ndesc: '0',\n  col_type: 'card_pic_2_2_left',\npic_url: \"http://image.yxdwj.com/attachment/soft/2021/0707/090342_10321141.png\"\n});\nd.push({\n    title: \"\",\n    url: \"https://huazhechen.gitee.io/cuber/\",\ndesc: '0',\n  col_type: 'card_pic_2',\npic_url: \"http://img.zcool.cn/community/012c035543c61d0000019ae9ca207b.jpg@1280w_1l_2o_100sh.png\"\n});\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"#⃣️游戏应用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"https://img03.sogoucdn.com/v2/thumb/crop/xy/ai/x/0/y/0/w/300/h/300/iw/30/ih/30/t/0/ir/3/retype_exclude_gif/ext/auto/q/80?t=2&appid=200965&url=https%3A%2F%2Fpic.baike.soso.com%2Fugc%2Fbaikepic2%2F1802%2F20200529164017-1701261302_jpeg_400_400_17081.jpg%2F0&referer=http%3A%2F%2Fbaike.sogou.com%2Fm%2FfullLemma%3Flid%3D107119%26fromTitle%3D%25E6%25B8%25B8%25E6%2588%258F&sign=2d0dd519ff216a34c33037ac9dd6d480"},{"last_chapter_rule":"","title":"合成大西瓜🄴","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://flash.7k7k.com/cms/cms10/20210206/1135228587/mainxi/index.htm\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"#⃣️游戏应用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"龟龟·Q","author":"发粪涂墙&Exigua","version":2,"type":"video","url":"hiker://empty##https://www.wuguiyy.com/show/dianying--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body--li&&li:has(a):not(:matches(专题|首页))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/type\\/(.*?)\\//, 'show/'+ '$1-----------/').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.stui-vodlist&&li')\n\nfor (var i in list) {\n    d.push({\n        title: pdfh(list[i], 'h4&&Text'),\n        desc: pdfh(list[i], '.pic-text&&Text'),\n        img: pd(list[i], 'a&&data-original')+'@Referer=',\n        url: pd(list[i], 'a&&href')+'#immersiveTheme#'\n    })\n}\nsetResult(d)","searchFind":"js:\nvar html = getResCode();\nif (getResCode().indexOf('检测中') != -1) {\n    html = request(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\\\"/)[1], {});\n}\nd = JSON.parse(html).list.map(\n    data => ({\n        title: data.name,\n        url: MY_HOME+'/detail/' + data.id + '/#immersiveTheme#',\n        img: data.pic\n    })\n)\nsetResult(d)","search_url":"/index.php/ajax/suggest?mid=fypage&wd=**&limit=10","group":"#完成","detail_col_type":"text_3","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n//221029修复哎呦疼线路\n    var url = html.url\nif (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\nreturn 'video://'+input\n}}\n)\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3cuUP.png"},{"title":"壹句Ⓜ︎","author":"墨非白","version":2,"url":"hiker://js#墨非白","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nfunction getdate(i) {\n  let date = new Date();\n  if(i == 1){\n\t  date.setTime(date.getTime()-24*60*60*1000)\n  }\n    const year = date.getFullYear();\n    let month = date.getMonth() + 1;\n    let day = date.getDate();\n    if (month < 10) {\n        month = \"0\" + month;\n    }\n    if (day < 10) {\n        day = \"0\" + day;\n    }\n    return (year + \"-\" + month + \"-\" + day)\n}\nfunction getimei(){\n    return Math.floor(Math.random() * (999999999999999 - 100000000000000 + 1) + 1);\n}\nlet d= [];\nlet res = {};\n\neval(function(p,a,c,k,e,d){e=function(c){return(c<a?\"\":e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)d[e(c)]=k[c]||e(c);k=[function(e){return d[e]}];e=function(){return'\\\\w+'};c=1;};while(c--)if(k[c])p=p.replace(new RegExp('\\\\b'+e(c)+'\\\\b','g'),k[c]);return p;}('2 a=\"b://j.k.g/i?z=x&l=w&h=5.0&y=\"+c(0)+\"&u=v&f=e.7.8.9.s&o=\"+n();2 d=m.r(q(a,{}));2 4=d[\"\"+c(0)][0][\"4\"];2 p=\"b://j.k.g/i/t/A?t=F&h=3.0&l=G&H=\"+4+\"&C=1&B=1&f=e.7.8.9.s&D=6.0.1&o=\"+n();2 E=m.r(q(p,{}));',44,44,'||let||id||||||url|http|getdate|json|mdict|keyfrom|com|apiversion|infoline|dict|youdao|client|JSON|getimei|imei|realurl|fetch|parse|android|style|update|pulldown|mobileExp|publish|date|mode|cardList|preSize|size|mid|jsoncode|daily|mobile|lastId'.split('|'),0,{}))\n\n\n\nfunction getoneword(i){\n  d.push({\n\ttitle:'‘‘’’<big><strong><span><font color=\"#f47983\">🔥'+getdate(i)+\"  壹句🔥</font><span><strong><big>\",\n\turl:'hiker://empty#'+getdate(i)+'@lazyRule=.js:\"toast://\"+input.split(\"#\")[1]',\n\tcol_type:\"text_center_1\"\n  },{\n\ttitle:jsoncode[i].summary,\n\tdesc:\"# \"+jsoncode[i].source.replace(/\\《|\\》/g,\"\"),\n\tpic_url:jsoncode[i].image[0],\n\turl:jsoncode[i].gif[0],\n\tcol_type:\"pic_1_card\"\n  },{\n\ttitle:'<strong><font color=\"#25F8CB\">&emsp;&emsp;'+jsoncode[i].title+\"</font><strong>\",\n\tcol_type:\"rich_text\"\n  },{\n\tcol_type:\"line_blank\"\n  },{\n\ttitle:\"音频\",\n\tpic_url:\"https://gitee.com/mofeibai/hiker_info/raw/master/tubiao/audio.png\",\n\turl:jsoncode[i].voice,\n   col_type:\"icon_2\"\n  },{\n\ttitle:\"视频\",\n\tpic_url:\"https://gitee.com/mofeibai/hiker_info/raw/master/tubiao/video.png\",\n\t url:jsoncode[i].videourl,\n   col_type:\"icon_2\"\n  });\n}\ngetoneword(0);\nfor(let i=0;i<10;i++){\n  d.push({\n\tcol_type:\"big_blank_block\"\n  })\n}\nd.push({\n\tcol_type:\"line\"\n  },{\n   title:\"‘‘\"+getVar(\"yesterdayword\",\"昨日壹句\")+\"’’\",\n   url:'hiker://empty@lazyRule=.js:putVar(\"yesterdayword\",getVar(\"yesterdayword\",\"昨日壹句\") == \"温故而知新\"?\"昨日一去不复返\":\"温故而知新\");refreshPage();\"toast://切换成功\"',\n   col_type:\"text_center_1\"\n });\nif(getVar(\"yesterdayword\",\"昨日壹句\") == \"温故而知新\"){\n  getoneword(1);\n}else{\n  d.push({\n\ttitle:\"““------点上面一行------””\",\n\turl:'hiker://empty@lazyRule=.js:\"toast://点上面，跟我读：shàng miàn\"',\n\tcol_type:\"text_center_1\"\n  })\n}\nres.data = d;\nsetHomeResult(res);\n","searchFind":"","search_url":"","titleColor":"#ff3452","group":"#首页","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#ff3452"},{"firstHeader":"class","last_chapter_rule":"","title":"电影迷ᴺᵐ","author":"Namo","version":1,"type":"video","url":"https://www.dym8.com/vod/list/fyclass--fysort------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"更新&热度&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.ys-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.state&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.search-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h5&&b&&Text'),\r\n       desc: parseDomForHtml(list[j], 'p,-2&&Text').replace('资源：',''),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.dym8.com/vod/search/**----------fypage---.html","group":"#首页","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar Color=\"#1aad19\";\nfunction getHead(title){\n    return '‘‘’’<b><font color=\"'+Color+'\">'+title+'</font></b>';\n}\n\n//影片名称的定位\ntry{\nvar des_title = parseDomForHtml(html, '.info-wrap&&h1&&Text');\n}catch(e){\nvar des_title ='没有正确获取到影片名称';\n}\n\n//影片主演的定位\ntry{\nvar des_zhuyan = '主演：'+parseDomForHtml(html, '.info-wrap&&.director&&Text').replace('展开全部','');\n}catch(e){\nvar des_title ='没有正确获取到主演名称';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html, '.summary-con&&p,0&&Text');\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介';\n}\n\n//简介图片路径的定位\ntry{\nvar des_pic =parseDom(html, '.thumb-wrap&&img&&src');\n}catch(e){\nvar des_pic ='没有正确获取到图片';\n}\n\n// 获取线路标题\nvar arts = parseDomForArray(html,'.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n// 获取线路列表\nvar conts = parseDomForArray(html, 'body&&.episodes-list');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar _x5 = $.toString(() => {\n    //fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp4|\\.m3u8|video_mp4/)) {\n            //fy_bridge_app.log(urls[i])\n            return urls[i]+'#isVideo=true#'\n        }\n    }\n});\n\n//输出简介部分\nd.push({\ntitle: '片名：'+des_title+'\\n'+des_zhuyan,\ndesc: '此规则仅限学习交流使用，请于导入后24小时内删除，支持正版！',\npic_url: des_pic,\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">' + des_desc.substr(0, 60) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title:MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\nd.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">⬇️排序</span></b>': '““””<b><span style=\"color: #1aad19\">⬆️排序</span></b>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n        })\nfunction setTabs(tabs, vari) {\n             for (var i in tabs) {\n             var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\nd.push({\n        title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n        url: url,\n        col_type: 'flex_button'\n            })\n            }\nd.push({\n        col_type: \"line\"\n    });\n            }\n    function setLists(lists, index) {\n           var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\nd.push({\n       title: parseDomForHtml(list[j], 'a&&Text').replace('第','').replace('集',''),\n       url: \"x5Rule://\" + parseDom(list[j], 'a&&href') + '@' + _x5,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n       col_type: list.length >3?'text_5':'text_2'\n             });\n            }\n            } else {\n            for (var j = 0; j < list.length; j++) {\nd.push({\n       title: parseDomForHtml(list[j], 'a&&Text').replace('第','').replace('集',''),\n       url: \"x5Rule://\" + parseDom(list[j], 'a&&href') + '@' + _x5,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n       col_type: list.length >3?'text_5':'text_2'\n            });\n           }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://ldbbs.ldmnq.com/bbs/topic/attachment/2021-8/654eddb6-c999-4f0d-a8d0-99389a45a150.png\""},{"last_chapter_rule":"","title":"火影(搁置)","author":"123","version":0,"type":"other","url":"https://app.3dmgame.com/zt/387_gl_all_fypage/","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar list=pdfa(html,'body&&.lis');\nfor(var i in list)\nd.push({\ntitle:pdfh(list[i],'a&&Text'),\npic:pd(list[i],'img&&data-original')+'@Referer=',\ndesc:pdfh(list[i],'.pl&&Text'),\nurl:pd(list[i],'a&&href')\n})\nsetResult(d);","searchFind":"","search_url":"","group":"#首页","detail_col_type":"rich_text","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar list=pdfh(html,'.news_warp_center&&Html');\nd.push({\ntitle:list,\ncol_type:'rich_text',\nextra: {textSize: 18}\n})\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"#ff62a6fb"},{"last_chapter_rule":"","title":"云剪切板.dz","author":"道长","version":12,"type":"other","url":"hiker://empty","col_type":"icon_round_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","group":"#️⃣工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\nlet d=[];\\nconst {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet ver=MY_RULE.version;\\nlet tver=ver?',版本:'+color(ver,\\\"#ff7000\\\"):'';\\nd.push({\\n    title:'小程序云剪切板分享by道长'+tver,\\n    col_type:'text_1',\\n    desc:'输入小程序名称进行模糊搜索\\\\n点击可来个栗子,比如道长仓库',\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        putVar('cloudnote.share_file','道长仓库');\\n        refreshPage(true);\\n        return 'toast://栗子已经给你了,请点击搜索吧'\\n    }),\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nlet tips=\\\"道长出品,核心逻辑基于任务仓库。刷新按钮等同于下拉本规则，才能同步变更。导入按钮等同于视界原生远程导入。道长专用剪切板，提供方为专业的小麦云链，日文件超100G，稳定可靠。\\\";\\nd.push({\\n    title:\\\"🍱菜单\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(tips).confirm(()=>{})\\n});\\nd.push({\\n    title:\\\"🔄刷新\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        refreshPage(true);\\n        return \\\"toast://已重新获取小程序，响应您的实时改动\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"♻清除\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        clearItem(\\\"cloudnote.share_file\\\");\\n        refreshPage(true);\\n        return \\\"toast://已清除搜索记录\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"📥识别口令\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"{{clipboard}}\\\",\\\"自动识别剪切板内容或手动输入口令\\\").input(()=>{\\n        let importUrl = 'rule://' + base64Encode(input);\\n        return importUrl\\n        //return \\\"toast://你输入的口令为\\\"+input\\n    })\\n});\\nd.push({\\n    title: '搜索',\\n    desc: \\\"小程序模糊名称,不区分大小写\\\",\\n    extra: {\\n        onChange: \\\"putVar('cloudnote.share_file',input)\\\",\\n        titleVisible: true,\\n        defaultValue:getItem('cloudnote.share_file','')||getVar('cloudnote.share_file')\\n    },\\n    url:$.toString(() => {\\n        // 定义字符串替换全部函数\\n        if(!getVar('cloudnote.share_file'))        \\n        {\\n           return \\\"toast://你还没有输入名称呢\\\"\\n        }\\n        setItem(\\\"cloudnote.share_file\\\",getVar('cloudnote.share_file'));\\n        clearVar(\\\"cloudnote.gp\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"input\\\"\\n});\\nfunction unique2(array){\\n    return Array.from(new Set(array));\\n}\\nfunction strDeal(str){\\n    str = str.split('');\\nstr = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\nstr = str.join('');\\nreturn str\\n}\\nlet filterName=getItem('cloudnote.share_file','');\\nif(filterName){\\n    let rules=JSON.parse(fetch(\\\"hiker://home\\\"));\\n    let filteredRules=rules.filter(it=>it.title.toLowerCase().includes(filterName.toLowerCase()));\\n    let filterRules=filteredRules.map((it)=>{\\n        let text = JSON.stringify(it);\\n        text=base64Encode(text);\\n        let data={\\n        group:it.group,\\n        title:it.title,\\n        col_type:\\\"icon_round_4\\\",\\n        desc:\\\"作者:\\\"+it.author+\\\",版本:\\\"+it.version,\\n        url:$(\\\"#noLoading#\\\").lazyRule((it)=>{\\n            let text=base64Decode(it);\\n            it=JSON.parse(text);\\n            log(\\\"小程序:\\\"+it.title+\\\"体积为:\\\"+text.length);\\n            showLoading(\\\"分享中，请稍等\\\");\\n            //let text = JSON.stringify(it);\\n            //text=\\\"海阔视界规则分享，当前分享的是：小程序，无根树，花正清，不断荤腥不戒淫￥home_rule_v2￥base64://@\\\"+it.title+\\\"@\\\"+base64Encode(text);\\n            let new_name = it.title+\\\".txt\\\";\\n            const {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/taskCall?rule=道长仓库Pro\\\");\\n            log('开始执行任务仓库获取文件外链');\\n            let result = taskCall(15,'uploadText',[new_name,text]);\\n            var short_url;\\n            log('返回状态码:'+result.status);\\n            if (result.status == 0) {\\n                short_url = result.result[0];\\n                log(short_url);\\n            }else{\\n                hideLoading();\\n                return \\\"toast://仓库云函数执行失败\\\";\\n            }\\n            if(!short_url){\\n                hideLoading();\\n                return \\\"toast://仓库云函数执行成功，但未取到正确的文件链接\\\"\\n            }\\n            let import_bg = '海阔视界小程序【'+it.title+'】￥home_rule_url￥';\\n            let import_code = import_bg+short_url;\\n            copy(import_code);\\n            setItem(\\\"cloudnote.share_file_code\\\",import_code);\\n            hideLoading();\\n            \\n            refreshPage(true);\\n            return \\\"hiker://empty\\\"\\n        },text),\\n        pic_url:it.icon||\\\"https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU\\\"\\n        };\\n        return data\\n    });\\n    let cnt=filterRules.length;\\n    if(cnt>0){\\n        d.push({\\n            title:\\\"共计\\\"+color(cnt,\\\"#ff7000\\\")+\\\"个含关键字\\\"+color(filterName,\\\"#ff7000\\\")+\\\"的小程序\\\",\\n            desc:\\\"点击下面小程序图标可直接分享到云剪切板口令\\\\n长按调试数据可查看小程序详情\\\",\\n            url:\\\"hiker://empty\\\",\\n            col_type:\\\"text_1\\\",\\n            extra:{\\n                lineVisible:false\\n            }\\n        });\\n        let groups=filteredRules.map(it=>it.group||\\\"无分组\\\");\\n        groups=unique2(groups);\\n        let groupbtn=groups.map((it)=>{\\n            return {\\n                title:it==getVar(\\\"cloudnote.gp\\\",\\\"全部\\\")?color(it,\\\"#5FB878\\\"):it,\\n                col_type:\\\"scroll_button\\\",\\n                url:$('#noLoading#').lazyRule((it)=>{\\n                putVar(\\\"cloudnote.gp\\\",it);\\n                    refreshPage(true);\\n                    return \\\"hiker://empty\\\"\\n                },it)\\n            }\\n        });\\n        groupbtn.unshift({\\n            title:\\\"全部\\\"==getVar(\\\"cloudnote.gp\\\",\\\"全部\\\")?color(\\\"全部\\\",\\\"#5FB878\\\"):\\\"全部\\\",\\n            col_type:\\\"scroll_button\\\",\\n            url:$('#noLoading#').lazyRule(()=>{\\n                putVar(\\\"cloudnote.gp\\\",\\\"全部\\\");\\n                    refreshPage(true);\\n                    return \\\"hiker://empty\\\"\\n                })\\n        });\\n        if(getVar(\\\"cloudnote.gp\\\",\\\"全部\\\")==\\\"无分组\\\"){\\n            filterRules=filterRules.filter(it=>!it.group);\\n        }else if(getVar(\\\"cloudnote.gp\\\",\\\"全部\\\")!=\\\"全部\\\"){\\n            filterRules=filterRules.filter(it=>it.group==getVar(\\\"cloudnote.gp\\\",\\\"全部\\\"));\\n        }\\n        d=d.concat(groupbtn);\\n        let ltips=\\\"\\\";\\n        if(getVar(\\\"cloudnote.gp\\\",\\\"全部\\\")!=\\\"全部\\\"){\\n            let ft=getVar(\\\"cloudnote.gp\\\")==\\\"无分组\\\"?\\\"\\\":getVar(\\\"cloudnote.gp\\\");\\n            //log(ft);\\n            let gprules=rules.filter(it=>(it.group||\\\"\\\")==ft);\\n            ltips=\\\",整组共计\\\"+color(gprules.length,\\\"#ff7000\\\")+\\\",点此分享整组\\\";\\n            var gprulesT=base64Encode(JSON.stringify(gprules)); \\n            var gpName=strDeal(getVar(\\\"cloudnote.gp\\\"))+\\\".txt\\\";\\n        }\\n        let gpurl=\\\"hiker://empty\\\";\\n        if(ltips){\\n            gpurl=$('确认分享整个组《'+gpName+'》到云剪切板？').confirm((gprulesT,gpName)=>{\\n            let text=base64Decode(gprulesT);\\n            gprulesT=JSON.parse(text);\\n            log(\\\"小程序:\\\"+gpName+\\\"体积为:\\\"+text.length);\\n            showLoading(\\\"分享中，请稍等\\\");\\n            const {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/taskCall?rule=道长仓库Pro\\\");\\n            log('开始执行任务仓库获取文件外链');\\n            let result = taskCall(15,'uploadText',[gpName,text]);\\n            var short_url;\\n            log('返回状态码:'+result.status);\\n            if (result.status == 0) {\\n                short_url = result.result[0];\\n                log(short_url);\\n            }else{\\n                hideLoading();\\n                return \\\"toast://仓库云函数执行失败\\\";\\n            }\\n            if(!short_url){\\n                hideLoading();\\n                return \\\"toast://仓库云函数执行成功，但未取到正确的文件链接\\\"\\n            }\\n            let import_bg = '海阔视界小程序合集【'+gpName+'】￥home_rule_url￥';\\n            let import_code = import_bg+short_url;\\n            copy(import_code);\\n            setItem(\\\"cloudnote.share_file_code\\\",import_code);\\n            hideLoading();\\n            refreshPage(true);\\n                return \\\"toast://分享了整个组:\\\"+gpName\\n            },gprulesT,gpName);\\n        }\\n        d.push({\\n            title:\\\"筛选共计:\\\"+color(filterRules.length,\\\"#ff7000\\\")+ltips,\\n            col_type:\\\"text_1\\\",\\n            url:gpurl\\n        });\\n  d=d.concat(filterRules);\\n    }  \\n}\\nd.push({\\n    title:\\\"复制分享的小程序剪切板口令\\\",\\n    desc:\\\"生成后会自动复制,这里留个历史记录可以点击复制\\\\n分享内容最长保留30天,自定义天数及访问数功能未开发\\\",\\n    col_type:\\\"text_1\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        let share=getItem(\\\"cloudnote.share_file_code\\\");\\n        if(!share){\\n            return \\\"toast://木有内容，不允许复制空气\\\"\\n        }\\n        copy(share);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nd.push({\\n    title:getItem(\\\"cloudnote.share_file_code\\\",\\\"\\\"),\\n    col_type:\\\"long_text\\\",\\n    extra:{\\n        textSize:13\\n    }\\n});\\n\\nsetResult(d);\"}]","icon":"https://lanmeiguojiang.com/tubiao/ke/158.png"},{"last_chapter_rule":"","title":"视界|世界","author":"","version":4,"type":"live","url":"hiker://empty###fyAll","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php?glideCache=skip' + '#' + new Date().getTime();\n/*function getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();*/\nfunction zero(s) {\n    return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndate = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一  周1️⃣\", \"星期三  周2️⃣\", \"星期三  周3️⃣\", \"星期四  周4️⃣\", \"星期五  周5️⃣\", \"星期六  周6️⃣\")[mydate.getDay()];\nnewTime = year + ' 年 ' + zero(month) + ' 🈷️ ' + zero(date) + ' 日     时间: ' + ' \\t\\t\\t ' + zero(hour) + ' : ' + zero(minute) + ' : ' + zero(second) + '\\t\\t\\t' + day;\nlet hitokoto = '';\ntry {\n    hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {\n        timeout: 3000\n    })).content;\n} catch (e) {\n    log(e);\n}\ndata.push({\n    title: hitokoto,\n    url: \"https://v.nrzj.vip/\",\n    desc: '抖音🐆壬寅年' + newTime + '',\n    col_type: 'movie_1_vertical_pic',\n    pic_url: s2\n});\ndata.push({\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#70f3ff'>记录⏱️</span>\",\n    url: \"hiker://history\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#63bbd0'>书签📚</span>\",\n    url: \"hiker://bookmark\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#5cb3cc'>收藏</span>\",\n    url: \"hiker://collection\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#22a2c3'>K歌</span>\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>广播</span>\",\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>视界</span>\",\n    url: \"hiker://home@视界世界||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed900'>小程序</span>\",\n    url: \"hiker://home\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed048'>插件</span>\",\n    url: \"hiker://js\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#96ce54'>备份</span>\",\n    url: \"hiker://webdav\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00bc12'>下载</span>\",\n    url: \"hiker://download\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0eb83a'>更多设置</span>\",\n    url: \"hiker://setting\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0aa344'>网址过滤</span>\",\n    url: \"hiker://adUrl\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#16a951'>拦截广告</span>\",\n    url: \"hiker://adRule\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#21a675'>其它设置</span>\",\n    url: \"hiker://settingMore\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00e09e'>聚直播</span>\",\n    url: \"hiker://home@聚直播||https://haikuoshijie.cn/user/243\"\n});\nvar s2 = 'http://api.btstu.cn/sjbz?glideCache=skip#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\ndata.push({\n    title: \"\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\",\n    title: 'GIF K歌',\n    col_type: 'icon_2',\n    pic_url: s2\n});\ndata.push({\n    title: '本地广播',\n    col_type: 'icon_2',\n    pic_url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fimgextra%2Fi1%2F196628284%2FT2UX1OXvJXXXXXXXXX_%21%21196628284.gif&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999',\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\",\n});\n        let flag = MY_URL.split(\"##\")[1].split('#')[1];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|xs|flv|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效，更换其它频道观看\"\n        }\n    })\n}\nlet path = 'hiker://files/rules/js/视界|世界.js';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, null, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    groups.forEach((group) => {\n        if (group) {\n            data.push({\n                title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                url: $('#noLoading#').lazyRule((group) => {\n                    putMyVar('selectGroup', group);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, group),\n                col_type: 'scroll_button',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    })\n    for (let title in items[selectGroup]) {\n        let us = items[selectGroup][title];        \n        data.push({\n            title: title.split(\"###\")[0],\n            url: us.length < 2 ? us[0]: JSON.stringify({\n                urls: us\n            }),\n//col_type: 'icon_2_round',\n            img: \"\"\n        })\n    }\n}\n          catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\n for (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n    if (!it.col_type && it.url) {\n        it.img = \"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.mp.itc.cn%2Fq_70%252Cc_zoom%252Cw_640%2Fupload%2F20170619%2F5293637f5aad4c2ba04954cdcc99dcfa_th.jpg\";\n    }\n}\n\nsetResult(data);","searchFind":"js:\nvar data = [];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|smil|tx2p|mkv|flv|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效\"\n        }\n    })\n}\nvar keyword = MY_URL.split('##')[1].toLowerCase();\nlet path = 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/js/视界|世界.js';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, keyword, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    for (let it of Object.keys(items)) {\n        for (let title in items[it]) {\n            let us = items[it][title];\n            data.push({\n                title: title.split(\"###\")[0],\n                url: us.length < 2 ? us[0] : JSON.stringify({\n                    urls: us\n                }),\n                //col_type: 'icon_2_round',\n                //img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n            })\n        }\n    }\n} catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\nfor (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n}\nsetResult({\n    data: data\n});","search_url":"hiker://empty##**","titleColor":"#f20c00","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\n\\nfunction renderLiveData(url, filter, isText) {\\n    let net = request(url, {\\n        headers: {\\n            Referer: getReferer(url)\\n        }\\n    });\\n    const m3u = net,\\n        mode = m3u.indexOf('#EXTM3U') == 0,\\n        re = mode ? /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\\\s]*)/g;\\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (/group-title=\\\"(.*?)\\\"/.exec(i[1]) || [null, ''])[1];\\n        } else if (i[3] == '#genre#') {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].trim();\\n        if (url.indexOf(\\\".php\\\") > 0 || url.includes(\\\"@lazyRule\\\") || url.includes(\\\";\\\")) {\\n            title = title + \\\"###\\\" + new Date().getTime() + md5(url);\\n            //log(j);\\n        } else {\\n            //url = url + \\\"#isVideo=true#\\\";\\n        }\\n        if (filter != null && !title.includes(filter)) {\\n            continue\\n        }\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title] = items[group][title].concat([url]);\\n            } else {\\n                items[group][title] = [url];\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = [url];\\n        };\\n    }\\n    return items;\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2019%2F987%2F927%2F12714729789_248999555.jpg"},{"last_chapter_rule":"","title":"音乐合集","author":"小棉袄🌞&永远の明日","version":76,"type":"all","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon,\n            extra: { RULE: v }\n        }\n    if(newWindow) Object.assign(d.extra, { newWindow: true, windowId: getItem('myCollection') + d.title })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            function setResult(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nsetResult(myCollection_el)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'https://cdn.jsdelivr.net/gh/qiusunshine/hiker-rules/rules/音乐合集.json')\n// 包裹错误","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\nlog(MY_URL)\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, 1),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let min = 60 * 24 * 1,\\n            data = [],\\n            time = parseInt(readFile('updatetime')) || 0,\\n            now = new Date().getTime()\\n        if (now - time > 1000 * 60 * min) {\\n            log('更新了数据')\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                data = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    data = JSON.parse(data).rule\\n                data = JSON.parse(data)\\n            } catch (e) {\\n                data = []\\n            }\\n            data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updatetime', '' + now)\\n        } else {\\n            log('没有更新数据')\\n            data = JSON.parse(readFile('dataCache'))\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nlet el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updatetime')\\n            back(true)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = parseInt(readFile('searchThd') || '5'),\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd),\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'text_2'\\n}, {\\n    title: '🖥 独立首页: ' + (newWindow ? '是' : '否'),\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'text_2'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true)\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔄  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/music/60.svg"},{"last_chapter_rule":"","title":"聚云盘","author":"tee&MrFly","version":5,"type":"video","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"喵搜&小纸条&UP云搜&TG盘&更多","class_url":"https://www.alipansou.com&https://u.gitcafe.net/&https://www.upyunso.com&https://tx.me/s/sharealiyun&https://dalao.ru/w/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//不能自适应高度的网站\nlet white = [\n    \"//tx.me/\",\n]\nlet d = [];\nlet r = fetch(\"hiker://home@云盘汇影\");\nif (!r || r.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入',\n        confirm: ru,\n        cancel: ru\n    })\n}\nlet u = MY_URL.split(\"##\")[1];\nlet desc = \"auto\";\nfor (let it of white) {\n    if (u.includes(it)) {\n        desc = \"100%&&float\";\n    }\n}\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: u,\n    desc: desc,\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.alipansou.com/favicon.ico"},{"last_chapter_rule":"","title":"度盘君","author":"小棉袄🌞","version":5,"type":"video","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"全部&新剧场&橘子盘搜","class_url":"all&https://www.xinjuc.com/&https://www.nmme.cc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//随机图API地址，设置为空不显示图片\nlet pic = \"https://api.isoyu.com/bing_images.php\";\n//二次元：https://api.ixiaowai.cn/api/api.php\n//美女：https://api.btstu.cn/sjbz/api.php\n//是否随机图，0固定，1随机（5分钟内固定）\nlet random = 1;\n\nlet white = [\n    \n]\nlet d = [];\nlet u = MY_URL.split(\"##\")[1];\n\nfunction loadUrl(u) {\n    let desc = \"auto\";\n    for (let it of white) {\n        if (u.includes(it)) {\n            desc = \"100%&&float\";\n        }\n    }\n    if (getAppVersion() >= 3018) {\n        desc = \"float&&top\";\n    }\n    setResult([{\n        col_type: \"x5_webview_single\",\n        url: u,\n        desc: desc,\n        extra: {\n            canBack: true,\n            urlInterceptor: $.toString((rule) => {\n                if (input.startsWith('https://pan.baidu.com/')) {\n                    return $.toString((url, rule) => {\n                        fba.open(JSON.stringify({\n                            rule: rule,\n                            url: 'hiker://page/detail?rule=' + rule + '&u=' + encodeURIComponent(url)\n                        }));\n                    }, input, rule)\n                }\n            }, MY_RULE.title)\n        }\n    }])\n}\nif (u == \"all\") {\n    let cls = getMyVar(\"cls\", \"\");\n    if (cls) {\n        u = cls;\n        loadUrl(u);\n        clearMyVar(\"cls\");\n    } else {\n        let r = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title));\n        let cn = r.class_name.split(\"&\");\n        let cu = r.class_url.split(\"&\");\n        let arr = [];\n        if (pic) {\n            arr.push({\n                title: \"\",\n                url: pic,\n                col_type: \"card_pic_1\",\n                desc: \"0\",\n                pic_url: random ? (pic + \"#_t=\" + Math.ceil(new Date().getTime() / 300000)) : pic\n            });\n            arr.push({\n                col_type: \"big_blank_block\"\n            });\n\n\n        }\n        for (let i = 1; i < cn.length; i++) {\n            arr.push({\n                title: cn[i],\n                url: $().lazyRule((u) => {\n                    putMyVar(\"cls\", u);\n                    //refreshX5Desc(\"top&&float\");\n                    refreshPage();\n                    return \"hiker://empty\";\n                }, cu[i]),\n                col_type: \"text_2\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n        }\n        refreshX5Desc(\"0&&float\");\n        setResult(arr);\n    }\n} else {\n    loadUrl(u);\n}","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\nlet u = decodeURIComponent(getParam(\\\"u\\\"));\\nlog(u);\\nlet a = u.split(\\\"pwd=\\\");\\nif (a.length > 1 && a[1]) {\\n    d.push({\\n        title: \\\"点击复制提取码：\\\" + a[1],\\n        url: \\\"copy://\\\" + a[1],\\n    });\\n}\\nd.push({\\n    title: \\\"链接嗅探中，请稍候\\\",\\n    url: u,\\n    col_type: \\\"\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        id: MY_RULE.title + \\\"@dd\\\"\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: u,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"1&&list\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: $.toString((id) => {\\n            if (input.startsWith(\\\"bdnetdisk\\\")) {\\n                log(input);\\n                return $.toString((id, u) => {\\n                    let lazy = $$$().lazyRule((id, u) => {\\n                        updateItem(id, {\\n                            title: \\\"点击保存到百度网盘\\\",\\n                            url: u\\n                        });\\n                    }, id, u);\\n                    fy_bridge_app.parseLazyRuleAsync(lazy, \\\"log(input)\\\");\\n                }, id, input);\\n            }\\n        }, MY_RULE.title + \\\"@dd\\\")\\n    }\\n});\\n\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Alist","author":"Joe&道长魔改","version":32,"type":"tool","url":"hiker://empty","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    var d = [];\nif (getAppVersion() < 3204) {\n    setResult([{\n        title: \"您当前版本不支持本小程序，请更新至最新版本\",\n        url: \"https://haikuo.lanzoui.com/u/GoldRiver\"\n    }])\n} else {\n    const {\n        getFiles,\n        getLink\n    } = $.require('hiker://page/api');\n    const {color,small}=$.require('hiker://page/utils');\n    var path = getMyVar(\"path\", \"\");\n    d.push({\n        title: '⚙️设置',\n        col_type: 'scroll_button',\n        url: 'hiker://page/settings#noHistory##noRecordHistory#',\n        extra: {\n            version: MY_RULE.version\n        }\n    });\n    let sub_urls = $.get_sub_urls();\n    let rstrip = $.rstrip;\n    var base_path = rstrip(getMyVar(\"baseurl\", sub_urls[0].url), '/');\n    let nowSub = sub_urls.find(x=>rstrip(x.url,'/')===base_path);\n    sub_urls.forEach((item) => {\n        var isClicked = base_path === rstrip(item.url, '/');\n        d.push({\n            title: isClicked ? \"‘‘’’<strong><font color='#1E90FF'>\" + item.name + \"</front></strong>\" : item.name,\n            url: isClicked ? base_path + path :  $(rstrip(item.url, '/')+\"#noLoading#\").lazyRule(() => {\n                input = input.split('#')[0];\n                putMyVar(\"baseurl\", input);\n                clearMyVar(\"path\");\n                refreshPage(false);\n                return \"toast://切换成功\"\n            }),\n            col_type: \"scroll_button\"\n        });\n    });\n    d.push({\n        col_type: \"blank_block\"\n    });\n    d.push({\n        title: \"‘‘’’<strong><font color='#1E90FF'>...</front></strong>\",\n        url: $('#noLoading#').lazyRule((path) => {\n            // 返回上级\n            path.pop();\n            putMyVar(\"path\", path.join(\"/\"));\n            if(getItem('clear_change','')){\n                clearMyVar('search','');\n            }\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, path.split(\"/\")),\n        col_type: \"scroll_button\"\n    });\n    d.push({\n        title: \"🏠首页\",\n        col_type: \"scroll_button\",\n        url: $('#noLoading#').lazyRule(() => {\n            putMyVar(\"path\", \"\");\n            if(getItem('clear_refresh','')){\n                clearMyVar('search','');\n            }\n            refreshPage(false);\n            return \"hiker://empty\"\n        }),\n    });\n    let paths = \"\";\n    for (item of path.split(\"/\")) {\n        if (item !== \"\") {\n            paths += \"/\" + item;\n            d.push({\n                title: item,\n                col_type: \"scroll_button\",\n                url: $('#noLoading#').lazyRule((paths) => {\n                    putMyVar(\"path\", paths);\n                    if(getItem('clear_change','')){\n                        clearMyVar('search','');\n                    }\n                    refreshPage(false);\n                    return \"hiker://empty\"\n                }, paths)\n            })\n        }\n    }\n    let sorts = [\"名称\", \"类型\", \"大小\", '时间'];\n    let nsort = getMyVar('sort', '名称');\n    let nsearch = getMyVar('search','');\n    sorts.forEach(item => {\n        let cc = nsort === item + \"-\";\n        let isClicked = nsort === item;\n        d.push({\n            title: cc || isClicked ? \"‘‘’’<strong><font color='#1E90FF'>\" + item + (cc ? \"∧\" : \"∨\") + \"</front></strong>\" : item,\n            col_type: \"flex_button\",\n            url: $('#noLoading#').lazyRule((item, isClicked) => {\n                if (isClicked) {\n                    putMyVar(\"sort\", item + \"-\");\n                } else {\n                    putMyVar(\"sort\", item);\n                    if(getItem('clear_change','')){\n                        clearMyVar('search','');\n                    }\n                }\n                refreshPage(false);\n                return \"hiker://empty\"\n            }, item, isClicked)\n        });\n    });\n    let filterOption = getItem('filterOption','全部');\n    let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]').filter(x=>x.active);\n    let filterSels = ['全部','文件','文件夹'];\n    filterSels = filterSels.concat(filter_rules.map(x=>x.name));\n    let filterSel = filterSels.map(it=>it===filterOption?color(it,'#12b668'):it);\n    filterSel.push(color('自定义过滤','#d96715'));\n    d.push({\n        title:'⏳'+color(filterOption,'#d96715'),\n        col_type:'flex_button',\n        url:$(filterSel,2,'选择要显示的内容').select((filterOption)=>{\n            input = pdfh(input,'body&&Text').replace('““””','');\n            if(input==='自定义过滤'){\n                return 'hiker://page/superSettings#noHistory##noRecordHistory#'\n            }\n            if(filterOption!==input){\n                setItem('filterOption',input);\n                refreshPage(false);\n            }\n            return 'hiker://empty'\n        },filterOption),\n    });\n    d.push({\n        title:nsearch?\"🔍\"+small(color(':'+nsearch,'#12b668')):'🔍',\n        col_type:'flex_button',\n        url:$(nsearch,'输入要搜索的内容。支持正则。如\\\\.js').input((nsearch)=>{\n            if(input!==nsearch){\n                putMyVar('search',input);\n                refreshPage(false);\n            }\n            return 'hiker://empty'\n        },nsearch),\n    });\n    d.push({\n        title: color(\"🕓历史\",\"#d96715\"),\n        url: \"hiker://page/history#noHistory##noRecordHistory#\",\n        col_type: \"flex_button\"\n    });\n    let dirInfo = getFiles(path,filterOption);\n    if(dirInfo.can_upload){\n        d.push({\n            title: color(\"⛅访客\",\"#15ab21\"),\n            url: \"hiker://page/upload#noHistory##noRecordHistory#\",\n            col_type: \"flex_button\"\n        });\n    }\n    // log(nowSub);\n    if(path.split('/').length>1&&nowSub&&nowSub.webdav&&nowSub.webdav.user){\n        let web_dav = nowSub.webdav;\n        // log(webdav);\n        d.push({\n            title: color(\"📂创建\",\"#15ab21\"),\n            url: $('','请输入待创建的文件夹名称').input((user,pwd,base_path,path)=>{\n                if(input){\n                    let url = base_path +'/dav'+path;\n                    log(url);\n                    let webdav = buildWebDav(url, user, pwd);\n                    webdav.makeDir(input);\n                    refreshPage(false);\n                    return \"toast://文件夹\"+input+\"创建完毕\"\n                }\n                return 'hiker://empty'\n            },web_dav.user,web_dav.pwd,base_path,path),\n            col_type: \"flex_button\"\n        });\n        d.push({\n            title: color(\"☁上传\",\"#15ab21\"),\n            url: \"hiker://page/webdavUpload#noHistory##noRecordHistory#\",\n            col_type: \"flex_button\"\n        });\n    }\n    d.push({\n        title:color('🔍全局','#12b668'),\n        col_type:'flex_button',\n        url:'hiker://page/search?page=fypage#noHistory##noRecordHistory#',\n    });\n    d.push({\n        col_type: \"line_blank\"\n    });\n    let clickOption = getItem('clickOption', '打开');\n    let showZimu = getItem('showZimu','开');\n    dirInfo.result.forEach(item => {\n        if (item.url) {\n            d.push({\n                title: item.title,\n                img: item.img,\n                url: item.url,\n                col_type: item.col_type,\n            });\n        } else {\n            // let it_type = item.extra.type;\n            let it_type = item.type;\n            let url = 'hiker://empty';\n            let title = item.extra.name || item.title;\n            let id=item.extra.id;\n            if (it_type === 1) {\n                url = $('#noLoading#').lazyRule((item, title) => {\n                    putMyVar(\"path\", $.rstrip(getMyVar(\"path\", \"\"),'/' )+ \"/\" + title);\n                    if(getItem('clear_change','')){\n                        clearMyVar('search','');\n                    }\n                    refreshPage(false);\n                    return \"hiker://empty\"\n                }, item, title);\n            } else if (it_type === 3 || /\\.m3u8$/.test(title)) { //3是媒体,禁用下载和跳转\n                url = getLink(title, null,'打开', showZimu,'#isVideo=true#');\n            } else if (it_type === 6) {\n                url = getLink(title, null,'打开', showZimu,\"#.jpg\");\n            } else { //跟随系统预览和下载\n                url = getLink(title, null,clickOption,showZimu);\n            }\n            d.push({\n                title: item.title,\n                img: item.img,\n                url: url,\n                col_type: item.col_type,\n                extra: {\n                    id:id,\n                    type: it_type,\n                    title: title,\n                }\n            });\n        }\n    });\n    setResult(d);\n}","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.require('hiker://page/libs?rule=道长仓库Pro');\nif (!(getAppVersion() < 3204)) {\n    const {getU}=$.require('hiker://page/api');\n    const {isOffice}=$.require('hiker://page/fileType');\n    const {similar,removeExt,saveHistory,renderText}=$.require('hiker://page/utils');\n    $.extend({\n        get_sub_urls() {\n            let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\n            if (sub_urls.length < 1) {\n                sub_urls = this.sub_urls;\n            }\n            return sub_urls\n        },\n        getU:getU,\n        isOffice:isOffice,\n        similar:similar,\n        removeExt:removeExt,\n        saveHistory:saveHistory,\n        renderText:renderText,\n        lstrip(string,char){//去除左边指定字符\n            return string.replace(new RegExp('^\\\\'+char+'+', 'g'), '');\n        },\n        rstrip(string,char){//去除右边指定字符\n            return string.replace(new RegExp('\\\\'+char+'+$', 'g'), '');\n        },\n        strip(string,char){//去除两边指定字符\n            return string.replace(new RegExp('^\\\\'+char+'+|\\\\'+char+'+$', 'g'), '');\n        },\n        getTimeOut(){\n            return Number(getItem('timeout',this.timeout+''))\n        },\n        timeout:3500,\n        sub_urls: [{\n            name: '小棉袄仓库',\n            url: 'http://pan.haikuoshijie.cn/',\n        }, {\n            name: '嗨翻',\n            url: 'https://pan.hikerfans.com/',\n        }, {\n            name: '非盘',\n            url: 'http://www.feifwp.top/',\n        }, {\n            name: '姬路白雪',\n            url: 'https://pan.jlbx.xyz/',\n        }, {\n            name: '听闻',\n            url: 'https://wangpan.sangxuesheng.com/',\n        }, {\n            name: 'Joe自用',\n            url: 'http://joegu.tk/',\n        }],\n    });\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"代码\",\"path\":\"api\",\"rule\":\"function getFiles(path,filterOption) {\\n    let sort = getMyVar('sort', '名称');\\n    let search = getMyVar('search','');\\n    filterOption = filterOption||'全部';\\n    let result = [];\\n    let can_upload = false;\\n    let sub_urls = $.get_sub_urls();\\n    let baseurl = $.rstrip(getMyVar(\\\"baseurl\\\", sub_urls[0].url), '/');\\n    try {\\n        let password = sub_urls.find(x => x.url.includes(baseurl)).password || {};\\n        var res = JSON.parse(post(baseurl + \\\"/api/public/path\\\", {\\n            headers: {\\n                \\\"Content-Type\\\": \\\"application/json\\\"\\n            },\\n            body: JSON.stringify({\\n                path: path,\\n                password: password[path] || '',\\n            }),\\n            timeout: $.getTimeOut(),\\n        }));\\n    } catch (e) {\\n        log('获取文件列表失败:'+e.message);\\n        return {result:result,can_upload: can_upload}\\n    }\\n    const icon_dict = $.require('hiker://page/fileType').get_icon_dict();\\n    const icons = $.require('hiker://page/fileType').get_icons();\\n    const {\\n        bytesToSize,\\n        small,\\n        color,\\n        sorts,\\n        getTime\\n    } = $.require('hiker://page/utils');\\n    let showDetail = getItem('showDetail', '开') === '开';\\n    try {\\n        let msg = res.message.trim();\\n        if (msg === \\\"success\\\") {\\n            let list = res.data.files;\\n            storage0.putMyVar(\\\"now_files\\\",list);//把当前路径的文件信息储存起来,后面获取匹配字幕要用\\n            can_upload = res.data.meta.upload;\\n            if(filterOption==='文件'){\\n                list = list.filter(x=>x.type!==1)\\n            }else if(filterOption==='文件夹'){\\n                list = list.filter(x=>x.type===1)\\n            }else if(filterOption!=='全部'){\\n                let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\n                let filter_rule = filter_rules.find(x=>x.name===filterOption);\\n                if(filter_rule&&filter_rule.rule){\\n                    if(filter_rule.rule.startsWith('!')){\\n                        list = list.filter(x=>!(new RegExp(filter_rule.rule.slice(1))).test(x.name));\\n                    }else{\\n                        list = list.filter(x=>(new RegExp(filter_rule.rule)).test(x.name));\\n                    }\\n                }\\n            }\\n\\n            if(search){\\n                list = list.filter(x=>(new RegExp(search)).test(x.name))\\n            }\\n            if (['大小', '类型', '名称', '时间'].includes(sort)) {\\n                sorts(list, sort);\\n            } else {\\n                sorts(list, sort.replace('-', '')).reverse();\\n            }\\n            list.forEach(item => {\\n                let ext = item.name.split('.').slice(-1)[0];\\n                let img = item.type === 1 ? icon_dict['1'] : (icons[ext] || icon_dict[item.type + '']);\\n                result.push({\\n                    title: item.name,\\n                    img: img,\\n                    type: item.type,\\n                    col_type: \\\"avatar\\\",\\n                    extra: {\\n                        id:baseurl+path+item.name,\\n                        type: item.type,\\n                        name:item.name,\\n                    }\\n                });\\n                if (showDetail) {\\n                    let date = getTime(item);\\n                    let size = item.size_str;\\n                    if (!size || size === \\\"\\\") {\\n                        size = item.size === 0 ? \\\"/\\\" : bytesToSize(item.size)\\n                    }\\n                    if (size && size !== \\\"\\\" && size !== 0) {\\n                        size = \\\"&nbsp;&nbsp;&nbsp;\\\" + size;\\n                    } else {\\n                        size = \\\"\\\";\\n                    }\\n                    let desc = date + size;\\n                    result.push({\\n                        type: item.type,\\n                        title: small(color(desc, '#aaaaaa')),\\n                        col_type: \\\"text_1\\\",\\n                        extra: {\\n                            id:baseurl+path+item.name,\\n                            type: item.type,\\n                            name: item.name,\\n                        }\\n                    })\\n                }\\n            });\\n        } else if (msg === \\\"Wrong password\\\") {\\n            result.push({\\n                title: \\\"点我输入密码\\\",\\n                col_type: \\\"text_1\\\",\\n                url: $(getMyVar(\\\"password\\\", \\\"\\\")).input((path, baseurl) => {\\n                    let sub_urls = $.get_sub_urls();\\n                    let idex = sub_urls.findIndex(x => x.url.includes(baseurl));\\n                    if (idex > -1) {\\n                        if (!sub_urls[idex].password) {\\n                            sub_urls[idex].password = {}\\n                        }\\n                        sub_urls[idex].password[path] = input;\\n                        saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n                        putMyVar(\\\"password\\\", input);\\n                        refreshPage(false);\\n                        return \\\"hiker://empty\\\"\\n                    } else {\\n                        return 'toast://未获取到链接为:' + baseurl + '的索引'\\n                    }\\n\\n                }, path, baseurl),\\n            })\\n        }\\n    } catch (e) {\\n        log('发生了错误:' + e.message);\\n        throw e\\n    }\\n    return {result:result,can_upload:can_upload}\\n}\\n\\nfunction getLink(input, path,clickOption,showZimu, ext,reload) {\\n    clickOption = clickOption || '打开';\\n    showZimu = showZimu || '开';\\n    ext = ext || false;\\n    reload = reload||false;\\n    path = (path||getMyVar(\\\"path\\\", \\\"\\\")) + \\\"/\\\";\\n    let sub_urls = $.get_sub_urls();\\n    let baseurl = $.rstrip(getMyVar(\\\"baseurl\\\", sub_urls[0].url), '/');\\n    let npath = path + input;\\n    let homeUrl='hiker://empty';\\n    if(/菜单/.test(clickOption)){\\n        homeUrl+='#noLoading#'\\n    }\\n    return $(homeUrl).lazyRule((baseurl, npath, path,clickOption,showZimu,input, ext,reload) => {\\n        const {clickLazy} = $.require('hiker://page/clickFunction');\\n        return clickLazy(baseurl, npath, path,clickOption,showZimu,input, ext,reload)\\n    }, baseurl, npath, path,clickOption,showZimu, input,ext,reload);\\n    // log('当前文件路径:'+npath);\\n}\\n\\nfunction getU(baseurl,npath,ext){\\n    try {\\n        let sub_urls = $.get_sub_urls();\\n        let password = sub_urls.find(x => x.url.includes(baseurl)).password || {};\\n        let res = JSON.parse(post(baseurl + \\\"/api/public/path\\\", {\\n            headers: {\\n                \\\"Content-Type\\\": \\\"application/json\\\"\\n            },\\n            body: JSON.stringify({\\n                path: npath,\\n                password: password[npath] || '',\\n            }),\\n            timeout: $.getTimeOut(),\\n        }));\\n        if (res.data) {\\n            let u = res.data.files[0].url;\\n            u = !/^http/.test(u) ? baseurl.split('//')[0] + u : u;\\n            if (ext) {\\n                u = u + ext;\\n            }\\n            return u\\n        }else{\\n            return \\\"toast://\\\" + res.message\\n        }\\n    }catch (e) {\\n        return 'toast://文件' + npath + '信息获取发生错误:' + e.message;\\n    }\\n}\\n\\n$.exports.getFiles = getFiles;\\n$.exports.getLink = getLink;\\n$.exports.getU = getU;\"},{\"col_type\":\"movie_3\",\"name\":\"设置\",\"path\":\"settings\",\"rule\":\"js:\\nlet d = [];\\nsetPageTitle('Alist|设置');\\nconst {color,small} = $.require('hiker://page/utils');\\nlet timeout=$.getTimeOut();\\naddListener('onClose', $.toString(() => {\\n    refreshPage(false); //刷新\\n}));\\nlet sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\nd.push({\\n    title: '基础设置 ①初始化',\\n    desc: `默认添加一些远程的alist地址方便订阅\\\\n当前共计${color(sub_urls.length,'#d96715')}条Alist订阅链接`,\\n    col_type: 'text_1',\\n    url: $('确认初始化自带的远程地址吗?将丢失自定义的内容').confirm(() => {\\n        saveFile(\\\"sub_urls.json\\\", JSON.stringify($.sub_urls), 0);\\n        refreshPage(false);\\n        return 'toast://已初始化'\\n    }),\\n});\\n\\nlet newVersion;\\nlet myVersion = MY_PARAMS.version||999;\\ntry {\\n    newVersion = JSON.parse(fetch(\\\"http://hiker.nokia.press/hikerule/dev/getbyid?id=5153\\\",{timeout:timeout})).result.ver\\n} catch (e) {\\n    toast(\\\"道长仓库抽风了，本次未检测到新版信息\\\");\\n    newVersion = myVersion;\\n}\\nlet isUpdate = Number(newVersion) <= Number(myVersion);\\nlet isVer = Number(newVersion) === Number(myVersion);\\nif(!isUpdate||!isVer){\\n    log('有新版本:'+newVersion+',当前:'+myVersion);\\n}\\nd.push({\\n    title: isUpdate ? \\\"已是最新版\\\" : \\\"🆙新版本\\\",\\n    url: \\\"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQQWxpc3TjgJHvv6Vob21lX3J1bGVfdXJs77+laHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NTE1Mw==\\\",\\n    col_type: \\\"text_2\\\"\\n});\\n\\nd.push({\\n    title: \\\"超时毫秒:\\\" + timeout,\\n    url: $(timeout,'请输入全局接口超时毫秒时间').input(() => {\\n        if(!Number(input)){\\n            return 'toast://超时毫秒数必须是整数！'\\n        }\\n        setItem(\\\"timeout\\\",Number(input)+'');\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_2\\\"\\n});\\nlet clickOption = getItem('clickOption','打开');\\nlet showDetail = getItem('showDetail','开');\\nlet showZimu = getItem('showZimu','开');\\nlet save_mode = getItem(\\\"save_mode\\\", \\\"单个\\\");\\nlet clickSel = ['打开','下载','菜单'].map(it=>it===clickOption?color(it,'#12b668'):it);\\nd.push({\\n    title:'点击操作:'+color(clickOption,'#d96715'),\\n    col_type:'text_2',\\n    url:$(clickSel,2,'请选择点击文件执行操作').select((clickOption)=>{\\n        input = pdfh(input,'body&&Text').replace('““””','');\\n        if(clickOption!==input){\\n            setItem('clickOption',input);\\n            refreshPage(false);\\n        }\\n        return 'hiker://empty'\\n    },clickOption),\\n});\\nd.push({\\n    title: \\\"显示文件详情:\\\" + color(showDetail,'#d96715'),\\n    url: $('#noLoading#').lazyRule((showDetail) => {\\n        setItem(\\\"showDetail\\\", showDetail === \\\"开\\\" ? \\\"关\\\" : \\\"开\\\");\\n        refreshPage(false);\\n        return \\\"toast://切换成功\\\"\\n    },showDetail),\\n    col_type: \\\"text_2\\\"\\n});\\nd.push({\\n    title: \\\"外挂字幕开关:\\\" + color(showZimu,'#d96715'),\\n    url: $('#noLoading#').lazyRule((showZimu) => {\\n        setItem(\\\"showZimu\\\", showZimu === \\\"开\\\" ? \\\"关\\\" : \\\"开\\\");\\n        refreshPage(false);\\n        return \\\"toast://切换成功\\\"\\n    },showZimu),\\n    col_type: \\\"text_2\\\"\\n});\\nd.push({\\n    title: color('更多高级设置','#d96715'),\\n    url: 'hiker://page/superSettings#noHistory##noRecordHistory#',\\n    col_type: \\\"text_2\\\"\\n});\\n\\nif(save_mode!=='批量') {\\n    d.push({\\n        title: '名称',\\n        desc: '备注...',\\n        col_type: 'input',\\n        url: $.toString(() => {\\n        }),\\n        extra: {\\n            defaultValue: getMyVar('alist_name', ''),\\n            onChange: 'putMyVar(\\\"alist_name\\\",input)'\\n        }\\n    });\\n}\\nd.push({\\n    title: '链接',\\n    desc: 'alist服务的首页链接',\\n    col_type: 'input',\\n    url: $.toString(() => {\\n\\n    }),\\n    extra: {\\n        defaultValue: getMyVar('alist_url', ''),\\n        onChange: 'putMyVar(\\\"alist_url\\\",input)',\\n        height: 2,\\n        highlight: save_mode==='批量',\\n        type: \\\"textarea\\\",\\n    }\\n});\\n\\nfunction saveSub(code) {\\n    let a_name = getMyVar('alist_name', '').trim();\\n    let a_url = code||getMyVar('alist_url', '').trim();\\n    let save_mode = code?'批量':getItem(\\\"save_mode\\\", \\\"单个\\\");\\n    if(save_mode === '单个') {\\n        if (!a_name) {\\n            return 'toast://名称必填!'\\n        }\\n        if (!a_url || !/^http/.test(a_url)) {\\n            return 'toast://链接不合法!'\\n        }\\n        let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n        let idex = sub_urls.findIndex(it => $.rstrip(it.url,'/') === $.rstrip(a_name,'/'));\\n        if (idex > -1) {\\n            if (sub_urls[idex].url !== a_url||sub_urls[idex].name !== a_name) {\\n                sub_urls[idex].url = a_url;\\n                sub_urls[idex].name = a_name;\\n                return $('检测到本地有重复的' + a_name + ',是否覆盖?').confirm((sub_urls) => {\\n                    saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n                    refreshPage(false);\\n                    return 'toast://已保存'\\n                }, sub_urls)\\n            } else {\\n                return 'toast://没有操作'\\n            }\\n        } else {\\n            sub_urls.unshift({\\n                name: a_name,\\n                url: a_url,\\n            });\\n            saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n            refreshPage(false);\\n            return 'toast://已保存'\\n        }\\n    }else if(save_mode === '批量'){\\n        let add_data = [];\\n        try {\\n            add_data = eval(a_url);\\n            JSON.stringify(add_data);\\n        }catch (e) {\\n            return 'toast://批量添加格式有误,请参考预处理的json格式。名称重复会直接覆盖保存'\\n        }\\n        let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n        let sub_cnt = sub_urls.length;\\n        let new_add_data = []; // 自动去重\\n        add_data = add_data.filter(x=>x.name&&x.url);\\n        if(!Array.isArray(add_data) || add_data.length < 1){\\n            return 'toast://导入的东西看起来没对呢!'\\n        }\\n        add_data.forEach((it)=>{\\n            let idex = new_add_data.findIndex(x=>$.rstrip(x.url) === $.rstrip(it.url));\\n            idex>-1?new_add_data[idex] = it:new_add_data.unshift(it);\\n        });\\n        // log('准备新增列表:');\\n        // log(new_add_data);\\n        new_add_data.forEach((it)=>{\\n            let idex = sub_urls.findIndex(x=>$.rstrip(x.url) === $.rstrip(it.url));\\n            idex>-1?sub_urls[idex] = Object.assign(sub_urls[idex],it):sub_urls.unshift(it);\\n        });\\n        let new_cnt = sub_urls.length - sub_cnt;\\n        if(new_cnt > 0 ){\\n            saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n            refreshPage(false);\\n            return 'toast://已保存'+new_cnt+'条记录'\\n        }else{\\n            return 'toast://没有待保存的内容'\\n        }\\n    }\\n}\\nlet opCol = 'scroll_button';\\nd.push({\\n    title: save_mode,\\n    col_type: opCol,\\n    url: $('#noLoading#').lazyRule((save_mode) => {\\n        let next_mode = save_mode === '单个'?'批量':'单个';\\n        setItem('save_mode',next_mode);\\n        refreshPage(false);\\n        return 'toast://已切换编辑保存模式为:'+next_mode\\n    },save_mode)\\n});\\nd.push({\\n    title: '保存',\\n    col_type: opCol,\\n    url: $('#noLoading#').lazyRule((saveSub) => {\\n        return saveSub();\\n    }, saveSub)\\n});\\nd.push({\\n    title: '保存并新增',\\n    col_type: opCol,\\n    url: $('#noLoading#').lazyRule((saveSub) => {\\n        let tips = saveSub();\\n        clearMyVar(\\\"alist_name\\\");\\n        clearMyVar(\\\"alist_url\\\");\\n        refreshPage(false);\\n        return tips\\n    }, saveSub)\\n});\\nd.push({\\n    title: '导入',\\n    col_type: opCol,\\n    url: $(\\\"{{clipboard}}\\\", \\\"自动识别剪切板内容或手动输入口令\\\").input((saveSub)=>{\\n        input=input.trim();\\n        let code=input.split('\\\\n')[1];\\n        if(!/Alist订阅编码分享/.test(input)){\\n            return 'toast://导入口令有误'\\n        }\\n        try {\\n            code = base64Decode(code);\\n            log(code);\\n        }catch (e) {\\n            return 'toast://发生错误:\\\\n'+e.message;\\n        }\\n        return saveSub(code);\\n    },saveSub)\\n});\\nd.push({\\n    title: '全编码分享',\\n    col_type: opCol,\\n    url: $('#noLoading#').lazyRule(() => {\\n        let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n        confirm({title:'温馨提示',\\n            content:'将一键分享本地的所有订阅,是否将密码一起分享？',\\n            confirm:$.toString((sub_urls)=>{\\n                let code = 'Alist订阅编码分享 '+sub_urls[0].name+'等'+sub_urls.length+'条'+':\\\\n'+base64Encode(JSON.stringify(sub_urls));\\n                return 'copy://'+code\\n            },sub_urls),\\n            cancel:$.toString((sub_urls)=>{\\n                sub_urls = sub_urls.map((it)=>{return {name:it.name,url:it.url}});\\n                let code = 'Alist订阅编码分享 '+sub_urls[0].name+'等'+sub_urls.length+'条'+':\\\\n'+base64Encode(JSON.stringify(sub_urls));\\n                return 'copy://'+code\\n            },sub_urls)});\\n        return 'hiker://empty'\\n    }),\\n});\\nd.push({\\n    title: '全文件分享',\\n    col_type: opCol,\\n    url: $('#noLoading#').lazyRule(() => {\\n        let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n        let sharePath = 'hiker://files/cache/alist订阅.txt';\\n        confirm({title:'温馨提示',\\n            content:'将一键分享本地的所有订阅,是否将密码一起分享？',\\n            confirm:$.toString((sub_urls,sharePath)=>{\\n                writeFile(sharePath,JSON.stringify(sub_urls));\\n                return 'share://'+sharePath\\n            },sub_urls,sharePath),\\n            cancel:$.toString((sub_urls,sharePath)=>{\\n                sub_urls = sub_urls.map((it)=>{return {name:it.name,url:it.url}});\\n                // log(sub_urls);\\n                writeFile(sharePath,JSON.stringify(sub_urls));\\n                return 'share://'+sharePath\\n            },sub_urls,sharePath)});\\n        return 'hiker://empty'\\n    }),\\n});\\nlet subPath = `hiker://files/rules/files/${MY_RULE.title}/sub_urls.json`;\\nlet cachePath = 'hiker://files/cache/sub_urls.json';\\nd.push({\\n    title: '编辑JSON',\\n    col_type: opCol,\\n    url: $(['接着上次编辑','重新加载编辑'],1,'请选择如何编辑').select((subPath,cachePath) => {\\n        function sub_edit(subPath,cachePath,reload){\\n            reload = reload||false;\\n            if(!fileExist(cachePath)||reload){\\n                writeFile(cachePath,readFile('sub_urls.json', 0) || '[]');\\n            }\\n            let status = fetch('hiker://home@JSON编辑器');\\n            let hasJsonEditor = (status && status !== 'null');\\n            if(!hasJsonEditor){\\n                return 'editFile://'+cachePath;\\n            }else{\\n                return 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(cachePath);\\n            }\\n        }\\n        if(input==='接着上次编辑'){\\n            return sub_edit(subPath,cachePath);\\n        }else if(input==='重新加载编辑'){\\n            return sub_edit(subPath,cachePath,true);\\n        }else{\\n            return 'hiker://empty'\\n        }\\n    },subPath,cachePath)\\n});\\nd.push({\\n    title:'保存本地',\\n    col_type:opCol,\\n    url:$('将JSON编辑的缓存结果保存为本地订阅?').confirm((cachePath)=>{\\n        let code = JSON.parse(fetch(cachePath));\\n        code = code.filter(x=>x.name && x.url);\\n        saveFile('sub_urls.json', JSON.stringify(code), 0);\\n        refreshPage(false);\\n        return 'toast://保存完毕'\\n    },cachePath)\\n});\\n\\nsub_urls.forEach((it, idex) => {\\n    d.push({\\n        title: it.name,\\n        desc: it.url,\\n        url: $(['置顶','删除', '修改名称','修改地址','快捷输入','密码管理','分享(含密码)','分享(无密码)'], 2, '请选择1个操作').select((it, sub_urls, idex) => {\\n            if (input === '置顶') {\\n                sub_urls.splice(idex, 1);\\n                sub_urls.unshift(it);\\n                if (getMyVar(\\\"baseurl\\\", \\\"\\\") !== it.url) {\\n                    putMyVar(\\\"baseurl\\\", it.url);\\n                    clearMyVar(\\\"path\\\");\\n                }\\n            }\\n            else if (input === '删除') {\\n                sub_urls.splice(idex, 1);\\n                if (getMyVar(\\\"baseurl\\\", \\\"\\\") === it.url) {\\n                    putMyVar(\\\"baseurl\\\", sub_urls[0].url);\\n                    clearMyVar(\\\"path\\\");\\n                }\\n            }else if (input === '修改名称') {\\n                return $(it.name,'给此订阅改个名字吧').input((sub_urls,idex)=>{\\n                    input = input.trim();\\n                    if(input){\\n                        sub_urls[idex].name = input;\\n                        saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n                        refreshPage(false);\\n                        return 'toast://修改成功'\\n                    }else{\\n                        return 'toast://修改失败'\\n                    }\\n                },sub_urls,idex);\\n            }else if (input === '修改地址') {\\n                return $(it.url,'给此订阅改个地址吧').input((sub_urls,idex)=>{\\n                    input = input.trim();\\n                    if(input&&/^http/.test(input)){\\n                        sub_urls[idex].url = input;\\n                        saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n                        refreshPage(false);\\n                        return 'toast://修改成功'\\n                    }else{\\n                        return 'toast://修改失败'\\n                    }\\n                },sub_urls,idex);\\n            } else if (input === '快捷输入') {\\n                putMyVar(\\\"alist_name\\\",it.name);\\n                putMyVar(\\\"alist_url\\\",it.url);\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }else if (input === '密码管理') {\\n                return 'hiker://page/passwordManage?idex='+idex\\n            }else if (/分享/.test(input)) {\\n                if(input.includes('无密码')){\\n                    delete it.password;\\n                }\\n                let code = 'Alist订阅编码分享 '+it.name+':\\\\n'+base64Encode(JSON.stringify([it]));\\n                return 'copy://'+code\\n            }\\n            saveFile('sub_urls.json', JSON.stringify(sub_urls), 0);\\n            refreshPage(false);\\n            return 'toast://已' + input\\n        }, it, sub_urls, idex),\\n        col_type: \\\"text_1\\\",\\n        extra:{\\n            idex:idex+''\\n        }\\n    })\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"文件类型\",\"path\":\"fileType\",\"rule\":\"const type_dict = {\\n 0: 'zip|exe|apk|crx',\\n 1: '文件夹',\\n 2: 'pdf|xls|doc',\\n 3: 'mp4|mkv|mp3|flv',\\n 4: '?',\\n 5: 'md|txt|json|js',\\n 6: 'gif|jpg|hiec',\\n}\\n\\nfunction get_icon_dict() {\\n let root = 'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型/';\\n return {\\n  0: root + 'zip.svg',\\n  1: root + '文件夹.svg',\\n  2: root + '文件.svg',\\n  3: root + 'mp4.svg',\\n  4: root + '文件.svg',\\n  5: root + '文件.svg',\\n  6: root + 'gif.svg',\\n }\\n}\\nlet iconStyles = [{\\n name:'默认',\\n url:'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型/'\\n},{\\n name:'蓝莓',\\n url:'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/'\\n}];\\nlet iconStyle = getItem('iconStyle','默认');\\nlet nowStyle = iconStyles.find(x=>x.name===iconStyle);\\nlet iconRoot = nowStyle?nowStyle.url:iconStyles[0].url;\\n\\nfunction get_icons() {\\n // let root = 'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型/';\\n let root = iconRoot;\\n let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|文件|文件夹'.split('|');\\n let obj = {};\\n files.forEach((it) => {\\n  obj[it] = root + it + '.svg';\\n });\\n return obj\\n}\\n\\nfunction isOffice(url){\\n let str='doc|docx|docm|dotm|dotx|xlsx|xlsb|xls|xlsm|pptx|ppsx|ppt|pps|pptm|potm|ppam|potx|ppsm'.split('|').map(it=>'\\\\\\\\.'+it+'$').join('|');\\n let mc=new RegExp(str);\\n return mc.test(url);\\n}\\n\\n$.exports.type_dict = type_dict;\\n$.exports.get_icon_dict = get_icon_dict;\\n$.exports.get_icons = get_icons;\\n$.exports.isOffice = isOffice;\\n$.exports.iconStyles = iconStyles;\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"utils\",\"rule\":\"function bytesToSize(size) {\\n    if (size < 0.1 * 1024) {\\n        //小于0.1KB，则转化成B\\n        size = size.toFixed(2) + \\\"B\\\";\\n    } else if (size < 0.1 * 1024 * 1024) {\\n        // 小于0.1MB，则转化成KB\\n        size = (size / 1024).toFixed(2) + \\\"KB\\\";\\n    } else if (size < 0.1 * 1024 * 1024 * 1024) {\\n        // 小于0.1GB，则转化成MB\\n        size = (size / (1024 * 1024)).toFixed(2) + \\\"MB\\\";\\n    } else {\\n        // 其他转化成GB\\n        size = (size / (1024 * 1024 * 1024)).toFixed(2) + \\\"GB\\\";\\n    }\\n    // 转成字符串\\n    let sizeStr = size + \\\"\\\",\\n        // 获取小数点处的索引\\n        index = sizeStr.indexOf(\\\".\\\"),\\n        // 获取小数点后两位的值\\n        dou = sizeStr.substr(index + 1, 2);\\n    // 判断后两位是否为00，如果是则删除00\\n    if (dou === \\\"00\\\") return sizeStr.substring(0, index) + sizeStr.substr(index + 3, 2);\\n    return size;\\n}\\n$.exports.bytesToSize = bytesToSize;\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\n\\n$.exports.sleep = function(timeout) {\\n    java.lang.Thread.sleep(timeout);\\n}\\n\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n\\nfunction getTime(file,isStandard) {\\n    isStandard = isStandard||false;\\n    let tTime = file.updated_at || file.time_str || \\\"\\\";\\n    tTime = tTime.split(\\\"T\\\");\\n    let date = tTime[0];\\n    if(isStandard){\\n        date = date.replace(/-/g,\\\"/\\\");\\n    }\\n    tTime = tTime[1].split(/Z|\\\\./);\\n    date += \\\" \\\" + tTime[0];\\n    return date;\\n}\\nfunction getTimeInt(timeStr){\\n    return (new Date(timeStr)).getTime()\\n}\\n$.exports.getTime = getTime;\\n\\nlet chnNumChar = {\\n    零: 0,\\n    一: 1,\\n    二: 2,\\n    三: 3,\\n    四: 4,\\n    五: 5,\\n    六: 6,\\n    七: 7,\\n    八: 8,\\n    九: 9\\n};\\n\\nlet chnNameValue = {\\n    十: {\\n        value: 10,\\n        secUnit: false\\n    },\\n    百: {\\n        value: 100,\\n        secUnit: false\\n    },\\n    千: {\\n        value: 1000,\\n        secUnit: false\\n    },\\n    万: {\\n        value: 10000,\\n        secUnit: true\\n    },\\n    亿: {\\n        value: 100000000,\\n        secUnit: true\\n    }\\n}\\n\\nfunction ChineseToNumber(chnStr) {\\n    let rtn = 0;\\n    let section = 0;\\n    let number = 0;\\n    let secUnit = false;\\n    let str = chnStr.split('');\\n\\n    for (let i = 0; i < str.length; i++) {\\n        let num = chnNumChar[str[i]];\\n        if (typeof num !== 'undefined') {\\n            number = num;\\n            if (i === str.length - 1) {\\n                section += number;\\n            }\\n        } else {\\n            let unit = chnNameValue[str[i]].value;\\n            secUnit = chnNameValue[str[i]].secUnit;\\n            if (secUnit) {\\n                section = (section + number) * unit;\\n                rtn += section;\\n                section = 0;\\n            } else {\\n                section += (number * unit);\\n            }\\n            number = 0;\\n        }\\n    }\\n    return rtn + section;\\n}\\n\\nfunction nameCompare(a, b) {\\n    if (a == null || b == null)\\n        return a == null ? b == null ? 0 : -1 : 1;\\n\\n    a = a.replace(/([零一二三四五六七八九十百千万亿])/g, function(match, p1, p2, p3, offset, string) {\\n        // p1 is nondigits, p2 digits, and p3 non-alphanumerics\\n        return ChineseToNumber(p1);\\n    })\\n    b = b.replace(/([零一二三四五六七八九十百千万亿])/g, function(match, p1, p2, p3, offset, string) {\\n        // p1 is nondigits, p2 digits, and p3 non-alphanumerics\\n        return ChineseToNumber(p1);\\n    })\\n\\n    let NUMBERS = java.util.regex.Pattern.compile(\\\"(?<=\\\\\\\\D)(?=\\\\\\\\d)|(?<=\\\\\\\\d)(?=\\\\\\\\D)\\\")\\n    let split1 = NUMBERS.split(new java.lang.String(a));\\n    let split2 = NUMBERS.split(new java.lang.String(b));\\n\\n    for (let i = 0; i < Math.min(split1.length, split2.length); i++) {\\n        let c1 = split1[i].charCodeAt(0);\\n        let c2 = split2[i].charCodeAt(0);\\n        let cmp = 0;\\n        let zeroCharCode = '0'.charCodeAt(0);\\n        let nineCharCode = '9'.charCodeAt(0);\\n\\n        if (c1 >= zeroCharCode && c1 <= nineCharCode && c2 >= zeroCharCode && c2 <= nineCharCode) {\\n            cmp = new java.math.BigInteger(split1[i]).compareTo(new java.math.BigInteger(split2[i]));\\n        }\\n\\n        if (cmp === 0) {\\n            let regex = /[a-zA-Z0-9]/\\n            let s1 = String(split1[i])\\n            let s2 = String(split2[i])\\n            if (regex.test(s1) || regex.test(s2)) {\\n                cmp = new java.lang.String(split1[i]).compareTo(new java.lang.String(split2[i]));\\n                // cmp = s1.localeCompare(s2, 'en')\\n            } else {\\n                cmp = s1.localeCompare(s2, 'zh')\\n            }\\n        }\\n\\n        if (cmp !== 0) {\\n            return cmp;\\n        }\\n    }\\n    let lengthCmp = split1.length - split2.length;\\n    // if (lengthCmp !== 0) lengthCmp = lengthCmp > 0 ? -1 : 1;\\n    return lengthCmp;\\n}\\n\\n$.exports.sorts = function(list, sort) {\\n    if (sort === \\\"类型\\\") {\\n        // log(\\\"类型排序\\\");\\n        list.sort(function(a, b) {\\n            return a.type - b.type\\n        });\\n    } else if (sort === \\\"名称\\\") {\\n        // log(\\\"名称排序\\\");\\n        // list.sort(function(a, b) {\\n        //     return a.name.localeCompare(b.name, \\\"zh\\\")\\n        // });\\n        list.sort(function(a, b) {\\n            return nameCompare(a.name||a.title, b.name||b.title);\\n        });\\n    } else if (sort === \\\"大小\\\") {\\n        // log(\\\"大小排序\\\");\\n        list.sort(function(a, b) {\\n            return (a.size || Number(a.size_str) || 0) - (b.size || Number(b.size_str) || 0);\\n        });\\n    }else if (sort === \\\"时间\\\") {\\n        // log(\\\"时间排序\\\");\\n        list.sort(function(a, b) {\\n            return getTimeInt(getTime(a,true)) - getTimeInt(getTime(b,true))\\n        });\\n    }\\n    return list\\n}\\n\\nfunction similar(s, t, f) {//判断两个字符串之间的相似度\\n    if (!s || !t) {\\n        return 0\\n    }\\n    if(s === t){\\n        return 100;\\n    }\\n    var l = s.length > t.length ? s.length : t.length\\n    var n = s.length\\n    var m = t.length\\n    var d = []\\n    f = f || 2\\n    var min = function (a, b, c) {\\n        return a < b ? (a < c ? a : c) : (b < c ? b : c)\\n    }\\n    var i, j, si, tj, cost\\n    if (n === 0) return m\\n    if (m === 0) return n\\n    for (i = 0; i <= n; i++) {\\n        d[i] = []\\n        d[i][0] = i\\n    }\\n    for (j = 0; j <= m; j++) {\\n        d[0][j] = j\\n    }\\n    for (i = 1; i <= n; i++) {\\n        si = s.charAt(i - 1)\\n        for (j = 1; j <= m; j++) {\\n            tj = t.charAt(j - 1)\\n            if (si === tj) {\\n                cost = 0\\n            } else {\\n                cost = 1\\n            }\\n            d[i][j] = min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost)\\n        }\\n    }\\n    let res = (1 - d[n][m] / l) *100\\n    return res.toFixed(f)\\n}\\n\\n$.exports.similar = similar;\\n$.exports.removeExt = function (file){\\n    return file.split('.').slice(0,-1).join('.')\\n};\\n\\n$.exports.saveHistory = function (id,data){\\n    let view_history = JSON.parse(readFile('view_history.json', 0) || '[]');\\n    let idex = view_history.findIndex(x=>x.extra&&x.extra.id===id);\\n    if(idex > -1){\\n        view_history.splice(idex,1);\\n    }\\n    view_history.unshift(data);\\n    saveFile('view_history.json',JSON.stringify(view_history),0);\\n    return true\\n}\\n\\n$.exports.renderText = function (realUrl,type){\\n    type = type || 'code';\\n    return $('hiker://empty#noHistory##noRecordHistory#').rule((realUrl,type) => {\\n        let d = [];\\n        let html;\\n        try {\\n            html = request(realUrl, {\\n                timeout: $.getTimeOut()\\n            }) || '';\\n        } catch (e) {\\n            html = '预览失败:' + e.message\\n        }\\n        if(/md|code/.test(type)){\\n            require('http://hiker.nokia.press/hikerule/rulelist.json?id=3187');\\n            html = type==='md'?marked.parse(html):marked.parse(\\\"```\\\\n\\\" + html + \\\"\\\\n```\\\");\\n        }else if (type==='txt'&& html.length > 6000) {\\n            html = html.slice(0, 6000) + \\\"...\\\\nerror:文件过大不支持预览\\\";\\n        }\\n        let col = /md|code/.test(type) ? 'rich_text' : 'long_text';\\n        d.push({\\n            title: html,\\n            col_type: col,\\n            url: 'hiker://empty'\\n        });\\n        setResult(d);\\n    }, realUrl,type)\\n}\"},{\"name\":\"密码管理\",\"path\":\"passwordManage\",\"rule\":\"js:\\nlet d = [];\\nsetPageTitle('Alist密码管理');\\nconst {color,small} = $.require('hiker://page/utils');\\nlet idex = getParam('idex', MY_PARAMS.idex||\\\"\\\");\\nif(!idex){\\n    d.push({\\n        title:'索引获取失败,无法管理密码',\\n        col_type:'text_1',\\n        url:'hiker://empty'\\n    });\\n}else{\\n    idex = Number(idex);\\n    let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n    let nowSub = sub_urls[idex];\\n    let name = color(nowSub.name,'#d96715');\\n    let password = nowSub.password;\\n    let webdav = nowSub.webdav||{};\\n    if(!password){\\n        d.push({\\n            title:'订阅'+name+'暂无密码',\\n            col_type:'text_1',\\n            url:'hiker://empty'\\n        });\\n    }else{\\n        d.push({\\n            title:'订阅'+name+'密码如下',\\n            col_type:'text_1',\\n            url:'hiker://empty'\\n        });\\n        d.push({\\n            title:JSON.stringify(password),\\n            col_type:'long_text',\\n        });\\n    }\\n    d.push({\\n       title:'<big><strong>webdav配置<big><strong>',\\n       col_type:'rich_text',\\n    });\\n    let webdav_path = $.rstrip(nowSub.url,'/')+'/dav';\\n    d.push({\\n        title:'webdav地址',\\n        desc:webdav_path,\\n        col_type:'text_1',\\n        url:'copy://'+webdav_path\\n    });\\n    d.push({\\n        title: '账号',\\n        url: $.toString((user)=>{\\n            copy(user||getMyVar('webdav_user',''));\\n            return 'hiker://empty'\\n        },webdav.user),\\n        col_type: \\\"input\\\",\\n        desc: \\\"webdav登录账号\\\",\\n        pic_url: \\\"\\\",\\n        extra:{\\n            defaultValue:webdav.user||getMyVar('webdav_user',''),\\n            onChange:\\\"putMyVar('webdav_user',input)\\\",\\n        }\\n    });\\n    d.push({\\n        title: '密码',\\n        url: $.toString((pwd)=>{\\n            copy(pwd||getMyVar('webdav_pwd',''));\\n            return 'hiker://empty'\\n        },webdav.pwd),\\n        col_type: \\\"input\\\",\\n        desc: \\\"webdav登录密码\\\",\\n        pic_url: \\\"\\\",\\n        extra:{\\n            type:'password',\\n            defaultValue:webdav.pwd||getMyVar('webdav_pwd',''),\\n            onChange:\\\"putMyVar('webdav_pwd',input)\\\",\\n        }\\n    });\\n    d.push({\\n        title:'验证并保存',\\n        col_type:'text_center_1',\\n        url:$('#noLoading#').lazyRule((webdav_path,idex)=>{\\n            showLoading('登录验证中,请稍等...');\\n            let url = webdav_path;\\n            let user = getMyVar(\\\"webdav_user\\\");\\n            let pwd = getMyVar(\\\"webdav_pwd\\\");\\n            if (!user|| !pwd) {\\n                return \\\"toast://请输入webdav登录账号和密码\\\";\\n            }\\n            let webdav = buildWebDav(url, user, pwd);\\n            try {\\n                let list = JSON.parse(webdav.list());\\n                if(list.length < 1){\\n                    hideLoading();\\n                    return 'toast://保存失败!登录检测到文件列表为空,请确保账号密码正确且webdav路径下至少有1个文件/文件夹'\\n                }\\n            }catch (e) {\\n                log(e.message);\\n                hideLoading();\\n                return 'toast://保存失败!登录检测到文件列表为空,请确保账号密码正确且webdav路径下至少有1个文件/文件夹'\\n            }\\n            let sub_urls = JSON.parse(readFile('sub_urls.json', 0) || '[]');\\n            let nowSub = sub_urls[idex];\\n            nowSub.webdav = {user:user,pwd:pwd};\\n            saveFile('sub_urls.json', JSON.stringify(sub_urls),0);\\n            // log(list);\\n            hideLoading();\\n            return 'toast://登录验证成功,已保存凭证'\\n        },webdav_path,idex),\\n    });\\n}\\nsetResult(d);\"},{\"name\":\"高级设置\",\"path\":\"superSettings\",\"rule\":\"js:\\nlet d = [];\\nsetPageTitle('Alist|高级设置');\\naddListener('onClose', $.toString(() => {\\n    refreshPage(false); //刷新\\n}));\\nconst {color,small} = $.require('hiker://page/utils');\\nconst {iconStyles} = $.require('hiker://page/fileType');\\nd.push({\\n    title:'搜索记录自动清除',\\n    desc:'设置执行以下动作时是否自动清除搜索内容',\\n    col_type:'text_1',\\n    url:'hiker://empty'\\n});\\nlet clear_change = getItem('clear_change','');\\nlet clear_refresh = getItem('clear_refresh','开');\\nd.push({\\n    title:clear_change?color('切换目录','#12b668'):'切换目录',\\n    col_type:'text_2',\\n    url:$('#noLoading#').lazyRule((clear_change)=>{\\n        setItem(\\\"clear_change\\\", clear_change? \\\"\\\" : \\\"开\\\");\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    },clear_change)\\n});\\nd.push({\\n    title:clear_refresh?color('回首页','#12b668'):'回首页',\\n    col_type:'text_2',\\n    url:$('#noLoading#').lazyRule((clear_refresh)=>{\\n        setItem(\\\"clear_refresh\\\", clear_refresh? \\\"\\\" : \\\"开\\\");\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    },clear_refresh)\\n});\\nlet size = storage0.getItem('search_size',20);\\nd.push({\\n    title:'搜索每页数:'+color(''+size,'#d96715'),\\n    col_type:'text_2',\\n    url:$(size,'请输入全局搜索的每页显示数量\\\\n实测超过200有卡死的风险').input(()=>{\\n        if(!Number(input)){\\n            return 'toast://输入有误'\\n        }\\n        storage0.setItem('search_size',Number(input));\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    }),\\n});\\nlet auth = getItem(\\\"authorization\\\", \\\"\\\");\\nd.push({\\n    title:'站长auth:'+color(auth.substr(0,3),'#d96715'),\\n    col_type:'text_2',\\n    url:$(auth,'你如果是站长可以设置authorization实现免密搜索').input((auth)=>{\\n        input = input.trim();\\n        if(auth!==input){\\n            setItem('authorization',input);\\n            refreshPage(false);\\n        }\\n        return 'hiker://empty'\\n    },auth),\\n});\\n\\nlet iconStyle = getItem('iconStyle','默认');\\nlet iconSel = iconStyles.map(it=>it.name === iconStyles?color(it.name,'#12b668'):it.name);\\nd.push({\\n    title:'图标风格:    '+color(iconStyle,'#d96715'),\\n    desc:'可选全局图标主题样式',\\n    col_type:'text_1',\\n    url:$(iconSel,2,'请选择一套图标样式').select((iconStyle)=>{\\n        input = pdfh(input,'body&&Text').replace('““””','');\\n        if(iconStyle!==input){\\n            setItem('iconStyle',input);\\n            refreshPage(false);\\n        }\\n        return 'hiker://empty'\\n    },iconStyle)\\n});\\nd.push({\\n    title:'自定义过滤条件'+small(color('(点击来个例子)','#aaaaaa')),\\n    desc:'设置一些自定义的筛选内容附加到主页快速筛选栏',\\n    col_type:'text_1',\\n    url:$('来个示例?').confirm(()=>{\\n        putMyVar('filter_name', '视频');\\n        putMyVar('filter_rule', '\\\\\\\\.m3u8|\\\\\\\\.mp4');\\n        refreshPage(false);\\n        return 'toast://例子给你了,自己保存吧!'\\n    })\\n});\\nd.push({\\n    title: '名称',\\n    desc: '如: 视频',\\n    col_type: 'input',\\n    url: $.toString(() => {\\n    }),\\n    extra: {\\n        defaultValue: getMyVar('filter_name', ''),\\n        onChange: 'putMyVar(\\\"filter_name\\\",input)'\\n    }\\n});\\nd.push({\\n    title: '内容',\\n    desc: '如: \\\\\\\\.m3u8|\\\\\\\\.mp4',\\n    col_type: 'input',\\n    url: $.toString(() => {\\n\\n    }),\\n    extra: {\\n        defaultValue: getMyVar('filter_rule', ''),\\n        onChange: 'putMyVar(\\\"filter_rule\\\",input)',\\n        height: 2,\\n        highlight: true,\\n        type: \\\"textarea\\\",\\n    }\\n});\\nfunction saveFilter() {\\n    let filter_name = getMyVar('filter_name', '').trim();\\n    let filter_rule = getMyVar('filter_rule', '').trim();\\n    if (!filter_name) {\\n        return 'toast://名称必填!'\\n    }\\n    if (!filter_rule) {\\n        return 'toast://过滤规则必填!'\\n    }\\n    let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\n    let idex = filter_rules.findIndex(it => it.name === filter_name);\\n    if (idex > -1) {\\n        if (filter_rules[idex].rule !== filter_rule) {\\n            filter_rules[idex].rule = filter_rule;\\n            // filter_rules[idex].active = true;\\n            return $('检测到本地有重复的' + filter_name + ',是否覆盖?').confirm((filter_rules) => {\\n                saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                refreshPage(false);\\n                return 'toast://已保存'\\n            }, filter_rules)\\n        } else {\\n            return 'toast://没有操作'\\n        }\\n    } else {\\n        filter_rules.unshift({\\n            name: filter_name,\\n            rule: filter_rule,\\n            active:true,\\n        });\\n        saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n        refreshPage(false);\\n        return 'toast://已保存'\\n    }\\n}\\n\\nd.push({\\n    title:'保存规则',\\n    col_type: 'text_3',\\n    url:$('#noLoading#').lazyRule((saveFilter)=>{\\n        return saveFilter();\\n    },saveFilter)\\n});\\nd.push({\\n    title:'导入规则',\\n    col_type: 'text_3',\\n    url:$(\\\"{{clipboard}}\\\", \\\"自动识别剪切板内容或手动输入口令\\\").input(()=>{\\n        input=input.trim();\\n        let url=input.split('\\\\n')[1];\\n        if(!/Alist自定义过滤规则/.test(input)||!/^http/.test(url)){\\n            return 'toast://导入口令有误'\\n        }\\n        try {\\n            let code=parsePaste(url);\\n            let newRules = JSON.parse(base64Decode(code));\\n            let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\n            let filter_cnt = filter_rules.length;\\n            newRules = newRules.filter(x=>x.name&&x.rule);\\n            if(!Array.isArray(newRules) || newRules.length < 1){\\n                return 'toast://导入的东西看起来没对呢!'\\n            }\\n            newRules.forEach((it)=>{\\n                let idex = filter_rules.findIndex(x=>$.rstrip(x.name) === $.rstrip(it.name));\\n                idex>-1?filter_rules[idex] = it:filter_rules.unshift(it);\\n            });\\n            let new_cnt = filter_rules.length - filter_cnt;\\n            if(new_cnt > 0 ){\\n                saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                refreshPage(false);\\n                return 'toast://已保存'+new_cnt+'条记录'\\n            }else{\\n                return 'toast://没有待保存的内容'\\n            }\\n        }catch (e) {\\n            return 'toast://导入失败!\\\\n'+ e.message;\\n        }\\n    }),\\n});\\nd.push({\\n    title:'分享规则',\\n    col_type: 'text_3',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\n        if(filter_rules.length < 1){\\n            return 'toast://你还没有规则,无法分享!'\\n        }\\n        let shareText = base64Encode(JSON.stringify(filter_rules));\\n        var pastes = getPastes();\\n        var url = sharePaste(shareText,pastes.slice(-1)[0]);\\n        let import_rule= \\\"Alist自定义过滤规则：\\\"+filter_rules[0].name+'等'+filter_rules.length+'条\\\\n'+url;\\n        copy(import_rule);\\n        return 'hiker://empty'\\n    })\\n});\\nlet filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\nfilter_rules.forEach((it, idex) => {\\n    d.push({\\n        title: it.active?color(it.name,'#12b668'):color(it.name,'#aaaaaa'),\\n        desc: it.rule,\\n        url: $(['删除', '修改名称','修改规则','快捷输入','启用','禁用'], 2, '请选择1个操作').select((it, filter_rules, idex) => {\\n            if (input === '删除') {\\n                let filterOption = getItem('filterOption','全部');\\n                if(filterOption===it.name){\\n                    clearItem('filterOption')\\n                }\\n                filter_rules.splice(idex, 1);\\n            }else if (input === '修改名称') {\\n                return $(it.name,'给此规则改个名字吧').input((filter_rules,idex)=>{\\n                    input = input.trim();\\n                    if(input){\\n                        filter_rules[idex].name = input;\\n                        saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                        refreshPage(false);\\n                        return 'toast://修改成功'\\n                    }else{\\n                        return 'toast://修改失败'\\n                    }\\n                },filter_rules,idex);\\n            }else if (input === '修改规则') {\\n                return $(it.rule,'给此规则改个匹配内容吧').input((filter_rules,idex)=>{\\n                    input = input.trim();\\n                    if(input){\\n                        filter_rules[idex].rule = input;\\n                        saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                        refreshPage(false);\\n                        return 'toast://修改成功'\\n                    }else{\\n                        return 'toast://修改失败'\\n                    }\\n                },filter_rules,idex);\\n            } else if (input === '快捷输入') {\\n                putMyVar(\\\"filter_name\\\",it.name);\\n                putMyVar(\\\"filter_rule\\\",it.rule);\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }else if (input === '启用') {\\n                filter_rules[idex].active = true;\\n                saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                refreshPage(false);\\n                return 'toast://已启用'\\n            }else if (input === '禁用') {\\n                filter_rules[idex].active = false;\\n                saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n                refreshPage(false);\\n                return 'toast://已禁用'\\n            }\\n            saveFile('filter_rules.json', JSON.stringify(filter_rules), 0);\\n            refreshPage(false);\\n            return 'toast://已' + input\\n        }, it, filter_rules, idex),\\n        col_type: \\\"text_1\\\",\\n        extra:{\\n            idex:idex+''\\n        }\\n    })\\n});\\nsetResult(d);\"},{\"name\":\"观看历史\",\"path\":\"history\",\"rule\":\"js:\\nvar d = [];\\nsetPageTitle('Alist|观影历史');\\nconst {color,small} = $.require('hiker://page/utils');\\nd.push({\\n    title: \\\"清空\\\",\\n    url: $('确认清空历史记录?').confirm(() => {\\n        // deleteFile('view_history.json');\\n        saveFile('view_history.json','[]',0);\\n        refreshPage(false);\\n        return \\\"toast://观影历史已清空!\\\"\\n    }),\\n    col_type: \\\"text_3\\\"\\n});\\nlet hisPath = `hiker://files/rules/files/${MY_RULE.title}/view_history.json`;\\nd.push({\\n    title: \\\"编辑\\\",\\n    url: $('#noLoading#').lazyRule((hisPath)=>{\\n        if(!fileExist(hisPath)){\\n            saveFile('view_history.json','[]',0);\\n        }\\n        return 'editFile://'+hisPath\\n    },hisPath),\\n    col_type: \\\"text_3\\\"\\n});\\nlet option = getItem('his_click','播放');\\nd.push({\\n    title: option==='播放'?option:color(option,'#ab2415'),\\n    url: $('#noLoading#').lazyRule((color)=>{\\n        let option = getItem('his_click','播放');\\n        let nextOption = option === '播放'?'删除':'播放';\\n        setItem('his_click',nextOption);\\n        updateItem(\\\"his_click\\\", {\\n            title:nextOption==='播放'?nextOption:color(nextOption,'#ab2415')\\n        });\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    },color),\\n    col_type: \\\"text_3\\\",\\n    extra:{\\n        id:'his_click'\\n    }\\n});\\nlet view_history = JSON.parse(readFile('view_history.json', 0) || '[]');\\nif(view_history.length > 0){\\n    view_history.forEach((it)=>{\\n        it.col_type = 'text_1';\\n        if(option==='删除'){\\n            it.url = $('#noLoading#').lazyRule((id)=>{\\n                let view_history = JSON.parse(readFile('view_history.json', 0) || '[]');\\n                let idex = view_history.findIndex(x=>x.extra.id === id);\\n                view_history.splice(idex,1);\\n                saveFile('view_history.json', JSON.stringify(view_history),0);\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            },it.extra.id);\\n        }\\n        d.push(it);\\n    });\\n}else{\\n  d.push({\\n      title:'暂无观影记录,先去观看一个视频吧!',\\n      col_type:'text_center_1',\\n      url:'hiker://empty'\\n  });\\n}\\nsetResult(d);\"},{\"name\":\"文件上传\",\"path\":\"upload\",\"rule\":\"js:\\nsetPageTitle('Alist|访客上传文件');\\nconst {color,small} = $.require('hiker://page/utils');\\nlet html = `\\n<!doctype html>\\n<html> \\n    <head> \\n    <!--<author>顺承天意&&@LoyDgIk&&道长</author>-->\\n        <meta charset=\\\"UTF-8\\\"> \\n        <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0\\\"> <!-- <meta name=\\\"color-scheme\\\" content=\\\"light dark\\\"> --> \\n        <title>上传文件</title> \\n        <style>\\n        button {\\n            display: block;\\n            width: 100%;\\n            margin: 6px;\\n            outline: none;\\n            height: 40px;\\n            line-height: 40px;\\n            color: #fff;\\n            background-color: #26a2ff;\\n            text-align: center;\\n            border-radius: 4px;\\n            border: none;\\n            cursor: pointer;\\n        }\\n\\n        #upload-input {\\n            opacity: 0;\\n            filter: alpha(opacity=0);\\n            display: inline-block;\\n            width: 100%;\\n            height: 100%;\\n        }\\n\\n        #upload-text {\\n            position: relative;\\n            bottom: 40px;\\n            user-select: none;\\n        }\\n    </style>\\n    </head>\\n    <body><button onclick=\\\"easyUpload()\\\"> <span id=\\\"upload-input\\\">选择文件</span><span id=\\\"upload-text\\\">选择文件</span> </button>\\n        \\n    </body>\\n</html>\\n`;\\nlet sub_urls = $.get_sub_urls();\\nlet baseurl = $.rstrip(getMyVar(\\\"baseurl\\\", sub_urls[0].url), '/');\\nlet path = getMyVar(\\\"path\\\", \\\"\\\");\\nlet password = sub_urls.find(x => x.url.includes(baseurl)).password || {};\\npassword = password[path] || '';\\nlet obj = {\\n    base_url:baseurl,\\n    path:path,\\n    password:password,\\n    html:html,\\n};\\nfunction x5js(obj) {\\n    document.write(obj.html);\\n    function easyUpload() {\\n        var input = document.createElement(\\\"input\\\");\\n        input.type = \\\"file\\\";\\n        input.click();\\n        input.onchange = function() {\\n            fba.showLoading(\\\"正在上传\\\");\\n            var files = input.files;\\n            const form = new FormData();\\n            for (let i = 0; i < files.length; i++) {\\n                form.append(\\\"files\\\", files[i], files[i].name);\\n            }\\n            form.append(\\\"path\\\", obj.path);\\n            form.append(\\\"password\\\", obj.password);\\n            var xhr = new XMLHttpRequest();\\n            //xhr.setRequestHeader('Content-Type', 'application/json');\\n            var action = obj.base_url + \\\"/api/public/upload\\\"; //上传接口\\n            // fba.log(\\\"正在上传\\\");\\n            xhr.onload = function() {\\n                fba.hideLoading();\\n                if (xhr.readyState === 4 && xhr.status === 200) {\\n                    var resultObj = JSON.parse(xhr.responseText);\\n                    fba.log(xhr.responseText);\\n                    alert(\\\"上传成功\\\\n\\\" + resultObj.message);\\n                    fba.back(true);\\n                }else{\\n                    alert(\\\"上传失败\\\");\\n                }\\n            }\\n            xhr.open(\\\"POST\\\", action);\\n            xhr.send(form); //发送表单数据\\n        }\\n    }\\n    window.easyUpload = function() {\\n        try {\\n            easyUpload();\\n        } catch (e) {\\n            fba.log(e.toString());\\n        }\\n    }\\n}\\nvar d = [];\\nd.push({\\n    title:'当前主页:'+small(color(obj.base_url,'#aaaaaa')),\\n    desc:'当前相对路径:'+small(color(obj.path,'#aaaaaa')),\\n    col_type: 'text_1',\\n    url:obj.base_url + obj.path,\\n    extra: {\\n        password:obj.password\\n    }\\n});\\nd.push({\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"60&&list\\\",\\n    url:\\\"about:blank\\\",\\n    extra: {\\n        js: $.toString(x5js, obj),\\n        //jsLoadingInject: true\\n    }\\n});\\nsetResult(d);\"},{\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\nvar d = [];\\nsetPageTitle('Alist|🔍全局搜索');\\nlet nsearch = getMyVar('searchAll','');\\naddListener('onClose', $.toString(() => {\\n    let clear_refresh = getItem('clear_refresh','开');\\n    if(clear_refresh === '开'){\\n        clearMyVar('searchAll');\\n    }\\n}));\\nif(MY_PAGE===1||!nsearch) {\\n    d.push({\\n        title: '🔍搜索',\\n        desc: '搜点什么吧?',\\n        url: $.toString(() => {\\n            refreshPage(false);\\n        }),\\n        col_type: 'input',\\n        extra: {\\n            defaultValue: nsearch,\\n            onChange: 'putMyVar(\\\"searchAll\\\",input)',\\n        }\\n    });\\n}\\nlet searchResult = [];\\nlet showDetail = getItem('showDetail', '开') === '开';\\nlet filterOption = getItem('filterOption','全部');\\nif(nsearch){\\n    let sub_urls = $.get_sub_urls();\\n    let baseurl = $.rstrip(getMyVar(\\\"baseurl\\\", sub_urls[0].url), '/');\\n    let path = getMyVar(\\\"path\\\", \\\"\\\");\\n    let lastSearch = baseurl + path + '?key='+nsearch+'|'+showDetail;\\n    if(lastSearch === getMyVar('lastSearch','')){\\n        if(MY_PAGE===1) {\\n            showLoading('获取上次搜索结果中...');\\n        }\\n        log(`搜索${nsearch},第${MY_PAGE}页`);\\n        searchResult = JSON.parse(readFile('search_results.json',0));\\n    }else {\\n        showLoading(`搜索${nsearch}中，请稍等...`);\\n        const icon_dict = $.require('hiker://page/fileType').get_icon_dict();\\n        const icons = $.require('hiker://page/fileType').get_icons();\\n        const {getLink} = $.require('hiker://page/api');\\n        let clickOption = getItem('clickOption', '打开');\\n        const {bytesToSize, small, color, getTime,sorts} = $.require('hiker://page/utils');\\n        let showZimu = getItem('showZimu', '开');\\n        d.push({\\n            title: '主页:' + small(color(baseurl, '#aaaaaa')),\\n            desc: '路径:' + small(color(path, '#aaaaaa')),\\n            url: 'hiker://empty',\\n            col_type: 'text_1'\\n        });\\n\\n        try {\\n            let password = sub_urls.find(x => x.url.includes(baseurl)).password || {};\\n            let res = JSON.parse(post(baseurl + \\\"/api/public/search\\\", {\\n                headers: {\\n                    \\\"Content-Type\\\": \\\"application/json\\\",\\n                    \\\"authorization\\\": getItem(\\\"authorization\\\", \\\"\\\")\\n                },\\n                body: JSON.stringify({\\n                    path: path,\\n                    keyword: nsearch,\\n                    password: password[path] || ''\\n                }),\\n                timeout: $.getTimeOut(),\\n            }));\\n\\n            let list = res.data;\\n            if (list.length < 1) {\\n                searchResult.push({\\n                    title: \\\"找不到你想要的ʕ·ᴥ·ʔ\\\",\\n                    url: \\\"hiker://empty\\\"\\n                });\\n            } else {\\n                if(filterOption==='文件'){\\n                    list = list.filter(x=>x.type!==1)\\n                }else if(filterOption==='文件夹'){\\n                    list = list.filter(x=>x.type===1)\\n                }else if(filterOption!=='全部'){\\n                    let filter_rules = JSON.parse(readFile('filter_rules.json', 0) || '[]');\\n                    let filter_rule = filter_rules.find(x=>x.name===filterOption);\\n                    if(filter_rule&&filter_rule.rule){\\n                        if(filter_rule.rule.startsWith('!')){\\n                            list = list.filter(x=>!(new RegExp(filter_rule.rule.slice(1))).test(x.name));\\n                        }else{\\n                            list = list.filter(x=>(new RegExp(filter_rule.rule)).test(x.name));\\n                        }\\n                    }\\n                }\\n                showLoading('搜索到' + list.length + '条结果,加载中');\\n                list.forEach((item) => {\\n                    let it_type = item.type;//资源类型\\n                    let url = 'hiker://empty';\\n                    let title = item.name;//资源名称\\n                    let path = item.path;//资源路径\\n                    let id = baseurl + path + title;//资源唯一标志\\n                    let ext = title.split('.').slice(-1)[0];\\n                    let img = it_type === 1 ? icon_dict['1'] : (icons[ext] || icon_dict[it_type + '']);\\n                    if (it_type === 1) {\\n                        url = $('#noLoading#').lazyRule((item) => {\\n                            putMyVar(\\\"path\\\", item.path + \\\"/\\\" + item.name)\\n                            back();\\n                            return \\\"hiker://empty\\\"\\n                        }, item);\\n                    } else if (it_type === 3 || /\\\\.m3u8$/.test(title)) { //3是媒体,禁用下载和跳转\\n                        url = getLink(title,path, '打开', showZimu, '#isVideo=true#',true);\\n                    } else if (it_type === 6) {\\n                        url = getLink(title,path, '打开', showZimu, \\\"#.jpg\\\",true);\\n                    } else { //跟随系统预览和下载\\n                        url = getLink(title,path, clickOption, showZimu,true);\\n                    }\\n                    searchResult.push({\\n                        name:title,\\n                        title: title,\\n                        img: img,\\n                        url: url,\\n                        col_type: \\\"avatar\\\",\\n                        extra: {\\n                            id: id,\\n                            type: it_type,\\n                            title: title,\\n                        }\\n                    });\\n                    // log(item);\\n                    if (showDetail) {\\n                        let date = (item.updated_at || item.time_str) ? getTime(item) : '\\\\t\\\\t\\\\t\\\\t';\\n                        let size = item.size_str;\\n                        if (!size || size === \\\"\\\") {\\n                            size = item.size === 0 ? \\\"/\\\" : bytesToSize(item.size)\\n                        }\\n                        if (size && size !== \\\"\\\" && size !== 0) {\\n                            size = \\\"&nbsp;&nbsp;&nbsp;\\\" + size;\\n                        } else {\\n                            size = \\\"\\\";\\n                        }\\n                        let desc = date + size;\\n                        searchResult.push({\\n                            name:title,\\n                            title: small(color(desc, '#aaaaaa')),\\n                            col_type: \\\"text_1\\\",\\n                            url: url,\\n                            extra: {\\n                                id: id,\\n                                type: it_type,\\n                                title: title,\\n                            }\\n                        })\\n                    }\\n                });\\n                toast('搜索结束，即将加载完毕...');\\n            }\\n            putMyVar('lastSearch', lastSearch);\\n            if(!showDetail){//非详细模式才自动按名称排序\\n                sorts(searchResult,'名称');\\n            }\\n            saveFile('search_results.json', JSON.stringify(searchResult), 0);\\n\\n        } catch (e) {\\n            searchResult.push({\\n                title: \\\"好像不能搜索,点击返回\\\",\\n                desc: e.message,\\n                url: $('#noLoading#').lazyRule(() => {\\n                    back();\\n                    return \\\"hiker://empty\\\"\\n                })\\n            });\\n            putMyVar('lastSearch', lastSearch);\\n            saveFile('search_results.json', JSON.stringify(searchResult), 0);\\n            // log(e.message);\\n        }\\n    }\\n}\\nlet size = storage0.getItem('search_size',20);\\nif(showDetail){size = size*2} // 显示详细需要x2\\nsearchResult = searchResult.slice((MY_PAGE-1)*size,MY_PAGE*size);\\nd = d.concat(searchResult);\\nhideLoading();\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"点击函数\",\"path\":\"clickFunction\",\"rule\":\"function clickLazy(baseurl, npath, path,clickOption,showZimu,input, ext,reload){\\n    if (clickOption !== '菜单') {\\n        let u=$.getU(baseurl,npath,ext);\\n        if(/toast:/.test(u)){\\n            return u\\n        }\\n        let playUrl = baseurl + \\\"/d\\\" + npath;//文件302直链\\n        u = ext?playUrl+ext:playUrl; // 既然获取u没报错,为了可以让视频投屏,那么u覆写为302直链\\n        //log(u);\\n        if (clickOption === '打开') {\\n            if(ext&&/isVideo/.test(ext)&&showZimu==='开'){//判断打开的是媒体文件才走字幕逻辑\\n                let id = baseurl + npath;//当前文件的唯一标识\\n                let data = {\\n                    title: input,\\n                    desc: id,\\n                    extra:{\\n                        id:id,\\n                    }\\n                };\\n                var now_files = storage0.getMyVar(\\\"now_files\\\",[]);//获取缓存的,避免二次请求\\n                // log('同目录文件数为:'+now_files.length);\\n                if(now_files.length < 1|| reload){//从搜索进去的,只能重新获取了\\n                    const {getFiles} = $.require('hiker://page/api');\\n                    let dirInfo = getFiles(path,'文件');\\n                    now_files = dirInfo.result||[];\\n                    // log('重新获取同目录文件:'+now_files.length);\\n                }\\n                let files;\\n                if(reload){\\n                    files = now_files.filter(x=>x.type!==1&&/\\\\.srt$|\\\\.vtt$|\\\\.ass$|\\\\.ssa$/.test(x.title)).map(x=>x.title); // 筛选文件并且名称含字幕后缀的\\n                }else{\\n                    files = now_files.filter(x=>x.type!==1&&/\\\\.srt$|\\\\.vtt$|\\\\.ass$|\\\\.ssa$/.test(x.name)).map(x=>x.name); // 筛选文件并且名称含字幕后缀的\\n                }\\n                // log(now_files);\\n                if(files.length > 0){//当前目录有字幕文件\\n                    let bestFile = files.find(x=>$.removeExt(input).includes($.removeExt(x)));//视频文件去掉后缀完美包含字幕文件去后缀\\n                    if(bestFile){//找到了最符合的文件名称\\n                        log(`${input}自动匹配最佳外挂字幕文件:${bestFile}`);\\n                        let realUrl = baseurl + '/d' + path + bestFile;\\n                        data.url = JSON.stringify({\\n                            urls: [u],\\n                            subtitle: realUrl\\n                        });\\n                        $.saveHistory(id,data);\\n                        return JSON.stringify({\\n                            urls: [u],\\n                            subtitle: realUrl\\n                        });\\n                    }else{\\n                        files = files.filter(x=>$.similar($.removeExt(input),$.removeExt(x))>=30);//筛选相似度>30的文件\\n                        if (files.length > 0) {\\n                            files.unshift('不需要字幕');\\n                            return $(files, 1, \\\"请选择字幕\\\").select((baseurl, path, u,ext,id,playUrl,data) => {\\n                                if(input==='不需要字幕'){\\n                                    data.url = u;\\n                                    $.saveHistory(id,data);\\n                                    return u\\n                                }\\n                                let realUrl = baseurl + '/d' + path + input;\\n                                data.url = JSON.stringify({\\n                                    urls: [u],\\n                                    subtitle: realUrl\\n                                });\\n                                $.saveHistory(id,data);\\n                                return JSON.stringify({\\n                                    urls: [u],\\n                                    subtitle: realUrl\\n                                });\\n                            }, baseurl, path, u,ext,id,playUrl,data);\\n                        } else {\\n                            data.url = u;\\n                            $.saveHistory(id,data);\\n                            return u\\n                        }\\n                    }\\n                }else{\\n                    data.url = u;\\n                    $.saveHistory(id,data);\\n                    return u\\n                }\\n            }else if(ext&&/isVideo/.test(ext)&&showZimu!=='开'){\\n                let id = baseurl + npath;//当前文件的唯一标识\\n                let data = {\\n                    title: input,\\n                    desc: id,\\n                    url:u,\\n                    extra:{\\n                        id:id,\\n                    }\\n                };\\n                $.saveHistory(id,data);\\n                return u\\n            }else{\\n                return u\\n            }\\n        }\\n        if (clickOption === '打开') {\\n            return u\\n        } else if (clickOption === '下载') {\\n            return 'download://' + u\\n        }\\n    }else{\\n        let sub_urls = $.get_sub_urls();\\n        let rstrip = $.rstrip;\\n        let nowSub = sub_urls.find(x=>rstrip(x.url,'/')===baseurl);\\n        let dav = nowSub?nowSub.webdav||{}:{};\\n        let sel_list = ['打开', '下载', '预览', '复制直链'];\\n        if(path.split('/').length>1&&nowSub&&nowSub.webdav&&nowSub.webdav.user){\\n            sel_list.push('删除');\\n        }\\n        return $(sel_list, 2, '请选择1个文件操作').select((baseurl, path,npath,ext,user,pwd,dav) => {\\n            //log(dav);\\n            let u=$.getU(baseurl,npath,ext);\\n            if(/toast:/.test(u)){\\n                return u\\n            }\\n            let realUrl = baseurl + '/d' + npath;\\n            if (input === '打开') {\\n                return u;\\n            } else if (input === '下载') {\\n                return 'download://' + u\\n            } else if (input === '复制直链') {\\n                return 'copy://' + realUrl\\n            }else if(input === '删除'){\\n                // let url = baseurl +'/dav'+npath;\\n                let fname = npath.split('/').slice(-1)[0];\\n                let url = baseurl +'/dav'+path;\\n                return $('确认删除:'+fname+' ?').confirm((realUrl,url,fname,user,pwd)=>{\\n                    let webdav = buildWebDav(url, user, pwd);\\n                    // log(fname);\\n                    log(url+fname);\\n                    webdav.delete(fname)\\n                    refreshPage(false);\\n                    return \\\"toast://已删除\\\"+realUrl\\n                },realUrl,url,fname,user,pwd);\\n            }else if (input === '预览') {\\n                if (/\\\\.md$/.test(realUrl)) {\\n                    return $.renderText(realUrl,'md');\\n                } else if (/\\\\.html$|\\\\.json$|\\\\.js$|\\\\.css$|\\\\.py$|\\\\.php$|\\\\.go$/.test(realUrl)) {\\n                    return $.renderText(realUrl,'code');\\n                } else if (/\\\\.txt$/.test(realUrl)) {\\n                    return $.renderText(realUrl,'txt');\\n                } else if (/\\\\.pdf$/.test(realUrl)) {\\n                    return \\\"x5://https://alist-org.github.io/pdf.js/web/viewer.html?file=\\\" + realUrl\\n                } else if ($.isOffice(realUrl)) {\\n                    return \\\"x5://https://view.officeapps.live.com/op/view.aspx?src=\\\" + realUrl\\n                } else {\\n                    let sub_urls = $.get_sub_urls();\\n                    let password = sub_urls.find(x => x.url.includes(baseurl)).password || {};\\n                    let res = JSON.parse(post(baseurl + \\\"/api/public/preview\\\", {\\n                        headers: {\\n                            \\\"Content-Type\\\": \\\"application/json\\\"\\n                        },\\n                        body: JSON.stringify({\\n                            path: npath,\\n                            password: password[npath] || \\\"\\\",\\n                        }),\\n                        timeout: $.getTimeOut(),\\n                    }));\\n                    if (res.data) {\\n                        return res.data.preview_url + '&access_token=' + res.data.access_token;\\n                    } else {\\n                        return 'toast://' + res.message;\\n                    }\\n                }\\n            } else {\\n                return 'toast://无效操作'\\n            }\\n        },baseurl, path,npath,ext,dav.user,dav.pwd,dav);\\n\\n    }\\n}\\n\\n$.exports.clickLazy = clickLazy;\"},{\"col_type\":\"movie_3\",\"name\":\"webDav上传文件\",\"path\":\"webdavUpload\",\"rule\":\"js:\\nlet d=[];\\nsetPageTitle('Alist|webdav上传');\\naddListener('onClose', $.toString(() => {\\n    refreshPage(false); //刷新\\n}));\\nd.push({\\n    title: '上传☁️',\\n    url: $.toString(()=>{\\n        let input = getMyVar('webdav_path','');\\n        if(!/^(hiker|file|\\\\/storage\\\\/|\\\\/sdcard\\\\/)/.test(input)){\\n            return 'toast://文件路径有误!'\\n        }\\n        showLoading(\\\"上传中，请稍候\\\");\\n        let sub_urls = $.get_sub_urls();\\n        let rstrip = $.rstrip;\\n        var base_path = rstrip(getMyVar(\\\"baseurl\\\", sub_urls[0].url), '/');\\n        var path = getMyVar(\\\"path\\\", \\\"\\\");\\n        let nowSub = sub_urls.find(x=>rstrip(x.url,'/')===base_path);\\n        let url = base_path +'/dav'+path;\\n        let name = input.split(\\\"/\\\").slice(-1)[0];\\n        log(`开始将${name}上传至${url}`);\\n        let webdav = buildWebDav(url, nowSub.webdav.user, nowSub.webdav.pwd);\\n        webdav.upload(name, input);\\n        hideLoading();\\n        refreshPage(false);\\n        return \\\"toast://上传完毕,可以在此继续选择文件上传或者返回上级查看成功的文件\\\"\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"待上传的文件路径,支持hiker://,file://,/storage/开头\\\",\\n    pic_url: \\\"\\\",\\n    extra:{\\n        height:3,\\n        type:'textarea',\\n        id:'webdav_path',\\n        defaultValue:getMyVar('webdav_path',''),\\n        onChange:\\\"putMyVar('webdav_path',input)\\\",\\n    }\\n});\\nd.push({\\n    title: \\\"选择文件路径\\\",\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let fp=config.lib.fileSelect;\\n        let f=$.rc(fp);\\n        return f.fileSelectionUri({\\n            callback: $.toString(() => {\\n                let target = findItem(\\\"webdav_path\\\").extra;\\n                updateItem(\\\"webdav_path\\\", {\\n                    extra: Object.assign(target, {\\n                        defaultValue: PATH\\n                    })\\n                });\\n                putMyVar('webdav_path',PATH);\\n                return true;\\n            }),\\n            onClickType:'confirm',\\n            fileType: \\\"\\\",\\n            pattern: 0,\\n            requireUrl:fp,\\n            initialPath:getPath('hiker://files/').slice(7),\\n            memory:'true',\\n        });\\n    }),\\n    col_type: \\\"text_center_1\\\",\\n});\\n\\nsetResult(d)\"}]","proxy":"","icon":"https://cdn.jsdelivr.net/gh/alist-org/logo@main/can_circle.svg"},{"last_chapter_rule":"","title":"云盘君(推送)","author":"小棉袄🌞","version":10,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\neval(JSON.parse(fetch(\"hiker://page/sou\")).rule);\nlet s = getMyVar('s', '');\nif (s == \"\") {\n    if (MY_PAGE == 1) {\n\n        header = {\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',\n            'Host': 'top.baidu.com',\n            'Accept': 'application/json, text/plain, */*',\n            'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',\n            'Accept-Encoding': 'gzip, deflate, br',\n            'Referer': 'https://top.baidu.com/board?tab=novel',\n        }\n\n        let json = request('https://top.baidu.com/api/board?platform=wise&tab=teleplay&tag=%7B%22category%22:%22%E5%85%A8%E9%83%A8%E7%B1%BB%E5%9E%8B%22,%22country%22:%22%E6%AC%A7%E7%BE%8E%22%7D', {\n            headers: header\n        });\n\n        let list = JSON.parse(json).data.cards[0].content;\n\n        for (let i = 0; i < list.length; i++) {\n            let name = list[i].word + '    (' + list[i].show[2] + ')';\n            let des = list[i].desc;\n            d.push({\n                title: i == \"0\" ? '““””<span style=\"color:#ff3300\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : i == \"1\" ? '““””<span style=\"color:#ff6600\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : i == \"2\" ? '““””<span style=\"color:#ff9900\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : '““””<span>' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name,\n                url: $('#noLoading#').lazyRule((name) => {\n                    name = name.split('    (')[0];\n                    putMyVar('s', name);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, name),\n                desc: des,\n                col_type: \"text_1\"\n            });\n        }\n    }\n    setResult(d);\n}","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"规则列表\",\"path\":\"data\",\"rule\":\"let rules = [{\\n    name: \\\"云盘资源\\\",\\n    page: true,\\n    find: function(s, page) {\\n        let url = \\\"https://res.yunpan.win/?PageIndex=\\\" + page + \\\"&PageSize=12&Keyword=\\\" + s + \\\"&Type=&Tag=\\\";\\n        let html = request(url, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://res.yunpan.win/\\\"\\n            }\\n        });\\n\\n        let arr = pdfa(html, \\\"main&&.card\\\");\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = arr[i];\\n            let u = pdfh(it, \\\".card-link,1&&onclick\\\").match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\n            u = u.length > 0 ? u[0] : url;\\n            d.push({\\n                title: pdfh(it, \\\".card-title&&Text\\\"),\\n                pic_url: pd(it, \\\"img&&src\\\", url),\\n                //url: 'hiker://page/detail?rule=云盘汇影&url=' + u + '??fypage',\\n                url: 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(u) + '???fypage',\\n                desc: \\\"““””<font color=#f13b66a>云盘资源</font>&nbsp;\\\" + (pdfh(it, \\\".card-text,-1&&Text\\\")),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"UP云搜\\\",\\n    page: true,\\n    find: function(s, page) {\\n        let url = \\\"https://api.upyunso2.com/search?keyword=\\\" + s + \\\"&page=\\\" + page + \\\"&s_type=1\\\";\\n        let html = request(url, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://www.upyunso.com\\\",\\n                \\\"Cookie\\\": \\\"code=1919\\\"\\n            }\\n        });\\n        //log(base64Decode(html));\\n        let arr = JSON.parse(base64Decode(html)).result.items;\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = arr[i];\\n            let u = it.page_url;\\n            //u = u.length > 0 ? u[0] : url;\\n            if (!u.includes(\\\"aliyundrive\\\")) {\\n                continue;\\n            }\\n            d.push({\\n                title: it.title,\\n                //url: 'hiker://page/detail?rule=云盘汇影&url=' + u + '??fypage',\\n                url: 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(u) + '???fypage',\\n                desc: \\\"““””<font color=#f13b66a>UP云搜</font>&nbsp;\\\" + (it.path),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"猫狸盘搜\\\",\\n    page: false,\\n    find: function(s, page) {\\n        let html = request(\\\"https://www.alipansou.com/search?k=\\\" + s, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://www.alipansou.com/search?k=\\\" + s\\n            }\\n        });\\n        let arr = pdfa(html, \\\"#app&&a\\\");\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = \\\"<div>\\\" + arr[i] + \\\"</div>\\\";\\n            let u = pdfh(it, \\\"a&&href\\\");\\n            //log(u);\\n            if (!u.includes(\\\"/s/\\\")) {\\n                continue;\\n            }\\n            u = \\\"https://www.alipansou.com\\\" + u.replace(\\\"/s/\\\", \\\"/cv/\\\");\\n            d.push({\\n                title: pdfh(it, \\\"template&&Text\\\"),\\n                url: $(u).lazyRule(() => {\\n                    let html = request(input, {\\n                        headers: {\\n                            \\\"Cookie\\\": \\\"no_show_donate=1\\\",\\n                            \\\"Referer\\\": input.replace(\\\"/cv/\\\", \\\"/s/\\\")\\n                        },\\n                        redirect: false\\n                    });\\n                    html = parseDomForHtml(html, 'a&&href');\\n                    //var _links = html.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\n                    //log(_links);\\n                    if (html.length > 0) {\\n                        //return 'hiker://page/detail?rule=云盘汇影&url=' + _links[0] + '??fypage';\\n                        return 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(html) + '???fypage';\\n                    } else {\\n                        return input;\\n                    }\\n                }),\\n                desc: \\\"““””<font color=#f13b66a>猫狸盘搜</font>&nbsp;\\\" + pdfh(it, \\\"template,1&&Text\\\"),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"易搜\\\",\\n    page: true,\\n    find: function(s, page) {\\n        let html = request(\\\"https://yiso.fun/api/search?name=\\\" + s + \\\"&pageNo=\\\" + page, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://yiso.fun/info?searchKey=\\\" + s\\n            }\\n        });\\n        let arr = JSON.parse(html).data.list;\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = arr[i];\\n            let u = it.url;\\n            if (u == null || !u.includes(\\\"aliyun\\\")) {\\n                continue;\\n            }\\n            d.push({\\n                title: \\\"““””\\\" + it.name,\\n                //url: 'hiker://page/detail?rule=云盘汇影&url=' + u + '??fypage',\\n                url: 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(u) + '???fypage',\\n                desc: \\\"““””<font color=#f13b66a>易搜</font>&nbsp;\\\" + (it.gmtShare || it.gmtCreate),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"找资源\\\",\\n    page: false,\\n    find: function(s, page) {\\n        let html = request(\\\"https://zhaoziyuan.la/so?filename=\\\" + s, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://zhaoziyuan.la/so\\\",\\n                //\\\"X-Requested-With\\\": \\\"com.example.hikerview\\\",\\n                \\\"Accept\\\": \\\"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\\\"\\n            }\\n        });\\n        let arr = pdfa(html, \\\"body&&.newsList&&li:not(:first-child)\\\");\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = arr[i];\\n            let u = pdfh(it, \\\"a&&href\\\");\\n            if (u == null) {\\n                continue;\\n            }\\n            u = \\\"https://zhaoziyuan.la/\\\" + u;\\n            //log(u);\\n            let title = pdfh(it, \\\".news_text&&h3&&Text\\\");\\n            d.push({\\n                title: title,\\n                desc: \\\"““””<font color=#f13b66a>找资源</font>&nbsp;\\\" + (pdfh(it, \\\".news_text&&p&&Text\\\")),\\n                url: $(u).lazyRule(() => {\\n                    let html = request(input);\\n                    var _links = html.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\n                    //log(_links);\\n                    if (_links.length > 0) {\\n                        //return 'hiker://page/detail?rule=云盘汇影&url=' + _links[0] + '??fypage';\\n                        return 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(_links[0]) + '???fypage';\\n                    } else {\\n                        return input;\\n                    }\\n                })\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"小纸条\\\",\\n    page: false,\\n    find: function(s, page) {\\n        function cat_code(a) {\\n            var d, e, b = [\\\"华语电视\\\", \\\"日韩电视\\\", \\\"欧美电视\\\", \\\"其他电视\\\", \\\"华语电影\\\", \\\"日韩电影\\\", \\\"欧美电影\\\", \\\"其他电影\\\", \\\"华语动漫\\\", \\\"日韩动漫\\\", \\\"欧美动漫\\\", \\\"纪录片\\\", \\\"综艺片\\\", \\\"教育培训\\\", \\\"其他视频\\\", \\\"华语音乐\\\", \\\"日韩音乐\\\", \\\"欧美音乐\\\", \\\"其他音乐\\\", \\\"娱乐软件\\\", \\\"系统软件\\\", \\\"网络软件\\\", \\\"办公软件\\\", \\\"其他软件\\\", \\\"漫画\\\", \\\"小说\\\", \\\"出版书\\\", \\\"知识培训\\\", \\\"其他文档\\\", \\\"壁纸\\\", \\\"人物\\\", \\\"风景\\\", \\\"其他图片\\\", \\\"其他\\\"],\\n                c = [\\\"hyds\\\", \\\"rhds\\\", \\\"omds\\\", \\\"qtds\\\", \\\"hydy\\\", \\\"rhdy\\\", \\\"omdy\\\", \\\"qtdy\\\", \\\"hydm\\\", \\\"rhdm\\\", \\\"omdm\\\", \\\"jlp\\\", \\\"zyp\\\", \\\"jypx\\\", \\\"qtsp\\\", \\\"hyyy\\\", \\\"rhyy\\\", \\\"omyy\\\", \\\"qtyy\\\", \\\"kfrj\\\", \\\"xtrj\\\", \\\"wlrj\\\", \\\"bgrj\\\", \\\"qtrj\\\", \\\"mh\\\", \\\"xs\\\", \\\"cbs\\\", \\\"zspx\\\", \\\"qtwd\\\", \\\"bz\\\", \\\"rw\\\", \\\"fj\\\", \\\"qttp\\\", \\\"qt\\\"];\\n            for (d = 0, e = c.length; e > d; d++)\\n                if (c[d] == a) return b[d];\\n        }\\n        let d = [];\\n        let html = post(\\\"https://gitcafe.net/tool/alipaper/\\\", {\\n            headers: {\\n                'Referer': 'https://u.gitcafe.net/'\\n            },\\n            body: {\\n                action: \\\"search\\\",\\n                keyword: s\\n            }\\n        })\\n        let list = JSON.parse(html);\\n        for (let i = 0; i < list.length; i++) {\\n            let it = list[i]\\n            let title = it.title;\\n            let murl = it.key\\n            if (title.includes(s)) {\\n                d.push({\\n                    title: title,\\n                    desc: \\\"““””<font color=#f13b66a>小纸条</font>&nbsp;\\\" + cat_code(it.cat),\\n                    extra: {\\n                        des: it.des\\n                    },\\n                    //url: 'hiker://page/detail?rule=云盘汇影&url=https://www.aliyundrive.com/s/' + murl + '??fypage',\\n                    url: 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent('https://www.aliyundrive.com/s/' + murl) + '???fypage',\\n                });\\n            }\\n        }\\n        return d;\\n    }\\n}];\\n\\nlet qian = $.require(\\\"hiker://page/qian\\\");\\nrules.push(qian);\\n\\n//并发规则数\\nlet size = 10;\\n\\n$.exports = function(page, rule) {\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"芊芊\",\"path\":\"qian\",\"rule\":\"$.exports = {\\n    name: \\\"芊芊\\\",\\n    page: true,\\n    find: function(s, page) {\\n        let d = [];\\n        let u = \\\"https://pan.qianfan.app/search/?pan=aliyundrive&q=\\\" + s + \\\"&page=\\\" + page;\\n        let html = request(u);\\n        let arr = pdfa(html, \\\"body&&.search-item\\\");\\n        for (let it of arr) {\\n            let url = $(pd(it, \\\"a&&href\\\", u)).lazyRule(() => {\\n                let html = request(input, {\\n                    headers: {},\\n                });\\n                let url = pdfh(html, \\\".item-detail-info&&.copy-url&&data-url\\\");\\n                let flag = pdfh(html, \\\".item-detail-info&&.copy-url&&id\\\");\\n                for (let obj of flag) {\\n                    if (isNaN(parseInt(obj))) {\\n                        let flagNum = parseInt(obj, 16);\\n                        url = url.substring(0, flagNum) + url.substring(flagNum + 1, flagNum + 10000)\\n                    }\\n                }\\n                url = base64Decode(url);\\n                log(url);\\n                let _links = url.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\n                //log(_links);\\n                if (_links.length > 0) {\\n                    //return 'hiker://page/detail?rule=云盘汇影&url=' + _links[0] + '??fypage';\\n                    return 'hiker://page/push?rule=tvbox云盘推送&url=hiker://empty##' + encodeURIComponent(_links[0]) + '???fypage';\\n                } else {\\n                    return input;\\n                }\\n            });\\n\\n            d.push({\\n                title: pdfh(it, \\\"h2&&Text\\\"),\\n                desc: \\\"““””<font color=#f13b66a>芊芊</font>&nbsp;\\\" + pdfh(it, \\\".search-note&&Text\\\"),\\n                url: url\\n            });\\n        }\\n\\n        return d;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"sou\",\"rule\":\"let r = getItem(\\\"r\\\", \\\"\\\");\\nif (MY_PAGE == 1) {\\n    let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n    if (!r1 || r1.length <= 5) {\\n        let ru = $.toString(() => {\\n            return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n        });\\n        confirm({\\n            title: MY_RULE.title + '提示',\\n            content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n            confirm: ru,\\n            cancel: ru\\n        })\\n    }\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"s\\\");\\n    }));\\n    let tip = \\\"云盘搜索君 检索功能由对应网站提供，本规则不提供任何内容\\\";\\n    d.push({\\n        title: tip,\\n        url: $(\\\"#noLoading#\\\").lazyRule((tip) => {\\n            confirm({\\n                title: \\\"使用说明\\\",\\n                content: tip + \\\"，本规则代码完全开源，仅供学习和研究；点击下方确定按钮跳转tvbox云盘推送小程序\\\",\\n                //confirm: \\\"'hiker://home@云盘汇影'\\\"\\n                confirm: \\\"'hiker://home@tvbox云盘推送'\\\"\\n            });\\n            return \\\"hiker://empty\\\"\\n        }, tip),\\n        col_type: \\\"avatar\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"hiker://images/account\\\"\\n    });\\n\\n    d.push({\\n        title: '搜索',\\n        desc: '请输入关键词',\\n        col_type: 'input',\\n        url: $.toString(() => {\\n            putMyVar('s', input);\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        extra: {\\n            defaultValue: getMyVar('s', '')\\n        }\\n    });\\n    let rules = $.require(\\\"hiker://page/data\\\")();\\n    d.push({\\n        title: \\\"\\\" == r ? \\\"““全部””\\\" : \\\"全部\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            clearItem(\\\"r\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\"\\n        }),\\n        col_type: \\\"scroll_button\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n    for (let it of rules) {\\n        d.push({\\n            title: it == r ? \\\"““\\\" + it + \\\"””\\\" : it,\\n            url: $(\\\"#noLoading#\\\").lazyRule((r) => {\\n                setItem(\\\"r\\\", r);\\n                refreshPage();\\n                return \\\"hiker://empty\\\"\\n            }, it),\\n            col_type: \\\"scroll_button\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: 'line',\\n        extra: {\\n            id: 'ypj-l'\\n        }\\n    });\\n}\\nlet s = getMyVar('s', '');\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let data = $.require(\\\"hiker://page/data\\\")(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = \\\"ypj-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: it.title.includes(\\\"““””\\\") ? it.title : \\\"““””\\\" + it.title.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\"),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: {\\n                                    id: \\\"__app\\\" + MY_PAGE + \\\"@\\\" + param.j,\\n                                    inheritTitle: false\\n                                }\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key) {\\n    putMyVar(\\\"s\\\", MY_PARAMS.key);\\n}\\neval(JSON.parse(fetch(\\\"hiker://page/sou\\\")).rule);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"游颜","author":"","version":10,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://www.wandou.pro/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    let rule = getParam(\\\"r\\\");\\n    d.splice(0, 0, {\\n        title: \\\"🔗\\\" + url,\\n        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n        col_type: \\\"text_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"豌豆PRO","author":"","version":10,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://www.wandou.pro/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    let rule = getParam(\\\"r\\\");\\n    d.splice(0, 0, {\\n        title: \\\"🔗\\\" + url,\\n        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n        col_type: \\\"text_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"土拨鼠","author":"","version":10,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://www.tbsdy.com/m/index.html#/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"#️⃣常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    let rule = getParam(\\\"r\\\");\\n    d.splice(0, 0, {\\n        title: \\\"🔗\\\" + url,\\n        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n        col_type: \\\"text_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"朴樱影视","author":"狗浩啊","version":0,"type":"video","url":"https://www.b09.net/vodshow/2--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|热搜|APP|专题|留言))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url=true_url.replace(/vodtype(\\/\\d+).*/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nlog(true_url)\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\r\nvar list = pdfa(html, 'body&&.module-item');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'body&&strong&&Text'),//标题\n        desc: pdfh(list[j], '.module-item-note&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.b09.net/vodsearch/**----------fypage---/","group":"#️⃣影视","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar d = []\nvar html = getResCode()\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n        var url = html.url\n        if (html.encrypt == '1') {\n            url = unescape(url);\n        } else if (html.encrypt == '2') {\n            url = unescape(base64Decode(url));\n        }\n        if (/m3u8|mp4/.test(url)) {\n            return url\n        } else {\n            return 'video://' + input\n        }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nd.push({\n    title: pdfh(html, '.module-info-item,1&&Text')\n+ '\\n'+  pdfh(html,'.module-info-item,2&&Text'),\n    desc: '简介: '+pdfh(html, '.module-info-item,0&&Text'),\n    pic_url: pd(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.module-tab-items-box&&span'\nvar 选集 = 'body&&.module-play-list'\nvar 线路名 = 'Text'\nvar 选集列表 = 'body&&a'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"ik","author":"狗浩啊","version":0,"type":"video","url":"https://hd.ikys.pro/index.php/vod/show/id/2/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|热榜|APP|更新))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        .replace('type', 'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\r\nvar list = pdfa(html, 'body&&.module-item');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'body&&strong&&Text'),//标题\n        desc: pdfh(list[j], '.module-item-note&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://hd.ikys.pro/index.php/vod/search/page/fypage/wd/**.html","group":"#️⃣影视","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar d = []\nvar html = getResCode()\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n        var url = html.url\n        if (html.encrypt == '1') {\n            url = unescape(url);\n        } else if (html.encrypt == '2') {\n            url = unescape(base64Decode(url));\n        }\n        if (/m3u8|mp4/.test(url)) {\n            return url\n        } else {\n            return 'video://' + input\n        }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nd.push({\n    title: pdfh(html, '.module-info-item,1&&Text')\n+ '\\n'+  pdfh(html,'.module-info-item,2&&Text'),\n    desc: '简介: '+pdfh(html, '.module-info-item,0&&Text'),\n    pic_url: pd(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.module-tab-items-box&&span'\nvar 选集 = 'body&&.module-play-list'\nvar 线路名 = 'Text'\nvar 选集列表 = 'body&&a'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"西瓜🍉视频DJ舞曲520","author":"自用","version":1,"type":"music","url":"https://raw.fastgit.org/mmniw88/-/main/%E8%A5%BF%E7%93%9C%F0%9F%8D%89DJ%E8%88%9E%E6%9B%B2.txt","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣测试","detail_col_type":"text_5","detail_find_rule":"js:\nvar lazy = `@lazyRule=.js:(\n() => {\n    if (/\\.m3u8|\\.mp4/.test(input)) {\n        return input;\n    } else {\n        let url = \"http://api.kunyu77.com/api.php/provide/parserUrl?url=\" + input;\n        let html = request(url, {headers: {\"User-Agent\": \"Dalvik/2.1.0\"}, method: \"GET\"});\n        let urll = JSON.parse(html).data.url;\n        let playhtml = request(urll, {headers: {\"User-Agent\": \"Dalvik/2.1.0\"}, method: \"GET\"});\n        let playurl = JSON.parse(playhtml).url;\n        return playurl + \"#isVideo=true#\";\n    }\n}\n)()`\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=DJ舞曲520"},{"firstHeader":"class","last_chapter_rule":"","title":"手机中国","author":"团子&dy2020","version":0,"type":"news","url":"https://www.cnmo.com/fyAll/fypage/","col_type":"movie_1_left_pic","class_name":"新闻&曝光&行业&深度&消息&专访","class_url":"news&news/light&news/industry&news/deep&news/message&news/interview","area_name":"评测&横向评测&对比评测&单品评测&专项评测","area_url":"reviews&reviews/hxparts&reviews/contrast&reviews/danping&reviews/specialparts","sort_name":"创意视频&手机评测&极速上手&智能家居&其他","year_name":"导购&常规导购&报价","sort_url":"sp/chuangyi&sp/reviews&sp/shangshou&/sp/home&/sp/other","year_url":"guide&guide/shopguide&guide/price","find_rule":"js:\nlog(getUrl());\r\n\tvar d=[];\r\n\thtml=getResCode();\nif(/sp/.test(getUrl())){var list=pdfa(html,\"body&&ul.video-list&&li\");}\nelse{var list=pdfa(html,\"body&&div.cobox\");}\n\r\n\tfor(var data of list){\r\n\t\td.push({\r\n\t\t\ttitle: pdfh(data,\"a&&title\") ,   \r\n\t\t\t//desc: data.last_chapter_name,\r\n\t\t\tpic_url: pd(data,\"img&&src\"),   \r\n\t\t\turl: pd(data,\"a&&href\"),\n\r\n\t\t})\r\n\t}\r\n  setResult(d);","searchFind":"\n","search_url":"","group":"#️⃣测试","detail_col_type":"movie_1","detail_find_rule":"js:\r\nd=[];\nvar html=getResCode();\nvar config = fetch('hiker://files/cache/MyParseSet.json');\r\nvar jsUrl = 'hiker://files/cache/Parse_Dn.js';\r\nif(config && fetch(JSON.parse(config).cj)){\r\n    jsUrl = JSON.parse(config).cj;\r\n} eval(fetch(jsUrl));\nvar list=getResCode().match(/[^\\s]+?vurl='[^']+'/ig);\nif(list){\r\nfor(i in list){\r\nd.push({\r\ntitle:'‘‘’’<strong><font color= \"#098AC1\">' + list[i].match(/([^\\s]+?)vurl='[^']+'/i)[1]+\"视频播放\"+ '</front></strong>',\r\nurl:list[i].match(/[^\\s]+?vurl='([^']+)'/i)[1].replace(/^\\/\\//,'https://')+`@lazyRule=.js:var input=input;`+lazy+``,\r\ncol_type: \"flex_button\",\r\n})\r\n}\r\nd.push({\r\ntitle:'‘‘’’<strong><font color= \"#098AC1\">' +\"断插设置\"+ '</front></strong>',\r\nurl:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory##noRecordHistory#\",\r\ncol_type: \"flex_button\",\r\n});\r\n}\nd.push({\ntitle:pdfh(html,\"body&&.ctext&&Html\").replace(/<script>.+?<\\/script>/g,\"\").replace(/\\/\\/img/g,\"https://img\"),\ncol_type: \"rich_text\",\n});\n\r\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"\n","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"正版采集.dz","author":"道长","version":5,"url":"https://banyung.xyz/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet html=getResCode();\nlet ps=pdfa(html,\".notice,2&&p\");\nps=ps.map((it)=>{\n    try{\n        return {\n            title:pdfh(it,\"body&&Text\"),\n            url:pdfh(it,\"a&&href\"),\n            col_type:\"text_1\"\n        }\n    }catch(e){\n        return false\n    }\n});\nps=ps.filter(it=>it.url);\nvar lazy=$(\"\").lazyRule(()=>{\n    copy(input);\n    return \"toast://已复制:\"+input\n});\nps=ps.map((it)=>{\n    let text=it.title.split(\"：\")[0]+\",\"+it.url;\n    it.text=text;\n    it.url=text+lazy;\n    return it;\n});\nlet d=ps;\nlet cytext=ps.map(it=>it.text).join(\"\\n\");\nd.push({\n    title:\"复制全部\",\n    col_type:\"text_center_1\",\n    url:$().lazyRule((cytext)=>{\n        copy(cytext);\n        return \"toast://已复制:\"+cytext\n    },cytext)\n});\nsetResult(d);","searchFind":"","search_url":"","group":"#️⃣网页","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"鸡蛋影院.dr","author":"道长","version":0,"type":"video","url":"hiker://empty##https://jidanzan.com/dianying/index_fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\ntry {\n    MY_URL = MY_URL.split('##')[1];\n    require(config.模板);\n    let parStr = \".lists-content,1&&ul&&li;h2&&Text;img&&src;.thumbnail&&Text;a&&href\";\n    var true_url = getMyVar('header.url', MY_URL);\n    var page = MY_PAGE;\n    if (parseInt(page) == 1) {\n        if (/index_/.test(true_url)) {\n            true_url = true_url.replace(/index_.*/, '');\n        }\n    } else if (parseInt(page) > 1) {\n        if (/rating|onclick|newstime/.test(true_url)) {        \n            true_url = true_url.replace(/(?!.*-.*-)(.*?)\\.html$/, (page - 1) + '$1' + '.html')\n        }else if (/-/.test(true_url)) {\n            true_url = true_url.replace(/-\\.html/, (page - 1) + '-.html')\n        } else if (/index/.test(true_url)) {\n            true_url = true_url;\n        } else {\n            true_url = true_url + 'index_' + page + '.html';\n        }\n    }\n    var html = 获取源码(true_url, MOBILE_UA)\n    //log(true_url);\n    let cates = 打造动态分类([{\n        一级分类: '.nav&&ul',\n        子分类: 'body&&li:not(:matches(首页|导航))',\n    }, {\n        一级分类: 'body&&dl',\n        子分类: 'body&&a:not(:matches(^$))',\n    }]);\n    设置(cates);\n    一级(parStr, true, cates, false, html);\n} catch (e) {\n    toast(\"到底了,没有下一页啦\");\n    //throw new Error('没有下一页了')\n    var d = [];\n    d.push({\n        title: '没有下一页啦，不信去原网看看👀',\n        col_type: 'text_center_1'\n    });\n    setResult(d)  \n}","searchFind":"js:\nrequire(config.模板);\nMY_URL = MY_URL.split('##')[1];\nvar page = MY_URL.match(/-(\\d+)-\\.html/)[1];\nif(parseInt(page) == 0){\n    MY_URL = MY_URL.replace(/-(\\d+)-/,'--')\n}\n//log(MY_URL);\nvar html = 获取源码(MY_URL, MOBILE_UA);\nparStr = \".lists-content&&ul&&li;h2&&Text;img&&src;.thumbnail&&Text;a&&href;li&&Text\";\n一级(parStr, true, null, null, html);","search_url":"hiker://empty##https://jidanzan.com/so/**--fypage-.html","group":"#️⃣自用","detail_col_type":"movie_1","detail_find_rule":"js:\nMY_URL = MY_URL.split('##')[1].split('#')[0];\nvar d = [];\nvar html = request(MY_URL, {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    }\n})\nd.push({\n    title: pdfh(html, '.article-container&&h1&&Text') + \"\\n\" + pdfh(html, '.article-container&&.product-excerpt&&Text') + \"\\n\" + pdfh(html, '.article-container&&.product-excerpt,1&&Text'),\n    url: MY_URL,\n    col_type: \"movie_1_vertical_pic_blur\",\n    desc: pdfh(html, '.article-container&&.product-excerpt,2&&Text') + \"\\n\" + pdfh(html, '.article-container&&.product-excerpt,3&&Text') + \"\\n\" + pdfh(html, '.article-container&&.product-excerpt,4&&Text'),\n    pic_url: pdfh(html, '.article-container&&img&&src') + \"@Referer=\"\n});\n\nvar infotext = pdfh(html, '.article-container&&.product-excerpt,-1&&Text');\nd.push({\n    title: '‘‘’’<font color=\"#098AC1\">剧情简介</font>',\n    desc: '‘‘’’<small><font color=\"#ff148e8e\">\\t\\t' + infotext.substr(0, 80) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    col_type: 'text_1',\n    url: $().rule((text) => {\n        setResult([{\n            title: text,\n            col_type: 'long_text',\n        }])\n    }, infotext)\n});\n\n\nvar js = pdfh(html, \"script,-1&&Html\");\nif (js.indexOf('!!!')) {\n    var video = js.split('@@@');\n} else {\n    var video = '';\n}\n//log(video)\nvar tabs = [];\nvar lists = [];\nfor (var i = 0; i < video.length; i++) {\n    //log(video.length)\n    if (video[i] != '' && video[i] != 'None') {\n        tabs.push(video[i].split('!!!')[0]);\n        lists.push(video[i].split('!!!')[1].split('|'));\n    }\n}\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        d.push({\n            title: getMyVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: $('hiker://empty#noHistory##noLoading#').lazyRule((vari, i) => {\n                putMyVar(vari, i);\n                refreshPage(false);\n                return 'toast://切换成功!'\n            }, vari, i),\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n//图标来自顺佬小程序\nvar icon_s = 'http://82.156.222.77/weisyr/icon/';\nif (getMyVar('顺序', '正序') == '正序') {\n    var avatar = icon_s + '正序.svg';\n    var ordtext = \"★正序↓\";\n} else {\n    var avatar = icon_s + '反序.svg';\n    var ordtext = \"☆逆序↑\";\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>',\n        url: $('#noLoading#').lazyRule(() => {\n            if (getMyVar('顺序', '正序') == '逆序') {\n                putMyVar('顺序', '正序');\n            } else {\n                putMyVar('顺序', '逆序');\n            }\n            refreshPage(true);\n            return 'toast://已切换顺序为:' + getMyVar('顺序', '正序')\n        }),\n        col_type: 'text_center_1'\n    })\n\n    var list = lists[index];\n    //log(list)\n    //log(getMyVar('顺序', '正序'))\n    if (getMyVar('顺序', '正序') == '正序') {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (list[j] != '') {\n                    d.push({\n                        title: list[j].split('$')[0],\n                        url: list[j].split('$')[1],\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        list = list.reverse();\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (list[j] != '') {\n                    d.push({\n                        title: list[j].split('$')[0],\n                        url: list[j].split('$')[1],\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":""},{"last_chapter_rule":"","title":"94i.dr","author":"道&K","version":0,"type":"other","url":"hiker://empty##https://94itv.app/vod-show-id-13-page-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVRLmKvoUg5wsLHMYcQURS3FcFSnRsh1drySmlUaq9i+3wo+Jg4/0WltZSeEhk515pl8ugSp/sJ0bZBw6cihfXZOTm6bWDcENtECiauhBo5b3DVfanahs/y0iZxcSL0PJAcQ==');\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?).html/)[2];\ntrue_url=获取正确链接();\nvar html=获取源码(true_url);\n//log(html);\nlet cates=打造动态分类([{\n  一级分类: 'body&&ul.myui-header__menu',\n        子分类: 'body&&li.hidden-sm:gt(0):lt(5)',\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\nvar 一级处理={\n    描述:function(input){\n        return input.split(\"分\").slice(-1)[0]\n    }\n};\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"#searchList&&li;.thumb&&a&&title;.thumb&&a&&data-original;.detail&&p,1&&Text;.searchkey&&href.js:input+'#immersiveTheme#';p.hidden-xs&&Text\";\n一级(parStr,true);","search_url":"https://94itv.app/vod-search-page-fypage-wd-**.html","group":"#️⃣道长","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.title&&Text;.data,1&&Text;#rating&&.branch&&Text',\n img:'.myui-content__thumb&&a&&img&&data-original',\n url:'.myui-content__thumb&&a&&href',\n desc:'.data,2&&Text;.data,3&&Text',\n content:'#desc&&span.data&&Text',\n tabs:'ul.nav-tabs&&li',\n lists:'.tab-content&&#id&&li',\n tab_id:'a&&href'\n};\nlazy=通免();\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://codeberg.org/hjdhnx/hiker/raw/branch/main/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"批处理.dz","author":"道长","version":5,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"工具","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","group":"#️⃣道长","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myApp', MY_RULE.title);","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\nlet d=[];\\nconst {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet ver=MY_RULE.version;\\nlet tver=ver?',版本:'+color(ver,\\\"#ff7000\\\"):'';\\nd.push({\\n    title:'小程序批处理工具by道长'+tver,\\n    col_type:'text_1',\\n    desc:'输入小程序名称进行模糊搜索\\\\n点击可来个栗子,比如.dr',\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        putMyVar('demo','.dr');\\n        refreshPage(true);\\n        return 'toast://栗子已经给你了,请点击搜索吧'\\n    }),\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nlet tips=\\\"道长出品,核心逻辑基于任务仓库。刷新按钮会重置已选并刷新规则列表。导入按钮等同于视界原生本地导入,千万记得导入要选择保留原规则。\\\";\\nd.push({\\n    title:\\\"🍱菜单\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(tips).confirm(()=>{})\\n});\\nd.push({\\n    title:\\\"🔄刷新\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        initConfig({});\\n        refreshPage(false);\\n        return \\\"toast://已重新获取小程序，响应您的实时改动\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"♻清除\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        clearItem(\\\"demo\\\");\\n        clearMyVar('demo');\\n        refreshPage(true);\\n        return \\\"toast://已清除搜索记录\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"📝修改\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$().lazyRule(()=>{\\n        let rules = config.rules.filter(it=>!!it.choose);\\n        if(rules.length<1){\\n            return 'toast://已选择列表为空，无法修改!'\\n        }\\n        let rule = rules[0];\\n        let allAttr = Object.keys(rule).filter((v) => (typeof(rule[v]) == 'string'));\\n        if(!allAttr.includes('type')){\\n            allAttr.unshift('type');\\n        }\\n        const {attrMap} = $.require(\\\"hiker://page/attr?rule=\\\"+getItem('myApp'));\\n       allAttr=allAttr.filter(it=>!['firstHeader','pages','url','title'].includes(it));\\n        allAttr=allAttr.map(it=>attrMap[it]||it);\\n        return $(allAttr,2,'请选择要修改的属性').select(()=>{\\n            const {attrMap2} = $.require(\\\"hiker://page/attr?rule=\\\"+getItem('myApp'));\\n            let rule = config.rules.filter(it=>!!it.choose)[0];\\n            return $(rule[attrMap2[input]||input]||'','将已选小程序的属性【'+input+'】修改为(支持function):').input((attr)=>{\\n                let rules = config.rules;\\n                if(/^function/.test(input.trim())){\\n                            let js='var ff='+input.trim();\\n                  //log(js);\\n                  eval(js);\\n                }\\n                rules = rules.map((it)=>{\\n                    if(!!it.choose){\\n                        log(it.title+'属性'+attr+':'+it[attr]);\\n              if(typeof(ff)=='function'){\\n                     it[attr]=ff(it[attr]);\\n                        }else{\\n                        it[attr]=input\\n                        };\\n                        return it\\n                    }else{\\n                        return it\\n                    }\\n                });\\n                initConfig({\\n                    rules:rules\\n                });\\n                refreshPage(false);\\n                return 'toast://已将选中项目属性【'+attr+'】值修改为:'+input\\n            },attrMap2[input])\\n        })\\n    })\\n});\\nd.push({\\n    title:'📥导入',\\n    col_type:\\\"scroll_button\\\",\\n    url:$().lazyRule(()=>{\\n        let rules = config.rules.filter(it=>!!it.choose).map((it)=>{\\n            delete it['choose'];\\n            return it\\n        });\\n        if(rules.length<1){\\n            return 'toast://没有已选择项目，无法导入'\\n        }\\n        let ruleHead = '海阔视界首页频道规则【道长仓库Pro】￥home_rule_url￥';\\n        let text = JSON.stringify(rules);\\n        let url = 'hiker://files/rules/dzHouse/json/批处理.json';\\n        writeFile(url,text);\\n        return 'rule://'+base64Encode(ruleHead+url)\\n    })\\n});\\n/*\\nd.push({\\n    title:\\\"📥识别口令\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"{{clipboard}}\\\",\\\"自动识别剪切板内容或手动输入口令\\\").input(()=>{\\n        let importUrl = 'rule://' + base64Encode(input);\\n        return importUrl\\n        //return \\\"toast://你输入的口令为\\\"+input\\n    })\\n});\\n */\\nd.push({\\n    title: '搜索',\\n    desc: \\\"小程序模糊名称,不区分大小写\\\",\\n    extra: {\\n        onChange: \\\"putMyVar('demo',input)\\\",\\n        titleVisible: true,\\n        defaultValue:getItem('demo','')||getMyVar('demo')\\n    },\\n    url:$.toString(() => {\\n        // 定义字符串替换全部函数\\n        if(!getMyVar('demo'))\\n        {\\n            return \\\"toast://你还没有输入名称呢\\\"\\n        }\\n        setItem(\\\"demo\\\",getMyVar('demo'));\\n        clearMyVar(\\\"gp\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"input\\\"\\n});\\nfunction unique2(array){\\n    return Array.from(new Set(array));\\n}\\nfunction strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\\nlet filterName=getItem('demo','');\\nlet rules=config.rules||JSON.parse(fetch(\\\"hiker://home\\\"));\\nif(!config.rules){\\n    initConfig({\\n        rules:rules\\n    })\\n}\\nlet groups=rules.map(it=>it.group||\\\"无分组\\\");\\ngroups=unique2(groups);\\nlet groupbtn=groups.map((it)=>{\\n    return {\\n        title:it===getMyVar(\\\"gp\\\",\\\"全部\\\")?color(it,\\\"#5FB878\\\"):it,\\n        col_type:\\\"scroll_button\\\",\\n        url:$('#noLoading#').lazyRule((it)=>{\\n            putMyVar(\\\"gp\\\",it);\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        },it)\\n    }\\n});\\nlet chooseCnt = rules.filter(it=>it.choose).length;\\nchooseCnt = color(chooseCnt,'#ff7000');\\nlet extraBtn = [{\\n    title:\\\"全部\\\"===getMyVar(\\\"gp\\\",\\\"全部\\\")?color(\\\"全部\\\",\\\"#5FB878\\\"):\\\"全部\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$('#noLoading#').lazyRule(()=>{\\n        putMyVar(\\\"gp\\\",\\\"全部\\\");\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    })\\n},{\\n    title:\\\"已选\\\"===getMyVar(\\\"gp\\\",\\\"全部\\\")?color(\\\"已选\\\",\\\"#5FB878\\\")+chooseCnt:\\\"已选\\\"+chooseCnt,\\n    col_type:\\\"scroll_button\\\",\\n    url:$('#noLoading#').lazyRule(()=>{\\n        putMyVar(\\\"gp\\\",\\\"已选\\\");\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    })\\n}];\\ngroupbtn = extraBtn.concat(groupbtn);\\nd = d.concat(groupbtn);\\nlet filteredRules=rules;\\nif(filterName){\\n    filteredRules=filteredRules.filter(it=>it.title.toLowerCase().includes(filterName.toLowerCase()));\\n}\\nif(getMyVar(\\\"gp\\\",\\\"全部\\\")===\\\"无分组\\\"){\\n    filteredRules=filteredRules.filter(it=>!it.group);\\n}\\nelse if(getMyVar(\\\"gp\\\",\\\"全部\\\")===\\\"已选\\\"){\\n    filteredRules=filteredRules.filter(it=>!!it.choose);\\n}else if(getMyVar(\\\"gp\\\",\\\"全部\\\")!==\\\"全部\\\"){\\n    filteredRules=filteredRules.filter(it=>it.group===getMyVar(\\\"gp\\\"));\\n}\\n\\nlet filterRules=filteredRules.map((it)=>{\\n    let text = JSON.stringify(it);\\n    text=base64Encode(text);\\n    let data={\\n        group:it.group,\\n        title:!!it.choose?'🟢'+it.title:it.title,\\n        col_type:\\\"icon_round_4\\\",\\n        desc:\\\"作者:\\\"+it.author+\\\",版本:\\\"+it.version,\\n        url:$(\\\"#noLoading#\\\").lazyRule((it)=>{\\n            let text=base64Decode(it);\\n            it=JSON.parse(text);\\n            let rules = config.rules;\\n            var index = rules.findIndex(i => i.title===it.title);\\n            rules[index].choose = !rules[index].choose;\\n            // log(rules[index]);\\n            initConfig({\\n                rules:rules\\n            });\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        },text),\\n        pic_url:it.icon||\\\"https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU\\\"\\n    };\\n    return data\\n});\\nd = d.concat(filterRules);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"属性字典\",\"path\":\"attr\",\"rule\":\"js:\\nvar attrMap={\\nfirstHeader:'',\\nlast_chapter_rule:'最新章节解析',\\ntitle:'小程序名称',\\nauthor:'作者',\\ntype:'小程序类别',\\nurl:'小程序链接',\\ncol_type:'显示样式',\\nclass_name:'分类名称',\\nclass_url:'分类替换词',\\narea_name:'地区名称',\\narea_url:'地区替换词',\\nsort_name:'排序名称',\\nsort_url:'排序替换词',\\nyear_name:'年代名称',\\nyear_url:'年代替换词',\\nfind_rule:'解析规则',\\nsearchFind:'搜索解析规则',\\nsearch_url:'搜索链接',\\ngroup:'小程序分组',\\ndetail_col_type:'二级列表显示样式',\\ndetail_find_rule:'二级列表解析规则',\\nsdetail_col_type:'搜索二级列表显示样式',\\nsdetail_find_rule:'搜索二级列表解析规则',\\nua:'全局UA设备标志',\\npreRule:'JS预处理',\\npages:'子页面',\\nicon:'图标'\\n};\\n//键值对反转\\nfunction objReverse(obj){\\n    var keys = Object.keys(obj);\\n    var res = {};\\n    keys.forEach((val) => {\\n            res[obj[val]] = val;\\n    });\\n    return res\\n}\\n$.exports.attrMap=attrMap;\\n$.exports.attrMap2=objReverse(attrMap);\"}]","icon":"https://img.icons8.com/?format=png&id=113572&size=64"},{"firstHeader":"class","last_chapter_rule":"","title":"电视软件合集卫华","author":"卫华卫华卫华","version":1,"type":"tool","url":"hiker://empty##https://wuaiyousan.lanzoui.com/b02unwved","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=电视软件合集卫华"},{"firstHeader":"class","last_chapter_rule":"","title":"每日美女.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://jiepaituan.org/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##制服","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=每日美女"},{"firstHeader":"class","last_chapter_rule":"","title":"小姐姐.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://cn.kstore.space/download/3313/mao/ymz.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小姐姐"},{"firstHeader":"class","last_chapter_rule":"","title":"集芳阁云搜","author":"道长","version":1,"type":"video","url":"hiker://empty##https://jfghome.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=集芳阁云搜"},{"firstHeader":"class","last_chapter_rule":"","title":"自拍角落.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.zipai1.xyz/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=自拍角落"},{"firstHeader":"class","last_chapter_rule":"","title":"卫华影视🐮🐮🐮👌","author":"卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##https://www.panghuys.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卫华影视🐮🐮🐮"},{"firstHeader":"class","last_chapter_rule":"","title":"在线音乐","author":"道长","version":1,"type":"video","url":"hiker://empty##http://music.k8aa.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=在线音乐"},{"firstHeader":"class","last_chapter_rule":"","title":"音乐神器.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://music.caixin.repl.co/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=音乐神器"},{"firstHeader":"class","last_chapter_rule":"","title":"直播源大全🍑🍑🍑🍑🍑","author":"卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##https://njrs520.lanzoub.com/b00pwxmyh?w1","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=直播源"},{"firstHeader":"class","last_chapter_rule":"","title":"江思念专属🌹🌹🌹🌷🌷🌷","author":"卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##http://www.biquys.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=江思念专属"},{"firstHeader":"class","last_chapter_rule":"","title":"卫华云盘🇨🇳🇨🇳🇨🇳🇨🇳","author":"卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##http://teyonds.ysok.net","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"#️⃣道长DR","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卫华云盘"},{"last_chapter_rule":"","title":"JSON编辑器","author":"永远の明日","version":3,"type":"tool","url":"hiker://empty","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet history = JSON.parse(readFile('history') || '[]'),\n    el = [{\n        desc: '输入JSON或文件路径...',\n        url: $.toString((history) => {\n            let Json = {}\n            try {\n                Json = JSON.parse(input)\n            } catch (e) {\n                Json = JSON.parse(request(input))\n                if (!history.includes(input)) {\n                    history.push(input)\n                    saveFile('history', JSON.stringify(history))\n                }\n            }\n            saveFile('JSONTemp', JSON.stringify({ this: Json }))\n            return 'hiker://page/content#noHistory##noRecordHistory#'\n        }, history),\n        extra: { Path: ['this'] },\n        col_type: 'input'\n    }, {\n        title: '““””<big><b>历史记录 &nbsp</b></big>🗑',\n        url: $(['清空历史记录', '删除单项记录']).select(() => {\n            if (input == '清空历史记录') {\n                deleteFile('history')\n                refreshPage(false)\n            } else {\n                let code = function(his, code) {\n                    return $(['““””' + '返回并应用'.bold().fontcolor('#f44236')].concat(his), 1).select((his, code) => {\n                        if (input == '““””' + '返回并应用'.bold().fontcolor('#f44236')) {\n                            saveFile('history', JSON.stringify(his))\n                            refreshPage()\n                            return\n                        } else {\n                            his.splice(his.indexOf(input), 1)\n                            return code(his, code)\n                        }\n                    }, his, code)\n                }\n                return code(JSON.parse(readFile('history') || '[]'), code)\n            }\n        }),\n        col_type: 'text_1'\n    }]\nhistory.forEach((v) => el.push({\n    title: v,\n    url: $('#noLoading#').lazyRule((url) => {\n        let Json = JSON.parse(request(url))\n        saveFile('JSONTemp', JSON.stringify({ this: Json }))\n        return 'hiker://page/content#noHistory##noRecordHistory#'\n    }, v),\n    extra: { Path: ['this'] },\n}))\nsetResult(el)\n","searchFind":"","search_url":"","group":"#️⃣道长dr","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"/*\n\n*/","pages":"[{\"col_type\":\"scroll_button\",\"name\":\"内容载入\",\"path\":\"content\",\"rule\":\"js:\\nsetPageTitle('JSON编辑器')\\neval(JSON.parse(request('hiker://page/functions')).rule)\\nlet AllJson = JSON.parse(readFile('JSONTemp') || '{}'),\\n    Path = MY_PARAMS.Path || JSON.parse(base64Decode(getParam('Path'))),\\n    Json = JSONRecur(AllJson, Path),\\n    Type = Object.prototype.toString.call(Json).slice(8, -1)\\naddListener('onClose', Path.length == 1 ? 'back(false);deleteFile(\\\"JSONTemp\\\")' : 'refreshPage(false)')\\n\\nlet el = [{\\n    title: '““””' + (Path.join('.') + ': ').bold().fontcolor('#409eff') + '[' + Type + '] 🖋️',\\n    url: $(['Object', 'Array', 'String', 'Number', 'Boolean', 'Null'], 2, '选择数据类型').select((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, (self) => typeConvert(self, input))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        refreshPage(false)\\n    }, Path),\\n    col_type: 'text_1',\\n    extra: { lineVisible: false },\\n}, {\\n    title: '✏️修改',\\n    url: $(typeConvert(Json, 'String'), '可清空后，导入新内容覆盖\\\\n可自由选择内容复制').input((Path, Type) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, typeConvert(input, Type))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        refreshPage(false)\\n    }, Path, Type)\\n}, {\\n    title: '💾保存',\\n    url: $('hiker://files/', '输入保存文件路径').input((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}'),\\n            Json = typeConvert(JSONRecur(AllJson, Path), 'String')\\n        writeFile(input, Json)\\n        return 'toast://已保存至' + input\\n    }, Path)\\n}, {\\n    title: '⌨️更多处理',\\n    url: $('self=\\\"\\\"', '用JS对本级内容self进行修改\\\\n大佬级操作，不懂JS慎用').input((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, new Function('self', input + ';return self'))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        refreshPage(false)\\n    }, Path)\\n}, { col_type: 'line_blank' }]\\n\\nswitch (Type) {\\n    case 'Object':\\n    case 'Array':\\n        eval(JSON.parse(request('hiker://page/' + Type)).rule)\\n        break\\n    default:\\n        el.push({\\n            title: String(Json),\\n            col_type: 'long_text'\\n        })\\n}\\n\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"对象解析\",\"path\":\"Object\",\"rule\":\"el.splice(-2, 0, {\\n    title: '💠新增',\\n    url: $('', '输入新增的键值').input((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, (self) => (self[input] = null, self))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        return 'hiker://page/content#noHistory##noRecordHistory#?Path=' + base64Encode(JSON.stringify(Path.concat(input)))\\n    }, Path)\\n}, {\\n    title: '📥导入',\\n    url: $('hiker://files/', '输入要批量新增的\\\\n对象JSON或文件路径\\\\n键值相同的会被覆盖').input((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        try {\\n            input = JSON.parse(input)\\n        } catch (e) {\\n            input = JSON.parse(request(input))\\n        }\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, (self) => Object.assign(self, input))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        refreshPage(false)\\n    }, Path)\\n})\\nfor (let k in Json) {\\n    let v = Json[k],\\n        vType = Object.prototype.toString.call(v).slice(8, -1)\\n    el.push({\\n        title: '““””' + (k + ': ').bold() + '[' + vType + ']',\\n        desc: typeConvert(v, 'String').slice(0, 200),\\n        url: 'hiker://page/content#noHistory##noRecordHistory#',\\n        col_type: 'text_1',\\n        extra: {\\n            Path: Path.concat(k),\\n            lineVisible: false\\n        }\\n    }, {\\n        title: '✎ 键值',\\n        url: $('', '新的键值').input((key, Path) => {\\n            eval(JSON.parse(request('hiker://page/functions')).rule)\\n            let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n            JSONRecur(AllJson, Path, (self) => (self[input] = self[key], delete self[key], self))\\n            saveFile('JSONTemp', JSON.stringify(AllJson))\\n            refreshPage(false)\\n        }, k, Path)\\n    }, {\\n        title: '✘ 删除',\\n        url: $('确定要删除键值[' + k + ']的内容吗？').confirm((key, Path) => {\\n            eval(JSON.parse(request('hiker://page/functions')).rule)\\n            let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n            JSONRecur(AllJson, Path, (self) => (delete self[key], self))\\n            saveFile('JSONTemp', JSON.stringify(AllJson))\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, k, Path)\\n    }, { col_type: 'line' })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数组解析\",\"path\":\"Array\",\"rule\":\"el.splice(-2, 0, {\\n    title: '💠新增',\\n    url: $('#noLoading#').lazyRule((Path, lastIndex) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, (self) => (self.push(null), self))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        return 'hiker://page/content#noHistory##noRecordHistory#?Path=' + base64Encode(JSON.stringify(Path.concat(lastIndex)))\\n    }, Path, Json.length)\\n}, {\\n    title: '📥导入',\\n    url: $('hiker://files/', '输入要批量新增的\\\\n数组JSON或文件路径').input((Path) => {\\n        eval(JSON.parse(request('hiker://page/functions')).rule)\\n        try {\\n            input = JSON.parse(input)\\n        } catch (e) {\\n            input = JSON.parse(request(input))\\n        }\\n        let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n        JSONRecur(AllJson, Path, (self) => self.concat(input))\\n        saveFile('JSONTemp', JSON.stringify(AllJson))\\n        refreshPage(false)\\n    }, Path)\\n})\\nfor (let i = 0; i < Json.length; i++) {\\n    let v = Json[i],\\n        vType = Object.prototype.toString.call(v).slice(8, -1)\\n    el.push({\\n        title: '““””' + (i + ': ').bold() + (vType == 'Object' && (v.title || v.name) || '') + ' [' + vType + ']',\\n        desc: typeConvert(v, 'String').slice(0, 200),\\n        url: 'hiker://page/content#noHistory##noRecordHistory#',\\n        col_type: 'text_1',\\n        extra: {\\n            Path: Path.concat(i),\\n            lineVisible: false\\n        }\\n    }, {\\n        title: '⇵ 移动',\\n        url: $(String(i), '要移动到的位置序号').input((index, Path) => {\\n            eval(JSON.parse(request('hiker://page/functions')).rule)\\n            let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n            JSONRecur(AllJson, Path, (self) => (self.splice(input, 0, self.splice(index, 1)[0]), self))\\n            saveFile('JSONTemp', JSON.stringify(AllJson))\\n            refreshPage(false)\\n        }, i, Path)\\n    }, {\\n        title: '✘ 删除',\\n        url: $('确定要删除序号[' + i + ']的内容吗？').confirm((index, Path) => {\\n            eval(JSON.parse(request('hiker://page/functions')).rule)\\n            let AllJson = JSON.parse(readFile('JSONTemp') || '{}')\\n            JSONRecur(AllJson, Path, (self) => (self.splice(index, 1), self))\\n            saveFile('JSONTemp', JSON.stringify(AllJson))\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, i, Path)\\n    }, { col_type: 'line' })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"公用函数\",\"path\":\"functions\",\"rule\":\"function typeConvert(value, type) {\\n    let vType = Object.prototype.toString.call(value).slice(8, -1)\\n    switch (type) {\\n        case 'Object':\\n            switch (vType) {\\n                case 'Object':\\n                    return value\\n                case 'Array':\\n                    return value.reduce((obj, v, i) => {\\n                        obj[i] = value[i]\\n                        return obj\\n                    }, {})\\n                case 'String':\\n                    try {\\n                        return JSON.parse(value)\\n                    } catch (e) { return {} };\\n                default:\\n                    return {}\\n            };\\n        case 'Array':\\n            switch (vType) {\\n                case 'Object':\\n                    return Object.keys(value).map((k) => value[k])\\n                case 'Array':\\n                    return value\\n                case 'String':\\n                    try {\\n                        return JSON.parse(value)\\n                    } catch (e) { return [] };\\n                default:\\n                    return []\\n            };\\n        case 'String':\\n            switch (vType) {\\n                case 'Object':\\n                case 'Array':\\n                    return JSON.stringify(value)\\n                default:\\n                    return String(value)\\n            };\\n        case 'Number':\\n            return Number(value) || 0\\n        case 'Boolean':\\n            try { value = eval(value) } catch (e) {}\\n            return Boolean(value)\\n        case 'Null':\\n            return null\\n    }\\n}\\n\\nfunction JSONRecur(json, path, value, isCode) {\\n    if (path.length == 1) {\\n        if (value === undefined) {\\n            return json[path[0]]\\n        } else if (typeof value == 'function') {\\n            json[path[0]] = value(json[path[0]])\\n        } else json[path[0]] = value\\n    } else {\\n        return JSONRecur(json[path[0]], path.slice(1), value, isCode)\\n    }\\n}\\n\"},{\"col_type\":\"text_center_1\",\"name\":\"对外接口\",\"path\":\"interface\",\"rule\":\"js:\\n/*\\n入口示例\\n{ url: 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器', extra: { Json: JSON对象或字符串或文件地址 } }\\n{ url: 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(JSON字符串或文件地址)) }\\n*/\\nsetPageTitle('JSON编辑器')\\nlet Json = MY_PARAMS.Json || base64Decode(getParam('Json'))\\nif (typeof Json != 'object')\\n    try {\\n        Json = JSON.parse(Json)\\n    } catch (e) {\\n        Json = JSON.parse(request(Json))\\n    }\\nsaveFile('JSONTemp', JSON.stringify({ this: Json }))\\nJson = JSON.stringify(Json, null, 2)\\nif(Json.length > 10000) Json = Json.slice(0, 9999) + '\\\\n\\\\n......'\\nsetResult([{\\n    title: '““””<b>点我开始编辑Json',\\n    desc: '““””<b>预览',\\n    url: 'hiker://page/content#noHistory##noRecordHistory#',\\n    extra: { Path: ['this'] },\\n}, { title: Json, col_type: 'long_text' }])\\n\"}]","proxy":"","icon":"https://img.icons8.com/?format=png&id=6or30FVdPylJ&size=96"},{"last_chapter_rule":"","title":"极简搜索验证模板","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.libvio.com/show/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'body&&li:gt(0)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: '#screenbox&&ul',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.libvio.com/index.php/verify/index.html?');\n    let ret=提交验证码('https://www.libvio.com/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n        html=获取源码(MY_URL);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href;li&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.libvio.com/search/**----------fypage---.html","group":"#️⃣道长模板","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1.title&&Text;p.data&&Text;p.data,4&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: 'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n    content: '.detail-content&&Text',\n    tabs: 'body&&h3:not(:matches(喜欢))',\n    lists: 'body&&.stui-content__playlist,#id&&li',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.libvio.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://file.libks.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"测WebView","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n\nvar d=[];\nlet xml=request('https://taopianapi.com/home/cjapi/as/mc/vod/xml?ac=videolist&ids=19356');\n//putVar('xmlText',xml);\nlet x5_url=getPath('hiker://files/rules/dzHouse/html/xml2json.html');\n//log(x5_url);\nlet b = fetchCodeByWebView(x5_url); \nwriteFile('/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/ruleCache/webCache.html',b);\nlog(b);\nlet a=xml2json(xml);\n//log(a);\nd.push({\n    title:JSON.stringify(a),\n    col_type:'rich_text'\n});\nsetResult(d);","searchFind":"","search_url":"","group":"#️⃣道长测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":""},{"last_chapter_rule":"","title":"我的电视家","author":"xc2022","version":2,"type":"video","url":"hiker://empty##http://mytvhome.xyz/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nvar ua='Dart/2.13 (dart:io)';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=我的电视家"},{"last_chapter_rule":"","title":"白嫖资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.kxgav.com/api/xml.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://113.107.160.110:39000/tupian.php?text=白嫖资源"},{"last_chapter_rule":"","title":"淘片.zyx","author":"道长","version":2,"type":"video","url":"hiker://empty##https://taopianapi.com/home/cjapi/as/mc/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/85.png"},{"last_chapter_rule":"","title":"江北.zyj","author":"道长","version":1,"type":"video","url":"hiker://empty##https://gfzycj.hnmj.vip/api.php/provide/vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"西瓜🍉舞曲音乐","author":"道长","version":1,"type":"music","url":"hiker://empty##https://raw.githubusercontents.com/mmniw88/-/main/DJ%E9%9F%B3%E4%B9%90%E2%99%A5.txt#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nvar lazy = `@lazyRule=.js:(\n() => {\n    if (/\\.m3u8|\\.mp4/.test(input)) {\n        return input;\n    } else {\n        let url = \"http://api.kunyu77.com/api.php/provide/parserUrl?url=\" + input;\n        let html = request(url, {headers: {\"User-Agent\": \"Dalvik/2.1.0\"}, method: \"GET\"});\n        let urll = JSON.parse(html).data.url;\n        let playhtml = request(urll, {headers: {\"User-Agent\": \"Dalvik/2.1.0\"}, method: \"GET\"});\n        let playurl = JSON.parse(playhtml).url;\n        return playurl + \"#isVideo=true#\";\n    }\n}\n)()`\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/依赖检测.js","icon":"http://1.117.152.239:39000/tupian.php?text=舞曲音乐"},{"last_chapter_rule":"","title":"91开心","author":"道长","version":1,"type":"other","url":"hiker://empty##https://91md.me/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"#️⃣道长资源","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=91开心"},{"last_chapter_rule":"","title":"酷我音乐","author":"仰望星空","version":0,"type":"other","url":"https://m.kuwo.cn/newh5/bang/index","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//以下api接口均来自网络，仅供学习交流使用\nvar res = {};\nvar d = [];\nvar hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json',{}));\n\nd.push(\n{\n   title:hitokoto.content,\n   desc:\n'类别：'+hitokoto.category+\n'\\n作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\n   col_type: 'pic_1',\n   url:\"http://m.yugaopian.cn/\",\n   pic_url: 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime()\n});\n\n//获取列表\nvar conts = parseDom(getResCode(), 'body&&.chartbang&&Html').match(/li[\\s\\S]*?<\\/li>/g);\n\nfor (var i = 0; i < conts.length; i++) {\n//var list = conts[i].match(/<chart_li[\\s\\S]*?<\\/onclick>/g);\nd.push({\n\ttitle: parseDomForHtml(conts[i],'h3&&Text'),\n desc: parseDomForHtml(conts[i],'.chart_detail&&Text'),\n pic_url: parseDomForHtml(conts[i],'img&&data-src'),\n\turl: 'https://m.kuwo.cn'+conts[i].match(/\\('(.*)'\\)/)[1].split('&')[0],\n\tcol_type: 'icon_2'\n});\n}\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: //var json = JSON.parse(getResCode());\nvar json = {};\r\neval('json=' + getResCode());\nvar res = {};\nvar list = json.abslist;\nvar items = list.map(data => ({\n    title: data.SONGNAME,\n    url:'http://antiserver.kuwo.cn/anti.s?type=convert_url&rid='+data.MUSICRID+'&format=mp3&response=url',\n    desc: data.ARTIST,\n    img: fetch('http://artistpicserver.kuwo.cn/pic.web?corp=kuwo&type=rid_pic&pictype=url&content=list&size=1000&rid=' + data.MUSICRID.replace('MUSIC_',''),{})\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"http://search.kuwo.cn/r.s?all=**&ft=music&itemset=web_2013&client=kt&pn=fypage@-1@*1@&rn=8&rformat=json&encoding=utf8","titleColor":"#ffff00ff","group":"#️⃣首页","detail_col_type":"movie_1","detail_find_rule":"body&&.musicListBox&&li;p&&Text;*;.singName&&Text;li&&mid.js:'http://antiserver.kuwo.cn/anti.s?type=convert_url&rid=MUSIC_'+input+'&format=mp3&response=url'+'@lazyRule=.js:var play = fetch(input,{})；；play'","sdetail_col_type":"text_center_1","sdetail_find_rule":"js: var json = fetch(getUrl(),{});\nvar res = {};\nvar d = [];\nd.push({\ntitle: '播放',\nurl: json,\n});\nres.data = d;\nsetHomeResult(res);","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小霸王","author":"小🔥星","version":3,"type":"news","url":"https://www.yikm.net/nes?page=fypage&tag=fyAll&e=","col_type":"movie_3_marquee","class_name":"GBA&街机&Flash&H5&","class_url":"11&9&12&1&","area_name":"动作冒险&小游戏&飞行射击&格斗&","area_url":"2&8&3&4&","sort_name":"适度游戏益脑，沉迷游戏伤身！","year_name":"棋牌&射击&运动比赛&角色扮演&","sort_url":"","year_url":"5&6&7&10&","find_rule":"body&&.card;h4&&Text;img&&src;;a&&href","searchFind":"body&&.card;h4&&Text;a&&href;span&&Text;;img&&src","search_url":"https://www.yikm.net/search?name=**","titleColor":"#ff228be6","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://z3.ax1x.com/2021/10/28/5LImvR.png"},{"last_chapter_rule":"","title":"枫音应用","author":"","version":7,"type":"other","url":"https://www.fy6b.com/category/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"最新&媒体娱乐&观影听歌&小说漫画&社交娱乐&装X整蛊","class_url":"all&all/android/player&all/android/player/gytg&all/android/player/xsmh&all/android/player/andchat&all/android/player/zbzg","area_name":"实用工具&办公必备&修图剪辑&上传下载&手机优化&生活相关&广告净化&浏览器&学习提升&壁纸美图&黑科技","area_url":"all/android/andwork&all/android/andwork/work&all/android/andwork/draw&all/android/andwork/anddown&all/android/andwork/sjyh&all/android/andwork/live&all/android/andwork/addelet&all/android/andwork/chrome&all/android/education&all/android/launcher&all/android/hkj","sort_name":"系统工具&清理优化&激活工具&系统增强&系统防护&实用工具&上传下载&媒体处理&阅读学习&趣味工具&功能插件&广告净化&趣味插件&解析工具","year_name":"影视相关&优化加速&音乐相关&技术教程&专业工具","sort_url":"all/pcsoft/pctools&all/pcsoft/clrean&all/pcsoft/activation&all/pcsoft/pctools/sysplus&all/pcsoft/pctools/disktools&all/pcsoft/pctools&all/pcsoft/pcdown&all/pcsoft/pic&all/pcsoft/read&all/pcsoft/pcchat&all/chromeplugin/gncj&all/chromeplugin/ad&all/chromeplugin/playch&all/chromeplugin/analysis","year_url":"all/ios/iosmovie&all/ios/iosclear&all/ios/iosmusic&all/netdisk/course&all/netdisk/tools","find_rule":"body&&.item;a&&title;img&&data-original.js:input+ \"@Referer=\";.date&&Text;a&&href","searchFind":"body&&.item;a&&title;a&&href;.date&&Text;.item-excerpt&&Text;img&&data-original","search_url":"https://www.fy6b.com/page/fypage?s=**","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.entry-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'img&&src'+ \"@Referer=\",\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://www.fy6b.com/wp-content/uploads/2021/11/2021112005435542.jpg"},{"last_chapter_rule":"","title":"分享者","author":"小🔥星","version":11,"url":"https://sharerw.com/a/fyAll/fypage/","col_type":"movie_1_vertical_pic","class_name":"手机软件&车机软件&电脑软件","class_url":"ganhuo&qiche&jingyan","area_name":"盒子软件&TV资讯&精选TV","area_url":"ziyuan&tvzx&jxtv","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.article-list;img&&alt;img&&src;.time&&Text;a&&href","searchFind":"body&&.article-list;img&&alt;a&&href;.time&&Text;p,1&&Text;img&&src","search_url":"https://sharerw.com/search.php?q=**&page=fypage","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:var res={};var d=[];html=getResCode();text=parseDomForHtml(html,\".art-content&&Html\");d.push({title:text,col_type:'rich_text'});res.data=d;setHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/11/05/ImzSvd.png"},{"last_chapter_rule":"","title":"VXAT","author":"小🔥星","version":4,"type":"other","url":"https://www.vxat.com/fyAll_fypage.html","col_type":"movie_1_vertical_pic","class_name":"软件下载&Windows&Android&电视软件","class_url":"RuanJianXiaZai&Windows&Android&TV","area_name":"优惠活动&网站源码&服务器&技术教程","area_url":"YouHuiHuoDong&WangZhanYuanMa&VPS&JiShuJiaoCheng","sort_name":"一级页面提示错误为没有下一页！","year_name":"其他&游戏&网友分享","sort_url":"","year_url":"QiTa&YouXi&WangYouFenXiang","find_rule":"body&&.post;a&&title;img&&src;.time&&Text;a&&href","searchFind":"body&&.post;a&&title;a&&href;.time&&Text;.post&&Text;img&&src","search_url":"https://www.vxat.com/search.php?q=**&page=fypage","titleColor":"#ff228be6","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.article-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'img&&src'+ \"@Referer=\",\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/10/28/5L5kpd.png"},{"last_chapter_rule":".detail-img&&span&&Text","title":"韩剧网","author":"小🔥星","version":5,"type":"video","url":"https://m.tvn.cc/fyAll/fypage.html[firstPage=https://m.tvn.cc/fyAll]","col_type":"movie_3_marquee","class_name":"韩剧&日剧&泰剧","class_url":"hanju&dianshiju&taiju","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.video-list-container&&li;h2&&Text;img&&src;.sNum&&Text;a&&href","searchFind":"body&&.video-list-container&&li;h2&&Text;a&&href;.sNum&&Text;;img&&src","search_url":"https://m.tvn.cc/index.php?s=vod-search-pg-fypage-wd-**.html","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')` ;\n\n//嗅探\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, '.media-title&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.detail-media--h1&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.detail-img&&img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.playerWrap');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.player-list');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, '.media-title&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '香资',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.xyq',\n    pic_url: \"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zywcj.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/fly1397/hiker-icy/raw/master/aliyun.png\",\n    col_type: 'icon_small_4'\n})\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://m.tvn.cc/favicon.ico"},{"last_chapter_rule":"","title":"i3综合社区","author":"小🔥星","version":8,"type":"other","url":"https://www.i3zh.com/category/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"安卓&电视盒子&苹果/平板","class_url":"phone/android&phone/tv&phone/ios","area_name":"MAC&电脑&网页","area_url":"windows/mac&windows/win&web","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.content-box;a&&title;img&&src.js:input+ \"@Referer=\";.ico-time&&Text;a&&href","searchFind":"body&&.content-box;a&&title;a&&href;.ico-time&&Text;.posts-text&&Text;img&&src.js:input+\"@Referer=\"","search_url":"https://www.i3zh.com/page/fypage?s=**","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.post-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'img&&src'+\"@Referer=\",\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.i3zh.com/wp-content/uploads/2020/01/2020011714120370.ico"},{"last_chapter_rule":"","title":"前线乐园","author":"","version":6,"type":"other","url":"https://www.yijingying.com/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"首页&安卓&电脑&macos","class_url":"&tools/android&tools/windows&tools/macos","area_name":"Win11&Win10&Win7&Winxp&WinPE&Linux&","area_url":"system/win11&system/win10&system/win7&system/winxp&system/winpe&system/linux&","sort_name":"正版优惠&免费游戏&值得一看&原创作品&影视推荐&编程语言","year_name":"热点资讯&WorsPress&油猴脚本&拓展插件&&","sort_url":"news/activity&news/freegames&worth&original&worth/movie&worth/program","year_url":"news&web/wordpress&web/greasyfork&web/extensions&&","find_rule":"body&&.excerpt;img&&alt;img&&data-src.js:input+ \"@Referer=\";time&&Text;a&&href","searchFind":"body&&.excerpt;img&&alt;a&&href;.meta&&time&&Text;.note&&Text;img&&data-src.js:input+ \"@Referer=\"","search_url":"https://www.yijingying.com/page/fypage?s=**","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.article-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'img&&src'+ \"@Referer=\",\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.yijingying.com/wp-content/uploads/2021/04/logo.png"},{"last_chapter_rule":"","title":"耳音视频","author":"小🔥星","version":5,"url":"https://www.asmrin.com/asmr-video/page/fypage","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.excerpt');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h2&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src')+ \"@Referer=\",\r\n       url: parseDom(list[j],'a&&href')+ '@lazyRule=iframe&&src'\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/21/TuHhyd.png"},{"last_chapter_rule":"","title":"萌图社","author":"小🔥星","version":5,"type":"other","url":"https://moetu.club/category/fyAll/page/fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； V1986A Build/RP1A.200720.012；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36&&Cookie@Hm_lvt_8f6576f1c707a7b6b7a3b499135768e6=1641352007；； _ga=GA1.2.801689874.1641352007；； _gid=GA1.2.1637052103.1641352007；； Hm_lpvt_8f6576f1c707a7b6b7a3b499135768e6=1641352076；； _gat_gtag_UA_120802358_2=1}","col_type":"movie_3_marquee","class_name":"首页&画师推荐&图集画册&动画官绘","class_url":"&pixiv&illustration&official","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), 'body&&.item-in');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'img&&alt'),       \r\ndesc: parseDomForHtml(list[j], ''),       \r\npic_url: parseDom(list[j], 'img&&src')+\"@Referer=\",       \r\nurl: parseDom(list[j],'a&&href')+\"#noRecordHistory#\"+`@lazyRule=.js:var pics=parseDom(fetch(input,{}),'.entry-content&&Html').match(/http.*?(jpeg|jpg|png)/g)；；\"pics://\"+pics.join('&&')`\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://moetu.club/wp-content/uploads/2019/06/cropped-icon-1-192x192.png"},{"last_chapter_rule":"","title":"弹幕电台","author":"小🔥星","version":2,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://biu.moe/fm\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/music/10.svg"},{"last_chapter_rule":"","title":"人生重开模拟器","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://liferestart.syaro.io/view/index.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"小电视①","author":"","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d=[];\n\nd.push({\n    desc:'auto&&float',\n    url:'http://tvdang.ddns.net:8000',\n\t\t col_type: 'x5_webview_single'\n});\n\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"ACG17测试","author":"小🔥星","version":7,"type":"other","url":"http://acg17.com/category/fyAll/page/fypage/;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； V1986A Build/RP1A.200720.012；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36&&Cookie@__yjs_duid=1_ea42ca96917a347914e3e03ab136c5481638530020148；； UM_distinctid=17d7ffff50fda-0a416ec6d16d16-13572423-46938-17d7ffff510dd；； Hm_lvt_b3fa8c3fc9c5b90c99e44e7abfeab3bc=1638530022；； __8qcehdE7ZaRq2q6M__=8ad7d50051cd56bf49833cb8aa663b9d854a；； CNZZDATA1260399050=597976409-1638519960-%7C1638855307；； _ga=GA1.1.778094092.1638530020；； Hm_lpvt_b3fa8c3fc9c5b90c99e44e7abfeab3bc=1638857085；； yjs_js_security_passport=eff99ae8191bfd20083af8a28238e27598acc228_1641870484_js；； _ga_43FWZHGTM1=GS1.1.1641870483.16.1.1641870548.0}","col_type":"text_center_1","class_name":"美图&P站画师&P站美图&图包画集&COSPLAY","class_url":"meitu&pixiv-painter&pixiv-wallpaper&album&cosplay","area_name":"动漫文章&ACG综合&八卦&模玩萌物&软妹萌娘","area_url":"news&acgnews&bagua&toys&beautygirl","sort_name":"动漫音乐&Vocaloid&东方音乐&音乐推荐&","year_name":"趣站&宅软件&电脑软件&浏览器拓展&宅音乐&同人音声&游戏音乐&宅技术&好玩&番剧介绍&","sort_url":"anime-music&vocaloid&touhou-music&dianmiao&","year_url":"goodsite&software&win&%e6%b5%8f%e8%a7%88%e5%99%a8%e6%89%a9%e5%b1%95/&music&asmr&gamemusic&jishu&interest&tvanime&","find_rule":"body&&.item-list;h2&&Text;.post-thumbnail&&img&&style;.item-list--h2&&Text;a&&href","searchFind":"body&&.item-list;h2&&Text;a&&href;.tie-date&&Text;.item-list--h2&&Text;;","search_url":"http://acg17.com/page/fypage/?s=**;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； V1986A Build/RP1A.200720.012；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.106 Mobile Safari/537.36&&Cookie@__yjs_duid=1_3edc09648f179b46e5d219b31ab1ff5f1627960463383；； UM_distinctid=17b0a017b51ef-0e8c6fe83c5cff-13572423-46938-17b0a017b52166；； Hm_lvt_b3fa8c3fc9c5b90c99e44e7abfeab3bc=1627960475；； yjs_js_security_passport=af62cb33afe18d6f0f232e25f9d5528d3caeedb6_1629992630_js；； _gid=GA1.2.915605401.1629992631；； CNZZDATA1260399050=1106309924-1627959814-%7C1629992767；； _gat=1；； _ga_43FWZHGTM1=GS1.1.1629992632.3.1.1629993628.0；； _ga=GA1.1.1843855661.1629729135；； Hm_lpvt_b3fa8c3fc9c5b90c99e44e7abfeab3bc=1629993629}","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/4.png"},{"last_chapter_rule":"","title":"小刀娱乐网","author":"小🔥星","version":2,"url":"https://www.x6g.com/html/fyAll-fypage.html","col_type":"movie_1_vertical_pic","class_name":"绿色软件&网站源码&游戏相关&界面控件","class_url":"23&40&84&85","area_name":"安卓软件&其他软件&游戏相关&上传下载&盒子应用","area_url":"47&49&96&97&102","sort_name":"QQ微信&办公学习&娱乐休闲&系统相关","year_name":"只有源码&其他源码&源码教程&易语言源码","sort_url":"24&26&29&28","year_url":"41&89&63&82","find_rule":".list-soft&&li;img&&alt;img&&src.js:input+ \"@Referer=\";.list-ca&&Text;a&&href","searchFind":".list-ul&&li;.soft-title&&Text;a&&href;.list-ca&&Text;;*","search_url":"https://www.x6g.com/daowangsousuo?keyword=**&searchtype=titlekeyword&channeltype=0&orderby=&kwtype=0&pagesize=10&typeid=0&TotalResult=957&PageNo=fypage","titleColor":"#ff228be6","group":"0 测试 ","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/12/01/o841de.png"},{"last_chapter_rule":"","title":"🐮🐝","author":"","version":66,"type":"other","url":"https://7nnyu.xyz?fyclass-fypage.htm;get;utf-8","col_type":"movie_3","class_name":"最新&周榜&月榜&5+&10+","class_url":"list&top7_list&top_list&5min_list&long_list","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.body&&.thumbnail');\nlet i=0;\nfor (var j in list) {\n  let id=parseDomForHtml(list[j],'a&&href').split(\".\")[0].split(\"-\")[1];\n//let tmp=parseDomForHtml(list[j],'a&&href');\n//\tlet id=tmp.replace(\".html\",\"\").split(\"/\")[tmp.replace(\".html\",\"\").split(\"/\").length-1];\n//\tlet url=\"https://www.zycaqc1.com/detail/\"+id+\".html\"\n\n  \t let img=parseDomForHtml(list[j], '.image&&style')\n\t img=img.split(\"'\")[1].split(\"'\")[0]\n\t d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),\n       desc: parseDomForHtml(list[j], '.info&&Text'),\n       pic_url:img,\n      // url: url+=`@lazyRule=#Player&&src.js:input.split('url=')[1]`\n\t   //+`@lazyRule=#video-play&&src`\n\t\t url:\"https://7nnyu.xyz/\"+parseDomForHtml(list[j],'a&&href')+`@lazyRule=#video-play&&source&&src`,\n   });\n \n  \t\n  \n}\n\nres.data = d;\nsetHomeResult(res);\n","searchFind":"","search_url":"","group":"0特殊","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"奈飞影视·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://www.naifei.org/vodshow/id/dy/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//https://netflix.mom\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\neval(JSON.parse(request('hiker://page/module-search-item?rule=模板·Q')).rule)","search_url":"/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/lazy')).rule);\neval(JSON.parse(request('hiker://page/module-tab-item?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n        return url\\n}, MY_HOME)\"}]","proxy":"","icon":"https://img.ciyuanji.com/files/2021/07/22/e51e187315cc4abf87d817b218ac5ba3.png"},{"last_chapter_rule":"","title":"聚影√","author":"","version":1,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:require(config.依赖);\nyiji()","searchFind":"js:require(config.依赖);\nsousuo()","search_url":"https://v.sogou.com/v?query=**&typemask=6&p=&dp=&dr=&_asf=v.sogou.com&enter=1&ie=utf8","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:require(config.依赖);\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"initConfig({\n    依赖: \"https://gitcode.net/src48597962/hk/-/raw/master/SrcJuying.js\"\n});\n//by.帅√`人才 聚影模板！","pages":"[]","proxy":"","icon":"https://img.vinua.cn/images/QqyC.png"},{"last_chapter_rule":"","title":"虎年专属","author":"","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://accct.top/315\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":" js:\nvar html = getResCode();\n var conts = parseDomForArray(html, 'body&&.stui-content__playlist')[0];\n var list = parseDomForArray(conts, 'body&&a');\n var title = parseDomForHtml(list[list.length - 1], 'a&&Text');\n setResult(\"更新至: \" + title);","title":"APP影视","author":"","version":0,"type":"video","url":"https://app.movie/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&","class_url":"1&2&3&4&","area_name":"全部\n&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&/area/大陆&/area/韩国&/area/香港&/area/台湾&/area/日本&/area/美国&/area/泰国&/area/英国&/area/新加坡&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012","sort_url":"time&hits&score","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://app.movie/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.stui-player__video&&script&&Html.js:eval(input);player_data.url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:matches(猜你喜欢|剧情介绍))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace('类型：','');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').substring(0,15);\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\n\nvar 简介 = parseDomForHtml(html, '.stui-content__desc&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title:  主演 + '\\n' +导演,\n    desc: 分类 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: ''\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#0aa344\">正序↑</font></small>' + '<small><font color=\"#ff4c00\">反序↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#ff4c00\">正序↑</font></small>' + '<small><font color=\"#0aa344\">反序↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/19.svg"},{"last_chapter_rule":"","title":"看剧荐","author":"ZHJ","version":0,"type":"video","url":"https://www.kanjujian.com/Mov/movie/Pnfypage.html","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\n\n\n\n//这个不用管，作用:展开动态分类\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\n\n//定义变量,作用，找分类定位\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.mobiHeaderMenu&&.info'\nconst 拼接分类 = 'body&&#container&&.columnMenu:not(:matches(新番连载))'\nconst 小类定位 = 'body&&a:not(:matches(首页|追剧周表|今日更新|专题列表|热搜榜|赞助我们|APP|更多|高级筛选))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\n//要替换的链接\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\n\n\n\n\n//链接替换页数，必须用正则改\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/Pn\\/(\\d+)-1\\.html/, 'Pn/$1-'+page+'.html').replace(/(Mov.*)/,  '$1'+'/Pn'+page+'.html')\nlog(true_url)\n}\n\n\n//替换后的html\nlog(true_url)\nvar html = request(true_url)\n\n\n\n//引用动态分类子页面\neval(JSON.parse(fetch('hiker://page/动态分类')).rule);\n\n\n\n/*\n//首页搜索\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\n*/\n\n\n\n//首页电影排列\ntry {\n    var list = parseDomForArray(html, '.movies_mobi&&.movieFlag');//列表\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'h4&&Text'),//标题\n            desc: parseDomForHtml(list[j], '.info--h4&&Text'),//描述\n            pic_url: parseDom(list[j], 'img&&data-url') + '@Referer=',//图片，referer不用动\n            url: parseDom(list[j], 'a&&href')+ '#immersiveTheme#'//链接\n        });\n    }//下面几行不用管\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {}\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar lbb_a = pdfa(html,'body&&.movies_mobi&&.eachOne');\n\n\n\nfor (var i in lbb_a) {\n标题=pdfh(lbb_a[i],'h4&&a&&Text')\n图片=pdfh(lbb_a[i],'.orginSrc&&data-url')\n链接=pdfh(lbb_a[i],'h4&&a&&href')\n描述=pdfh(lbb_a[i],'.thumbInfo&&Text')\n\n\n\nd.push({\ntitle:标题,\npic_url:图片,\nurl:链接+\"#immersiveTheme#\",\ndesc:描述,\ncol_type: \"movie_3\"\n});\n\n\n\n}\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nsetResult(d)","search_url":"https://www.kanjujian.com/Mov/so/**/Pnfypage.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\nvar lazy = $('').lazyRule(() => {\n\n提取码数组=input.split(\"pwd=\")\ncopy(提取码数组[提取码数组.length-1])\n\nif(提取码数组.length>2)\n{\n\nreturn 提取码数组[0]+\"pwd=\"+提取码数组[提取码数组.length-1]\n}\n\n\nif(input.includes(\"https://www.aliyundrive.com\")){\n\n\nreturn 提取码数组[0].replace('https://www.aliyundrive.com','hiker://page/detail?rule=云盘汇影&url='+'https://www.aliyundrive.com')\n\n}else return input\n\n})\n\n\n\n//下载请求链接https://www.kanjujian.com/Mdown/ajax_downUrls/60873\n//Referer: https://www.kanjujian.com/Mov/one/60873.html\n\n\n\n\n\n//下载响应\n\n\n\nID=MY_URL.split(\"one/\")[1].split(\".html\")[0]\n\n请求链接=\"https://www.kanjujian.com/Mdown/ajax_downUrls/\"+ID\n\n响应=request(请求链接,{\nheaders: {\n\"X-Requested-With\": \"XMLHttpRequest\",\n\n\"Referer\":MY_URL.replace(\"#immersiveTheme#\",\"\")\n}\n\n\n})\n\n\nvar 线路 = 'body&&.downTypeTab&&li'\nvar 选集 = 'body&&.downUrlContainer'\nvar 线路名 = 'Text'\nvar 选集列表 = '.downUrlContainer&&.copyMore'\n\n\n//下载响应\n\n\n\n//[下载]线路名列表的定位\nvar arts_下载 = parseDomForArray(响应, '.downTypeTab&&li');\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.contentNav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text').replace('(支持手机)','').replace('1.','').split('解析')[0])\n}\n\n//[下载]线路名列表名称的定位\nfor (var i in arts_下载) {\n    tabs.push(parseDomForHtml(arts_下载[i], 'li&&Text'))\n}\n\n\n\nlog(tabs)\n\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '.pp');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//[下载]播放列表的列表的定位\nvar conts_下载 = parseDomForArray(响应, 'body&&.downUrlContainer');\n\nfor (var i in conts_下载) {\n    lists.push(parseDomForArray(conts_下载[i], '.downUrlContainer&&.copyMore'))\n}\n\n\n\nlog(\"成功播放列表\")\nvar 分类 = parseDomForHtml(html, 'body&&.info,1&&ul,0&&Text').split(\"/ \")[2];\n\nvar 主演 = parseDomForHtml(html, 'body&&.info,1&&ul,0&&Text').split(\"/ \")[1];\n\nvar 导演 = parseDomForHtml(html, 'body&&.info,1&&ul,0&&Text').split(\"/ \")[0];;\n\nvar 状态 = parseDomForHtml(html, 'body&&.info,1&&ul,0&&Text').split(\"/ \")[3];\n\nvar 图片 = parseDom(html, 'body&&.thumb,0&&img&&data-url');\n\n\n\nif(html.includes(\"briefOuter\"))\nvar 简介 = parseDomForHtml(html, 'body&&.briefOuter&&details&&Text').replace('简介：','');\nelse var 简介=\"无\"\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:图片,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nlog(\"成功头\")\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n\n\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n\n\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\n\nfunction setLists(lists, index) {\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n\n\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n\n\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n\nif(list[j].includes(\"kanjujian\")){\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"#isVideo=true#\"+unescape(parseDom(list[j], 'a&&play_url').split(\"siamurl=\")[1] ),extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n\n}else{\n\n下载标题=parseDomForHtml(list[j], '.copyMore&&Text').replace(/第|集|话|期/g, '')\n下载链接=parseDom(list[j], '.copyMore&&href')\n集数正则=/[s]\\d\\d[e]\\d\\d|阿里.\\W|夸克.\\W|迅雷.\\W|115.\\W|微云.\\W|天翼.\\W|阿里|夸克|迅雷|115|微云|天翼/gi\n\n              d.push({\n                    title:集数正则.test(下载标题)?下载标题.match(集数正则)[0]+'\\n'+下载标题:下载标题,\n                    url:下载标题.includes(\"码\") ? 下载链接+\"?pwd=\"+下载标题.split(\"码\")[1].replace(/:|：| /g,\"\")+lazy:下载链接.replace('https://www.aliyundrive.com','hiker://page/detail?rule=云盘汇影&url='+'https://www.aliyundrive.com').replace(\"?pwd=null\",\"\"),\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n}\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\n\n/*不用Q模板了需要系列优化\nhttps://www.kanjujian.com/Mdown/ajax_downUrls/60873\n\nlog(MY_URL)\nID=MY_URL.split(\"one/\")[1].split(\".html\")[0]\n\n请求链接=\"https://www.kanjujian.com/Mdown/ajax_downUrls/\"+ID\n\n响应=request(请求链接,{\nheaders: {\n\"X-Requested-With\": \"XMLHttpRequest\",\n\n\"Referer\":MY_URL.replace(\"#immersiveTheme#\",\"\")\n}\n\n\n})\nlog(MY_URL.replace(\"#immersiveTheme#\",\"\"))\nlog(请求链接)\nlog(响应)\n\n\nhtml=响应\n下载分类列表= pdfa(html,'.downTypeTab');\n\nvar 线路 = 'body&&.downTypeTab&&li'\nvar 选集 = 'body&&.downUrlContainer'\nvar 线路名 = 'Text'\nvar 选集列表 = '.downUrlContainer&&.copyMore'\n\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\n\nd.push({\ntitle:\"显示磁力\",\n\ncol_type: \"text_1\"\n});\n\n*/\n\n\n\n\n\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"动态分类\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://p0.meituan.net/dpplatform/5d6077459de842c004371a827f6f56e014334.png"},{"last_chapter_rule":"","title":"老弟影视","author":"家娃","version":0,"type":"video","url":"https://www.laodiys.com/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-').replace('-up', 'up-')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动画电影&犯罪片&悬疑片&奇幻片&冒险片&惊悚片&国产剧&港台剧&日韩剧&欧美剧&海外剧&泰剧","class_url":"1&2&3&4&6&7&8&9&10&11&12&24&27&35&41&42&43&44&13&14&15&16&23&37","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&新加坡&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&新加坡&其他","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/详情 >/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.laodiys.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n\n    function toUrl(url) {\n         //log(\"播放地址-->\" + url);\n        if (url.indexOf('bilivideo') != -1) {\n            return url + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n        } else if (url.indexOf('titan.mgtv.com') != -1) {\n            return url + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n        } else if (url.indexOf('com/gzc') != -1) {\n            return url + ';{Referer@https://www.laodiys.com/}';\n        } else {\n            return url;\n        }\n\n    }\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        //如果播放地址存在m3u8等扩展名直接返回\n        if (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            return toUrl(playUrl);\n        }\n        //获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \"body&&.embed-responsive&&script,1&&src\");\n        //log(jvs);\n\n        eval(request(jvs, {}));\n        var jiek = '';\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            var jxkJSPath = \"https://www.laodiys.com/static/player/\" + fro + \".js\";\n            //log(\"jxkJSPath-->\" + jxkJSPath);\n            var jiekHtml = request(jxkJSPath, {});\n            //log(\"jiekHtml-->\" + jiekHtml);\n            jiek = jiekHtml.match(/src=\"(.*?)'/)[1].replace(\"ifr.php\", \"ifrty.php\");\n            if (jiek != '') {\n                if (jiek.substring(0, 4) == 'http') {\n                    jiek = jiek;\n                } else if (jiek.substring(0, 2) == '\\/\\/') {\n                    jiek = 'https:' + jiek;\n                } else {\n                    jiek = \"https://www.laodiys.com\" + jiek\n                }\n            }\n        }\n        var jiexi = jiek + playUrl;\n        //log(\"jiexi-->\" + jiexi);\n        var playerHtml = request(jiexi, {\n            headers: {\n                \"Referer\": \"https://www.laodiys.com/\"\n            }\n        });\n\n        if (fro == \"leduo\") {\n            var tempUrl = base64Decode(playerHtml.match(/url1='(.*?)'/)[1].replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\"));\n\t\t\tplayUrl = decodeURIComponent(tempUrl);\n           // log(\"leduo-->\" + playUrl);\n        }      \n      else if (fro == \"fanqie\") {\n            playUrl = playerHtml.match(/url\": \"(.*?)\"/)[1];\n           // log(\"fanqie-->\" + playUrl);\n        }\n        //log(\"playurl-->\" + playUrl);\n\n        if (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            return toUrl(playUrl);\n        } else {\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + input + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video\n        }\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    var item =parseDomForHtml(arts[i], 'a&&Text');\n   tabs.push(item);\n    \n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original')+'@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&.data,4&&a&&onclick').match(/剧情简介','(.*?)'/)[1];\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.laodiys.com/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"微模板·H1","author":"发粪涂墙&猫猫","version":20,"type":"tool","url":"hiker://empty##https://www.uumjw.com/vshow/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|直播|资讯|APP))'\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n//log(true_url)\n\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"/vsearch**/page/fypage.html","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 搜索标签 = '';\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = ''.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if  (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)){\\n            fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"\\njs:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\\n\\n//log(true_url)\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"}]","proxy":"","icon":"#ff62a6fb"},{"last_chapter_rule":"","title":"思乐影视.D🐰","author":"家娃","version":1,"type":"video","url":"https://www.4ltv.com/show/2------fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst Color = \"#19B89D\";\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\n    //log('aa:'+true_url)\nconst page = MY_PAGE\n   // log(page)\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/---(\\d*)\\.html/,  '---$1'+page +'.html');\n    //log(true_url)\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst category = ['<a href=\\\"/show/2------.html\\\" >电影</a> <a href=\\\"/show/1------.html\\\" >电视剧</a> <a href=\\\"/show/4------.html\\\" >综艺</a> <a href=\\\"/show/3------.html\\\" >动漫</a>']\n\nconst categories = category.concat(parseDomForArray(html, '.box&&.scroll-content:not(:contains(片库))'))\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_RULE.group, \"0\")\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: \"🔍\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"搜你想看...\",\n        col_type: \"input\"\n    });\n\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #F54343\">: (</span></b>' : '““””<b><span style=\"color: ' + Color + '\">: )</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color:' + Color + '\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n\n//一级页面\nvar list = pdfa(html, 'body&&.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], '.lazyloaded&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'h3&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.4ltv.com/search/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src') + '@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&span&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析处理\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    function toUrl(playUrl) {\\n        if (/mgtv|sohu/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n        } else if (/bili/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n        } else if (/ixigua/.test(playUrl)) {\\n            return playUrl + \\\"#isVideo=true#\\\" + \\\"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n        } else {\\n            return playUrl;\\n        }\\n    }\\n    var playUrl = \\\"\\\";\\n    try {\\n        var html = request(input, {});\\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\\n        var fro = player_data.from;\\n        playUrl = player_data.url;\\n        if (player_data.encrypt == '1') {\\n            playUrl = unescape(player_data.url);\\n        } else if (player_data.encrypt == '2') {\\n            playUrl = unescape(base64Decode(player_data.url));\\n        };\\n        var exclude = /playm3u8|m3u8\\\\.tv|min\\\\.css|404\\\\.m3u8|\\\\.css/;\\n        var contain = /\\\\.mp4|\\\\.m3u8|\\\\.flv|\\\\.avi|\\\\.mpeg|\\\\.wmv|\\\\.mov|\\\\.rmvb|\\\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\\n            return toUrl(playUrl);\\n        }\\n\\n        //获取下网站配置文件的解析接口\\n        var jvs = parseDom(html, \\\"body&&.player-wrapper&&script,1&&src\\\");\\n        eval(request(jvs, {}));\\n        var jiek = '';\\n        if (MacPlayerConfig.player_list[fro].ps == \\\"1\\\") {\\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\\n        }\\n        var jiexi = jiek + playUrl;\\n        //log(\\\"jiexi-->\\\" + jiexi);\\n        var jhtml = request(jiexi, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://www.4ltv.com/\\\"\\n            }\\n        });\\n        if (jhtml.indexOf('解析失败') != -1) {\\n            return 'toast://喔唷！解析失败了'\\n        }\\n        eval(getCryptoJS());\\n        var le_token = jhtml.match(/_token = \\\\\\\"(.*?)\\\\\\\"/)[1];\\n        var _token_key = CryptoJS.enc.Utf8.parse(\\\"A42EAC0C2B408472\\\");\\n        var _token_iv = CryptoJS.enc.Utf8.parse(le_token);\\n        eval(jhtml.match(/var config = {[\\\\s\\\\S]*?}/)[0] + \\\"\\\");\\n\\n        function v_decrypt(data, token_key, token_iv) {\\n            return CryptoJS.AES.decrypt(data, token_key, {\\n                iv: token_iv\\n            }).toString(CryptoJS.enc.Utf8);\\n        };\\n        playUrl = v_decrypt(config.url, _token_key, _token_iv);\\n        //log(\\\"playurl-->\\\" + playUrl);\\n        return toUrl(playUrl);\\n\\n    } catch (e) {\\n        //setError(e);\\n        return 'toast://嗅探异常，可能链接无法访问。'\\n    }\\n});\"}]","proxy":"","icon":"https://www.4ltv.com/upload/mx/sltv-icon.png"},{"last_chapter_rule":"","title":"酷我MV🎶","author":"","version":0,"type":"video","url":"https://m.kuwo.cn/newh5/bang/content?bid=fyAll&pic=","col_type":"icon_2","class_name":"酷我热歌榜&酷我飙升榜&酷我新歌榜&抖音热歌榜&酷我铃声榜&酷我热评榜&ACG新歌榜&台湾KKBOX榜&冬日暖心榜&巴士随身听榜&KTV点唱榜&家务进行曲榜&","class_url":"16&93&17&158&292&284&290&286&279&281&255&280&","area_name":"熬夜修仙榜&枕边轻音乐榜&古风音乐榜&Vlog音乐榜&酷我电音榜&流行趋势榜&现场音乐榜&ACG神曲榜&最强翻唱榜&经典怀旧榜&","area_url":"282&283&278&264&242&187&204&186&185&26&","sort_name":"iTunes音乐榜&beatport电音榜&英国UK榜&百大DJ榜&YouTube音乐排行榜&韩国Genie榜&韩国M-net榜&香港电台榜&日本公信榜&腾讯音乐人原创榜","year_name":"酷我华语榜&酷我粤语榜&酷我欧美榜&酷我韩语榜&酷我日语榜&会员畅听榜&网红新歌榜&影视金曲榜&dj嗨歌榜&Billboard榜&","sort_url":"49&180&13&164&246&265&14&8&15&151","year_url":"104&182&22&184&183&145&153&64&176&12&","find_rule":"js:\nvar d = [];\nvar html=getResCode()\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\nconst list = parseDom(getResCode(), 'body&&.musicListBox&&Html').match(/<li[\\s\\S]*?<\\/li>/g)\n\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'p&&Text'),\n        desc: pdfh(list[j], 'p,1&&Text'),\n        img: pdfh(list[j], '.singMv||.singDom2&&img&&src')+'@Referer=',\n        url: pd(list[j], 'li&&mid').replace('https://m.kuwo.cn/newh5/bang/','http://m.kuwo.cn/mv/')+lazy,         \n      })\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(fetch(\"hiker://page/lazy\")).rule)\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list-song&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.song&&Text'),\n     desc:parseDomForHtml(list[j], '.artist&&Text'),\n     pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+`@lazyRule=.js:'http://mpge.5nd.com/'+request(input).match(/'(.*\\\\.mp3)'/)[1]`\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.5nd.com/so/s_**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\ntry{\\n   var url = request(input).match(/url:\\\"(http.*?)\\\"/)[1]\\n   var url=url.replace(/\\\\\\\\u002F/g,'/')\\n\\n       { return url}\\n\\n}catch (e) {\\n\\nvar url =input.replace('http://m.kuwo.cn/mv/','http://m.kuwo.cn/newh5app/play_detail/')\\n  \\n    \\n          const {\\n                        lazyParse\\n                    } = $.require(\\\"hiker://page/globalParse?rule=\\\\u9053\\\\u957f\\\\u4ed3\\\\u5e93Pro\\\");\\n\\n                    return lazyParse(url)\\n}\\n\\n\\n});\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/music/82.svg"},{"last_chapter_rule":"","title":"爱影视蓝光电影网","author":"","version":0,"type":"video","url":"hiker://empty##https://aiyingshis.com/vodshow/id/37/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//https://netflix.mom\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(韩国|午夜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://aiyingshis.com/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"爱云","author":"sm`回忆","version":0,"type":"video","url":"https://www.iooyun.com/iy/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.iooyun.com/vodsearch/----------fypage---.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy= `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.detail&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&h3:not([src])');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"4k电影网","author":"","version":0,"type":"video","url":"hiker://empty##https://www.4kdyw.cn/vodshow/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//https://netflix.mom\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.4kdyw.cn/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://image.zhihuishu.com/zhs/ablecommons/demo/202202/667ddd36965d4bebaf19c9ee71d29114.png"},{"last_chapter_rule":"","title":"全民影院","author":"发粪涂墙&帅√`人才&tee&风信子","version":0,"type":"other","url":"http://www.kedlmy.com/vodshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(MY_URL+\"url\", MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n  true_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1--------'+page+'---.html')\n  const html = fetch(true_url)\n  const empty = \"hiker://empty\"\n\n\n\nconst categories = parseDomForArray(html, 'body&&.stui-header__menu').concat(parseDomForArray(html, 'body&&.stui-screen__list'));\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL+\"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL+\"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n  \n  d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∧</span></b>' : '““””<b><span style=\"color: #1aad19\">∨</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL+\"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a:not(:contains(首页|全民|^$))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL+\"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #FF0000\"\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL+\"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":".stui-vodlist__media&&li;.title&&Text;a&&href.js:input + '#immersiveTheme#';.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"http://www.kedlmy.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar Color=\"#11999e\";\nfunction getHead(title){\n    return '‘‘’’<b><font color=\"'+Color+'\">'+title+'</font></b>';\n}\n\n\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.stui-player__video&&script&&Html'));\n    var url = player_aaaa.url;    \n    if (url.search(/\\.mp4|obj|\\.m3u8/)>-1) {\n        return url + '#isVideo=true#' \n\t  } else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le/)){\n        eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));return aytmParse(url)\n    }else{return url}\n\t//以上为常用免嗅获取方法，含m3u8和取断插解析，需自行修改\n\n /*\n  //下面为x5通免\n    showLoading('强力嗅探解析中，请稍候');\n    return 'x5Rule://' + input + '@' + $.toString(() => {\n        var urls = _getUrls();\n        //fba.log(fba.getUrls());\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        var url = \"\";\n        for (var i in urls) {\n           if (contain.test(urls[i])) {\n               if (/bilibili|bilivideo/.test(urls[i])) {\n                   url = urls[i] + ';{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com/}';\n               } else if (/mgtv|sohu/.test(urls[i])) {\n                   url = urls[i] + ';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';\n               } else {\n                   url = urls[i];\n               }\n               return url + '#isVideo=true#';\n           }\n        } \n    })\n*/\n});\n\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head:not(:contains(剧情简介)):not(:contains(榜单)):not(:contains(猜你喜欢)),0:2');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar data={\n            pic: parseDom(html, '.stui-content__thumb&&.lazyload&&data-original'),\n            name: parseDomForHtml(html, 'h1&&Text'),\n            info:parseDomForHtml(html, '.stui-content__detail&&.data,2&&Text').replace('分类|','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.stui-content__detail&&.data,1&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.stui-content__detail&&.data,0&&Text').substring(0, 15),\n            desc: parseDomForHtml(html, '.desc.hidden-xs&&Text').replace('[收起部分]','').replace('　',''),\n            url: getUrl(),\n            state:parseDomForHtml(html, '.data.hidden-sm&&Text')\n        };\n\nputVar('movieDetail', JSON.stringify(data));\n\nd.push({\n      desc:'float&&396',         url:'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/x5page/detail.html',\n\t\tcol_type: 'x5_webview_single'\n});\n\n\nd.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #bf242a\">▽逆序</span></b>': '““””<b><span style=\"color: #006e54\">△正序</span></b>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n        })\nfunction setTabs(tabs, vari) {\n             for (var i in tabs) {\n             var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\nd.push({\n        title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n        url: url,\n        col_type: 'flex_button'\n            })\n            }\nd.push({\n        col_type: \"line\"\n    });\n            }\n    function setLists(lists, index) {\n           var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\nvar jt = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第','').replace('期','').replace('-','').replace('-','');\nd.push({\n        title: jt,\n        url: parseDom(list[j], 'a&&href')+lazy ,\n         col_type: jt.length >=4 ? 'text_3' : 'text_5'\n             });\n            }\n            } else {\n            for (var j = 0; j < list.length; j++) {\nvar jt = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第','').replace('期','').replace('-','').replace('-','');\nd.push({\n       title: jt,\n       url: parseDom(list[j], 'a&&href') +lazy,\n       col_type: jt.length >=4 ? 'text_3' : 'text_5'\n            });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"无双影视","author":"爱是用心","version":0,"type":"other","url":"https://wsdy.top/vodshow/fyclass/fyarea/page/fypage/fyyear","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&/俄罗斯&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/韩国&/area/日本&/area/泰国&/area/新加坡&/area/马来西亚&/area/印度&/area/英国&/area/法国&/area/加拿大&/area/西班牙&/area/俄罗斯&/area/其他","sort_name":"","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004&year/2003&year/2002&year/2001&year/2000","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://wsdy.top/vodsearch/so.html?wd=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"YYDS影院1","author":"佛尘","version":0,"type":"other","url":"https://www.yydsvod.com/channel/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&体育&直播","class_url":"movie&drama&varietyshow&animes&sports&tv","area_name":"电影☞&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&记录片&动画片","area_url":"movie&action&comedy&romance&scifi&horror&mdrama&war&documentary&cartoon","sort_name":"","year_name":"电视☞&国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"drama&domestic_drama&hktw_drama&jk_anime&oa_drama&other_drama","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.yydsvod.com/search.html?wd=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"新视觉","author":"阿离","version":0,"type":"other","url":"https://www.new4480.com/show/fyclass-fyarea-fysort------fypage---fyyear/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\r\n        var url = parseDom(list[i], 'a&&href')+\"#immersiveTheme#\";\n        var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n        var con = parseDomForHtml(list[i], '.detail--h3&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://www.new4480.com/search/**----------fypage---/","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\nif(getVar(\"解析列表\")==\"开\")\n{setParse();}\n\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head');\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text')) \n}\n\nvar lists =[];\nfor (var i in conts) {\nlists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar des_desc = \nparseDomForHtml(html, '.desc&&Text');\nvar title = parseDomForHtml(html, '.data,1&&Text')+'\\n'+parseDomForHtml(html, '.data&&Text')+'\\n'+parseDomForHtml(html, '.data,2&&Text');\nd.push({\n\ttitle: title.replace(/\\//g,''),\n desc: parseDomForHtml(html, '.data,2&&Text'),\n\timg: parseDom(html, '.lazyload&&data-original'),\n url: set_switch,\n col_type: 'movie_1_vertical_pic_blur'\n});\n\n    if (des_desc.length > 60) {\n            des_desc = des_desc.replace(des_desc, des_desc.substring(0, 60) + \"......\");\n      }\n\nd.push({\n          title: des_desc,\n          col_type: 'long_text'\n});\n\nvar lazy= `@lazyRule=.js:decodeURIComponent(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)`\n\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蓝光影院·N","author":"Namo","version":1,"type":"video","url":"https://www.lgyy.cc/vodshow/fyclass--fysort------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&5&3","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:var d = []\nvar list = pdfa(getResCode(), '.module-items&&.module-item')\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.module-poster-item-title&&Text'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], '.lazyload&&data-original')+ '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    })\n}\nsetResult(d)","searchFind":"js:var d = []\nvar list = pdfa(getResCode(), '.module-items&&.module-item')\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.module-card-item-title&&Text'),\n        desc:pdfh(list[j],'.module-item-note&&Text'),\n        img: pd(list[j], '.lazyload&&data-original')+ '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"https://www.lgyy.cc/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = []\nvar html= getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\nd.push({\n    desc: '330&&float',\n    col_type: 'x5_webview_single',\n});\nvar 类型=parseDomForHtml(html,'.module-info-tag,0&&Text');\nvar 更新=parseDomForHtml(html,'.module-info-item,4&&Text').substring(0, 25)\nvar 状态=parseDomForHtml(html,'.module-info-item,5&&Text').substring(0, 25)\nvar 简介=parseDomForHtml(html,'.module-info-introduction-content&&Text');\nvar 图片=parseDom(html,'.module-item-pic&&.lazyload&&data-original');\n\n\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nd.push({\n    title: 类型.replace('地区','\\n地区').replace('年份','\\n年份'),\n    desc: 更新+ '\\n' + 状态,\n    pic_url:图片,\n    url: fm,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\ntry{\nvar 简介=简介\nif(简介!=\"\"&&简介.length>2){\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n\\t\\t\\t\\t\\t\\t\\t' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n}\n}catch(e){}\nvar tabs = [];\nvar lists = [];\n\nvar arts = pdfa(html,'#y-playList&&.module-tab-item');\nvar conts = pdfa(html, 'body&&.module-play-list-content');\n\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nfor (var i in conts) {\n    lists.push(pdfa(conts[i],'body&&a'))\n}\n\nif(lists[0].length>20&&conts.length>1){\neval(JSON.parse(fetch(\"hiker://page/样式1\")).rule)\n\n}else{\n\neval(JSON.parse(fetch(\"hiker://page/样式2\")).rule)\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"样式1\",\"path\":\"样式1\",\"rule\":\"for (let i = 0; i < 8; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '‘‘’’<font color=\\\"#f13b66a\\\">' + tabs[i] + '</front>' : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    \\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#6639a6\\\">排序</font></small>' + '<small><font color=\\\"#f6416c\\\">↑</font></small>' + '<small><font color=\\\"#2b2e4a\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#2b2e4a\\\">↑</font></small>' + '<small><font color=\\\"#f6416c\\\">↓</font></small>';\\n}\\n\\n\\n\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:#098AC1\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n                    url: 'x5Rule://' + parseDom(list[j], 'a&&href')+'@' + _x5,extra: {\\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4'],\\n          referer:parseDom(list[j], 'a&&href')\\n                },\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点此处去看看👀',\\n             url:MY_URL,\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href')+'@' + _x5,extra: {\\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4'],\\nreferer:parseDom(list[j], 'a&&href')\\n        \\n                },\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点此处去看看👀',\\n              url:MY_URL,\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"样式2\",\"path\":\"样式2\",\"rule\":\"for (let i = 0; i < 8; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nif (getVar('shsort', '0') == '0') {\\n    var avatar = 'http://82.156.222.77/weisyr/icon/正序.svg'\\n} else {\\n    var avatar = 'http://82.156.222.77/weisyr/icon/反序.svg'\\n}\\n\\nfor (var i = 0; i < conts.length; i++) {\\n    var list=lists[i]\\n    if (list != null) {\\n        var tab =tabs[i]\\n            d.push({\\n                title: '<span style=\\\"color:#11999e\\\">' + tab + '</span>' + '\\\\t\\\\t' + '<small>' + (i + 1) + '／' + conts.length + '          ',\\n                url: \\\"hiker://empty@lazyRule=.js:putVar('shsort', getVar('shsort')=='1'?'0':'1');refreshPage();'toast://切换排序成功！'\\\",\\n                col_type: 'avatar',\\n                img: avatar\\n            });\\n\\n        if (getVar('shsort','0') == '0') {\\n            try {\\n            for (var j = 0; j < list.length; j++) { \\n                    d.push({\\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n                        url:'x5Rule://' + parseDom(list[j], 'a&&href')+'@' + _x5,\\n                        extra: {\\n                            blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\\n                        },\\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                    });\\n                }\\n            } catch (e) {\\n                d.push({\\n                    title: '没有选集哟，不信点图片去看看👀',\\n                    col_type: 'text_center_1'\\n                });\\n            }\\n        } else {\\n            try {\\n                \\nfor (var j = list.length - 1; j >= 0; j--) {\\n                    d.push({\\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n                        url:'x5Rule://' + parseDom(list[j], 'a&&href')+'@' + _x5,\\n                        extra: {\\n                            blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\\n                        },\\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                    });\\n                }\\n            } catch (e) {\\n                d.push({\\n                    title: '没有选集哟，不信点图片去看看👀',\\n                    col_type: 'text_center_1'\\n                });\\n            }\\n\\n        }\\n    }\\n\\n}\\nd.push({\\ntitle:'<br><br>',\\ncol_type:'rich_text'\\n})\\nsetResult(d);\"}]","proxy":"","icon":"https://www.lgyy.cc/mxtheme/images/favicon.ico"},{"last_chapter_rule":"","title":"奈菲1985·H2","author":"发粪涂墙&猫猫&羽","version":5,"type":"tool","url":"hiker://empty##https://www.1985.one/vodshow/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|看|专题|APP|剧情|地区|年份|字母|排序))'\n\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n\n\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', +page+'---.html')\nlog(true_url)\n}\n\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': MOBILE_UA /*PC_UA*/\n    }\n})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"https://www.1985.one/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"playfrom\\\"], //2⃣️🆘\\n            url: \\\"playfrom\\\",\\n        },\\n        {\\n            keys: [\\\"index-area\\\"], //1⃣️🆘\\n            url: \\\"index-area\\\",\\n        },\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(\\\"@@#\\\" +urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n           // fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n           // fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"js:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\n\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nvar html = fetch(MY_URL, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\nif (getVar(MY_RULE.url)) {\\n    true_url = true_url.replace('.html', '/page/' + page + '.html')\\n    //log(true_url)\\n}\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"DD.链接工具\",\"path\":\"hiker://files/rules/js/UrlProcessor.js\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: 'vodtype\\\\\\\\/(\\\\\\\\d+)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/vodtype(\\\\/\\\\d+)\\\\.html/, 'vodshow$1-----------.html')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: 'type\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/type(\\\\/\\\\w+)\\\\//, 'show$1-----------/')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+\\\\.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+)\\\\.html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*(\\\\\\\\.html|\\\\\\\\/)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1') // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级index-area🆘\",\"path\":\"index-area\",\"rule\":\"var 一级列表 = '.index-area&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'other&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级playfrom🆘\",\"path\":\"playfrom\",\"rule\":\"var 线路列表1 = 'body&&.playfrom&&li';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.videourl';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.ct&&.ee&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"}]","proxy":"","icon":"#ff62a6fb"},{"last_chapter_rule":"","title":"bd360.魔断","author":"狗浩啊","version":0,"type":"video","url":"https://bd360.xyz/vodshow/4--------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0}","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(留言|下载|APP|更新|首页|加群))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], '.module-poster-item-title&&Text'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, 'body&&.module-item');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),//标题\n        desc: pdfh(list[j], '.module-item-note&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://bd360.xyz/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: '.module-info-item,1&&Text;.module-info-item,2&&Text;.module-info-item,4&&Text',\n    content: '.show-desc,0&&p,0&&Text',\n    tabs: 'body&&.tab-item',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.module-play-list-content,#id&&a',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule(() => {\n        try {\n            eval(fetch(JSON.parse(fetch('hiker://files/cache/MyParseSet.json')).cj));\n            let ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\n            if (!input.match(ts)) {\n                let From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\n                let 加密 = From.encrypt;\n                // let 来自 = From.from;\n                原链 = From.url;\n                //log(From)\n                if (加密 == '1') {\n                    原链 = unescape(原链);\n                } else if (加密 == '2') {\n                    原链 = unescape(base64Decode(原链));\n                }\n                if (/\\.mp4|\\.m3u8|\\.flv/.test(原链)) {\n                    return 原链\n                } else if (ts.test(原链)) {\n                    return aytmParse(原链); //爱优腾等地址\n                } else {\n                    return playParse.playerS(input); //盗版站地址\n                }\n            } else {\n                return aytmParse(input)\n            }\n        } catch (e) {\n        \n        return 'video://'+input\n        }\n    })\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI影搜(推送)","author":"","version":48,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);\n","search_url":"hiker://empty##**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet mvtitle = base64Decode(getParam(\\\"movtitle\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\nlet tfpush = getItem('webpush', '0');\\nlet _web = $.toString((tfpush) => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            if (tfpush == '0') {\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            } else {\\n                let play = fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\"));\\n                return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(JSON.stringify({\\n                    \\\"name\\\": document.title,\\n                    \\\"url\\\": play\\n                }));\\n            }\\n        }\\n    }\\n}, tfpush);\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = tfpush == '0' ? 'video://' + it.href : 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(JSON.stringify({\\n                \\\"name\\\": getPageTitle() + t,\\n                \\\"url\\\": it.href\\n            }));\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            ph: t + \\\"$\\\" + it.href,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    let mtab = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        mtab.push(d[i].ph);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                mtab.push('#');\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n    let playl = mtab.join('#').replace(/###/g, '$$$$$$');\\n\\n    let from = [];\\n    for (var j = 0; j < playl.split('$$$').length; j++) {\\n        from.push(\\\"播放列表\\\" + [j + 1]);\\n    }\\n    let push = JSON.stringify({\\n        \\\"name\\\": mvtitle,\\n        \\\"from\\\": from.join('$$$'),\\n        \\\"url\\\": playl.replace(/\\\\&/g, '＆＆')\\n    });\\n    //log(push);\\n\\n    d2.unshift({\\n        title: \\\"推送当前页列表到TVBox\\\",\\n        url: $(push).lazyRule(() => {\\n            return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(input);\\n        }),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n\\n    d2.unshift({\\n        title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\\n        url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\\n\\n        col_type: 'scroll_button'\\n    });\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `稀饭@https://www.xifanys.com/yingpiansearch/-------------.html?wd=**\\n达龟@https://www.dadagui.me/vodsearch/-------------.html?wd=**&submit=\\n城市@https://www.citydy.com/search.html?wd=**\\nlibvio@https://www.libvio.me/search/-------------.html?wd=**&submit=\\n新视@https://www.6080dy1.com/vodsearch/-------------.html?wd=**\\n看看y@https://www.kkdy.live/vod-search.html?wd=**&submit=\\n饭团@https://www.fantuanhd.com/search.html?wd=**&submit=\\n免的@https://www.freeok.vip/vodsearch/-------------.html?wd=**\\n牛马@https://www.niumatv.cc/vodsearch.html?wd=**&submit=\\n免费@https://www.thefree.vip/vodsearch/-------------.html?wd=**\\n莫扎兔@https://www.mozhatu.com/index.php/vod/search.html?wd=**\\n霹雳@https://plyingshi.com/vodsearch/-------------.html?wd=**\\n厂长@https://www.czspp.com/xssearch?q=**\\nVOF@https://www.voflix.com/search/-------------.html?wd=**\\n电影@https://www.appmovie.cc/index.php/vod/search.html?wd=**&submit=\\n追剧@http://zjdr.vip/vod/search/wd/**.html\\n疯狗@https://m.fenggoudy3.com/index.php?s=vod-search-name&wd=**\\n在线@https://zxzj.vip/vodsearch/-------------.html?wd=**&submit=\\n七七@http://aaasofa.com/search.php\\n北川@https://www.bcwzg.com/vodsearch/-------------/?wd=**\\nEF@https://www.pili5.cn/vodsearch/-------------.html?wd=**&submit=\\n影家@http://yszjvip.com/index.php/vod/search.html?wd=**\\n五五@https://555dy.cc/vodsearch/-------------.html?wd=**\\n渣漫@https://www.dm2022.com/vodsearch.html?wd=**\\n在家@https://zxzj.vip/vodsearch/-------------.html?wd=**&submit=\\npia库@https://m.piaku.cc/s/-------------/?wd=**\\n极品@https://www.jpys.me/vodsearch/-------------.html?wd=**\\n艾迪@https://aidi.tv/vsearch/-------------.html?wd=**&submit=\\n九州@http://www.jiuzhou911.com/search.php?searchword=**\\n十千@http://www.qianshihouse.com/srh/-------------.html?wd=**\\n麦片@http://m.ly368.com/index.php?s=vod-m_s-name&wd=**\\n私人@https://soumk.com/vodsearch/-------------.html?wd=**\\n星辰@http://www.qhddj.com.cn/xcyysearch/**-------------.html\\nCokevY@https://cokemv.me/vodsearch/-------------.html?wd=**\\n爱看y@https://ikan6.vip/vodsearch/-------------/?wd=**&submit=\\n干饭py@https://www.gfysys1.com/vodsearch/-------------.html?wd=**\\n天空y@http://tkznp.com/vodsearch.html?wd=**\\n蓝光@https://www.lgyy.cc/vodsearch/-------------.html?wd=**\\n低端@https://ddys.tv/?s=**&post_type=post\\n努努@https://www.nunuyy3.org/so/**-**--.html`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check,\\n            test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });\\n        }\\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href) + \\\"&movtitle=\\\" + base64Encode(t),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"视界世界","author":"","version":0,"type":"live","url":"hiker://empty###fyAll","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php?glideCache=skip' + '#' + new Date().getTime();\n/*function getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();*/\nfunction zero(s) {\n    return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndate = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一  周1️⃣\", \"星期三  周2️⃣\", \"星期三  周3️⃣\", \"星期四  周4️⃣\", \"星期五  周5️⃣\", \"星期六  周6️⃣\")[mydate.getDay()];\nnewTime = year + ' 年 ' + zero(month) + ' 🈷️ ' + zero(date) + ' 日     时间: ' + ' \\t\\t\\t ' + zero(hour) + ' : ' + zero(minute) + ' : ' + zero(second) + '\\t\\t\\t' + day;\nlet hitokoto = '';\ntry {\n    hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {\n        timeout: 3000\n    })).content;\n} catch (e) {\n    log(e);\n}\ndata.push({\n    title: hitokoto,\n    url: \"https://v.nrzj.vip/\",\n    desc: '抖音🐆壬寅年' + newTime + '',\n    col_type: 'movie_1_vertical_pic',\n    pic_url: s2\n});\ndata.push({\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#70f3ff'>记录⏱️</span>\",\n    url: \"hiker://history\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#63bbd0'>书签📚</span>\",\n    url: \"hiker://bookmark\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#5cb3cc'>收藏</span>\",\n    url: \"hiker://collection\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#22a2c3'>K歌</span>\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>广播</span>\",\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>视界</span>\",\n    url: \"hiker://home@视界世界||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed900'>小程序</span>\",\n    url: \"hiker://home\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed048'>插件</span>\",\n    url: \"hiker://js\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#96ce54'>备份</span>\",\n    url: \"hiker://webdav\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00bc12'>下载</span>\",\n    url: \"hiker://download\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0eb83a'>更多设置</span>\",\n    url: \"hiker://setting\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0aa344'>网址过滤</span>\",\n    url: \"hiker://adUrl\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#16a951'>拦截广告</span>\",\n    url: \"hiker://adRule\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#21a675'>其它设置</span>\",\n    url: \"hiker://settingMore\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00e09e'>聚直播</span>\",\n    url: \"hiker://home@聚直播||https://haikuoshijie.cn/user/243\"\n});\nvar s2 = 'http://api.btstu.cn/sjbz?glideCache=skip#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\ndata.push({\n    title: \"\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\",\n    title: 'GIFK歌',\n    col_type: 'icon_2',\n    pic_url: s2\n});\ndata.push({\n    title: '本地广播',\n    col_type: 'icon_2',\n    pic_url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fimgextra%2Fi1%2F196628284%2FT2UX1OXvJXXXXXXXXX_%21%21196628284.gif&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999',\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\",\n});\n        let flag = MY_URL.split(\"##\")[1].split('#')[1];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|xs|udp|flv|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效，更换其它频道观看\"\n        }\n    })\n}\nlet path = 'hiker://files/rules/js/视界世界.js';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, null, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    groups.forEach((group) => {\n        if (group) {\n            data.push({\n                title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                url: $('#noLoading#').lazyRule((group) => {\n                    putMyVar('selectGroup', group);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, group),\n                col_type: 'scroll_button',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    })\n    for (let title in items[selectGroup]) {\n        let us = items[selectGroup][title];        \n        data.push({\n            title: title.split(\"###\")[0],\n            url: us.length < 2 ? us[0]: JSON.stringify({\n                urls: us\n            }),\n//col_type: 'icon_2_round',\n            img: \"\"\n        })\n    }\n}\n          catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\n for (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n    if (!it.col_type && it.url) {\n        it.img = \"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.mp.itc.cn%2Fq_70%252Cc_zoom%252Cw_640%2Fupload%2F20170619%2F5293637f5aad4c2ba04954cdcc99dcfa_th.jpg\";\n    }\n}\n\nsetResult(data);","searchFind":"js:\nvar data = [];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|udp|tx2p|mkv|flv|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效\"\n        }\n    })\n}\nvar keyword = MY_URL.split('##')[1].toLowerCase();\nlet path = 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/js/视界世界.js';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, keyword, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    for (let it of Object.keys(items)) {\n        for (let title in items[it]) {\n            let us = items[it][title];\n            data.push({\n                title: title.split(\"###\")[0],\n                url: us.length < 2 ? us[0] : JSON.stringify({\n                    urls: us\n                }),\n                //col_type: 'icon_2_round',\n                //img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n            })\n        }\n    }\n} catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\nfor (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n}\nsetResult({\n    data: data\n});","search_url":"hiker://empty##**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\n\\nfunction renderLiveData(url, filter, isText) {\\n    let net = request(url, {\\n        headers: {\\n            Referer: getReferer(url)\\n        }\\n    });\\n    const m3u = net,\\n        mode = m3u.indexOf('#EXTM3U') == 0,\\n        re = mode ? /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\\\s]*)/g;\\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (/group-title=\\\"(.*?)\\\"/.exec(i[1]) || [null, ''])[1];\\n        } else if (i[3] == '#genre#') {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].trim();\\n        if (url.indexOf(\\\".php\\\") > 0 || url.includes(\\\"@lazyRule\\\") || url.includes(\\\";\\\")) {\\n            title = title + \\\"###\\\" + new Date().getTime() + md5(url);\\n            //log(j);\\n        } else {\\n            //url = url + \\\"#isVideo=true#\\\";\\n        }\\n        if (filter != null && !title.includes(filter)) {\\n            continue\\n        }\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title] = items[group][title].concat([url]);\\n            } else {\\n                items[group][title] = [url];\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = [url];\\n        };\\n    }\\n    return items;\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2019%2F987%2F927%2F12714729789_248999555.jpg"},{"last_chapter_rule":"js:\neval(JSON.parse(fetch('hiker://page/chapter', {})).rule);","title":"APP影视(P)","author":"香雅情","version":13,"type":"all","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nvar self = JSON.parse(getRule()).title;\nvar setjson = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {}));\nvar ssmd = setjson.ssmode;\nvar ssxc = setjson.sscount;\nvar locver = MY_RULE.version;\n\nitems.push({\n    title: '🔍设置' + '(' + (ssmd == 1 ? '聚' + ssxc : '列') + ')',\n    //title : '🔍设置'+'('+ssxc+')',\n    url: $('hiker://empty').rule((locver) => {\n        eval(JSON.parse(fetch('hiker://page/setting', {})).rule);\n    }, locver),\n    col_type: 'flex_button'\n});\n\nitems.push({\n    title: '资源网采集',\n    url: 'hiker://home@资源网采集.xyq||https://haikuoshijie.cn/topic/6033',\n    col_type: 'flex_button'\n});\nitems.push({\n    title: '香情影视',\n    url: 'hiker://home@香情影视||https://mp.weixin.qq.com/s/XpUI3F1nBvlNgHXvY71t0g',\n    col_type: 'flex_button'\n});\nitems.push({\n    title: \"搜索\",\n    url: $.toString(() => {\n        var link = 'hiker://empty#noRecordHistory#$$$' + input + '$$$fypage$$$';\n        //log(link);\n        return $(link).rule(() => {\n            $.require('hiker://page/sear');\n        });\n    }),\n    extra: {\n        onChange: \"putVar('xyqappystext',input)\",\n        titleVisible: true\n    },\n    desc: \"请输入搜索关键词\",\n    col_type: \"input\"\n});\n\nvar ssyq = ['资源网采集搜@@资源网采集.xyq', '香情影视搜@@香情影视'];\nif (self !== 'APP影视(P)') {\n    items.push({\n        title: self + '搜',\n        url: $(\"#noLoading#\").lazyRule(rule => 'hiker://search?s=' + getVar('xyqappystext') + '&rule=' + rule, self),\n        col_type: 'flex_button'\n    });\n} else {\n    for (var yq in ssyq) {\n        var kj = ssyq[yq].split('@@');\n        items.push({\n            title: kj[0],\n            url: $(\"#noLoading#\").lazyRule(rule => 'hiker://search?s=' + getVar('xyqappystext') + '&rule=' + rule, kj[1]),\n            col_type: \"flex_button\"\n        });\n    }\n}\nitems.push({\n    title: '茶杯狐搜',\n    url: $('hiker://empty#x#fypage@-1@*24@#x#').rule(() => {\n        var res = {};\n        var d = [];\n        var spl = MY_URL.split('#x#');\n        //var lin = 'https://api2.jackeriss.com/api/v1/search/?text=' + spl[1] + '&type=0&from=' + spl[2] + '&size=20';\n        var lin = 'https://api.jackeriss.com/api/v1/search/?text=' + getVar('xyqappystext') + '&type=0&from=' + spl[1] + '&size=24';\n        var pn = spl[1] / 24 + 1;\n        var urlo = JSON.parse(request(lin, {}));\n        var urlt = JSON.parse(fetch(lin.replace('type=0', 'type=1'), {}));\n        //log(urlo);\n        if (urlo.resources.length < 1 && urlt.resources.length < 1) {\n            d.push({\n                title: '当前关键字  ' + getVar('xyqappystext') + '  无搜索结果',\n                col_type: 'text_center_1'\n            });\n        }\n        if (urlo.resources.length > 0) {\n            d.push({\n                title: '♥当前第' + pn + '页',\n                col_type: 'text_center_1'\n            });\n\n            for (var i = 0; i < urlo.resources.length; i++) {\n                var title = urlo.resources[i].text.replace(/\\<.*?\\>/g, '');\n                var url = urlo.resources[i].url;\n                var desc = urlo.resources[i].website;\n                d.push({\n                    title: title.replace(getVar('xyqappystext'), '““' + getVar('xyqappystext') + '””') + '  ' + desc + '  在线',\n                    url: url,\n                    //desc: '在线搜索结果',\n                    col_type: 'text_1'\n                });\n            }\n        }\n\n        if (urlt.resources.length > 0) {\n            for (var j = 0; j < urlt.resources.length; j++) {\n                var title = urlt.resources[j].text.replace(/\\<.*?\\>/g, '');\n                var url = urlt.resources[j].url;\n                var desc = urlt.resources[j].website;\n                d.push({\n                    title: title.replace(getVar('xyqappystext'), '““' + getVar('xyqappystext') + '””') + '  ' + desc + '  下载',\n                    url: url,\n                    //desc: '下载搜索结果',\n                    col_type: 'text_1'\n                });\n            }\n        }\n        res.data = d;\n        setResult(res);\n    }),\n    col_type: \"flex_button\"\n});\n/*\ntry {\n    var appfile = fetchCache('https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/APP.json', 24);\n} catch (e) {\n    appfile = '';\n}\nif (/emory/.test(appfile)) {\n    //log('当前加载的是缓存数据');\n    var html = JSON.parse(appfile);\n} else {\n    log('当前加载的是内置数据');\n    var html = JSON.parse(JSON.parse(fetch('hiker://page/ResCode', {})).rule);\n};\n*/\nvar remfile=fetchCache('https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/rule/app.txt',24);\nif (/\\=http/.test(remfile)) {\n    eval(JSON.parse(fetch('hiker://page/conver', {})).rule);\n    remfile = JSON.stringify(newfile);\n}\n//log(remfile);\nvar html = JSON.parse(remfile);\nvar conts = html.data;\nfor (var i = 0; i < conts.length; i++) {\n    var list = conts[i].list;\n    var tytit = conts[i].title;\n    items.push({\n        title: tytit + ' ' + [list.length],\n        url: 'hiker://empty',\n        col_type: 'text_1'\n    });\n\n    for (var j = 0; j < list.length; j++) {\n        var title = list[j].title;\n        var turl = list[j].url;\n        var img = list[j].img;\n        var litit = list[j].murl;\n        if (/\\/vod\\//i.test(turl)) {\n            var url = 'hiker://empty$$' + litit + '$$' + turl + '$$?ac=list&class=&page=fypage&area=&type=&start=$$';\n        } else {\n            if (turl.indexOf('api.php/app/') != -1) {\n                var url = 'hiker://empty$$' + litit + '$$' + turl + '$$index_video?token=$$';\n            } else if (turl.indexOf('xgapp.php/v1/') != -1) {\n                var url = 'hiker://empty$$' + litit + '$$' + turl + '$$index_video?token=$$';\n            } else {\n                var url = 'hiker://empty$$' + litit + '$$' + turl + '$$/vodPhbAll$$';\n            }\n        }\n        items.push({\n            title: title,\n            url: url,\n            pic_url: img,\n            col_type: 'icon_round_small_4'\n        });\n    }\n}\nsetResult({\n    data: items\n});","searchFind":"js:\n$.require('hiker://page/sear');","search_url":"hiker://empty$$$**$$$fypage$$$","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar typet = MY_URL.split('$$')[1];\nvar murl = MY_URL.split('$$')[2];\nvar turl = murl + MY_URL.split('$$')[3];\n\nif (/\\/vod\\//.test(turl)) {\n    var pg = MY_URL.match(/page\\=([\\d]*)/)[1];\n    if (pg == 1) {\n        //var typt = ('电影&连续剧&综艺&动漫').split('&');\n        //var typl = ('movie&tvplay&tvshow&comic').split('&');\n        var typl = Object.keys(JSON.parse(fetch(murl + '?ac=flitter', {})));\n\n        for (var i = 0; i < typl.length; i++) {\n            var tyurl = murl + '?ac=list&class=' + typl[i] + '&page=fypage&area=&type=&start=';\n            items.push({\n                title: typl[i],\n                url: $(tyurl).rule((murl) => {\n                    var res = {};\n                    var items = [];\n                    var murl = murl;\n                    var html = JSON.parse(getResCode());\n                    eval(JSON.parse(fetch('hiker://page/tvlistdata', {})).rule);\n                    res.data = items;\n                    setHomeResult(res);\n                }, murl),\n                col_type: 'flex_button'\n            })\n        }\n        items.push({\n            col_type: 'line'\n        });\n    }\n\n    try {\n        var html = JSON.parse(fetch(turl));\n        eval(JSON.parse(fetch('hiker://page/tvlistdata', {})).rule);\n    } catch (e) {}\n} else {\n    if (/dijiaxia/.test(murl)) {\n        murl = 'http://www.dijiaxia.com/api.php/app/'\n    }\n    try {\n        if (murl.search(/api.php\\/app/) != -1) {\n\n            var typcode = request(murl + \"nav?token=\", {\n                headers: {\n                    \"User-Agent\": \"Dart/2.14 (dart:io)\"\n                }\n            });\n            if (typcode.indexOf('检测中') != -1) {\n                typcode = fetch(murl + \"nav?token=\" + '&btwaf' + typcode.match(/btwaf(.*?)\\\"/)[1], {});\n            }\n            var typec = JSON.parse(typcode).list;\n\n        } else if (murl.search(/xgapp.php\\/v1/) != -1) {\n\n            var typcode = request(murl + \"nav?token=\", {\n                headers: {\n                    \"User-Agent\": \"Dart/2.14 (dart:io)\"\n                }\n            });\n            if (typcode.indexOf('检测中') != -1) {\n                typcode = fetch(murl + \"nav?token=\" + '&btwaf' + typcode.match(/btwaf(.*?)\\\"/)[1], {});\n            }\n            var typec = JSON.parse(typcode).data;\n\n        } else {\n            if (murl.search(/mogai_api/) != -1) {\n                var typcode = request(murl + \"/types\", {\n                    headers: {\n                        \"User-Agent\": \"Dart/2.14 (dart:io)\"\n                    }\n                });\n            } else {\n                var typcode = request(murl + \"/types\", {\n                    headers: {\n                        \"User-Agent\": \"okhttp/4.1.0\"\n                    }\n                });\n            }\n            if (typcode.indexOf('检测中') != -1) {\n                typcode = fetch(murl + \"/types\" + '?btwaf' + typcode.match(/btwaf(.*?)\\\"/)[1], {});\n            }\n            var typec = JSON.parse(typcode).data.list;\n\n        }\n        var typet = \"\",\n            typel = \"\";\n        for (var j = 0; j < typec.length; j++) {\n            typet += typec[j].type_name;\n            typel += typec[j].type_id;\n            if (j < typec.length - 1) {\n                typet += \"&\";\n                typel += \"&\";\n            }\n        }\n        var typt = typet.split('&');\n        var typl = typel.split('&');\n\n        for (var i = 0; i < typt.length; i++) {\n            if (murl.indexOf('api.php/app/') != -1) {\n                if (/fantuan/.test(murl)) {\n                    var tyurl = 'https://fantuan.wkfile.com/api.php/app/video?pg=fypage&tid=' + typl[i] + '&class=&area=&lang=&year=&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\n                } else {\n                    var tyurl = murl + 'video?pg=fypage&tid=' + typl[i] + '&class=&area=&lang=&year=&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\n                }\n            } else if (murl.indexOf('xgapp.php/v1/') != -1) {\n                var tyurl = murl + 'video?pg=fypage&tid=' + typl[i] + '&class=&area=&lang=&year=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\n            } else {\n                if (/iopenyun/.test(murl)) {\n                    var tyurl = murl + '/list?type=' + typl[i] + '&class=&lang=&area=&year=&by=&page=fypage&limit=9;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}'\n                } else if (murl.search(/mogai_api/) != -1) {\n                    var tyurl = murl + '?type=' + typl[i] + '&class=&lang=&area=&year=&by=&page=fypage&limit=9;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}'\n                } else {\n                    var tyurl = murl + '?type=' + typl[i] + '&class=&lang=&area=&year=&by=&page=fypage&limit=9;get;utf-8;{User-Agent@okhttp/4.1.0}'\n                }\n            }\n            items.push({\n                title: typt[i],\n                url: $(tyurl).rule((murl) => {\n                    var res = {};\n                    var items = [];\n                    var murl = murl;\n                    var rescode = getResCode();\n                    if (rescode.indexOf('检测中') != -1) {\n                        rescode = fetch(MY_URL + '&btwaf' + rescode.match(/btwaf(.*?)\\\"/)[1], {});\n                    }\n                    var html = JSON.parse(rescode);\n                    eval(JSON.parse(fetch('hiker://page/applistdata', {})).rule);\n\n                    res.data = items;\n                    setHomeResult(res);\n                }, murl),\n                col_type: 'flex_button'\n            })\n        }\n        items.push({\n            col_type: 'line'\n        });\n    } catch (e) {}\n\n\n    try {\n        if (murl.search(/mogai_api/) != -1) {\n            var html = request(turl, {\n                headers: {\n                    \"User-Agent\": \"Dart/2.14 (dart:io)\"\n                }\n            });\n        } else {\n            var html = request(turl, {\n                headers: {\n                    \"User-Agent\": \"okhttp/4.1.0\"\n                }\n            });\n        }\n        if (html.indexOf('检测中') != -1) {\n            html = fetch(turl + '&btwaf' + html.match(/btwaf(.*?)\\\"/)[1], {});\n        }\n        var html = JSON.parse(html);\n        //log(html);\n        //if (murl.indexOf('xgapp.php/v1/') != -1) {\n        eval(JSON.parse(fetch('hiker://page/appindexdata', {})).rule);\n        //} else {\n        //log(html);\n        //eval(JSON.parse(fetch('hiker://page/applistdata', {})).rule);\n        //}\n    } catch (e) {}\n\n}\n\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if (!fileExist('hiker://files/rules/xyq/appmset.json')) {\n    let set = `{\"ssmode\":\"0\",\"sscount\":\"5\",\"enDn\":\"0\"}`;\n    writeFile(\"hiker://files/rules/xyq/appmset.json\", set);\n}\nvar ruleset = fetch('hiker://files/rules/xyq/appmset.json', {});\nif (!JSON.parse(ruleset).enDn) {\n    let set = ruleset.replace('\\\"\\}', '\\\"\\,\\\"enDn\\\"\\:\\\"0\\\"\\}');\n    writeFile(\"hiker://files/rules/xyq/appmset.json\", set);\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"sear\",\"rule\":\"var res = {};\\nvar items = [];\\n//设置搜索线程\\nvar ssmode = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).ssmode;\\nvar key = MY_URL.split('$$$')[1];\\n//setError(le);\\nif (ssmode == '0') {\\n    setPageTitle(key + ' 的搜索结果')\\n};\\n/*try {\\n    var appfile = fetchCache('https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/APP.json', 24);\\n} catch (e) {\\n    appfile = '';\\n}*/\\nvar remfile = fetchCache('https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/rule/app.txt',24);\\nif (/\\\\=http/.test(remfile)) {\\n    eval(JSON.parse(fetch('hiker://page/conver', {})).rule);\\n    remfile = JSON.stringify(newfile);\\n}\\nvar html = JSON.parse(remfile);\\n\\n/*\\nif (/emory/.test(appfile)) {\\n    var html = JSON.parse(appfile);\\n} else {\\n    log('当前加载的是内置数据');\\n    var html = JSON.parse(JSON.parse(fetch('hiker://page/ResCode', {})).rule);\\n};\\n*/\\nvar dlist = html.data;\\n\\nif (ssmode == '1' || MY_TYPE == 'home') {\\n    for (var l = 0; l < dlist.length; l++) {\\n        var list = dlist[l].list;\\n        var tytit = dlist[l].title;\\n        items.push({\\n            title: MY_TYPE == \\\"home\\\" ? \\\"点击查看 \\\" + tytit + \\\" 分类 ““\\\" + key + \\\"”” 的聚搜结果\\\" : \\\"点击查看 \\\" + tytit + \\\" 分类 \\\" + key + \\\" 的聚搜结果\\\",\\n            url: \\\"hiker://page/ss2\\\",\\n            col_type: 'text_1',\\n            extra: {\\n                list: list,\\n                tytit: tytit,\\n                url: 'hiker://empty$$$' + key + '$$$fypage$$$'\\n            }\\n        });\\n\\n    } //for i\\n}; //end mode 1\\n\\nif (ssmode == '0' || MY_TYPE == 'home') {\\n    for (var i = 0; i < dlist.length; i++) {\\n        var list = dlist[i].list;\\n        var tytit = dlist[i].title;\\n\\n        items.push({\\n            title: MY_TYPE == \\\"home\\\" ? \\\" 选择一个 \\\" + dlist[i].title + \\\" 项目查看 ““\\\" + key + \\\"”” 的搜索结果\\\" : \\\" 选择一个 \\\" + dlist[i].title + \\\" 项目查看 \\\" + key + \\\" 的搜索结果\\\",\\n            col_type: 'text_1'\\n        });\\n\\n        for (var j = 0; j < list.length; j++) {\\n            var link = list[j].url;\\n            var litit = list[j].murl;\\n            if (/\\\\/vod\\\\//.test(link)) {\\n                if (/19jx|293ys|zhaikanys|ji\\\\-ding\\\\-he|phoebe|yunbo\\\\.bxin|lanrentk|hetaoys|pxun|139\\\\.155|fkkdy|056158|aixixi|ruoxinew|feifan123|siqitv/.test(link)) {\\n                    var hmurl = link + '?ac=list&zm=' + key + '&page=fypage';\\n                } else {\\n                    var hmurl = link + '?ac=list&wd=' + key + '&page=fypage';\\n                }\\n            } else {\\n                if (/dijiaxia/.test(link)) {\\n                    link = 'http://www.dijiaxia.com/api.php/app/'\\n                };\\n                if (link.indexOf('api.php/app/') != -1) {\\n                    var hmurl = link + 'search?pg=fypage&text=' + key + '&token=';\\n                } else if (link.indexOf('xgapp.php/v1/') != -1) {\\n                    var hmurl = link + 'search?pg=fypage&text=' + key;\\n                } else {\\n                    if (/iopenyun/.test(link)) {\\n                        var hmurl = link + '/list?page=fypage&limit=10&wd=' + key;\\n                    } else {\\n                        var hmurl = link + '?page=fypage&limit=10&wd=' + key;\\n                    }\\n                }\\n            }\\n            items.push({\\n                title: list[j].title,\\n                img: list[j].img,\\n                url: $('hiker://empty#x#' + hmurl + '#x#' + link + '#x#' + litit + '#x#' + key + '#x#').rule(() => {\\n                    $.require('hiker://page/searerj');\\n                }),\\n                col_type: 'icon_round_small_4'\\n                //col_type: 'text_3'\\n                //link:link,\\n                //type: i\\n            });\\n\\n        } //for j\\n\\n\\n    } //for i\\n\\n} //end mode 0\\n\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"APP分类列表\",\"path\":\"applistdata\",\"rule\":\"if (html.list) {\\n    var list = html.list;\\n} else if (html.data && html.data.list) {\\n    var list = html.data.list;\\n} else {\\n    var list = html.data;\\n}\\n//log(list);\\nfor (var i = 0; i < list.length; i++) {\\n    var title = list[i].vod_name;\\n    var img = list[i].vod_pic;\\n    var url = list[i].vod_id;\\n    var desc = list[i].vod_remarks;\\n    var nowDate = new Date();\\n    var month = nowDate.getMonth() + 1 < 10 ? \\\"0\\\" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1;\\n    var day = nowDate.getDate() < 10 ? \\\"0\\\" + nowDate.getDate() : nowDate.getDate();\\n    var dateStr = month + '' + day;\\n    if (html.list) {\\n        var link = murl + 'video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n    } else if (html.data && html.data.list) {\\n        if (murl.search(/mogai_api/) != -1) {\\n            var link = murl + '/detail?key=' + dateStr + '&vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n        } else {\\n            var link = murl + '/detail?key=' + dateStr + '&vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@okhttp/4.1.0}';\\n        }\\n    } else {\\n        var link = murl + 'video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n    };\\n    if (/fantuan/.test(murl)) {\\n        var link = 'https://fantuan.wkfile.com/api.php/app/video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n    } else if (/iopenyun/.test(murl)) {\\n        var link = murl + '/detailID?vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n    } else if (/dijiaxia/.test(murl)) {\\n        var link = 'http://www.dijiaxia.com/api.php/app/video_detail?id=' + url;\\n    }\\n    items.push({\\n        title: title,\\n        pic_url: img + '@Referer=',\\n        url: $(link).rule(() => {\\n            var res = {};\\n            var items = [];\\n            items.push({\\n                title: '',\\n                desc: '255&&float',\\n                url: '',\\n                col_type: 'x5_webview_single'\\n            });\\n            refreshX5WebView('');\\n            var html = JSON.parse(getResCode());\\n            var myurl = MY_URL.match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n            try {\\n                eval(JSON.parse(fetch('hiker://page/appmovlist', {})).rule);\\n            } catch (e) {}\\n            res.data = items;\\n            setHomeResult(res);\\n        }),\\n        desc: desc,\\n        col_type: 'movie_3_marquee'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"TV列表解析\",\"path\":\"tvlistdata\",\"rule\":\"var list = html.data;\\nfor (var i = 0; i < list.length; i++) {\\n    var title = list[i].title;\\n    var img = list[i].pic;\\n    var url = list[i].nextlink;\\n    var desc = list[i].state;\\n    url = url.startsWith('http') ? url : murl + '?ac=detail&ids=' + url;\\n    items.push({\\n        title: title,\\n        pic_url: img + '@Referer=',\\n        url: $(url).rule(() => {\\n            var res = {};\\n            var items = [];\\n            var html = JSON.parse(getResCode());\\n            var myurl = MY_URL.match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n            items.push({\\n                title: '',\\n                desc: '255&&float',\\n                url: '',\\n                col_type: 'x5_webview_single'\\n            });\\n            refreshX5WebView('');\\n            try {\\n            eval(JSON.parse(fetch('hiker://page/tvmovlist', {})).rule);\\n            } catch (e) {}\\n            res.data = items;\\n            setHomeResult(res);\\n        }),\\n        desc: desc,\\n        col_type: 'movie_3_marquee'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"APP简介与选集\",\"path\":\"appmovlist\",\"rule\":\"if (html.data.vod_url_with_player) {\\n    var conts = html.data.vod_url_with_player;\\n    if (conts.length < 1) {\\n        conts = html.data.vod_play_url.split('$$$');\\n        var tabs = html.data.vod_play_from.split('$$$');\\n    }\\n} else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n    var conts = html.data.vod_info.vod_url_with_player;\\n    if (conts.length < 1) {\\n        conts = html.data.vod_info.vod_play_url.split('$$$');\\n        var tabs = html.data.vod_info.vod_play_from.split('$$$');\\n    }\\n} else {\\n    var conts = html.data.vod_play_list;\\n    if (conts.length < 1) {\\n        conts = html.data.vod_play_url.split('$$$');\\n        var tabs = html.data.vod_play_from.split('$$$');\\n    }\\n}\\n\\n//log(html);\\n\\nvar thumb = html.data.vod_info ? html.data.vod_info.vod_pic : html.data.vod_pic;\\nvar des = html.data.vod_info ? html.data.vod_info.vod_content : html.data.vod_content;\\nitems.push({\\n    title: '剧情简介：',\\n    desc: des,\\n    pic_url: thumb,\\n    url: $('hiker://empty#noRecordHistory#').rule((des) => {\\n        setResult([{\\n            title: des,\\n            col_type: 'long_text'\\n        }]);\\n    }, des),\\n    col_type: 'movie_1_vertical_pic'\\n});\\neval(JSON.parse(fetch('hiker://page/dnplugin', {})).rule);\\n\\nitems.push({\\n    title: '““排序””',\\n    url: \\\"hiker://empty@lazyRule=.js:putMyVar('appmappsort', getMyVar('appmappsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功！'\\\",\\n    col_type: 'scroll_button'\\n});\\nvar title = MY_URL;\\nfor (var k = 0; k < conts.length; k++) {\\n    //setError(list.length);\\n    if (html.data.vod_url_with_player) {\\n        var ptab = conts[k].code ? conts[k].code : tabs[k];\\n    } else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n        var ptab = conts[k].code ? conts[k].code : tabs[k];\\n    } else {\\n        var ptab = conts[k].from ? conts[k].from : tabs[k];\\n    }\\n    items.push({\\n        title: (getMyVar(title, '0') == k ? '👉🏻' : '') + ptab,\\n        url: `hiker://empty@lazyRule=.js:putMyVar('` + title + \\\"', '\\\" + k + `');refreshPage();'toast://切换成功！'`,\\n        col_type: 'scroll_button'\\n    });\\n\\n}\\n\\n\\n\\nvar jiek = '';\\n//for (var i = 0; i < conts.length; i++) {\\nif (getMyVar('appmappsort', '1') == '1') {\\n    if (conts[getMyVar(title, '0')].urls) {\\n        var list = conts[getMyVar(title, '0')].urls;\\n    } else if (conts[getMyVar(title, '0')].url) {\\n        var list = conts[getMyVar(title, '0')].url.split(\\\"#\\\");\\n    } else {\\n        var list = conts[getMyVar(title, '0')].split(\\\"#\\\");\\n    };\\n} else {\\n    if (conts[getMyVar(title, '0')].urls) {\\n        var list = conts[getMyVar(title, '0')].urls.reverse();\\n    } else if (conts[getMyVar(title, '0')].url) {\\n        var list = conts[getMyVar(title, '0')].url.split(\\\"#\\\").reverse();\\n    } else {\\n        var list = conts[getMyVar(title, '0')].split(\\\"#\\\").reverse();\\n    }\\n};\\n//setError(list.length);\\nif (html.data.vod_url_with_player) {\\n    var ptab = conts[getMyVar(title, '0')].code ? conts[getMyVar(title, '0')].code : tabs[getMyVar(title, '0')];\\n} else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n    var ptab = conts[getMyVar(title, '0')].code ? conts[getMyVar(title, '0')].code : tabs[getMyVar(title, '0')];\\n} else {\\n    var ptab = conts[getMyVar(title, '0')].from ? conts[getMyVar(title, '0')].from : tabs[getMyVar(title, '0')];\\n}\\n/*\\n    items.push({\\n        title: ptab + ' 🔗' + [i + 1] + '/' + [conts.length] + \\\"““↓↑””\\\",\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('appmappsort', getVar('appmappsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功！'\\\",\\n        col_type: 'scroll_button'\\n    });*/\\n\\nfor (var j = 0; j < list.length; j++) {\\n    if (conts[getMyVar(title, '0')].urls) {\\n        var vlink = list[j].url.replace(/#456#/g, 'http').replace(/#123#/g, '.').replace(/#789#/g, ':');\\n        var title = list[j].name;\\n    } else {\\n        var vlink = list[j].split(\\\"$\\\")[1];\\n        var title = list[j].split(\\\"$\\\")[0];\\n    }\\n    try {\\n        if (html.data.vod_url_with_player) {\\n            var jiek = conts[getMyVar(title, '0')].parse_api;\\n        } else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n            var jiek = conts[getMyVar(title, '0')].parse_api;\\n        } else {\\n            if (conts[getMyVar(title, '0')].player_info.parse2 && (conts[getMyVar(title, '0')].player_info.parse2).indexOf(\\\"=\\\") != -1) {\\n                var jiek = (conts[getMyVar(title, '0')].player_info.parse2).replace(/\\\\.\\\\./g, \\\".\\\").split(',')[0].replace('jsonbs', '');\\n            } else if (conts[getMyVar(title, '0')].player_info.parse && (conts[getMyVar(title, '0')].player_info.parse).indexOf(\\\"=\\\") != -1) {\\n                var jiek = (conts[getMyVar(title, '0')].player_info.parse).replace(/\\\\.\\\\./g, \\\".\\\").split(',')[0];\\n            } else {\\n                var jiek = \\\"\\\";\\n            }\\n            //setError(jiek);                \\n        }\\n    } catch (e) {}\\n    //jiek拼接\\n    if (jiek != '' && jiek != null) {\\n        if (jiek.substring(0, 4) == 'http') {\\n            jiek = jiek;\\n        } else if (jiek.substring(0, 2) == '\\\\/\\\\/') {\\n            jiek = 'https:' + jiek;\\n        }\\n    } else {\\n        jiek = \\\"\\\";\\n    }\\n    //对失效接口进行替换\\n    if (/cokemv/.test(myurl) && /cokeqie|xin|90mm/.test(ptab)) {\\n        jiek = 'https://player.90mm.me/play.php?url=';\\n    } else if (/json\\\\.m3u8\\\\.tv|www\\\\.x-n\\\\.cc/.test(jiek)) {\\n        jiek = 'https://jx.m3u8.tv/jiexi/?url=';\\n    } else if (/cjt521/.test(myurl)) {\\n        jiek = conts[getMyVar(title, '0')].player_info.parse;\\n    } else if (jiek.indexOf('jpg.hou.lu/jm/za/index.php') != -1) {\\n        jiek = 'http://vip.mengx.vip/home/api?type=ys&uid=3249696&key=aefqrtuwxyEFHKNOQY&url=';\\n    } else if (ptab == 'renrenmi' && jiek.search(/jhdyw/) != -1) {\\n        jiek = 'http://www.1080kan.cc/jiexi/rrmi.php?url=';\\n    } else if (ptab == 'fqfilm' && jiek.search(/jhdyw/) != -1) {\\n        jiek = 'http://www.1080kan.cc/jiexi/fq.php?url=';\\n    } else if (ptab == 'rrsp' && jiek.search(/jhdyw/) != -1) {\\n        jiek = 'http://www.1080kan.cc/jiexi/rr.php?url=';\\n    } else if (/miaoparty/.test(ptab) && myurl.search(/fun4k/) != -1) {\\n        jiek = 'https://www.fun4k.com/aplayer/?url=';\\n    } else if (/jhyun\\\\.php/.test(jiek)) {\\n        jiek = jiek.replace('http://svip.jhyun.jx.cn:1234/jhyun.php?url=', 'https://api.jhdyw.vip/?url=');\\n    };\\n    //打印接口\\n    try {\\n        if (j == '0') {\\n            if (html.data.vod_url_with_player) {\\n                log('\\\\n线路：' + ptab + '\\\\n视频：' + vlink + '\\\\n' + '解析接口：\\\\n' + jiek);\\n            } else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n                log('\\\\n线路：' + ptab + '\\\\n视频：' + vlink + '\\\\n' + '解析接口：\\\\n' + jiek);\\n            } else {\\n                if (conts[getMyVar(title, '0')].player_info.parse2 && (conts[getMyVar(title, '0')].player_info.parse2).indexOf(\\\"=\\\") != -1) {\\n                    log('\\\\n线路：' + ptab + '\\\\n视频：' + vlink + '\\\\n' + '解析接口：\\\\n' + conts[getMyVar(title, '0')].player_info.parse2.replace(/\\\\.\\\\./g, \\\".\\\").replace(/\\\\,/g, \\\"\\\\n\\\\n\\\"));\\n                } else if (conts[getMyVar(title, '0')].player_info.parse && (conts[getMyVar(title, '0')].player_info.parse).indexOf(\\\"=\\\") != -1) {\\n                    log('\\\\n线路：' + ptab + '\\\\n视频：' + vlink + '\\\\n' + '解析接口：\\\\n' + conts[getMyVar(title, '0')].player_info.parse.replace(/\\\\.\\\\./g, \\\".\\\").replace(/\\\\,/g, \\\"\\\\n\\\\n\\\"));\\n                } else {\\n                    log('\\\\n线路：' + ptab + '\\\\n视频：' + vlink + '\\\\n' + '解析接口：\\\\n' + jiek);\\n                }\\n                //setError(jiek);                \\n            }\\n        }\\n    } catch (e) {}\\n    //声明链接\\n    var link = jiek + vlink;\\n    /*\\n    if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos/.test(vlink) && /http/.test(vlink)) {\\n        link = vlink;\\n    }\\n    */\\n    //log(link);\\n    title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n    if (list.length <= 4) {\\n        var clt = 'text_2';\\n    } else {\\n        var clt = isNaN(title) ? 'flex_button' : 'text_5'\\n    };\\n    items.push({\\n        title: title,\\n        url: $('hiker://empty').lazyRule((ptab, link, myurl, vlink) => {\\n                function openurl(resurl) {\\n                    if (resurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) && resurl.search(/html|bilibili|ixigua/) != -1) {\\n                        //html网页调用断插解析\\n                        var enDn = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\n                        if (enDn == '1') {\\n                            log('调用断插解析html');\\n                            eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                            eval(fetch(config.cj));\\n                            return aytmParse(resurl);\\n                        } else {\\n                            return resurl\\n                        };\\n                    } else if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(resurl) && /http/.test(resurl) && !/\\\\.html/.test(resurl) && !/\\\\=http/.test(resurl) && ptab != 'duoduozy') {\\n                        if (/wkfile/.test(resurl)) {\\n                            return resurl + ';{Referer@https://fantuan.wkfile.com/}'\\n                        } else {\\n                            return /\\\\=/.test(resurl) ? resurl.split('=')[1] : resurl + '#isVideo=true#';\\n                        }\\n                    } else {\\n                        //调用断插通用函数解析\\n                        var enDn = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\n                        if (enDn == '1') {\\n                            log('调用断插通用函数解析\\\\n' + ptab + '(通用函数)');\\n                            eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                            eval(fetch(config.cj));\\n                            var name = ptab + '(通用函数)';\\n                            return ParseS[name](resurl, myurl);\\n\\n                        } else if (ptab == 'duoduozy') {\\n                            eval(getCryptoJS());\\n\\n                            function De(word) {\\n                                var a = CryptoJS.enc.Utf8.parse(md5('rXjWvXl6'))\\n                                var t = CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b')\\n                                return CryptoJS.AES.decrypt(word, a, {\\n                                    iv: t,\\n                                    mode: CryptoJS.mode.CBC,\\n                                    padding: CryptoJS.pad.Pkcs7\\n                                }).toString(CryptoJS.enc.Utf8)\\n                            };\\n                            //var ddzy = 'adHuRo0dcuHoM163L1y4' + base64Encode(srcurl).slice(10);\\n                            //https://bo.dd520.cc/xplay/api.php\\n                            //https://bo.dd520.cc/xmplayer/api.php                                                       \\n                            var ddwy = fetch('https://jhpc.manduhu.com/duoduo/api.php', {\\n                                headers: {\\n                                    \\\"User-Agent\\\": MOBILE_UA\\n                                },\\n                                body: 'url=' + resurl,\\n                                method: 'POST'\\n                            });\\n                            //log(ddwy);\\n                            return De(JSON.parse(ddwy).url);\\n                        } else if (/miaoparty/.test(ptab)) {\\n                            requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                            return x5rule('https://www.fun4k.com/aplayer/?url=' + resurl);\\n                        } else {\\n                            return resurl\\n                        };\\n                    }\\n                };\\n                \\n                try {\\n                    var enDn = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\n                    if (enDn == '1' && vlink.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) && vlink.search(/html|bilibili|ixigua/) != -1) {\\n                        log('已开启断插，将调用断插解析html');\\n                        eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(vlink);\\n                    };\\n                } catch (e) {}\\n                \\n                var srcurl = link;\\n                //log(srcurl);\\n                //动态解析代码开始\\n                try {\\n                    //处理指定视频与线路\\n                    if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(srcurl) && /http/.test(srcurl) && !/\\\\.html/.test(srcurl) && !/\\\\=http/.test(srcurl)) {\\n                        if (/wkfile/.test(srcurl)) {\\n                            return srcurl + ';{Referer@https://fantuan.wkfile.com/}'\\n                        } else {\\n                            return /\\\\=/.test(srcurl) ? srcurl.split('=')[1] : srcurl + '#isVideo=true#';\\n                        }\\n                    } else if (srcurl.indexOf(\\\"/share/\\\") != -1) {\\n                        try {\\n                            var link = srcurl.split(\\\"/share\\\")[0];\\n                            var fc = fetch(srcurl, {}).replace(\\\"var purl\\\", \\\"var main\\\");\\n                            if (fc.indexOf(\\\"main\\\") != -1) {\\n                                var mat = fc.match(/var main.*?;/)[0];\\n                                eval(mat);\\n                                var play = (main.indexOf(\\\"http\\\") != -1 ? main : link + main);\\n                            } else {\\n                                var main = fc.match(/url:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1];\\n                                var play = (main.indexOf(\\\"http\\\") != -1 ? main : link + main)\\n                            };\\n                            return play;\\n                        } catch (e) {\\n                            return 'x5WebView://' + (srcurl)\\n                        }\\n\\n                    } else if (/983vip/.test(srcurl)) {\\n                        return JSON.parse(fetch(srcurl, {\\n                            headers: {\\n                                \\\"User-Agent\\\": MOBILE_UA\\n                            },\\n                            redirect: false,\\n                            withHeaders: true\\n                        })).headers.location[0];\\n                    } else if (/x\\\\-n\\\\.cc|nhdz666/.test(srcurl) && /\\\\.html|bilibili/.test(srcurl)) {\\n                        return openurl(vlink);\\n                    }\\n                    //处理指定视频和线路结束\\n                    //----分割线----//\\n                    var scode = JSON.parse(fetch(srcurl, {\\n                        headers: {\\n                            \\\"User-Agent\\\": \\\"okhttp/4.1.0\\\"\\n                        },\\n                        redirect: false,\\n                        withStatusCode: true\\n                    }));\\n                    //log(scode);\\n                    if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                        //打开解析有302重定向的链接\\n                        var redurl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                        if (/\\\\=http/.test(redurl) && /html|bilibili|key\\\\=/.test(redurl)) {\\n                            return JSON.parse(fetch(redurl, {})).url;\\n                        } else if (/\\\\=http/.test(redurl) && /\\\\.m3u8|\\\\.mp4|\\\\.flv/.test(redurl)) {\\n                            return redurl.substring(redurl.indexOf('=http') + 1);\\n                        } else if (/http/.test(redurl) && /key\\\\=|uid\\\\=/.test(redurl)) {\\n                            return JSON.parse(fetch(redurl, {})).url;\\n                        } else {\\n                            return redurl\\n                        }\\n                    } else {\\n                        //var html = request(srcurl);\\n                        var html = scode.body;\\n                        //log(html);\\n                        if (/404 Not Found|备案后可继续访问/.test(html)) {\\n                            return openurl(vlink);\\n                        } else if (/\\\\<body/.test(html)) {\\n                            log('尝试非JSON接口网页解析');\\n                            requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                            return x5rule(srcurl, srcurl);\\n                            //return openurl(srcurl);\\n                        } else {\\n                            //json解析的取链接\\n                            var purl = html.match(/[\\\\'\\\\\\\"]url[\\\\'\\\\\\\"]:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1].replace(/\\\\\\\\/g, '');\\n                            //log(purl);\\n                            if (/http/.test(purl)) {\\n                                if (ptab == 'bilibili') {\\n                                    return purl + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                                } else if (ptab == 'mgtv') {\\n                                    return purl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                                } else if (/ojbk/.test(purl)) {\\n                                    return purl + ';{Referer@https://bak.ojbkjx.com/}';\\n                                } else {\\n                                    return unescape(purl)\\n                                };\\n                            } else {\\n                                //非http开头的打开原链接                                                                \\n                                return openurl(vlink)\\n                            }\\n                        }\\n                    }\\n                } catch (e) {\\n                    //报错判断处理\\n                    log('执行报错跳转处理');\\n                    /*if (srcurl.substring(0, 2) == '\\\\/\\\\/') {\\n                        return openurl('https:' + srcurl);\\n                    } else if (/\\\\=http/.test(srcurl) && /\\\\.html|bilibili/.test(srcurl)) {\\n                        //return srcurl.split('=')[1];\\n                        return openurl(srcurl.substring(srcurl.indexOf('=http') + 1));\\n                    } else {*/\\n                    return openurl(vlink)\\n                    //return 'x5WebView://'+srcurl\\n                    //}\\n                }\\n                //动态解析代码结束\\n            },\\n            ptab,\\n            link,\\n            myurl,\\n            vlink),\\n        col_type: clt\\n    });\\n}\\n//}\"},{\"col_type\":\"movie_3\",\"name\":\"TV简介与选集\",\"path\":\"tvmovlist\",\"rule\":\"var tabs = Object.keys(html.videolist);\\nvar thumb = html.img_url;\\nitems.push({\\n    title: '剧情简介：',\\n    desc: html.intro,\\n    pic_url: thumb,\\n    url: $('hiker://empty#noRecordHistory#').rule((des) => {\\n        setResult([{\\n            title: des,\\n            col_type: 'long_text'\\n        }]);\\n    }, html.intro),\\n    col_type: 'movie_1_vertical_pic'\\n});\\neval(JSON.parse(fetch('hiker://page/dnplugin', {})).rule);\\n\\nitems.push({\\n    title: '““排序””',\\n    url: \\\"hiker://empty@lazyRule=.js:putMyVar('appmtvsort', getMyVar('appmtvsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功！'\\\",\\n    col_type: 'scroll_button'\\n});\\nvar gva = MY_URL;\\nfor (var k = 0; k < tabs.length; k++) {\\n    var ptab = tabs[k];\\n    items.push({\\n        title: (getMyVar(gva, '0') == k ? '👉🏻' : '') + ptab,\\n        url: `hiker://empty@lazyRule=.js:putMyVar('` + gva + \\\"', '\\\" + k + `');refreshPage();'toast://切换成功！'`,\\n        col_type: 'scroll_button'\\n    });\\n\\n}\\n\\n//for (var i = 0; i < tabs.length; i++) {\\nif (getMyVar('appmtvsort', '1') == '1') {\\n    var list = html.videolist[tabs[getMyVar(gva, '0')]];\\n} else {\\n    var list = html.videolist[tabs[getMyVar(gva, '0')]].reverse();\\n};\\n\\nfor (var j = 0; j < list.length; j++) {\\n    var srcurl = list[j].url;\\n    if (/293jx1/.test(srcurl)) {\\n        srcurl = srcurl.replace('293jx1', 'jx');\\n    } else if (/8d8q|diliktv|haokanju1|cztv|fit\\\\:8|ppzhu/.test(myurl)) {\\n        srcurl = srcurl + '&app=10000&account=272775028&password=qq272775028';\\n    }\\n    var title = list[j].title;\\n    title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n    if (list.length <= 4) {\\n        var clt = 'text_2';\\n    } else {\\n        var clt = isNaN(title) ? 'flex_button' : 'text_5'\\n    };\\n    items.push({\\n        title: title,\\n        url: $('hiker://empty').lazyRule((ptab, srcurl, myurl) => {\\n            function openurl(resurl) {\\n                if (resurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) && resurl.search(/html|bilibili/) != -1) {\\n                    var enDn = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\n                    if (enDn == '1') {\\n                        log('调用断插解析');\\n                        eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(resurl);\\n                    } else {\\n                        return resurl\\n                    };\\n                } else if (/\\\\=LT\\\\-/.test(resurl)) {\\n                    log('调用断插ltnb通用解析');\\n                    eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                    eval(fetch(config.cj));\\n                    var name = 'ltnb(通用函数)';\\n                    return ParseS[name](resurl.substring(resurl.indexOf('=LT-') + 1));\\n                } else {\\n                    return resurl\\n                }\\n            };\\n            \\n            try {\\n                var enDn = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\n                if (enDn == '1' && srcurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) && srcurl.search(/html|bilibili|ixigua/) != -1) {\\n                    log('调用断插解析html');\\n                    eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                    eval(fetch(config.cj));\\n                    return aytmParse(srcurl.substring(srcurl.indexOf('=http') + 1));\\n                };\\n            } catch (e) {}\\n            \\n            //log(srcurl);\\n            //动态解析代码开始\\n            try {\\n                if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos/.test(srcurl) && /http/.test(srcurl)) {\\n                    return /\\\\=/.test(srcurl) ? srcurl.split('=')[1] : srcurl + '#isVideo=true#';\\n                } else if (srcurl.indexOf(\\\"/share/\\\") != -1) {\\n                    try {\\n                        var link = srcurl.split(\\\"/share\\\")[0];\\n                        var fc = fetch(srcurl, {}).replace(\\\"var purl\\\", \\\"var main\\\");\\n                        if (fc.indexOf(\\\"main\\\") != -1) {\\n                            var mat = fc.match(/var main.*?;/)[0];\\n                            eval(mat);\\n                            var play = (main.indexOf(\\\"http\\\") != -1 ? main : link + main);\\n                        } else {\\n                            var main = fc.match(/url:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1];\\n                            var play = (main.indexOf(\\\"http\\\") != -1 ? main : link + main)\\n                        };\\n                        return play;\\n                    } catch (e) {\\n                        return 'x5WebView://' + (srcurl)\\n                    }\\n                } else if (ptab == 'alizy') {\\n                    var purl = fetch('https://foubin.com/jiexi.php?url=' + srcurl, {}).match(/\\\\\\\"url\\\\\\\":\\\\\\\"(.*?)\\\\\\\"/)[1];\\n                    return purl;\\n                } else if (/19jx\\\\.vip|nfyingshi/.test(srcurl)) {\\n                    var purl = JSON.parse(fetch(srcurl.replace('http://', 'https://'), {\\n                        headers: {\\n                            \\\"User-Agent\\\": MOBILE_UA\\n                        },\\n                        redirect: false,\\n                        withHeaders: true\\n                    })).headers.location[0];\\n                    if (/titan.mgtv/.test(purl)) {\\n                        return purl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (/obj\\\\/tos/.test(purl)) {\\n                        return purl + '#isVideo=true#';\\n                    } else {\\n                        return purl\\n                    };\\n                }\\n                /*else if (/zhaikanys/.test(srcurl)) {\\n                                       var purl = JSON.parse(fetch(srcurl + '&app=10003&account=272775028&password=qq272775028', {\\n                                           headers: {\\n                                               \\\"User-Agent\\\": MOBILE_UA\\n                                           },\\n                                           redirect: false,\\n                                           withHeaders: true\\n                                       })).headers.location[0];\\n                                       if (/titan.mgtv/.test(purl)) {\\n                                           return purl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                                       } else if (/obj\\\\/tos/.test(purl)) {\\n                                           return purl + '#isVideo=true#';\\n                                       } else {\\n                                           return purl\\n                                       };\\n                                   }*/\\n\\n                //----分割线----//\\n                var scode = JSON.parse(fetch(srcurl, {\\n                    headers: {\\n                        \\\"User-Agent\\\": MOBILE_UA\\n                    },\\n                    redirect: false,\\n                    withStatusCode: true\\n                }));\\n                //log(scode);\\n                if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                    var purl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                } else {\\n                    //var html = request(srcurl);\\n                    var html = scode.body;\\n                    //log(html);\\n                    if (/404 Not Found|备案后可继续访问|不存在/.test(html) || html == '') {\\n                        return openurl(srcurl.substring(srcurl.indexOf('=http') + 1));\\n                    } else if (/\\\\\\\"url\\\\\\\"\\\\:\\\\\\\"http/.test(html)) {\\n                        var purl = html.match(/\\\\\\\"url\\\\\\\":\\\\\\\"(.*?)\\\\\\\"/)[1].replace(/\\\\\\\\/g, '');\\n                    } else if (html.startsWith('{')) {\\n                        var purl = srcurl.substring(srcurl.indexOf('=http') + 1);\\n                    } else {\\n                        //var purl = srcurl\\n                        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                        return x5rule(srcurl, srcurl);\\n                        //return 'x5WebView://'+(srcurl) \\n                    }\\n                };\\n                //log(purl);\\n                if (/titan.mgtv/.test(purl)) {\\n                    return purl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                } else if (/obj\\\\/tos/.test(purl)) {\\n                    return purl + '#isVideo=true#';\\n                } else {\\n                    return purl\\n                };\\n\\n            } catch (e) {\\n                if (srcurl.substring(0, 2) == '\\\\/\\\\/') {\\n                    return openurl('https:' + srcurl);\\n                } else if (/\\\\=http/.test(srcurl) && /\\\\.html|bilibili/.test(srcurl)) {\\n                    //return srcurl.split('=')[1];\\n                    return openurl(srcurl.substring(srcurl.indexOf('=http') + 1));\\n                } else {\\n                    return openurl(srcurl)\\n                }\\n            }\\n            //动态解析代码结束\\n        }, ptab, srcurl, myurl),\\n        col_type: clt\\n    });\\n}\\n//}\"},{\"col_type\":\"movie_3\",\"name\":\"列表模式搜索二级\",\"path\":\"searerj\",\"rule\":\"var res = {};\\nvar items = [];\\nvar nowDate = new Date();\\nvar month = nowDate.getMonth() + 1 < 10 ? \\\"0\\\" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1;\\nvar day = nowDate.getDate() < 10 ? \\\"0\\\" + nowDate.getDate() : nowDate.getDate();\\nvar dateStr = month + '' + day;\\nvar spl = getResCode().split('#x#');\\nvar typet = spl[3];\\nvar tdomin = spl[2];\\nvar key = spl[4];\\n\\nif (/vipmv/.test(tdomin)) {\\n    var bhtml = request(spl[1]);\\n} else {\\n    var bhtml = fetch(spl[1], {\\n        headers: {\\n            \\\"User-Agent\\\": tdomin.indexOf(\\\"mogai_api\\\") != -1 ? \\\"Dart/2.14 (dart:io)\\\" : \\\"okhttp/4.1.0\\\"\\n        }\\n    });\\n}\\ntry {\\n    bhtml = bhtml.startsWith('\\\\r\\\\n') ? bhtml.replace('\\\\r\\\\n', '') : bhtml;\\n} catch (e) {}\\nif (/btwaf/.test(bhtml)) {\\n    /*\\n                items.push({\\n                    title:'有宝塔验证，点击访问原网页',\\n                    url: spl[1] + `@lazyRule=.js:input.split(';')[0]`,\\n                    col_type: 'text_1'\\n                });\\n                */\\n\\n    bhtml = fetch(spl[1] + '&btwaf' + bhtml.match(/btwaf(.*?)\\\\\\\"/)[1], {});\\n\\n}\\n\\nif (bhtml == \\\"\\\" || bhtml == null || bhtml.substring(0, 5) == 'error' || !bhtml.startsWith('{')) {\\n    items.push({\\n        title: '未搜索到相关资源，点击访问原网页',\\n        url: spl[1] + `@lazyRule=.js:input.split(';')[0]`,\\n        col_type: 'text_1'\\n    });\\n} else if (bhtml.length < 80) {\\n    items.push({\\n        title: '返回数据不完整，点击访问原网页',\\n        url: spl[1] + `@lazyRule=.js:input.split(';')[0]`,\\n        col_type: 'text_1'\\n    });\\n} else {\\n    var html = JSON.parse(bhtml);\\n    //log(spl[1]);\\n    if (html.list) {\\n        var list = html.list;\\n    } else if (html.data.list) {\\n        var list = html.data.list;\\n    } else if (html.data) {\\n        var list = html.data;\\n    }\\n\\n    if (list.length < 1) {\\n        items.push({\\n            title: '未搜索到，点击访问原网页',\\n            url: spl[1] + `@lazyRule=.js:input.split(';')[0]`,\\n            col_type: 'text_1'\\n        });\\n    } else {\\n        for (var i = 0; i < list.length; i++) {\\n\\n            if (/\\\\/vod\\\\//.test(tdomin)) {\\n                var title = list[i].title;\\n                var pic = list[i].pic;\\n                //var vid=tdomin+'/detail?vod_id='+list[i].nextlink+'&rel_limit=10';\\n                var vid = list[i].nextlink;\\n                var rem = list[i].state;\\n                //var con=list[i].state;\\n            } else {\\n                if (tdomin.indexOf('api.php/app/') != -1) {\\n                    var title = list[i].vod_name;\\n                    var pic = list[i].vod_pic;\\n                    if (/fantuan/.test(tdomin)) {\\n                        var vid = 'https://fantuan.wkfile.com/api.php/app/video_detail?id=' + list[i].vod_id + '&token=';\\n                    } else {\\n                        var vid = tdomin + 'video_detail?id=' + list[i].vod_id + '&token=';\\n                    }\\n                    var rem = list[i].vod_remarks;\\n                    //var con=list[i].type.type_des;\\n                } else if (tdomin.indexOf('xgapp.php/v1/') != -1) {\\n                    var title = list[i].vod_name;\\n                    var pic = list[i].vod_pic;\\n                    var vid = tdomin + 'video_detail?id=' + list[i].vod_id;\\n                    var rem = list[i].vod_remarks;\\n                    //var con=list[i].type.type_des;\\n                } else {\\n                    var title = list[i].vod_name;\\n                    var pic = list[i].vod_pic;\\n                    if (/iopenyun/.test(tdomin)) {\\n                        var vid = tdomin + '/detailID?vod_id=' + list[i].vod_id + '&token=';\\n                    } else {\\n                        var vid = tdomin + '/detail?key=' + dateStr + '&vod_id=' + list[i].vod_id + '&token=';\\n                    }\\n                    var rem = list[i].vod_remarks;\\n                    //var con=list[i].type.type_des;\\n                }\\n            }\\n\\n            items.push({\\n                title: title.replace(key, '““' + key + '””'),\\n                pic_url: pic + '@Referer=',\\n                url: $(tdomin.indexOf(\\\"mogai_api\\\") != -1 ? vid + ';get;utf-8;{User-Agent@Dart/2.14 (dart:io)}' : vid + ';get;utf-8;{User-Agent@okhttp/4.1.0}').rule((tdomin) => {\\n                    var res = {};\\n                    var items = [];\\n                    var html = JSON.parse(getResCode());\\n                    items.push({\\n                        title: '',\\n                        desc: '255&&float',\\n                        url: '',\\n                        col_type: 'x5_webview_single'\\n                    });\\n                    refreshX5WebView('');\\n                    var myurl = MY_URL.match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n                    if (/\\\\/vod\\\\//.test(tdomin)) {\\n                        eval(JSON.parse(fetch('hiker://page/tvmovlist', {})).rule);\\n                    } else {\\n                        eval(JSON.parse(fetch('hiker://page/appmovlist', {})).rule);\\n                    }\\n                    res.data = items;\\n                    setHomeResult(res);\\n                }, tdomin),\\n                //content:rem,\\n                desc: rem,\\n                col_type: 'movie_1_vertical_pic'\\n            });\\n        } //for i\\n    } //else list.length\\n}\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"APP首页列表\",\"path\":\"appindexdata\",\"rule\":\"if (html.list) {\\n    var list = html.list;\\n} else if (html.data && html.data.list) {\\n    var list = html.data.list;\\n} else {\\n    var list = html.data;\\n}\\n\\nfor (var i = 0; i < list.length; i++) {\\n    if (list[i].vod_list) {\\n        var lists = list[i].vod_list;\\n        var typename = list[i].vod_type_name;\\n    } else {\\n        var lists = list[i].vlist;\\n        var typename = list[i].type_name\\n    }\\n    items.push({\\n        title: typename,\\n        col_type: 'text_1'\\n\\n    });\\n\\n    for (var j = 0; j < lists.length; j++) {\\n        var title = lists[j].vod_name;\\n        var img = lists[j].vod_pic;\\n        var url = lists[j].vod_id;\\n        var desc = lists[j].vod_remarks;\\n        var nowDate = new Date();\\n        var month = nowDate.getMonth() + 1 < 10 ? \\\"0\\\" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1;\\n        var day = nowDate.getDate() < 10 ? \\\"0\\\" + nowDate.getDate() : nowDate.getDate();\\n        var dateStr = month + '' + day;\\n        if (html.list) {\\n            var link = murl + 'video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n        } else if (html.data && html.data.list) {\\n            if (murl.search(/mogai_api/) != -1) {\\n                var link = murl + '/detail?key=' + dateStr + '&vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n            } else {\\n                var link = murl + '/detail?key=' + dateStr + '&vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@okhttp/4.1.0}';\\n            }\\n        } else {\\n            var link = murl + 'video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n        };\\n        if (/fantuan/.test(murl)) {\\n            var link = 'https://fantuan.wkfile.com/api.php/app/video_detail?id=' + url + '&token=;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n        } else if (/iopenyun/.test(murl)) {\\n            var link = murl + '/detailID?vod_id=' + url + '&rel_limit=10;get;utf-8;{User-Agent@Dart/2.14 (dart:io)}';\\n        } else if (/dijiaxia/.test(murl)) {\\n            var link = 'http://www.dijiaxia.com/api.php/app/video_detail?id=' + url;\\n        }\\n        items.push({\\n            title: title,\\n            pic_url: img + '@Referer=',\\n            url: $(link).rule(() => {\\n                var res = {};\\n                var items = [];\\n                items.push({\\n                    title: '',\\n                    desc: '255&&float',\\n                    url: '',\\n                    col_type: 'x5_webview_single'\\n                });\\n                refreshX5WebView('');\\n                var html = JSON.parse(getResCode());\\n                var myurl = MY_URL.match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n                try {\\n                    eval(JSON.parse(fetch('hiker://page/appmovlist', {})).rule);\\n                } catch (e) {}\\n                res.data = items;\\n                setHomeResult(res);\\n            }),\\n            desc: desc,\\n            col_type: 'movie_3_marquee'\\n        });\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"断念插件调用\",\"path\":\"dnplugin\",\"rule\":\"var dnen = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).enDn;\\nitems.push({\\n    title: '断插：' + (dnen == '1' ? '““✅””' : '❎'),\\n    url: $('').lazyRule((dnen) => {\\n        if (dnen == '1') {\\n            var fileUrl = fetch(\\\"hiker://files/rules/xyq/appmset.json\\\", {}).replace('\\\\\\\"enDn\\\\\\\":\\\\\\\"1\\\\\\\"', '\\\\\\\"enDn\\\\\\\":\\\\\\\"0\\\\\\\"');\\n            writeFile(\\\"hiker://files/rules/xyq/appmset.json\\\", fileUrl);\\n            refreshPage(false);\\n            return 'toast://已禁用断插调用！';\\n        } else {\\n            var fileUrl = fetch(\\\"hiker://files/rules/xyq/appmset.json\\\", {}).replace('\\\\\\\"enDn\\\\\\\":\\\\\\\"0\\\\\\\"', '\\\\\\\"enDn\\\\\\\":\\\\\\\"1\\\\\\\"');\\n            //log(fileUrl);\\n            writeFile(\\\"hiker://files/rules/xyq/appmset.json\\\", fileUrl);\\n            refreshPage(false);\\n            return 'toast://已开启断插调用！'\\n        }\\n    }, dnen),\\n    col_type: 'text_3'\\n});\\nif (dnen == '1') {\\n    items.push({\\n        title: '线路配置',\\n        url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n        col_type: 'text_3'\\n    });\\n    items.push({\\n        title: '解析管理',\\n        url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/jxItem.js');jxItem.jxList();setResult(d)\\\",\\n        col_type: 'text_3'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"设置页代码\",\"path\":\"setting\",\"rule\":\"var d = [];\\nvar setjson = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {}));\\nvar ssmd = setjson.ssmode;\\nvar ssxc = setjson.sscount;\\nd.push({\\n    title: '搜索设置',\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '当前：' + '(' + (ssmd == 1 ? '聚合结果' : '引擎列表') + ')',\\n    url: $('hiker://empty').lazyRule(() => {\\n        var md = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).ssmode;\\n\\n        if (md == 1) {\\n            var fileUrl = fetch(\\\"hiker://files/rules/xyq/appmset.json\\\", {}).replace('\\\\\\\"ssmode\\\\\\\":\\\\\\\"1\\\\\\\"', '\\\\\\\"ssmode\\\\\\\":\\\\\\\"0\\\\\\\"');\\n            writeFile(\\\"hiker://files/rules/xyq/appmset.json\\\", fileUrl);\\n            back(true);\\n            return 'toast://切换为搜索引擎列表单选模式成功！';\\n        } else {\\n            var fileUrl = fetch(\\\"hiker://files/rules/xyq/appmset.json\\\", {}).replace('\\\\\\\"ssmode\\\\\\\":\\\\\\\"0\\\\\\\"', '\\\\\\\"ssmode\\\\\\\":\\\\\\\"1\\\\\\\"');\\n            //log(fileUrl);\\n            writeFile(\\\"hiker://files/rules/xyq/appmset.json\\\", fileUrl);\\n            back(true);\\n            return 'toast://切换为聚合搜索模式成功！'\\n        }\\n    }),\\n    col_type: 'text_2'\\n})\\nd.push({\\n    title: '搜索超时(' + '' + getItem('apptimout', '')+')',\\n    url: \\\"input://\\\" + '3000' + \\\"////请设置超时时间，1000为一秒。.js:var num = parseInt(input).toString();if (num == 'NaN'||num<1000) {'toast://输入的值好像不正确。';} else {setItem('apptimout', num);refreshPage();'toast://设置成功。'}\\\",\\n    col_type: 'text_2'\\n});\\n\\nd.push({\\n    title: '搜索线程' + '(' + ssxc + ')',\\n    url: \\\"input://\\\" + JSON.stringify({\\n        value: \\\"5\\\",\\n        hint: \\\"请输入一个整数数字，推荐最大不要超过15。\\\",\\n        js: $.toString(() => {\\n            var num = parseInt(input).toString();\\n            if (num == 'NaN' || num < 1) {\\n                return 'toast://输入的值好像不正确。';\\n            } else {\\n                var fileUrl = fetch(\\\"hiker://files/rules/xyq/appmset.json\\\", {}).replace(/\\\\\\\"sscount\\\\\\\":\\\\\\\"[\\\\d]*\\\\\\\"/, '\\\\\\\"sscount\\\\\\\":\\\\\\\"' + num + '\\\\\\\"');\\n                writeFile(\\\"hiker://files/rules/xyq/appmset.json\\\", fileUrl);\\n                back(true);\\n                return 'toast://保存设置搜索线程完成！'\\n            }\\n        }),\\n    }),\\n    col_type: 'text_2'\\n});\\n\\nd.push({\\n    title: '更新相关',\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '检测更新',\\n    url: $('').lazyRule((locver) => {\\n        try {\\n            var remf = fetchCache('https://codeberg.org/lzk23559/cloudrule/raw/branch/master/appmovie.txt', 24);\\n        } catch (e) {\\n            remf = '';\\n        }\\n        if (/￥base64/.test(remf)) {\\n            var remv = JSON.parse(base64Decode(remf.split('@')[2])).version;\\n        } else if (/￥home_rule￥/.test(remf)) {\\n            var remv = JSON.parse(remf.split('￥home_rule￥')[1]).version;\\n        };\\n        if (/￥home_rule/.test(remf)) {\\n            log('远程版本：' + remv);\\n            log('本地版本：' + locver);\\n            if (locver != remv) {\\n                putVar('appnver', remf);\\n                refreshPage();\\n                return 'toast://有新版本，点导入更新可更新规则。';\\n            } else {\\n                return 'toast://暂无新版本，24小时内检测无效。'\\n            };\\n        } else {\\n            return 'toast://检测更新失败，可能云端抽风了。'\\n        }\\n    }, locver),\\n    col_type: 'text_2'\\n});\\nif (getVar('appnver')) {\\n    d.push({\\n        title: '导入更新',\\n        url: $('').lazyRule(() => {\\n            return getVar('appnver');\\n        }),\\n        col_type: 'text_2'\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"最新章节\",\"path\":\"chapter\",\"rule\":\"var chp = [];\\ntry {\\n    var html = JSON.parse(getResCode());\\n    if (html.videolist) {\\n        var conts = Object.keys(html.videolist);\\n    } else if (html.data.vod_url_with_player) {\\n        var conts = html.data.vod_url_with_player;\\n        if (conts.length < 1) {\\n            conts = html.data.vod_play_url.split('$$$');\\n        }\\n    } else if (html.data.vod_info && html.data.vod_info.vod_url_with_player) {\\n        var conts = html.data.vod_info.vod_url_with_player;\\n        if (conts.length < 1) {\\n            conts = html.data.vod_info.vod_play_url.split('$$$');\\n        }\\n    } else {\\n        var conts = html.data.vod_play_list;\\n        if (conts.length < 1) {\\n            conts = html.data.vod_play_url.split('$$$');\\n        }\\n    }\\n\\n    for (var i = 0; i < conts.length; i++) {\\n        if (html.videolist) {\\n            var list = html.videolist[conts[i]];\\n        } else if (conts[i].urls) {\\n            var list = conts[i].urls;\\n        } else if (conts[i].url) {\\n            var list = conts[i].url.split(\\\"#\\\");\\n        } else {\\n            var list = conts[i].split(\\\"#\\\");\\n        }\\n        chp.push(list.length);\\n    }\\n} catch (e) {}\\n//log(Math.max.apply(Math,chp));\\nsetResult('更新至:' + (Math.max.apply(Math, chp)));\"},{\"col_type\":\"movie_3\",\"name\":\"分类搜索\",\"path\":\"ss2\",\"rule\":\"js:\\nvar items = [];\\nvar Data = [];\\nvar nowDate = new Date();\\nvar month = nowDate.getMonth() + 1 < 10 ? \\\"0\\\" + (nowDate.getMonth() + 1) : nowDate.getMonth() + 1;\\nvar day = nowDate.getDate() < 10 ? \\\"0\\\" + nowDate.getDate() : nowDate.getDate();\\nvar dateStr = month + '' + day;\\n//取搜索线程设置\\nvar ssxc = JSON.parse(fetch('hiker://files/rules/xyq/appmset.json', {})).sscount;\\n//设置超时时间，越小越快，单位毫秒\\nvar timeou = getItem('apptimout', '3000');\\nvar key = MY_URL.split('$$$')[1];\\nvar num = MY_URL.split('$$$')[2];\\nvar le = parseInt(num * ssxc);\\nvar Tit = [];\\nlet list = MY_PARAMS.list;\\nlet tytit = MY_PARAMS.tytit;\\nlet pageid = \\\"__app\\\" + num;\\ntry {\\n    for (var j = le - ssxc; j < le; j++) {\\n        if (j < list.length) {\\n            var link = list[j].url;\\n            var litit = list[j].murl;\\n            if (/\\\\/vod\\\\//i.test(link)) {\\n                if (/19jx|293ys|zhaikanys|ji\\\\-ding\\\\-he|phoebe|yunbo\\\\.bxin|lanrentk|hetaoys|pxun|139\\\\.155|fkkdy|056158|aixixi|ruoxinew|feifan123|siqitv/.test(link)) {\\n                    var hmurl = link + '?ac=list&zm=' + key + '&page=1';\\n                } else {\\n                    var hmurl = link + '?ac=list&wd=' + key + '&page=1';\\n                }\\n            } else {\\n                if (/dijiaxia/.test(link)) {\\n                    link = 'http://www.dijiaxia.com/api.php/app/'\\n                };\\n                if (link.indexOf('api.php/app/') != -1) {\\n                    var hmurl = link + 'search?pg=1&text=' + key + '&token=';\\n                } else if (link.indexOf('xgapp.php/v1/') != -1) {\\n                    var hmurl = link + 'search?pg=1&text=' + key;\\n                } else {\\n                    if (/iopenyun/.test(link)) {\\n                        var hmurl = link + '/list?page=fypage&limit=10&wd=' + key;\\n                    } else {\\n                        var hmurl = link + '?page=1&limit=10&wd=' + key;\\n                    }\\n                }\\n            }\\n            //Data.push({url: hmurl,options: {headers: {\\\"User-Agent\\\": \\\"Dart/2.14 (dart:io)\\\"},timeout: timeou}});\\n            Data.push({\\n                url: hmurl,\\n                options: {\\n                    headers: {\\n                        \\\"User-Agent\\\": link.indexOf(\\\"mogai_api\\\") != -1 ? \\\"Dart/2.14 (dart:io)\\\" : \\\"okhttp/4.1.0\\\"\\n                    },\\n                    timeout: timeou\\n                }\\n            });\\n            Tit.push({\\n                tit: list[j].title,\\n                link: link,\\n                typnm: litit\\n            });\\n        } //if\\n    } //for j\\n} catch (e) {}\\nif (Data.length <= 0) {\\n    setResult([]);\\n} else {\\n    items.push({\\n        title: \\\"正在加载中第\\\" + MY_PAGE + \\\"页，进度：1/\\\" + Data.length,\\n        url: \\\"\\\",\\n        col_type: \\\"text_center_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            id: pageid\\n        }\\n    });\\n    setResult(items);\\n    let tasks = [];\\n\\n    for (let k in Data) {\\n        let it = Data[k];\\n        tasks.push({\\n            func: function(param) {\\n                let d = [];\\n                let html = fetch(param.it.url, param.it.options);\\n                //log(html);\\n                try {\\n                    html = html.substring(0, 2) == '\\\\r\\\\n' ? html.replace('\\\\r\\\\n', '') : html;\\n                } catch (e) {}\\n                if (/btwaf/.test(html)) {\\n                    html = fetch(param.it.url + '&btwaf' + html.match(/btwaf(.*?)\\\\\\\"/)[1], {});\\n                }\\n                if (html == \\\"\\\" || html == null || html.substring(0, 5) == 'error' || !html.startsWith('{')) {\\n                    return null;\\n                } else if (html.length < 80) {\\n                    return null\\n                } else {\\n                    html = JSON.parse(html);\\n                    //log(html);\\n                    var typet = param.tit.typnm;\\n                    var tdomin = param.tit.link;\\n                    if (html.list) {\\n                        var list = html.list;\\n                    } else if (html.data.list) {\\n                        var list = html.data.list;\\n                    } else if (html.data) {\\n                        var list = html.data;\\n                    } else {\\n                        var list = [];\\n                    }\\n                    if (list.length < 1) {\\n                        return null;\\n                    } else {\\n                        for (var i = 0; i < list.length; i++) {\\n                            if (/\\\\/vod\\\\//.test(tdomin)) {\\n                                var title = list[i].title;\\n                                var pic = list[i].pic;\\n                                var vid = list[i].nextlink;\\n                                var rem = list[i].state;\\n                            } else {\\n                                if (tdomin.indexOf('api.php/app/') != -1) {\\n                                    var title = list[i].vod_name;\\n                                    var pic = list[i].vod_pic;\\n                                    if (/fantuan/.test(tdomin)) {\\n                                        var vid = 'https://fantuan.wkfile.com/api.php/app/video_detail?id=' + list[i].vod_id + '&token=';\\n                                    } else {\\n                                        var vid = tdomin + 'video_detail?id=' + list[i].vod_id + '&token=';\\n                                    }\\n                                    var rem = list[i].vod_remarks;\\n                                    //var con=list[i].type.type_des;\\n                                } else if (tdomin.indexOf('xgapp.php/v1/') != -1) {\\n                                    var title = list[i].vod_name;\\n                                    var pic = list[i].vod_pic;\\n                                    var vid = tdomin + 'video_detail?id=' + list[i].vod_id;\\n                                    var rem = list[i].vod_remarks;\\n                                    //var con=list[i].type.type_des;\\n                                } else {\\n                                    var title = list[i].vod_name;\\n                                    var pic = list[i].vod_pic;\\n                                    if (/iopenyun/.test(tdomin)) {\\n                                        var vid = tdomin + '/detailID?vod_id=' + list[i].vod_id + '&token=';\\n                                    } else {\\n                                        var vid = tdomin + '/detail?key=' + dateStr + '&vod_id=' + list[i].vod_id + '&token=';\\n                                    }\\n                                    var rem = list[i].vod_remarks;\\n                                    //var con=list[i].type.type_des;\\n                                }\\n\\n                            }\\n                            //var con=list[i].state;\\n                            //log(vid);\\n                            d.push({\\n                                title: MY_TYPE == \\\"home\\\" ? title.replace(key, '““' + key + '””') + '\\\\n' + rem : title + rem,\\n                                pic_url: pic + '@Referer=',\\n                                url: $(tdomin.indexOf(\\\"mogai_api\\\") != -1 ? vid + ';get;utf-8;{User-Agent@Dart/2.14 (dart:io)}' : vid + ';get;utf-8;{User-Agent@okhttp/4.1.0}').rule((tdomin) => {\\n                                    var res = {};\\n                                    var items = [];\\n                                    var html = JSON.parse(getResCode());\\n                                    items.push({\\n                                        title: '',\\n                                        desc: '255&&float',\\n                                        url: '',\\n                                        col_type: 'x5_webview_single'\\n                                    });\\n                                    var myurl = MY_URL.match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n                                    if (/\\\\/vod\\\\//.test(tdomin)) {\\n                                        eval(JSON.parse(fetch('hiker://page/tvmovlist', {})).rule);\\n                                    } else {\\n                                        eval(JSON.parse(fetch('hiker://page/appmovlist', {})).rule);\\n                                    }\\n\\n                                    res.data = items;\\n                                    setHomeResult(res);\\n                                },tdomin),\\n                                //content: rem,\\n                                desc: tytit + ' => ' + param.tit.tit,\\n                                col_type: 'movie_1_vertical_pic'\\n                            });\\n                        } //for i\\n                    } //if list.length\\n                    return d;\\n                }\\n            },\\n            param: {\\n                it: it,\\n                tit: Tit[k]\\n            },\\n            id: \\\"task\\\"\\n        })\\n    }\\n\\n    batchExecute(tasks, {\\n        func: function(param, id, error, result) {\\n            //log(\\\"listener: \\\" + (result || []).length)\\n            param.i = param.i + 1;\\n            if (result) {\\n                for (let it of result) {\\n                    param.j = param.j + 1;\\n                    addItemBefore(pageid, {\\n                        title: it.title,\\n                        desc: it.desc,\\n                        url: it.url,\\n                        pic_url: it.pic_url,\\n                        col_type: 'movie_1_vertical_pic',\\n                        extra: {\\n                            id: \\\"__app\\\" + MY_PAGE + \\\"@\\\" + param.j\\n                        }\\n                    })\\n                }\\n\\n            }\\n            if (param.i >= param.all) {\\n                deleteItem(pageid)\\n            } else {\\n                updateItem({\\n                    title: \\\"正在加载第\\\" + MY_PAGE + \\\"页，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                    url: \\\"\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    desc: \\\"\\\",\\n                    pic_url: \\\"\\\",\\n                    extra: {\\n                        id: pageid\\n                    }\\n                })\\n            }\\n        },\\n        param: {\\n            all: Data.length,\\n            i: 0,\\n            j: -1\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据转换\",\"path\":\"conver\",\"rule\":\"//js:\\n//rem(res);\\nvar 记录 = [];\\nvar 输入条目 = remfile.match(/.+=http.+/g);\\nfor (var j in 输入条目) {\\n    var title = 输入条目[j].split('@')[1].split('=')[0];\\n    var url = 输入条目[j].split('=')[1].split('#')[0];\\n    var img = 输入条目[j].split('#')[1];\\n    if (img.indexOf(\\\"http\\\") != -1) {\\n        var img = img;\\n    } else if (img == \\\"\\\") {\\n        var img = \\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/通用图标.png\\\"\\n    } else {\\n        var img = \\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/\\\" + img + \\\".png\\\";\\n    }\\n    if (url.search(/api\\\\.php\\\\/.*?\\\\/vod/) != -1) {\\n        var murl = \\\"q:TV影视\\\";\\n    } else {\\n        var murl = \\\"q:APP影视\\\";\\n    }\\n    if (输入条目[j].split('@')[0] != \\\"\\\") {\\n        var type = 输入条目[j].split('@')[0];\\n    } else if (url.indexOf(\\\"api.php/app\\\") != -1 || url.indexOf(\\\"xgapp\\\") != -1) {\\n        var type = \\\"小龟\\\";\\n    } else if (url.indexOf(\\\".vod\\\") != -1) {\\n        var type = \\\"萝卜/白菜/木白/绿豆\\\";\\n    } else if (url.search(/api\\\\.php\\\\/.+?\\\\/vod\\\\//) != -1) {\\n        var type = \\\"神马\\\";\\n    }\\n    记录.push({\\n        title: title,\\n        url: url,\\n        img: img,\\n        murl: murl,\\n        type: type\\n    });\\n}\\n//if (_.read(filename)) {\\n//var 新记录 = JSON.parse(_.read(filename));\\n//} else {\\nvar 新记录 = [];\\n//}\\nfor (var i in 记录) {\\n    var 当前条目 = [];\\n    当前条目.push(记录[i]);\\n    if (新记录.length == 0) {\\n        新记录.push({\\n            title: 记录[i].type,\\n            list: 当前条目\\n        });\\n    } else {\\n    let res = 新记录.some(item => {\\n        //判断类型，有就添加到当前项\\n        if (item.title == 记录[i].type) {\\n            item.list = 当前条目.concat(item.list.filter(d => d.url != 记录[i].url));\\n            return true\\n        }\\n    });\\n    if (!res) {\\n        //如果没找相同类型添加一个类型\\n        新记录.push({\\n            title: 记录[i].type,\\n            list: 当前条目\\n        });\\n    }\\n    }\\n}\\nvar newfile = {};\\nnewfile.data = 新记录;\\n//log(remfile);\"}]","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/appmov.png"},{"last_chapter_rule":"","title":"聚云","author":"tee&MrFly","version":5,"type":"video","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"喵搜&小纸条&UP云搜&TG盘&更多","class_url":"https://www.alipansou.com&https://u.gitcafe.net/&https://www.upyunso.com&https://tx.me/s/sharealiyun&https://dalao.ru/w/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//不能自适应高度的网站\nlet white = [\n    \"//tx.me/\",\n]\nlet d = [];\nlet r = fetch(\"hiker://home@云盘汇影\");\nif (!r || r.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入',\n        confirm: ru,\n        cancel: ru\n    })\n}\nlet u = MY_URL.split(\"##\")[1];\nlet desc = \"auto\";\nfor (let it of white) {\n    if (u.includes(it)) {\n        desc = \"100%&&float\";\n    }\n}\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: u,\n    desc: desc,\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.alipansou.com/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"聚杯狐.Aotu","author":"小棉袄&tee&香雅晴&发粪涂墙&道长&顺承天意&风吹发梢","version":3,"type":"video","url":"hiker://empty##fyclass","col_type":"movie_3_marquee","class_name":"首页&茶杯狐&51搜剧&电影狗&白嫖联盟&搜片&未知搜索","class_url":"all&https://cupfox.app/&https://51souju.com/&https://www.dianyinggou.com/&https://www.bpzhe.com/&https://soupian.app/&https://xsear.ch/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar myurl = MY_URL.split(\"##\")[1];\nfunction loadUrl(myurl) {\n  setResult([{\n        col_type: \"x5_webview_single\",\n        url: myurl,\n        desc: \"float&&top\",\n        extra: {\n            canBack: true,\n            urlInterceptor: $.toString(() => {\n                if (!input.startsWith(\"https://cupfox.app/\")&&!input.startsWith(\"https://51souju.com/\")&&!input.startsWith(\"https://www.dianyinggou.com/\")&&!input.startsWith(\"https://www.bpzhe.com/\")&&!input.startsWith(\"https://soupian.app/\")&&!input.startsWith(\"https://xsear.ch/\")&&!input.includes(\"search\")&&!input.includes(\"douban\")&&!input.includes(\"baike.baidu\")&&!input.includes(\"wikipedia\")&&!input.includes(\"moegirl\")&&!input.includes(\"bilibili\")) {\n                    return $.toString((url) => {\n                        fba.open(JSON.stringify({\n                            rule: '聚杯狐.Aotu',\n                            url: 'hiker://page/detailsQ?rule=聚杯狐.Aotu&url=' + url\n.replace('yzne.com/thread','yzne.com/VOD')\n.replace('31kan.vip/play','31kan.vip/31kan')\n.replace('niumatv.com/play','niumatv.com/vod')\n.replace('dm530p.cc/play','dm530p.cc/view')\n.replace('play','detail')\n.replace(/bilibili(.*?)\\/detail/,'bilibili$1/play')\n                        }));\n                    }, input)\n                }\n            })\n        }\n    }]);\n}\nif(myurl == \"all\")\n{\nlet d = [];\nlet cls = getMyVar(\"cls\", \"\");\n    if (cls) {\n        u = cls;\n        loadUrl(u);\n        clearMyVar(\"cls\");}\n  else{\nlet r = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title));\nlet cn = r.class_name.split(\"&\");\nlet cu = r.class_url.split(\"&\");\nlet cpic = [\"\",\n\"http://pic.xiazaicc.com/upload/2021-11/202111221029492933.png\",\n\"https://51souju.com/images/favicon.png\",\n\"https://img1.ali213.net/shouyou/cover/5/10355333.jpg?1642604271\",\n\"https://dingyue.ws.126.net/2022/0306/71f04a37j00r8btks0004d0007s0028p.jpg\",\n\"https://soupian.app/images/icon.png\",\n\"https://xsear.ch/favicon.ico\"];\n\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n 搜索建议(d, '海报开')\n\nfor (let i = 1; i < cn.length; i++) {\n            d.push({\n                title: cn[i],\n                url: $().lazyRule((u) => {\n                    putMyVar(\"cls\", u);\n                    //refreshX5Desc(\"top&&float\");\n                    refreshPage();\n                    return \"hiker://empty\";\n                }, cu[i]),\n                col_type: \"icon_small_3\",\n                desc: \"\",\n                pic_url: cpic[i],\n            });\n        }\nrefreshX5Desc(\"0&&float\");\nsetResult(d);}\n}\nelse{\n  loadUrl(myurl);\n}\n//一级来自聚云盘pro微改套娃,顺佬视界搜索","searchFind":"js:\n     require('hiker://page/searchss');\n//搜索解析规则来自香情影视茶杯狐模块，by香雅晴&发粪涂墙","search_url":"hiker://empty##hiker://empty#x#fypage@-1@#x#**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n   log(url)\n    if (/m3u8|mp4|flv/.test(url)) {\n        return url\n    } else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){\n                  let config = fetch('hiker://files/cache/MyParseSet.json');\n                  let DnV2 = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n                  if (config && fetch(JSON.parse(config).cj)) {\n                DnV2 = JSON.parse(config).cj;\n                            }\n                eval(fetch(DnV2));\n                return aytmParse(url);\n                                           }\n      else{\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n});\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())\n//墙佬模版Q自动匹配,通免+断插+香情嗅探","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"DR二级匹配\",\"path\":\"details\",\"rule\":\"js:\\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');\\nrequire(config.自动匹配);\\nvar lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n   log(url)\\n    if (/m3u8|mp4|flv/.test(url)) {\\n        return url\\n    } else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){\\n                  let config = fetch('hiker://files/cache/MyParseSet.json');\\n                  let DnV2 = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\\n                  if (config && fetch(JSON.parse(config).cj)) {\\n                DnV2 = JSON.parse(config).cj;\\n                            }\\n                eval(fetch(DnV2));\\n                return aytmParse(url);\\n                                           }\\n      else{\\n         /* const {\\n                        lazyParse\\n                    } = $.require(\\\"hiker://page/globalParse?rule=\\\\u9053\\\\u957f\\\\u4ed3\\\\u5e93Pro\\\");\\n                    return lazyParse(input)*/\\n\\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n    return x5rule(input, input);\\n\\n            }\\n});\\n自动二级(lazy);\\n//自动二级();\"},{\"col_type\":\"movie_3\",\"name\":\"香情茶杯搜\",\"path\":\"searchss\",\"rule\":\"\\nevalPrivateJS('htzOHxroWA41B+XJreUT33ykqGmgOXJZ70dffIdDod0kg0123lFJ8N1ubSa86all4OxdDYIQEu30fQXie6Z4c6dO+WWatbvlg2bz8kKBgwu2glL7neKT5Ex6p3uF0XkaadlPBFegSYIIG98SEo9Qee6BGZsXQlHtmgG4d6mav5c91UvwrMEYrgZcNe5yqI1vjbyVmyKcbfSMeKsHPbjvwRLvPHNY1LDxCi6eYLy2ma6v9kGawi8v/1gjQLnxJLjSC1eWCdIt66TRNSxQt9228hWBvYjLtX1gohOX8eIIdrqQyYCwu41mDfwsEs5fBN8Nnr7STGkMgJIJw92tpR0RKZHjWLev0FjM9qNZaoWSmxSnQPvhQTXyO/IhV7R56UUWqKTCPBTi/Ilchx2VJsjgudXQD6PokdxxSWXQJkMcg6a0hclNB4QbajuKJ+wxhk5267pOKGEwx7OEHhiDw39m5faBlmPhclYp3fcXYyTsT1RuFYg+JVoRJjav64kIGac0Mh11h2TdKVx4k4ovzFDCxSLdYbiPPsF4KhCDJBopzr9OhU8OkkiZv3P4PKWSDblNQCCAUWeq3Mj5V37i3/of/VFBEk4M04dBBhsAlkEf6NH9sQEi4iul81t7xIV9i/nz5X29H/u7M2pW6Ya8LftIEUm44Naizm+ls31MNYX8qzUCxIH9qubvAMojmRXb/eU5sMHGMAqvkZeC6E7bn9j4+ssry0jWVnP7CJ/71kgB1Pb9O60sZqLoUNj9BX7/V8MWiRTfUbbcTLH9dYcWlslWQzawo7kkU+GFYsXhhYW49/QN23a6f2c+TutmOyrs9/qLLnWVXRlLNqtE5QhMwJBQoW1KvGj46OAPHM6oKU7AzEd5eoZcEyJRqIuLeaT7fzw3Tc6Dd8x/g/Jz9nF/HoFcztKelV0iT7k3msEUUOHN3K13kJrQhwqVIFylaLXA3c1g8LxFmYf7pIS1L5JEdfIeTBlMSrNqLKK8ah+ofCBx487boGA7xH+JthRxElGLcLe/yyvLSNZWc/sIn/vWSAHU9pl48vKq8YSLkItcTAns/rrr8qKDn9nXCR+AYr8UVg+GuUGgxRrr8pUK4caYKFgTaMPFYozkx8/F/j9diQTgq6PJsMgUd/7H/K5qFYtUJaPp16Qa1ldQicD6a1ZGWm19wLof0KL6zTHU83Ye1Yqx9zavGiTqVsj8wIbQD/nqZiYUxTtnWy9G0Q20b8mdoAwJ0gAbBWX54FsH5axd1mrJJVPf9SF36p0/zJUskWzbnXiCuiiBjfhmvK1Lq6j+pvtsHzzvcuXIErgr1D/PugFmhOVA/52NALXkD536BxSfTTEOoVf+RSkdJTaIE9ix7owrzeJyvetfK2JMjj9/8U0MrM3Bt3Pggyyl6sgHekltggbazpQy+w7887DkJyvv2wnOJwiNAfDvlK55dIWcbpRCH89EaO45ulKP+Mdn6aVNCspGmpuanfinoJJBEjhvJEEHqexn7CDPXR9TsDyMCkUUlhfiU0ZPAOUEwjHLyehUkaeiKHdDVQXhZdFzWmImdMeFkbaYZ1y3BaxxrFcnyJ08Kw3dwmOrZQAimtyxucOw5C3HGgaS3Bty/uXCCdqb9AHhCO9lvy0MISNXGeuyOM+vGFkr9ksIiTimwFIjX22/auVo6LB2szQwqEald3J4O4yZ8/z8SMm1YbBCVMgVO2pHfRXOlDL7DvzzsOQnK+/bCc4nCI0B8O+Urnl0hZxulEIfz0Ro7jm6Uo/4x2fppU0Kykaam5qd+KegkkESOG8kQQeplqU6NcH+UkFZVTkVZIKQyBQy3QzEQIm6yj984loSf/apx6xeyO5ynAQAHwQ7SFpZ47ALu7gwuKS/5cTL3g7nz9BqncJuFU2VkBD2Aznb5sHZZ4MlspKD+8kvXrN31jnsn1O3iRHqQwmGBBtgthFSJv049sCEfpuOBOqh41Oo/cv610K0RWWYBC0sicPf0oE94iQoZ9QgY7QcH+jc5igTBL3hr/2dskqrUpc+Yh7Ivj6rbPf8YejcN6aQaJQ9wAuiRffC8vIWZL/WtgCHGO1YCXxvCLiXkqmI3Gyz19pgdZMkqCHSYKktaBWRCZCKwT4fKUPG3liqyciTGGsA39M6L1RtBrdgaAX+f4d+5WzXLu26KIGN+Ga8rUurqP6m+2wfPO9y5cgSuCvUP8+6AWaE5aW29qRyPP7d7J9mBAAD+oS7pzy09dZOZVLGY2qHzFKM0txBeXP/uaadV6gKVvUvqfPpdsvJ4guUH/Au18B1pXWSrD729rI6FsHKVeKEEzMnDleUpv3/l/TE8oWXoov0Kssry0jWVnP7CJ/71kgB1Pa8sVmDOzIlSTI8YWcj2X3jyyvLSNZWc/sIn/vWSAHU9lU9Q5OnEieM5XEFPZKP78RLDuUtDmqywnGdgD9oD7LSwFitHSh+EKJGCMoUuFI21AvPYzPwlrU/cdn/B2WZD4dVeaODRARcvglcRt5amx+EyyvLSNZWc/sIn/vWSAHU9vUOBDokEgsyEQhXunKQLso6pZtT2eFCN0xWvtr+Lw7/YaUbjlRa3lxUqit4O2bDXHOGFfymbcp6cmbaT3DHxIBeCwzQ1CrLwP9ObeJX+IFRKs1ZFw/1UvdN3wdpQ7p9KRu06fibb5CxMXNG21Avo1T43Kjwy4ugGqZYKrDKS0QcggR79fsH3aEJtF/aD5wbtdBqncJuFU2VkBD2Aznb5sHZZ4MlspKD+8kvXrN31jnsjqYqzLHdbA45CLO3y8a5zDopWWAFxzHJnn516rbjSP/610K0RWWYBC0sicPf0oE94iQoZ9QgY7QcH+jc5igTBL3hr/2dskqrUpc+Yh7Ivj7lGbR6oye/DyAnWeI4wyL6hLfx/XgpCP7DboVOYuft1nxvCLiXkqmI3Gyz19pgdZMIa/p/ET6baZH4nWkjpfoTa6BOBjBxNF/FK4iqxdQjOVRtBrdgaAX+f4d+5WzXLu26KIGN+Ga8rUurqP6m+2wfPO9y5cgSuCvUP8+6AWaE5aW29qRyPP7d7J9mBAAD+oS7pzy09dZOZVLGY2qHzFKM0txBeXP/uaadV6gKVvUvqfPpdsvJ4guUH/Au18B1pXWSrD729rI6FsHKVeKEEzMnwogAr3ii3RdWO+FPF0efUMsry0jWVnP7CJ/71kgB1Pa8sVmDOzIlSTI8YWcj2X3jyyvLSNZWc/sIn/vWSAHU9mhxgQ2fgKW4l/BrQ449UCiJ0bwp9Ller74QvTH+SWI+wFitHSh+EKJGCMoUuFI21AvPYzPwlrU/cdn/B2WZD4dVeaODRARcvglcRt5amx+EyyvLSNZWc/sIn/vWSAHU9vUOBDokEgsyEQhXunKQLso6pZtT2eFCN0xWvtr+Lw7/BELBpJY5K0gwgOTWU6GnPWBXNGzbCyVMPwxrkiUePpnMp+icAh8fHUqxWKIQRaMg5jXxXmc3FfILjE/mB0nPsw==');\\n\"},{\"col_type\":\"movie_3\",\"name\":\"Q模版二级匹配\",\"path\":\"detailsQ\",\"rule\":\"js:\\nvar lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n   log(url)\\n    if (/m3u8|mp4|flv/.test(url)) {\\n        return url\\n    } else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){\\n                  let config = fetch('hiker://files/cache/MyParseSet.json');\\n                  let DnV2 = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\\n                  if (config && fetch(JSON.parse(config).cj)) {\\n                DnV2 = JSON.parse(config).cj;\\n                            }\\n                eval(fetch(DnV2));\\n                return aytmParse(url);\\n                                           }\\n      else{\\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n    return x5rule(input, input);\\n    }\\n});\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\"}]","icon":"https://lanmeiguojiang.com/tubiao/more/327.png"},{"last_chapter_rule":"","title":"影搜聚合","author":"","version":6,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet engines = {\n    \"茶杯狐\": {\n        s: \"https://cupfox.app/search?key=**\",\n        i: \"https://p0.meituan.net/dpgroup/cd088044f183d2719f3f9fe56d5c34204207.png\"\n    },\n    \"白嫖者\": {\n        h: \"https://www.bpzhe.com/\",\n        s: function(s) {\n            showLoading(\"很快就好，客官请稍等\");\n            let load = function(s, count) {\n                if (count > 3) {\n                    toast(\"重试三次依然失败，网站有毒\");\n                    return null;\n                }\n                try {\n                    let html = postRequest(\"https://www.bpzhe.com/e/search/index.php\", {\n                        headers: {\n                            \"Referer\": \"https://www.bpzhe.com/\"\n                        },\n                        redirect: false,\n                        withHeaders: true,\n                        body: {\n                            show: \"title\",\n                            tbname: \"movie\",\n                            tempid: 1,\n                            keyboard: s\n                        }\n                    });\n                    let json = JSON.parse(html);\n                    if (html.includes(\"没有搜索到相关的内容\")) {\n                        toast(\"没有搜索到相关的内容，换个关键词或者站点吧\");\n                        return null;\n                    }\n                    log(json);\n                    if (html.includes(\"系统限制的搜索时间间隔为 5 秒\")) {\n                        toast(\"网站限制的搜索时间间隔为 5 秒，请稍候再试\");\n                        return null;\n                    }\n                    let headers = json.headers;\n                    let u = headers.location[0];\n                    if (u.includes(\"id=\")) {\n                        return u;\n                    } else {\n                        return load(s, count + 1);\n                    }\n                } catch (e) {\n                    return load(s, count + 1);\n                }\n            }\n            let u = load(s, 1);\n            hideLoading();\n            if (u == null) {\n                return \"hiker://empty\";\n            }\n            //log(headers);\n            return \"https://www.bpzhe.com/e/search/\" + u;\n        },\n        i: \"https://www.bpzhe.com/static/img/im.png\"\n    },\n    \"电影狗\": {\n        s: \"https://www.dianyinggou.com/so/**\",\n        i: \"https://www.dianyinggou.com/View/images/logo.png\"\n    },\n    \"搜片\": {\n        s: \"https://soupian.app/search?key=**\",\n        i: \"https://soupian.app/images/icon.png\"\n    }\n};\n\nfunction getSearchUrl(kw, s) {\n    log(\"kw=\" + kw);\n    let mem = storage0.getItem(\"h\", []);\n    mem = mem.filter(it => it != kw);\n    if (mem.length >= 10) {\n        mem = mem.slice(1);\n    }\n    mem.push(kw);\n    storage0.setItem(\"h\", mem);\n    let u;\n    if ($.type(s) == \"string\") {\n        u = s.replace(\"**\", kw);\n    } else {\n        u = s(kw);\n    }\n    if (u == \"hiker://empty\" || u == null) {\n        return u;\n    } else {\n        return \"web://\" + u\n    }\n}\n\nlet keys = Object.keys(engines);\nd.push({\n    title: \"搜索\",\n    url: $.toString((engines, getSearchUrl) => {\n        let keys = Object.keys(engines);\n        let eng = getItem(\"eng\", keys[0]);\n        return getSearchUrl(input, engines[eng].s);\n    }, engines, getSearchUrl),\n    col_type: \"input\",\n    desc: \"请输入关键词\",\n    pic_url: \"\",\n    extra: {\n        onChange: $.toString(() => {\n            putMyVar(\"s\", input);\n        }),\n        defaultValue: getMyVar(\"s\", \"\"),\n    }\n});\nlet mem = storage0.getItem(\"h\", []);\nfor (let i = mem.length - 1; i >= 0; i--) {\n    let it = mem[i];\n    d.push({\n        title: it,\n        url: $(\"#noLoading#\").lazyRule((it) => {\n            putMyVar(\"s\", it);\n            refreshPage();\n            return \"hiker://empty\";\n        }, it),\n        col_type: \"flex_button\",\n    });\n}\nif (mem.length > 0) {\n    d.push({\n        title: \"清空\",\n        url: $(\"#noLoading#\").lazyRule(() => {\n            clearItem(\"h\");\n            refreshPage();\n            return \"hiker://empty\";\n        }),\n        col_type: \"flex_button\",\n    });\n}\n\nfor (let it of keys) {\n    let h = engines[it].h;\n    if (h == null) {\n        h = getHome(engines[it].s);\n    }\n    d.push({\n        title: it,\n        url: $(\"#noLoading#\").lazyRule((eng, s, getSearchUrl, h) => {\n            let kw = getMyVar(\"s\");\n            if (kw == \"\") {\n                return h;\n            }\n            setItem(\"eng\", eng);\n            return getSearchUrl(kw, s);\n        }, it, engines[it].s, getSearchUrl, h),\n        col_type: \"icon_2_round\",\n        desc: \"\",\n        pic_url: engines[it].i\n    });\n}\n\nlet isXj = (typeof(MY_NAME) != 'undefined' && MY_NAME == '嗅觉浏览器');\nlet notify = \"\";\nif (isXj) {\n    notify = \"<br>建议在小程序列表里面长按选择加到主页\";\n}\nd.push({\n    title: `使用提示：<small>${notify}<br>不输入内容直接点击站点将跳转网站首页<br>推荐在浏览器菜单视频嗅探里面开启悬浮嗅探<br>数据来源于对应的网站，软件和规则不提供任何内容！</small>`,\n    col_type: 'rich_text'\n});\n\nlet ad = getItem(\"ad\", \"0\");\nd.push({\n    title: \"““””拦截与净化&nbsp;&nbsp;<small>\" + (ad == \"0\" ? \"展开 ▽\" : \"收起 △\") + \"</small>\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        let ad = getItem(\"ad\", \"0\");\n        setItem(\"ad\", ad == \"0\" ? \"1\" : \"0\");\n        refreshPage(false);\n        return \"hiker://empty\";\n    }),\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nif (ad == \"1\") {\n    d.push({\n        title: '““””<strong>拦截与净化</strong><br><small>该拦截口令可以针对性净化低俗骚扰元素</small>',\n        col_type: 'text_center_1',\n        desc: \"““””<small><br>到设置->广告拦截与订阅->广告拦截订阅->自定义远程->粘贴口令->立即刷新</small>\",\n        extra: {\n            lineVisible: false,\n        },\n        url: \"hiker://empty\"\n    });\n    d.push({\n        title: '复制骚扰拦截净化规则',\n        desc: '',\n        url: `copy://{\"urlV2\": \"http://gh.haikuoshijie.cn/https://github.com/qiusunshine/hiker-rules/blob/master/ad-urls.txt\",\"domBlockRuleUrl\": \"http://gh.haikuoshijie.cn/https://github.com/qiusunshine/hiker-rules/blob/master/ad-rules.txt\"}`,\n        col_type: 'text_center_1'\n    });\n\n    d.push({\n        title: '““””<strong>AdblockPlus订阅</strong><br><small>该订阅可以进一步净化低俗骚扰元素</small>',\n        col_type: 'text_center_1',\n        desc: \"““””<small>到设置->广告拦截与订阅->AdblockPlus订阅->添加订阅地址->粘贴下面复制的链接</small>\",\n        extra: {\n            lineVisible: false\n        },\n        url: \"hiker://empty\"\n    });\n    d.push({\n        title: '复制AdblockPlus订阅',\n        desc: '',\n        url: `copy://https://gitlab.com/wudongdefeng/ownadblock/-/raw/master/ad.txt`,\n        col_type: 'text_center_1'\n    });\n\n}\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://soupian.app/images/icon.png"},{"last_chapter_rule":"","title":"搜狗·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://v.sogou.com","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/jiexi/sougou.js'));SYYJ()","searchFind":"js:eval(fetch('hiker://files/jiexi/sougou.js'));SSYJ()","search_url":"https://v.sogou.com/v?query=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/jiexi/sougou.js'));\nEJ()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 同步更新 = '开启'; \n\nif(同步更新=='开启'){\nlet localHtml = fetch('hiker://files/jiexi/sougou.js');\nlet gitHtml = request('https://gitee.com/zbaolin/hksj/raw/master/ceshi.js');\nif (!localHtml || localHtml != gitHtml) {\n  writeFile(\"hiker://files/jiexi/sougou.js\", gitHtml); }\n\nlet SShtml = fetch(\"hiker://files/tc.html\",{});\nlet SSjs = request(\"https://gitee.com/zbaolin/hksj/raw/master/tc.js\");\nif (!SShtml || SShtml != SSjs) {\n  writeFile(\"hiker://files/tc.html\", SSjs);\n  }\n}","pages":"[]","proxy":"","icon":"https://dlweb.sogoucdn.com/translate/favicon.ico?v=20180424"},{"last_chapter_rule":"","title":"轻合集.app","author":"Joker","version":10107,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:');\nlet types = {}\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nArray.from(new Set(rules.map(e => e.type))).forEach(t => types[t] = t);\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : rules.length)).bold().fontcolor('#12b668'),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '全部' + rules.length,\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types) {\n    if (rules.find((v) => v.type == k)) {\n        let count = rules.filter(it => !k || it.type === k).length;\n        el.push({\n            title: '““””' + (k == typeShow ? (types[k] + count).bold().fontcolor('#12b668') : types[k] + count),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n    }\n}\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n} else rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title,\n            url: urlParam.shift(),\n            class_name: v.class_name,\n            class_url: v.class_url,\n            area_name: v.area_name,\n            area_url: v.area_url,\n            year_name: v.year_name,\n            year_url: v.year_url,\n            sort_name: v.sort_name,\n            sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: {\n                    title: v.title\n                },\n                isIndex: true\n            }\n        }\n    if (newWindow) {\n        Object.assign(d.extra, {\n            newWindow: true,\n            windowId: QING_TITLE + '_' + d.title\n        })\n    }\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'app影视');\nputMyVar('subscription','https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/APP.json');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n          url = getMyVar('remoteUrl');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule(() => {\\n            let url = getMyVar('remoteUrl')\\n            if(url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, /*{\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, */{\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + 'hiker://files/libs/' + md5(url) + '.js',\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = [];\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        try {\\n            data = $.require(\\\"hiker://page/creator\\\");\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(fetch('hiker://files/libs/' + md5(url) + '.js') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            writeFile('hiker://files/libs/' + md5(url) + '.js', JSON.stringify(data));\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(fetch('hiker://files/libs/' + md5(url) + '.js') || '[]')\\n    }\\n    \\n    //data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n        if (readFile('disableCustom')) return data\\n        else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"生成规则集\",\"path\":\"creator\",\"rule\":\"let appjson = $.require('hiker://page/appJson');\\n\\nfunction randomSort3(arr) {\\n    /*arr.sort(function() {\\n        return Math.random() - 0.5;\\n    });*/\\n    return arr;\\n}\\n\\nlet appconts = appjson.data,\\n    rules = [],\\n    types = { \\\"\\\": \\\"全部\\\" };\\nfor (let i = 0; i < appconts.length; i++) {\\n    let applist = randomSort3(appconts[i].list),\\n        apptype = appconts[i].title /* + applist.length*/ ;\\n    types[apptype] = apptype;\\n    if (apptype.includes(\\\"个人收集\\\")) continue;\\n    for (let j = 0; j < applist.length; j++) {\\n        let apptitle = applist[j].title,\\n            appicon = applist[j].img,\\n            appUrl = applist[j].url,\\n            home_url = \\\"\\\",\\n            find_rule = \\\"\\\",\\n            search_url = \\\"\\\",\\n            searchFind = \\\"\\\",\\n            pages = [],\\n            last_chapter_rule = \\\"\\\",\\n            appUa = \\\"\\\";\\n        //处理重名的\\n        let num = 1,\\n            temp = apptitle;\\n        while (rules.some(cur => cur.title == apptitle)) {\\n            num = num + 1;\\n            apptitle = temp + num;\\n        }\\n        //规则链接和搜索链接\\n        if (/神马|TV/.test(apptype)) {\\n            home_url = \\\"hiker://empty##\\\" + appUrl + \\\"?ac=list&page=fypage\\\";\\n            if (/19jx|293ys|zhaikanys|ji\\\\-ding\\\\-he|phoebe|yunbo\\\\.bxin|lanrentk|hetaoys|pxun|139\\\\.155|fkkdy|056158|aixixi|ruoxinew|feifan123|siqitv/.test(appUrl)) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + '?ac=list&page=fypage&zm=**';\\n            } else {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + '?ac=list&page=fypage&wd=**';\\n            }\\n        } else {\\n            if (appUrl.includes(\\\"api.php/app\\\")) {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"index_video?token=\\\";\\n            } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"index_video?token=\\\";\\n            } else {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"/vodPhbAll\\\";\\n            }\\n\\n            if (appUrl.includes('api.php/app')) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + 'search?pg=fypage&token=&text=**';\\n            } else if (appUrl.includes('xgapp')) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + 'search?pg=fypage&text=**';\\n            } else {\\n                if (/iopenyun/.test(appUrl)) {\\n                    search_url = \\\"hiker://empty##\\\" + appUrl + '/list?page=fypage&limit=10&wd=**';\\n                } else {\\n                    search_url = \\\"hiker://empty##\\\" + appUrl + '?page=fypage&limit=10&wd=**';\\n                }\\n            }\\n        }\\n        //需要特殊处理的链接\\n        function changeUrl(url) {\\n            let newUrl = url;\\n            if (url.includes(\\\"omofun\\\")) {\\n                newUrl = url + \\\"&csrf=a%2BIKGLunJCZuad%2BxETLrZuBoqhluFCD0dH86E8IENvBzMfBLa6dB8RzoxxIvvBEMeJzJnUSt51FhlPBd4Kr5yhGXlyNvDkJyNMDgDZ1b%2FsjXAeMtj17XteM8puTY2PQnQwYOyj%2FHUCAVRZkrflsk87YG1VeSwnET8TprDD8t6ug%3D@signature=FED4A092D5BBBE18117A3B558EB6461A92A52CF7\\\";\\n            } else if (url.includes(\\\"xinluan\\\")) {\\n                newUrl = url + \\\"&csrf=SREQAPX8tFEKpV2dLDjLZhKk8IxJfDWhN%2BmksWJ%2FkdRVwgUh%2FQkTDZEoQASaAp7HzUix87T%2BPLkAIw6yH%2B6MrvaqJM9rJ5l2b85IQRbBbW%2BDbSYRO8bmTsKdLYDTVtRHhz5nylRWlGUidxHfVyLO9tZUiBk1Y2Awo%2Fzsa2tH2u8%3D@signature=FBC7088C677D297E6BBBC8584A93372DDE10FD96\\\";\\n            } else if (url.includes(\\\"sxbrd\\\")) {\\n                newUrl = url + \\\"&csrf=r2NDLtpS8Euqh%2F%2F8Y96ycOUOKS9ICzNYzyaw5C2UfEgoDFDHX%2Frqj%2BYcLWQzH5%2BR6moUOlwOAoJREtUa376ud74627UDzNQ1sRGdTD8kb36s1eTMemcn8d0i7WJ6k9ih5IP4Ad7fpa6%2F3Dst1joGncyr716dRHDMfcvrs3S29jI%3D@client_name=55WF55yL5b2x6KeG\\\";\\n            }\\n            return newUrl;\\n        }\\n        //请求UA\\n        if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\") || appUrl.includes(\\\"freekan\\\")) {\\n            appUa = \\\"Dart/2.14 (dart:io)\\\";\\n        } else if (/zsb|fkxs|xays|xcys|szys|dxys|ytys|qnys/.test(appUrl)) {\\n            appUa = \\\"Dart/2.15 (dart:io)\\\";\\n        } else if (appUrl.includes(\\\".vod\\\")) {\\n            appUa = \\\"okhttp/4.1.0\\\";\\n        } else {\\n            appUa = \\\"Dalvik/2.1.0\\\"; //TV\\n        }\\n        //首页规则、分类规则、二级规则和视频解析\\n        if (/神马|TV/.test(apptype)) {\\n            find_rule = \\\"js:\\\" + $.toString(function(appUrl, appUa) {\\n                let items = [];\\n                if (MY_PAGE == 1) {\\n                    try {\\n                        let typeJson = JSON.parse(fetch(appUrl + \\\"?ac=flitter\\\"), { headers: { \\\"User-Agent\\\": appUa } });\\n                        for (let key in typeJson) {\\n                            items.push({\\n                                title: key,\\n                                col_type: \\\"flex_button\\\",\\n                                url: $(\\\"hiker://empty##\\\" + appUrl + \\\"?ac=list&page=fypage&class=\\\" + key).rule((typeJson, appUa) => {\\n                                    addListener(\\\"onClose\\\", \\\"clearVar('filter')\\\");\\n                                    let items = [],\\n                                        keys = {},\\n                                        tykeys = [],\\n                                        filter = {},\\n                                        color = \\\"#FA7298\\\";\\n                                    for (let index in typeJson) {\\n                                        if (typeJson[index].values.length == 1) continue;\\n                                        let key = typeJson[index].field,\\n                                            filterName = \\\"全部\\\" + typeJson[index].name;\\n                                        tykeys.push(key);\\n                                        keys[\\\"f\\\" + key] = \\\"\\\";\\n                                        filter[\\\"f\\\" + key] = [filterName].concat(typeJson[index].values);\\n                                    }\\n                                    if (!getVar(\\\"filter\\\", \\\"\\\")) { putVar(\\\"filter\\\", JSON.stringify(keys)) }\\n                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                    if (MY_PAGE == 1) {\\n                                        for (let item in filter) {\\n                                            for (let index = 0; index < filter[item].length; index++) {\\n                                                items.push({\\n                                                    title: temp[item] == \\\"\\\" ? (index === 0 ? \\\"““””\\\" + filter[item][0].bold().fontcolor(color) : filter[item][index]) : (temp[item] == filter[item][index] ? \\\"““””\\\" + filter[item][index].bold().fontcolor(color) : filter[item][index]),\\n                                                    col_type: \\\"scroll_button\\\",\\n                                                    url: $().lazyRule((des, name) => {\\n                                                        let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                        temp[name] = des.indexOf(\\\"全部\\\") != -1 ? \\\"\\\" : des;\\n                                                        putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                        refreshPage(false);\\n                                                        return \\\"hiker://empty\\\"\\n                                                    }, filter[item][index], item)\\n                                                })\\n                                            }\\n                                            items.push({ col_type: \\\"blank_block\\\" })\\n                                        }\\n                                    }\\n                                    let url = MY_URL.split(\\\"##\\\")[1] + \\\"&\\\" + tykeys.map(cur => cur + \\\"=f\\\" + cur).join(\\\"&\\\");\\n                                    for (let item in temp) {\\n                                        url = url.replace(item, temp[item]);\\n                                    }\\n                                    let rescode = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                                    if (rescode.indexOf('检测中') != -1) {\\n                                        rescode = fetch(url + '&btwaf' + rescode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                                    }\\n                                    let html = JSON.parse(rescode);\\n                                    try {\\n                                        eval(JSON.parse(fetch('hiker://page/tvlistdata')).rule);\\n                                    } catch (e) {\\n                                        log(\\\"视频列表出错:\\\" + e.message);\\n                                    }\\n                                    setResult(items);\\n                                }, typeJson[key], appUa)\\n                            })\\n                        }\\n                    } catch (e) {\\n                        log(\\\"首页分类出错:\\\" + e.message);\\n                    }\\n                }\\n                try {\\n                    let url = MY_URL.split('##')[1],\\n                        html = JSON.parse(fetch(url));\\n                    eval(JSON.parse(fetch('hiker://page/tvlistdata')).rule);\\n                } catch (e) {\\n                    log(\\\"首页推荐出错:\\\" + e.message);\\n                }\\n                setResult(items);\\n            }, appUrl, appUa)\\n            let rule_tvlistdata = $.toString(function() {\\n                let list = html.data;\\n                for (let i = 0; i < list.length; i++) {\\n                    let { title, pic, nextlink, state } = list[i];\\n                    let url = nextlink.startsWith('http') ? nextlink : appUrl + '?ac=detail&ids=' + nextlink;\\n                    items.push({\\n                        title: title,\\n                        pic_url: pic + '@Referer=',\\n                        desc: state,\\n                        col_type: 'movie_3_marquee',\\n                        url: $(\\\"#immersiveTheme#hiker://empty##\\\" + url).rule(() => {\\n                            try {\\n                                eval(JSON.parse(fetch('hiker://page/tvmovlist')).rule);\\n                            } catch (e) {\\n                                log(\\\"影片详情出错:\\\" + e.message);\\n                                setResult([]);\\n                            }\\n                        })\\n                    });\\n                }\\n            });\\n            let rule_tvmovlist = $.toString(function(appUrl, appUa) {\\n                addListener(\\\"onClose\\\", $.toString((url) => {\\n                    clearVar('now');\\n                    clearVar(url);\\n                    clearMyVar('jiexi');\\n                }, MY_URL));\\n                let items = [],\\n                    html = getVar(MY_URL, \\\"\\\");\\n                //domin = MY_URL.split(\\\"##\\\")[1].match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n                if (html == \\\"\\\") {\\n                    html = fetch(MY_URL.split(\\\"##\\\")[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                    putVar(MY_URL, html);\\n                }\\n                html = JSON.parse(html);\\n\\n                //简介\\n                let { title, pubtime, trunk, area, type, director, actor, img_url, intro } = html;\\n                items.push({\\n                    title: title + \\\"(\\\" + pubtime + \\\")\\\" + \\\"\\\\n\\\" + area.join(\\\"/\\\") + \\\"/\\\" + type.join(\\\"/\\\") + \\\"/\\\" + trunk,\\n                    desc: \\\"导演:\\\" + director.join(\\\",\\\") + \\\"\\\\n\\\" + \\\"主演:\\\" + actor.join(\\\",\\\"),\\n                    pic_url: img_url,\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    col_type: 'movie_1_vertical_pic_blur'\\n                }, {\\n                    title: '剧情简介:',\\n                    desc: intro,\\n                    url: $('hiker://empty#noRecordHistory#').rule((desc) => {\\n                        setResult([{\\n                            title: desc,\\n                            col_type: 'long_text'\\n                        }]);\\n                    }, intro),\\n                    col_type: 'text_1',\\n                    extra: { lineVisible: false }\\n                });\\n                //断插\\n                /*let dnen = getMyVar(\\\"dnen\\\", \\\"0\\\");\\n                items.push({\\n                    title: '断插:' + (dnen == '1' ? '““✅””' : '❎'),\\n                    url: $('').lazyRule((dnen) => {\\n                        if (dnen == '1') {\\n                            putMyVar(\\\"dnen\\\", \\\"0\\\");\\n                            refreshPage(false);\\n                            return 'toast://已禁用断插调用!';\\n                        } else {\\n                            putMyVar(\\\"dnen\\\", \\\"1\\\");\\n                            refreshPage(false);\\n                            return 'toast://已开启断插调用!'\\n                        }\\n                    }, dnen),\\n                    col_type: 'text_2'\\n                });\\n                items.push({\\n                    title: '线路配置',\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    //url:\\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#\\\",\\n                    col_type: 'text_2'\\n                });*/\\n                //线路列表\\n                let tabs = Object.keys(html.videolist);\\n                if (getVar(\\\"now\\\", \\\"\\\") == \\\"\\\") { putVar(\\\"now\\\", tabs[0]) }\\n                items.push({\\n                    title: \\\"““↓↑””\\\",\\n                    url: \\\"hiker://empty@lazyRule=.js:putVar('appmtvsort', getVar('appmtvsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功!'\\\",\\n                    col_type: 'scroll_button'\\n                });\\n                for (let i in tabs) {\\n                    items.push({\\n                        title: getVar(\\\"now\\\") == tabs[i] ? \\\"““””\\\" + tabs[i].bold().fontcolor(\\\"#FA7298\\\") : tabs[i],\\n                        url: \\\"hiker://empty@lazyRule=.js:putVar('now','\\\" + tabs[i] + \\\"');refreshPage(false);'toast://切换成功!'\\\",\\n                        col_type: 'scroll_button'\\n                    })\\n                }\\n                items.push({\\n                    title:'当前解析:' + getMyVar('jiexi','默认解析'),\\n                    url: $([\\\"默认解析\\\",\\\"断插解析\\\"],1).select(()=>{\\n                        putMyVar('jiexi',input);\\n                        refreshPage(false);\\n                        return 'toast://已更改解析'\\n                    }),\\n                    col_type: 'text_1',\\n                    extra: { lineVisible: false }\\n                })\\n                //视频列表\\n                let ptab = getVar(\\\"now\\\"),\\n                    list = html.videolist[ptab];\\n                //log('当前线路:' + ptab);\\n                if (getVar('appmtvsort', '1') == '0') {\\n                    list.reverse();\\n                };\\n                for (let j = 0; j < list.length; j++) {\\n                    let srcurl = list[j].url;\\n                    if (/293jx1/.test(srcurl)) {\\n                        srcurl = srcurl.replace('293jx1', 'jx');\\n                    } else if (/8d8q|diliktv|haokanju1|cztv|fit\\\\:8|ppzhu/.test(appUrl)) {\\n                        srcurl = srcurl + '&app=10000&account=272775028&password=qq272775028';\\n                    }\\n                    let title = list[j].title;\\n                    //title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n                    items.push({\\n                        title: title,\\n                        col_type: \\\"text_4\\\",\\n                        url: eval(JSON.parse(fetch(\\\"hiker://page/lazyParse\\\")).rule)\\n                    });\\n                }\\n                setResult(items);\\n            }, appUrl, appUa);\\n            let lazyParse = $.toString(() => {\\n                let vlink = srcurl;\\n                if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                    vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                }\\n                let enDn = getMyVar(\\\"jiexi\\\", \\\"默认解析\\\"),\\n                    test1 = vlink.search(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) != -1,\\n                    test2 = vlink.search(/LT\\\\-|RongXingVR\\\\-|renrenmi\\\\-|xfy\\\\-|suoyo\\\\.cc|fen\\\\.laodi|xueren\\\\-/) != -1;\\n                if ((test1 || test2) && enDn == '断插解析') {\\n                    return $('hiker://empty').lazyRule((vlink) => {\\n                        log(\\\"调用断插解析,视频链接:\\\" + vlink);\\n                        eval(\\\"let config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(vlink);\\n                    }, vlink)\\n                } else {\\n                    return $(\\\"hiker://empty\\\").lazyRule((ptab, srcurl, appUrl) => {\\n                        log(\\\"使用默认解析,视频链接:\\\" + srcurl);\\n                        //动态解析代码开始\\n                        function changeVideoUrl(url) {\\n                            //改变特定地址的Referer\\n                            if (url.includes(\\\"wkfile\\\")) {\\n                                url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n                            } else if (ptab == 'bilibili') {\\n                                url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                            } else if (ptab == 'mgtv') {\\n                                url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                            } else if (url.includes(\\\"ojbk\\\")) {\\n                                url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n                            }\\n                            //返回视频链接\\n                            if (!url.includes(\\\"http\\\")) {\\n                                throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n                            } else {\\n                                if (/\\\\.m3u8/.test(url)) {\\n                                    return cacheM3u8(url);\\n                                } else {\\n                                    return url + '#isVideo=true#';\\n                                }\\n                            }\\n                        }\\n                        try {\\n                            if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(srcurl) && /http/.test(srcurl) && !/\\\\.html/.test(srcurl) && !/(url|v|vid)\\\\=/.test(srcurl)) {\\n                                if (!/fen\\\\.laodi|suoyo\\\\.cc/.test(srcurl)) {\\n                                    log(\\\"检测到资源地址可能是视频链接\\\");\\n                                    return changeVideoUrl(srcurl);\\n                                }\\n                            }\\n                            //----分割线----//\\n                            let scode = JSON.parse(fetch(srcurl, {\\n                                headers: {\\n                                    \\\"User-Agent\\\": MOBILE_UA\\n                                },\\n                                redirect: false,\\n                                withStatusCode: true\\n                            }));\\n                            //返回重定向的链接 \\n                            if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                                let redurl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                                log('重定向:' + redurl);\\n                                if (!/(url|vid|v)\\\\=/.test(redurl)) {\\n                                    return changeVideoUrl(redurl);\\n                                }\\n                                /*else if (/\\\\=http/.test(redurl) && /\\\\.m3u8|\\\\.mp4|\\\\.flv/.test(redurl)) {\\n                                    purl = redurl.substring(redurl.indexOf('=http') + 1);\\n                                }*/\\n                                scode.body = fetch(redurl);\\n                            }\\n                            //开始嗅探\\n                            let html = scode.body;\\n                            if (/404 Not Found|备案后可继续访问/.test(html)) {\\n                                throw new Error(\\\"404了\\\");\\n                            } else if (/\\\\<body/.test(html)) {\\n                                return $([\\\"开始视频嗅探\\\", \\\"打开解析网页\\\", \\\"使用内置解析\\\"], 1, \\\"检测到解析为网页数据\\\").select((ptab, srcurl, appUrl) => {\\n                                    if (input == \\\"开始视频嗅探\\\") {\\n                                        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                                        return x5rule(srcurl, srcurl);\\n                                    } else if (input == \\\"打开解析网页\\\") {\\n                                        return \\\"web://\\\" + srcurl;\\n                                    } else if (input == \\\"使用内置解析\\\") {\\n                                        let vlink = srcurl;\\n                                        if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                                            vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                                        }\\n                                        log(\\\"使用内置解析,视频链接:\\\" + vlink);\\n                                        showLoading(\\\"正在进行解析...\\\");\\n                                        return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                                    }\\n                                }, ptab, srcurl, appUrl)\\n                            } else {\\n                                //log('尝试从json数据获取');\\n                                try {\\n                                    let purl = JSON.parse(html).url;\\n                                    return changeVideoUrl(purl);\\n                                } catch (e) {\\n                                    /*let purl = html.match(/[\\\\'\\\\\\\"]url[\\\\'\\\\\\\"]:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1].replace(/\\\\\\\\/g, '');\\n                                    return changeVideoUrl(purl);*/\\n                                    throw new Error('解析可能加密了');\\n                                }\\n                            }\\n                        } catch (e) {\\n                            log('未能成功获取视频地址:' + e.message);\\n                            let vlink = srcurl;\\n                            if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                                vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                            }\\n                            log(\\\"尝试使用内置解析,视频链接:\\\" + vlink);\\n                            return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                        }\\n                        //动态解析代码结束\\n                    }, ptab, srcurl, appUrl);\\n                }\\n            });\\n            pages.push({\\n                name: \\\"TV列表\\\",\\n                path: \\\"tvlistdata\\\",\\n                rule: rule_tvlistdata\\n            }, {\\n                name: \\\"TV选集\\\",\\n                path: \\\"tvmovlist\\\",\\n                rule: rule_tvmovlist\\n            }, {\\n                name: \\\"视频解析\\\",\\n                path: \\\"lazyParse\\\",\\n                rule: lazyParse\\n            });\\n        } else {\\n            find_rule = \\\"js:\\\" + $.toString(function(changeUrl, appUrl, appUa) {\\n                let items = [];\\n                //获取分类内容\\n                try {\\n                    let typeJson = [];\\n                    if (appUrl.includes(\\\"api.php/app\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"nav?token=\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '&btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).list;\\n                    } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"nav?token=\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '&btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).data;\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"/types\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '?btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).data.list;\\n                    }\\n                    //获取分类列表\\n                    for (let i = 0; i < typeJson.length; i++) {\\n                        //分类视频地址\\n                        let tyurl = \\\"\\\",\\n                            typeArray = Object.keys(typeJson[i].type_extend).filter(cur => [\\\"class\\\", \\\"area\\\", \\\"lang\\\", \\\"year\\\"].includes(cur)),\\n                            typeUrl = typeArray.map(cur => cur + \\\"=f\\\" + cur).join(\\\"&\\\");\\n                        if (appUrl.includes('api.php/app')) {\\n                            tyurl = appUrl + 'video?tid=' + typeJson[i].type_id + '&page=fypage&token=&' + typeUrl;\\n                        } else if (appUrl.includes('xgapp')) {\\n                            tyurl = appUrl + 'video?tid=' + typeJson[i].type_id + '&page=fypage&' + typeUrl;\\n                        } else if (appUrl.includes(\\\".vod\\\")) {\\n                            if (/iopenyun/.test(appUrl)) {\\n                                tyurl = appUrl + '/list?type=' + typeJson[i].type_id + '&page=fypage&by=fby&limit=9&' + typeUrl;\\n                            } else {\\n                                tyurl = appUrl + '?type=' + typeJson[i].type_id + '&page=fypage&by=fby&limit=9&' + typeUrl;\\n                            }\\n                        }\\n                        //构建动态分类\\n                        items.push({\\n                            title: typeJson[i].type_name,\\n                            url: $(\\\"hiker://empty##\\\" + tyurl).rule((appUrl, type_extend, changeUrl, appUa) => {\\n                                addListener(\\\"onClose\\\", \\\"clearVar('filter')\\\");\\n                                let items = [];\\n                                if (MY_PAGE == 1) { //动态分类\\n                                    let keys = {},\\n                                        filter = {},\\n                                        filterNames = { class: \\\"类型\\\", area: \\\"地区\\\", lang: \\\"语言\\\", year: \\\"年份\\\", star: \\\"明星\\\", director: \\\"导演\\\", state: \\\"状态\\\", version: \\\"版本\\\" },\\n                                        defaultFilter = {\\n                                            fclass: [\\\"全部类型\\\", \\\"喜剧\\\", \\\"爱情\\\", \\\"恐怖\\\", \\\"动作\\\", \\\"科幻\\\", \\\"剧情\\\", \\\"战争\\\", \\\"警匪\\\", \\\"犯罪\\\", \\\"动画\\\", \\\"奇幻\\\", \\\"武侠\\\", \\\"冒险\\\", \\\"枪战\\\", \\\"悬疑\\\", \\\"惊悚\\\", \\\"经典\\\", \\\"青春\\\", \\\"文艺\\\", \\\"微电影\\\", \\\"古装\\\", \\\"历史\\\", \\\"运动\\\", \\\"农村\\\", \\\"儿童\\\", \\\"网络电影\\\"],\\n                                            farea: [\\\"全部地区\\\", \\\"内地\\\", \\\"香港\\\", \\\"台湾\\\", \\\"美国\\\", \\\"英国\\\", \\\"法国\\\", \\\"日本\\\", \\\"韩国\\\", \\\"德国\\\", \\\"泰国\\\", \\\"印度\\\", \\\"西班牙\\\", \\\"加拿大\\\", \\\"其他\\\"],\\n                                            fyear: [\\\"全部年份\\\", \\\"2022\\\", \\\"2021\\\", \\\"2020\\\", \\\"2019\\\", \\\"2018\\\", \\\"2017\\\", \\\"2016\\\", \\\"2015\\\", \\\"2014\\\", \\\"2013\\\", \\\"2012\\\", \\\"2011\\\", \\\"2010\\\", \\\"2009\\\", \\\"2008\\\", \\\"2007\\\", \\\"2006\\\", \\\"2005\\\", \\\"2004\\\", \\\"2003\\\", \\\"2002\\\", \\\"2001\\\", \\\"2000\\\"],\\n                                            flang: [\\\"全部语言\\\", \\\"国语\\\", \\\"英语\\\", \\\"粤语\\\", \\\"闽南语\\\", \\\"韩语\\\", \\\"日语\\\", \\\"法语\\\", \\\"德语\\\", \\\"其他\\\"]\\n                                        };\\n                                    for (let key in type_extend) {\\n                                        if (![\\\"class\\\", \\\"area\\\", \\\"lang\\\", \\\"year\\\"].includes(key)) continue;\\n                                        keys[\\\"f\\\" + key] = \\\"\\\";\\n                                        keys[\\\"fby\\\"] = \\\"\\\";\\n                                        let filterName = \\\"全部\\\" + filterNames[key];\\n                                        filter[\\\"f\\\" + key] = [filterName].concat(type_extend[key].split(\\\",\\\"));\\n                                        if (filter[\\\"f\\\" + key].length == 2) {\\n                                            filter[\\\"f\\\" + key] = defaultFilter[\\\"f\\\" + key]\\n                                        }\\n                                    }\\n                                    if (!getVar(\\\"filter\\\", \\\"\\\")) { putVar(\\\"filter\\\", JSON.stringify(keys)) }\\n                                    var temp = JSON.parse(getVar(\\\"filter\\\")),\\n                                        color = \\\"#FA7298\\\";\\n                                    for (let item in filter) {\\n                                        for (let index = 0; index < filter[item].length; index++) {\\n                                            items.push({\\n                                                title: temp[item] == \\\"\\\" ? (index === 0 ? \\\"““””\\\" + filter[item][0].bold().fontcolor(color) : filter[item][index]) : (temp[item] == filter[item][index] ? \\\"““””\\\" + filter[item][index].bold().fontcolor(color) : filter[item][index]),\\n                                                col_type: \\\"scroll_button\\\",\\n                                                url: $().lazyRule((des, name) => {\\n                                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                    temp[name] = des.indexOf(\\\"全部\\\") != -1 ? \\\"\\\" : des;\\n                                                    putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                    refreshPage(false);\\n                                                    return \\\"hiker://empty\\\"\\n                                                }, filter[item][index], item)\\n                                            })\\n                                        }\\n                                        items.push({ col_type: \\\"blank_block\\\" })\\n                                    }\\n                                    let by = { 默认顺序: \\\"\\\", 最新: \\\"time\\\", 最热: \\\"hits\\\", 评分: \\\"score\\\" };\\n                                    if (appUrl.indexOf('api.php/app') == -1 && appUrl.indexOf('xgapp') == -1) {\\n                                        for (let item in by) {\\n                                            items.push({\\n                                                title: temp[\\\"fby\\\"] == by[item] ? \\\"““””\\\" + item.bold().fontcolor(color) : item,\\n                                                col_type: \\\"scroll_button\\\",\\n                                                url: $().lazyRule((des) => {\\n                                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                    temp[\\\"fby\\\"] = des;\\n                                                    putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                    refreshPage(false);\\n                                                    return \\\"hiker://empty\\\"\\n                                                }, by[item])\\n                                            })\\n                                        }\\n                                    }\\n                                } else {\\n                                    var temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                }\\n                                let url = MY_URL.split(\\\"##\\\")[1];\\n                                for (let item in temp) {\\n                                    url = url.replace(item, temp[item]);\\n                                }\\n                                url = changeUrl(url);\\n                                let rescode = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                                if (rescode.indexOf('检测中') != -1) {\\n                                    rescode = fetch(url + '&btwaf' + rescode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                                }\\n                                let html = JSON.parse(rescode);\\n                                try {\\n                                    eval(JSON.parse(fetch('hiker://page/applistdata', {})).rule);\\n                                } catch (e) {\\n                                    log(\\\"视频列表出错:\\\" + e.message);\\n                                }\\n                                setResult(items);\\n                            }, appUrl, typeJson[i].type_extend, changeUrl, appUa),\\n                            col_type: 'flex_button'\\n                        })\\n                    }\\n                } catch (e) {\\n                    log('首页分类出错:' + e.message);\\n                }\\n                //获取推荐视频列表\\n                try {\\n                    let url = MY_URL.split('##')[1];\\n                    url = changeUrl(url);\\n                    let html = request(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                    if (html.indexOf('检测中') != -1) {\\n                        html = fetch(url + '&btwaf' + html.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                    }\\n                    html = JSON.parse(html);\\n                    eval(JSON.parse(fetch('hiker://page/appindexdata')).rule);\\n                } catch (e) {\\n                    log('首页推荐出错:' + e.message);\\n                }\\n                setResult(items);\\n            }, changeUrl, appUrl, appUa)\\n\\n            let rule_applistdata = $.toString(function() {\\n                let list = [];\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else if (appUrl.includes(\\\".vod\\\")) {\\n                    list = html.data.list;\\n                }\\n\\n                for (let i = 0; i < list.length; i++) {\\n                    let { vod_name, vod_pic, vod_id, vod_remarks } = list[i];\\n                    let link = \\\"\\\";\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        link = appUrl + 'video_detail?id=' + vod_id + '&token=';\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        let date = new Date();\\n                        link = appUrl + '/detail?vod_id=' + vod_id + '&rel_limit=10&key=' + (date.getMonth() + 1) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());\\n                    };\\n\\n                    if (/iopenyun/.test(appUrl)) {\\n                        link = appUrl + '/detailID?vod_id=' + vod_id + '&rel_limit=10';\\n                    }\\n\\n                    items.push({\\n                        title: vod_name,\\n                        pic_url: vod_pic + '@Referer=',\\n                        desc: vod_remarks,\\n                        col_type: 'movie_3_marquee',\\n                        url: $(\\\"#immersiveTheme#hiker://empty##\\\" + link).rule(() => {\\n                            try {\\n                                eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                            } catch (e) {\\n                                log(\\\"影片详情出错:\\\" + e.message);\\n                                setResult([]);\\n                            }\\n                        })\\n                    });\\n                }\\n            })\\n            let rule_appindexdata = $.toString(function() {\\n                let list = [];\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else if (appUrl.includes(\\\".vod\\\")) {\\n                    list = html.data.list;\\n                }\\n\\n                for (let i = 0; i < list.length; i++) {\\n                    let lists = [],\\n                        typename = \\\"\\\";\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        lists = list[i].vlist;\\n                        typename = list[i].type_name;\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        lists = list[i].vod_list;\\n                        typename = list[i].vod_type_name;\\n\\n                    }\\n\\n                    items.push({\\n                        title: typename,\\n                        col_type: 'text_1',\\n                        url: \\\"hiker://empty\\\"\\n                    });\\n\\n                    for (let j = 0; j < lists.length; j++) {\\n                        let { vod_name, vod_pic, vod_id, vod_remarks } = lists[j];\\n                        let link = \\\"\\\";\\n                        if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                            link = appUrl + 'video_detail?id=' + vod_id + '&token=&key=';\\n                        } else if (appUrl.includes(\\\".vod\\\")) {\\n                            let date = new Date();\\n                            link = appUrl + '/detail?vod_id=' + vod_id + '&rel_limit=10&key=' + (date.getMonth() + 1) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());\\n                        };\\n\\n                        if (/iopenyun/.test(appUrl)) {\\n                            link = appUrl + '/detailID?vod_id=' + vod_id + '&rel_limit=10';\\n                        }\\n\\n                        items.push({\\n                            title: vod_name,\\n                            pic_url: vod_pic + '@Referer=',\\n                            desc: vod_remarks,\\n                            col_type: 'movie_3_marquee',\\n                            url: $(\\\"#immersiveTheme#hiker://empty##\\\" + link).rule(() => {\\n                                try {\\n                                    eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                                } catch (e) {\\n                                    log(\\\"影片详情出错:\\\" + e.message);\\n                                    setResult([]);\\n                                }\\n                            })\\n                        });\\n                    }\\n                }\\n            })\\n            let rule_appmovlist = $.toString(function(changeUrl, appUrl, appUa) {\\n                addListener(\\\"onClose\\\", $.toString((url) => {\\n                    clearVar('appnow');\\n                    clearVar(url);\\n                    clearMyVar('jiexi');\\n                }, MY_URL));\\n                let items = [],\\n                    html = getVar(MY_URL, \\\"\\\"),\\n                    data = {};\\n                if (html == \\\"\\\") {\\n                    let url = MY_URL.split(\\\"##\\\")[1];\\n                    url = changeUrl(url);\\n                    html = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                    putVar(MY_URL, html);\\n                }\\n                if (appUrl.includes(\\\"xgapp\\\")) {\\n                    data = JSON.parse(html).data.vod_info;\\n                } else {\\n                    data = JSON.parse(html).data;\\n                }\\n\\n                //简介\\n                let { vod_name, vod_pic, vod_content, vod_class, vod_remarks, vod_director, vod_actor, vod_area, vod_lang, vod_year } = data;\\n                items.push({\\n                    title: vod_name + '\\\\n' + vod_class + \\\",\\\" + vod_remarks + \\\"\\\\n\\\" + vod_area + \\\"/\\\" + vod_lang + \\\"/\\\" + vod_year,\\n                    desc: \\\"导演:\\\" + vod_director + \\\"\\\\n主演:\\\" + vod_actor,\\n                    pic_url: vod_pic,\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    col_type: 'movie_1_vertical_pic_blur'\\n                }, {\\n                    title: '剧情简介:',\\n                    desc: vod_content,\\n                    url: $('hiker://empty#noRecordHistory#').rule((desc) => {\\n                        setResult([{\\n                            title: desc,\\n                            col_type: 'long_text'\\n                        }]);\\n                    }, vod_content),\\n                    col_type: 'text_1',\\n                    extra: { lineVisible: false }\\n                });\\n                //断插\\n                /*let dnen = getMyVar(\\\"dnen\\\", \\\"0\\\");\\n                items.push({\\n                    title: '断插:' + (dnen == '1' ? '““✅””' : '❎'),\\n                    url: $('#noLoading#').lazyRule((dnen) => {\\n                        if (dnen == '1') {\\n                            putMyVar(\\\"dnen\\\", \\\"0\\\");\\n                            refreshPage(false);\\n                            return 'toast://已禁用断插调用!';\\n                        } else {\\n                            putMyVar(\\\"dnen\\\", \\\"1\\\");\\n                            refreshPage(false);\\n                            return 'toast://已开启断插调用!'\\n                        }\\n                    }, dnen),\\n                    col_type: 'text_2'\\n                });\\n                items.push({\\n                    title: '线路配置',\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    //url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#\\\",\\n                    col_type: 'text_2'\\n                });*/\\n                //线路列表\\n\\n                let conts = [],\\n                    tabs = [];\\n                if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                    conts = data.vod_url_with_player;\\n                } else {\\n                    conts = data.vod_play_list;\\n                }\\n                if (conts.length < 1) {\\n                    conts = data.vod_play_url.split('$$$');\\n                    tabs = data.vod_play_from.split('$$$');\\n                }\\n                //线路名称\\n                let ptab = \\\"\\\",\\n                    ptabname = \\\"\\\";\\n                if (getVar(\\\"appnow\\\", \\\"\\\") == \\\"\\\") { putVar(\\\"appnow\\\", \\\"0\\\") }\\n                for (let i = 0; i < conts.length; i++) {\\n                    let sptab = \\\"\\\",\\n                        tabname = \\\"\\\";\\n                    if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                        sptab = conts[i].code ? conts[i].code : tabs[i];\\n                        tabname = conts[i].name || sptab;\\n                    } else {\\n                        sptab = conts[i].from ? conts[i].from : tabs[i];\\n                        tabname = conts[i].player_info ? conts[i].player_info.show : sptab;\\n                    }\\n                    items.push({\\n                        title: getVar(\\\"appnow\\\") == i ? \\\"““””\\\" + tabname.bold().fontcolor(\\\"#FA7298\\\") : tabname,\\n                        url: \\\"hiker://empty#noLoading#@lazyRule=.js:putVar('appnow','\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\",\\n                        col_type: 'scroll_button'\\n                    })\\n                    if (getVar(\\\"appnow\\\") == i) {\\n                        ptab = sptab;\\n                        ptabname = tabname;\\n                    }\\n                }\\n                items.push({\\n                    title: \\\"““↓↑””\\\" + ptabname + '-' + ptab,\\n                    url: \\\"hiker://empty@lazyRule=.js:putVar('appmappsort', getVar('appmappsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功!'\\\",\\n                    col_type: 'text_1',\\n                    extra: { lineVisible: false }\\n                });\\n                //链接列表\\n                let list = [],\\n                    index = getVar(\\\"appnow\\\");\\n                if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                    list = conts[index].url.split(\\\"#\\\");\\n                } else {\\n                    list = conts[index].urls ? conts[index].urls : conts[index].url.split(\\\"#\\\");\\n                };\\n                if (getVar('appmappsort', '1') == '0') {\\n                    list.reverse();\\n                }\\n                //解析接口\\n                let jiek = [];\\n                try {\\n                    if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                        jiek.push(conts[index].parse_api || \\\"\\\");\\n                    } else {\\n                        jiek = (conts[index].player_info.parse2 || \\\"\\\").split(\\\",\\\").concat((conts[index].player_info.parse || \\\"\\\").split(\\\",\\\"));\\n                        jiek = jiek.map(cur => cur.replace(\\\"..\\\", \\\".\\\").replace('jsonbs', ''));\\n                    }\\n                } catch (e) {}\\n                jiek = Array.from(new Set(jiek.filter(cur => !!cur)));\\n                jiek.push('断插解析');\\n                \\n                    items.push({\\n                        title:'当前解析:' + getMyVar('jiexi',jiek[0]),\\n                        url: $(jiek,1).select(()=>{\\n                            if(input == '断插解析'){\\n                                putMyVar('dnen','1');\\n                            }\\n                            putMyVar('jiexi', input);\\n                            refreshPage(false);\\n                            return 'toast://已更改解析'\\n                        }),\\n                        col_type: 'text_1',\\n                        extra: { lineVisible: false }\\n                    })\\n                \\n                let jxUrl = getMyVar('jiexi', jiek[0]) || \\\"\\\";\\n                /*if (jxUrl.substring(0, 2) == '\\\\/\\\\/') {\\n                    jxUrl = 'https:' + jxUrl;\\n                }*/\\n                //打印接口\\n                //log('\\\\n当前线路:' + ptab + '\\\\n解析列表:' + $.stringify(jiek));\\n                //视频列表\\n                for (let j = 0; j < list.length; j++) {\\n                    let vlink = \\\"\\\",\\n                        title = \\\"\\\";\\n                    if (list[j].url) {\\n                        vlink = list[j].url.replace(/#456#/g, 'http').replace(/#123#/g, '.').replace(/#789#/g, ':');\\n                        title = list[j].name;\\n                    } else {\\n                        vlink = list[j].split(\\\"$\\\")[1];\\n                        title = list[j].split(\\\"$\\\")[0];\\n                    }\\n                    //title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n                    items.push({\\n                        title: title,\\n                        col_type: \\\"text_4\\\",\\n                        url: eval(JSON.parse(fetch(\\\"hiker://page/lazyParse\\\")).rule)\\n                    });\\n                }\\n                setResult(items);\\n            }, changeUrl, appUrl, appUa);\\n\\n            let lazyParse = $.toString(function() {\\n                let enDn = getMyVar(\\\"dnen\\\", \\\"0\\\"),\\n                    test1 = vlink.search(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) != -1,\\n                    test2 = vlink.search(/LT\\\\-|RongXingVR\\\\-|renrenmi\\\\-|xfy\\\\-|suoyo\\\\.cc|fen\\\\.laodi|xueren\\\\-/) != -1;\\n                if ((test1 || test2) && enDn == '1') {\\n                    return $('hiker://empty').lazyRule((vlink) => {\\n                        log(\\\"\\\\n调用断插解析,视频链接:\\\" + vlink);\\n                        eval(\\\"let config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(vlink);\\n                    }, vlink)\\n                } else {\\n                    return $('hiker://empty').lazyRule((ptab, vlink, jxUrl, appUrl) => {\\n                        log(\\\"\\\\n使用默认解析,视频链接:\\\" + vlink);\\n                        //视频链接处理\\n                        function changeVideoUrl(url) {\\n                            //改变特定地址的Referer\\n                            if (url.includes(\\\"wkfile\\\")) {\\n                                url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n                            } else if (ptab == 'bilibili') {\\n                                url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                            } else if (ptab == 'mgtv') {\\n                                url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                            } else if (url.includes(\\\"ojbk\\\")) {\\n                                url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n                            }\\n                            //返回视频链接\\n                            if (!url.includes(\\\"http\\\")) {\\n                                throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n                            } else {\\n                                if (/\\\\.m3u8/.test(url)) {\\n                                    return cacheM3u8(url);\\n                                } else {\\n                                    return url + '#isVideo=true#';\\n                                }\\n                            }\\n                        }\\n                        //动态解析代码开始\\n                        try {\\n                            //处理视频样式的资源链接\\n                            if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(vlink) && /http/.test(vlink) && !/\\\\.html/.test(vlink)) {\\n                                if (!/fen\\\\.laodi|suoyo\\\\.cc/.test(vlink)) {\\n                                    log(\\\"检测到资源地址可能是视频链接\\\");\\n                                    return changeVideoUrl(vlink);\\n                                }\\n                            }\\n                            //无可用解析直接报错\\n                            if (!jxUrl || /x\\\\-n\\\\.cc/.test(jxUrl)) {\\n                                throw new Error(\\\"无可用解析\\\");\\n                            }\\n                            //使用解析\\n                            log(\\\"使用解析:\\\" + jxUrl);\\n                            let link = jxUrl + vlink,\\n                                scode = JSON.parse(fetch(link, {\\n                                    headers: {\\n                                        \\\"User-Agent\\\": \\\"Dart/2.13 (dart:io)\\\"\\n                                    },\\n                                    redirect: false,\\n                                    withStatusCode: true\\n                                }));\\n                            //返回重定向的链接 \\n                            if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                                let redurl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                                log('重定向:' + redurl);\\n                                if (!/(url|vid|v)\\\\=/.test(redurl)) {\\n                                    return changeVideoUrl(redurl);\\n                                }\\n                                /*else if (/\\\\=http/.test(redurl) && /\\\\.m3u8|\\\\.mp4|\\\\.flv/.test(redurl)) {\\n                                    purl = redurl.substring(redurl.indexOf('=http') + 1);\\n                                }*/\\n                                scode.body = fetch(redurl);\\n                            }\\n                            //开始嗅探\\n                            let html = scode.body;\\n                            if (/404 Not Found|备案后可继续访问/.test(html)) {\\n                                throw new Error(\\\"404了\\\");\\n                            } else if (/\\\\<body/.test(html)) {\\n                                return $([\\\"开始视频嗅探\\\", \\\"打开解析网页\\\", \\\"使用内置解析\\\"], 1, \\\"检测到解析为网页数据\\\").select((link, ptab, vlink, appUrl) => {\\n                                    if (input == \\\"开始视频嗅探\\\") {\\n                                        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                                        return x5rule(link, link);\\n                                    } else if (input == \\\"打开解析网页\\\") {\\n                                        return \\\"web://\\\" + link;\\n                                    } else if (input == \\\"使用内置解析\\\") {\\n                                        log(\\\"使用内置解析\\\");\\n                                        showLoading(\\\"正在进行解析...\\\");\\n                                        return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                                    }\\n                                }, link, ptab, vlink, appUrl);\\n                            } else {\\n                                //log('尝试从json数据获取');\\n                                try {\\n                                    let purl = JSON.parse(html).url;\\n                                    return changeVideoUrl(purl);\\n                                } catch (e) {\\n                                    /*let purl = html.match(/[\\\\'\\\\\\\"]url[\\\\'\\\\\\\"]:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1].replace(/\\\\\\\\/g, '');\\n                                    return changeVideoUrl(purl);*/\\n                                    throw new Error('解析可能加密了');\\n                                }\\n                            }\\n                        } catch (e) {\\n                            log('\\\\n未能成功获取视频地址:' + e.message + \\\"\\\\n尝试使用规则内置解析\\\");\\n                            return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                        }\\n                        //动态解析代码结束\\n                    }, ptab, vlink, jxUrl, appUrl);\\n                }\\n            });\\n            pages.push({\\n                name: \\\"APP分类列表\\\",\\n                path: \\\"applistdata\\\",\\n                rule: rule_applistdata\\n            }, {\\n                name: \\\"APP首页列表\\\",\\n                path: \\\"appindexdata\\\",\\n                rule: rule_appindexdata\\n            }, {\\n                name: \\\"APP选集\\\",\\n                path: \\\"appmovlist\\\",\\n                rule: rule_appmovlist\\n            }, {\\n                name: \\\"视频解析\\\",\\n                path: \\\"lazyParse\\\",\\n                rule: lazyParse\\n            });\\n        }\\n\\n        let myParse = JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule;\\n        pages.push({\\n            name: \\\"内置解析\\\",\\n            path: \\\"myParse\\\",\\n            rule: myParse\\n        })\\n\\n        searchFind = \\\"js:\\\" + $.toString(function(changeUrl, apptype, appUrl, appUa) {\\n            let items = [],\\n                search_url = changeUrl(MY_URL.split('##')[1]),\\n                bhtml = \\\"\\\";\\n\\n            bhtml = fetch(search_url, { headers: { \\\"User-Agent\\\": appUa } });\\n\\n            try {\\n                bhtml = bhtml.startsWith('\\\\r\\\\n') ? bhtml.replace('\\\\r\\\\n', '') : bhtml;\\n            } catch (e) {}\\n\\n            if (/btwaf/.test(bhtml)) {\\n                bhtml = fetch(search_url + '&btwaf' + bhtml.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n            }\\n\\n            let html = JSON.parse(bhtml),\\n                list = [];\\n            if (/神马|TV/.test(apptype)) {\\n                list = html.data;\\n            } else {\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else {\\n                    list = html.data.list;\\n                }\\n            }\\n\\n            for (let i = 0; i < list.length; i++) {\\n                if (/神马|TV/.test(apptype)) {\\n                    var { title, pic, nextlink: url, state: desc } = list[i];\\n                } else {\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        var { vod_name: title, vod_pic: pic, vod_remarks: desc } = list[i],\\n                            url = appUrl + 'video_detail?id=' + list[i].vod_id + '&token=';\\n                    } else {\\n                        var { vod_name: title, vod_pic: pic, vod_remarks: desc } = list[i];\\n                        if (/iopenyun/.test(appUrl)) {\\n                            var url = appUrl + '/detailID?vod_id=' + list[i].vod_id + '&token=';\\n                        } else {\\n                            var url = appUrl + '/detail?vod_id=' + list[i].vod_id + '&token=';\\n                        }\\n                    }\\n                }\\n\\n                items.push({\\n                    title: title,\\n                    pic_url: pic + '@Referer=',\\n                    desc: desc,\\n                    col_type: 'movie_1_vertical_pic',\\n                    url: $(\\\"#immersiveTheme#hiker://empty##\\\" + url).rule((apptype) => {\\n                        if (/神马|TV/.test(apptype)) {\\n                            eval(JSON.parse(fetch('hiker://page/tvmovlist')).rule);\\n                        } else {\\n                            eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                        }\\n                    }, apptype)\\n                });\\n            }\\n\\n            setResult(items);\\n        }, changeUrl, apptype, appUrl, appUa)\\n\\n        last_chapter_rule = \\\"js:\\\" + $.toString(function(apptype, appUrl, appUa) {\\n            let chp = [];\\n            try {\\n                let conts = [],\\n                    html = JSON.parse(fetch(MY_URL.split(\\\"##\\\")[1], { headers: { \\\"User-Agent\\\": appUa } }));\\n                if (/神马|TV/.test(apptype)) {\\n                    conts = Object.keys(html.videolist);\\n                } else if (appUrl.includes(\\\"api.php/app\\\")) {\\n                    conts = html.data.vod_url_with_player;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_play_url.split('$$$');\\n                    }\\n                } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                    conts = html.data.vod_info.vod_url_with_player;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_info.vod_play_url.split('$$$');\\n                    }\\n                } else {\\n                    conts = html.data.vod_play_list;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_play_url.split('$$$');\\n                    }\\n                }\\n\\n                let list = [];\\n                for (let i = 0; i < conts.length; i++) {\\n                    if (/神马|TV/.test(apptype)) {\\n                        list = html.videolist[conts[i]];\\n                    } else if (conts[i].urls) {\\n                        list = conts[i].urls;\\n                    } else if (conts[i].url) {\\n                        list = conts[i].url.split(\\\"#\\\");\\n                    } else {\\n                        list = conts[i].split(\\\"#\\\");\\n                    }\\n                    chp.push(list.length);\\n                }\\n            } catch (e) {}\\n            setResult('更新至:' + (Math.max.apply(Math, chp)));\\n        }, apptype, appUrl, appUa);\\n\\n        rules.push({\\n            title: apptitle,\\n            author: getMyVar('remoteUrl'),\\n            type: apptype,\\n            url: home_url,\\n            find_rule: find_rule,\\n            search_url: search_url,\\n            searchFind: searchFind,\\n            pages: JSON.stringify(pages),\\n            last_chapter_rule: last_chapter_rule,\\n            icon: appicon\\n        });\\n    }\\n}\\n/*$.exports = {\\n    rules: rules,\\n    types: types\\n}*/\\n$.exports = rules;\"},{\"col_type\":\"movie_3\",\"name\":\"内置数据\",\"path\":\"ResCode\",\"rule\":\"{\\n    \\\"data\\\":[\\n        {\\n        \\\"title\\\":\\\"优质\\\",\\n        \\\"list\\\":[\\n            {\\n            \\\"title\\\":\\\"1080p\\\",\\n            \\\"url\\\":\\\"https://1080p.one/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/1080p.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"1231D\\\",\\n            \\\"url\\\":\\\"https://vue.app.yunboys.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/1231D.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"300看世界\\\",\\n            \\\"url\\\":\\\"https://300ys.xyz/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/300看世界.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"4K影院\\\",\\n            \\\"url\\\":\\\"http://1api.4kdytv.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/4K影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"80K影视\\\",\\n            \\\"url\\\":\\\"https://1080p.tv/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/80K影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"CJT影院\\\",\\n            \\\"url\\\":\\\"https://www.cjt521.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/CJT影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"DC影视\\\",\\n            \\\"url\\\":\\\"http://chaorenbb.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/DC影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"F7高清\\\",\\n            \\\"url\\\":\\\"http://bc.haokanju1.cc/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/F7高清.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"HG影视\\\",\\n            \\\"url\\\":\\\"http://hgyx.vip/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/HG影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"l0l影院\\\",\\n            \\\"url\\\":\\\"https://l0l.tv/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/l0l影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱看美剧\\\",\\n            \\\"url\\\":\\\"https://www.uumjw.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱看美剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱酷影视\\\",\\n            \\\"url\\\":\\\"https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱酷影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"菜鸟追剧\\\",\\n            \\\"url\\\":\\\"http://81.71.18.95:5555/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/菜鸟追剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"白嫖影视\\\",\\n            \\\"url\\\":\\\"http://zgjxdtg.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/白嫖影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱看影院\\\",\\n            \\\"url\\\":\\\"http://www.a91.cm/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/通用图标.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"初心影视\\\",\\n            \\\"url\\\":\\\"https://www.18mv.club/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/初心影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"独播社\\\",\\n            \\\"url\\\":\\\"http://35ys.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/独播社.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"叮当影视\\\",\\n            \\\"url\\\":\\\"https://tv.0573wl.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/叮当影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"段友影视\\\",\\n            \\\"url\\\":\\\"http://121.204.249.135:4433/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/段友影视3.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"段友影视\\\",\\n            \\\"url\\\":\\\"https://shangjihuoke.com/api.php/tv.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/段友影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"饭后电影\\\",\\n            \\\"url\\\":\\\"http://summ.vip/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/饭后电影.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"飞捷影视\\\",\\n            \\\"url\\\":\\\"https://www.fj6080.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/飞捷影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"疯狂看\\\",\\n            \\\"url\\\":\\\"http://app.fkkdy.vip/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/疯狂看电影.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"粉象视界\\\",\\n            \\\"url\\\":\\\"http://42.157.129.15:34444/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/粉象视界.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"汇聚库TV\\\",\\n            \\\"url\\\":\\\"https://www.zzclove666.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/汇聚库TV.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"虎猫视频\\\",\\n            \\\"url\\\":\\\"https://humaosp.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/虎猫视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"可米影视\\\",\\n            \\\"url\\\":\\\"http://www.kmys.vip/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/可米影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"康耀影视\\\",\\n            \\\"url\\\":\\\"http://app.ybyyds.cn/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/康耀影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"绿箭影视\\\",\\n            \\\"url\\\":\\\"http://www.69ty.cc/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/绿箭影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"懒猫电影\\\",\\n            \\\"url\\\":\\\"http://www.esellauto.com/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/懒猫电影.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"蜜蜂影视\\\",\\n            \\\"url\\\":\\\"http://app.f8tp.com/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/蜜蜂影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"麻瓜视频\\\",\\n            \\\"url\\\":\\\"http://aliyun.k8aa.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/麻瓜视频1.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"美剧虫\\\",\\n            \\\"url\\\":\\\"https://meijuchong.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/美剧虫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"木子电影\\\",\\n            \\\"url\\\":\\\"http://www.muzidy.top/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/木子电影.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"奈非迷\\\",\\n            \\\"url\\\":\\\"https://app.netflixmi.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/奈非迷影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"南府影视\\\",\\n            \\\"url\\\":\\\"http://iapp.nfuxs.club/dnmb.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/南府影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"暖光影视\\\",\\n            \\\"url\\\":\\\"https://app.bl210.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/暖光影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"念念影视\\\",\\n            \\\"url\\\":\\\"https://998.yuanmajs.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/念念影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"柠柚影视\\\",\\n            \\\"url\\\":\\\"http://nu.e4tv.cn/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/柠柚影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"奇怪视频\\\",\\n            \\\"url\\\":\\\"https://giguai.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/通用图标.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"七零动漫\\\",\\n            \\\"url\\\":\\\"https://cf.70yu.cn/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/七零动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"瑞丰资源\\\",\\n            \\\"url\\\":\\\"https://tv.yjhan.com:4433/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/瑞丰.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"闪光影视\\\",\\n            \\\"url\\\":\\\"http://101.35.128.192/mubai_api.php/m2.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/闪光影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"思乐影视\\\",\\n            \\\"url\\\":\\\"https://www.huandian.top/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/思乐影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"天诚影视\\\",\\n            \\\"url\\\":\\\"http://tcspvip.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/天诚影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"天天影视\\\",\\n            \\\"url\\\":\\\"https://app.daishusc.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/天天影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"温妮影视\\\",\\n            \\\"url\\\":\\\"https://www.wenniys.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/温妮影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小白动漫\\\",\\n            \\\"url\\\":\\\"http://121.62.60.222:20222/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小白动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"星辰视频\\\",\\n            \\\"url\\\":\\\"https://m.hj0999.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/星辰视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小极影视\\\",\\n            \\\"url\\\":\\\"http://app.8d8q.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小极影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"心鸾影视\\\",\\n            \\\"url\\\":\\\"http://zhiyutv.xyz/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/心鸾影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"雪人影视\\\",\\n            \\\"url\\\":\\\"https://zy.qd234.cn/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/雪人影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"益达影院\\\",\\n            \\\"url\\\":\\\"http://luobu.yss6080.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/益达影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"雨果影视\\\",\\n            \\\"url\\\":\\\"http://2.yhys63.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/雨果影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"影视大全\\\",\\n            \\\"url\\\":\\\"http://app.269w.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/影视大全.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"月色影视\\\",\\n            \\\"url\\\":\\\"http://69ty.cc/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/月色影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"优视影视\\\",\\n            \\\"url\\\":\\\"http://cc.ysys.asia/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/优视影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"影阅阁\\\",\\n            \\\"url\\\":\\\"http://221.236.18.12:665/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/影阅阁.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"追剧吧\\\",\\n            \\\"url\\\":\\\"http://zhuiju8.vip/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/追剧吧影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            }\\n        ]\\n        },\\n        {\\n        \\\"title\\\":\\\"普通\\\",\\n        \\\"list\\\":[\\n            {\\n            \\\"title\\\":\\\"51视频\\\",\\n            \\\"url\\\":\\\"http://51shipin.cc/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/51视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"80影视\\\",\\n            \\\"url\\\":\\\"http://www.ccc8.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/80影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"JDODO\\\",\\n            \\\"url\\\":\\\"https://appys.jdodo.xyz/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/JDODO影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"QC影视\\\",\\n            \\\"url\\\":\\\"https://www.qcsvip.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/QC影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"U5影视\\\",\\n            \\\"url\\\":\\\"https://appx.uy07.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/U5影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"XG影视\\\",\\n            \\\"url\\\":\\\"http://cms.xggm.top/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/XG影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"yoyo\\\",\\n            \\\"url\\\":\\\"http://jx.wnvod.net/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/yoyo影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"阿里影视\\\",\\n            \\\"url\\\":\\\"http://aliys.cn:90/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/阿里影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"嗷呜影院\\\",\\n            \\\"url\\\":\\\"http://aowu.pro/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/嗷呜影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱影视\\\",\\n            \\\"url\\\":\\\"https://www.hzlff.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱追剧\\\",\\n            \\\"url\\\":\\\"http://81.71.18.95:520/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱追剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"艾特影视\\\",\\n            \\\"url\\\":\\\"https://www.aitee.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/艾特影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"白菜追剧\\\",\\n            \\\"url\\\":\\\"http://lbapp.huimaojia.com:30119/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/白菜追剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"比邻影视\\\",\\n            \\\"url\\\":\\\"http://0hzy.cn:9990/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/比邻影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"百讯视频\\\",\\n            \\\"url\\\":\\\"https://z.iopenyun.com:99/app_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/百讯视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"菜鸟动漫\\\",\\n            \\\"url\\\":\\\"http://taikong.huangguay.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/菜鸟动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"大头影视\\\",\\n            \\\"url\\\":\\\"http://dy.idsao.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/大头影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"段友影视\\\",\\n            \\\"url\\\":\\\"http://js.66app.me/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/段友影视2.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"豆渣影视\\\",\\n            \\\"url\\\":\\\"http://douzhayss.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/豆渣影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"二九影视\\\",\\n            \\\"url\\\":\\\"https://app.19kp.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/二九影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"风启影视\\\",\\n            \\\"url\\\":\\\"http://ysw.ee/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/风启影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"辉哥影视\\\",\\n            \\\"url\\\":\\\"https://app.y.hgyule8.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/辉哥影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"黄河影视\\\",\\n            \\\"url\\\":\\\"http://i.ledu8.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/黄河影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"火星人\\\",\\n            \\\"url\\\":\\\"https://www.huoxing9.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/火星人影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"晗先森\\\",\\n            \\\"url\\\":\\\"https://hantv.top/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/晗先森影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"盒子影院\\\",\\n            \\\"url\\\":\\\"http://i.nihaohezi.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/盒子影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"筋斗云\\\",\\n            \\\"url\\\":\\\"https://tv.jindcloud.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/筋斗云影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"极光影院\\\",\\n            \\\"url\\\":\\\"http://app.winxz.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/极光影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"聚合视频\\\",\\n            \\\"url\\\":\\\"https://app.jhystv.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/聚合视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"久久影视\\\",\\n            \\\"url\\\":\\\"http://s9t9.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/久久影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"剧迷视频\\\",\\n            \\\"url\\\":\\\"http://pan.hzafw.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/剧迷视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"橘子影视\\\",\\n            \\\"url\\\":\\\"http://jz.juzidy.vip/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/橘子影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"快播吧\\\",\\n            \\\"url\\\":\\\"http://app.hd8.pw/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/快播吧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"看剧吧\\\",\\n            \\\"url\\\":\\\"http://app.ishen520.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/看剧吧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"看看剧\\\",\\n            \\\"url\\\":\\\"https://www.kankanju.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/看看剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"酷酷影视\\\",\\n            \\\"url\\\":\\\"http://www.ccc8.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/酷酷影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"可米影视\\\",\\n            \\\"url\\\":\\\"http://sj.kmys.vip/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/可米影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"绿豆视频\\\",\\n            \\\"url\\\":\\\"https://v.lvdoui.cn/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/绿豆影音.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"蓝光视频\\\",\\n            \\\"url\\\":\\\"http://vip.91iqiyi.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/蓝光视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"林谷影视\\\",\\n            \\\"url\\\":\\\"http://ys.linguyy.xyz/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/林谷影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"冷视TV\\\",\\n            \\\"url\\\":\\\"https://len.tv/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/冷视TV.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"美剧范\\\",\\n            \\\"url\\\":\\\"http://ttzmz.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/美剧范.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"喵乐影视\\\",\\n            \\\"url\\\":\\\"http://miaoleys.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/喵乐影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"名视影\\\",\\n            \\\"url\\\":\\\"http://app.qqccv.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/名视影.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"麻子追剧\\\",\\n            \\\"url\\\":\\\"http://b.2maz.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/麻子追剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"奈飞中文\\\",\\n            \\\"url\\\":\\\"https://www.naifei.org/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/奈飞中文.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"苹果影视\\\",\\n            \\\"url\\\":\\\"https://apple678.xyz/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/苹果影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"皮皮动漫\\\",\\n            \\\"url\\\":\\\"http://dm.muying.me/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/皮皮动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"奇趣影视\\\",\\n            \\\"url\\\":\\\"https://app.qiqu.me/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/奇趣影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"任性看\\\",\\n            \\\"url\\\":\\\"https://renxingkan.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/任性看.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"思奇影视\\\",\\n            \\\"url\\\":\\\"http://app.siqitv.vip/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/思奇影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"三日影院\\\",\\n            \\\"url\\\":\\\"https://www.3ri.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/三日影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"神马影视\\\",\\n            \\\"url\\\":\\\"http://xs.78tv.cc/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/神马影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"视听星球\\\",\\n            \\\"url\\\":\\\"http://zjyapijzys.shynwlkj.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/视听星球.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"土豆TV\\\",\\n            \\\"url\\\":\\\"http://xiuxian.qd234.cn/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/土豆TV.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"淘剧社\\\",\\n            \\\"url\\\":\\\"https://app.shuhai99.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/淘剧社.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"天空影视\\\",\\n            \\\"url\\\":\\\"https://tv.51aizn.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/天空影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"天天视频\\\",\\n            \\\"url\\\":\\\"http://app.qianju.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/天天视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"兔子窝\\\",\\n            \\\"url\\\":\\\"http://cj.huimaojia.com:12345/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/兔子窝.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"我爱跟剧\\\",\\n            \\\"url\\\":\\\"https://www.genmov.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/我爱跟剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"吾爱影视\\\",\\n            \\\"url\\\":\\\"http://app.5lp.net/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/吾爱影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"吾爱影视\\\",\\n            \\\"url\\\":\\\"http://52ysw.xyz/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/吾爱影视1.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"吻痕视频\\\",\\n            \\\"url\\\":\\\"http://www.kissone.cn/ruifenglb_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/吻痕视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"蜗牛动漫\\\",\\n            \\\"url\\\":\\\"http://woniudm.woniu.cyou:20000/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/蜗牛动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"寻常影视\\\",\\n            \\\"url\\\":\\\"http://tv.91ymz.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/寻常影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"熊猫动漫\\\",\\n            \\\"url\\\":\\\"http://dongman.k8aa.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/熊猫动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"熊猫视频\\\",\\n            \\\"url\\\":\\\"http://anegh.com/lvdou_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/熊猫视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"玺娜影视\\\",\\n            \\\"url\\\":\\\"https://pp.wxina.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/玺娜影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小蜻蜓\\\",\\n            \\\"url\\\":\\\"http://3ketv.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小蜻蜓视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"星球视频\\\",\\n            \\\"url\\\":\\\"http://119.29.121.48:8088/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/星球视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"玺心影视\\\",\\n            \\\"url\\\":\\\"https://tv.arbd.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/玺心影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"新享影视\\\",\\n            \\\"url\\\":\\\"https://app.jiagan.cx/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/新享影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"星影相随\\\",\\n            \\\"url\\\":\\\"http://app.rootthree.top/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/星影相随.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小易影视\\\",\\n            \\\"url\\\":\\\"http://xy.irop.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小易影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"云城影院\\\",\\n            \\\"url\\\":\\\"https://ayyf.cn/mubai_api.php/m2.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/云城影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"月儿影视\\\",\\n            \\\"url\\\":\\\"https://yue52.xyz/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/通用图标.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"樱花动漫\\\",\\n            \\\"url\\\":\\\"https://www.dmwu.cc/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/樱花动漫.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"月亮影视\\\",\\n            \\\"url\\\":\\\"http://ys.13tv.top/acj_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/月亮影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"影视大全\\\",\\n            \\\"url\\\":\\\"https://xc.xixi2yy.xyz/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/影视大全HD.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"影视热剧\\\",\\n            \\\"url\\\":\\\"http://lb.26ys.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/影视热剧.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"渔渔影视\\\",\\n            \\\"url\\\":\\\"http://luobo.yugenye.site/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/渔渔影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"优优影院\\\",\\n            \\\"url\\\":\\\"http://xin.jjsvip.cc/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/优优影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"柚子视频\\\",\\n            \\\"url\\\":\\\"http://yz.26ys.cn/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/柚子视频.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"鱼仔影视\\\",\\n            \\\"url\\\":\\\"http://yuzaio.top/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/鱼仔影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"追剧达人\\\",\\n            \\\"url\\\":\\\"https://www.zhuijudaren.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/追剧达人.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"追剧猫\\\",\\n            \\\"url\\\":\\\"http://tv.kmtvb.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/追剧猫1.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"侦探影视\\\",\\n            \\\"url\\\":\\\"http://ys.huangguay.com/mogai_api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/侦探影视.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"猪猪影院\\\",\\n            \\\"url\\\":\\\"http://app.2zdyy.com/api.php/v1.vod\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/猪猪影院.png\\\",\\n            \\\"murl\\\":\\\"q:APP影视\\\"\\n            }\\n        ]\\n        },\\n        {\\n        \\\"title\\\":\\\"IPTV\\\",\\n        \\\"list\\\":[\\n            {\\n            \\\"title\\\":\\\"2号币\\\",\\n            \\\"url\\\":\\\"http://phoebe.cf/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/2号币影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"CV影视\\\",\\n            \\\"url\\\":\\\"http://www.cccvvv.top/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/CV影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"HG影视\\\",\\n            \\\"url\\\":\\\"http://api.hgyx.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/HG影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"傲视影院\\\",\\n            \\\"url\\\":\\\"http://j.zjj.life:88/mv/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/傲视影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"爱西西TV\\\",\\n            \\\"url\\\":\\\"http://tv.aixixi.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱西西TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"白熊影院\\\",\\n            \\\"url\\\":\\\"http://qt.yhzy.xyz/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/白熊影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"刺桐影视\\\",\\n            \\\"url\\\":\\\"http://tv.cttv.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/刺桐影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"尘梓TV\\\",\\n            \\\"url\\\":\\\"http://cztv.vip:83/api.php/chenziystv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/尘梓TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"嘀哩嘀哩\\\",\\n            \\\"url\\\":\\\"https://api.diliktv.xyz/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/嘀哩嘀哩TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"动力影视\\\",\\n            \\\"url\\\":\\\"http://www.love9989.com/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/动力影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"大师兄\\\",\\n            \\\"url\\\":\\\"http://dsxtv.tv.ci/api.php/dsx/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/大师兄影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"二货影视\\\",\\n            \\\"url\\\":\\\"http://d.zjj.life:88/mv/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/二货影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"非凡影院\\\",\\n            \\\"url\\\":\\\"http://cms.feifan12.xyz/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/非凡影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"飞扬TV\\\",\\n            \\\"url\\\":\\\"http://diancj.zhenfy.cn/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/飞扬TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"嘿荼锋\\\",\\n            \\\"url\\\":\\\"http://tv.hfys8.vip/api.php/Sntv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/嘿荼锋.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"黑龙影视\\\",\\n            \\\"url\\\":\\\"http://vip.ji-ding-he.site/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/黑龙影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"河马影院\\\",\\n            \\\"url\\\":\\\"http://1.14.63.101/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/河马影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"聚多影视\\\",\\n            \\\"url\\\":\\\"http://jdyy.weetai.cn/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/聚多影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"久久影院\\\",\\n            \\\"url\\\":\\\"http://l.bhtv.org.cn/mv/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/久久影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"乐酷TV\\\",\\n            \\\"url\\\":\\\"http://150.138.78.177:2021/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/乐酷TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"懒猫TV\\\",\\n            \\\"url\\\":\\\"http://www.esellauto.com/api.php/lh/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/懒猫TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"六维影视\\\",\\n            \\\"url\\\":\\\"http://liuweiiptv.gq:1357/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/六维影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"流星雨\\\",\\n            \\\"url\\\":\\\"http://nn.lxyyy.xyz:8/c/api.php/WAiLaowang/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/流星雨影院.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"冷月TV\\\",\\n            \\\"url\\\":\\\"https://tv.521x5.com/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/冷月TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"荔枝影视\\\",\\n            \\\"url\\\":\\\"http://api.zjys.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/荔枝影视TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"免费看TV\\\",\\n            \\\"url\\\":\\\"http://www.freekan.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/免费看TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"蜜果TV\\\",\\n            \\\"url\\\":\\\"http://vv.miguotv.net/m/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/蜜果TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"米来影视\\\",\\n            \\\"url\\\":\\\"http://42.51.37.161:2346/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/米来影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"米奇TV\\\",\\n            \\\"url\\\":\\\"http://www.s6ep3.top/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/米奇TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"七科影视\\\",\\n            \\\"url\\\":\\\"http://tv.7kfm.cn/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/七科影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"若惜影视\\\",\\n            \\\"url\\\":\\\"http://rxw.ruoxinew.com/api.php/Sntv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/若惜影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"思奇TV\\\",\\n            \\\"url\\\":\\\"http://tv.siqitv.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/思奇TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"双子星\\\",\\n            \\\"url\\\":\\\"http://tv.diyoui.cc/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/双子星.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"山楂影视\\\",\\n            \\\"url\\\":\\\"http://dy6.dcd1.cn/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/山楂影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"天空TV\\\",\\n            \\\"url\\\":\\\"http://tv.tkys.tv/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/天空TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"虾皮视频\\\",\\n            \\\"url\\\":\\\"http://tv.cmt8.xyz/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/虾皮视频.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小极TV\\\",\\n            \\\"url\\\":\\\"http://api.8d8q.com/mmv/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小极TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"小熊猫TV\\\",\\n            \\\"url\\\":\\\"http://tv2.hetaoys.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/小熊猫TV.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            },\\n            {\\n            \\\"title\\\":\\\"紫曦影视\\\",\\n            \\\"url\\\":\\\"http://appys.azx.tools:88/api.php/iptv/vod/\\\",\\n            \\\"img\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/紫曦影视.png\\\",\\n            \\\"murl\\\":\\\"q:TV影视\\\"\\n            }\\n        ]\\n        }\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"获取app列表\",\"path\":\"appJson\",\"rule\":\"let appfile = \\\"\\\";\\ntry {\\n    appfile = fetch(getMyVar(\\\"subscription\\\"));\\n} catch (e) {}\\n\\nlet appjson = {};\\nif (/InMemory/.test(appfile)) {\\n    appjson = JSON.parse(appfile);\\n} else {\\n    appjson = JSON.parse(JSON.parse(fetch(\\\"hiker://page/ResCode\\\", {})).rule);\\n}\\n\\n$.exports = appjson;\"},{\"col_type\":\"movie_3\",\"name\":\"内置数据2\",\"path\":\"myParse\",\"rule\":\"(() => {\\n    function changeVideoUrl(url) {\\n        //改变特定地址的Referer\\n        if (url.includes(\\\"wkfile\\\")) {\\n            url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n        } else if (ptab == 'bilibili') {\\n            url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n        } else if (ptab == 'mgtv') {\\n            url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n        } else if (url.includes(\\\"ojbk\\\")) {\\n            url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n        }\\n        //返回视频链接\\n        if (!url.includes(\\\"http\\\")) {\\n            throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n        } else {\\n            if (/\\\\.m3u8/.test(url)) {\\n                return cacheM3u8(url);\\n            } else {\\n                return url + '#isVideo=true#';\\n            }\\n        }\\n    }\\n    //aes解密\\n    function De(data, token_key, token_iv) {\\n        eval(getCryptoJS());\\n        var key = CryptoJS.enc.Utf8.parse(token_key);\\n        var iv = CryptoJS.enc.Utf8.parse(token_iv);\\n        return CryptoJS.AES.decrypt(data, key, {\\n            iv: iv,\\n            mode: CryptoJS.mode.CBC,\\n            padding: CryptoJS.pad.Pkcs7\\n        }).toString(CryptoJS.enc.Utf8);\\n    };\\n    if (vlink.includes('m3u8.cache.suoyo.cc')) {\\n        let url = JSON.parse(fetch('https://jhpc.manduhu.com/duoduo/api.php', { body: 'url=' + vlink, method: 'POST' })).url;\\n        return changeVideoUrl(De(url, md5('rXjWvXl6'), 'NXbHoWJbpsEOin8b'));\\n    } else if (vlink.includes('ruifenglb')) {\\n        let url = JSON.parse(fetch('http://ts.yjhan.com:8090/api/?key=DSQFgXdmj9xkDyiXdr&url=' + vlink)).url;\\n        return changeVideoUrl(url);\\n        /*let html = fetch('https://tv.yjhan.com:4423/CL4K/?url=' + vlink),\\n            le_token = html.match(/le_token.*=.*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\".*:.*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"A42EAC0C2B408472\\\", le_token));*/\\n    } else if (vlink.includes(\\\"xueren-\\\")) {\\n        let html = fetch('https://diaoyong.qd234.cn/?url=' + vlink),\\n            le_token = html.match(/le_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, 'A42EAC0C2B408473', le_token));\\n    } else if (vlink.includes(\\\"netflixmom-\\\")) {\\n        let html = fetch('https://player.4kya.com/?url=' + vlink, { headers: { referer: 'https://netflix.mom' } }),\\n            le_token = html.match(/le_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, '333180B3EF0ED9D0', le_token));\\n    } else if (ptab.includes('nfuxs')) {\\n        let html = fetch('https://api.xkvideo.design/m3u8.php?url=' + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, 'zsdrf880203ghurd', bt_token));\\n    } else if (/qiyi|youku|qq.com|mgtv|bilibili|ixigua|migu|sohu|pptv|le|1905\\\\.com|fun\\\\.tv/.test(vlink)) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnma.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"LT-\\\")) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnma.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"renrenmi-\\\")) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnma.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"RongXingVR-\\\")) {\\n        let url = JSON.parse(request(\\\"https://vvip.funsline.cn:8866/api/?key=fK6x076k18LU34x02N&url=\\\" + vlink)).url;\\n        return changeVideoUrl(url);\\n    } else if (vlink.includes(\\\"xfy-\\\")) {\\n        let url = JSON.parse(request(\\\"https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url=\\\" + vlink)).url;\\n        return changeVideoUrl(url);\\n    } else if (vlink.includes(\\\"fen.laodi\\\")) {\\n        let html = fetch(\\\"https://play.tkys.tv/laodi.php/?url=\\\" + vlink),\\n            url = html.match(/vurl\\\\s*=\\\\s*'(.*)'/)[1];\\n        return changeVideoUrl(url);\\n    } else {\\n        return vlink;\\n    }\\n})();\"}]","icon":"https://lanmeiguojiang.com/tubiao/q/52.png"},{"title":"1004","author":"舞动的风","version":0,"url":"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/直播1004/直播fyAll.txt","col_type":"long_text","class_name":"央视频道&卫视频道&地方频道&港台频道&综合娱乐&轮播电影&NewTv&嗨曲&4K","class_url":"1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html = getResCode().split('\\n\\n')[0];\nvar txts = html.split('\\n');\n\nfor (var i = 1; i < txts.length; i++) {\n       var list = txts[i].split('#');\n       var line = txts[i].split(',')[0];\r\n   d.push({\n      title: '‘‘'+line+'’’',\n      col_type: 'text_1'\n    });\n   for (var j = 0; j < list.length; j++) {\n      d.push({\n          title: '线路'+(j+1),\n          url: list[j].replace(line,'').replace(/,/g,'')+'#.mp4',\n          col_type: 'text_4'\n       });\r\n    }\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var 直播 = fetch(base64Decode('aHR0cHM6Ly9yYXcuZmFzdGdpdC5vcmcvMTc3MTI0NTg0Ny8xNzcxMjQ1ODQ3LmdpdGh1Yi5pby9tYXN0ZXIvYm8udHh0'),{}).split('$c_end');\n\nfor (var i = 1; i < 直播.length; i++) {\n      writeFile('hiker://files/直播1004/直播' + i + '.txt', 直播[i]);\n}\n\n\n"},{"last_chapter_rule":"","title":"轻合集.回忆","author":"轻合集生成器","version":96,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","titleColor":"#ff13b66a","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=184462840');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\n//log(\\\"start:\\\" + QING_TITLE)\\nlet dataRule = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nlet getRule = $.toString((QING_TITLE, title) => {\\n    //log(\\\"getRule:\\\" + QING_TITLE + \\\"====\\\" + title)\\n    return $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n}, QING_TITLE, RULE.title)\\nRULE = isIndex ? dataRule : Object.assign(dataRule, RULE)\\n//log(dataRule.pageList)\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList || JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\nfunction genRule() {\\n    let _a = Object.assign({}, MY_RULE);\\n    delete _a[\\\"pageList\\\"]\\n    delete _a[\\\"pages\\\"]\\n    return _a\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = genRule()\\n            MY__RULE.params = v.extra || {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule +  ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                let _a = genRule()\\n                _a.detail_find_rule = detailFindRule\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: _a,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: genRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=184462840&s=640"},{"last_chapter_rule":"","title":"注视·Q","author":"发粪涂墙","version":3,"type":"video","url":"http://gaze.run/filter_movielist?mform=fyclass&mcountry=fyarea&tag_arr%5B%5D=fyyear&page=fypage&sort=fysort&album=all&title=;POST;utf-8;{User-Agent@MOBILE_UA&&X-Requested-With@XMLHttpRequest}","col_type":"movie_3","class_name":"全部&电影&电视剧&番剧&国漫","class_url":"all&1&2&bangumi&chinese_cartoon","area_name":"地区&大陆&台湾&香港&韩国&俄罗斯&美国&日本&印度&英国&德国&法国&意大利&泰国&爱沙尼亚&哈萨克斯坦&西班牙&黎巴嫩&巴西&澳大利亚&丹麦&瑞典&以色列&荷兰&伊朗","area_url":"all&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20&21&22&23&24","sort_name":"排序&评分&名称&创建时间&修改时间","year_name":"类型&剧情&动作&喜剧&爱情&科幻&悬疑&惊悚&恐怖&犯罪&音乐&冒险&历史&战争&奇幻&黑帮&文艺&传记&运动&同性&情⁡色","sort_url":"default&grade&name&createtime&updatetime","year_url":"all&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19&20","find_rule":"js:\nsetResult(JSON.parse(getResCode()).mlist.map(\n    data => ({\n        title: data.title,\n        url: 'http://gaze.run/mfiles?id=' + data.id + ';POST;utf-8;{User-Agent@Windows&&X-Requested-With@XMLHttpRequest}',\n        desc: data.definition,\n        img: data.cover_img\n    })\n))","searchFind":"js:\nsetResult(JSON.parse(getResCode()).mlist.map(\n    data => ({\n        title: data.title,\n        url: 'http://gaze.run/mfiles?id=' + data.id + ';POST;utf-8;{User-Agent@Windows&&X-Requested-With@XMLHttpRequest}',\n        desc: data.definition,\n        img: data.cover_img\n    })\n))","search_url":"http://gaze.run/filter_movielist?mform=all&mcountry=all&tag_arr%5B%5D=all&page=fypage&sort=default&album=all&title=**;POST;utf-8;{User-Agent@Windows&&X-Requested-With@XMLHttpRequest}","titleColor":"","group":"1影搜","detail_col_type":"text_4","detail_find_rule":"js:\nsetResult(JSON.parse(getResCode()).list.map(\n    data => ({\n        title: data.name,\n        url: data.src + `@lazyRule=.js:` + $.toString((sub) => {\n                let url;\n                if (input.match(/xiwood|gazes/)) {\n                    url = cacheM3u8(input)\n                } else {\n                    url = input + '#isVideo=true#'\n                }\n\n                if (sub != null && sub.length > 0) {\n\n                    showLoading(\"正在解析字幕地址，请稍候\")\n                    var data = JSON.stringify({\n                        urls: [url],\n                        \n                                                headers: [{\n                                                    Referer: \"http://gaze.run/\"\n                                                }]\n                        \n                    })\n                    //       let ex = \".vtt\"\n                    if (!/\\.ass/.test(sub)) {\n                        var sub = request(sub, {\n                            toHex: true\n                        });\n\n                        eval(getCryptoJS());\n                        let msg = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(sub.slice(16 * 2)));\n                        let key = CryptoJS.enc.Hex.parse(sub.slice(0, 16 * 2));\n                        let jsdec = CryptoJS.AES.decrypt(msg, key, {\n                            iv: key,\n                            mode: CryptoJS.mode.CBC\n                        }).toString(CryptoJS.enc.Hex);\n                        /*\n                                                // 将16进制转化为ArrayBuffer\n                                                let buffer = new Uint8Array(jsdec.match(/[\\da-f]{2}/gi).map(function(h) {\n                                                    return parseInt(h, 16)\n                                                })).buffer;\n                             */\n                        const MAP_HEX = { 0: 0, 1: 1, 2: 2, 3: 3, 4: 4, 5: 5, 6: 6, 7: 7, 8: 8, 9: 9, a: 10, b: 11, c: 12, d: 13, e: 14, f: 15, A: 10, B: 11, C: 12, D: 13, E: 14, F: 15 }; \nfunction fromHex(hexString) { let bytes = new Uint8Array(Math.floor((hexString || \"\").length / 2)); let i; for (i = 0; i < bytes.length; i++) { let a = MAP_HEX[hexString[i * 2]]; let b = MAP_HEX[hexString[i * 2 + 1]]; if (a === undefined || b === undefined) { break; } bytes[i] = (a << 4) | b; } return i === bytes.length ? bytes : bytes.slice(0, i); } \n\n                        let buffer = fromHex(jsdec);\n                        require('https://cdn.staticfile.org/pako/2.0.4/pako.es5.min.js');\n                        //eval(fetch('hiker://files/rules/js/pako-min.js').split('\\n')[0]);\n                        txt = pako.ungzip(buffer, {\n                            to: \"string\"\n                        });\n                        writeFile('hiker://files/subtitle/c.vtt', txt);\n                        uu = 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/subtitle/c.vtt';\n                    } else {\n                        uu = sub\n                    }\n                    let data = JSON.parse(data)\n                    data.subtitle = uu\n                    return JSON.stringify(data)\n\n                }\n                return JSON.stringify({\n                    urls: [url],\n      \n                                        headers: [{\n                                            Referer: \"http://gaze.run/\"\n                                        }]\n                    \n                })\n            },\n            data.subf)\n    })))","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://gaze.run/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"聚搜君Lite","author":"LoyDgIk&道长&永远の明日","version":5,"type":"other","url":"hiker://empty##fypage","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet batchSearch_el = [],\n  batchSearch_page = parseInt(MY_URL.slice(15)),\n  batchSearch_kw = getVar('batchSearch-kw', ''),\n  batchSearch_config = JSON.parse(getVar('batchSearch-config')),\n  batchSearch_start = $.toString((mode, title) => {\n    if (mode == '内置') {\n      putVar('batchSearch-kw', input)\n      refreshPage()\n      return 'hiker://empty'\n    } else return 'hiker://search?s=' + input + '&rule=' + title\n  }, batchSearch_config.searchMode, MY_RULE.title)\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\nif (batchSearch_page == 1) {\n  batchSearch_el.push({\n    title: '搜索',\n    url: batchSearch_reConfig('if(input&&batchSearch_config.history.indexOf(input)==-1)batchSearch_config.history.push(input)') + ';' + batchSearch_start,\n    extra: { defaultValue: batchSearch_kw },\n    col_type: 'input'\n  }, {\n    title: '““””<span style=\"color:#409eff\"><b>策略设置</b></span>',\n    url: 'hiker://empty#策略设置',\n    col_type: 'scroll_button'\n  })\n  Object.keys(batchSearch_config.filters).forEach((v) => batchSearch_el.push({\n    title: (v == batchSearch_config.apply ? '““””<span style=\"color:#12b668\">' : '') + v,\n    url: v == batchSearch_config.apply ? 'hiker://empty' : '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((apply) => { batchSearch_config.apply = apply }, v)),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_el.push({ col_type: 'line_blank' })\n  if (!batchSearch_kw) {\n    batchSearch_el.push({\n      title: '““””<big><b>搜索历史</b></big> &nbsp 🗑',\n      url: 'confirm://要清空搜索历史吗?.js:' + batchSearch_reConfig('batchSearch_config.history=[]'),\n      col_type: 'text_1'\n    })\n    batchSearch_config.history.forEach((v) => {\n      batchSearch_el.push({\n        title: '““””<big>&nbsp &nbsp </big>' + v + '<big> &nbsp &nbsp</big>',\n        url: v + '#noLoading#@lazyRule=.js:' + batchSearch_start,\n        col_type: 'flex_button'\n      })\n    })\n  }\n}\n\nif (batchSearch_kw) {\n  eval(JSON.parse(fetch('hiker://page/searchLoad')).rule)\n  Array.prototype.push.apply(batchSearch_el, batchSearch_load().map((v) => {\n    if (v.content) v.desc += '\\n' + v.content\n    return v\n  }))\n}\n\nsetResult(batchSearch_el)\n//log(batchSearch_el)\n","searchFind":"js:\nlet batchSearch_el = [],\n  [_, batchSearch_page, batchSearch_kw] = MY_URL.split('##'),\n  batchSearch_config = JSON.parse(getVar('batchSearch-config'))\nbatchSearch_page = parseInt(batchSearch_page)\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\neval(JSON.parse(fetch('hiker://page/searchLoad')).rule)\nArray.prototype.push.apply(batchSearch_el, batchSearch_load())\n\nsetResult(batchSearch_el)\n","search_url":"hiker://empty##fypage##**","titleColor":"#148e8e","group":"1影搜","detail_col_type":"icon_2","detail_find_rule":"js:\nlet batchSearch_el = [],\n  batchSearch_config = JSON.parse(getVar('batchSearch-config')),\n  batchSearch_allGroup = JSON.parse(fetch('hiker://home')).map((v) => v.group).filter((v, i, arr) => arr.indexOf(v) == i),\n  batchSearch_anotherMode = { '内置': '原生', '原生': '内置' } [batchSearch_config.searchMode]\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\nbatchSearch_el.push({\n  title: '搜索线程: ' + batchSearch_config.threadCnt,\n  url: 'input://////线程数: 同时搜索的小程序数量.js:' +\n    batchSearch_reConfig('batchSearch_config.threadCnt=parseInt(input)'),\n  img: 'hiker://images/设置'\n}, {\n  title: '超时(毫秒): ' + batchSearch_config.responseTime,\n  url: 'input://////超时毫秒数: 搜索每个小程序时的最大访问时间.js:' +\n    batchSearch_reConfig('batchSearch_config.responseTime=parseInt(input)'),\n  img: 'hiker://images/历史'\n}, {\n  title: '搜索模式: ' + batchSearch_config.searchMode,\n  url: 'confirm://要切换搜索模式为' + batchSearch_anotherMode + '吗?\\n内置模式: 首页同屏显示搜索结果\\n原生模式: 调用视界搜索显示结果.js:' +\n    batchSearch_reConfig($.toString((mode) => { batchSearch_config.searchMode = mode }, batchSearch_anotherMode)),\n  img: 'hiker://images/云备份'\n}, {\n  title: '新增策略',\n  url: 'input://////给新策略起个名字吧.js:' +\n    batchSearch_reConfig('batchSearch_config.filters[input]={group:[],exclude: []}'),\n  img: 'hiker://images/书签'\n}, {\n  title: '““””<b>💾 &nbsp 应用并返回</b>',\n  url: $('#noLoading#').lazyRule(() => (back(true), 'hiker://empty')),\n  col_type: 'text_center_1'\n})\n\nfor (let batchSearch_filtersName in batchSearch_config.filters) {\n  let batchSearch_filtersGroup = batchSearch_config.filters[batchSearch_filtersName].group,\n    batchSearch_filtersExclude = batchSearch_config.filters[batchSearch_filtersName].exclude\n  batchSearch_el.push({ col_type: 'line_blank' }, {\n    title: '““””<b>' + batchSearch_filtersName + '</b> &nbsp 🗑',\n    url: 'confirm://要删除策略【' + batchSearch_filtersName + '】吗?.js:' +\n      batchSearch_reConfig($.toString((name) => { delete batchSearch_config.filters[name] }, batchSearch_filtersName)),\n    col_type: 'text_center_1'\n  }, { col_type: 'big_blank_block' }, { col_type: 'big_blank_block' }, {\n    title: '““””<span style=\"color:#409eff\">[⊗]<b></b></span>',\n    url: 'confirm://要清空策略【' + batchSearch_filtersName + '】包含的分组吗?.js:' +\n      batchSearch_reConfig($.toString((name) => { batchSearch_config.filters[name].group = [] }, batchSearch_filtersName)),\n    col_type: 'scroll_button'\n  }, {\n    title: '““””<span style=\"color:#409eff\">[⊙]<b>分组:</b></span>',\n    url: 'confirm://要全选策略【' + batchSearch_filtersName + '】包含的分组吗?.js:' +\n      batchSearch_reConfig($.toString((name, allGroup) => { batchSearch_config.filters[name].group = allGroup }, batchSearch_filtersName, batchSearch_allGroup)),\n    col_type: 'scroll_button'\n  })\n  let batchSearch_sortedGroup = batchSearch_allGroup.reduce((self, v) => {\n    let i = batchSearch_filtersGroup.indexOf(v)\n    if (i >= 0) self[0].push([i, v])\n    else self[1].push(v)\n    return self\n  }, [\n    [],\n    []\n  ])\n  batchSearch_sortedGroup[0].forEach((v) => batchSearch_el.push({\n    title: '““””<span style=\"color:#12b668\">' + (v[1] || '[无分组]'),\n    url: '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((name, locat) => { batchSearch_config.filters[name].group.splice(locat, 1) }, batchSearch_filtersName, v[0])),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_sortedGroup[1].forEach((v) => batchSearch_el.push({\n    title: v || '[无分组]',\n    url: '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((name, title) => { batchSearch_config.filters[name].group.push(title) }, batchSearch_filtersName, v)),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_el.push({ col_type: 'line' }, { col_type: 'big_blank_block' }, { col_type: 'big_blank_block' }, {\n    title: '““””<span style=\"color:#409eff\">[⊕]<b>排除:</b></span>',\n    url: 'input://////要排除什么小程序?\\n可输入多个，每行一个.js:' +\n      batchSearch_reConfig($.toString((name) => { input.match(/^.*?$/gm).forEach((v) => batchSearch_config.filters[name].exclude.push(v)) }, batchSearch_filtersName)),\n    col_type: 'scroll_button'\n  })\n  batchSearch_filtersExclude.forEach((v, i) => batchSearch_el.push({\n    title: '““””<span style=\"color:#12b668\">' + v,\n    url: 'confirm://要取消排除小程序【' + v + '】吗?.js:' +\n      batchSearch_reConfig($.toString((name, locat) => { batchSearch_config.filters[name].exclude.splice(locat, 1) }, batchSearch_filtersName, i)),\n    col_type: 'scroll_button'\n  }))\n}\n\nsetResult(batchSearch_el)\n","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"// toDo\n// 策略编辑单开页面，更多链接兼容\n// ?二级页面没有预处理\n// fixed\n\n\nlet batchSearch_path = 'hiker://files/rules/BatchSearchConfig.json',\n  batchSearch_config = getVar('batchSearch-config') || fetch(batchSearch_path)\ntry { batchSearch_config = JSON.parse(batchSearch_config) } catch (e) { batchSearch_config = {} }\n\nif (!(batchSearch_config.threadCnt > 0)) batchSearch_config.threadCnt = 6\nif (!(batchSearch_config.responseTime > 0)) batchSearch_config.responseTime = 5000\nif (['内置', '原生'].indexOf(batchSearch_config.searchMode) == -1) batchSearch_config.searchMode = '内置'\nif (!Array.isArray(batchSearch_config.history)) batchSearch_config.history = []\nif (!Object.keys(batchSearch_config.filters || {}).length) batchSearch_config.filters = {\n  '全部': {\n    group: JSON.parse(fetch('hiker://home')).map((v) => v.group).filter((v, i, arr) => arr.indexOf(v) == i),\n    exclude: []\n  }\n}\nif (!(batchSearch_config.apply in batchSearch_config.filters)) batchSearch_config.apply = Object.keys(batchSearch_config.filters)[0]\n\nputVar('batchSearch-config', JSON.stringify(batchSearch_config))\nwriteFile(batchSearch_path, JSON.stringify(batchSearch_config))\n","pages":"[{\"name\":\"设置函数\",\"path\":\"reConfig\",\"rule\":\"function batchSearch_reConfig(code) {\\n  return $.toString((code) => {\\n    let batchSearch_config = JSON.parse(getVar('batchSearch-config'))\\n    new Function('batchSearch_config', code)(batchSearch_config)\\n    putVar('batchSearch-config', JSON.stringify(batchSearch_config))\\n    refreshPage(false)\\n    return 'hiker://empty'\\n  }, code)\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"搜索函数\",\"path\":\"searchLoad\",\"rule\":\"function batchSearch_load() {\\n  try {\\n    function batchSearch_runCode(batchSearch_rule) {\\n      if (batchSearch_rule.indexOf('.js:') >= 0) {\\n        try {\\n          var input = batchSearch_rule.split('.js:')[0]\\n          return eval(batchSearch_rule.split('.js:')[1])\\n        } catch (e) {\\n          return batchSearch_rule\\n        }\\n      } else {\\n        return batchSearch_rule\\n      }\\n    }\\n    // 搜索策略过滤\\n    let batchSearch_filtersGroup = batchSearch_config.filters[batchSearch_config.apply].group,\\n      batchSearch_filtersExclude = batchSearch_config.filters[batchSearch_config.apply].exclude,\\n      batchSearch_homeList = JSON.parse(fetch('hiker://home')).filter((item) =>\\n        item.searchFind && item.title != MY_RULE.title &&\\n        batchSearch_filtersGroup.find((v) => item.group == v) &&\\n        !batchSearch_filtersExclude.find((v) => item.title == v))\\n      .slice((batchSearch_page - 1) * batchSearch_config.threadCnt, batchSearch_page * batchSearch_config.threadCnt)\\n    if (!batchSearch_homeList.length) return []\\n    let batchSearch_res = [],\\n      batchSearch_ruleList = [],\\n      batchSearch_urlList = []\\n    batchSearch_homeList.forEach((item) => {\\n      try {\\n        // 缓存解析规则\\n        batchSearch_ruleList.push({\\n          title: item.title,\\n          searchFind: item.searchFind,\\n          sdetailFind: ['', '*'].indexOf(item.sdetail_find_rule) == -1 ? item.sdetail_find_rule : item.detail_find_rule,\\n          col_type: ['', '*'].indexOf(item.sdetail_find_rule) == -1 ? item.sdetail_col_type : item.detail_col_type,\\n          preRule: item.preRule,\\n          urlParam: (item.search_url.match(/;.*/) || [''])[0],\\n          ua: item.ua\\n        })\\n        // 搜索链接处理\\n        let searchUrl = item.search_url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        searchUrl[0] = searchUrl[0].replace(searchUrl[0].indexOf('%%') >= 0 ? /%%/g : /\\\\*\\\\*/g, encodeStr(batchSearch_kw, searchUrl[2]))\\n          .replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*\\\\d+@)?/g, (_, $1) => parseInt($1 || 0) + 1)\\n        let searchReq = { url: batchSearch_runCode(searchUrl[0]), options: { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: searchUrl[1], timeout: batchSearch_config.responseTime } }\\n        // post方法时转换参数\\n        if (/^post$/i.test(searchReq.options['method'])) {\\n          let [oriUrl, body] = searchReq.url.split('?')\\n          searchReq.url = oriUrl.replace('？？', '?')\\n          if (/^JsonBody=/.test(body)) body = body.slice(9)\\n          searchReq.options['body'] = body\\n        }\\n        if (searchUrl[2]) searchReq.options.headers['Content-Type'] = searchReq.options.headers['Content-Type'].slice(0, 19) + searchUrl[2]\\n        if (searchUrl[3]) searchUrl[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n          let headers = v.split('@')\\n          searchReq.options.headers[headers[0]] = batchSearch_runCode(headers[1])\\n        })\\n        // 添加全局UA\\n        if (!searchReq.options.headers['User-Agent']) {\\n          if (item.ua == 'pc')\\n            searchReq.options.headers['User-Agent'] = PC_UA\\n          else if (item.ua == 'mobile')\\n            searchReq.options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        batchSearch_urlList.push(searchReq)\\n      } catch (e) {\\n        batchSearch_urlList.push({ url: 'hiker://error/' + JSON.stringify(e) })\\n      }\\n    })\\n    // 获取搜索结果\\n    batchFetch(batchSearch_urlList).forEach((batchSearch_searchHtml, batchSearch_searchIndex) => {\\n      let batchSearch_itemRule = batchSearch_ruleList[batchSearch_searchIndex],\\n        batchSearch_itemUrl = batchSearch_urlList[batchSearch_searchIndex]\\n      MY_URL = batchSearch_itemUrl.url\\n      try {\\n        if (!batchSearch_searchHtml) {\\n          if (batchSearch_itemUrl.url.indexOf('hiker://error/') == 0)\\n            throw { message: '链接处理时出错:\\\\n' + JSON.parse(batchSearch_itemUrl.url.slice(14)).message }\\n          else if (batchSearch_itemUrl.url.indexOf('hiker://') != 0) throw { message: '无法访问，未获取到网页源代码' }\\n        }\\n\\n        function batchSearch_urlHandle(url, addRule) {\\n          // 子页面添加rule\\n          if (url.indexOf('hiker://page/') == 0) {\\n            [, url, params, mark] = /^(.*?)(?:\\\\?(.*?))?(#.*?)?$/.exec(url)\\n            return url + '?rule=' + batchSearch_itemRule.title + (params || '') + (mark ? '&' + mark : '')\\n          }\\n          // 添加二级规则\\n          if (addRule && !/@(?:r|lazyR)ule=/.test(url)) {\\n            if (batchSearch_itemRule.sdetailFind) {\\n              if (!/;get|;post/i.test(url))\\n                url += ';get;' + batchSearch_itemUrl.options.headers['Content-Type'].split('charst=')[1] +\\n                ';{' + Object.keys(batchSearch_itemUrl.options.headers)\\n                .filter((v) => v != 'Content-Type')\\n                .map((v) => v + '@' + batchSearch_itemUrl.options.headers[v].replace(/;/g, '；；'))\\n                .join('&&') + '}'\\n              batchSearch_itemRule.urlParam.replace(/^;post/i, ';get')\\n              url += '@rule=' + (batchSearch_itemRule.sdetailFind.indexOf('js:') == 0 ?\\n                batchSearch_itemRule.sdetailFind :\\n                batchSearch_itemRule.sdetailFind.replace('==>', ';' + batchSearch_itemRule.col_type + '==>')\\n              )\\n            } else url = 'web://' + url\\n          }\\n          // 二级页面预处理与错误处理\\n          if (url.indexOf('@rule=js:') > 0) url = url.replace('@rule=js:',\\n            '@rule=js:try{\\\\nbatchSearch_itemRule=' + $.stringify({ title: batchSearch_itemRule.title, col_type: batchSearch_itemRule.col_type }) +\\n            ';' + $.stringify(batchSearch_urlHandle) + ';' + $.stringify(batchSearch_reConfig) + ';' +\\n            $.toString(() => {\\n              fetch = (function(func) {\\n                return function(url, params) {\\n                  return func(batchSearch_urlHandle(url), params)\\n                }\\n              })(fetch)\\n              setResult = (function(func) {\\n                return function(el) {\\n                  if (!Array.isArray(el)) el = el.data\\n                  func(el.map((v) => {\\n                    v.url = v.url && batchSearch_urlHandle(v.url)\\n                    v.col_type = v.col_type || batchSearch_itemRule.col_type\\n                    return v\\n                  }))\\n                }\\n              })(setResult)\\n              setSearchResult = setResult\\n              setHomeResult = setResult\\n            }) + ';') + '\\\\n}catch(e){' + $.toString((title, batchSearch_reConfig) => {\\n            setResult([{\\n              title: '小程序【' + title + '】中，此二级页面不支持或者已失效，错误信息：\\\\n\\\\n' + e.message,\\n              col_type: 'long_text'\\n            }, { col_type: 'line' }, {\\n              title: '““””<span style=\\\"color:#409eff\\\">排除小程序</span>',\\n              url: 'confirm://要排除该小程序吗?.js:' +\\n                batchSearch_reConfig('batchSearch_config.filters[batchSearch_config.apply].exclude.push(\\\"' + title + '\\\")').replace('refreshPage(false)', '') + ';' +\\n                $.toString(() => writeFile('hiker://files/BatchSearchConfig.json', getVar('batchSearch-config'))) +\\n                ';\\\"toast://已排除小程序【' + title + '】\\\"',\\n              col_type: 'text_center_1'\\n            }])\\n          }, batchSearch_itemRule.title, batchSearch_reConfig) + '}'\\n          return url\\n        }\\n        if (batchSearch_itemRule.searchFind.indexOf('js:') == 0) {\\n          // js解析\\n          Array.prototype.push.apply(batchSearch_res, function() {\\n            let batchSearch_result = []\\n\\n            function getUrl() { return MY_URL }\\n            fetch = (function(func) {\\n              return function(url, params) {\\n                return func(batchSearch_urlHandle(url), params)\\n              }\\n            })(fetch)\\n            eval(batchSearch_itemRule.preRule)\\n\\n            function getResCode() { return batchSearch_searchHtml }\\n\\n            function setResult(el) {\\n              if (!Array.isArray(el)) el = el.data\\n              el.forEach((v) => {\\n                v.title = (batchSearch_config.searchMode == '内置' && !/^““|‘‘/.test(v.title) ? '““””' : '') + v.title\\n                v.url = batchSearch_urlHandle(v.url, true)\\n                v.desc = batchSearch_itemRule.title + (v.desc ? ' 🔹 ' + v.desc : '')\\n                v.col_type = 'movie_1_vertical_pic'\\n                batchSearch_result.push(v)\\n              })\\n            }\\n            setSearchResult = setResult\\n            setHomeResult = setResult\\n            eval(batchSearch_itemRule.searchFind.slice(3))\\n            return batchSearch_result\\n          }())\\n        } else {\\n          // 普通解析\\n          let find = batchSearch_itemRule.searchFind.split(';')\\n          parseDomForArray(batchSearch_searchHtml, find[0]).forEach((data) => {\\n            let [title, url, desc, content, img] = find.slice(1).map((v, i) =>\\n                batchSearch_runCode(v == '*' ? '' :\\n                  (i == 1 || i == 4 ? parseDom(data, v) :\\n                    parseDomForHtml(data, v)))),\\n              item = {\\n                title: (batchSearch_config.searchMode == '内置' && !/^““|‘‘/.test(title) ? '““””' : '') + title,\\n                url: batchSearch_urlHandle(url, true),\\n                desc: batchSearch_itemRule.title + (desc ? ' 🔹 ' + desc : ''),\\n                content: content,\\n                img: img,\\n                col_type: 'movie_1_vertical_pic'\\n              }\\n            if (item.title.indexOf(batchSearch_kw) >= 0 || item.desc.indexOf(batchSearch_kw) >= 0) batchSearch_res.push(item)\\n          })\\n        }\\n      } catch (e) {\\n        // 搜索结果错误处理\\n        batchSearch_res.push({\\n          title: '小程序【' + batchSearch_itemRule.title + '】不支持或者已失效，点击查看错误信息',\\n          url: 'confirm://' + e.message + '\\\\n\\\\n是否排除该小程序?.js:' +\\n            batchSearch_reConfig('batchSearch_config.filters[batchSearch_config.apply].exclude.push(\\\"' + batchSearch_itemRule.title + '\\\")').replace('refreshPage(false)', '') + ';' +\\n            $.toString(() => writeFile('hiker://files/BatchSearchConfig.json', getVar('batchSearch-config'))) +\\n            ';\\\"toast://已排除小程序【' + batchSearch_itemRule.title + '】\\\"',\\n          col_type: 'text_center_1'\\n        });\\n      }\\n    })\\n    return batchSearch_res\\n  } catch (e) {\\n    return [{\\n      title: '搜索时出现致命错误，点击查看解决办法\\\\n' + e,\\n      url: $('点击确定后结束搜索，将搜索线程调整为1，\\\\n重新搜索直到再次出现相同的报错，\\\\n然后就可以定位引起致命错误的小程序，手动将其排除').confirm(() => {\\n        putVar('batchSearch-kw', '')\\n        refreshPage()\\n      }),\\n      col_type: 'text_center_1'\\n    }]\\n  }\\n}\\n\"}]","icon":"https://tva2.sinaimg.cn/large/0075auPSly1fqb9hzw4lgj31hc0u0npd.jpg"},{"last_chapter_rule":"","title":"ICY影视","author":"MrFly","version":1,"type":"other","url":"hiker://empty##source=&type=fyclass&page=fypage&limit=10","col_type":"movie_3","class_name":"电影&美剧&韩剧&日剧","class_url":"0&1&3&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/icy/hiker-icy.js'));icyPlayer.homePage();","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/rules/icy/hiker-icy.js'));icyPlayer.listPage();","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var icyjs = fetch('https://gitee.com/fly1397/hiker-icy/raw/master/hiker-icy.js');\nif(!icyjs || !icyjs.includes('icyPlayer')){\n  icyjs = fetch('https://cdn.jsdelivr.net/gh/fly1397/hiker-icy/hiker-icy.js')\n}\nif(!icyjs || !icyjs.includes('icyPlayer')){\n  icyjs = fetch('http://lficy.com:30000/mrfly/hiker-icy/raw/master/hiker-icy.js')\n}\nif(icyjs) {\n writeFile(\"hiker://files/rules/icy/hiker-icy.js\",icyjs);\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"360·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://api.web.360kan.com/v1/filter/list?size=35&pageno=fypage&catid=fyclass","col_type":"movie_3","class_name":"电视剧&电影&动漫","class_url":"2&1&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nJSON.parse(getResCode()).data.movies.forEach(video => {\n    d.push({\n        title: video.title,\n        desc: video.upinfo ? video.upinfo + '集' : (video.doubanscore ? video.doubanscore : video.tag),\n        img: 'https:' + video.cover + '@Referer=https:' + video.cover,\n        url: 'https://api.web.360kan.com/v1/detail?cat=' + MY_RULE.class_url + '&id=' + video.id + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nJSON.parse(getResCode()).data.longData.rows.forEach(video => {\n    d.push({\n        title: video.titleTxt,\n        content: video.description,\n        desc: video.coverInfo.txt || video.coverInfo.quality,\n        img: video.cover + '@Referer=' + video.cover,\n        url: 'https://api.web.360kan.com/v1/detail?cat=' + video.cat_id + '&id=' + video.en_id + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","search_url":"https://api.so.360kan.com/index?force_v=1&kw=**&pageno=fypage&v_ap=1&tab=all","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = JSON.parse(getResCode()).data;\nMY_URL = MY_URL.replace('#immersiveTheme#', '')\nrequire('https://agit.ai/AI957/Hiker/raw/branch/m/v/Route.js');\n\nfunction red(text) {\n    return '““' + text + '””';\n}\n\nd.push({\n    title: html.area.join(' ') + ' ' + html.moviecategory.join(' ').substring(0, 15) + '\\n' + html.actor.join(' ').substring(0, 15) + '\\n' + html.pubdate,\n    desc: html.description.substring(0, 38),\n    img: html.cdncover,\n    url: setupPages(\"设置\"),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar lazy = $('').lazyRule(() => {\n    require('https://agit.ai/AI957/Hiker/raw/branch/m/v/Route.js')\n    return aytmParse(input)\n});\nvar tabs = [];\nvar lists = [];\nvar arts = html.playlink_sites;\n\nfor (var i in arts) {\n\n    if (html.upinfo) {\n        var AnthologyRes = [];\n\n        function getAnthology(t) {\n\n            for (var e = 1; e < t + 1; e += 50) {\n\n                if (e + 50 > t) {\n                    AnthologyRes.push({\n                        url: MY_URL + '&start='.concat(e, \"&end=\").concat(t) + '&site=' + arts[getVar(MY_URL, '0')]\n                    })\n                } else {\n                    AnthologyRes.push({\n                        url: MY_URL + '&start='.concat(e, \"&end=\").concat(e + 49) + '&site=' + arts[getVar(MY_URL, '0')]\n                    })\n                }\n            }\n        }\n\n        getAnthology(parseInt(html.allupinfo[arts[getVar(MY_URL, '0')]]))\n\n        var upinfo = AnthologyRes[0].url\n    } else {\n        var upinfo = MY_URL + '&site=' + arts[getVar(MY_URL, '0')]\n    }\n    tabs.push(arts[i])\n    lists.push(upinfo)\n}\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b>' + '逆序'.fontcolor(\"#FF0000\") + '</b>' : '““””<b>' + '正序'.fontcolor(\"#1aad19\") + '</b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? red(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n\n    var json = JSON.parse(request(lists[index])).data\n    //log(AnthologyRes)\n    if (json.allepidetail && json.playlinksdetail) {\n\n        var list = json.allepidetail[tabs[index]]\n\n        if (AnthologyRes.length >= '2') {\n            AnthologyRes.shift()\n\n            var bflb = bf(AnthologyRes)\n            var str = []\n            bflb.forEach(data => {\n\n                if (JSON.parse(data).data != null) {\n                    str.push(JSON.parse(data).data.allepidetail[tabs[index]])\n                }\n            })\n            for (let i in str) {\n                for (let j in str[i]) {\n                    list.push(str[i][j])\n                }\n            }\n\n        }\n\n        if (getVar('shsort') == '1') {\n            list = list.reverse();\n        }\n        for (var j in list) {\n\n            d.push({\n                title: list[j].playlink_num,\n                url: list[j].url + lazy,\n                col_type: 'text_4'\n            });\n        }\n\n    } else {\n        var list = JSON.parse(request(lists[index])).data.playlinksdetail[tabs[index]]\n        d.push({\n            title: json.pubdate,\n            img: list.cdn_h_cover,\n            desc: json.moviecategory.join(' '),\n            url: list.default_url + lazy,\n            col_type: 'movie_2'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\ntry{\nsetLists(lists, getVar(MY_URL, '0'));\n}catch(e){}\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bkimg.cdn.bcebos.com/pic/caef76094b36acaf2fadca5a70d98d1000e99cc2"},{"firstHeader":"class","last_chapter_rule":"","title":"小收•🅶","author":"","version":0,"url":"https://syjytv.net/show/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&动画电影&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧&大陆综艺&港台综艺&日韩综艺&欧美综艺&国产动漫&日本动漫&欧美动漫","class_url":"2&1&3&4&27&6&7&8&9&10&11&12&13&14&15&16&23&24&25&26&20&21&22","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://syjytv.net/search.html?wd=**","titleColor":"#ff871f78","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n// 模块的间距\nlet line_model = 13;\n// 模块间距类型\nlet line_type_model = 'blank_block';\n\n\n//默认播放地址(需修改)\nvar lazy =  `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`;\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'body&&h1&&Text');//视频标题标签得改\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.myui-content__detail&&p,2&&Text');//得改;取data里面第x个p,或者写成.data&&Text是取整个date\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');//视频封面定位得改\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.nav&&a');//线路名列表得改\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');//播放列表的列表定位得改\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//折叠需要用到的\n   \nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })        \n  }\nd.push({\n            col_type: 'line_blank'\n        })\nfunction setTabs(tabs, vari) {\n        d.push({\n title: \"““””<b>\"+'<span style=\"color: #CC0066\">'+'▶',\n        col_type: 'scroll_button'        \n    })\n    var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n           \n var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换线路成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+\"““””<b>\"+'<span style=\"color: #CC0055\">'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\n function setLists(lists, index) {\n      d.push({\n            col_type: 'line_blank'\n        })\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\nif(lists.length != '')  {\n        var list = lists[index];\n {\n            for (var j = 0; j < list.length; j++) {\nvar title= parseDomForHtml(list[j], 'a&&Text');\nif(title==''){var title='暂无，等待上传'} else{var title=title}\n\n                d.push({\n               title:\"““””\"+'<span style=\"color: #000000\">'+ parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n               \n     url:parseDom(list[j],'a&&href')+lazy,\n                  \n                col_type: list.length >3?'text_5':'text_2'\n                });\n            }\n        }\n        \n        }else{d.push({title:'当前线路暂无集数,请检查选集是否正确',url:'toast://当前线路暂无集数,请检查选集是否正确',col_type: 'text_1'});}    \n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"新片场·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://www.xinpianchang.com/discover/article-0-0-all-all-0-0-hot?page=fypage","col_type":"pic_1_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.top-full'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url+'?page='+page\n}\nvar html = request(true_url)\nlog(true_url)\nrequire('hiker://page/dtfl?rule=模板·Q')\n\nvar list = pdfa(html, 'body&&.transition-shadow')\nfor (var j in list) {\n    var img = pd(list[j], 'img&&src') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.list-remarks&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href')+$('').lazyRule(() => {\n            var html = JSON.parse(pdfh(fetchPC(input), '#__NEXT_DATA__&&Html')).props.pageProps.detail.video.content.progressive\n            return JSON.stringify({\n                urls: html.map(url => \n                    url.https_url\n                ),\n                names: html.map(name => \n                    name.profile\n                )\n            })\n        })\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar list = pdfa(getResCode(), 'body&&.w-full.h-auto')\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.text-white&&Text'),\n        content: pdfh(list[j], '.flex&&Text'),\n        img: pd(list[j], 'img&&src'),\n        url: $(pd(list[j], 'a&&href')).lazyRule(() => {\n            var html = JSON.parse(pdfh(fetchPC(input), '#__NEXT_DATA__&&Html')).props.pageProps.detail.video.content.progressive\n            return JSON.stringify({\n                urls: html.map(url =>\n                    url.https_url\n                ),\n                names: html.map(name =>\n                    name.profile\n                )\n            })\n        })\n    })\n}\nsetResult(d);","search_url":"/search?page=fypage&kw=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://oss-xpc0.xpccdn.com/Upload/edu/2019/09/095d75c392a6a3f.png"},{"last_chapter_rule":"","title":"AuEte''","author":"","version":0,"url":"https://auete.com/fyAll/indexfypage.html[firstPage=https://auete.com/fyAll]","col_type":"movie_3","class_name":"电影&动作片&喜剧片&科幻片&爱情片&剧情片&恐怖片&战争片","class_url":"Movie&Movie/dzp&Movie/xjp&Movie/khp&Movie/aqp&Movie/jqp&Movie/kbp&Movie/zzp","area_name":"电视剧&国剧&网剧&美剧&韩剧&港剧&台剧&日剧&泰剧","area_url":"Tv&Tv/neidi&Tv/wangju&Tv/oumei&Tv/hanju&Tv/tvbgj&Tv/tvbgj&Tv/riju&Tv/yataiju","sort_name":"","year_name":"综艺&动漫&音乐&其他","sort_url":"","year_url":"Zy&Dm&Music&qita","find_rule":".threadlist&&li;.title&&Text;img&&src;.hdtag&&Text;a&&href.js:input+\"#immersiveTheme#\"","searchFind":"body&&.list-unstyled;.text-danger&&Text;a&&href.js:input+\"#immersiveTheme#\";.text-grey&&Text;.text-danger&&Text+.ml-2&&Text;;","search_url":"https://auete.com/search.php?page=fypage&searchword=**","titleColor":"#ff148e8e","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=body&&.card&&script&&Html.js:var base64decode=base64Decode;eval(input);var url=now;if(url.match(/9yun/)){'https://auete.com/api/?url='+url}else{url}`\n\nvar arts = parseDomForArray(html, 'body&&h2');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').match(/』(.*?)\\：/)[1])\n}\nvar conts = parseDomForArray(html, 'body&&#player_list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nd.push({\n    title: parseDomForHtml(html, 'p,7&&Text').replace('影片', '').substring(0, 25) + '\\n' + parseDomForHtml(html, 'p,10&&Text').substring(0, 25),\n\n    desc: parseDomForHtml(html, 'p,6&&Text').substring(0, 30),\n    pic_url: parseDom(html, '.cover&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar desc = parseDomForHtml(html, '.message&&p,-1&&Text').replace('[收起部分]', '').replace('　', '');\nd.push({\n    title: '““ㅤ简介：””<font color=\"#ff148e8e\">' + desc.substr(0, 37) + '...</font><font color=\"red\">查看详情</font>',\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"预告片•Q","author":"发粪涂墙","version":0,"url":"https://www.yugaopian.cn/movlist/fyarea_fyclass_fyyear__fypage","col_type":"movie_3","class_name":"全部&剧情&喜剧&惊悚&爱情&动作&犯罪&冒险&悬疑&奇幻&科幻&恐怖&家庭&动画&纪录片&历史&传记&战争&同性&音乐&歌舞&西部&灾难&武侠&情⁡色","class_url":"&剧情&喜剧&惊悚&爱情&动作&犯罪&冒险&悬疑&奇幻&科幻&恐怖&家庭&动画&纪录片&历史&传记&战争&同性&音乐&歌舞&西部&灾难&武侠&情⁡色","area_name":"全部&美国&中国大陆&英国&法国&香港&台湾&日本&韩国&泰国&德国&加拿大&澳大利亚&西班牙&意大利&印度&比利时&俄罗斯&葡萄牙","area_url":"&美国&中国大陆&英国&法国&香港&台湾&日本&韩国&泰国&德国&加拿大&澳大利亚&西班牙&意大利&印度&比利时&俄罗斯&葡萄牙","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008","find_rule":".movlist,1&&li;.item-title&&Text;img&&src;.item-pubtime&&Text;a&&href.js:'http://m.yugaopian.cn/?view=movie&id='+input.replace('/movie/','')","searchFind":".movlist&&li;h2&&Text;a&&href;p&&Text;*;img&&src","search_url":"http://m.yugaopian.cn/?view=list&listtype=movlist&page=fypage&keyword=**","titleColor":"#003472","group":"1影搜","detail_col_type":"pic_1","detail_find_rule":"js:\nvar res = {};\nvar result = [];\nvar html = getResCode();\nresult.push({\n    title: parseDomForHtml(html, \".movie-info&&p&&Text\"),\n    pic_url: parseDom(html, \".movie-info&&img&&src\"),\n    url: MY_URL,\n    desc: parseDomForHtml(html, \".player-detail&&p&&Text\"),\n});\n\n//var videoListHtml = parseDom(html, \".videolist-wrapper&&Html\");\nvar tabs = parseDomForArray(html, '.videolist-wrapper&&h2');\nvar conts = parseDomForArray(html, '.videolist-wrapper&&ul');\nfor(var i = 0; i < tabs.length; i++) {\n    result.push({\n        title: parseDomForHtml(tabs[i], \"h2&&Text\"),\n        col_type: \"text_1\"\n    });\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    for(var j = 0; j < list.length; j++) {\n        result.push({\n            title: parseDomForHtml(list[j], \"li&&Text\"),\n            url: parseDom(list[j].replace('./?','/?'),'li&&a&&href')+`@lazyRule=textarea&&Html.js:input.match(/src=\"(.*?)\"/)[1]`,\n            col_type: \"text_2\"\n        });\n    }\n}\nres.data = result;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"唯爱痞","author":"sm`回忆","version":1,"url":"http://www.vipys5.com/sx/fyclass/by/fysort/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":".stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input +\"#immersiveTheme#\"","searchFind":".stui-vodlist__media&&li;a&&title;a&&href.js:input +\"#immersiveTheme#\";.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"http://www.vipys5.com/search.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n\ntry{\nvar des_title = parseDomForHtml(html, 'body&&.stui-pannel&&h1&&Text');//ok\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');//ok\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\ntry{\nvar des_desc = parseDomForHtml(html,'body&&.stui-content__detail&&p,4&&Text');\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\nvar arts = parseDomForArray(html,'body&&.playlist-tab&&li');//线路列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');//播放列表\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))   //线路名\n}\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))    //' 列表名改'ul&&li'\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下！\n//不需要就不要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"炎魔影视","author":"sm`回忆","version":1,"url":"https://www.ymhslf.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&香港剧&韩剧&日剧&美剧&台湾剧&海外剧","sort_url":"","year_url":"13&14&21&15&16&20&22","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.ymhslf.com/vodsearch/-------------.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'p,5&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.nav-tabs&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"title":"八哥","author":"sm`回忆","version":0,"url":"https://www.ttspt.com/tv/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&记录片","class_url":"dianying&lianxuju&zongyi&dongman&jilupian","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju&haiwaiju","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.ttspt.com/vodsearch.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=unescape(base64Decode(player_aaaa.url));if(url.indexOf('html')>-1){eval(fetch('hiker://files/rules/js/Messy-parsing.js'));player(url)}else if(url.indexOf('alizy')>-1){eval(fetch('hiker://files/rules/js/Messy-parsing.js'));player(url)}else if (url.indexOf('share')>-1){url.split('/share')[0]+fetch(url,{}).match(/main = \"(.*?)\"/)[1]}else{url}`\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'body&&.stui-content__thumb&&a&&title');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'body&&.detail-sketch&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.nav-tabs&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n     d.push({\n title: \"““””<b>\"+'<span style=\"color: #CC0066\">'+'🌳'+'~⚛~⚛~线路~⚛~⚛~'+'🌳',\n        col_type: 'text_center_1'\n    })\n    var title = '';\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"hiker://empty@lazyRule=.js:putVar('\"+vari+\"', '\"+i+\"');refreshPage();'toast://切换成功！'\";\n\n        d.push({\n           \n            title: (getVar(vari, '0')==i?'🚩':'')+tabs[i] ,\n            \n            url: url,\n            col_type: tabs.length>2?'text_3' : 'text_2'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'scroll_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n\ntitle: '‘‘’’<font color=\"#003472\">选集</font></small>'+'‘‘’’<font color=\"#0aa344\"></font></small>',\n        \n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"title":"lol电影网","author":"","version":0,"url":"https://www.lolhd.com/vodshow/fyclass--fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&||&国产剧&香港剧&台湾剧&韩国剧&日本剧&欧美剧&泰国剧&海外剧","class_url":"dianying&lianxuju&zongyi&dongman&||&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&||&guochanju&xianggangju&taiwanju&hanguoju&ribenju&oumeiju&taiguoju&haiwaiju","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-text-white&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.lolhd.com/so/----------fypage---.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\nvar arts = parseDomForArray(html,'.fed-tabs-item&&ul&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\nd.push({\n title: parseDomForHtml(html, '.fed-deta-content&&li,2&&Text')+'\\n'+parseDomForHtml(html, '.fed-deta-content&&li,3&&Text')+'\\n'+parseDomForHtml(html, '.fed-deta-content&&li,4&&Text'),\n desc: parseDomForHtml(html, '.fed-deta-content&&li&&Text'),\n pic_url: parseDom(html, '.fed-list-pics&&data-original'),\n url: MY_URL,\n col_type: 'movie_1_vertical_pic'\n});\n\nvar des_desc = parseDomForHtml(html, '.fed-deta-content&&li,-1&&Text');\n d.push({\n          title: des_desc.length > 26 ? des_desc.replace(des_desc, des_desc.substring(0, 26) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n          url: 'hiker://empty#' + parseDomForHtml(html,'body&&.fed-col-xs12&&Html').split('/h1>')[1].replace(/;/g,'').replace(/<li/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,     \n          col_type: 'text_1'\n});\n\nvar lazy = '@lazyRule=iframe&&data-play.js:url = base64Decode(input.slice(3))';\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'text_center_1'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: (getVar(vari, '0') == i ? '▶️' : '') + tabs[i],\n                url: url,\n                col_type: 'text_2'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n           title: '‘‘’’<font color=\"#0aa344\">选集</font></small>',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"title":"55影视网","author":"sm`回忆","version":0,"url":"https://m.55yingshi.com/tvshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&微电影&纪录片","class_url":"1&2&3&4&28&29","area_name":"犯罪片&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&电影合集","area_url":"31&6&7&8&9&10&11&12&30","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"13&14&15&16&27","find_rule":"body&&.v-pic;img&&alt;img&&data-src;.v-tips&&Text;a&&href","searchFind":"body&&.item_pic;img&&alt;a&&href;.v-tips&&Text;;img&&src","search_url":"https://m.55yingshi.com/search/----------fypage---.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy='@lazyRule=.iplays&&script&&Html.js:eval(input);player_data.url'\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.infor_intro&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'body&&.v-pic&&img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.play_source_tab&&a');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play_num_list');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"title":"蚂蚁","author":"","version":0,"url":"https://www.anthh.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片","area_url":"6&7&8&9&10&11&12&21","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"13&14&15&16&23","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.anthh.com/vodsearch/page/fypage.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\nvar arts = parseDomForArray(html,'.nav&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n\ttitle: parseDomForHtml(html, '.data&&Text').replace('分类|','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.data,2&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,1&&Text').substring(0, 15),\n\tdesc:parseDomForHtml(html,'.data,1&&Text').substring(0, 16),\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: MY_URL,\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nvar des_desc = parseDomForHtml(html, '.data.hidden-xs&&Text');\n d.push({\n          title: des_desc.length > 46 ? des_desc.replace(des_desc, des_desc.substring(0, 46) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n         url: 'hiker://empty#' + parseDomForHtml(html,'body&&.myui-content__detail&&Html').split('/h1>')[1].replace(/;/g,'').replace(/<p/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,      \n          col_type: 'text_1'\n});\n\nvar lazy =  `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));var url  = player_data.url;url.indexOf('fangao')!=-1?fetch('https://www.rrzyw.cc/rrm3u8/index.php?url='+url,{}).match(/url: '(.*?)'/)[1]:url`;\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'text_center_1'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: (getVar(vari, '0') == i ? '▶️' : '') + tabs[i],\n                url: url,\n                col_type: 'text_2'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"last_chapter_rule":"","title":"凛冬又至","author":"sm`回忆","version":0,"url":"https://www.ldyz.live/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&美剧&日剧&韩剧&泰剧&动漫","class_url":"1&20&24&21&23&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.ldyz.live/vodsearch/----------fypage---.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n//默认播放地址(需修改)\nvar lazy='@lazyRule=.myui-player__video&&script&&Html.js:eval(input);;player_aaaa.url;';\n\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');//ok\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');//ok\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\ntry{\nvar des_desc = parseDomForHtml(html,'.desc&&Text');\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\nvar arts = parseDomForArray(html,'.nav&&li');//线路列表\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');//播放列表\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))   //线路名\n}\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))    //' 列表名改'ul&&li'\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下！\n//不需要就不要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n//折叠需要用到的\n\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"firstHeader":"class","last_chapter_rule":"","title":"思乐","author":"","version":0,"url":"https://www.4ltv.com/show/fyAll------fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"2&1&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".module-list&&.module-item;.module-item-title&&Text;img&&data-src;.module-item-text&&Text;.module-item-title&&href","searchFind":".module-items&&.module-search-item;h3&&Text;h3&&a&&href;.video-info-aux&&Text;body&&.video-info-item,2&&Text;img&&data-src","search_url":"https://www.4ltv.com/search/s.html?wd=**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\nvar arts = parseDomForArray(html,'.module-tab&&.tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\nvar conts = parseDomForArray(html, 'body&&.scroll-box');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.scroll-content&&a'))\n}\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: parseDomForHtml(html, '.video-info-items,-1&&Text'),\n    pic_url: parseDom(html, '.module-item-pic&&img&&data-src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'flex_button'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'flex_button'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"活力","author":"","version":0,"url":"https://www.huolikan.com/ls/fyAll------addtime-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&记录片","class_url":"1&2&4&3&46","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+\"#immersiveTheme#\"","searchFind":".stui-vodlist&&li;h4&&Text;a&&href.js:input+\"#immersiveTheme#\";.pic-text&&Text;;.lazyload&&data-original","search_url":"https://www.huolikan.com/s/wd-**-fypage.html","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar Color=\"#f13b66a\";\nfunction getHead(title){\n    return '‘‘’’<strong><font color=\"'+Color+'\">'+title+'</front></strong>';\n}\n\n\n//二级模板by发粪涂墙\nvar arts = parseDomForArray(html,'body&&.stui-pannel:has(.stui-content__playlist)');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.data,1&&Text').replace('类型：','')+'\\n'+parseDomForHtml(html, '.data&&Text').substring(0, 15),\n    desc: parseDomForHtml(html, '.data,3&&Text').substring(0, 21),\n    pic_url: parseDom(html, '.ff-img&&data-original'),\n    url:getUrl(),\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar desc = parseDomForHtml(html, '.stui-content__desc&&Text').replace('[收起部分]','').replace('　',''); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 30) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   }); \n\n//var lazy =\n`@lazyRule=.js:decodeURIComponent(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)`\n\n//var lazy=\n'@lazyRule=.stui-player__video&&script&&Html.js:eval(input);decodeURIComponent(unescape(cms_player))'\n\nvar lazy =`@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html'));var jsurl=cms_player.url;if(jsurl.match(/youku|qq.com|qiyi/)){request('https://www.huolikan.com/index.php?g='+jsurl).match(/urls = \"(.*?)\"/)[1]}else if(jsurl.match(/ixigua|mgtv|migu|bili|kankan|fun.tv|tudou|le.com|pptv|cctv|sohu/)){request('https://www.huolikan.com/player/?url='+jsurl,{headers:{\"Referer\":\"https://www.huolikan.com\"}}).match(/\"url\": \"(.*?)\"/)[1]+\"#isVideo=true#\"}else{jsurl}`\n\nfunction setTabs(tabs, vari) {\n        for (var i in tabs) {\n                var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n                d.push({\n                    title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n                    url: url,\n                    col_type: 'flex_button'\n                })\n            }\n            d.push({\n                col_type: 'line_blank'\n            })\n}\n\n    function setLists(lists, index) {\n        d.push({\n            title: '““””<b><span style=\"color:#003472\">'+'选集'+'</span></b>',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n          try{  for (var j = list.length - 1; j >= 0; j--) {             \nd.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n});\n    }\n            \n        } else {\n         try{   for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n});\n    }\n            \n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));chapter();","title":"资源网采集.xyq","author":"香雅情","version":3,"type":"all","url":"hiker://files/rules/xyq/ZYWCJ.txt","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywhm();","searchFind":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywsea();","search_url":"hiker://$$$?wd=**&pg=1&ac=list$$$fypage","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\r\neval(fetch('hiker://files/rules/xyq/zywcj.js',{}));\nTWEJ();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywerj();","ua":"mobile","preRule":"function uprulefile() {\n    try {\n        var ruletxt = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/ZYWCJ.txt', {});\n        var rulejs = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zywcj.js', {});\n    } catch (e) {\n        rulejs = \"\";\n        ruletxt = \"\";\n    }\n    if (rulejs.search(/lazyRule/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/zywcj.js\", rulejs);\n        writeFile(\"hiker://files/rules/xyq/ZYWCJ.txt\", ruletxt);\n    } else {\n        setError('规则文件获取失败，可能网络有问题。')\n    };\n};\n\n//检测是否有规则与JS文件\nif (fileExist(\"hiker://files/rules/xyq/zywcj.js\") && fileExist(\"hiker://files/rules/xyq/ZYWCJ.txt\")) {\n    //执行预处理\n    var lac = fetch('hiker://files/rules/xyq/zywcj.js');\n    if (lac.search(/lazyRule/) != -1) {\n        eval(lac);\n        if (filter(base64Decode('VklQ'))) {\n            zywpre();\n        } else {\n            uprulefile();\n        };\n    } else {\n        //如果本地文件不对将尝试自修复\n        uprulefile();\n        eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n        zywpre();\n    };\n} else {\n    uprulefile();\n    //执行预处理\n    eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n    zywpre();\n};","pages":"[]","proxy":"","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zywcj.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"麻花","author":"","version":0,"url":"https://kanjudy.com/vodshow/dianying/page/%%fypage%%.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nlet d = [];\n//自定义颜色\n  const Color=\"#40E0D0\";\n  \n  const a=MY_URL.replace(/%%/g, \"\");\n  let true_url = getVar(\"nanfu.url\", a)\n  const page=MY_URL.match(/%%(.*)%%/)[1];\n\n//setError(page);\n\n//翻页 需要根据实际替换\n  true_url = true_url.replace('---/', +page+'---/')  \n  const html = fetch(true_url)\n  const empty = \"hiker://empty\"\n//获取列表 \n  const categories = parseDomForArray(html, 'body&&.library-box');\n\n//setError(true_url);\n\n  let init_cate = []\n\n  for (let i = 0; i < 20; i ++) {\n    init_cate.push(\"0\")\n  }\n\n  // 取缓存\n  const fold = getVar(\"nanfu.fold\", \"0\")\n  const cate_temp_json = getVar(\"nanfu.category\", JSON.stringify(init_cate))\n  const cate_temp = JSON.parse(cate_temp_json)\n\n\n\n  if (parseInt(page) === 1) {\n \t\n    categories.forEach((category, index) => {\n    \t\n    //具体列表下的分类\t\n      let sub_categories = parseDomForArray(category, 'div&&a');\n \n        sub_categories.forEach((item, key) => {\n          let title = parseDomForHtml(item, 'a&&Text')\n          d.push({\n           \n            title: key.toString()===cate_temp[index]?'““””<b><font color='+Color+'>'+title+' </font></b>':title,\n            url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n              params.cate_temp[params.index] = params.key.toString()\n\n              putVar(\"nanfu.category\", JSON.stringify(params.cate_temp))\n              putVar(\"nanfu.url\", input)\n              refreshPage(true)\n              return \"hiker://empty\"\n            }, {\n              cate_temp: cate_temp,\n              index: index,\n              key: key,\n              page: page,\n            }),\n            col_type: 'scroll_button',\n          })\n        })\n       d.push({\n          col_type:\"blank_block\"\n        });\n //     }\n    })\n    \n\n  }\n\n\n//一级页面\nvar list = parseDomForArray(html, '.module-list&&.module-item');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.video-name&&Text'),\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'.module-item-title&&href')+\"#immersiveTheme#\"\n\n  });\n}\n\n  setResult(d);","searchFind":"js:\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'img&&alt'),\n       desc: parseDomForHtml(list[j], 'a,1&&Text'),\n       content: parseDomForHtml(list[j], '.video-info-items,1&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });\n}\nsetResult(d)","search_url":"https://kanjudy.com/vodsearch**/page/fypage.html","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n\nvar playList = [];\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n\nfor (var i in arts) {\n    playList.push({\n        name: parseDomForHtml(arts[i], 'span&&Text').replace('[推荐]',''),\n        list: []\n    });\n}\nplayList[0].use = true;\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\n\n\ntry {\n    var daoyan = parseDomForHtml(html, '.video-info-item&&Text').replace(/\\//g,' ');\n    var zhuyan = parseDomForHtml(html, '.video-info-item,1&&Text').replace(/\\//g,' ');\n    var time = parseDomForHtml(html, \".video-info-item,3&&Text\");\n} catch (e) {\n    var daoyan = zhuyan = \"未知\";\n}\nvar data = {\n    myhistory: {\n        url: MY_URL,\n        ruleName: MY_RULE.title\n    }, //固定\n    name: parseDomForHtml(html, 'h1&&Text'),\n    pic: parseDom(html, '.lazyload&&data-src'),\n    info: [{\n            type: '导演：',\n            inf: daoyan\n        },\n        {\n            type: '演员：',\n            inf: zhuyan\n        },\n        {\n            type: '状态：',\n            inf: time\n        }\n    ],\n    class: parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g,' '),\n    year: parseDomForHtml(html, '.tag-link,2&&Text').replace(/\\//g,' ').replace('[db:分类名称]',' '),\n    area: parseDomForHtml(html, '.tag-link,3&&Text').replace(/\\//g,' '),\n    desc: parseDomForHtml(html, '.video-info-item,4&&Text').replace('剧情','').replace('收起','').replace('：','').replace('　　',''),\n    lazy: true,\n    \n}\n\nfor (let i = 0; i < conts.length; i++) {\n    playList[i].list = parseDomForArray(conts[i], \"body&&a\").map(item => {\n        return {\n            title: parseDomForHtml(item, \"a&&Text\"),\n            url: parseDom(item, 'a&&href') + lazy,\n        }\n    });\n}\n//setError(playList)\ndata.playList = playList;\nputVar('movieDetail', data);\nsetResult([{\n    desc: 'float&&100%',\n    url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/x5page/style_pro.html',\n    col_type: 'x5_webview_single'\n}]);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"轻合集.行知侠","author":"轻合集生成器","version":72,"url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet el = [{\n    title: '清除缓存,立即更新 <small>(基于远程仓库,不要频繁点击)',\n    url: $().lazyRule(() => {\n        clearItem('updatetime')\n        refreshPage(true)\n        return 'toast://已更新'\n    }),\n    img: 'hiker://images/icon1',\n    col_type: 'avatar'\n}]\nel.push({\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n})\nconst data = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection'))\nsetResult(el.concat(data.map((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1'\n    return {\n        title: v.title,\n        url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n        img: v.icon,\n        extra: { RULE: v }\n    }\n})))","searchFind":"js:\nlet myCollection_el = [],\n    searchMode = getVar('myCollection-searchMode', ''),\n    [_, pageNum, keyword] = MY_URL.split('##'),\n    RULE = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection')).filter((v) => v.search_url)\npageNum = parseInt(pageNum)\nif (!searchMode && pageNum > RULE.length) setResult([])\n\nlet searchCount = { title: '⬆ 已搜索了' + pageNum + '个小程序 ⬆\\n⬇ 下面还有' + (RULE.length - pageNum) + '个小程序 ⬇' }\nRULE = searchMode ? RULE.find((v) => v.title == searchMode) : RULE[pageNum - 1]\n// 处理MY_URL和MY_RULE\nMY_RULE.version = RULE.version\nMY_RULE.group = RULE.group\nMY_RULE.title = RULE.title\nMY_RULE.ua = RULE.ua\nMY_RULE.col_type = RULE.col_type\nMY_RULE.detail_col_type = RULE.sdetail_col_type\nMY_RULE.find_rule = RULE.searchFind\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\nMY_RULE.preRule = RULE.preRule\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\nMY_RULE.params = {}\n\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nvar { MY_URL, indexHtml } = urlParse(RULE.search_url, searchMode ? pageNum : 1, (url) => {\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n})\nMY_RULE.url = MY_URL\n// 正文解析\nif (pageNum == 1) eval(MY_RULE.preRule)\nif (MY_RULE.find_rule.startsWith('js:')) {\n    function getUrl() {\n        return MY_URL\n    }\n\n    function getResCode() {\n        return indexHtml\n    }\n\n    function setResult(el, param1, param2, param3) {\n        param1 = CALLBACK_KEY\n        param2 = MY_RULE\n        param3 = MY_TYPE\n        if (Array.isArray(el.data)) el = el.data\n        log(el)\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\n            let RULE = Object.assign({}, MY_RULE)\n\n            if (!v.url) {\n                return v\n            } else if (v.url.includes('@lazyRule=')) {\n                v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n                return v\n            } else if (v.url.includes('@rule=')) {\n                let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                v.url = url\n                RULE.detail_find_rule = rule\n                RULE.detail_col_type = MY_RULE.col_type\n            } else if (v.url.startsWith('hiker://page/')) {\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\n                    return v\n                let path = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?.*)?$/)[1],\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\n                RULE.detail_find_rule = subPage.rule\n                RULE.detail_col_type = subPage.col_type\n                RULE.params = v.extra || {}\n            } else if (!MY_RULE.detail_find_rule) { return v }\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title  }\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n            return v\n        }))\n        if (!searchMode) myCollection_el.push(searchCount)\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\n    }\n\n    function setHomeResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    function setSearchResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    eval(MY_RULE.find_rule.slice(3))\n} else {\n    let findRule = MY_RULE.find_rule.split(';')\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\n                try {\n                    if (v == '*') return ''\n                    else v = (i == 1 || i == 4) ?\n                        parseDom(data, v) :\n                        parseDomForHtml(data, v)\n                    if (i != 1) v = runCode(v)\n                    return v\n                } catch (e) {}\n            }),\n            res = {\n                title: title,\n                url: url,\n                desc: desc,\n                content: content,\n                img: img\n            }\n        if (res.url) {\n            if (res.url.includes('@lazyRule=')) {\n                res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n            } else if (MY_RULE.detail_find_rule) {\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\n            }\n        }\n        myCollection_el.push(res)\n        if (!searchMode) myCollection_el.push(searchCount)\n    })\n    setResult(myCollection_el)\n}\n","search_url":"hiker://empty##fypage##**","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&')\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input+\\\"&rule=' + getItem('myCollection') + '\\\"',\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, indexHtml } = urlParse(RULE.url, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n})\\nMY_RULE.url = MY_URL\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else if (!MY_RULE.detail_find_rule) { return v }\\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nvar myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.url = MY_URL\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n// 解析正文\\nif(MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    const { runCode } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url && res.url.includes('@lazyRule='))\\n            res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"//真正获取数据的逻辑\\nfunction load() {\\n    let url = 'http://hiker.nokia.press/hikerule/dev/json_list?name=16107574',\\n        d = []\\n    try {\\n        d = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            d = JSON.parse(d).rule\\n        d = JSON.parse(d)\\n    } catch (e) {\\n        d = []\\n    }\\n    return d.filter((v) => { return v.title != MY_RULE.title && v.author != '轻合集生成器' })\\n}\\n//检查间隔，默认一天\\nlet min = 60 * 24 * 1\\n\\nlet data = []\\nlet time = getItem('updatetime', '0')\\ntime = parseInt(time)\\nlet now = new Date().getTime()\\nif (now - time > 1000 * 60 * min) {\\n    log('更新了数据')\\n    setItem('updatetime', '' + now)\\n    data = load()\\n    saveFile('data.json', JSON.stringify(data))\\n} else {\\n    log('没有更新数据')\\n    data = JSON.parse(readFile('data.json'))\\n}\\n$.exports = data\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    runCode: function(rule) {log(rule)\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = options.headers['Content-Type'].slice(0, 19) + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], indexHtml: fetch(url[0], options) }\\n    }\\n}\\n\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=16107574&s=640"},{"last_chapter_rule":"","title":"新片场","author":"顺","version":20220418,"type":"video","url":"https://www.xinpianchang.com/channel/index/id-fyAll/page-fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar PAGE = MY_URL.split('page-')[1];\nvar d = [];\neval(JSON.parse(fetch(\"hiker://page/首页JSON\")).rule)\nif (PAGE == 1) {\n\teval(JSON.parse(fetch(\"hiker://page/首页固定JSON\")).rule)\n\td.push({\n\t\tcol_type: 'icon_1_search',\n\t\turl: eval(JSON.parse(fetch(\"hiker://page/进入搜索页\")).rule),\n\t\ttitle: '请输入作品名、创作人',\n\t\textra: {\n\t\t\tnewWindow: true,\n\t\t\twindowId: \"新片场搜索\"\n\t\t}\n\t})\n\td.push({\n\t\t//title:banners.title,\n\t\timg: banners.cover,\n\t\tcol_type: 'card_pic_1',\n\t\tdesc: '0',\n\t\turl: eval(JSON.parse(fetch(\"hiker://page/app播放链接\")).rule),\n\t})\n\teval(JSON.parse(fetch(\"hiker://page/首页四大按钮\")).rule)\n\teval(JSON.parse(fetch(\"hiker://page/首页列表\")).rule)\n}\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"🔢首页列表\",\"path\":\"首页列表\",\"rule\":\"if (tips_title == '分类' || tips_title == '作品') {\\n    for (let i in XPC) {\\n        var vm = XPC[i];\\n//单个视频web链接\\n\\t  var web_links = vm.web_url;\\n        var app_links = vm.url.replace(/newstudios/, 'https');\\n        var ID = app_links.split('id=')[1]\\n        d.push({\\n            title: vm.category_name,\\n            pic_url: vm.cover,       url:eval(JSON.parse(fetch(\\\"hiker://page/web_发现二级分类\\\")).rule),\\n            col_type: 'card_pic_2',\\n            desc: '0',\\n        })\\n    }\\n}\\n\\nif (tips_title != '作品' && tips_title != '分类') {\\n    d.push({\\n        col_type: 'line_blank',\\n    })\\n for (let i in vmjson) {\\n        var vm = vmjson[i].data.resource;\\n        var PLAY_LINKS = vm.url.replace(/newstudios/, 'https');\\nvar USER_HOME= 'https://app.xinpianchang.com/user/'+vm.user_id;\\nif (tips_title != '场库推荐' ){\\nvar url =eval(JSON.parse(fetch(\\\"hiker://page/创作人首页\\\")).rule)\\n}else{var url =\\\"hiker://empty\\\"}\\n        d.push({\\n            title: vm.author.userinfo.username,\\n            pic_url: vm.author.userinfo.avatar,\\n            url:url,\\n            col_type: 'avatar',\\n        })\\n        d.push({\\n            title: vm.title,\\n            url: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n            col_type: 'text_1',\\n        })\\n        d.push({\\n            title: vm.title,\\n            pic_url: vm.cover,\\n            url: eval(JSON.parse(fetch(\\\"hiker://page/app播放链接\\\")).rule),\\n            col_type: 'pic_1_full',\\n        })\\n        d.push({\\n            title: vm.count.count_collect,\\n            pic_url: 'http://82.156.222.77/weisyr/icon/bbs收藏.svg',\\n            url: \\\"hiker://empty\\\",\\n            col_type: 'icon_small_3',\\n        })\\n        d.push({\\n            title: vm.count.count_comment,\\n            pic_url: 'http://82.156.222.77/weisyr/icon/bbs回复.svg',\\n            url: $().lazyRule((PLAY_LINKS) => {\\n\\t\\t\\t\\t\\t\\tputMyVar('详细类别', '评论');\\n\\t\\t\\t\\t\\t\\treturn eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule);\\n\\t\\t\\t\\t\\t},PLAY_LINKS),\\n            col_type: 'icon_small_3',\\n        })\\n        d.push({\\n            title: vm.count.count_like,\\n            pic_url: 'http://82.156.222.77/weisyr/icon/bbs点赞.svg',\\n            url: \\\"hiker://empty\\\",\\n            col_type: 'icon_small_3',\\n        })\\n        d.push({\\n            col_type: 'line_blank',\\n        })\\n    \\t}\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"app分类与搜索列表\",\"path\":\"app分类与搜索列表\",\"rule\":\"var APP_URL = \\\"https://app.xinpianchang.com/v2/search?type=\\\" + tips_select + \\\"&kw=\\\" + tips_title +'&page=' + PAGE;\\nvar app_lists = JSON.parse(request(APP_URL)).data.list;\\nif (app_lists.length != \\\"\\\") {\\n\\tfor (let i in app_lists) {\\n\\t\\tvar PLAY_LINKS = app_lists[i].url.replace(/newstudios/, 'https');\\n\\t\\tvar like = app_lists[i].count.count_like;\\n\\t\\tvar view = app_lists[i].count.count_view;\\n\\t\\tif (like > 1000) like = (like / 1000).toFixed(1) + 'k';\\n\\t\\tif (view > 10000) view = (view / 10000).toFixed(1) + 'w';\\n\\t\\td.push({\\n\\t\\t\\tpic_url: app_lists[i].cover,\\n\\t\\t\\ttitle: app_lists[i].title,\\n\\t\\t\\tdesc: \\\"““”” <small><font color='grey'>\\\" + '播放量 ' + view + ' · ' + '喜欢 ' + like + '\\\\n' + app_lists[i]\\n\\t\\t\\t\\t.author.userinfo.username + \\\"</font> </small>\\\",\\n\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t})\\n\\t}\\n} else {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页上部\",\"path\":\"搜索页上部\",\"rule\":\"if (PAGE == 1) {\\n\\td.push({\\n\\t\\turl: \\\"putMyVar('搜关键字',input);var tips_title = getMyVar('搜关键字');var localData = request('hiker://files/cache/新片场历史搜索.json');if (!localData) localData ='[]';var lishi=JSON.parse(localData);let ccc = lishi.indexOf(input);if(ccc >-1){lishi.splice(ccc,1)};lishi.push(tips_title);lishi=lishi.slice(-28);writeFile('hiker://files/cache/新片场历史搜索.json', JSON.stringify(lishi));refreshPage(false)\\\",\\n\\t\\tdesc: '请输入作品名、创作人',\\n\\t\\textra: {\\n\\t\\t\\tdefaultValue: tips_title,\\n\\t\\t},\\n\\t\\tcol_type: \\\"input\\\",\\n\\t});\\n\\td.push({\\n\\t\\tcol_type: 'line',\\n\\t})\\n\\n\\tif (!tips_title) {\\n\\t\\tif (request('hiker://files/cache/新片场历史搜索.json')) {\\n\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: '““””<b><font color=#000>' + '🗑️ 历史搜索' + '</font></b>',\\n\\t\\t\\t\\turl: $().lazyRule(() => {\\n\\t\\t\\t\\t\\twriteFile('hiker://files/cache/新片场历史搜索.json', '');\\n\\t\\t\\t\\t\\trefreshPage(false);\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}),\\n\\t\\t\\t\\tcol_type: \\\"text_1\\\",\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tvar localData = request('hiker://files/cache/新片场历史搜索.json');\\n\\t\\t\\tif (!localData) localData = \\\"[]\\\";\\n\\t\\t\\tvar lishi = JSON.parse(localData).slice(-28);\\n\\t\\t\\tvar History = \\\"\\\";\\n\\t\\t\\tfor (let i = lishi.length - 1; i >= 0; i--) {\\n\\t\\t\\t\\tvar cclishi = lishi[i];\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\ttitle: cclishi,\\n\\t\\t\\t\\t\\tcol_type: \\\"flex_button\\\",\\n\\t\\t\\t\\t\\turl: $().lazyRule((cclishi) => {\\n\\t\\t\\t\\t\\t\\tputMyVar('搜关键字', cclishi);\\n\\t\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t\\t}, cclishi),\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t}\\n\\t\\tfor (let i = 0; i < 20; i++) {\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t})\\n\\t\\t}\\n\\t\\td.push({\\n\\t\\t\\ttitle: '““””<b><font color=#000>' + '🔥 热门搜索' + '</font></b>',\\n\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\tcol_type: \\\"text_1\\\",\\n\\t\\t\\textra: {\\n\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t}\\n\\t\\t});\\n\\t\\tvar url = 'https://app.xinpianchang.com/search_recommend_kws';\\n\\t\\tvar Hotjson = JSON.parse(fetch(url)).data.list;\\n\\t\\tfor (let i in Hotjson) {\\n\\t\\t\\tvar tips = Hotjson[i].name;\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: tips,\\n\\t\\t\\t\\tcol_type: \\\"flex_button\\\",\\n\\t\\t\\t\\turl: $().lazyRule((tips) => {\\n\\t\\t\\t\\t\\tputMyVar('搜关键字', tips);\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}, tips),\\n\\t\\t\\t});\\n\\t\\t}\\n\\t}\\n\\n\\tconst search_shuliang = 'https://www.xinpianchang.com/search?kw=' + tips_title;\\n\\tvar search_NUMBER = pdfa(request(search_shuliang,{headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'}}), \\\".border-b&&.items-center&&a\\\")\\nvar search_tips_0 = pdfh(search_NUMBER[0], '.transition&&Text');\\nvar search_tips_1 = pdfh(search_NUMBER[1], '.transition&&Text');\\n\\tvar search_tips_2 = pdfh(search_NUMBER[5], '.transition&&Text');\\n/*\\n\\tvar search_tips_0 = pdfh(search_NUMBER[0], '.transition&&Text').match(/(\\\\w+)|(\\\\+)/g).join(\\\"\\\")\\n\\tvar search_tips_1 = pdfh(search_NUMBER[1], '.transition&&Text').match(/(\\\\w+)|(\\\\+)/g).join(\\\"\\\")\\n\\tvar search_tips_2 = pdfh(search_NUMBER[2], '.transition&&Text').match(/(\\\\w+)|(\\\\+)/g).join(\\\"\\\")\\n*/\\n\\tputMyVar('数量—作品', search_tips_0)\\n\\tputMyVar('数量—创作人', search_tips_1)\\n\\tputMyVar('数量—文章', search_tips_2)\\n\\n\\tvar Color = \\\"#FA7298\\\";\\n\\tfunction getHead(titles) {\\n\\t\\treturn '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + titles + '</front></strong>';\\n\\t}\\n\\tif (tips_title) {\\n\\t\\tvar tips_0 = getMyVar(\\\"数量—作品\\\")\\n\\t\\tvar tips_1 = getMyVar(\\\"数量—创作人\\\")\\n\\t\\tvar tips_2 = getMyVar(\\\"数量—文章\\\")\\n\\t\\tfor (let i = 0; i < 5; i++) {\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t})\\n\\t\\t}\\n\\t\\tvar 作品= tips_0;\\n\\t\\td.push({\\n\\t\\t\\t// title: ''+'‘‘'+ tips_0+ '’’',\\n\\t\\t\\ttitle: tips_select == 'article' ? getHead(titles =作品) : 作品,\\n\\t\\t\\tcol_type: 'text_3',\\n\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\tputMyVar('作/创/文', 'article');\\n\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t}),\\n\\t\\t})\\n\\t\\tvar 创作人= tips_1;\\n\\t\\td.push({\\n\\t\\t\\t// title: \\\"创作人 \\\"+'‘‘'+ tips_1+ '’’',\\n\\t\\t\\ttitle: tips_select == 'creator' ? getHead(titles =创作人) : 创作人,\\n\\t\\t\\tcol_type: 'text_3',\\n\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\tputMyVar('作/创/文', 'creator');\\n\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t}),\\n\\t\\t})\\n\\t\\tvar 文章=  tips_2 ;\\n\\t\\td.push({\\n\\t\\t\\t// title: \\\"文章 \\\"+'‘‘'+ tips_2+ '’’',\\n\\t\\t\\ttitle: tips_select == '文章' ? getHead(titles =文章) : 文章,\\n\\t\\t\\tcol_type: 'text_3',\\n\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\tputMyVar('作/创/文', '文章');\\n\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t}),\\n\\t\\t})\\n\\t}\\n\\tclearMyVar('数量—作品');\\n\\tclearMyVar('数量—创作人');\\n\\tclearMyVar('数量—文章');\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页四大按钮\",\"path\":\"首页四大按钮\",\"rule\":\"d.push({\\n        title: \\\"发现\\\",\\n        pic_url: 'https://oss-xpc0.xpccdn.com/Upload/edu/2019/01/145c3c382f1a82d.png',\\n        col_type: 'icon_small_4',\\n        url: $(\\\"#noLoading#https://app.xinpianchang.com/page/discovery\\\").lazyRule(() => {\\n            putMyVar('主链接', input);\\n            putMyVar('主标题', '分类');\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n    })\\n    d.push({\\n        title: \\\"精选\\\",\\n        pic_url: 'https://oss-xpc0.xpccdn.com/Upload/edu/2019/01/145c3c3871bd708.png',\\n        col_type: 'icon_small_4',\\n        url: $(\\\"#noLoading#https://app.xinpianchang.com/home/selection\\\").lazyRule(() => {\\n            putMyVar('主链接', input);\\n            putMyVar('主标题', '今日精选');\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n    })\\n    d.push({\\n        title: '场库',\\n        pic_url: 'https://oss-xpc0.xpccdn.com/Upload/edu/2019/02/015c53c03cb6605.png',\\n        col_type: 'icon_small_4',\\n        url: $(\\\"#noLoading#https://app.xinpianchang.com/home/vmovier\\\").lazyRule(() => {\\n            putMyVar('主链接', input);\\n            putMyVar('主标题', '场库推荐');\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n    })\\n    d.push({\\n        title: '热门',\\n        pic_url: 'https://oss-xpc0.xpccdn.com/Upload/edu/2019/08/055d47e2511d1d8.png',\\n        col_type: 'icon_small_4',\\n        url: $(\\\"#noLoading#https://app.xinpianchang.com/home/hot?page=\\\").lazyRule(() => {\\n            putMyVar('主链接', input);\\n            putMyVar('主标题', '热门');\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n    })\\n\\n    d.push({\\n        title: '““””<b><font color=#000>' + tips_title + '</font></b>',\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_1\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\"},{\"col_type\":\"movie_3\",\"name\":\"🔎进入搜索页\",\"path\":\"进入搜索页\",\"rule\":\"$('hiker://empty#fypage#fullTheme#noHistory##noRecordHistory#').rule(() => {\\n\\tsetPageTitle('新片场·搜索')\\n\\tvar d = [];\\n\\tvar PAGE = MY_URL.split('#')[1];\\n\\tfor (let i = 0; i < 30; i++) {\\n\\t\\td.push({\\n\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t})\\n\\t}\\n\\taddListener('onClose', $.toString(() => {\\n\\t\\tclearMyVar('搜关键字');\\n\\t\\tclearMyVar('作/创/文');\\n\\t}))\\n\\tvar tips_title = getMyVar(\\\"搜关键字\\\")\\n\\tvar tips_select = getMyVar(\\\"作/创/文\\\", 'article');\\n\\t//log(tips_select)\\n\\teval(JSON.parse(fetch(\\\"hiker://page/搜索页上部\\\")).rule)\\n\\tif (tips_title) {\\n\\t\\tif (tips_select == 'article') {\\n\\t\\t  //搜作品\\n\\t\\teval(JSON.parse(fetch(\\\"hiker://page/app分类与搜索列表\\\")).rule)\\n\\t\\t} else if (tips_select == 'creator') {\\n\\t\\t\\t//搜人\\n\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/app创作人搜索列表\\\")).rule)\\n\\t\\t} else if (tips_select == '文章') {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/web_文章列表\\\")).rule)\\n\\t\\t}\\n\\t}\\n\\tsetResult(d)\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"♨️首页JSON\",\"path\":\"首页JSON\",\"rule\":\"var tips_title = getMyVar(\\\"主标题\\\", '作品')\\nvar tips_url = getMyVar(\\\"主链接\\\");\\nif (tips_title != '作品' && tips_title != '分类') {\\n\\tvar appurl = tips_url;\\n\\tif (tips_title == '场库推荐') {\\n\\t\\tvar t = 0\\n\\t} else if(tips_title == '热门') {\\n\\t\\tvar t = 2\\n\\t} else {\\n\\t\\tvar t = 1\\n\\t}\\n\\tvar vmjson = JSON.parse(request(appurl, {headers: {'User-Agent':\\\"User-AgentNewStudios/1.9.1 (com.xinpianchang.newstudios; build:786; Android 11\\\"},method: 'GET'})).data.list.slice(t);\\n//log(vmjson);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"web_发现二级分类\",\"path\":\"web_发现二级分类\",\"rule\":\"$('hiker://empty#fypage#noHistory#').rule((web_links) => {\\n\\tvar d = [];\\n\\tvar PAGE = MY_URL.split('#')[1];\\n\\t// 当前 url\\n\\tconst URL_PREFIX = web_links;\\n\\tconst CURRENT_URL = getVar('current_url', URL_PREFIX)\\n\\t// 进入二级清空重置一次\\n\\taddListener('onClose', $.toString(() => {\\n\\t\\tclearVar('cate_2');\\n\\t\\tclearVar('current_url')\\n\\t}))\\n\\tconst CATE_LEVEL_2 = getVar(\\\"cate_2\\\", \\\"0\\\")\\n\\t// 获取页面内容\\n\\tlet html = request(URL_PREFIX, {headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'}})\\n\\t// 第一页独占\\n\\tif (PAGE == 1) {\\n\\t\\td.push({\\n\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t})\\n\\t\\t// 取二级标签\\n\\t\\tlet categorie_level_2 = pdfa(html, '.second-type&&li')\\n\\t\\t// 循环二级标签\\n\\t\\tcategorie_level_2.forEach((cate_2, index_2) => {\\n\\t\\t\\tlet title = pdfh(cate_2, 'a&&Text')\\n\\t\\t\\tlet link = pdfh(cate_2, 'a&&href')\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: parseInt(CATE_LEVEL_2) === index_2 ? \\\"““\\\" + title + \\\"””\\\" : title,\\n\\t\\t\\t\\tcol_type: 'scroll_button',\\n\\t\\t\\t\\turl: $().lazyRule(params => {\\n\\t\\t\\t\\t\\t// 存在链接的情况下更新缓存\\n\\t\\t\\t\\t\\tif (params.link) {\\n\\t\\t\\t\\t\\t\\tputVar('cate_2', params.index.toString())\\n\\t\\t\\t\\t\\t\\tputVar('current_url', 'https://www.xinpianchang.com' + params\\n\\t\\t\\t\\t\\t\\t\\t.link)\\n\\t\\t\\t\\t\\t\\trefreshPage()\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\"\\n\\t\\t\\t\\t}, {\\n\\t\\t\\t\\t\\tindex: index_2,\\n\\t\\t\\t\\t\\tlink: link\\n\\t\\t\\t\\t})\\n\\t\\t\\t})\\n\\t\\t})\\n\\t\\td.push({\\n\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t})\\n\\t\\t/* d.push({\\n\\t\\t     title: '当前URL：' + CURRENT_URL,\\n\\t\\t     col_type: 'long_text',\\n\\t\\t })*/\\n\\t}\\n\\tlet fenlei_url = '';\\n\\tif (CURRENT_URL.indexOf('articleListPage') > -1) {\\n\\t\\tfenlei_url = CURRENT_URL.replace(/\\\\?from=articleListPage/, '/page-' + PAGE)\\n\\t} else {\\n\\t\\tfenlei_url = CURRENT_URL + '/page-' + PAGE\\n\\t}\\n\\tvar lists = request(fenlei_url, {\\n\\t\\theaders: {\\n\\t\\t\\t\\\"User-Agent\\\": PC_UA\\n\\t\\t}\\n\\t})\\n\\t// log(fenlei_url)\\n\\tvar web_lists = pdfa(lists, \\\"body&&.enter-filmplay\\\")\\n\\teval(JSON.parse(fetch(\\\"hiker://page/web_分类列表\\\")).rule);\\n\\tsetResult(d)\\n}, web_links)\"},{\"col_type\":\"movie_3\",\"name\":\"web_分类列表\",\"path\":\"web_分类列表\",\"rule\":\"if (web_lists.length != \\\"\\\") {\\n\\tfor (var i in web_lists) {\\n\\t\\tvar PLAY_LINKS = 'https://app.xinpianchang.com/article/' + pdfh(web_lists[i], 'li&&data-articleid');\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t\\ttitle: pdfh(web_lists[i], '.fs_14&&Text'),\\n\\t\\t\\tdesc: \\\"““”” <small><font color='grey'>\\\" + '播放 ' + pdfh(web_lists[i], '.icon-play-volume&&Text') +\\n\\t\\t\\t\\t' · ' + '喜欢 ' + pdfh(web_lists[i], '.icon-like&&Text') + '\\\\n' + pdfh(web_lists[i],\\n\\t\\t\\t\\t\\t'p&&.fs_12&&Text') + '\\\\t\\\\t' + pdfh(web_lists[i], '.name&&Text') + \\\"</font> </small>\\\",\\n\\t\\t\\tpic_url: pd(web_lists[i], 'img&&_src') + '@Referer=' + pd(web_lists[i], 'img&&_src'),\\n\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n\\t\\t});\\n\\t}\\n} else {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"app播放链接\",\"path\":\"app播放链接\",\"rule\":\"$(PLAY_LINKS).lazyRule(() => {\\n\\ttry{\\nvar play_url_json = JSON.parse(request(input)).data;\\n\\tvar play_urls = play_url_json.video.content.progressive;\\n\\t// 开始获取弹幕\\n\\tvar danmaku = play_url_json.vid;\\n\\tvar danmu = 'https://oss-danmaku12.xpccdn.com/' + danmaku + '.txt';\\n\\tvar code = request(danmu)\\n\\tvar arr = code.split(\\\"\\\\n\\\")\\n\\tvar r = []\\n\\tfor (let i = 0; i < arr.length; i++) {\\n\\t\\ttry {\\n\\t\\t\\tvar line = JSON.parse(arr[i])\\n\\t\\t\\tif (line.content) {\\n\\t\\t\\t\\tr.push({\\n\\t\\t\\t\\t\\ttext: line.content,\\n\\t\\t\\t\\t\\ttime: line.offset\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t} catch (e) {}\\n\\t}\\n\\twriteFile(\\\"hiker://files/cache/danmu.json\\\", JSON.stringify(r))\\n\\t// 结束弹幕获取\\n\\tlet urls = [];\\n\\tlet names = [];\\n\\tfor (let j in play_urls) {\\n\\t\\turls.push(play_urls[j].url)\\n\\t\\tnames.push(play_urls[j].profile)\\n\\t}\\n\\tvar all_url = JSON.stringify({\\n\\t\\turls: urls,\\n\\t\\tnames: names,\\n\\t\\tdanmu: \\\"hiker://files/cache/danmu.json\\\"\\n\\t})\\n//\\tlog(all_url)\\n\\treturn all_url\\n}catch(e){\\nvar url=input.split('url=')[1]\\nurl=unescape(url)\\nreturn 'web://'+url\\n}\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"app创作人搜索列表\",\"path\":\"app创作人搜索列表\",\"rule\":\"var APP_URL = \\\"https://app.xinpianchang.com/v2/search?type=\\\" + tips_select + \\\"&kw=\\\" + tips_title +'&page=' + PAGE;\\nvar app_lists = JSON.parse(request(APP_URL)).data.list;\\nif(app_lists.length !=\\\"\\\") {\\nfor (let i in app_lists) {\\n   setPageTitle(app_lists[i].username)\\n var USER_HOME=app_lists[i].url.replace(/newstudios/,'https')\\nfor (let i = 0; i < 10; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\nvar url=eval(JSON.parse(fetch(\\\"hiker://page/创作人首页\\\")).rule)\\n    d.push({\\n        img: app_lists[i].avatar + '@Referer=' + app_lists[i].avatar,\\n        title: app_lists[i].username,\\n        desc: '',\\n        url:url,\\n        col_type: 'avatar',\\n    })\\n\\n    var occupation = app_lists[i].occupation;\\n    var follower = '粉丝 ' + app_lists[i].count.count_follower;\\n    if (!occupation) {\\n        occupation = ''\\n    } else {\\n        occupation = occupation + ' · '\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + '\\t\\t\\t\\t\\t' + occupation + follower + \\\"</font> </small>\\\",\\n        url: url,\\n        col_type: 'text_1',\\n    })\\n}\\t}else{\\n  eval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"创作人首页\",\"path\":\"创作人首页\",\"rule\":\"$('hiker://empty#fypage#immersiveTheme##noHistory#').rule((USER_HOME) => {\\n\\ttry {\\n\\t\\tvar PAGE = MY_URL.split('#')[1];\\n\\t\\tvar d = [];\\n\\t\\t// 头部\\n\\t\\tvar url = USER_HOME;\\n\\t\\tvar USER_JSON = JSON.parse(request(url)).data;\\n\\t\\tvar ID = USER_JSON.id;\\n\\t\\tvar app_background = USER_JSON.app_background;\\n\\t\\tif (!app_background) app_background = 'http://82.156.222.77/weisyr/img/xinpianchang.jpg';\\n\\t\\tvar user_avatar = USER_JSON.avatar;\\n\\t\\tvar user_name = USER_JSON.username;\\n\\t\\tsetPageTitle(user_name)\\n\\t\\tvar user_desc = USER_JSON.verify_description;\\n\\t\\tvar user_about = USER_JSON.about;\\n\\t\\t//人气\\n\\t\\tvar count_popularity = USER_JSON.count.count_popularity;\\n\\t\\tif (count_popularity > 10000) count_popularity = (count_popularity / 10000).toFixed(1) + 'w';\\n\\t\\t//粉丝\\n\\t\\tvar count_follower = USER_JSON.count.count_follower;\\n\\t\\tif (count_follower > 1000) count_follower = (count_follower / 1000).toFixed(1) + 'k';\\n\\t\\taddListener('onClose', $.toString(() => {\\n\\t\\t\\tclearMyVar('主页类别');\\n\\t\\t}))\\n\\t\\tvar tips_select = getMyVar(\\\"主页类别\\\", 'new');\\n\\t\\tif (PAGE == 1) {\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'pic_1_full',\\n\\t\\t\\t\\ttitle: '0',\\n\\t\\t\\t\\timg: app_background,\\n\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'avatar',\\n\\t\\t\\t\\ttitle: user_name + '\\\\t\\\\t\\\\t\\\\t' + \\\"<font color=grey>\\\" + '人气 ' + count_popularity + ' · ' +'粉丝 ' +count_follower + \\\"</font>\\\",\\n\\t\\t\\t\\timg: user_avatar,\\n\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'line',\\n\\t\\t\\t});\\n\\n\\t\\t\\tvar Color = \\\"#FA7298\\\";\\n\\t\\t\\tfunction getHead(titles) {\\n\\t\\t\\t\\treturn '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + titles + '</front></strong>';\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_4',\\n\\t\\t\\t\\ttitle: tips_select == 'new' ? getHead(titles = \\\"最新\\\") : '最新',\\n\\t\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\t\\tputMyVar('主页类别', 'new');\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}),\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_4',\\n\\t\\t\\t\\ttitle: tips_select == 'view' ? getHead(titles = \\\"热门\\\") : '热门',\\n\\t\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\t\\tputMyVar('主页类别', 'view');\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}),\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_4',\\n\\t\\t\\t\\ttitle: tips_select == 'collections' ? getHead(titles = \\\"专辑\\\") : '专辑',\\n\\t\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\t\\tputMyVar('主页类别', 'collections');\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}),\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_4',\\n\\t\\t\\t\\ttitle: tips_select == '总文章' ? getHead(titles = \\\"文章\\\") : '文章',\\n\\t\\t\\t\\turl:$('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\t\\tputMyVar('主页类别', '总文章');\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t\\t}),\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\t// 列表部分\\n\\t\\tif (tips_select == 'new' || tips_select == 'view') {\\n\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/创作人作品列表\\\")).rule)\\n\\t\\t}\\n\\t\\tif (tips_select == 'collections') {\\n\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/创作人专辑列表\\\")).rule)\\n\\t\\t}\\n\\t\\tif (tips_select == '总文章') {\\n\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/web_文章列表\\\")).rule)\\n\\t\\t}\\n\\t\\tsetResult(d);\\n\\t} catch (e) {\\n\\t\\tback(false)\\n\\t}\\n}, USER_HOME)\"},{\"col_type\":\"movie_3\",\"name\":\"首页固定JSON\",\"path\":\"首页固定JSON\",\"rule\":\"var index_url = 'https://app.xinpianchang.com/page/discovery';\\nvar index_JSON = JSON.parse(request(index_url, {headers: {'User-Agent':\\\"User-AgentNewStudios/1.9.1 (com.xinpianchang.newstudios; build:786; Android 11\\\"},method: 'GET'})).data;\\nlet XPC = index_JSON.categories;\\nlet banners = index_JSON.banners;\\nvar t = Math.floor(Math.random() * banners.length);\\nbanners = index_JSON.banners[t];\\nvar PLAY_LINKS = banners.url.replace(/newstudios/, 'https');\"},{\"col_type\":\"movie_3\",\"name\":\"创作人作品列表\",\"path\":\"创作人作品列表\",\"rule\":\"// 时间戳转换\\neval(JSON.parse(fetch(\\\"hiker://page/时间戳转换\\\")).rule);\\nvar list_url = url + '/articles?is_hide_in_space=0&order=' + tips_select +'&return_struct_type=user_home&type=public&page=' + PAGE;\\nvar APP_JSON = JSON.parse(request(list_url)).data;\\n/*var total = APP_JSON.total;\\nputMyVar('作品数量',total);*/\\nAPP_JSON=APP_JSON.list;\\nif (APP_JSON.length != \\\"\\\") {\\n\\tfor (let i in APP_JSON) {\\n\\t\\tvar app_cache = APP_JSON[i].resource;\\n\\t\\tvar PLAY_LINKS = app_cache.url.replace(/newstudios/, 'https');\\n\\t\\tvar like = app_cache.count.count_like;\\n\\t\\tvar view = app_cache.count.count_view;\\n\\t\\tif (like > 1000) like = (like / 1000).toFixed(1) + 'k';\\n\\t\\tif (view > 10000) view = (view / 10000).toFixed(1) + 'w';\\n\\t\\tvar img = app_cache.cover;\\n\\t\\tvar title = app_cache.title;\\n\\t\\tvar publish_time = app_cache.publish_time;\\n\\t\\t// 时间戳转年月日\\n\\t\\tpublish_time = timestampToTime(tm = publish_time, ts=0)\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t\\ttitle: title,\\n\\t\\t\\tdesc: \\\"““”” <small><font color='grey'>\\\" + publish_time + '\\\\n' + like + ' 喜欢' +' · ' + view +' 观看' + \\\"</font> </small>\\\",\\n\\t\\t\\timg: img,\\n\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n\\t\\t});\\n\\t}\\n} else {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"创作人专辑列表\",\"path\":\"创作人专辑列表\",\"rule\":\"var list_url = url + '/collections?page=' + PAGE;\\nvar APP_JSON = JSON.parse(request(list_url)).data.list;\\nif (APP_JSON.length != \\\"\\\") {\\n\\tfor (let i in APP_JSON) {\\n\\t\\tvar app_cache = APP_JSON[i];\\n\\t\\tvar Album_url = app_cache.url.replace(/newstudios/, 'https') + '/articles?is_detail=true&page=';\\n\\t\\tvar bg_img = app_cache.cover_url;\\n\\t\\tvar desc = app_cache.description;\\n\\t\\tvar article = app_cache.count.count_article;\\n\\t\\tvar like = app_cache.count.count_liked;\\n\\t\\tvar view = app_cache.count.count_viewed;\\n\\t\\tif (like > 1000) like = (like / 1000).toFixed(1) + 'k';\\n\\t\\tif (view > 10000) view = (view / 10000).toFixed(1) + 'w';\\n\\t\\tvar img = app_cache.cover_url;\\n\\t\\tvar title = app_cache.title;\\n\\t\\tvar put_title = \\\"““”” <small><font color='grey'>\\\" + '作品 ' + article + ' · ' + '浏览 ' + view + ' · ' + '赞 ' +like + \\\"</font> </small>\\\";\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'pic_1_card',\\n\\t\\t\\ttitle: title,\\n\\t\\t\\timg: bg_img + '@Referer=' +bg_img,\\n\\t\\t\\tdesc: '作品 ' + article + '  ·  ' + '浏览 ' + view + '  ·  ' + '赞 ' + like,\\n\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\turl: $('hiker://empty#fypage#immersiveTheme#noHistory#').rule((bg_img, put_title, desc,Album_url) => {\\n\\t\\t\\t\\t\\tvar PAGE = MY_URL.split('#')[1];\\n\\t\\t\\t\\t\\tvar d = [];\\n\\t\\t\\t\\t\\tvar url = Album_url + PAGE;\\n\\t\\t\\t\\t\\tvar APP_JSON = JSON.parse(request(url)).data.list;\\n\\t\\t\\t\\t\\tif (PAGE == 1) {\\n\\t\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\t\\tcol_type: 'pic_1_full',\\n\\t\\t\\t\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t\\t\\t\\t\\timg: bg_img,\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\t\\tcol_type: 'text_1',\\n\\t\\t\\t\\t\\t\\t\\ttitle: put_title,\\n\\t\\t\\t\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\t\\tcol_type: 'rich_text',\\n\\t\\t\\t\\t\\t\\t\\ttitle: \\\"<small><font color='grey'>\\\" + desc +\\\"</font> </small>\\\",\\n\\t\\t\\t\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tif (APP_JSON.length != \\\"\\\") {\\n\\t\\t\\t\\t\\t\\tfor (let i in APP_JSON) {\\n\\t\\t\\t\\t\\t\\t\\tvar PLAY_LINKS = APP_JSON[i].url.replace(/newstudios/, 'https');\\n\\t\\t\\t\\t\\t\\t\\tvar title = APP_JSON[i].title;\\n\\t\\t\\t\\t\\t\\t\\tvar img = APP_JSON[i].cover;\\n\\t\\t\\t\\t\\t\\t\\tvar cat = APP_JSON[i].categories;\\n\\t\\t\\t\\t\\t\\t\\tvar cat_all = []\\n\\t\\t\\t\\t\\t\\t\\tfor (var i in cat) {\\n\\t\\t\\t\\t\\t\\t\\t\\tvar cat_1 = cat[i].category_name;\\n\\t\\t\\t\\t\\t\\t\\t\\tvar cat_2 = cat[i].sub.category_name;\\n\\t\\t\\t\\t\\t\\t\\t\\tcat_all.push(\\n\\t\\t\\t\\t\\t\\t\\t\\t\\tcat_1 + '-' + cat_2 + ' \\t'\\n\\t\\t\\t\\t\\t\\t\\t\\t)\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\tcat_all = cat_all.join(\\\"\\\")\\n\\t\\t\\t\\t\\t\\t\\tvar cat_title = '““””<small><font color=grey>' + cat_all + '</font></small>';\\n\\t\\t\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t\\t\\t\\t\\t\\t\\ttitle: title,\\n\\t\\t\\t\\t\\t\\t\\t\\tdesc: cat_title,\\n\\t\\t\\t\\t\\t\\t\\t\\timg: img,\\n\\t\\t\\t\\t\\t\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n\\t\\t\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\tsetResult(d);\\n\\t\\t\\t\\t}, bg_img, put_title, desc, Album_url),\\n\\t\\t});\\n\\t}\\n} else {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"text_1\",\"name\":\"视频详情页\",\"path\":\"视频详情页\",\"rule\":\"$('hiker://empty#fypage#immersiveTheme##noHistory#').rule((PLAY_LINKS) => {\\n\\tvar PAGE = MY_URL.split('#')[1];\\n\\tvar d = [];\\n\\t// 头部\\n\\t// var url = USER_HOME;\\n\\t// PLAY_LINKS\\n\\taddListener('onClose', $.toString(() => {\\n\\t\\tclearMyVar('作者');\\n\\t\\tclearMyVar('详细类别');\\n\\t\\tclearMyVar(\\\"相似视频\\\");\\n\\t}))\\n\\t// 时间戳转换\\n\\teval(JSON.parse(fetch(\\\"hiker://page/时间戳转换\\\")).rule);\\n\\tvar tips_select = getMyVar(\\\"详细类别\\\", '简介');\\n\\tif (tips_select == '评论') clearMyVar(\\\"相似视频\\\");\\n\\tvar tips_alike = getMyVar(\\\"相似视频\\\");\\n\\tvar url = PLAY_LINKS;\\n\\n\\tvar DATA_JSON = JSON.parse(request(url)).data;\\n\\tvar ID = DATA_JSON.id;\\n\\tlet comment_url = \\\"https://app.xinpianchang.com/comments?resource_id=\\\" + ID + \\\"&type=article&page=\\\" + PAGE;\\n\\tvar COMMENT_JSON = JSON.parse(request(comment_url)).data;\\n\\t// 评论总数\\n\\tvar total = COMMENT_JSON.total;\\n\\tvar PLAY_LINKS = DATA_JSON.url.replace(/newstudios/, 'https');\\n\\tvar bg_img = DATA_JSON.cover;\\n\\tvar title = DATA_JSON.title;\\n\\tsetPageTitle(DATA_JSON.title)\\n\\t// 分类[i].category_name.sub.category_name\\n\\tvar cat = DATA_JSON.categories;\\n\\t// 发布时间\\n\\tvar publish_time = DATA_JSON.publish_time;\\n\\tpublish_time = timestampToTime(tm = publish_time, ts = 0)\\n\\t// 播放量\\n\\tvar view = DATA_JSON.count.count_view;\\n\\tif (view > 10000) view = (view / 10000).toFixed(1) + 'w';\\n\\t// 简介\\n\\tvar content = DATA_JSON.content;\\n\\t// 喜欢点赞\\n\\tvar like = DATA_JSON.count.count_like;\\n\\tif (like > 1000) like = (like / 1000).toFixed(1) + 'k';\\n\\t// 收藏\\n\\tvar collect = DATA_JSON.count.count_collect;\\n\\tif (collect > 1000) collect = (collect / 1000).toFixed(1) + 'k';\\n\\t// 分享\\n\\tvar share = DATA_JSON.count.count_share;\\n\\tif (share > 1000) share = (share / 1000).toFixed(1) + 'k';\\n\\t// 标签[i].name\\n\\tvar tags = DATA_JSON.tags;\\n\\t// 创作人.url(主页).username(名字).avatar(名字)\\n\\tvar user = DATA_JSON.author.userinfo;\\n\\tputMyVar('作者', user.username);\\n\\n\\tif (PAGE == 1) {\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'pic_1_full',\\n\\t\\t\\ttitle: '0',\\n\\t\\t\\timg: bg_img,\\n\\t\\t\\turl: $().lazyRule((DATA_JSON) => {\\n\\t\\t\\t\\tvar play_urls = DATA_JSON.video.content.progressive;\\n\\t\\t\\t\\t// 开始获取弹幕\\n\\t\\t\\t\\tvar danmaku = DATA_JSON.vid;\\n\\t\\t\\t\\tvar danmu = 'https://oss-danmaku12.xpccdn.com/' + danmaku + '.txt';\\n\\t\\t\\t\\tvar code = request(danmu)\\n\\t\\t\\t\\tvar arr = code.split(\\\"\\\\n\\\")\\n\\t\\t\\t\\tvar r = []\\n\\t\\t\\t\\tfor (let i = 0; i < arr.length; i++) {\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\tvar line = JSON.parse(arr[i])\\n\\t\\t\\t\\t\\t\\tif (line.content) {\\n\\t\\t\\t\\t\\t\\t\\tr.push({\\n\\t\\t\\t\\t\\t\\t\\t\\ttext: line.content,\\n\\t\\t\\t\\t\\t\\t\\t\\ttime: line.offset\\n\\t\\t\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} catch (e) {}\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\twriteFile(\\\"hiker://files/cache/danmu.json\\\", JSON.stringify(r))\\n\\t\\t\\t\\t// 获取弹幕\\n\\t\\t\\t\\tlet urls = [];\\n\\t\\t\\t\\tlet names = [];\\n\\t\\t\\t\\tfor (let j in play_urls) {\\n\\t\\t\\t\\t\\turls.push(play_urls[j].url)\\n\\t\\t\\t\\t\\tnames.push(play_urls[j].profile)\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tvar all_url = JSON.stringify({\\n\\t\\t\\t\\t\\turls: urls,\\n\\t\\t\\t\\t\\tnames: names,\\n\\t\\t\\t\\t\\tdanmu: \\\"hiker://files/cache/danmu.json\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\t//\\tlog(all_url)\\n\\t\\t\\t\\treturn all_url\\n\\t\\t\\t}, DATA_JSON),\\n\\t\\t});\\n\\t\\tvar Color = \\\"#FA7298\\\";\\n\\n\\t\\tfunction getHead(titles) {\\n\\t\\t\\treturn '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + titles + '</front></strong>';\\n\\t\\t}\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'text_2',\\n\\t\\t\\ttitle: tips_select == '简介' ? getHead(titles = \\\"简介\\\") : '简介',\\n\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\tputMyVar('详细类别', '简介');\\n\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t}),\\n\\t\\t});\\n\\t\\tvar 评论 = '评论 ' + '‘‘' + total + '’’';\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'text_2',\\n\\t\\t\\ttitle: tips_select == '评论' ? getHead(titles = 评论) : 评论,\\n\\t\\t\\turl: $('#noLoading#').lazyRule(() => {\\n\\t\\t\\t\\tputMyVar('详细类别', '评论');\\n\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\treturn \\\"hiker://empty\\\";\\n\\t\\t\\t}),\\n\\t\\t});\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'line',\\n\\t\\t});\\n\\t\\t// 仅简介页\\n\\t\\tif (tips_select == '简介') {\\n\\t\\t\\tvar USER_HOME = user.url.replace(/newstudios/, 'https');\\n\\t\\t\\tvar download_url = DATA_JSON.video.content.progressive[0].url;\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_1',\\n\\t\\t\\t\\ttitle: '““””<b><font color=#000>' + title + '</font></b>',\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\tvar cat_all = []\\n\\t\\t\\tfor (var i in cat) {\\n\\t\\t\\t\\tvar cat_1 = cat[i].category_name;\\n\\t\\t\\t\\tvar cat_2 = cat[i].sub.category_name;\\n\\t\\t\\t\\tcat_all.push(\\n\\t\\t\\t\\t\\tcat_1 + '-' + cat_2 + ' \\t'\\n\\t\\t\\t\\t)\\n\\t\\t\\t}\\n\\t\\t\\tcat_all = cat_all.join(\\\"\\\")\\n\\t\\t\\tvar cat_title = '““””<small><font color=grey>' + cat_all + ' \\t' + publish_time + ' \\t\\t' + view +\\n\\t\\t\\t\\t'次播放' + '</font></small>';\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: cat_title,\\n\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t\\tcol_type: 'text_1',\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'rich_text',\\n\\t\\t\\t\\ttitle: \\\"<small><font color=000>\\\" + content + \\\"</font> </small>\\\",\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: like,\\n\\t\\t\\t\\tpic_url: 'http://82.156.222.77/weisyr/icon/bbs点赞.svg',\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t\\tcol_type: 'icon_small_4',\\n\\t\\t\\t})\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: collect,\\n\\t\\t\\t\\tpic_url: 'http://82.156.222.77/weisyr/icon/bbs收藏.svg',\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t\\tcol_type: 'icon_small_4',\\n\\t\\t\\t})\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: share,\\n\\t\\t\\t\\tpic_url: 'http://82.156.222.77/weisyr/icon/bbs分享.svg',\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t\\tcol_type: 'icon_small_4',\\n\\t\\t\\t})\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: '下载',\\n\\t\\t\\t\\tpic_url: 'http://82.156.222.77/weisyr/icon/bbs下载.svg',\\n\\t\\t\\t\\turl: 'download://' + download_url,\\n\\t\\t\\t\\tcol_type: 'icon_small_4',\\n\\t\\t\\t})\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'line',\\n\\t\\t\\t});\\n\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'blank_block',\\n\\t\\t\\t});\\n\\t\\t\\tfor (let i in tags) {\\n\\t\\t\\t\\tvar tag = tags[i].name;\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\ttitle: '““””<small><font color=grey>' + tag + '</font></small>',\\n\\t\\t\\t\\t\\tcol_type: 'scroll_button',\\n\\t\\t\\t\\t\\turl: $().lazyRule((tag) => {\\n\\t\\t\\t\\t\\t\\tputMyVar('搜关键字', tag);\\n\\t\\t\\t\\t\\t\\treturn eval(JSON.parse(fetch(\\\"hiker://page/进入搜索页\\\")).rule);\\n\\t\\t\\t\\t\\t}, tag),\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'line',\\n\\t\\t\\t});\\n\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_1',\\n\\t\\t\\t\\ttitle: '““””<b><font color=#000>' + '创作人' + '</font></b>',\\n\\t\\t\\t\\turl: \\\"hiker://empty\\\",\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: user.username,\\n\\t\\t\\t\\timg: user.avatar + '@Referer=' + user.avatar,\\n\\t\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/创作人首页\\\")).rule),\\n\\t\\t\\t\\tcol_type: 'icon_2_round',\\n\\t\\t\\t})\\n\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'line',\\n\\t\\t\\t});\\n\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: 'text_1',\\n\\t\\t\\t\\ttitle: '““””<b><font color=#000>' + '相似视频' + '</font></b>',\\n\\t\\t\\t\\turl: $().lazyRule(() => {\\n\\t\\t\\t\\t\\tputMyVar('相似视频', '相似视频');\\n\\t\\t\\t\\t\\trefreshPage();\\n\\t\\t\\t\\t\\treturn \\\"hiker://empty\\\"\\n\\t\\t\\t\\t}),\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t});\\n\\t\\t\\t// 相似视频\\n\\t\\t\\tif (tips_alike == '相似视频') {\\n\\t\\t\\t\\tvar next_url = url + '/next';\\n\\t\\t\\t\\tvar NEXT_JSON = JSON.parse(request(next_url)).data.list;\\n\\t\\t\\t\\tfor (let i in NEXT_JSON) {\\n\\t\\t\\t\\t\\tvar PLAY_LINKS = NEXT_JSON[i].url.replace(/newstudios/, 'https');\\n\\t\\t\\t\\t\\tvar next_title = NEXT_JSON[i].title;\\n\\t\\t\\t\\t\\tvar next_cover = NEXT_JSON[i].cover;\\n\\t\\t\\t\\t\\tvar next_title = NEXT_JSON[i].title;\\n\\t\\t\\t\\t\\tvar next_view = NEXT_JSON[i].count.count_view;\\n\\t\\t\\t\\t\\tif (next_view > 10000) next_view = (next_view / 10000).toFixed(1) + 'w';\\n\\t\\t\\t\\t\\tvar next_like = NEXT_JSON[i].count.count_like;\\n\\t\\t\\t\\t\\tif (next_like > 1000) next_like = (next_like / 1000).toFixed(1) + 'k';\\n\\t\\t\\t\\t\\tvar next_user = NEXT_JSON[i].author.userinfo.username;\\n\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t\\t\\t\\t\\ttitle: next_title,\\n\\t\\t\\t\\t\\t\\tdesc: \\\"““”” <small><font color='grey'>\\\" + '播放量 ' + next_view + ' · 喜欢 ' +\\n\\t\\t\\t\\t\\t\\t\\tnext_like + '\\\\n' + next_user + \\\"</font> </small>\\\",\\n\\t\\t\\t\\t\\t\\timg: next_cover,\\n\\t\\t\\t\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/视频详情页\\\")).rule),\\n\\t\\t\\t\\t\\t});\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t}\\n\\t\\t// 结束简介页\\n\\t}\\n\\t// 结束仅第一页\\n\\tif (tips_select == '评论') {\\n\\t\\tvar cache_json = COMMENT_JSON.list;\\n\\t\\t//无评论\\n\\t\\tif (total == 0 && PAGE == 1) {\\n\\t\\t\\tfor (let i = 0; i < 30; i++) {\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t})\\n\\t\\t\\t}\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: \\\"““”” <small><font color='grey'>\\\" + '——   暂无评论   ——' + \\\"</font> </small>\\\",\\n\\t\\t\\t\\tcol_type: \\\"text_center_1\\\",\\n\\t\\t\\t\\textra: {\\n\\t\\t\\t\\t\\tlineVisible: false\\n\\t\\t\\t\\t}\\n\\t\\t\\t})\\n\\t\\t}\\n\\t\\tif (cache_json.length != \\\"\\\") {\\n\\t\\t\\tfor (let i in cache_json) {\\n\\t\\t\\t\\tvar USER_HOME = 'https://app.xinpianchang.com/user/' + cache_json[i].userid;\\n\\t\\t\\t\\tvar user_avatar = cache_json[i].userInfo.avatar;\\n\\t\\t\\t\\tvar user_username = cache_json[i].userInfo.username;\\n\\t\\t\\t\\tif (getMyVar('作者') == user_username) user_username = '<font color=#ed9a41>' + user_username +\\n\\t\\t\\t\\t\\t'</font>';\\n\\t\\t\\t\\t// 评论内容\\n\\t\\t\\t\\tvar content = cache_json[i].content;\\n\\t\\t\\t\\t// 评论时间\\n\\t\\t\\t\\tvar addtime = cache_json[i].addtime;\\n\\t\\t\\t\\taddtime = timestampToTime(tm = addtime, ts = 1)\\n\\t\\t\\t\\t// 回复\\n\\t\\t\\t\\tif (cache_json[i].referer) {\\n\\t\\t\\t\\t\\tvar re_name = cache_json[i].referer.userInfo.username;\\n\\t\\t\\t\\t\\tvar re_content = cache_json[i].referer.content;\\n\\t\\t\\t\\t\\tvar referer = \\\"<blockquote><font color='grey'>\\\" + '<code>' + re_name + '</code>' + '<br>' +\\n\\t\\t\\t\\t\\t\\tre_content + \\\"</font></blockquote>\\\";\\n\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\tvar referer = \\\"\\\"\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\tfor (let i = 0; i < 10; i++) {\\n\\t\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t\\t\\t})\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\ttitle: user_username + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t' + addtime +\\n\\t\\t\\t\\t\\t\\t\\\"</font></small>\\\",\\n\\t\\t\\t\\t\\timg: user_avatar + '@Referer=' + user_avatar,\\n\\t\\t\\t\\t\\turl: eval(JSON.parse(fetch(\\\"hiker://page/创作人首页\\\")).rule),\\n\\t\\t\\t\\t\\tcol_type: 'avatar',\\n\\t\\t\\t\\t});\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\ttitle: referer + \\\"<font color='000'>\\\" + '\\\\t\\\\t\\\\t\\\\t\\\\t' + content + \\\"</font>\\\",\\n\\t\\t\\t\\t\\turl: 'hiker://empty',\\n\\t\\t\\t\\t\\tcol_type: 'rich_text',\\n\\t\\t\\t\\t})\\n\\t\\t\\t\\td.push({\\n\\t\\t\\t\\t\\tcol_type: 'line',\\n\\t\\t\\t\\t});\\n\\t\\t\\t}\\n\\t\\t} else if (total != 0){\\n\\t\\t\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n\\t\\t}\\n\\t}\\n\\tsetResult(d);\\n}, PLAY_LINKS)\\n\"},{\"name\":\"END\",\"path\":\"END\",\"rule\":\"d.push({\\n\\ttitle: \\\"““”” <small><font color='grey'>\\\" + '——   END   ——' + \\\"</font> </small>\\\",\\n\\tcol_type: \\\"text_center_1\\\",\\n\\textra: {\\n\\t\\tlineVisible: false\\n\\t}\\n})\"},{\"name\":\"web_文章列表\",\"path\":\"web_文章列表\",\"rule\":\"MY_URL = 'https://www.xinpianchang.com';\\nif (tips_select == '文章') {\\n\\tvar WEB_URL = \\\"https://www.xinpianchang.com/index.php?app=search&ts=exp&kw=\\\" + tips_title +'&page=' + PAGE;\\n\\tvar exp='.name';\\n}\\nif (tips_select == '总文章') {\\n\\tvar exp='.exp-desc';\\n\\tvar WEB_URL = \\\"https://www.xinpianchang.com/user/exp/id-\\\"+ID+\\\"/cateid-0/page-\\\"+ PAGE;\\n}\\nvar web_lists = request(WEB_URL,{headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'}});\\nweb_lists = pdfa(web_lists, \\\".exp-con&&li\\\")\\nif (web_lists.length != \\\"\\\") {\\n\\tfor (var i in web_lists) {\\n\\t\\tsetPageTitle(pdfh(web_lists[i], '.exp-title&&Text'))\\n\\t\\td.push({\\n\\t\\t\\tcol_type: 'movie_1_left_pic',\\n\\t\\t\\ttitle: pdfh(web_lists[i], '.exp-title&&Text'),\\n\\t\\t\\tdesc: \\\"““”” <small><font color='grey'>\\\" + pdfh(web_lists[i], exp+'&&Text') + \\\"</font> </small>\\\",\\n\\t\\t\\tpic_url: pd(web_lists[i], 'img&&_src') + '@Referer=' + pd(web_lists[i], 'img&&_src'),\\n\\t\\t\\turl: pd(web_lists[i], 'li&&a&&href') +\\n\\t\\t\\t\\t`@rule=js: let d = [];d.push({title:pdfh(getResCode(),'.content&&Html'),col_type:\\\"rich_text\\\"});setResult(d);`,\\n\\t\\t});\\n\\t}\\n} else {\\n\\teval(JSON.parse(fetch(\\\"hiker://page/END\\\")).rule)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"时间戳转换\",\"path\":\"时间戳转换\",\"rule\":\"function timestampToTime(tm, ts) {\\n\\t\\tundefined\\n\\t\\tvar date = new Date(tm * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000\\n\\t\\tvar Y = date.getFullYear() + '-';\\n\\t\\tvar M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\\n\\t\\tvar D = date.getDate();\\n\\t\\tvar h = ' | ' + date.getHours() + ':';\\n\\t\\tvar m = date.getMinutes();\\n\\t\\tif(m<10) m = '0'+m;\\n\\t\\tm = m + ':'\\n\\t\\tvar s = date.getSeconds();\\n\\t\\tif(s<10) s = '0'+s;\\n\\t\\tif (ts == 0) return Y + M + D;\\n\\t\\tif (ts == 1) return Y + M + D + h + m + s;\\n\\t}\"}]","icon":"https://appimg.dbankcdn.com/application/icon144/85ebbac80b53487695b83587b9a5e103.png"},{"last_chapter_rule":"","title":"新剧场网盘","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.xinjuc.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"欧婵","author":"mu","version":0,"type":"other","url":"https://loli.magedn.com/movie_bt_series/fyclass/page/fypage[firstPage=https://loli.magedn.com/movie_bt_series/fyclass/]","col_type":"movie_3","class_name":"电视剧 & 电影 & 动漫 & 综艺","class_url":"juji&dianying&dongman&zongyi","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, '.bt_img&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.hdinfo&&Text'),\n        img: pd(list[j], 'img&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nlog(html)\nvar list = pdfa(html, '.bt_img&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.hdinfo&&Text'),\n        content: pdfh(list[j], '.inzhuy&&Text'),\n        img: pd(list[j], 'img&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://loli.magedn.com/page/fypage/?s=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nd.push({\n\ttitle: parseDomForHtml(html, '.moviedteail_list&&li&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.moviedteail_list&&li,-3&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.moviedteail_list&&li,-4&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\t\ndesc: parseDomForHtml(html,'body&&.yp_context&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.dyimg&&img&&src'),\n\turl: parseDom(html, '.dyimg&&img&&src'),\n\tcol_type: 'movie_1_vertical_pic_blur'\n});\n\n\nvar conts = parseDomForArray(html, 'body&&#dwonBT');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'div&&a'))\n}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n            title: '下载地址' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n\t//log(getVar(\"下载\", \"\"))\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: \"download://\"+parseDom(list[j], 'a&&href') ,\n                extra: {\n                \tid: parseDom(list[j], 'a&&href'),\n                \tblockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n                \t},\n              //  col_type: list.length > 4 ? 'text_4' : 'text_2'\n                col_type: 'text_1'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: \"download://\"+parseDom(list[j], 'a&&href') ,\n                extra: {\n                \tid: parseDom(list[j], 'a&&href'),\n                \tblockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n                \t},\n               // col_type: list.length > 4 ? 'text_4' : 'text_2'\n                 col_type: 'text_1'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\n//setTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"惊天动地的规则","author":"","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d=[];\n\nd.push({\ntitle:'这是一个惊天动地的规则',\ndesc:'点这里就会发生惊天动地的事情',\nurl:'toast://恭喜你成功浪费了一秒钟',\ncol_type:'text_center_1'\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'span&&Text');\nsetResult(\"更新至: \"+title);","title":"优豆♔","author":"蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##http://app1.udo.cc/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h3&&Text'),\r\n       desc: parseDomForHtml(list[j], '.video-serial&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-src')+\"@Referer=\",\r\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items,2&&Text'),\n       url: parseDom(list[j], 'a,1&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"http://app1.udo.cc/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else \n    if (/renrenmi|ltnb|naifeimi/.test(from)) {\n       eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    var video = ParseS.maoss(\"https://www.haokanys.top/?url=\" + jsurl, false, \"A42EAC0C2B408472\")\n       } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/105.svg"},{"last_chapter_rule":"","title":"琪琪影院·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##http://www.77evd.cc/index.php?m=vod-list-id-1-pg-fypage-order-desc-by--class-0-year-0-letter--area--lang-.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.replace('hiker://empty##', '')\nvar d = [];\nconst 分类颜色 = '#098AC1'\nconst 大类定位 = 'body&&#sj-nav-1'\nconst 拼接分类 = '#sj-gjsy&&dl'\nconst 小类定位 = 'body&&a:not(:matches(首页|福利|伦|主播|明星|直播|留言|搞笑|云播|搞笑))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype\\/(\\d+)-1/, 'index.php?m=vod-list-id-$1-pg-1-order-desc-by--class-0-year-0-letter--area--lang-.html').replace('pg-1', 'pg-' + page)\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.index-area&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'p,-1&&Text'),\n        img: pd(list[j], 'img&&data-original') + \"@Referer=\",\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\n\nsetResult(d);","searchFind":"js:\nvar d = [];\n\nvar list = pdfa(getResCode(), '.index-area&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'p,-1&&Text'),\n        content: pdfh(list[j], 'a--p&&Text'),\n        img: pd(list[j], 'img&&data-original') + \"@Referer=\",\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"http://www.77evd.cc/index.php?m=vod-search-pg-fypage-wd-**.html","group":"1影搜","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    title: pdfh(html, 'dt,2&&Text') + '\\n' +\n        pdfh(html, 'dd,1&&Text') + pdfh(html, 'dd,2&&Text').replace('年份', ' 年份') + '\\n' +\n        pdfh(html, 'dt,1&&Text'),\n    desc: pdfh(html, 'dd&&Text') +\n        pdfh(html, 'dd,3&&Text').replace('语言', ' 语言'),\n    img: pd(html, '.lazy&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar tabs = [];\n\nvar conts = pdfa(html, 'body&&.playlist');\nvar lists = [];\nfor (var i in conts) {\ntabs.push(pdfh(conts[i], 'font&&Text'))\n    lists.push(pdfa(conts[i], 'ul&&li'))\n}\n\n//var ua = \"Mozilla/5.0 (iPhone; CPU iPhone OS............TML, like Gecko) Version/9.0 Mobile/13E233 Safari/601.1\";\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            url: $(pd(list[j], 'a&&href')).x5Lazy(() => {\n                var urls = _getUrls()\n                var newUrls = urls.filter(url => {\n                    return !url.includes(\"url=\") &&\n                        url.match(/\\.mp4|\\.m3u8/)\n                });\n                return newUrls[0]\n            }),\n            col_type: list.length > 3 ? 'text_3' : 'text_2',\n            extra: {\n                blockRules: [\n                    \".jpg\",\n                    \".jpeg\",\n                    \".png\",\n                    \".mp4\",\n                    \".m3u8\",\n                    \".gif\"\n                ],\n                ua: MOBILE_UA\n            }\n        })\n    }\n}\ntry {\n    setTabs(tabs, MY_URL);\n    setLists(lists, getVar(MY_URL, '0'));\n} catch (e) {}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.77evd.cc/template/77yy/Images/favicon.ico"},{"last_chapter_rule":"","title":"爱影视.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"hiker://empty##https://aiyingshis.com/vodshow/id/37/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\"body&&.module-item;.lazyloaded&&alt;.lazyloaded&&data-src;.module-item-text&&Text;a&&href\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(.*?).html/)[1];\ntrue_url = 获取正确链接(null,null,false).replace(\"/type/\", \"/show/\");\nlet cates=打造动态分类([{\n        一级分类: 'body&&.library-box',\n        子分类: 'body&&a:not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.module-search-item;h3&&Text;.lazyload&&data-src.js:input+'@Referer=';.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://aiyingshis.com/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.page-title&&Text;.video-info-items,3&&Text;.video-info-items,2&&Text',\n img:'.lazyload&&data-src',\n url:'.lazyload&&data-src',\n desc:'.video-info-items,0&&Text;.video-info-items,1&&Text',\n content:'.video-info-item,5&&Text',\n tabs:'body&&.module-tab-item',\n lists:'body&&.module-blocklist,#id&&a',\n tab_id:'',\n};\nvar lazy=X5($.toString((PC_UA)=>{\n    eval(fy_bridge_app.getInternalJs());\n    try{\n    var urls = _getUrls();\n    //fy_bridge_app.log(JSON.stringify(urls));\n    let text=document.querySelector(\"body\").innerText;\n    //fba.log(text);\n    for(let i in urls){\n        if(urls[i].match(/(.*)\\.zip$|danmu\\/pic\\.php\\?url=|\\.m3u8|\\.mp4/)){\n            //return urls[i]+';{User-Agent@'+PC_UA+'}#isVideo=true#' \n            return urls[i]+'#isVideo=true#'\n        }\n    }\n    //return location.href\n    }catch(e){\n        fy_bridge_app.log('发生错误'+e.message);\n    }\n    try {\n   document.querySelector(\"a:contains(继续观看)\").click()\n    } catch (e) {}\n},PC_UA));\nvar 指定ua=PC_UA;\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://codeberg.org/hjdhnx/hiker/raw/branch/main/js/预处理.js');","pages":"[]","icon":"http://i-3.yiwan.com/2021/9/24/ef099fcf-abda-455d-b4ae-a7da1e73725a.png?width=192&height=192"},{"last_chapter_rule":"","title":"在线影视.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"hiker://empty##http://www.jyh189.com/hn-dianying-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/-(\\d+)\\.html/)[1];\n//log('当前页码:'+page)\n if (/-(\\d+)/.test(true_url)) {\n    true_url = true_url.replace(/-(\\d+)/,'-'+page)\n}else if (/area|year|yuyan/.test(true_url)) {\n    true_url = true_url.replace(/\\?/,'?page='+page+'&')\n}  else if (/time|hit|commend/.test(true_url)) {\n    true_url = true_url.replace(/page=(\\d+)/,'page='+page)\n}else {\n   true_url=true_url.replace(/\\.html/,'-'+page+'.html');\n}\n//true_url = 获取正确链接();\nlog(true_url)\nlet cates=打造动态分类([{\n        一级分类: '.nav-list',\n        子分类: 'body&&li:not(:matches(首页|动作片|喜剧片|爱情片|科幻片|恐怖片|剧情片|战争片|国产剧|港台剧|日韩剧|欧美剧|明星))',\n},{\n        一级分类: '.myui-panel_bd&&.nav-slide:not(:matches(已选))',\n        子分类: 'body&&a:not(:matches(类型|剧情|地区|年份|语言|字母|排序))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".myui-vodlist__media&&li;a&&title;a&&data-original;a&&Text;a&&href.js:input+'#immersiveTheme#';p.hidden-xs&&Text\";\n一级(parStr,true);","search_url":"http://www.jyh189.com/hnsearch**/page/fypage.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1&&Text;#rating&&Text;p.data&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'p.data,1&&Text;p.data,2&&Text',\n content:'.text-collapse&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&ul,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"http://www.jyh189.com/template/reying//images/favicon.png"},{"firstHeader":"class","last_chapter_rule":"","title":"思乐影视.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"https://www.4ltv.com/show/1------fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nlet parStr=\"body&&.module-item;.lazyloaded&&alt;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-box',\n        子分类: 'body&&a',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-search-item;.video-info&&h3&&Text;.lazyload&&data-src.js:input+'@Referer=';a.video-serial&&Text;.video-info-header&&a.video-serial&&href.js:input+'#immersiveTheme#';.video-info-item,-1&&Text\";\n一级(parStr,true);","search_url":"https://www.4ltv.com/search/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.video-info-header&&h1&&Text;.video-info-items,3&&Text',\n img:'.lazyload&&data-src',\n url:'.lazyload&&data-src',\n desc:'.video-info-items,0&&Text;.video-info-items,1&&Text;.video-info-items,2&&Text',\n content:'.sqjj_a&&Text.js:input.replace(\"收起\",\"\")',\n tabs:'body&&.tab-item',\n lists:'body&&.sort-item,#id&&a',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://www.4ltv.com/upload/mx/sltv-icon.png"},{"last_chapter_rule":"","title":"喝茶影院","author":"","version":0,"type":"other","url":"http://www.iwaybook.com/index.php?s=home-vod-type-id-fyclass-mcid--area--year--letter--order--picm-1-p-fypage","col_type":"movie_3","class_name":"全部&动作片&喜剧&泰剧","class_url":"1&25&26&3","area_name":"","area_url":"","sort_name":"最新&最热","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"addtime&hits","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '#content&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),//标题\n        desc: parseDomForHtml(list[j], '.score&&Text')+':'+parseDomForHtml(list[j], '.text-bg-r&&Text'),//简介\n        img: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片并加上Referer\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'//链接\n    });\n}\nsetResult(d);","searchFind":".content&&div;a&&title;a&&href;.hidden-sm&&Text;*;a&&data-original","search_url":"","group":"1影搜","detail_col_type":"text_3","detail_find_rule":"js:\r\n\r\nvar res = {};\r\n\r\nvar d = [];\n\r\nvar html = getResCode();\n\r\nvar 简介 = parseDomForHtml(html , '.details-content-all&&Text');\r\n\r\nvar des_pic = parseDom(html , 'body&&.details-pic&&a&&style');//图片\r\n\r\nvar tabs = parseDom(html , 'body&&.details-play-title&&Html').match(/class=\\\"active[\\s\\S]*?<\\/li>/g);//线路\r\n//setError(tabs)\r\nvar conts = parseDom(html , 'body&&.playlist&&Html').match(/class=\\\"clearfix[\\s\\S]*?<\\/ul>/g);//链接\r\n//setError(conts)\r\nd.push({//每一个d.push是一个组件\r\n\r\n         title: parseDomForHtml(html, '.info&&li,3&&Text')+'\\n'+parseDomForHtml(html, '.info&&li,9&&Text')+'\\n'+parseDomForHtml(html, '.info&&li,10&&Text'),//组件里的标题\n\r\n         pic_url: des_pic,//组件里的图片\r\n\r\n         url: getUrl(),//组件里的链接\r\n\r\n         col_type: 'movie_1_vertical_pic_blur' //组件样式\r\n\r\n});\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(3, 65) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\r\nfor (var i = 0; i < conts.length; i++) {//通过for循环判断获取每一个线路的名称,i=0,如果conts.length>i就执行i++\r\n\r\n         var list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);//获取刚才线路的值,并正则匹配开头<a以/a结尾的内容，并把值赋给list\r\n\r\n         if (list != null) {\r\n\r\n                   d.push({\r\n\r\n                            title:tabs[i].split('>')[2].split('<')[0],\r\n\r\n                       col_type: 'text_1',extra: {lineVisible: false}\r\n                   }); //FFTQ\r\n\r\n                   for (var j = 0; j < list.length; j++) {//同上,获取每一个链接的名称,一般不用改\r\n\r\n                            d.push({\r\n\r\n                                     title: list[j].split('>')[1].split('<')[0],\r\n\r\n                                     url:parseDom(list[j], \"a&&href\")+`@lazyRule=.js:var get =fetch(input,{});var js = parseDomForHtml(get,\"#cms_play&&script&&Html\");eval(js);zanpiancms_player.url`,\r\n                           \r\n                            });\r\n\r\n                   }\r\n\r\n         }\r\n\r\n}\r\n\r\nres.data = d;\r\n\r\nsetHomeResult(res);\r\n\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"车火","author":"","version":0,"type":"video","url":"https://www.bjoku.com/ystop/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&纪录片","class_url":"dydq&rebodsj&zyjm&dmdhp&jilupian","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dzdy&xjdy&aqdy&khdy&kbdy&jqdy&zzdy","sort_name":"","year_name":"国产剧&香港剧&台湾剧&韩国剧&日本剧&泰国剧&美国剧&海外剧","sort_url":"","year_url":"gcju&xgju&twju&hanju&riju&taiju&mj&hwj","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    });\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&.stui-vodlist__media&&li');\n\nfor(let l of list){\n    d.push({\n        title: pdfh(l, 'a&&title'),\n        col_type: 'movie_3',\n        desc: pdfh(l, '.pic-text&&Text'),\n        content: pdfh(l, '.hidden-sm&&Text'),\n        img: pd(l, 'a&&data-original'),\n        url: pd(l, 'a&&href') + '#immersiveTheme#'\n    });\n}\n\nsetResult(d);","search_url":"https://www.bjoku.com/sosou**/page/fypage.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = unescape(base64Decode(player.url));\n    var from = player.from;\n    log('jsurl=' + jsurl + '\\n' + 'parse=' + from);\n    if (jsurl.match(/youku|mgtv|ixigua|qq\\.com|qiyi|migu|bili|sohu|pptv|le/)) {\n        require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\n        return aytmParse(jsurl);\n    } else if (from.match(/m3u8/)) {\n        return jsurl;\n    } else if(jsurl.match(/renrenmi/)){\n        var urll = request(\"https://jiexi.moeamv.com/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];\n        writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));\n        return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n});\n\neval(JSON.parse(request('hiker://page/h3?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/more/112.png"},{"last_chapter_rule":"","title":"木瓜影视🐯","author":"逐风者&20220128","version":2,"type":"picture","url":"http://www.kaifd.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&动漫电影&剧情片&纪录片","class_url":"5&6&7&8&9&10&11&12&31","area_name":"国产剧&港剧&欧美剧&韩剧&日剧&台剧&泰剧","area_url":"13&14&15&16&29&30&32","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__thumb&&a&&Text');\n\nvar 状态 = parseDomForHtml(html, 'body&&p,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-pannel_bd&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"http://www.kaifd.com/template/stui_20//statics/img/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"黑米影院.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"hiker://empty##https://www.heimi9.com/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL = MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?)\\.html/)[1];\n//log('page:'+page);\ntrue_url = 获取正确链接();\n//true_url = getMyVar('header.url', MY_URL);\n//log(true_url);\nvar 关闭折叠=true;\nlet cates = 打造动态分类([{\n    一级分类: 'body&&ul.stui-header__menu',\n    子分类: 'body&&li:gt(0):lt(5):not(:matches(首页|专题))',\n    /*\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(.*)\\//, 'show/$1-----------/')\n            }\n        }\n        */\n        \n}, \n\n/*{\n    一级分类: 'body&&.stui-screen__min',\n    子分类: 'body&&a:not(:matches(^$))',\n}\n*/\n]);\n设置(cates);\n一级(parStr, true, cates, false, html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail&&Text\";\n一级(parStr,true);","search_url":"https://www.heimi9.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.title&&Text;.data,2&&Text;.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.data,0&&Text;.data,1&&Text', content:'.detail-content&&Text.js:input.replace(\"收起全部\",\"\")',\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|推荐专题|热播榜))', lists:'body&&.stui-content__playlist,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://www.heimi9.com/template/stui_wap/statics/img/load.gif"},{"last_chapter_rule":"","title":"980影院.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"https://www.98net.com/ys/jbdy/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.type-slide',\n    子分类: 'body&&li:not(:matches(首页|APP下载|求片反馈))',\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;.thumb&&a&&title;.thumb&&a&&data-original;.detail&&p,1&&Text;a&&href;.detail&&p,2&&Text\";\n一级(parStr,true);","search_url":"https://www.98net.com/so**/page/fypage.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'&&h2&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'p.data,3&&Text;p.data,2&&Text;.stui-content__detail&&p,1&&Text',\n content:'.detail-sketch&&Text',\n tabs:'body&&.nav-tabs&&li',\n lists:'body&&.stui-content__playlist,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://www.98net.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"旧梦影视♔","author":"蓝莓果酱UX","version":4,"type":"video","url":"hiker://empty##https://mac.qd234.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src')+ '@Referer=',\n        });\r\n    }\nsetResult(d)","search_url":"https://mac.qd234.cn/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\nvar Color = \"#FA7298\";\n\nfunction getHead(title) {\n    return '‘‘’’<b><font color=\"' + Color + '\">' + title + '</font></b>';\n}\n\n// 模块的间距\nlet line_model = 8;\n// 模块间距类型\nlet line_type_model = 'blank_block';\n\n\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace('[推荐]', ''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-item');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nvar title = parseDomForHtml(html, 'body&&Text');\n\n\nd.push({\n    title: '分类:' + (parseDomForHtml(html, '.tag-link,0&&Text').replace(/\\//g, ' ') + parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g, ' ') + parseDomForHtml(html, '.tag-link,2&&Text').replace('语言：', ' ')).replace('：', ':').substring(0, 15) + '\\n' + parseDomForHtml(html, '.video-info-items,0&&Text').replace('：', ':').replace(/\\s/g, '').replace(/\\//g, ' ').substring(0, 18) + '\\n' + parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\s/g, '').replace(/\\//g, ' ').replace('：', ':').substring(0, 35),\n\n    desc: parseDomForHtml(html, '.video-info-items,3&&Text').substring(0, 100),\n    pic_url: parseDom(html, '.lazyload&&data-src'),\n    url: getUrl(),\n\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n\n});\nvar desc = parseDomForHtml(html, '.video-info-item.video-info-content&&span&&Text').replace('[收起部分]', '').replace(/\\s/g, '');\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 40) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n    url: 'hiker://empty#' + parseDomForHtml(html, 'body&&.video-info&&Html').split('/h1>')[1].replace(/;/g, '').replace(/<li/g, '<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfunction setTabs(tabs, vari) {\n\nd.push({\n        col_type: 'big_blank_block'\n    })\n\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序 选集</span></b>' : '““””<b><span style=\"color: #1aad19\">正序 选集</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n}\n\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_4'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_4'\n            });\n        }\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2HfqHFXVN3US5KPTK/sYj/RwNn9Wg11DHsagUf0evCgNzS8ZwMgG30PF/sMSa1Zqrjw9HQHG7hZoPmt2kUS5hTFOa1N0pd8J5Id2rDZ8hnm/UAGCc9fvrJVD4ghGxB8A1XIMYLK4sQ5f9q/sSWXw0oFlFc6gpociX00sHWRzNjPHLndJOega2ROBu4EBbZqw8jPwWixtgyiaB5HmNke0ivynq1qZ+uidc8w0fEORAAgZjh7WJjXaOtIYu4LkYazxEhTOkerP5FbSzCxDTyZJuUOjLjw2N2jRYfCoKAh0Mp3jf7Ihbdz3b7jZ7fa0C7iofWNAcozUQUd/gKqbkxCCgUZumt5hf4MsC9bD0QLzwzJLgqsALsoc7TsANcYPWB73UsYNNQoXNpShjm/5Ispk3jKRvPFJu5yrUXs/5WcUuQ8Ad8/9/jskbJjkVLbWSCVItB9G2OVzPRtUlgeXJKKq6NN0NNbPXmZTaCGpQTNOibDoa26a513/vQjVnMIieqf+R4ZTEqzaiyivGofqHwgcePOzEdNNSylMvZO5oDeZI7tSZmsboCVhzyzudKWGGvz2PBurxQLz4NZrXiQmytApIrYsyry1+Y+bMhs8YY9Ibv04XeLML2z46UuEwF+pKBmKPZW45nHEGYxXNlsFfOc/y3DrFiQFFmGYRu7rmeE+0l8jHXellODWyJmm3mGtASVHWRCFFha795colwOMIvstOqH3zFXnqnCSsD/QBjQ0pPLVaWYmcd6x4pI8nIU2MgsGvE=')\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","icon":"https://lanmeiguojiang.com/tubiao/movie/116.svg"},{"last_chapter_rule":"","title":"八哥电影","author":"佛尘","version":0,"type":"other","url":"https://www.ttspt.com/tv/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&纪录片","class_url":"dianying&dianshiju&zongyi&dongman&jilupian","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/stui-vodlist?rule=模板·Q')).rule)","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"完美视频","author":"家娃","version":0,"type":"video","url":"https://wmsp.cc/list/fyclass______fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"Movie&TV&DM&ZYJM","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&#content&&li');//列表\n \nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h5&&Text'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text-bg-r&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.video-pic&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\n\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&#content&&.details-info-min');\n\n //log(list);\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.video-pic&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc: parseDomForHtml(L, '.details-info&&.info&&li,4&&Text'),\n            content: parseDomForHtml(L, '.details-content-default&&Text'),\n            img: parseDom(L, '.video-pic&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://wmsp.cc/search/**-fypage.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r zanpiancms_player.*?=(.*?);/)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r zanpiancms_player.*?=(.*?);/)[1]);\n  log(player);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#playTab&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playlist&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, '.video-pic&&title');\n\nvar 导演 = parseDomForHtml(html, '.info&&li,5&&Text');\n\nvar 主演 = parseDomForHtml(html, '.info&&li,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.info&&li,10&&Text');\n\nvar 状态 = parseDomForHtml(html, '.info&&li,4&&Text');\n\nvar imgstr = parseDomForHtml(html, '.video-pic&&style');\nif(imgstr.indexOf(\"(\") > -1){\n   imgstr = imgstr.match(/\\((.*?)\\)/)[1];\n   if(imgstr.indexOf(\"http\") == -1){\n         imgstr = \"https:\"+imgstr;\n   }\n}\nvar 图片 = imgstr;\n //log(imgstr);\nvar 简介 = parseDomForHtml(html, '.details-content-all&&Text');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"光影剧场","author":"","version":20220211,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\nvar d = [];\nd.push({\n    desc: '180&&list',\n    url: loadFiles('hiker://files/cache/gyjc/homepage.html', 'http://49.232.19.228/hiker/homepage.html'),\n    col_type: 'x5_webview_single'\n});\nd.push({\n    url: \"'hiker://search?s='+input+'&rule=光影剧场'\",\n    col_type: 'input',\n    title: '搜索',\n    extra: {\n        onChange: \"putVar('my-search',input)\"\n    }\n});\nd.push({\n    title: '影视大全',\n    url: 'hiker://page/allMovies?page=fypage#noHistory#',\n    pic_url: loadImages('hiker://files/cache/gyjc/allMovie.png', 'https://s4.ax1x.com/2022/02/11/HUqkvT.png'),\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '院线热映',\n    url: 'hiker://page/nowplaying#noHistory#',\n    pic_url: loadImages('hiker://files/cache/gyjc/nowPlaying.png', 'https://s4.ax1x.com/2022/02/11/HUqVrF.png'),\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '创意短片',\n    url: 'hiker://page/sortMovies#noHistory#',\n    pic_url: loadImages('hiker://files/cache/gyjc/sortMovies.png', 'https://s4.ax1x.com/2022/02/11/HUbLgf.png'),\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '奈飞资源',\n    url: 'hiker://page/netflix#noHistory#',\n    pic_url: loadImages('hiker://files/cache/gyjc/tvLive.png', 'https://s4.ax1x.com/2022/02/11/HUqEKU.png'),\n    extra: {\n        url: 'hiker://empty/index.php/vod/show/id/#class#/page/fypage.html#noHistory#'\n    },\n    col_type: 'icon_small_4'\n});\naddLine(d);\nvar collection = JSON.parse(fetch('hiker://collection'));\nvar newCollection = [];\ncollection.map((item) => {\n    try {\n        if (item.mITitle != '网页浏览' && JSON.parse(item.params).title == MY_RULE.title&&item.cUrl == 'hiker://page/sources#immersiveTheme#') {\n                newCollection.push(item);\n        }\n    } catch (e) {}\n});\nnewCollection.map((item) => {\n    try {\n        d.push({\n            title: item.mTitle,\n            pic_url: item.picUrl,\n            url: item.cUrl,\n            extra: item.params != null ? JSON.parse(item.params).params : {},\n            col_type: 'movie_3'\n        });\n    } catch (e) {}\n});\nif (newCollection.length < 6) {\n    for (var i = 0; i < (6 - newCollection.length); i++) {\n        d.push({\n            title: '虚位以待',\n            url: 'hiker://empty',\n            pic_url: loadImages('hiker://files/cache/gyjc/cover.jpg', 'https://s4.ax1x.com/2022/02/10/HNCW8J.jpg'),\n            col_type: 'movie_3'\n        });\n    }\n}\naddLine(d);\naddBig_blank_block(d);\nsetResult(d);","searchFind":"js:\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\nsetResult(getDoubanRes(MY_URL.replace('hiker://empty', 'https://frodo.douban.com')).items.map((item) => {\n    if (item.target_type == 'tv' || item.target_type == 'movie') {\n        return {\n            title: item.target.title,\n            content: item.target.rating == null ? (item.target.null_rating_reason + '\\n' + item.target.card_subtitle) : (star(item.target.rating.value) + '\\n' + item.target.card_subtitle),\n            desc: '上映年份：' + item.target.year,\n            pic_url: item.target.cover_url + '@Referer=https://m.douban.com/',\n            url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\n            extra: {\n                id: item.target.id,\n                title: item.target.title,\n                target_type: item.target_type\n            }\n        }\n    }\n}));","search_url":"hiker://empty/api/v2/search/subjects?q=**&type=movie&start=fypage@-1@*20@&count=20","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"核心函数\",\"path\":\"coreFunctions\",\"rule\":\"function pageFunction(url) {\\n    eval(JSON.parse(request(url)).rule);\\n};\\n\\nfunction loadFiles(localPosition, webPosition) {\\n    if (!fileExist(localPosition)) {\\n        writeFile(localPosition, request(webPosition));\\n    };\\n    return getPath(localPosition);\\n};\\n\\nfunction loadImages(localPosition, webPosition) {\\n    if (!fileExist(localPosition)) {\\n        saveImage(webPosition, localPosition);\\n    };\\n    return getPath(localPosition);\\n};\\n\\nfunction addLine(array) {\\n    return array.push({\\n        col_type: 'line'\\n    });\\n};\\n\\nfunction addLine_blank(array) {\\n    return array.push({\\n        col_type: 'line_blank'\\n    });\\n};\\n\\nfunction addLong_text(array) {\\n    return array.push({\\n        col_type: 'long_text'\\n    });\\n};\\n\\nfunction addBig_blank_block(array) {\\n    return array.push({\\n        col_type: 'big_blank_block'\\n    });\\n};\\n\\nfunction bigHtml(text) {\\n    return '‘‘’’<big>' + text + '</big>';\\n};\\n\\nfunction smallHtml(text) {\\n    return '‘‘’’<small>' + text + '</small>';\\n};\\n\\nfunction strongHtml(text) {\\n    return '‘‘’’<strong>' + text + '</strong>';\\n};\\n\\nfunction colorHtml(color, text) {\\n    return '‘‘’’<font color=\\\"' + color + '\\\">' + text + '</font>';\\n};\\n\\nfunction getDoubanRes(url) {\\n    if (url.indexOf('apikey') == -1) {\\n        url += (url.indexOf('?') == -1 ? '?' : '&') + \\\"apikey=0dad551ec0f84ed02907ff5c42e8ec70\\\"\\n    }\\n    let s = fetch(url, {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"api-client/1 com.douban.frodo/7.20.0.beta2(231) Android/30 platform/mobile\\\"\\n        },\\n        method: 'POST'\\n    });\\n    return JSON.parse(s);\\n}\\n\\nfunction getXinpianchangRes(url) {\\n    return JSON.parse(request(url, {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"NewStudios/1.9.1 (com.xinpianchang.newstudios; build:786; Android 11)\\\",\\n            \\\"Device-Id\\\": \\\"59e4c000ce0b372a858da5393a9bb16e\\\"\\n        }\\n    }));\\n}\\n\\nfunction star(number) {\\n    var text = '';\\n    for (var i = 0; i < Math.ceil(number / 2); i++) {\\n        var text = text + '★'\\n    }\\n    for (var i = 0; i < 5 - Math.ceil(number / 2); i++) {\\n        var text = text + '☆'\\n    }\\n    return text;\\n};\\n//x5rule强力嗅探\\nfunction x5rule(links, srcurl) {\\n    showLoading(\\\"强力嗅探中，请稍等！\\\");\\n    var video = 'webRule://' + links + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == 'undefined') {\\n            fba.log('网页访问开始');\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗/) != -1) {\\n                if (window.count == 2) {\\n                    fba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                    fba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if (window.count > 3 && window.count != null && window.count != undefined) {\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://访问失败，可能链接已失效。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试打开直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\</.test(html)) {\\n                        return JSON.parse(html).url;\\n                    } else {\\n                        fba.log(location.href)\\n                    }\\n                };\\n            } else {\\n                fba.log('网页加载日志检索' + window.count + '');\\n                for (var i in urls) {\\n                    if (urls[i].match(/miued\\\\.com\\\\/m3|dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        fy_bridge_app.log(urls[i])\\n                        fba.hideLoading();\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i]\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n//结束通用解析\"},{\"col_type\":\"movie_3\",\"name\":\"影片详情\",\"path\":\"movieDetail\",\"rule\":\"js:\\nif (getItem('movieDetail', 'false') == 'false') {\\n    confirm({\\n        title: '温馨提示',\\n        content: '点击封面即可进入追剧页面！',\\n        confirm: 'setItem(\\\"movieDetail\\\", \\\"true\\\")',\\n        cancel: 'setItem(\\\"movieDetail\\\", \\\"false\\\")'\\n    })\\n}\\nvar d = [];\\nsetPageTitle(MY_PARAMS.title);\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar json = getDoubanRes('https://frodo.douban.com/api/v2/' + MY_PARAMS.target_type + '/' + MY_PARAMS.id + '?event_source=search');\\nsetLastChapterRule('js:' + $.toString(param => {\\n    setResult(param)\\n}, json.episodes_info))\\nd.push({\\n    title: json.title + '\\\\n' + smallHtml('上映时间：' + json.pubdate),\\n    desc: json.card_subtitle,\\n    url: 'hiker://page/sources#immersiveTheme#',\\n    pic_url: json.pic.large + '@Referer=https://m.douban.com/',\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        id: MY_PARAMS.id,\\n        title: MY_PARAMS.title,\\n        episodes_info: json.episodes_info,\\n        cover: json.pic.large + '@Referer=https://m.douban.com/',\\n        durations: json.durations,\\n        type: MY_PARAMS.target_type\\n    }\\n});\\nd.push({\\n    title: '演职员',\\n    url: 'hiker://page/workers#noHistory#',\\n    pic_url: loadImages('hiker://files/cache/gyjc/workers.png','https://s4.ax1x.com/2022/02/11/HUq95n.png'),\\n    extra: {\\n        id: MY_PARAMS.id,\\n        type: MY_PARAMS.target_type\\n    },\\n    col_type: 'icon_small_4'\\n});\\nd.push({\\n    title: '剧照',\\n    url: 'hiker://page/photos#noHistory#',\\n    extra: {\\n        url: 'hiker://empty/api/v2/' + MY_PARAMS.target_type + '/' + MY_PARAMS.id + '/photos?start=fypage&count=50',\\n        count: 50,\\n        title: '全部剧照'\\n    },\\n    pic_url: loadImages('hiker://files/cache/gyjc/photos.png','https://s4.ax1x.com/2022/02/11/HUqpUs.png'),\\n    col_type: 'icon_small_4'\\n});\\nd.push({\\n    title: '影评',\\n    url: 'hiker://page/reviews#noHistory#',\\n    extra: {\\n        url: 'hiker://empty/api/v2/' + MY_PARAMS.target_type + '/' + MY_PARAMS.id + '/reviews?rtype=review&start=fypage&count=20&version=0&order_by='\\n    },\\n    pic_url: loadImages('hiker://files/cache/gyjc/reviews.png','https://s4.ax1x.com/2022/02/11/HUbOv8.png'),\\n    col_type: 'icon_small_4'\\n});\\nd.push({\\n    title: '短评',\\n    url: 'hiker://page/interests#noHistory#',\\n    extra: {\\n        url: 'https://frodo.douban.com/api/v2/' + MY_PARAMS.target_type + '/' + MY_PARAMS.id + '/interests?start=fypage&count=30&status=done&order_by='\\n    },\\n    pic_url: loadImages('hiker://files/cache/gyjc/interests.png','https://s4.ax1x.com/2022/02/11/HUqPCq.png'),\\n    col_type: 'icon_small_4'\\n});\\naddLine_blank(d);\\nif (json.rating != null) {\\n    d.push({\\n        title: bigHtml(strongHtml('豆瓣评分®\\\\n') + colorHtml('#ffac2d', star(json.rating.value))) + strongHtml('\\\\t' + json.rating.value + '分'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n} else {\\n    d.push({\\n        title: strongHtml('暂无评分'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n}\\naddLine_blank(d);\\nif (json.trailer != null) {\\n\\n    d.push({\\n        title: strongHtml('预告花絮'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n    d.push({\\n        title: json.trailer.title,\\n        pic_url: json.trailer.cover_url,\\n        url: json.trailer.video_url,\\n        desc: '预告片',\\n        col_type: 'movie_2'\\n    });\\n    d.push({\\n        title: '更多预告花絮',\\n        url: 'hiker://page/trailer#noHistory#',\\n        extra: {\\n            url: 'https://movie.douban.com/subject/' + MY_PARAMS.id + '/trailer#noHistory#'\\n        },\\n        pic_url: 'https://cdn.jsdelivr.net/gh/Lingyan000/photos/img/20201104163813.gif',\\n        col_type: 'movie_2'\\n    });\\n} else {\\n    d.push({\\n        title: strongHtml('暂无预告片'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n}\\naddLine_blank(d);\\nif (json.intro != '') {\\n    d.push({\\n        title: strongHtml('影片简介' + smallHtml(smallHtml('\\\\t展开>>'))),\\n        url: $('#noLoading#').lazyRule((movieId, introContent) => {\\n            eval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\n            if (getMyVar('openIntro' + movieId, 'false') == 'true') {\\n                putMyVar('openIntro' + movieId, 'false');\\n                updateItem({\\n                    title: strongHtml('影片简介' + smallHtml(smallHtml('\\\\t展开>>'))),\\n                    extra: {\\n                        id: 'introTitle' + movieId\\n                    }\\n                });\\n                updateItem({\\n                    title: introContent.substring(0, 100) + '……',\\n                    extra: {\\n                        id: 'introContent' + movieId\\n                    }\\n                });\\n            } else {\\n                putMyVar('openIntro' + movieId, 'true');\\n                updateItem({\\n                    title: strongHtml('影片简介' + smallHtml(smallHtml('\\\\t收起>>'))),\\n                    extra: {\\n                        id: 'introTitle' + movieId\\n                    }\\n                });\\n                updateItem({\\n                    title: introContent,\\n                    extra: {\\n                        id: 'introContent' + movieId\\n                    }\\n                });\\n            }\\n            return 'hiker://empty';\\n        }, MY_PARAMS.id, json.intro.replace(/\\\\s/g, '')),\\n        col_type: 'text_center_1',\\n        extra: {\\n            id: 'introTitle' + MY_PARAMS.id\\n        }\\n    });\\n    d.push({\\n        title: json.intro.replace(/\\\\s/g, '').length < 100 ? json.intro.replace(/\\\\s/g, '') : (json.intro.replace(/\\\\s/g, '').substring(0, 100) + '……'),\\n        col_type: 'rich_text',\\n        extra: {\\n            id: 'introContent' + MY_PARAMS.id\\n        }\\n    });\\n} else {\\n    d.push({\\n        title: strongHtml('暂无简介'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n}\\naddLine_blank(d);\\nvar awards = getDoubanRes('https://frodo.douban.com/api/v2/' + MY_PARAMS.target_type + '/' + MY_PARAMS.id + '/awards?count=20');\\nif (awards.awards != '') {\\n    d.push({\\n        title: strongHtml('获奖情况'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n    awards.awards.map((item) => {\\n        d.push({\\n            title: item.ceremony.title + '\\\\t' + item.categories.map((item) => {\\n                return item.is_won ? item.category.title : (item.category.title + '（提名）')\\n            }).join('/'),\\n            pic_url: item.ceremony.pic.large + '@Referer=https://m.douban.com/',\\n            url: 'hiker://empty',\\n            col_type: 'avatar'\\n        });\\n    })\\n} else {\\n    d.push({\\n        title: strongHtml('暂无获奖情况'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n}\\naddLine_blank(d);\\nd.push({\\n    title: '‘‘<small>以上数据来源于豆瓣，如您喜欢，请下载官方app</small>’’',\\n    desc: '““<small>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</small>””',\\n    url: 'https://m.douban.com/movie/',\\n    col_type: 'text_center_1'\\n});\\naddBig_blank_block(d);\\naddBig_blank_block(d);\\naddBig_blank_block(d);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"演职列表\",\"path\":\"workers\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nsetResult(getDoubanRes('https://frodo.douban.com/api/v2/' + MY_PARAMS.type + '/' + MY_PARAMS.id + '/credits_stats?start=0&count=100').items.map((item) => {\\n    return {\\n        title: item.name + '\\\\n' + item.character,\\n        desc: item.abstract.replace(/\\\\s/g, ''),\\n        pic_url: item.cover_url + '@Referer=https://m.douban.com/',\\n        url: 'hiker://page/workerDetail#noHistory##immersiveTheme#',\\n        extra: {\\n            wid: item.id,\\n            id: item.uri.split('subject_id=')[1],\\n            name: item.name\\n        },\\n        col_type: 'movie_1_vertical_pic'\\n    }\\n}));\"},{\"col_type\":\"movie_3\",\"name\":\"演员详情\",\"path\":\"workerDetail\",\"rule\":\"js:\\nsetPageTitle(MY_PARAMS.name);\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar json = getDoubanRes('https://frodo.douban.com/api/v2/elessar/subject/' + MY_PARAMS.id + '?channel=Douban');\\nvar d = [];\\nd.push({\\n    title: json.title,\\n    desc: json.extra.short_info,\\n    pic_url: json.cover_img.url + '@Referer=https://m.douban.com/',\\n    url: 'hiker://empty',\\n    col_type: 'movie_1_vertical_pic_blur'\\n})\\naddLine_blank(d);\\nd.push({\\n    title: getMyVar('workerDetail' + MY_PARAMS.id, 'false') == 'true' ? (strongHtml('简介' + smallHtml(smallHtml('\\\\t收起>>')))) : (strongHtml('简介' + smallHtml(smallHtml('\\\\t展开>>')))),\\n    url: $('#noLoading#').lazyRule((movieId) => {\\n        getMyVar('workerDetail' + movieId, 'false') == 'true' ? putMyVar('workerDetail' + movieId, 'false') : putMyVar('workerDetail' + movieId, 'true');\\n        refreshPage(false);\\n        return 'hiker://empty';\\n    }, MY_PARAMS.id),\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: getMyVar('workerDetail' + MY_PARAMS.id, 'false') == 'true' || pdfh(json.desc, '.content&&Text').length < 100 ? ('\\\\t\\\\t\\\\t\\\\t' + pdfh(json.desc, '.content&&Text').replace(/[\\\\s\\\\n\\\\t]/g, '')) : ('\\\\t\\\\t\\\\t\\\\t' + pdfh(json.desc, '.content&&Text').replace(/[\\\\s\\\\n\\\\t]/g, '').substring(0, 100) + '……'),\\n    col_type: 'rich_text'\\n});\\njson.modules.map((item, i) => {\\n    if (item.payload.title == '作品集') {\\n        addLine_blank(d);\\n        d.push({\\n            title: strongHtml(item.payload.title),\\n            desc: strongHtml('共' + item.payload.collections[0].total + '部'),\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n        item.payload.collections[0].works.map((item, i) => {\\n            if (i < 6) {\\n                d.push({\\n                    title: item.subject.title,\\n                    desc: item.subject.extra.rating_group.rating != null ? (item.subject.extra.rating_group.rating.value + '分') : item.subject.extra.rating_group.null_rating_reason,\\n                    pic_url: item.subject.cover.large.url + '@Referer=https://m.douban.com/',\\n                    url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\\n                    extra: {\\n                        id: item.subject.id,\\n                        title: item.subject.title,\\n                        target_type: item.subject.subtype\\n                    },\\n                    col_type: 'movie_3'\\n                });\\n            }\\n        });\\n        addLine(d);\\n        d.push({\\n            title: strongHtml('查看全部作品'),\\n            url: 'hiker://page/allWorks#noHistory#',\\n            extra: {\\n                url: 'hiker://empty/api/v2/elessar/work_collections/' + item.payload.id + '/works?start=fypage&count=30&collection_title=%E5%BD%B1%E8%A7%86'\\n            },\\n            col_type: 'text_center_1'\\n        });\\n    } else if (item.payload.title == '相册') {\\n        addLine_blank(d);\\n        d.push({\\n            title: strongHtml(item.payload.title),\\n            desc: strongHtml('共' + item.payload.total + '张'),\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n        item.payload.photos.map((item, i) => {\\n            if (i < 4) {\\n                d.push({\\n                    desc: '0',\\n                    pic_url: item.image.large.url + '@Referer=https://m.douban.com/',\\n                    url: item.image.large.url + '@Referer=https://m.douban.com/',\\n                    col_type: 'card_pic_2'\\n                })\\n            }\\n        });\\n        addLine(d);\\n        d.push({\\n            title: strongHtml('查看全部照片'),\\n            url: 'hiker://page/photos#noHistory#',\\n            extra: {\\n                url: 'hiker://empty/api/v2/celebrity/' + MY_PARAMS.wid + '/photos?start=fypage&count=30',\\n                count: 30,\\n                title: '全部照片'\\n            },\\n            col_type: 'text_center_1'\\n        });\\n    } else if (item.payload.title == '获奖经历') {\\n        addLine_blank(d);\\n        d.push({\\n            title: strongHtml(item.payload.title),\\n            desc: strongHtml('共' + item.payload.total + '次'),\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n        item.payload.awards.map((item, i) => {\\n            if (i < 4) {\\n                d.push({\\n                    title: item.ceremony.title,\\n                    desc: item.is_won ? ('获得奖项:' + item.ceremony.title) : ('获得奖项:' + item.ceremony.title + '（提名）'),\\n                    pic_url: item.ceremony.pic.large + '@Referer=https://m.douban.com/',\\n                    url: 'hiker://empty',\\n                    col_type: 'movie_1_vertical_pic'\\n                })\\n            }\\n        });\\n        addLine(d);\\n        d.push({\\n            title: strongHtml('查看全部获奖经历'),\\n            url: 'hiker://page/allAwards#noHistory#',\\n            extra: {\\n                url: 'hiker://empty/api/v2/elessar/award_result_collection/' + item.payload.id + '/awards?start=fypage&count=30'\\n            },\\n            col_type: 'text_center_1'\\n        });\\n    }\\n})\\naddLine_blank(d);\\nd.push({\\n    title: '‘‘<small>以上数据来源于豆瓣，如您喜欢，请下载官方app</small>’’',\\n    desc: '““<small>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</small>””',\\n    url: 'https://m.douban.com/movie/',\\n    col_type: 'text_center_1'\\n});\\naddBig_blank_block(d);\\naddBig_blank_block(d);\\naddBig_blank_block(d);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"全部作品\",\"path\":\"allWorks\",\"rule\":\"js:\\nsetPageTitle('全部作品');\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nsetResult(getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com').replace('fypage', (parseInt(getParam('start')) - 1) * 30)).works.map((item) => {\\n    return {\\n        title: item.subject.title,\\n        desc: item.subject.extra.rating_group.rating != null ? (item.subject.extra.rating_group.rating.value + '分') : item.subject.extra.rating_group.null_rating_reason,\\n        pic_url: item.subject.cover.large.url + '@Referer=https://m.douban.com/',\\n        url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\\n        extra: {\\n            id: item.subject.id,\\n            title: item.subject.title,\\n            target_type: item.subject.subtype\\n        },\\n        col_type: 'movie_3'\\n    }\\n}))\"},{\"col_type\":\"movie_3\",\"name\":\"全部获奖\",\"path\":\"allAwards\",\"rule\":\"js:\\nsetPageTitle('全部获奖');\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nvar json = getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com').replace('fypage', (parseInt(getParam('start')) - 1) * 30));\\njson.awards.map((item) => {\\n    d.push({\\n        title: strongHtml(item.year),\\n        url: 'hiker://empty',\\n        col_type: 'text_1'\\n    });\\n    item.modules.map((item, i) => {\\n        if (i == 0) {\\n            d.push({\\n                desc: item.extra.short_info,\\n                title: item.extra.rating_group.rating != null ? (item.title + '\\\\n' + item.extra.rating_group.rating.value + '分') : (item.title + '\\\\n' + item.extra.rating_group.null_rating_reason),\\n                pic_url: item.cover_img.url + '@Referer=https://m.douban.com/',\\n                url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\\n                extra: {\\n                    id: item.id,\\n                    title: item.title,\\n                    target_type: item.subtype\\n                },\\n                col_type: 'movie_1_vertical_pic'\\n            });\\n        } else {\\n            d.push({\\n                title: item.is_won ? (item.ceremony.title + '\\\\t' + item.category.title) : (item.ceremony.title + '\\\\t' + item.category.title + '（提名）'),\\n                pic_url: item.ceremony.pic.large + '@Referer=https://m.douban.com/',\\n                url: 'hiker://empty',\\n                col_type: 'avatar'\\n            });\\n        }\\n    })\\n})\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"剧照页面\",\"path\":\"photos\",\"rule\":\"js:\\nsetPageTitle(MY_PARAMS.title);\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nsetResult(getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com').replace('fypage', (parseInt(getParam('start')) - 1) * MY_PARAMS.count)).photos.map((item) => {\\n    return {\\n        desc: '0',\\n        pic_url: item.image.large.url + '@Referer=https://m.douban.com/',\\n        url: item.image.large.url + '@Referer=https://m.douban.com/',\\n        col_type: 'card_pic_2'\\n    }\\n}))\"},{\"col_type\":\"movie_3\",\"name\":\"短评页面\",\"path\":\"interests\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nif (getParam('start') == '1') {\\n    addBig_blank_block(d);\\n    var tabs = [{\\n        name: '最热短评',\\n        type: 'hot'\\n    }, {\\n        name: '最新短评',\\n        type: 'latest'\\n    }];\\n    tabs.map((item) => {\\n        d.push({\\n            title: getMyVar('interestsType', 'hot') == item.type ? colorHtml('#FF5D50', item.name) : item.name,\\n            url: $('#noLoading#').lazyRule((type) => {\\n                putMyVar('interestsType', type);\\n                refreshPage();\\n                return 'hiker://empty';\\n            }, item.type),\\n            col_type: 'scroll_button'\\n        });\\n    })\\n    addLine_blank(d);\\n}\\nvar json = getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com').replace('fypage', (parseInt(getParam('start')) - 1) * parseInt(getParam('count'))) + getMyVar('interestsType', 'hot'));\\njson.interests.map((item) => {\\n    d.push({\\n        title: item.user.name,\\n        pic_url: item.user.avatar + '@Referer=https://m.douban.com/',\\n        url: 'hiker://empty',\\n        col_type: 'avatar'\\n    });\\n    addLine(d);\\n    d.push({\\n        title: item.comment,\\n        extra: {\\n            textSize: 15\\n        },\\n        col_type: 'rich_text'\\n    });\\n    addLine_blank(d);\\n})\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"影评列表\",\"path\":\"reviews\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nif (getParam('start') == '1') {\\n    addBig_blank_block(d);\\n    var tabs = [{\\n        name: '最热影评',\\n        type: 'hot'\\n    }, {\\n        name: '最新影评',\\n        type: 'latest'\\n    }];\\n    tabs.map((item) => {\\n        d.push({\\n            title: getMyVar('reviewsType', 'hot') == item.type ? colorHtml('#FF5D50', item.name) : item.name,\\n            url: $('#noLoading#').lazyRule((type) => {\\n                putMyVar('reviewsType', type);\\n                refreshPage();\\n                return 'hiker://empty';\\n            }, item.type),\\n            col_type: 'scroll_button'\\n        });\\n    })\\n    addLine_blank(d);\\n}\\nvar json = getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com').replace('fypage', (parseInt(getParam('start')) - 1) * parseInt(getParam('count'))) + getMyVar('reviewsType', 'hot'));\\njson.reviews.map((item) => {\\n    d.push({\\n        title: item.user.name,\\n        pic_url: item.user.avatar + '@Referer=https://m.douban.com/',\\n        url: 'hiker://empty',\\n        col_type: 'avatar'\\n    });\\n    addLine(d);\\n    d.push({\\n        title: item.abstract.replace(/\\\\s/g, '').substring(0, 140) + '……<a href=\\\"hiker://page/reviewsDetail#noHistory##noLoading#\\\">《查看详情》</a>',\\n        extra: {\\n            textSize: 15,\\n            url: 'hiker://empty/api/v2/review/' + item.id\\n        },\\n        col_type: 'rich_text'\\n    });\\n    addLine_blank(d);\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"影评详情\",\"path\":\"reviewsDetail\",\"rule\":\"js:\\nsetPageTitle('影评详情');\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nvar content = getDoubanRes(MY_PARAMS.url.replace('hiker://empty', 'https://frodo.douban.com')).content;\\nd.push({\\n    title: content,\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"预告花絮\",\"path\":\"trailer\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\npdfa(getResCode(), 'body&&.mod').map((item) => {\\n    d.push({\\n        title: bigHtml(strongHtml(pdfh(item, 'h2&&Text').replace(/[\\\\s·]/g, ''))),\\n        col_type: 'text_1',\\n        url: 'hiker://empty'\\n    });\\n    pdfa(item, 'ul&&li').map((item) => {\\n        d.push({\\n            title: pdfh(item, 'a:not([class])&&Text'),\\n            desc: pdfh(item, 'em&&Text'),\\n            pic_url: pdfh(item, 'img&&src'),\\n            url: $(pdfh(item, 'a&&href')).lazyRule(() => {\\n                return request(input,{}).match(/http.*?mp4/)[0];\\n            }),\\n            col_type: 'movie_2'\\n        });\\n    })\\n    addLine_blank(d);\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"影视大全\",\"path\":\"allMovies\",\"rule\":\"js:\\nvar d = [];\\nvar page = MY_URL.split('page=')[1];\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\n\\nfunction classList(page, count) {\\n    let items = {\\n        subtype: [\\\"全部\\\", \\\"电影\\\", \\\"电视剧\\\", \\\"综艺\\\", \\\"动漫\\\", \\\"纪录片\\\", \\\"短片\\\"],\\n        local: [\\\"全部\\\", \\\"中国大陆\\\", \\\"美国\\\", \\\"中国香港\\\", \\\"中国台湾\\\", \\\"日本\\\", \\\"韩国\\\", \\\"英国\\\", \\\"法国\\\", \\\"德国\\\", \\\"意大利\\\", \\\"西班牙\\\", \\\"印度\\\", \\\"泰国\\\", \\\"俄罗斯\\\", \\\"伊朗\\\", \\\"加拿大\\\", \\\"澳大利亚\\\", \\\"爱尔兰\\\", \\\"瑞典\\\", \\\"巴西\\\", \\\"丹麦\\\"],\\n        type: [\\\"全部\\\", \\\"剧情\\\", \\\"喜剧\\\", \\\"动作\\\", \\\"爱情\\\", \\\"科幻\\\", \\\"动画\\\", \\\"悬疑\\\", \\\"惊悚\\\", \\\"恐怖\\\", \\\"犯罪\\\", \\\"同性\\\", \\\"音乐\\\", \\\"歌舞\\\", \\\"传记\\\", \\\"历史\\\", \\\"战争\\\", \\\"西部\\\", \\\"奇幻\\\", \\\"冒险\\\", \\\"灾难\\\", \\\"武侠\\\", unescape(\\\"\\\\u60c5\\\\u8272\\\")],\\n        year: [\\\"全部\\\",\\\"2022\\\", \\\"2021\\\", \\\"2020\\\", \\\"2019\\\", \\\"2010年代\\\", \\\"2000年代\\\", \\\"90年代\\\", \\\"80年代\\\", \\\"70年代\\\", \\\"60年代\\\", \\\"更早\\\"]\\n    }\\n    let rank = {\\n        默认: \\\"U\\\",\\n        热度: \\\"T\\\",\\n        评分: \\\"S\\\",\\n        时间: \\\"R\\\"\\n    }\\n    let temp = JSON.parse(getMyVar('classlist', '{\\\"subtype\\\":\\\"\\\",\\\"local\\\":\\\"\\\",\\\"year\\\":\\\"\\\",\\\"class\\\":\\\"\\\",\\\"rank\\\":\\\"U\\\",\\\"type\\\":\\\"\\\"}'));\\n    if (page == '1') {\\n        addBig_blank_block(d);\\n        for (item in items) {\\n            for (let i = 0; i < items[item].length; i++) {\\n                d.push({\\n                    title: !temp[item] ? (i == 0 ? colorHtml('#FF5D50', items[item][0]) : items[item][i]) : (temp[item] == items[item][i] ? colorHtml('#FF5D50', items[item][i]) : items[item][i]),\\n                    col_type: 'scroll_button',\\n                    url: $('hiker://empty')\\n                        .lazyRule((e) => {\\n                            let temp = JSON.parse(getMyVar('classlist', '{\\\"subtype\\\":\\\"\\\",\\\"local\\\":\\\"\\\",\\\"year\\\":\\\"\\\",\\\"class\\\":\\\"\\\",\\\"rank\\\":\\\"U\\\",\\\"type\\\":\\\"\\\"}'));\\n                            temp[e[1]] = e[0].indexOf(\\\"全部\\\") != -1 ? \\\"\\\" : e[0];\\n                            putMyVar(\\\"classlist\\\", JSON.stringify(temp));\\n                            refreshPage();\\n                            return 'hiker://empty'\\n                        }, [items[item][i], item])\\n                })\\n            }\\n            d.push({\\n                col_type: 'blank_block'\\n            })\\n        }\\n        for (r in rank) {\\n            d.push({\\n                title: temp.rank == rank[r] ? colorHtml('#FF5D50', r) : r,\\n                col_type: 'scroll_button',\\n                url: $('hiker: //empty')\\n                    .lazyRule((e) => {\\n                        let temp = JSON.parse(getMyVar('classlist', '{\\\"subtype\\\":\\\"\\\",\\\"local\\\":\\\"\\\",\\\"year\\\":\\\"\\\",\\\"class\\\":\\\"\\\",\\\"rank\\\":\\\"U\\\",\\\"type\\\":\\\"\\\"}'));\\n                        temp.rank = e;\\n                        putMyVar(\\\"classlist\\\", JSON.stringify(temp));\\n                        refreshPage();\\n                        return 'hiker://empty'\\n                    }, rank[r])\\n            })\\n        }\\n        addLine_blank(d);\\n    }\\n    let url = \\\"https://frodo.douban.com/api/v2/movie/tag?\\\" + (page ? \\\"start=\\\" + (page - 1) * count + \\\"&count=\\\" + count : \\\"start=0&count=30\\\") + \\\"&q=\\\" + temp.subtype + \\\",\\\" + temp.local + \\\",\\\" + temp.type + \\\",\\\" + temp.year + \\\",&sort=\\\" + temp.rank + \\\"&score_range=0,10\\\";\\n    return url;\\n}\\ngetDoubanRes(classList(page, 30)).data.map((item) => {\\n    d.push({\\n        desc: item.card_subtitle,\\n        title: item.rating == null ? (item.title + '(' + item.null_rating_reason + ')\\\\n\\\\n' + smallHtml('上映时间:' + item.pubdate)) : (item.title + '(' + item.rating.value + '分)' + smallHtml('\\\\n\\\\n上映时间:' + item.pubdate)),\\n        pic_url: item.pic.large + '@Referer=https://m.douban.com/',\\n        url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\\n        col_type: 'movie_1_vertical_pic',\\n        extra: {\\n            id: item.id,\\n            title: item.title,\\n            target_type: item.subtype\\n        }\\n    });\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"院线热映\",\"path\":\"nowplaying\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d=[];\\naddBig_blank_block(d);\\nvar tabs = [{\\n    name: '热度',\\n    type: 'recommend'\\n}, {\\n    name: '时间',\\n    type: 'time'\\n}, {\\n    name: '评分',\\n    type: 'rank'\\n}];\\ntabs.map((item) => {\\n    d.push({\\n        title: getMyVar('nowplayingType', 'recommend') == item.type ? colorHtml('#FF5D50', item.name) : item.name,\\n        url: $('#noLoading#').lazyRule((type) => {\\n            putMyVar('nowplayingType', type);\\n            refreshPage();\\n            return 'hiker://empty';\\n        }, item.type),\\n        col_type: 'scroll_button'\\n    });\\n})\\naddLine_blank(d);\\ngetDoubanRes('https://frodo.douban.com/api/v2/movie/movie_showing?area=全部&sort='+getMyVar('nowplayingType', 'recommend')+'&playable=0&loc_id=108288&start=0&count=50').items.map((item) => {\\n    d.push({\\n        title: item.rating != null ? (item.title + '(' + item.rating.value + '分)\\\\n' + smallHtml(item.card_subtitle)) : (item.title + '(暂无评分)\\\\n' + smallHtml(item.card_subtitle)),\\n        desc: item.comment,\\n        pic_url: item.pic.large + '@Referer=https://m.douban.com/',\\n        url: 'hiker://page/movieDetail#noHistory##immersiveTheme#',\\n        col_type: 'movie_1_vertical_pic',\\n        extra: {\\n            title: item.title,\\n            id: item.id,\\n            target_type: item.type\\n        }\\n    })\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"创意短片\",\"path\":\"sortMovies\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nsetResult(getXinpianchangRes('https://app.xinpianchang.com/page/discovery').data.categories.map((item) => {\\n    return {\\n        title: item.category_name,\\n        desc: '0',\\n        pic_url: item.cover,\\n        url: 'hiker://page/sortMovieDetail#noHistory#',\\n        extra: {\\n            url: item.url.replace('newstudios://app.xinpianchang.com', 'hiker://empty') + '&page=fypage#noHistory#'\\n        },\\n        col_type: 'card_pic_2'\\n    }\\n}));\"},{\"col_type\":\"movie_3\",\"name\":\"短片列表\",\"path\":\"sortMovieDetail\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\ntry {\\n    setResult(getXinpianchangRes(MY_URL.replace('hiker://empty', 'https://app.xinpianchang.com')).data.list.map((item) => {\\n        return {\\n            title: item.title,\\n            desc: item.author.role + '：' + item.author.userinfo.username,\\n            pic_url: item.cover,\\n            url: $('https://app.xinpianchang.com/article/' + item.id + '?expand=user_status').lazyRule(() => {\\n                var videoList = {\\n                    urls: [],\\n                    names: []\\n                };\\n                JSON.parse(request(input)).data.video.content.progressive.map((item) => {\\n                    videoList.urls.push(item.url);\\n                    videoList.names.push(item.profile);\\n                });\\n                return JSON.stringify(videoList);\\n            }),\\n            col_type: 'movie_1_left_pic'\\n        }\\n    }));\\n} catch (e) {\\n    setResult([{\\n        title: smallHtml('已经到底了哦~'),\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    }]);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"片源页面\",\"path\":\"sources\",\"rule\":\"js:\\nsetPageTitle(MY_PARAMS.title);\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar html = request('https://movie.douban.com/subject/' + MY_PARAMS.id + '/', {\\n    headers: {\\n        \\\"User-Agent\\\": PC_UA\\n    }\\n});\\nvar sources = [];\\nvar sources_list = html.match(/sources\\\\[[(1)(3)(7)(8)(9)(17)]{1}\\\\][\\\\s\\\\S]*?\\\\]/g);\\nif (sources_list == null) {\\n    var script_list = parseDomForArray(html, 'body&&script[src]');\\n    for (var i in script_list) {\\n        var sources_url = parseDomForHtml(script_list[i], 'script&&src').indexOf('mixed_static') != -1 ? (parseDomForHtml(script_list[i], 'script&&src')) : sources_url\\n    }\\n    var sources_list = request(sources_url).match(/sources\\\\[[(1)(3)(7)(8)(9)(17)]{1}\\\\][\\\\s\\\\S]*?\\\\]/g);\\n}\\nvar d = [];\\nd.push({\\n    title: MY_PARAMS.title + '\\\\n' + MY_PARAMS.episodes_info,\\n    desc: MY_PARAMS.type == 'movie' ? ('影片时长：' + MY_PARAMS.durations) : ('单集时长：' + MY_PARAMS.durations),\\n    pic_url: MY_PARAMS.cover,\\n    url: 'hiker://empty',\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '相关搜索',\\n    url: 'hiker://search?s=' + MY_PARAMS.title.replace(/\\\\s第[一二三四五六七八九十]{1,3}季/g, ''),\\n    pic_url: loadImages('hiker://files/cache/gyjc/aboutSearch.png', 'https://s4.ax1x.com/2022/02/11/HUqSEj.png'),\\n    col_type: 'icon_small_4'\\n});\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nd.push({\\n    title: '解析设置',\\n    url: setupPages(\\\"设置\\\"),\\n    pic_url: loadImages('hiker://files/cache/gyjc/parseSet.png', 'https://s4.ax1x.com/2022/02/11/HUbxbQ.png'),\\n    col_type: 'icon_small_4'\\n});\\nd.push({\\n    title: '模式:播放',\\n    url: $('#noLoading#').lazyRule((movieId) => {\\n        eval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\n        if (getMyVar('mode' + movieId, '0') == '0') {\\n            putMyVar('mode' + movieId, '1');\\n            updateItem({\\n                title: '模式:下载',\\n                pic_url: loadImages('hiker://files/cache/gyjc/download.png', 'https://s4.ax1x.com/2022/02/11/HUqF2V.png'),\\n                extra: {\\n                    id: 'mode' + movieId\\n                }\\n            });\\n        } else {\\n            putMyVar('mode' + movieId, '0');\\n            updateItem({\\n                title: '模式:播放',\\n                pic_url: loadImages('hiker://files/cache/gyjc/playing.png', 'https://s4.ax1x.com/2022/02/11/HUbjKS.png'),\\n                extra: {\\n                    id: 'mode' + movieId\\n                }\\n            });\\n        }\\n        return 'hiker://empty'\\n    }, MY_PARAMS.id),\\n    pic_url: loadImages('hiker://files/cache/gyjc/playing.png', 'https://s4.ax1x.com/2022/02/11/HUbjKS.png'),\\n    col_type: 'icon_small_4',\\n    extra: {\\n        id: 'mode' + MY_PARAMS.id\\n    }\\n});\\nd.push({\\n    title: getItem('order' + MY_PARAMS.id, '1') == '1' ? '选集:正序' : '选集:逆序',\\n    url: $('#noLoading#').lazyRule((movieId) => {\\n        getItem('order' + movieId, '1') == '1' ? setItem('order' + movieId, '-1') : setItem('order' + movieId, '1');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, MY_PARAMS.id),\\n    pic_url: getItem('order' + MY_PARAMS.id, '1') == '1' ? loadImages('hiker://files/cache/gyjc/order.png', 'https://s4.ax1x.com/2022/02/11/HUqi80.png') : loadImages('hiker://files/cache/gyjc/reverseOrder.png', 'https://s4.ax1x.com/2022/02/11/HUbq8P.png'),\\n    col_type: 'icon_small_4',\\n    extra: {\\n        id: 'player' + MY_PARAMS.id\\n    }\\n});\\nif (sources_list != null) {\\n    sources_list.map((item) => {\\n        eval(unescape(item));\\n    })\\n    var sources_title = ['', '腾讯视频', '', '优酷视频', '', '', '', '芒果TV', '哔哩哔哩', '爱奇艺视频', '', '', '', '', '', '', '', '西瓜视频'];\\n    addLine_blank(d);\\n    addBig_blank_block(d);\\n    addBig_blank_block(d);\\n    d.push({\\n        title: '全部片源',\\n        url: $('#noLoading#').lazyRule((movieId) => {\\n            setItem('sources' + movieId, '-1');\\n            refreshPage(false);\\n            return 'hiker://empty'\\n        }, String(MY_PARAMS.id)),\\n        col_type: 'scroll_button'\\n    });\\n    sources.map((item, i) => {\\n        d.push({\\n            title: getItem('sources' + MY_PARAMS.id, '-1') == i ? strongHtml(colorHtml('#ffac2d', (sources_title[i]))) : sources_title[i],\\n            url: $('#noLoading#').lazyRule((movieId, sources) => {\\n                setItem('sources' + movieId, sources);\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, MY_PARAMS.id, String(i)),\\n            col_type: 'scroll_button'\\n        });\\n    });\\n    addLine(d);\\n    sources.map((item, i) => {\\n        if (getItem('sources' + MY_PARAMS.id, '-1') == '-1' || getItem('sources' + MY_PARAMS.id, '-1') == i) {\\n            d.push({\\n                title: strongHtml(sources_title[i]),\\n                url: 'hiker://empty',\\n                col_type: 'text_center_1'\\n            });\\n            addLine(d);\\n            setLastChapterRule('js:' + $.toString(param => {\\n                setResult('更新至｜第' + param + '集')\\n            }, item.length));\\n            if (getItem('order' + MY_PARAMS.id, '1') == '-1') {\\n                var playList = item.reverse();\\n            } else {\\n                var playList = item;\\n            }\\n            playList.map((item) => {\\n                d.push({\\n                    title: '第' + item.ep + '集',\\n                    url: $(item.play_link.replace('https://www.douban.com/link2/?url=', '').split('?')[0]).lazyRule((movieId) => {\\n                        require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\n                        if (getMyVar('mode' + movieId, '0') == '1') {\\n                            return 'download://' + aytmParse(input);\\n                        } else if (getMyVar('player' + movieId, '0') == '1') {\\n                            return 'x5Play://' + aytmParse(input);\\n                        } else {\\n                            return aytmParse(input);\\n                        }\\n                    }, MY_PARAMS.id),\\n                    extra: {\\n                        id: 'gyjc' + item.play_link.replace('https://www.douban.com/link2/?url=', '').split('?')[0]\\n                    },\\n                    col_type: 'text_3'\\n                });\\n            });\\n            addLine_blank(d);\\n        }\\n    })\\n    addLong_text(d);\\n} else {\\n    setLastChapterRule('js:' + $.toString(() => {\\n        setResult('暂无片源，敬请期待！')\\n    }));\\n    addLine_blank(d);\\n    d.push({\\n        title: '天啦噜，你来到了没有片源的荒原~',\\n        col_type: 'long_text'\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"奈飞资源\",\"path\":\"netflix\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nif (MY_PAGE == '1') {\\n    addBig_blank_block(d);\\n    var tabs = [{\\n        name: '电影',\\n        type: '1'\\n    }, {\\n        name: '剧集',\\n        type: '2'\\n    }, {\\n        name: '综艺',\\n        type: '3'\\n    }, {\\n        name: '动画',\\n        type: '4'\\n    }];\\n    tabs.map((item) => {\\n        d.push({\\n            title: getMyVar('netflixType', '1') == item.type ? colorHtml('#FF5D50', item.name) : item.name,\\n            url: $('#noLoading#').lazyRule((type) => {\\n                putMyVar('netflixType', type);\\n                refreshPage();\\n                return 'hiker://empty';\\n            }, item.type),\\n            col_type: 'scroll_button'\\n        });\\n    })\\n    addLine(d);\\n    d.push({\\n        url: \\\"'hiker://page/netflixSearch?wd='+input+'#noHistory#'\\\",\\n        col_type: 'input',\\n        title: '搜索',\\n        extra: {\\n            onChange: \\\"putVar('my-search',input)\\\"\\n        }\\n    });\\n    addLine_blank(d);\\n}\\n\\nvar html = request(MY_PARAMS.url.replace('hiker://empty', 'https://netflix.mom').replace('fypage', MY_PAGE).replace('#class#', getMyVar('netflixType', '1')));\\n\\nparseDomForArray(html, 'body&&.module-item').map((item) => {\\n    d.push({\\n        title: pdfh(item, 'a&&title') + '\\\\n' + pdfh(item, '.module-item-text&&Text'),\\n        desc: pdfh(item, '.video-text&&Text'),\\n        pic_url: pdfh(item, 'img&&data-src').replace('/img.php?url=', '') + '@Referer=',\\n        url: 'hiker://page/netflixDetail#immersiveTheme#',\\n        extra: {\\n            url: 'https://netflix.mom' + pdfh(item, 'a&&href') + '#immersiveTheme#'\\n        },\\n        col_type: 'movie_1_vertical_pic'\\n    })\\n})\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"奈飞详情\",\"path\":\"netflixDetail\",\"rule\":\"js:\\neval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\nvar d = [];\\nvar html = getResCode();\\nsetPageTitle(pdfh(html, 'body&&.video-cover&&img&&alt'));\\nd.push({\\n    title: pdfh(html, 'body&&.video-cover&&img&&alt'),\\n    pic_url: pd(html, 'body&&.video-cover&&img&&data-src'),\\n    desc: pdfh(html, 'body&&.vod_content&&span&&Text'),\\n    url: MY_URL,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nvar lineList = pdfa(html, 'body&&.module-tab-item').map((item) => {\\n    return pdfh(item, 'span&&Text')\\n});\\nvar playList = pdfa(html, 'body&&.module-player-list').map((items) => {\\n    return pdfa(items, '.module-blocklist&&a').map((item) => {\\n        return {\\n            title: pdfh(item, 'a&&Text'),\\n            url: pd(item, 'a&&href')\\n        }\\n    })\\n});\\nfor (var i in lineList) {\\n    d.push({\\n        title: lineList[i],\\n        url: 'hiker://empty',\\n        col_type: 'text_center_1'\\n    });\\n    for (var j in playList[i]) {\\n        d.push({\\n            title: playList[i][j].title,\\n            url: $(playList[i][j].url).lazyRule(() => {\\n                eval(JSON.parse(request('hiker://page/coreFunctions')).rule);\\n                return cacheM3u8(x5rule(input, input));\\n            }),\\n            extra: {\\n                blockRules: ['*.png', '*.jpg', '*.jpeg', '*.gif', '*.svg', '*.ico', '*.css'],\\n                id: 'netflix' + playList[i][j].url\\n            },\\n            col_type: 'text_3'\\n        });\\n    }\\n    addLine_blank(d);\\n}\\nsetLastChapterRule('js:' + $.toString(param => {\\n    setResult('已更新至｜' + param)\\n}, playList[0][playList[0].length - 1].title))\\naddLong_text(d);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"奈飞搜索\",\"path\":\"netflixSearch\",\"rule\":\"js:\\nvar url='https://netflix.mom/index.php/vod/search/page/1/wd/'+getParam('wd')+'.html';\\nsetResult(parseDomForArray(request(url), 'body&&.module-search-item').map((item) => {\\n    return {\\n        title: pdfh(item, 'img&&alt'),\\n        desc: pdfh(item, '.video-serial&&Text'),\\n        pic_url: pdfh(item, 'img&&data-src').replace('/img.php?url=', '') + '@Referer=',\\n        url: 'hiker://page/netflixDetail#immersiveTheme#',\\n        extra: {\\n            url: 'https://netflix.mom/index.php/vod/detail/id/' + pdfh(item, 'a&&href').match(/\\\\d+/)[0] + '.html#immersiveTheme#'\\n        },\\n        col_type: 'movie_3'\\n    }\\n}));\"}]","icon":"https://s4.ax1x.com/2022/02/14/H6Tsrn.png"},{"last_chapter_rule":"","title":"陌陌影视","author":"家娃","version":0,"type":"video","url":"https://www.ztsjhxwh.com/ztshow/fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&dianshiju&dongman&zongyi","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&犯罪片&动画电影&邵氏电影","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&fanzuipian&donghuadianying&shaoshidianying","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"guochanju&gangtaiju&riranju&oumeiju&haiwaiju","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.stui-vodlist__media&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.detail&&h3&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,2&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.ztsjhxwh.com/search/**----------fypage---/","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    try {\n        var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n        //log(player);\n        var jsurl = player.url;\n        //var from = player.from;\n        if (jsurl.search(/m3u8|mp4|flv/) > -1) {\n            return jsurl;\n        } else {\n            var play = input;\n            showLoading(\"网页嗅探中,请稍后...\");\n            var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                var urls = _getUrls()\n                for (var i in urls) {\n                    if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                        //fy_bridge_app.log(urls[i])\n                        return urls[i]\n                    }\n                }\n            })\n        }\n    } catch (e) {\n        return \"toast://解析失败,请稍后重试...\";\n    }\n\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.bottom-line');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\nlog(tabs);\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.stui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.stui-content__detail&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.ztsjhxwh.com/statics/img/favicon.ico"},{"last_chapter_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));chapter();","title":"资源网采集.CMS","author":"香雅情&六神","version":666,"type":"video","url":"hiker://files/rules/xyq/ZYWCJ.txt","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywhm();","searchFind":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywsea();","search_url":"hiker://$$$?wd=**&pg=1&ac=list$$$fypage","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\r\neval(fetch('hiker://files/rules/xyq/zywcj.js',{}));\nTWEJ();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/rules/xyq/zywcj.js'));zywerj();","ua":"mobile","preRule":"function uprulefile() {\n    try {\n        var ruletxt = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/ZYW.txt', {});\n        var rulejs = fetch('https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zyw.js', {});\n    } catch (e) {\n        rulejs = \"\";\n        ruletxt = \"\";\n    }\n    if (rulejs.search(/lazyRule/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/zywcj.js\", rulejs);\n        writeFile(\"hiker://files/rules/xyq/ZYWCJ.txt\", ruletxt);\n    } else {\n        setError('规则文件获取失败，可能网络有问题。')\n    };\n};\n\n//检测是否有规则与JS文件\nif (fileExist(\"hiker://files/rules/xyq/zywcj.js\") && fileExist(\"hiker://files/rules/xyq/ZYWCJ.txt\")) {\n    //执行预处理\n    var lac = fetch('hiker://files/rules/xyq/zywcj.js');\n    if (lac.search(/lazyRule/) != -1) {\n        eval(lac);\n        if (filter(base64Decode('VklQ'))) {\n            zywpre();\n        } else {\n            uprulefile();\n        };\n    } else {\n        //如果本地文件不对将尝试自修复\n        uprulefile();\n        eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n        zywpre();\n    };\n} else {\n    uprulefile();\n    //执行预处理\n    eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n    zywpre();\n};","pages":"[]","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/zywcj.png"},{"last_chapter_rule":"","title":"奇粹影视♔","author":"蓝莓果酱UX","version":4,"type":"video","url":"hiker://empty##http://www.ikuwoo.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module&&.module-item-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        .replace('type', 'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nconst list = pdfa(html, 'body&&.module-item')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-card-item-poster');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-note&&Text'),\r\n       img: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"http://www.ikuwoo.cn/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS(\\\"vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2FnlqrIA5sMWnmRxD3BMHkAGUxKs2osorxqH6h8IHHjzrK/Jr7NEB0A0HLRxyACVxUeNp8WCQFkyAVYUE6156K67t5sBmTbYGm8Igi1EnW66LlKEk4BcmDBNnKveBTld+Gs+syr/rwQ2EUHw3dIVSnrNKbUJzWG+SYme6XjyLIRj+95AT0xGjicSIOPNCg4ciFRyJwKIXhnA7ztIguE3XLIXlao9Wr8uUnmXV9d0rtqRK4qb9Lav3HrYlDAjSMatjTN8C1V8aeXpmRthEf1uMV0IuPpLmCJV0Ne8zPAl9+KURCmGRS1fuTiYPySbQKwJ+0zBBn8DUH19PbHHuKavt+OwacgsDCJa5+W67WsOL3vwbZjcDqCoc1zvLt+nSqDrut/CcGjeu4o/MXaQ5OkA6Zrvprv6wRZDmGyKvEQR2TmtGwh91WYPRQ5qx05BS9X7igtpKhiiaW250aNKSGhmyBGk+I5GXvVF+/QuyKFR1YZp139AFTJ8OTcahpgZVxDS0OMWZfgPJo7CSR44Q+q4cJq/eIwmaV4wsZPr5FmvLRBSp9Pci3NyjNeqpujqNXVlE0Ry1XKO4ftCijJBowSuOoPXDUkOgXiZkTQKCYaSQYV1nANnvz7xTLZsC6zhXjj2FFQx+Ljf4qDPmCRxYEnOqLrESFIy5q7Njlkg6dEWJJ7VSoUNjkp2VGJzPxqvHzEojU1duCRCqRDL4eAUwIMBJhDAPf3yB3lbTi3MpsYS7XsMY8sjTLjDM7K1G3DRqJB+zk=\\\")\"}]","icon":"https://lanmeiguojiang.com/tubiao/ke/2.png"},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&li');\n        chp.push(list.length);\n    }     \n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"万能影视♔","author":"蓝莓果酱UX","version":5,"type":"video","url":"hiker://empty##https://wap.wnvod.net/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.myui-screen__list'\nconst 小类定位 = 'body--a&&a:not(:matches(4|专|荧|资讯|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\npdfa(html, '.myui-vodlist&&li').forEach(list => {\n    d.push({\n        title: pdfh(list, 'h4&&Text'),\n        desc: pdfh(list, '.pic-tag&&Text'),\n        img: pd(list, '.lazyload&&data-original'),\n        url: pd(list, 'a&&href') + '#immersiveTheme#'\n    });\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-panel_bd&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&a&&Text'),\n        desc: parseDomForHtml(list[j], '.thumb&&.pic-text&&Text'),\n        img: parseDom(list[j], '.thumb&&a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail&&p,3&&Text'),\n        url: parseDom(list[j],'h4&&a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://wap.wnvod.net/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\nvar arts = parseDomForArray(html,'.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nd.push({\n        title: \"\"+ parseDomForHtml(html, '.data,1&&Text').substring(0, 14) + '\\n' + parseDomForHtml(html, '.data,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.data,3&&Text').substring(0, 15),\n\n desc:  parseDomForHtml(html, '.data&&Text').substring(0, 33),\n\n\n    pic_url:parseDom(getResCode(), '.lazyload&&data-original'),\n\n\turl: getUrl(),\n\t col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nvar des_desc = parseDomForHtml(html, '.data,4&&Text');\n\nd.push({\n        title: '‘‘’’<small>简介:<font color=\"#808080\" >' + des_desc.substr(0, 70) + '...</font><small><font color=\"#ff5f00\">详情</font></small></small>',\n       url: 'hiker://empty#' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title:MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\nfunction setTabs(tabs, vari) {\n\n\nd.push({\n        col_type: 'big_blank_block'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: tabs.length > 3? 'scroll_button' : 'text_3'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n          try{  for (var j = list.length - 1; j >= 0; j--) {             \nd.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)[集 话 季]/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n});\n    }\n            \n        } else {\n         try{   for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)[集 话 季]/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3? 'text_4' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n});\n    }\n            \n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('vLrmLHEXDew5Wm2f/s4IJFef9/5lU8bww1OYWWjizpMD/xgxj58WX3+l+kJio6XHL5M/94wQgNWTeVF0tecaubZvSkHLoZK4naooewOSCNZkKwtsGA2AU7gir4huxsxm5uXpU2iVxijSt5o4uTLMIvpWlLtYQP5wkUmmHAZ8WzhWjFuGS+gNdXRLHHNF1xIOrrd3GR9v35h0yMt04jAnclR4Fu+ZB8Ec78NU1PyYTwVAlTKvR94kS5GLw7QnEeAmB6i9n7S9zneDvmuejkF1EwIkSAnYdU7SSoJHJ3WS95bkfoz1bPvaDS4sft7p7SFyRpikKOBF6FwIhwkNfn4YNQXToJluDLfJjB6lcZMHQsFKA6lIHYFitUScT9aXbkHkOnBQBcA32BWNgvHrVYVVhTgiEA9svzhgPMjMg203oyYsTCYo+4UCEQ4dlbytWQYBd7OD+C71bzFTPsaQaWniZj30OAxUvOxMJ9XubXsMhLlXbPqonzWiiiHsXA+I4aof8dDzmjvweAa6d0EKG/1oR5tpIRHivkoOVzIfIKjvZx8w7h2dZ1x03x2esYrTjI4xn06IOf2ELCbZESlLZda1ycOW0edXorXEXkISXHmdx4EBcTIJ6Nztz6zZKSf3Ad6wPKM1CeIt4gvPTC/2gGcwMZEgAE1e0vxOMFnxjvus9erqeLEnBmgPJKMUhERQ2pvLoWghFRU+saAgwJyrYpuXtuEZeeTplgoaS4KqAn/0Wz+yLWuih8zC6lXVBtvTthk5p/PnByJ+46cWnKimoWGmfTuY1A2dd3ElxRbpMmM7WmGabEro8Nhu8ZZISQYiHDQGbfNh9+8NzSJpaS9nIEwz2ZUlB8s38k9AAC2kybYtKmeeTgwit5h5Lh5ara6Ukub8/1A/yPRn3ln+oiF89R1tTlbjmccQZjFc2WwV85z/LcOxzYkqmUiDgvIwaAtCXLXYg/L4UBgON02cqwKcN7FcENXOrunnzRmc9iRP+nopuSoGOlXSJWxwmNX6KqTA2Y2gfCoHmszka7h4yVcKo4xVcj3LS/udSdDhBVel39YQlfz8VeleeTZF5Ekbn7iHP0ik6xJSAzYrSIbaQ1PTlpl+wSZFUP0/Dl+1GUXQQPcBwjBc6JlHV2RhsPhSUNm6OtgEtgug1rByK81ovmRlH6GqJR8JnYs1QAY2lChLpmR3W5JJeUrD2dALs5lDDvvfrlUdi2DDh6lEjFbpzoTMbczF9g==')\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/129.png"},{"last_chapter_rule":"","title":"牛马TV♔","author":"蓝莓果酱UX","version":4,"type":"video","url":"hiker://empty##http://www.niumatv.com/vodshow/id/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav'\nconst 拼接分类 = 'body&&.lists-content&&dl'\nconst 小类定位 = 'body&&a:not(:matches(首页|明星|资讯|敏感|专题|留言))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, 'body&&li:has(.lazyload)')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.note&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&li:has(.lazyload)');\n\nfor(let l of list){\n    d.push({\n        title: pdfh(l, 'a&&title'),\n        col_type: 'movie_3',\n        desc: pdfh(l, '.note&&Text'),\n        content: pdfh(l, '.countrie&&Text'),\n        img: pd(l, 'a&&data-original'),\n        url: pd(l, 'a&&href') + '#immersiveTheme#'\n    });\n}\n\nsetResult(d);","search_url":"http://www.niumatv.com/vodsearch**/page/fypage.html","group":"1影搜","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\n\nvar html = getResCode();\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.playlists&&dt');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playlists&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.product-excerpt,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.product-excerpt&&Text');\n\nvar 导演 = parseDomForHtml(html, '.product-excerpt,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.product-excerpt,3&&Text');\n\nvar 图片 = parseDom(html, 'img,1&&src');\n\nvar 简介 = parseDomForHtml(html, '.product-excerpt,-1&&Text').replace('简介：','').replace('详情','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2FnlqrIA5sMWnmRxD3BMHkAGUxKs2osorxqH6h8IHHjzrK/Jr7NEB0A0HLRxyACVxUeNp8WCQFkyAVYUE6156K68mZ/xI7NEB9sA6GS+UCtHVfSFjGIR2yd4FlajVy/WOBaWCr4hg/61NJ7Zom+IeJugrfHDrwgHsDrAJkUrn4TNT1EQIhCT3C6DAyJ/BG9h02b8mDsB01oNllvEodsCv0bHD7YmkXU4zwLC0Ouf51FYU4PZy/4cC1ucgKwg6EbyyMzkgcfxnMJYyJV0vZQAJNh8rfEiaviHC8O3UDv8rdXS13dTe7U8z7Cj7Vby7e8mJeDpsr8aiHHuO+s6N0ZLY+XGvfVDOSOWJXFyEYXEhQfmCYkm93S/lJPvBFX7VCgvm4OBx7EFBa2oE8AsA6nRKX2xnHmPz/mi78tROFM5qnoAHt4OBZBa78lE6jOmYiP9zM5V2wXUgIa+/Si9rHvztLFpV14CP2XFQKbVmoJ98bSiArg/mJby6Rj//zNu4mQ5IpMGtKP4nFBgYJrCttitE5URed8LHFdF5mVfYQcEVtGpXqd/p//HxQZWxb1H0AUmOnGNiZezRyUqV8G7tiQ8PCB0DnFsxrHJ2+a6xVT+PfKY3yzEstQcC4nCLliD0rmdwa+3bmHROn95+lhcSUC30vEQWYYkAIHNQJjMOYHtzjzjkNb6q7mAIG3EVxicYG/lMQbWEMCzE6Pc/mVOYaXF8mGLPrvF2IAguPhiS2BvBWS5WLB9QUHaJZEOpcf1Gn98jTAHSXT4HNbGz7tmoPnFBG8TsRAwaPOkvbmKVIV2YC+Y4vWfCxTL6MISxtrAHjWGBkxXKrNZ8Yi7g7VI1Ap6G9KonL2vyW/R8SUMy78wmW77/HWA4gu66lKw3zWf7Ap5x9wGdnjWmCM4Uu18bDJGu8Wb5asSXk1WSeQbwT8PCkUKSIqHT9fUfzlmCaJpraA6NhzqZ+SzDkz28StDVeRpYNtP11ksT3Uosh4eh+lKMBp9uh1Gt89Fj3BMJIgBrKkgmsv2NwkQPfi6dzbZNVPwnOKHjDEj7wbPRtBky9wmF9TqVahB8sloCeWcC0Ab8S3pIHf7Or8PG1ScuTrC0gaZj/MId/Vn7+PDxwbtq9ItkHUuBP8FRHoOwyEQGnlP0+Z9rXYNgD04PydschPp2Fop1GpToTFmqTuvawcLf16ExroluIC1OFJongniKMddyXU7n0ponMDMdxa0VraxdiFOCYg8PL/TyWoSeQKDyV+LY7+2hQ6ItSyoJPqDOky2wT+cfuMjWScKsz6eMRzBBSxHaqeYXUrJ/z/SA39bBMBXSB8OPsL+q576mO7xnRkl6nUPz+5Lo6Xd31sUuAO3fciq+/MFWqSrongqPMxngRBqDTgaombrr8ZUQuOKgvXFdjRyeaSO1KY+qliotJHT7pYocpBXUoyeHDz2oteSjcQkIsBQUEqE0KNVkf2LJRrKBZkFQmDqzmSfEapmGOG4IdZBYbH3LPu24KuLafb4jWSUQAgW9qtzVrYEFRDJN6GF31wcWPP/FRzytsKnA9Cm1sLD5cPlW2epAYf3pytZchwt3EGgXQHhtjkOli+tcOnRljAa31V9WRE9gYRUkq1LP1YkdZoKOg2CUIW1nvfK5iE4tf/E+Fu3CtfeoNT/guWpM3jjho=')\"}]","icon":"https://i.loli.net/2021/11/03/s9EowCQmVKrL8D5.jpg"},{"firstHeader":"class","last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'span&&Text');\nsetResult(\"更新至: \"+title);","title":"1080看·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##http://www.1080kan.cc/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\n//自定义颜色\nconst Color = \"#19B89D\";\n\nconst a = MY_URL.replace('hiker://empty##', \"\");\nlet true_url = getVar(\"jh.url\", a)\nconst page = MY_PAGE;\n\n//翻页 需要根据实际替换\nif(getVar(\"jh.url\")){\ntrue_url = true_url.replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')\n}\nconst html = fetch(true_url)\nconst empty = \"hiker://empty\"\n//获取列表 \nconst categories = parseDomForArray(html, '#main&&.scroll-content')\n\n//setError(true_url);\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\n// 取缓存\nconst fold = getVar(\"jh.fold\", \"0\")\nconst cate_temp_json = getVar(\"jh.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想看...\",\n    col_type: \"input\"\n});\n\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #c93756\">: (</span></b>' : '““””<b><span style=\"color: ' + Color + '\">: )</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"jh.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'div&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"jh.category\", JSON.stringify(new_cate))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text');\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color:' + Color + '\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"jh.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n//一级页面\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href')+ '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = JSON.parse(getResCode()).list;\n\nfor (var i = 0; i < list.length; i++) {\n    var L = list[i];\n    d.push({\n        title: list[i].name,\n        img: list[i].pic + '@Referer=',\n        url: 'http://www.1080kan.cc/voddetail/' + list[i].id + '/#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"http://www.1080kan.cc/index.php/ajax/suggest?mid=1&wd=**;get;utf-8;{User-Agent@Mobile}","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/lazy')).rule);\neval(JSON.parse(request('hiker://page/module-tab-item?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    evalPrivateJS('IuKJZVtbbJSTtZyrYva6n/5eh7ssv7ZloOjj/LKeRVH8msZ7SiszA0XwmpuUht9BMj1V2kieeuC5EFQL1vKX6iOHlkDUYuubHUEylHJzXyJTOkerP5FbSzCxDTyZJuUObgl7MB1HzO+nyOYq+HEdNcZZvte76zu5bFms6TzVBqJykZi4W9y9Riubci2aJGEXOHtYmNdo60hi7guRhrPESFM6R6s/kVtLMLENPJkm5Q6MuPDY3aNFh8KgoCHQyneNxlm+17vrO7lsWazpPNUGor9xm7ZJRKGj5Mkl5v5IWg7TlgmwEUs3Mmotirnc9uadqbxS8mcqHDWo20nzYB30CGCkW9y1oJ4FvnUofB6/vxEYFrakTdyehogBha7tFCOl47mk+9b2BMRp5qrKl7LanvKtJ4yrjyDSSrgLknpTF+Vmuu75BHijxGGUnuObVPhZEtvWQV4qhXsRxraJ9I+8mflfwUIbpxeATIqgG6fmt4QMpbnOIrCE1C/nmNYjOfHc0g6z+wEUh47h13WMLOCnRro2vm4RGI1d9SgHtOrc2FXhJ/75lU2Pqj/F+kykIhM6WxVWA4ppbgjtACRpI611UzzvcuXIErgr1D/PugFmhOVd7dS084Upj37elQ9FShtBXLNotNnCdxYN+tvM6Hgq+OUf7+QvdTzRAW87qgCNlYopDT7QAGjEjbs9r4Mfm5LQfsdnNpftAOVsQbcI5zfMqrOzx/TCs205SG1gp1fsG0oq5a0/g08VsQcCY+0J6THZUkWudmODJj5UKp45dCeyxJ2KxWDUTEplLvI6dyugz+tn2t51ZxeDlmKUmjCZ6Bubf5n+DJ8EMhLwUcgyIyPC+B04WmWopVB0cq6CAI9480wxbnDRvTCw13Qv8zLYj/DIqmsE7fReAMfqcMrEdswH7nMZLot6QpWpMbzlADKnBjcnegpO8SVlgLBpU4n9QzkkzSfAtPEqEVhuxOFsIndPedl8psP/HQOoZMn4ajH+OCPIPZGRMuPBt6lQve+9HHZo0HSzYNo8bjvs8w3cIp25SB8vxniaRJTcMi9J1Ed3Pi7BubCE5vTI8n6FFpMR6Z5whawMOnHDiHCWk+NGP6O2vQ9HlROKIGKTb5OzBtZafRZ/fhF2hwwXoT0e70hEA5SIvqoQ9voaZJUMBQUrig4IR27Wi8dfUl4Zd54PVQh8fK1e7yli8Ur6sB5PZb4yoHimAbrmMspPLTcjkvF6Pk9v1SMct0ACEp+2sSSm9Z/0ibQ5O0AE7mRzThHb6DP/BpWjSf7n5Kloknkegx7hJePEz/20VhxBKPqu/SE89/pNfxhrtkCJxZN0VeKar8uQAIDnqRFbExxCdrPkKpuGz0Ziu8B4N5qL1GO0/Rk0ji0FiiRqYL6UTvLWEgMNSVjqeyCAXvFgspdhhnmt7yD37k1ShXDmw1nq3fqpUBhLoFg7XxfmYq0/5dOBICM7xakwW/vSJej6DWnTLwbfxDThmCPXAkMRLW1dJN6GI7v+Aw50pCQyv08vWeA8rrD3DIfd3jEd7a2gJfJTWAE2lQ4KJ5Hko5OauRrAw+LlDtrEY6NDWKcv8UD258Pwz5lJYF45SGFbxpkrH7RsXB3SRcVwky+qR4QwkTLndc3/CMJ30THHDEs3FLnRK1oPbhvpZbqLuzDNQO5opd876W4tH5dnrcN5tSW8onUixF52jl9XMUEf55OoaerPrzHtcQtnPelm34ZeUFIV0UVkyRqLJS/f0X1BX9bSqwEdrcLNjor4UkRsjYldSjJ4cPPai15KNxCQiwFBDtqRHEUYBWGNztEDwA2Q5slyXzbnxd2aFR2oi5CN8IdwKbmXPq8cql0X+kSAvlnr4X+M+RtEwY3Kus3IC8th/sWpmYER2iter5mRM2p7kwzxo+ufakyMEEj9K2XEEu45')\\n   \\n    return play + '#isVideo=true#'\\n})\"}]","icon":"http://82.156.222.77/img/jh.png"},{"last_chapter_rule":"","title":"9亿国语","author":"佛尘","version":0,"type":"other","url":"http://www.9eguoyu.com/vodshow/fyclass/page/fypage.html","col_type":"movie_3","class_name":"国语&热播电影&电影&电视剧&国语&热播","class_url":"gypy&zuijinrebodianying&dianying&lianxuju&guoyupeiyinhanju&zuijinrebodianshiju","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://img1.baidu.com/it/u=1689520179,2927240387&fm=26&fmt=auto"},{"firstHeader":"class","last_chapter_rule":"","title":"奈落影院.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"hiker://empty##https://newfii.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\"body&&.module-item;.lazyloaded&&alt;.lazyloaded&&data-src;.module-item-text&&Text;a&&href\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(.*?).html/)[1];\ntrue_url = 获取正确链接(null,null,false).replace(\"/type/\", \"/show/\");\nlet cates=打造动态分类([{\n        一级分类: 'body&&.library-box',\n        子分类: 'body&&a:not(:matches(4K专区片库))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-search-item;.video-info&&h3&&Text;.lazyload&&data-src.js:input+'@Referer=';a.video-serial&&Text;.video-info-header&&a.video-serial&&href.js:input+'#immersiveTheme#';.video-info-item,-1&&Text\";\n一级(parStr,true);","search_url":"https://newfii.com/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.video-info-header&&h1&&Text;.video-info-items,3&&Text',\n img:'.lazyload&&data-src',\n url:'.lazyload&&data-src',\n desc:'.video-info-items,0&&Text;.video-info-items,1&&Text;.video-info-items,2&&Text',\n content:'p&&Text.js:input.replace(\"收起\",\"\")',\n tabs:'body&&.tab-item',\n lists:'body&&.sort-item,#id&&a',\n tab_id:'',\n};\nvar lazy=X5($.toString((PC_UA)=>{\n    eval(fy_bridge_app.getInternalJs());\n    try{\n    var urls = _getUrls();\n    //fy_bridge_app.log(JSON.stringify(urls));\n    let text=document.querySelector(\"body\").innerText;\n    //fba.log(text);\n    for(let i in urls){\n        if(urls[i].match(/(.*)\\.zip$|danmu\\/pic\\.php\\?url=|\\.m3u8|\\.mp4/)){\n            //return urls[i]+';{User-Agent@'+PC_UA+'}#isVideo=true#' \n            return urls[i]+'#isVideo=true#'\n        }\n    }\n    //return location.href\n    }catch(e){\n        fy_bridge_app.log('发生错误'+e.message);\n    }\n    try {\n   document.querySelector(\"a:contains(继续观看)\").click()\n    } catch (e) {}\n},PC_UA));\nvar 指定ua=PC_UA;\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://img.youxi369.com/down/logo/202110/1634190897zdf7.jpg"},{"last_chapter_rule":"","title":"魔卡电影网","author":"家娃","version":0,"type":"video","url":"https://www.kumoka.com/mkshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-').replace('-up', 'up-')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动画电影&犯罪片&悬疑片&奇幻片&冒险片&惊悚片&国产剧&港台剧&日韩剧&欧美剧&海外剧&泰剧","class_url":"1&2&3&4&6&7&8&9&10&11&12&24&27&35&41&42&43&44&13&14&15&16&23&37","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&新加坡&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&新加坡&其他","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.searchlist_titbox&&p,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.searchlist_titbox&&p,2&&Text').replace(/简介：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.kumoka.com/mksearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n\n    function toUrl(url) {\n        //log(\"播放地址-->\" + url);\n        if (url.indexOf('bilivideo') != -1) {\n            return url + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n        } else if (url.indexOf('titan.mgtv.com') != -1) {\n            return url + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n        } else if (url.indexOf('com/gzc') != -1) {\n            return url + ';{Referer@https://www.kumoka.com/}';\n        } else {\n            return url;\n        }\n\n    }\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        playUrl = decodeURIComponent(html.match(/plurl =\"(.*?)\"/)[1]);\n        var plfrom = html.match(/plfrom =\"(.*?)\"/)[1];\n       // log(\"plfrom-->\" + plfrom + \"***plurl-->\" + playUrl);\n        if (plfrom == 'leduo') {\n            var jxUrl = \"https://www.kumoka.com/static/player/players.php?url=\" + playUrl + \"&plfrom=leduo\";\n            var jxHtml = request(jxUrl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n                    \"Referer\": input\n                }\n            });\n            playUrl = pdfh(jxHtml, '#example-video&&source&&src');\n           // log(playUrl);\n        }\n        //如果播放地址存在m3u8等扩展名直接返回\n        if (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            return toUrl(playUrl);\n        } else {\n            return 'toast://解析失败，可能链接无法访问。'\n        }\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    var item =parseDomForHtml(arts[i], 'a&&alt');\n   tabs.push(item);\n    \n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play_source&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 =  parseDomForHtml(html, '.content_min&&.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.content_min&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.content_min&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.content_min&&.data,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original')+'@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.full_text&&span&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://www.kumoka.com/template/conch/asset/img/ios_fav.png"},{"firstHeader":"class","last_chapter_rule":"","title":"友播TV.dr","author":"道长&情້໌ᮨ","version":0,"type":"video","url":"hiker://empty##https://www.youbotv.cn/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVRLmKvoUg5wsLHMYcQURS3FcFSnRsh1drySmlUaq9i+3wo+Jg4/0WltZSeEhk515pl8ugSp/sJ0bZBw6cihfXZOTm6bWDcENtECiauhBo5b3DVfanahs/y0iZxcSL0PJAcQ==');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".module-list&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/\\/(.*)--------(.*?)---.html/)[2];\ntrue_url = 获取正确链接();\nlog(true_url);\nlet cates=打造动态分类([{ \n        一级分类: 'body&&.library-box',\n        子分类: 'body&&a:not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-search-item;.video-info&&h3&&Text;.lazyload&&data-src.js:input+'@Referer=';a.video-serial&&Text;.video-info-header&&a.video-serial&&href.js:input+'#immersiveTheme#';.video-info-item,-1&&Text\";\n一级(parStr,true);","search_url":"https://www.youbotv.cn/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={ title:'.video-info-header&&h1&&Text;.scroll-box&&Text;.video-info-items,2&&Text',\n img:'.lazyload&&data-src',\n url:'.lazyload&&data-src', \n desc:'.video-info-main&&Text;.video-info-items,1&&Text;.video-info-items,2&&Text', \n content:'.video-info-content&&Text.js:input.replace(\"收起\",\"\")',\n tabs:'body&&.tab-item',\n lists:'body&&.sort-item,#id&&a',\n tab_id:'',\n};\nvar lazy=X5($.toString((PC_UA)=>{\n    eval(fy_bridge_app.getInternalJs());\n    try{\n    var urls = _getUrls();\n    //fy_bridge_app.log(JSON.stringify(urls));\n    let text=document.querySelector(\"body\").innerText;\n    //fba.log(text);\n    for(let i in urls){\n        if(urls[i].match(/(.*)\\.zip$|danmu\\/pic\\.php\\?url=|\\.m3u8|\\.mp4/)){\n            //return urls[i]+';{User-Agent@'+PC_UA+'}#isVideo=true#' \n            return urls[i]+'#isVideo=true#'\n        }\n    }\n    //return location.href\n    }catch(e){\n        fy_bridge_app.log('发生错误'+e.message);\n    }\n    try {\n   document.querySelector(\"a:contains(继续观看)\").click()\n    } catch (e) {}\n},PC_UA));\nvar 指定ua=PC_UA;\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://codeberg.org/hjdhnx/hiker/raw/branch/main/js/预处理.js');","pages":"[]","icon":"https://www.youbotv.cn/upload/mxcms/20220218-1/572c640ad257b564a1e9a2042379e120.png"},{"last_chapter_rule":"","title":"九亿·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://www.9eguoyu.com/vodshow/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.myui-screen__list'\nconst 小类定位 = 'body--a&&a:not(:matches(资讯|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\npdfa(html, '.myui-vodlist&&li').forEach(list => {\n    d.push({\n        title: pdfh(list, 'h4&&Text'),\n        desc: pdfh(list, '.pic-tag&&Text'),\n        img: pd(list, '.lazyload&&data-original'),\n        url: pd(list, 'a&&href') + '#immersiveTheme#'\n    });\n})\nsetResult(d);","searchFind":"js:\nsetResult(JSON.parse(getResCode()).list.map(data => ({\n    title: data.name,\n    url: MY_HOME +\n        '/voddetail/' +\n        data.id +\n        '/#immersiveTheme#',\n    img: data.pic\n})))","search_url":"/index.php/ajax/suggest?mid=1&wd=**&limit=500","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\nvar lazy = $('').lazyRule((MY_HOME) => {\ntry{\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        if (/mp4/.test(url)) {\n            url += ';{Referer@https://www.9egood.com}'\n        }\n        return url\n    } else {\n        var jx = request(\n            MY_HOME + '/static/player/' +\n            html.from + '.js'\n        ).match(/src=\"(.*?)'/)[1]\n        if (/html/.test(url)) {\n            return request(jx + url).match(/url: \"(.*?)\"/)[1]\n        } else {\n            eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"))\n            eval(fetch(config.cj))\n            return ParseS.maoss(jx + url, MY_URL, \"A86EAC8C2B888888\")\n        }\n    }\n}catch(e){return 'toast://当前会员线路'}\n}, MY_HOME);\n\neval(JSON.parse(request('hiker://page/nav-tabs?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://android-artworks.25pp.com/fs08/2021/07/10/4/123_ec28f82969bb31ccd7a6794592948e56_con_100x100.png"},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&li');\n        chp.push(list.length);\n    }     \n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"蓝光影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##https://www.lgyy.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype\\/(\\d+).html/, 'vodshow/$1-----------.html').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')\n}\nlog(true_url)\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-card-item-poster');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-note&&Text'),\r\n       img: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.lgyy.cc/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('6rySfIeN3hsCAqUc3KkURJbJIXdwuJFz/adduvbmQ2HfqHFXVN3US5KPTK/sYj/RwNn9Wg11DHsagUf0evCgNzS8ZwMgG30PF/sMSa1Zqrjw9HQHG7hZoPmt2kUS5hTFOa1N0pd8J5Id2rDZ8hnm/UAGCc9fvrJVD4ghGxB8A1XJnZq6OHW+VPzBuIDL7efAXQE8lXxzMUNcNcCpNcgU8QioluKosR2ii5owwThy4iogOSDm9i7uglTb7iNVHerxJLt3eeSU/vlR8E9v3Z/SUXVlHrhvy2AYIHYMjOIsnqCwkKKbLNSVoErzs52YclndWyBzevnwOSMIgpU2dM0QF85p1CHa1NSxiKqvVpxu19nOOTz5XVsyW1tAotqtQcoIHH/uaGGS6n1ekUVqZHBXpZlnnI1ekdKY/RC8T8JGYTNcwbyfFpugFIvsQI0PYnDdeL+u6XpxtB1EvBuZfByTVGY/EkU2infv5b5bHYoVmo4nfRnNZsivxCFyQI7re9rr') \"}]","icon":"https://www.lgyy.cc/mxtheme/images/applogo.png"},{"last_chapter_rule":"","title":"毒蜥蜴·H2","author":"发粪涂墙&猫猫","version":1,"type":"video","url":"hiker://empty##https://www.duxiyi.com/show/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|直播|资讯|APP))'\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n\ntrue_url = true_url.replace('---.html', +page+'---.html')\nlog(true_url)\n\n\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"https://www.duxiyi.com/vodsearch/index.html?wd=**","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 搜索标签 = '';\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy1\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = ''.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if  (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)){\\n            fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"\\njs:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\\n\\n//log(true_url)\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"}]","icon":"https://bafybeifeuvm4pmvdj2l7a7ne6w4sa3a5xq56zsyntstefl45dtatf6snve.ipfs.cf-ipfs.com/"},{"last_chapter_rule":"","title":"kan8","author":"发粪涂墙&猫猫&风吹发梢学套娃","version":20,"type":"video","url":"hiker://empty##https://kan8.vip/vod/show/id/1/page/2.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|直播|资讯|APP))'\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n//log(true_url)\n\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"https://kan8.vip/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 搜索标签 = '';\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy2\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = ''.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' 分类 '\\nconst 动态扩展 = ' 全部 '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"海阔视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/ke/173.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://gitee.com/fly1397/hiker-icy/raw/master/aliyun.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\n/*d.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\n/*d.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: 定位封面2,\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic',\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/19.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配(网页嗅探)\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if  (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)){\\n            fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'webRule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"\\njs:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\\n\\n//log(true_url)\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配(小棉袄改良)\",\"path\":\"lazy2\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n            //fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n            //fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"}]","icon":"https://lanmeiguojiang.com/tubiao/more/86.png"},{"last_chapter_rule":"","title":"我爱了·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://5ile.cn/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src').replace(/http.*?url=/,'')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\neval(JSON.parse(request('hiker://page/module-search-item?rule=模板·Q')).rule)","search_url":"/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/lazy')).rule);\neval(JSON.parse(request('hiker://page/module-tab-item?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\neval(request('https://5ile.cn/5ileplay/?url=' + url).match(/var config = {[\\\\s\\\\S]*?}/)[0])\\n    return config.url\\n})\"}]","icon":"https://5ile.cn/template/conch/asset/img/favicon.png"},{"last_chapter_rule":"","title":"星空·H2","author":"发粪涂墙&猫猫&羽","version":5,"type":"tool","url":"hiker://empty##https://xkys.tv/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|看|专题|APP|剧情|地区|年份|字母|排序))'\n\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n\n\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', +page+'---.html')\nlog(true_url)\n}\n\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': MOBILE_UA /*PC_UA*/\n    }\n})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"https://xkys.tv/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"playfrom\\\"], //2⃣️🆘\\n            url: \\\"playfrom\\\",\\n        },\\n        {\\n            keys: [\\\"index-area\\\"], //1⃣️🆘\\n            url: \\\"index-area\\\",\\n        },\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(\\\"@@#\\\" +urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n           // fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n           // fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"js:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\n\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nvar html = fetch(MY_URL, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\nif (getVar(MY_RULE.url)) {\\n    true_url = true_url.replace('.html', '/page/' + page + '.html')\\n    //log(true_url)\\n}\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"DD.链接工具\",\"path\":\"hiker://files/rules/js/UrlProcessor.js\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: 'vodtype\\\\\\\\/(\\\\\\\\d+)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/vodtype(\\\\/\\\\d+)\\\\.html/, 'vodshow$1-----------.html')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: 'type\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/type(\\\\/\\\\w+)\\\\//, 'show$1-----------/')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+\\\\.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+)\\\\.html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*(\\\\\\\\.html|\\\\\\\\/)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1') // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级index-area🆘\",\"path\":\"index-area\",\"rule\":\"var 一级列表 = '.index-area&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'other&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级playfrom🆘\",\"path\":\"playfrom\",\"rule\":\"var 线路列表1 = 'body&&.playfrom&&li';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.videourl';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.ct&&.ee&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"}]","icon":"#ff62a6fb"},{"last_chapter_rule":"","title":"Mizmovie","author":"发粪涂墙&猫猫&道长&顺搜&风吹发梢学套娃","version":2,"type":"video","url":"hiker://empty##https://www.mizi6.com/vodshow/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d = [];\n\nconst 一级定位 = 'body&&.navbar-items'\nconst 二级定位 = 'body&&.module-class-items'\nconst 统一定位 = 'body&&a:not(:matches(首页|直播|资讯|APP|追剧周表|今日更新|热榜))'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nvar page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/list\\/(.*?)\\.html/, 'vodshow/id/$1.html').replace('.html', '/page/'+page + '.html')}\n//感谢墙佬提供的教学模版，模版Q牛啤！\n\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA}})\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire('hiker://page/SearchFrame')","search_url":"https://www.mizi6.com/vodsearch/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)&&Cookie@.js:getVar('Miz$cookie')}","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n\n\nvar 搜索标签 = '';\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA\n    }\n})\nrequire(\"hiker://page/SecondaryTemplate\");\n//萌新套娃只会用个嗅探，速度慢当看个笑话","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        }],\\n }\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        //log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            //log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"A.module-items(1080kan)\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-cover&&Text'\\nvar 一级图片 = 'img||.lazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"B.module-tab-item(1080kan)\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.module-play-list';\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.module-info-introduction&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' 分类 '\\nconst 动态扩展 = ' 首页 '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)+'@Referer='\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) +'@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#放飞的猫猫二级风筝\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\nvar 线路列表1 = 'body&&.module-tab-item';\\nvar 线路标签1 = 'span&&Text';\\nvar 定位简介1 = '.module-info-items&&Text';\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('JQQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nvar 集数列表1 = 'body&&.module-play-list';\\nvar 集数标签1 = 'body&&a';\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#5959AB\\\">影片标签</font></big></b><small><font color=\\\"#5959AB\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">更多</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: 'https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/img/yuedu/13.jpg',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"海阔视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/ke/173.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_round_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://gitee.com/fly1397/hiker-icy/raw/master/aliyun.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_round_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_round_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_round_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\n/*\\nvar lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\\n//道长通免大法，未写本站免嗅\\nvar lazy = $(\\\"\\\").lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\nlog(html)\\n        var url = html.url\\nif (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\nlog(url)\\nif (url.search(/\\\\.mp4|\\\\.flv|\\\\.m3u8/) > -1) {\\n        return url;\\n    } else {\\n        const { lazyParse } = $.require(\\\"hiker://page/globalParse?rule=\\\\u9053\\\\u957f\\\\u4ed3\\\\u5e93Pro\\\");\\n                    return lazyParse(input)\\n             }\\n    });\\n*/\\n//简单解析嗅探尝试\\nvar lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n   if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n//log(url)\\nif (url.search(/\\\\.mp4|\\\\.flv|\\\\.m3u8/) > -1) {\\n        return url;\\n    } else {\\n    var ju = pd(fetch(input), '.player-box&&script,1&&src');\\n        eval(fetch(ju));\\n    var jx =  MacPlayerConfig.player_list[html.from].parse\\n    if (jx == '') {\\n            jx = MacPlayerConfig.parse\\n        }\\n        var jxurl = jx + url;\\n       // log(jxurl)\\n        }\\n        showLoading(\\\"站点解析嗅探中,请稍后...\\\");\\n        var video = 'webRule://' + jxurl + '@'+ $.toString(() => {\\n            var urls = _getUrls()\\n            for (var i in urls) {\\n                if (urls[i].match(/\\\\.flv|\\\\.mp4|\\\\.m3u8/)) {\\n                    return urls[i];\\n                } \\nelse if (urls[i].match(/\\\\.flv/)) {\\n                    return urls[i] +  ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                }\\n                                     }\\n                          })\\n    return video\\n})\\n\\nfunction 空() {\\n    for (let i = 0; i < 5; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"未检测到选集，请web查看或搜索跳转\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/19.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                          })\\n                 }\\n            }\\n         } catch (e) {\\n                d.push({\\n                col_type: 'line'\\n               });\\n            }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\nd.push({\\n    title: '““””<small><font color=#3C3C3C>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\\n    desc: '““””<small><font color=#3C3C3C>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n\\n\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if  (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)){\\n            fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索子页\",\"path\":\"SearchFrame\",\"rule\":\"\\nvar d = [];\\nvar html = getResCode()\\nvar 一级列表 = '.module-items&&.module-item'\\nvar list = parseDomForArray(html, 一级列表);\\nlog('搜索结果')\\n//log(list)\\nif (list.length == 0) {toast('全部搜索完成,暂无更多内容');}\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = '.module-item-note&&Text'\\nvar 一级状态 = '.module-info-item-content&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)+'@Referer='\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片)+'@Referer=',\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"js:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\\n\\n//log(true_url)\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配(小棉袄)\",\"path\":\"lazy2\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n            //fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n            //fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'webRule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"CC.seeworld\",\"path\":\"dl\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = '.module-item-note&&Text'\\nvar 一级状态 = '.module-info-item-content&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"简易解析嗅探\",\"path\":\"lazy4\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n   if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\nlog(url)\\nif (url.search(/\\\\.mp4|\\\\.flv|\\\\.m3u8/) > -1) {\\n        return url;\\n    } else {\\n    var ju = pd(fetch(input), '.player-box&&script,1&&src');\\n        eval(fetch(ju));\\n    var jx =  MacPlayerConfig.player_list[html.from].parse\\n    if (jx == '') {\\n            jx = MacPlayerConfig.parse\\n        }\\n        var jxurl = jx + url;log(jxurl)}\\n        showLoading(\\\"网页解析直连嗅探中,请稍后...\\\");\\n        var video = 'webRule://' + jxurl + '@'+ $.toString(() => {\\n            var urls = _getUrls()\\n            for (var i in urls) {\\n                if (urls[i].match(/\\\\.flv|\\\\.mp4|\\\\.m3u8/)) {\\n                    return urls[i];\\n                } \\nelse if (urls[i].match(/\\\\.flv/)) {\\n                    return urls[i] +  ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                }\\n                                     }\\n                          })\\n    return video\\n})\\n\"}]","icon":"https://lanmeiguojiang.com/tubiao/q/68.png"},{"last_chapter_rule":"","title":"黑洞网🐯","author":"逐风者&&20220511","version":0,"type":"video","url":"https://nulltm.com/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/yiji')).rule)","searchFind":"js:\neval(JSON.parse(request('hiker://page/sbso')).rule)","search_url":"https://nulltm.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/erji')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级动态.stui-vodlist\",\"path\":\"yiji\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\nvar getRangeColors = function(){\\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\\n      }\\nconst 分类颜色 = getRangeColors()\\nconst 大类定位 = 'body&&.stui-header__menu'\\nconst 拼接分类 = 'body&&#screenbox&&.clearfix'\\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\nconst page = MY_URL.match(/-(.*)\\\\./)[1]\\ntrue_url = true_url.replace(/list(\\\\/\\\\d+)\\\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\\\d+.html)/, page + '$1')\\nvar html = fetch(true_url, {\\n    headers: {\\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n    }\\n})\\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\\npdfa(html, '.stui-vodlist&&li').forEach(list => {\\n  d.push({\\n       title: pdfh(list, 'h4&&Text'),\\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, '.pic-tag&&Text'),\\n       img: pd(list, '.lazyload&&data-original')+'@Referer=',\\n       url: pd(list,'a&&href')+'#immersiveTheme#'\\n  });\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级通免.stui-pannel__head\",\"path\":\"erji\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n//标题\\nvar title = parseDomForHtml(html, 'h2&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\\n\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\n\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'');\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.stui-vodlist\",\"path\":\"sbso\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\\n       desc: parseDomForHtml(list[j], ''),//【描述】\\n       content: parseDomForHtml(list[j], ''),//【详情】\\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"二级断插.stui-pannel__head\",\"path\":\"erji1\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n\\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));eval(fetch(config.cj));aytmParse(jsurl)+ '#isVideo=true#'}else{jsurl+ '#isVideo=true#'}`;\\n\\n//通免\\nvar lazy2=$(\\\"\\\").lazyRule(() => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl = unescape(base64Decode(jsurl));\\n    } else {\\n        jsurl\\n    };\\n    var from = player.from;\\n    if (jsurl.search(/m3u8|mp4/) > -1) {\\n        var video = jsurl\\n    } else {\\n        var play = input;\\n        showLoading(\\\"网页嗅探中,请稍后...\\\");\\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\\n            var urls = _getUrls()\\n            for (var i in urls) {\\n                if (!urls[i].includes(\\\"v=\\\") && !urls[i].includes(\\\"url=\\\") && urls[i].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                    //fy_bridge_app.log(urls[i])\\n                    return urls[i];\\n                } else if (urls[i].match(/\\\\.flv/)) {\\n                    //fy_bridge_app.log(urls[i])\\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                }\\n            }\\n        })\\n    }\\n    return video\\n}); \\n\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n//标题\\nvar title = parseDomForHtml(html, 'h2&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\\n\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\n\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'');\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\n\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n\\t   title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra:{gradient: true}\\n});\\n\\nd.push({\\n   title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' +'\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\n\\n\\nd.push({\\n    title: '香情',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n});\\n\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n});\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\n\\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\\n    let test_mode = getItem('dn.test_mode','断插');\\n    return it===test_mode?'👉'+it:it;\\n});\\nd.push({\\n    title:'‘‘’’<strong><font color= \\\"#098AC1\\\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\\n    col_type:'scroll_button',\\n    url:$(sel_title,3).select(()=>{\\n        input = input.replace(/👉/g,'');\\n        setItem('dn.test_mode',input);    \\n       refreshPage(true);\\n        return 'toast://已切换模式为:'+input\\n    })\\n});\\nif(getItem('dn.test_mode','断插认')==='断插'){\\n    var lazy=lazy1\\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\\n    var lazy=lazy2\\n}else{\\n    var lazy=\\\"\\\"\\n};\\n\\nfunction setTabs(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i);\\n                refreshPage();\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n\\tvar list = lists[index];\\n\\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\\n\\t// 将反序归正\\n\\ttry{\\n\\t\\tif (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]>pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n\\t} catch (e) {}\\n\\tif (tabs.length > 0 || list.length > 2) {\\n\\t\\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\\n\\t\\tif (getMyVar('选集排序') == 1) {\\n\\t\\t\\tvar avatar = icon_s + '正序.svg'\\n\\t\\t} else {\\n\\t\\t\\tvar avatar = icon_s + '反序.svg'\\n\\t\\t}\\n\\nd.push({\\n\\t\\t\\tcol_type: 'line_blank'\\n\\t\\t});\\n\\n\\t\\td.push({\\n\\t\\t\\ttitle:'<font color=\\\"#778899\\\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t共 ' + list.length + ' 条' +\\n\\t\\t\\t\\t\\\"</font></small>\\\",\\n\\t\\t\\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\\n\\t\\t\\tcol_type: 'avatar',\\n\\t\\t\\timg: avatar\\n\\t\\t})\\nd.push({\\n\\t\\t\\tcol_type: 'line'\\n\\t\\t});\\n\\t}\\n\\n\\tfor (let i = 0; i < 5; i++) {\\n\\t\\td.push({\\n\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t})\\n\\t}\\n\\n\\tfunction playLists() {\\n\\t\\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\\n\\t\\tif (list.length < 5) {\\n\\t\\t\\tvar col = 'text_2'\\n\\t\\t} else {\\n\\t\\t\\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\\n\\t\\t}\\n\\t\\td.push({\\n\\t\\t\\ttitle: jm,\\n\\t\\t\\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\\n\\t\\t\\tcol_type: col\\n\\t\\t});\\n\\t}\\n\\t// 开始选集分区\\n\\taddListener('onClose', $.toString(() => {\\n\\t\\tclearMyVar('当前线路名');\\n\\t\\tclearMyVar('分集起');\\n\\t\\tclearMyVar('分集终');\\n\\t}))\\n\\t//选集＞则启用选集分区（list替换成你的选集数组）\\n\\tvar 选集数组 = list; //改\\n\\tif (选集数组.length > 110) {\\n\\t\\t//设置每区选集数目\\n\\t\\tvar page_number = 100;\\nlet 底部换页='关闭';\\n\\t\\tvar star = getMyVar('分集起', '1');\\n\\t\\tvar end = getMyVar('分集终', JSON.stringify(page_number));\\n\\t\\tvar total = Math.ceil(选集数组.length / page_number);\\n\\t\\tvar catalogue = []\\n\\t\\tfor (let i = 0; i < total; i++) {\\n\\t\\t\\tcatalogue += i * page_number + ',';\\n\\t\\t\\tcatalogue = catalogue.split(',');\\n\\t\\t}\\n\\t\\tfor (let i = 0; i < 8; i++) {\\n\\t\\t\\td.push({\\n\\t\\t\\t\\tcol_type: \\\"blank_block\\\"\\n\\t\\t\\t})\\n\\t\\t}\\n\\t\\tfor (var i = 0; i < catalogue.length - 1; i++) {\\n\\t\\t\\tvar total1 = parseInt(catalogue[i]) + 1;\\n\\t\\t\\tvar total2 = parseInt(catalogue[i + 1]);\\n\\t\\t\\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\t\\t\\td.push({\\n\\t\\t\\t\\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n\\t\\t\\t\\turl: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n\\t\\t\\t\\t\\tputMyVar('分集起', total1);\\n\\t\\t\\t\\t\\tputMyVar('分集终', total2);\\n\\t\\t\\t\\t\\trefreshPage(false);\\n\\t\\t\\t\\t\\treturn 'hiker://empty'\\n\\t\\t\\t\\t}, total1, total2),\\n\\t\\t\\t\\tcol_type: 'scroll_button'\\n\\t\\t\\t});\\n\\t\\t}\\n\\t\\tif (getMyVar('选集排序') == 1) {\\n\\t\\t\\tfor (var j = end - 1; j >= star - 1; j--) {\\n\\t\\t\\t\\t// 打印选集列表\\n\\t\\t\\t\\tplayLists() //改\\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var j = star - 1; j < end; j++) {\\n\\t\\t\\t\\t// 打印选集列表\\n\\t\\t\\t\\tplayLists() //改\\n\\t\\t\\t}\\n\\t\\t}\\n\\t//底部页码\\nd.push({\\n\\t\\t\\t\\tcol_type: \\\"line\\\"\\n\\t\\t\\t})\\nvar yema=Math.ceil(end/page_number);\\nd.push({\\n\\ttitle: \\\"““”” <small><small><font color='grey'>\\\" + yema +' / '+ total+\\\"</font> </small></small>\\\",\\n\\tcol_type: \\\"text_center_1\\\",\\n\\textra: {\\n\\t\\tlineVisible: false\\n\\t}\\n})\\nif(底部换页=='开启'){\\nd.push({\\n\\t\\t\\t\\ttitle: '首页',\\n\\t\\t\\t\\turl: $(\\\"#noLoading#\\\").lazyRule(( page_number) => {\\nputMyVar('分集起', '1');\\nputMyVar('分集终', page_number);\\n\\t\\t\\t\\t\\trefreshPage(false);\\n\\t\\t\\t\\t\\treturn 'hiker://empty'\\n\\t\\t\\t\\t}, page_number),\\n\\t\\t\\t\\tcol_type: 'text_4'\\n\\t\\t\\t});\\nd.push({\\n\\t\\t\\t\\ttitle: '上一页',\\n\\t\\t\\t\\turl: $(\\\"#noLoading#\\\").lazyRule((star,end, page_number,total,选集数组) => {\\n\\t\\t\\t\\tvar s= parseInt(star)-page_number;\\nvar e= parseInt(end)-page_number;\\nif(end=选集数组.length) var e= s+page_number-1;\\nif(s<1){ \\nvar s=1;\\nvar e=page_number;\\n}\\nif(s>0){\\nputMyVar('分集起', s);\\nputMyVar('分集终', e);\\nlog(s+'-'+e)\\n\\t\\t\\t\\t\\trefreshPage(false);\\n}\\n\\t\\t\\t\\t\\treturn 'hiker://empty'\\n\\t\\t\\t\\t}, star, end,page_number,total,选集数组),\\n\\t\\t\\t\\tcol_type: 'text_4'\\n\\t\\t\\t});\\n\\t\\td.push({\\n\\t\\t\\t\\ttitle: '下一页',\\n\\t\\t\\t\\turl: $(\\\"#noLoading#\\\").lazyRule((star,end, page_number,total,选集数组) => {\\n\\t\\t\\t\\tvar s= parseInt(star)+page_number;\\nvar e= parseInt(end) +page_number;\\nlog(s+'-'+e)\\nif(e>选集数组.length){ \\nvar s=(total-1)*page_number+1;\\nvar e=选集数组.length;\\n}\\nputMyVar('分集起', s);\\nputMyVar('分集终', e);\\n\\t\\t\\t\\t\\trefreshPage(false);\\n\\t\\t\\t\\t\\treturn 'hiker://empty'\\n\\t\\t\\t\\t}, star, end,page_number,total,选集数组),\\n\\t\\t\\t\\tcol_type: 'text_4'\\n\\t\\t\\t});\\nd.push({\\n\\t\\t\\t\\ttitle: '尾页',\\n\\t\\t\\t\\turl: $(\\\"#noLoading#\\\").lazyRule(( page_number,total,选集数组) => {\\nvar s=(total-1)*page_number+1;\\nputMyVar('分集起', s);\\nputMyVar('分集终', 选集数组.length);\\n\\t\\t\\t\\t\\trefreshPage(false);\\n\\t\\t\\t\\t\\treturn 'hiker://empty'\\n\\t\\t\\t\\t}, page_number,total,选集数组),\\n\\t\\t\\t\\tcol_type: 'text_4'\\n\\t\\t\\t});\\n}\\n\\t} \\n\\n\\t// 结束选集分区\\n\\telse {\\n\\t\\tif (getMyVar('选集排序') == 1) {\\n\\t\\t\\tfor (var j = list.length - 1; j >= 0; j--) {\\n\\t\\t\\t\\tplayLists() \\n\\t\\t\\t}\\n\\t\\t} else {\\n\\t\\t\\tfor (var j = 0; j < list.length; j++) {\\n\\t\\t\\t\\tplayLists() \\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\n\\t\\n\\td.push({\\n\\t\\ttitle: '\\\\n',\\n\\t\\turl: 'hiker://empty',\\n\\t\\tcol_type: 'rich_text'\\n\\t});\\n}\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getMyVar(MY_URL, '0'));\\nsetResult(d);\"}]","icon":"http://yynews.cnnb.com.cn/pic/003/001/125/00300112568_edb63d0d.jpg"},{"last_chapter_rule":"","title":"融兴·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##http://www.rongxingvr.cn/vodshow/38--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//https://netflix.mom\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src').replace(/http.*?url=/,'')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\neval(JSON.parse(request('hiker://page/module-search-item?rule=模板·Q')).rule)","search_url":"/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/lazy')).rule);\neval(JSON.parse(request('hiker://page/module-tab-item?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n        eval(fetch(config.cj));\\n        return cacheM3u8(ParseS.maoss(\\\"http://www.rongxingvr.cn/test/?url=\\\" + url, false, \\\"AAAAAC0C2B402222\\\"))\\n})\"}]","icon":"https://img.ciyuanji.com/files/2021/07/22/e51e187315cc4abf87d817b218ac5ba3.png"},{"last_chapter_rule":"","title":"聚云盘Pro","author":"tee&MrFly&小棉袄🌞","version":10,"type":"video","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"全部&喵搜&小纸条&找资源&小站&UP云搜&盘基地登陆&云盘资源&网盘资源&JIKE&更多&易搜&TG盘","class_url":"all&https://www.alipansou.com&https://u.gitcafe.net/&https://zhaoziyuan.me/so&https://www.pan666.cn/&https://www.upyunso.com&https://www.panjd.com/&https://yunpan1.com/&https://aliwp.cn/&https://jike.info/category/2/%E8%AE%A8%E8%AE%BA%E5%8C%BA?lang=en-US&https://dalao.ru/w/&https://yiso.fun/&https://res.yunpan.win/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//随机图API地址，设置为空不显示图片\nlet pic = \"https://api.ixiaowai.cn/api/api.php\";\n//必应：https://api.isoyu.com/bing_images.php\n//美女：https://api.btstu.cn/sjbz/api.php\n//是否随机图，0固定，1随机（5分钟内固定）\nlet random = 1;\n\nlet white = [\n    \"//tx.me/\",\n]\nlet d = [];\nlet r = fetch(\"hiker://home@云盘汇影\");\nif (!r || r.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\n        confirm: ru,\n        cancel: ru\n    })\n}\nlet u = MY_URL.split(\"##\")[1];\n\nfunction loadUrl(u) {\n    let desc = \"auto\";\n    for (let it of white) {\n        if (u.includes(it)) {\n            desc = \"100%&&float\";\n        }\n    }\n    if (getAppVersion() >= 3018) {\n        desc = \"float&&top\";\n    }\n    setResult([{\n        col_type: \"x5_webview_single\",\n        url: u,\n        desc: desc,\n        extra: {\n            canBack: true,\n            urlInterceptor: $.toString(() => {\n                if (input.startsWith('https://www.aliyundrive.com/s/')) {\n                    return $.toString((url) => {\n                        fba.open(JSON.stringify({\n                            rule: '云盘汇影',\n                            url: 'hiker://page/detail?rule=云盘汇影&url=' + url + '??fypage'\n                        }));\n                    }, input)\n                }\n            }),\n            disableX5: true\n        }\n    }])\n}\nif (u == \"all\") {\n    let cls = getMyVar(\"cls\", \"\");\n    if (cls) {\n        u = cls;\n        loadUrl(u);\n        clearMyVar(\"cls\");\n    } else {\n        let r = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title));\n        let cn = r.class_name.split(\"&\");\n        let cu = r.class_url.split(\"&\");\n        let arr = [];\n        if (pic) {\n            arr.push({\n                title: \"\",\n                url: pic,\n                col_type: \"card_pic_1\",\n                desc: \"0\",\n                pic_url: random ? (pic + \"#_t=\" + Math.ceil(new Date().getTime() / 300000)) : pic\n            });\n            arr.push({\n                col_type: \"big_blank_block\"\n            });\n\n\n        }\n        for (let i = 1; i < cn.length; i++) {\n            arr.push({\n                title: cn[i],\n                url: $().lazyRule((u) => {\n                    putMyVar(\"cls\", u);\n                    //refreshX5Desc(\"top&&float\");\n                    refreshPage();\n                    return \"hiker://empty\";\n                }, cu[i]),\n                col_type: \"text_2\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n        }\n        refreshX5Desc(\"0&&float\");\n        setResult(arr);\n    }\n} else {\n    loadUrl(u);\n}","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.alipansou.com/favicon.ico"},{"last_chapter_rule":"","title":"五斗米","author":"小棉袄🌞&永远の明日","version":103,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=4563')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"hiker://images/icon4"},{"last_chapter_rule":"","title":"人人影视🤡","author":"缘分","version":0,"type":"other","url":"https://www.rr520.cc/show/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯|留言))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/list(\\/\\d+)/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.rr520.cc/search/**----------fypage---.html","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n                return html.url\n});\n\neval(JSON.parse(request('hiker://page/h3?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"电影先生·H2","author":"发粪涂墙&猫猫&👴🏿🀁","version":6,"type":"video","url":"hiker://empty##http://dianying.im/pianku-1--------fypage---/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|看|专题|APP|剧情|地区|年份|字母|排序))'\n\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n\n\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---/', +page+'---/')\nlog(true_url)\n}\n\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': MOBILE_UA /*PC_UA*/\n    }\n})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"http://dianying.im/search-**-----------fypage--/","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"playfrom\\\"], //2⃣️🆘\\n            url: \\\"playfrom\\\",\\n        },\\n        {\\n            keys: [\\\"index-area\\\"], //1⃣️🆘\\n            url: \\\"index-area\\\",\\n        },\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content||.video-info-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(\\\"@@#\\\" +urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n           // fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n           // fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"js:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\n\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nvar html = fetch(MY_URL, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\nif (getVar(MY_RULE.url)) {\\n    true_url = true_url.replace('.html', '/page/' + page + '.html')\\n    //log(true_url)\\n}\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"DD.链接工具\",\"path\":\"hiker://files/rules/js/UrlProcessor.js\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: 'vodtype\\\\\\\\/(\\\\\\\\d+)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/vodtype(\\\\/\\\\d+)\\\\.html/, 'vodshow$1-----------.html')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: 'type\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/type(\\\\/\\\\w+)\\\\//, 'show$1-----------/')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+\\\\.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+)\\\\.html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*(\\\\\\\\.html|\\\\\\\\/)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1') // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级index-area🆘\",\"path\":\"index-area\",\"rule\":\"var 一级列表 = '.index-area&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'other&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级playfrom🆘\",\"path\":\"playfrom\",\"rule\":\"var 线路列表1 = 'body&&.playfrom&&li';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.videourl';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.ct&&.ee&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"}]","icon":"https://lanmeiguojiang.com/tubiao/more/235.png"},{"last_chapter_rule":"js:\nvar ym=MY_URL.includes('iqiyi.')?request(MY_URL,{}):fetch(MY_URL, {headers:{\"User-Agent\":PC_UA}});\ntry{\nif(MY_URL.includes('bilibili')){\nvar des=JSON.parse(ym.split('newestEp\":')[1].split('}')[0]+'}').desc;\ntry{\nvar ep=JSON.parse(ym.split('\"epList\":')[1].split('}]')[0]+'}]'); \n}catch(e){ep=[];}\nif(ep.length==0)gxz=0;\nelse{\nfor(var i=ep.length-1;ep[i].badge=='预告';i--);\nvar gxz=ep[i].title;}}\n}catch(e){gxz=\"更新内容获取失败！\";}\n\n\ntry{\nif(MY_URL.includes('iqiyi')){\n/*\ntry{var v=JSON.parse(ym.split('videoInfo\":')[1].split('}')[0]+'}');}catch(e){var v={};v.aid=ym.split('albumId\":')[1].split(',')[0];}vi=JSON.parse(request('https://pub.m.iqiyi.com/h5/main/videoList/album/?albumId='+v.aid+'&size=1500&page=1&needPrevue=false&needVipPrevue=false',{})).data;if(vi!=''){v=vi.videos;gxz=v.pop().pd}else{i=v;if(i&&(!i.vt||!i.vt.includes('预告')))gxz=i.order;}\n*/\n\nvar gxz=ym.match(/latestOrder\".*?(\\d+)/)[1];\n}\n}catch(e){gxz='最新状态获取失败！';}\ntry{\nif(MY_URL.includes('qq')){\nvar htm=JSON.parse(ym.split('COVER_INFO = ')[1].split('var ')[0]);\nvar h='';\nvar gxz='第'+htm.nomal_ids.filter(a=>{if(h==7&&a.F==2)h=1;else h=a.F;if(h==2||h==7)return a;}).length+'话';\n\n}}catch(e){gxz=\"更新内容获取失败！\";}\nsetResult('更新至：'+gxz);","title":"新番更新表*","author":"1606142","version":20,"type":"video","url":"hiker://empty#fypage","col_type":"long_text","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js://541\nvar res = {};\nvar d = [];\nputVar(\"jl\",0);\nfunction pin(a,b){\nreturn (b==0?'““””':'')+'<font color=\"#ef5b9c\">'+a+'</font>';\n}\nvar lb=fetch(\"hiker://files/番剧更新表/我的追番.txt\", {});\nputVar(\"lb\",lb);\nvar se='hiker://files/番剧更新表/set.txt';\ntry{\nvar fi=JSON.parse(fetch(se,{}));\n}catch(e){fi={};}\na=getVar('axe');\nif(a==\"\"){a=\"追番\";putVar(\"axe\",\"追番\");putVar(\"sta\",fi.col&&fi.col==1?1:0);}\nif(a!='追番')putVar('sta','');\nvar b=parseInt(MY_URL.split('#')[1]);\nif(b==1){\nd.push({\ntitle:(a==5?'““””<font color=\"red\">昨日更新</font>':'昨日更新'),\nurl:`hiker://empty@lazyRule=.js:putVar2('axe','5');refreshPage(false);'toast://切换至昨日更新'`,\ncol_type:'text_3'\n});\nd.push({\ntitle:(a==6?'““””<font color=\"red\">今日更新</font>':'今日更新'),\nurl:`hiker://empty@lazyRule=.js:putVar2('axe','6');refreshPage(false);'toast://切换至今日更新'`,\ncol_type:'text_3'\n});\nd.push({\ntitle:(a==7?'““””<font color=\"red\">明日更新</font>':'明日更新'),\nurl:`hiker://empty@lazyRule=.js:putVar2('axe','7');refreshPage(false);'toast://切换至明日更新'`,\ncol_type:'text_3'\n});\nd.push({\ntitle:(a=='强势接档'?'““””<font color=\"red\">腾讯接档</font>':'腾讯接档'),\nurl:`hiker://empty@lazyRule=.js:putVar2('axe','强势接档');refreshPage(false);'toast://切换至腾讯接档'`,\ncol_type:'text_3'\n});\nvar mode=['番剧索引','国创索引'];\nif(a.includes('索引'))\nvar mo=getVar('axe')=='番剧索引'?mode[0]:mode[1];\nd.push({\ntitle:a.includes('索引')?('““””<font color=\"red\">'+mo+'</font>'):'B站索引',\nurl:`hiker://empty@lazyRule=.js:if(getVar('axe')=='番剧索引')putVar2('axe','国创索引');else putVar2('axe','番剧索引');refreshPage(false);'toast://切换至'+getVar('axe')`,\ncol_type:'text_3'\n});\nd.push({\ntitle:a=='追番'?'““””<font color=\"red\">我的追番</font>':'我的追番',\nurl:`hiker://empty@lazyRule=.js:putVar2('axe','追番');var a=getVar(\"sta\");if(a==\"\")a=\"`+(fi.col&&fi.col==1?1:0)+`\";else a=a==1?0:1;putVar('sta',a);refreshPage(false);'toast://切换至我的追番'`,\ncol_type:'text_3'\n});}\nif(a.includes('索引')){\nvar ord=['3','0','4','2','5'];\nvar tit=['追番人数','更新时间','最高评分','播放数量','开播时间'];\nvar or=parseInt(getVar('or','0'),10);\nb<2&&d.push({col_type:'line_blank'});\nfor(var i=0;b<2&&i<ord.length;i++){\nvar tt='““””<font color=\"blue\">'+tit[i]+'</font>';\nd.push({\ntitle:or==ord[i]?tt:tit[i],\nurl:'hiker://empty#'+ord[i]+`@lazyRule=.js:var i=input.split('#')[1];putVar2('or',i);refreshPage(false);'toast://切换成功！'`,\ncol_type:'text_3'\n});}\nb<2&&d.push({col_type:'line'});\n\nvar model=['1','4'];\nvar web='https://api.bilibili.com/pgc/season/index/result?season_version=-1&area=-1&is_finish=-1&copyright=-1&season_status=-1&season_month=-1&year=-1&style_id=-1&order='+or+'&st=1&sort=0&page='+b+'&season_type='+model[(getVar('axe')=='番剧索引'?0:1)]+'&pagesize=20&type=1';\ntry{\nvar ym=JSON.parse(request(web,{})).data.list;\nfor(var i in ym){\nvar bt=ym[i].title;\nvar ind=ym[i].index_show;\nind=ind?(ind+' '):'';\nvar bt=lb.includes(ym[i].link)?(fi.col&&fi.col==1?('⭐️'+bt):pin(bt)):bt;\n\nd.push({\n\ttitle:fi.col&&fi.col==1?bt:('““””<strong>'+bt+'</strong>'),\n  desc:fi.col&&fi.col==1?(ind):('<strong>'+ind+'</strong>‘‘’’<font color=\"red\">'+ym[i].order+'</font>'),\n  pic_url:ym[i].cover+'@Referer=https://api.bilibili.com',\nurl:ym[i].link+'##'+ym[i].title+'&&'+ym[i].link+'&&'+ym[i].cover,\n\tcol_type: fi.col&&fi.col==1?'movie_3_marquee':'movie_1'\n});\n}}catch(e){}\n}else if(a=='强势接档'&&b==1){\nd.push({col_type:'line_blank'});\nvar jd=['重磅推荐','强档推荐','强势接档'];\n\nvar jds=['.slider_nav&&.nav_link','.mod_figure&&.list_item','.mod_bd,3||.mod_figure,1&&.list_item'];\nvar du=getVar('du',jds[2]);\nfor(var i in jd){\nvar tt='““””<font color=\"blue\">'+jd[i]+'</font>';\n\nd.push({\ntitle:du==jds[i]?tt:jd[i],\nurl:'hiker://empty#'+jds[i]+`@lazyRule=.js:var i=input.split('#')[1];putVar2('du',i);refreshPage(false);'toast://切换成功！'`,\ncol_type:'text_3'\n});\n\n}\nvar ten=fetch('https://v.qq.com/channel/cartoon', {headers:{\"User-Agent\":PC_UA}});\nvar len='';\nif(du==jds[2]){\nvar len=parseDomForArray(ten,'.mod_listings_title&&.title_item');}\nvar le=parseDomForArray(ten,du);\n\nfor(var i in le){\ntry{\nvar ur=parseDomForHtml(le[i],'a&&href');\nvar ti=parseDomForHtml(le[i],'.title_text||a,1&&Text');\ntry{var pi=parseDomForHtml(le[i],'img&&lz_next||src');}catch(e){var pi='';}\n\ntry{\nif(pi=='')\nvar pi=parseDomForHtml(le[i],'a&&data-bgimage');}catch(e){}\npi=pi.includes('http')?pi:('https:'+pi);\nvar de=len?('‘‘’’<font color=\"red\">'+parseDomForHtml(len[i],'.title&&Text')+'</font> <strong>'+ parseDomForHtml(len[i],'.desc&&Text')+'</strong>'+'\\n<font color=\"blue\">'+parseDomForHtml(le[i],'.figure_desc&&Text')+'</font>'):parseDomForHtml(le[i],'span||.figure_caption&&Text').replace(ti,'');\nde=len||du==jds[0]?de:('‘‘’’<font color=\"red\">'+de+'</font>');\n}catch(e){}\nvar tit=lb.includes(ur)?pin(ti):ti;\nti=du==jds[0]?ti:('““””<strong>'+tit+'</strong>');\nif(ti)\nd.push({\n\ttitle:ti,\n  desc: de,\n  pic_url:pi,\n\turl:ur+'##'+bt+'&&'+ur+'&&'+pi,\n\tcol_type: du=='.slider_nav&&.nav_link'?'pic_1':'movie_1'\n});\n\n}\n}else if(a=='追番'&&b==1){\nd1=[] ;\nd2=[];\nd3=[];\nif(lb!=''){\nfunction fenzu(arr,tag){\n  \n   arr.sort(function v(a,b){\n       var a=a.url.split('##')[1].split('&&')[4];\n       a=a==undefined||a==\"\"?\"未命名\":a;\n       var b=b.url.split('##')[1].split('&&')[4];\n       b=b==undefined||b==\"\"?\"未命名\":b;\n       return b-a;\n   });\n   \n  var rq=[];\n   var g=arr.map((a,b,c)=>{\n       var f=a.url.split('##')[1].split('&&')[4];\n       f=f==undefined||f==\"\"?\"未命名\":f;\n       c=c.filter(e=>{\n           var e1=e.url.split('##')[1].split('&&')[4];\n           e1=e1==undefined||e1==\"\"?\"未命名\":e1;\n           if(f==e1)return e;\n       }).map(a=>{a.extra={id:tag+f+\"item\"};return a;});\n       putVar(tag+f,\"\");\n       return {\n           title:\"““””\"+pin(f)+\" 分组\",\n           url:`hiker://empty#noLoading#@lazyRule=.js:var tf=\"`+(tag+f)+`\";var a=getVar(tf);if(a==\"\")putVar(tf,1);else putVar(tf,\"\");var de=[];for(let i of `+JSON.stringify(c)+`){if(a==\"\")addItemAfter(tf, i);else de.push(tf+'item');}if(a!=\"\") deleteItem(de);a==\"\"?\"toast://已展开！\":\"toast://已关闭！\";`,\n           extra:{id:tag+f},\n          col_type:\"text_center_1\"\n       };\n   }).filter((a)=>{if(b==0||!rq.join(\"%#\").includes(a.title)){rq.push(a.title);return a;}});\n   return g;\n}\nvar xx=lb.split('@@');\n\nvar u=xx.map(function(a){\nvar b=a.split('&&')[1];\nif(b&&b.includes('iqiyi'))return {url:b,options:{headers:{\"User-Agent\":MOBILE_UA}}};\nelse if(b&&b.includes('youku'))return {url:b,options:{headers:{\"User-Agent\":MOBILE_UA,'Cookie':'cna=6IyiGrzKl3kCAXAE00of3MSn'}}};else{return {url:b,options:{headers:{\"User-Agent\":PC_UA}}};}\n});\nvar y=batchFetch(u);\nfor(var k in xx){\ntry{\nvar x=xx[k].split('&&');\nif(x[1]!=''){\n/*\nvar ym=fetch(x[1], {headers:{\"User-Agent\":PC_UA}});\n*/\nvar ym=y[k];\ntry{\nif(x[1].includes('bilibili')){\nvar des='<font color=\"blue\">'+JSON.parse(ym.split('newestEp\":')[1].split('}')[0]+'}').desc+'</font>';\ntry{\nvar ep=JSON.parse(ym.split('\"epList\":')[1].split('}]')[0]+'}]'); \n}catch(e){ep=[];}\nif(ep.length==0)gxz=0;\nelse{\nfor(var i=ep.length-1;ep[i].badge=='预告';i--);\nvar gxz=\"第\"+ep[i].title+\"话\";}}\n}catch(e){gxz='最新状态获取失败！';}\ntry{\nif(x[1].includes('qq')){\nvar htm=JSON.parse(ym.split('COVER_INFO = ')[1].split('var ')[0]);\nif(htm.category_map.includes('正片')){\nvar h='';\nvar gxz='第'+htm.nomal_ids.filter((a)=>{if(h==7&&a.F==2)h=1;else h=a.F;if(h==2||h==7)return a;}).length+'话';}\nelse gxz='第0话';\nif(gxz=='第0话'){\ndes='<font color=\"blue\">'+htm.update_notify_desc+'</font>';\n}\n}\n}catch(e){gxz='最新状态获取失败！';}\n\ntry{\nif(x[1].includes('iqiyi')){\n/*\ntry{\nvar v=JSON.parse(ym.split('videos\":')[1].split('}]')[0]+'}]');}catch(e){var v=JSON.parse('['+ym.split('videoInfo\":')[1].split('}')[0]+'}]');}\nfor(var i of v)\nif(!i.vt||!i.vt.includes('预告'))gxz=i.order;\n\n\ntry{var v=JSON.parse(ym.split('videoInfo\":')[1].split('}')[0]+'}');}catch(e){var v={};v.aid=ym.split('albumId\":')[1].split(',')[0];}vi=JSON.parse(request('https://pub.m.iqiyi.com/h5/main/videoList/album/?albumId='+v.aid+'&size=1500&page=1&needPrevue=false&needVipPrevue=false',{})).data;if(vi!=''){v=vi.videos;gxz=v.pop().pd}else{i=v;if(i&&(!i.vt||!i.vt.includes('预告')))gxz=i.order;}\n*/\n\nvar gxz=\"第\"+ym.match(/latestOrder\".*?(\\d+)/)[1]+\"话\";\n}\n}catch(e){gxz='最新状态获取失败！';}\n\ntry{\nif(x[1].includes('youku')){\nvar gxz=\"第\"+ym.match(/episodeLast\".*?(\\d+)/)[1]+\"话\";\n}\n\n}catch(e){gxz='最新状态获取失败！';}\n\nvar pic=x[2].split('/');\nif(pic[2]=='puui.qpic.cn')x[2]=pic.slice(0,-1).join('/')+'/0';\n\nif(gxz=='最新状态获取失败！'){\nd2.push({\n\ttitle: getVar('sta')==1?x[0]:('““””<font color=\"grey\">'+x[0]+'</font>'),\n  pic_url: x[2]+(x[1].includes('bilibili')?'@Referer=https://www.bilibili.com':(x[1].includes('iqiyi')?'@Referer=https://www.iqiyi.com':'')),\ndesc:getVar('sta')==1?(x[3]&&x[3]!=''?('观看至 '+x[3]):('未观看')):((x[3]&&x[3]!=''?('观看至 ‘‘'+x[3]+'’’'):('‘‘未观看’’'))+'\\n更新至 <font color=\"red\">'+gxz+'</font>'),\n\turl:x[1]+'##'+xx[k]+'##',\n\tcol_type:( getVar('sta')==1?'movie_3_marquee':'movie_1_vertical_pic')\n});\n}else{\nif(x[3]&&x[3].match(/第.*?话/)==null)x[3]=\"第\"+x[3]+\"话\";\nif(x[3]!=gxz)\nd3.push({\n\ttitle: getVar('sta')==1?x[0]:pin(x[0],0),\n  pic_url: x[2]+(x[1].includes('bilibili')?'@Referer=https://www.bilibili.com':''),\ndesc:getVar('sta')==1?(x[3]&&x[3]!=\"\"?('观看至 '+x[3]):('未观看')):((x[3]&&x[3]!=\"\"?('观看至 '+(x[3]!=gxz?('““'+x[3]+'””'):('‘‘'+x[3]+'’’'))):(gxz=='第0话'||gxz==0?des:'‘‘未观看’’'))+'\\n更新至 '+(x[3]&&x[3]!=\"\"&&x[3]!=gxz?('““'+gxz+'””'):('‘‘'+gxz+'’’'))),\n\turl:x[1]+'##'+xx[k]+'##',\n\tcol_type: ( getVar('sta')==1?'movie_3_marquee':'movie_1_vertical_pic')\n});\nelse\nd1.push({\n\ttitle: x[0],\n  pic_url: x[2]+(x[1].includes('bilibili')?'@Referer=https://www.bilibili.com':''),\ndesc:getVar('sta')==1?('观看至 '+x[3]):((x[3]&&x[3]!=\"\"?('观看至 '+(x[3]!=gxz?('““'+x[3]+'””'):('‘‘'+x[3]+'’’'))):('‘‘未观看’’'))+'\\n更新至 '+(x[3]&&x[3]!=\"\"&&x[3]!=gxz?('““'+gxz+'””'):('‘‘'+gxz+'’’'))),\n\turl:x[1]+'##'+xx[k]+'##',\n\tcol_type: ( getVar('sta')==1?'movie_3_marquee':'movie_1_vertical_pic')\n});\n}\n}\n}catch(e){}\n}\nif(getVar('sta')==1){\n/*\nlog(d3);\nlog(fenzu(d3));\n*/\nif(d1!='')\nd1=[{\ntitle:'⭐️以下番剧未有更新:',\ncol_type:'text_1'\n}].concat(fi.fz&&fi.fz==1?fenzu(d1,\"未更新\"):d1);\n\nif(d3!='')\nd3=[{\ntitle:'⭐️以下番剧待看:',\ncol_type:'text_1'\n}].concat(fi.fz&&fi.fz==1?fenzu(d3,\"已更新\"):d3);\n\nif(d2!='')\nd2=[{\ntitle:'⭐️以下番剧获取更新失败:',\ncol_type:'text_1'\n}].concat(fi.fz&&fi.fz==1?fenzu(d2,\"失败\"):d2);\n\nd=d.concat(d3,d1,d2);\n}else{\n    var dd=d3.concat(d1,d2);\n    d=d.concat(fi.fz&&fi.fz==1?fenzu(dd,\"全部\"):dd);\n}\n\n\n}else\nd.push({\n\ttitle:'““还没有追番！””',\nurl:`hiker://empty@lazyRule=.js:refreshPage(false);'toast://刷新完毕！'`,\ndesc:'点击刷新',\n\n\tcol_type: 'text_center_1'\n});\n\n}else if(b==1){\nvar st=a==7?'':'““””<font color=\"red\">+</font> ';\nvar cs=0;\nvar n=a==7?'明日 ':(a==6?'今日 ':'昨日 ');\n//https://www.bilibili.com/anime/timeline\nvar h=new Date().getHours();\nvar m=new Date().getMinutes();\nvar si=h*60+m;\n\nvar y1=fetch('https://bangumi.bilibili.com/web_api/timeline_global',{});\nvar ym1=JSON.parse(y1).result[a].seasons;\nvar y2=fetch('https://bangumi.bilibili.com/web_api/timeline_cn',{});\nvar ym2=JSON.parse(y2).result[a].seasons;\nvar y=y1+y2;\n\ntry{\n//合并排序开始\n\nvar ym=ym1.concat(ym2);\n\nvar ten=fetch('https://v.qq.com/channel/cartoon', {headers:{\"User-Agent\":PC_UA}});\nvar ym3=[];\nvar w = new Date().getDay();\nvar ve=w==0?6:(w-1);\nve=a==6?ve:(a==5?(ve-1):(ve+1));\nve=ve==7?0:(ve==-1?6:ve);\nvar len=parseDomForArray(ten,'.mod_bd,2&&.mod_figure,'+(ve+1)+'&&.list_item');\n\n\nvar ur=len.map(a=>{var bt=parseDomForHtml(a,'a,1&&title');\nvar uzz=parseDomForHtml(a,'.figure_caption&&Text');if(y.indexOf(bt.replace(/第[\\S]*?季/g,''))==-1&&!uzz||uzz.search(/全|完结/)==-1)return {url:parseDom(a,'a&&href')};else return {url:''};});\n//putVar('ur',JSON.stringify(ur));\n\nvar ht=batchFetch(ur);\n\n\nfor(var i in len){\nif(ht[i]!=''){\nvar bt=parseDomForHtml(len[i],'a,1&&title');\nvar uzz=parseDomForHtml(len[i],'.figure_caption&&Text');\n\nvar ur=parseDom(len[i],'a&&href');\ntry{\nvar htm=JSON.parse(ht[i].split('COVER_INFO = ')[1].split('var ')[0]);\nvar t=htm.update_notify_desc;\nvar l=htm.nomal_ids;\n}catch(e){}\nif(!t||t.search(/全|完结/)==-1){\nvar uz=0;var f='';\nfor(var js in l){if(f==7&&l[js].F==2)f=1;else f=l[js].F;if(f==2||f==7){uz++;}}\n\ntry{\nvar upd='未知';\nupd=t.replace(/(\\d*)点(\\d*)分{0,1}/g,'$1:$2').match(/\\d{1,2}：\\d{2}|\\d{1,2}:\\d{2}|\\d{1,2}(?=点)|\\d{1,2}(?=:)/g)[0];\nupd=upd.includes('：')?upd.replace('：',':'):upd;\nupd=upd.includes(':')?upd:(upd+':00');\n\nvar sii=parseInt(upd.split(':')[0],10)*60+parseInt(upd.split(':')[1],10);\n}catch(e){var upd='未知';}\n\nif(upd!='未知'){\n\nif((a==6&&si<sii)||a==7)uz++;\n\nym3.push({title:bt,\npub_time:upd,\nsquare_cover:parseDomForHtml(len[i],'img&&lz_next'),\npub_index:'第'+uz+'话',\nurl:ur\n});}\n}\n}\n}\n}catch(e){ym3=[];}\nym=ym.concat(ym3);\n\nym=ym.sort(function v(a,b){\n\nvar aa=a.pub_time;\n\nvar c=parseInt(aa.split(':')[0],10)*60+parseInt(aa.split(':')[1],10);\nvar bb=b.pub_time;\nvar d=parseInt(bb.split(':')[0],10)*60+parseInt(bb.split(':')[1],10);\n\nreturn c-d;\n});\n\n//d.push({title:ym});\n//合并排序结束\n\n\n\nh=h<10?('0'+h):h;\nm=m<10?('0'+m):m;\n\nfor(var i in ym){\n\nvar ti=ym[i].pub_time;\n\nif(a==6){\nvar sii=parseInt(ti.split(':')[0],10)*60+parseInt(ti.split(':')[1],10);\n\n\nif(si<sii&&cs==0){\nd.push({title:'当前时间：““'+h+':'+m+'””',\nurl:`hiker://empty@lazyRule=.js:refreshPage(false);'toast://刷新完毕！'`,\ndesc:'点击刷新',\ncol_type:'text_center_1'\n});\ncs++;\nst='';\n}\n}\n\nvar nn=st==''?'即将更新 ':'已更新至 ';\nvar u=ym[i].url;\nvar bt=ym[i].title;\n//bt=bt.slice(0,25)+(bt.length>25?'...':'');\nvar zf=lb.includes(u)?pin(bt,st==''?0:1):bt;\nvar de='<strong>'+n+'</strong>‘‘’’<font color=\"#ff8000\"> '+ti+' </font>更新';\nst1=ym[i].pub_index?st:'';\nvar dr=ym[i].delay_reason;\nd.push({\n\ttitle: st1+'““””<strong>'+zf+'</strong>'+'\\n'+(ym[i].pub_index?(nn+'<font color=\"blue\">'+(ym[i].pub_index)+'</font>'):('<font color=\"grey\">'+'本周停更 '+ym[i].delay_index+'</font>')),\n  desc:!dr?de:('<del>'+de+'</del>'),\n  pic_url: ym[i].square_cover+(u.includes('bilibili')?'@Referer=https://www.bilibili.com':''),\n\turl:u+'##'+ym[i].title+'&&'+u+'&&'+ym[i].square_cover+'##',\n\tcol_type: 'movie_1'\n});\n\nif(a==6&&si>=sii&&i==ym.length-1){\nd.push({title:'当前时间：““'+h+':'+m+'””',\nurl:`hiker://empty@lazyRule=.js:refreshPage(false);'toast://刷新完毕！'`,\ndesc:'今日番剧已全部更新，感谢使用！',\ncol_type:'text_center_1'\n});\n}\n\n}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js://229\nvar res = {};\nvar d = [];\nvar na=MY_URL.split('#')[1];\nvar page=MY_URL.split('#')[2];\nvar lb1=fetch(\"hiker://files/番剧更新表/我的追番.txt\", {});\nif(page==1){\nvar x=['media_bangumi','media_ft'];\nvar y=[];\ntry{\nfor(var jj=0;jj<x.length;jj++){\nvar ym1=JSON.parse(fetch('https://api.bilibili.com/x/web-interface/search/type?keyword='+na+'&page=1&search_type='+x[jj]+'&order=totalrank&pagesize=20',{})).data.numPages;\nfor(var j=1,g=0;j<=ym1&&j<4;j++){\nvar y1=JSON.parse(fetch('https://api.bilibili.com/x/web-interface/search/type?keyword='+na+'&page='+j+'&search_type='+x[jj]+'&order=totalrank&pagesize=20',{})).data.result;\nvar y=y.concat(y1);\nvar Jy=JSON.stringify(y);\n}}\nfor(var i=0;y!=null&&i<y.length;i++){\nvar ti=y[i].title.replace(/<em class=\"keyword\">|<\\/em>/g,'');\nif((Jy.includes(na)&&ti.includes(na))||!Jy.includes(na)){\nvar zf=lb1.includes('ss'+y[i].season_id)?'<small>我的追番 </small>':'';\nd.push({\ntitle:zf+ti,\nimg:y[i].cover+'@Referer=https://api.bilibili.com',\ndesc:y[i].styles,\ncontent:y[i].desc,\nurl:y[i].goto_url+'##'+ti+'&&https://www.bilibili.com/bangumi/play/ss'+y[i].season_id+'&&'+y[i].cover+'##',\n});\ng++;\n}\nif(g==8){j=6;break;}\n}}catch(e){}\ntry{\nvar ym=fetch('https://v.qq.com/x/search/?q='+na,{headers:{\"User-Agent\":PC_UA}});\nputVar('tx',ym);\nvar len=parseDomForArray(ym,'body&&._infos');\n/*\ntry{\nvar len1=parseDomForArray(ym,'.figures_list&&.list_item');\nlen=len.concat(len1);\n}catch(e){}\n*/\nfor(var j in len){\ntry{var des=parseDomForHtml(len[j],'.figure_caption||.result_score||.figure_desc&&Text');}catch(e){des='';}\n/*\ntry{\nf=des.split(':').map(Number);\nvar time=f[0]*3600+f[1]*60+f[2];\n}catch(e){var des='';}\n*/\ntry{var yg=parseDomForHtml(len[j],'.mark_v&&img&&alt');}catch(e){var yg='没有';}\ntry{\nvar ur=parseDomForHtml(len[j],'a&&href');\nif(ur.includes('search_redirect')&&ur.includes('url=')&&(ur.includes('iqiyi.')||ur.includes('youku.')))ur=decodeURIComponent(ur.split('url=')[1]);\nelse if(ur.includes('search_redirect'))ur='';\nif(!yg.includes('预告')&&ur!=''){\ntry{var con=parseDomForHtml(len[j],'.desc_text&&Text');}catch(e){var con='';}\nvar bt=parseDomForHtml(len[j],'img&&alt');\nvar pi=parseDomForHtml(len[j],'img&&src');\nvar zf=lb1.includes(ur)?'<small>我的追番 </small>':'';\nd.push({\n\ttitle: zf+bt, \ndesc:des,\ncontent:con,\n  pic_url:pi,\n\turl:ur+'##'+bt+'&&'+ur+'&&'+pi+'##',\n});\n}}catch(e){}\n}\n}catch(e){d.push({\n\ttitle: '腾讯搜索错误' });}\n\ntry{\nvar ym=fetch('https://so.iqiyi.com/so/q_'+na,{headers:{\"User-Agent\":PC_UA}});\nputVar('iqiyi',ym);\nvar resu=parseDomForArray(ym,'body&&.qy-search-result-item');\n\nfor(var i of resu){\ntry{\n\nvar pd=parseDomForHtml(i,'.item-type&&Text');\nvar pd2=parseDomForHtml(i,'.player-name&&Text');\n\nif(pd.match(/电视剧|电影|动漫|综艺|知识/g)[0]!=''&&pd2.match(/爱奇艺|腾讯|优酷/g)[0]!=''){\n\nvar bt=parseDomForHtml(i,'a&&title');\nvar pi=parseDom(i,'img&&src');\nvar ur=parseDom(i,'a&&href').split('?')[0];\nvar zf=lb1.includes(ur)?'<small>我的追番 </small>':'';\n\nvar des=parseDomForHtml(i,'.qy-mod-label&&Text');\nvar con=parseDomForHtml(i,'.info-des,2||.info-des||.sub-txt&&Text');\n\nd.push({\n\ttitle: zf+bt, \ndesc:des,\ncontent:con,\n  pic_url:pi+'@Referer=https://www.iqiyi.com',\n\turl:ur+'##'+bt+'&&'+ur+'&&'+pi+'##',\n});}}catch(e){}\n}\n}catch(e){d.push({\n\ttitle: '爱奇艺搜索错误' });}\n\ntry{\nvar ym=fetch(\"http://so.youku.com/search_video/q_\"+na+\"?searchfrom=1\",{headers:{\"User-Agent\":MOBILE_UA,'Cookie':'cna=6IyiGrzKl3kCAXAE00of3MSn'}});\nvar lis=parseDomForArray(ym,\"body&&div[data-name]\");\nfor(var i in lis)\nif(parseDomForHtml(lis[i],\".poster-desc_uTT1A&&Text\")!=\"\"&&parseDomForHtml(lis[i],\".video-source_2I2-h&&Text\")==\"\")\n{\nbt=parseDomForHtml(lis[i],\"a,1&&Text\");\nur=parseDom(lis[i],\"a&&href\");\npi=lis[i].match(/\\(http.*?\\)/)[0].replace(/\\(|\\)/g,\"\");\nvar zf=lb1.includes(ur)?'<small>我的追番 </small>':'';\nd.push({\ntitle:zf+bt,\ndesc:parseDomForHtml(lis[i],\".poster-desc_uTT1A&&Text\"),\ncontent:parseDomForHtml(lis[i],\".info&&Text\"),\nimg:pi,\nurl:ur+'##'+bt+'&&'+ur+'&&'+pi+'##'\n});}\n}catch(e){d.push({\n\ttitle: '优酷搜索错误' });}\n\nif(d.length==0)page++;\n}\n if(page==2){\nvar ym=getVar('tx');\nvar ym1=getVar('iqiyi');\nclearVar('tx');clearVar('iqiyi');\nif(ym!=''){\nvar len=parseDomForArray(ym,'.figures_list&&li');\nfor(var i of len){\n\n\nvar ur=parseDomForHtml(i,'a&&href');\nif(ur.includes('search_redirect')&&ur.includes('url=')&&(ur.includes('iqiyi.')||ur.includes('bilibili.')))ur=decodeURIComponent(ur.split('url=')[1]);\nelse if(ur.includes('search_redirect'))ur='';\nif(!i.includes('预告')&&ur!=''){\nvar bt=parseDomForHtml(i,'a,1&&title');\nvar pi=parseDom(i,'img&&src');\nvar zf=lb1.includes(ur)?'<small>我的追番 </small>':'';\n\nd.push({\ntitle:zf+bt,\nurl:ur+'##'+bt+'&&'+ur+'&&'+pi+'##',\npic_url:pi,\ndesc:parseDomForHtml(i,'.figure_info&&Text'),\ncontent:parseDomForHtml(i,'.score_l&&Text')+'  '+parseDomForHtml(i,'.figure_desc&&Text'),\n});}\n}\n}\nif(ym1!=''){\n\nvar resu=parseDomForArray(ym1,'body&&.qy-mod-list&&li');\n\nfor(var i of resu){\ntry{\n\nvar bt=parseDomForHtml(i,'a&&title');\nvar pi=parseDom(i,'img&&src');\nvar ur=parseDom(i,'a&&href').split('?')[0];\nvar zf=lb1.includes(ur)?'<small>我的追番 </small>':'';\n\nvar des=parseDomForHtml(i,'.qy-mod-label&&Text');\nvar con=parseDomForHtml(i,'.info-des,2||.info-des||.sub-txt&&Text');\n\nd.push({\n\ttitle: zf+bt, \ndesc:des,\ncontent:con,\n  pic_url:pi+'@Referer=https://www.iqiyi.com',\n\turl:ur+'##'+bt+'&&'+ur+'&&'+pi+'##',\n});}catch(e){}\n}\n}\n}\nelse if(page==3){\nd.push({title:'搜索不到？关键词尽量精确'});\n}\nres.data = d;\nsetSearchResult(res);","search_url":"hiker://empty#**#fypage","group":"1影搜","detail_col_type":"movie_2","detail_find_rule":"js:\neval(getItem('aa').split('/**/')[1]);","sdetail_col_type":"movie_2","sdetail_find_rule":"js:\neval(getItem('aa').split('/**/')[1]);","ua":"mobile","preRule":"var fz=JSON.stringify(fetch(\"hiker://files/番剧更新表/我的追番.txt\",{}).split('@@').map(a=>{return a.split('&&')[4];}).filter((a,b,c)=>{if(a&&b==0||!c.slice(0,b).join('&#').includes(a))return a;}).concat([\"““新建分组””\"]));\n\nsetItem('la1', `select://{\"title\": \"选择分组\", \"options\" :`+fz+`, col: 3, js: \"if(input=='““新建分组””'){\\`input://{\\\\\"js\\\\\": \\\\\"eval(JSON.parse(fetch('hiker://page/zffz',{})).rule);\\\\\", \\\\\"hint\\\\\": \\\\\"新建分组名称…\\\\\"}\\`;}else{eval(JSON.parse(fetch('hiker://page/zffz',{})).rule);}\"}`);\n\nsetItem('la2', `hiker://empty@lazyRule=.js:putVar(\"jl\",parseInt(getVar(\"jl\",\"0\"),10)-1);var v=getVar('url1'); input=v.split('&&')[0];pd=v.split('&&')[1].split('?')[0];var lb=fetch(\"hiker://files/番剧更新表/我的追番.txt\",{});for(i=0;input!='';i++){try{if(i!=0)input=input.slice(0,-1);var sc=new RegExp(input+'[\\\\\\\\s\\\\\\\\S]{'+(i+2)+'}'+pd+'[\\\\\\\\s\\\\\\\\S]*?@@','g');var xr=lb.replace(sc,'');if(!xr.includes(pd)){writeFile(\"hiker://files/番剧更新表/我的追番.txt\",xr);break;}}catch(e){}}refreshPage(false);'toast://取消追番成功！'`);\n\nsetItem('rC', `var m=[];var li=fetch(\"hiker://files/番剧更新表/我的追番.txt\",{}).split('@@').filter(a=>{return a!='';});var s=input.split('##');input=s[0];for(var i in li){var j=li[i].split('&&');if(getVar('url').includes(j[1])){j[3]=s[1];var j1=j.join('&&');li.splice(i,1);m=m.concat(j1,li).join('@@')+'@@';writeFile(\"hiker://files/番剧更新表/我的追番.txt\",m);break;}}`);\n\nsetItem('aa', `@rule=js:/**/if(getVar('xl')==''&&getVar('tj')==''&&getVar(\"ii\")==\"\")putVar(\"jl\",parseInt(getVar(\"jl\",\"0\"),10)+1);var se='hiker://files/番剧更新表/set.txt';var fis=fetch(se,{});if(fis==''){var fis=JSON.stringify({dm:'关',bili:'关'});writeFile(se,fis);}fi=JSON.parse(fis);var mo=getVar('model');putVar('model','');var res1 = {};var d1 = [];d=[];d2=[];try{if(MY_URL.includes('iqiyi.co')){var ym=getResCode().replace(/\\\\u002F/g,'/').replace(/videoUrl/g,'pageUrl');}else if(MY_URL.includes('youku.co'))var ym=fetch(MY_URL,{headers:{\"User-Agent\":MOBILE_UA,'Cookie':'cna=6IyiGrzKl3kCAXAE00of3MSn'}});else var ym=fetch(MY_URL, {headers:{\"User-Agent\":PC_UA}}).replace(/\\\\u002F/g,'/');try{var quan=parseDomForHtml(ym,'.people_num&&Text');}catch(e){var quan='';}putVar('url',MY_URL.split('##')[0]);putVar('url1',MY_URL.split('##')[1]);var lb=fetch(\"hiker://files/番剧更新表/我的追番.txt\",{});function colo(a,b,c){if(a=='')a=c;if(getItem('yz', '')!='1'){var li=lb.split('@@').filter(a=>{return a!='';});if(li==''||!li.join('@@').includes(getVar('url'))){setItem('yz', '1');return a;}for(var i in li){var j=li[i].split('&&');if(getVar('url').includes(j[1])&&j.length>=4&&(a==j[3]||c==j[3])){setItem('yz', '1');if(!getVar('url').includes('qq.')&&b==undefined)return '⭐️'+a;else return '““'+a+'””';}}}return a;}if(MY_URL.includes('bilibili.')){var nam=parseDomForHtml(ym,'.bilibili-player-pgcinfo-name&&Text');}else var nam=parseDomForHtml(ym,'.tit||h1&&Text');setPageTitle(nam);var info=MY_URL.split('##')[1];if(info){info=info.split('&&');info[0]=nam; info=info.join('&&');var q=info.split('&&')[1];if(q.slice(-1)=='/')q=q.split('/').slice(0,-1).join('/'); var pd=lb.includes(q);var la=pd?getItem('la2'):(fi.fz&&fi.fz==1?getItem('la1'):('hiker://empty@lazyRule=.js:input=\"\";'+JSON.parse(fetch('hiker://page/zffz',{})).rule));try{var wj=fetch('hiker://files/rules/DuanNian/MyParse.json',{});if(wj!=\"\"){eval('jx='+wj);eval(fetch(jx.settings.cj,{}));}else eval(fetch('hiker://files/cache/Parse_Dn.js',{}));}catch(e){}try{var dc=\"d.push({col_type:'line_blank'});d.push({title:'点击配置断插！',url:\\\\\"\"+(setUrl)+\"\\\\\",col_type:'text_1'});d.push({col_type:'line_blank'});d.push({title:'测试断插！',desc:'使用前先备份数据！！！',col_type:'text_1',url:'hiker://empty@rule='+JSON.parse(fetch('hiker://page/ceshi.html',{})).rule});d.push({col_type:'line_blank'});\";}catch(e){var dc=\"\";}var ej=\"hiker://empty@rule=js:setPageTitle('设置');var se='hiker://files/番剧更新表/set.txt';var fis=fetch(se,{});var res = {};var d = [];var fi=JSON.parse(fis);d.push({title:'当前““'+(fi.dm=='关'?'关闭':'开启')+'””弹幕(爱奇艺、优酷不支持！)',url:\\`@lazyRule=.js:var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.dm=(fi.dm=='关'?'开':'关');writeFile(se,JSON.stringify(fi));refreshPage(false);\\\\\"toast://切换成功！\\\\\"\\`,col_type:'text_1'});d.push({col_type:'line_blank'});if(fetch('hiker://files/番剧更新表/cache.txt',{})!=''){d.push({title:'当前““'+(fi.bili=='关'?'关闭':'开启')+'””哔哩大会员直链',url:\\`@lazyRule=.js:var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.bili=(fi.bili=='关'?'开':'关');writeFile(se,JSON.stringify(fi));refreshPage(false);\\\\\"toast://切换成功！\\\\\"\\`,col_type:'text_1'});d.push({col_type:'line_blank'});}d.push({title:'当前““'+(fi.yg==1?'开启':'关闭')+'””腾讯预告',/*desc:'点击切换',*/url:\\`@lazyRule=.js:var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.yg=(fi.yg==1?0:1);writeFile(se,JSON.stringify(fi));refreshPage(false);\\\\\"toast://切换成功！\\\\\"\\`,col_type:'text_1'});d.push({col_type:'line_blank'});d.push({title:'当前““'+(fi.col?(fi.col==0?'列表':'九宫格'):'列表')+'””显示我的追番、B站索引样式！',url:(fi.col?fi.col:0)+\\`@lazyRule=.js:var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.col=(input==0?1:0);writeFile(se,JSON.stringify(fi));refreshPage(false);\\\\\"toast://切换成功！\\\\\"\\`,col_type:'text_1'});d.push({col_type:'line_blank'});d.push({title:'当前使用““'+(fi.so?(fi.so[1]+(fi.so[0]==0?' 分组':' 小程序')):'全部 分组')+'””搜索',url:\\`select://{title: '选择二级搜索模式...', options:['搜索分组','搜索小程序'] , col: 2, js:\\\\\"eval(JSON.parse(fetch('hiker://page/so.html',{})).rule);\\\\\"}\\`,col_type:'text_1'});d.push({col_type:'line_blank'});d.push({title:'当前一页显示““'+(fi.ji?fi.ji:10)+'””集',url:\\`input://{\\\\\"js\\\\\": \\\\\"var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));input=input.match(/[0-9]+/)[0];if(input>0){fi.ji=input;writeFile(se,JSON.stringify(fi));refreshPage(false);'toast://更改成功！'}else{'toast://请输入大于0的数！！'}\\\\\", \\\\\"hint\\\\\": \\\\\"请输入数字…\\\\\"}\\`,col_type:'text_1'});d.push({col_type:'line_blank'});d.push({title:'当前““'+(fi.fz?(fi.fz==0?'关闭':'开启'):'关闭')+'””追番页面分组',url:(fi.fz?fi.fz:0)+\\`@lazyRule=.js:var se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.fz=(input==0?1:0);writeFile(se,JSON.stringify(fi));refreshPage(false);\\\\\"toast://切换成功！\\\\\"\\`,col_type:'text_1'});if(fi.fz&&fi.fz==1){d.push({title:'=>番剧分组',url:'hiker://empty@rule='+JSON.parse(fetch('hiker://page/classify',{})).rule,col_type:'text_1'});}\"+dc+\"addListener('onClose',$.toString(()=>{putVar('ii','\"+getVar('ii')+\"');if(fetch('\"+se+\"',{})!='\"+fis+\"')refreshPage(false);}));res.data = d;setSearchResult(res);                          \"; d1.push({ title:info.split('&&')[0], img:info.split('&&')[2], url:ej, col_type: 'icon_2_round' });d1.push({ title:(pd?'‘‘取消追番’’':'““+追番””'), url:la, col_type: 'text_2' });}try{var des=JSON.parse(ym.split('newestEp\":')[1].split('}')[0]+'}').desc;}catch(e){try{var htm=JSON.parse(ym.split('COVER_INFO = ')[1].split('var ')[0].trim());var des=htm.update_notify_desc;if(!des)des=htm.second_title;}catch(e){try{var a=ym.match(/updateStrategy\".*?\"(.*?)\"/)[1];}catch(e){a='';}var des=a+parseDomForHtml(ym,'.brief-score&&Text')+parseDomForHtml(ym,'.info-updata&&Text');}}try{var jianj=parseDomForHtml(ym,'head&&meta[name=\"description\"]&&content');if(jianj=='')jianj=ym.match(/\"desc\":\"(.*?)\"/)[1];}catch(e){if(MY_URL.includes('qq'))jianj=htm.description;}jianj=jianj.replace(/[\\\\s\"']/g,'');d1.push({title:'<font color=\"purple\"><strong><big>'+nam+'</big></strong></font>--<font color=\"blue\">'+(MY_URL.includes('bilibili')?'bilibili':(MY_URL.includes('qq')?'腾讯':(MY_URL.includes('youku')?'优酷':'爱奇艺')))+'</font>'+'\\\\n““状态：'+(des?des:'无')+'””。<font color=\"blue\">'+quan+'</font>',url:'select://{\"title\": \"选择\", \"options\" : [\"搜索\", \"倒序\",\"简介\"], col: 3, js: \"if(input==\\\\'搜索\\\\'){'+(!fi.so||fi.so[0]==0)+'?\\\\'hiker://search?s='+nam+'&group='+(fi.so?fi.so[1]:'全部')+'\\\\':\\\\'hiker://search?s='+nam+'&rule='+(fi.so?fi.so[1]:'')+'&simple=false\\\\';}else if(input==\\\\'倒序\\\\'){putVar(\\\\'model\\\\',1);putVar(\\\\'ii\\\\','+getVar('ii')+');refreshPage(false);\\\\'toast://切换成功！\\\\'}else{eval(JSON.parse(fetch(\\\\'hiker://page/jianj\\\\')).rule);jianj(\\`'+jianj+'\\`);};\"}',col_type:'text_1'});d1.push({col_type:'big_blank_block'});try{laru=lazy.replace('aytmParse(input)','')+\"cid=input.split('#')[1];input=input.split('#')[0];try{url=aytmParse(input);if(url.includes('toast://')||!url.includes('://')||input==url)url=jxsb;try{pa=url.split(';')[1].split('&&');var ua='';var re='';for(i of pa){try{if(i.includes('User-Agent')&&ua=='')ua=i.split('@')[1].replace('}','');}catch(e){}try{if(i.includes('Referer')&&re=='')re=i.split('@')[1].replace('}','');}catch(e){}}}catch(e){}url=url.split(';')[0];dat=[];dat.push(url);if(cid){dm='https://comment.bilibili.com/'+cid+'.xml';}else{try{var vid=input.split('/')[6].split('.htm')[0];var id=JSON.parse(fetch('https://access.video.qq.com/danmu_manage/regist?vappid=97767206&vsecret=c0bdcbae120669fff425d0ef853674614aa659c605a613a4&raw=1', {headers:{'User-Agent':PC_UA},body:{'wRegistType':2,'vecIdList':[vid]},method:'POST'})).data.stMap[vid].strDanMuKey.match(/[0-9]{4,}/g)[0];if(id){var com=[];url=[];var k=1;for(j=0;;j=j+16*(30*k)){for(i=j;i<16*(30*k)+j;i=i+30*k){url.push({url:'http://mfm.video.qq.com/danmu?timestamp='+i+'&target_id='+id});if(j>=64*30)k=4;}batchFetch(url).map(function(a) {try{ h = JSON.parse(a).comments; }catch(e){try{h=JSON.parse(a.match(/{.*}/)[0]).comments;}catch(e){h=[];}}com=com.concat(h); });if(h=='')break;};dm='hiker://files/番剧更新表/dm.json';writeFile(dm,JSON.stringify(com).replace(/content/g,'text').replace(/timepoint/g,'time'));}else{dm='';}}catch(e){dm='';}}JSON.stringify({urls:dat,headers:[{'User-Agent':ua,'Referer':re}],danmu:dm});}catch(e){'toast://解析失败，请更换解析或稍后重试';}\";if(fi.dm=='关')laru=lazy;}catch(e){laru='\"toast://无解析插件，但追番后仍可记录足迹！\"';};var epl=0;var ji=parseInt(fi.ji?fi.ji:10,10);var ii=getVar('ii');clearVar('ii');var diw=undefined;if(ii==''){var blj=MY_URL.split('##')[0];if(lb.includes(blj)){ii=0;for(j of lb.split('@@')){if(j.includes(blj)){diw=j.split('&&')[3];break;}}}else ii=1;}try{ var ep=JSON.parse(ym.split('\"epList\":')[1].split('}]')[0]+'}]').filter((a,j)=>{if(ii==0){if(diw){if(a.title==diw||a.longTitle==diw){ii=j+1;}if(ii>0){if(ii%ji!=0)ii=ii-ii%ji+1;else ii=ii-ji+1;}}else ii=1;} if(a.badge!='预告')return a;});var epl=ep.length;ep=ep.slice(parseInt(ii,10)-1,parseInt(ii,10)+ji-1);var che=fetch('hiker://files/番剧更新表/cache.txt',{});for(var i=0;i<ep.length;i++){url=fi.bili=='开'&&che!=''?(che.split('@lazyRule')[0].replace(/cid\\\\=[0-9]{4,}/g,'cid='+ep[i].cid).replace(/avid\\\\=[0-9]{4,}/g,'avid='+ep[i].aid)):('https://www.bilibili.com/bangumi/play/ep'+ep[i].id);d.push({ title:colo(ep[i].longTitle,undefined,ep[i].title),col_type:'movie_2', img:'http:'+ep[i].cover, desc:ep[i].title,url:url+'#'+ep[i].cid+'##'+ep[i].title+\"@lazyRule=.js:\"+getItem('rC')+(che!=''&&fi.bili=='开'?(fi.dm=='开'?che.split('@lazyRule=.js:')[1].replace(/[0-9]{4,}(?=\\\\))/g,ep[i].cid):che.split('@lazyRule=.js:')[1].replace(/[0-9]{4,}(?=\\\\))/g,'undefined')):laru),extra:{id:url}});}}catch(e){try{if(htm.category_map.includes('正片')){var f='';var le=htm.vip_ids.filter((a,j)=>{if(ii==0){if(diw){if(('第'+(j+1)+'话')==diw){ii=j+1;}if(ii>0){if(ii%ji!=0)ii=ii-ii%ji+1;else ii=ii-ji+1;}}else ii=1;}if(f==7&&a.F==2)f=1;else f=a.F;if(fi.yg==1||f==2||f==7){return a;}});var epl=le.length;le=le.slice(parseInt(ii,10)-1,parseInt(ii,10)+ji-1);var ur=('https://v.qq.com/x/cover/'+htm.id);var h=ii;for(var i in le){var yg=le[i].F!=7&&le[i].F!=2;d.push({title:(yg?'预告':colo('第'+h+'话')),url:ur+'/'+le[i].V+'.html##第'+h+'话'+'@lazyRule=.js:'+(yg?'':getItem('rC'))+laru,col_type:'text_3',extra:{id:ur+'/'+le[i].V+'.html'}});if(!yg)h++;}}}catch(e){try{try{var v=JSON.parse(ym.split('videoInfo\":')[1].split('}')[0]+'}');}catch(e){var v={};v.aid=ym.split('albumId\":')[1].split(',')[0];}vi=JSON.parse(request('https://pub.m.iqiyi.com/h5/main/videoList/album/?albumId='+v.aid+'&size=1500&page=1&needPrevue=false&needVipPrevue=false',{})).data;if(vi!=''){v=vi.videos;try{v.forEach((a,j)=>{if(ii==0){if(diw){if(a.pd==diw||a.vt==diw){ii=j+1;}if(ii>0){if(ii%ji!=0)ii=ii-ii%ji+1;else ii=ii-ji+1;throw new Eorror('中断');}}else ii=1;}});}catch(e){}var epl=v.length;v=v.slice(parseInt(ii,10)-1,parseInt(ii,10)+ji-1);d=v.map(a=>{a.desc=a.pd;a.img=('https:'+a.imageUrl);a.url='https:'+a.pageUrl+'##'+a.pd+'@lazyRule=.js:'+getItem('rC')+lazy;a.title=colo(a.vt,(undefined),a.pd);a.col_type='movie_2';a.extra={id:'https:'+a.pageUrl};return a;});}else{i=v;if(i&&(!i.vt||!i.vt.includes('预告')))d.push({title:colo(i.shortTitle,undefined,i.order),url:'https:'+i.pageUrl+'##'+i.order+'@lazyRule=.js:'+getItem('rC')+lazy,col_type:'movie_2',img:'https:'+i.imageUrl,desc:i.order});}}catch(e){try{d=JSON.parse(fetch('https://search.youku.com/api/search?appScene=show_episode&showIds='+ym.match(/showId\":\"(.*?)\"/)[1]+'&appCaller=h5',{headers:{\"User-Agent\":MOBILE_UA},redirect:false})).serisesList;try{d.forEach((a,j)=>{if(ii==0){if(diw){if(a.title==diw||a.displayName==diw){ii=j+1;}if(ii>0){if(ii%ji!=0)ii=ii-ii%ji+1;else ii=ii-ji+1;throw new Eorror('中断');}}else ii=1;}});}catch(e){}var epl=d.length;d=d.slice(parseInt(ii,10)-1,parseInt(ii,10)+ji-1).map(a=>{a.desc=a.displayName;a.img=a.thumbUrl;a.url='https://m.youku.com/alipay_video/id_'+a.videoId+'.html##'+a.displayName+'@lazyRule=.js:'+getItem('rC')+lazy;a.title=colo(a.title,undefined,a.displayName);a.extra={id:'https://m.youku.com/alipay_video/id_'+a.videoId+'.html'};return a;});}catch(e){d.push({title:'““休息吧，追番也不要这么拼！””',col_type:'text_center_1'});}}}}for(i=1;i<=epl;i=i+ji){var qj=(i+'-'+(epl-(i+ji-1)>=0?(i+ji-1):epl));d1.push({title:ii>=i&&(ii<=i+ji-1)?('““'+qj+'””'):qj,url:i+\"@lazyRule=.js:putVar('ii',input);refreshPage(false);'toast://正在切换...'\",col_type:'scroll_button'});}if(mo==1)d=d.reverse();d1=d1.concat(d);d1.push({col_type:'line_blank'});if(ym.indexOf('\"ssList\":[{')>-1){d1.push({title:(getVar('xl')=='1'?'““⊙更多系列””':'‘‘⊕更多系列’’'),url:'hiker://empty#'+getVar('xl')+\\`@lazyRule=.js:var a=input.split('#')[1];if(a=='1'){putVar2('xl','');}else{putVar2('xl','1');}refreshPage(false);a=='1'?'toast://已收起':'toast://已展开'\\`,col_type:'text_2'});}if(MY_URL.search(/iqiyi.co|youku.co/)==-1)d1.push({title:(getVar('tj')=='1'?'““⊙更多推荐””':'‘‘⊕更多推荐’’'),url:'hiker://empty#'+getVar('tj')+\\`@lazyRule=.js:var a=input.split('#')[1];if(a=='1'){putVar2('tj','');}else{putVar2('tj','1');}refreshPage(false);a=='1'?'toast://已收起':'toast://已展开'\\`,col_type:'text_2'});d1.push({col_type:'line'});try{if(getVar('xl')=='1'){ var tj=JSON.parse(ym.split('\"ssList\":')[1].split('}]')[0]+'}]'); for(var o=0;tj!=null&&o<tj.length;o++){var cover=tj[o].cover;if(!cover.includes('http'))cover='http:'+cover;var cu=MY_URL.includes(tj[o].id)?'⭐️':'';var sx=MY_URL.includes(tj[o].id)?\"@lazyRule=.js:refreshPage(false);'toast://已刷新！';\":getItem('aa');d1.push({ title:tj[o].title+cu,img:cover,desc:tj[o].index_show, url:'https://www.bilibili.com/bangumi/play/ss'+tj[o].id+'##'+nam+' '+tj[o].title+'&&'+'https://www.bilibili.com/bangumi/play/ss'+tj[o].id+'&&'+cover+'##'+sx, desc:tj[o].desc,col_type:'movie_2' });}putVar2('xl','');}}catch(e){}if(getVar('tj')=='1'){if(MY_URL.includes('bilibili')){var rec=JSON.parse(fetch('https://api.bilibili.com/pgc/season/web/related/recommend?season_id='+MY_URL.split('ss')[1],{})).data.season;for(i=0;i<rec.length;i++){d1.push({ title:rec[i].title,img:rec[i].new_ep.cover,desc:rec[i].new_ep.index_show,url:rec[i].url+'##'+rec[i].title+'&&'+rec[i].url+'&&'+rec[i].new_ep.cover+'##'+getItem('aa'), col_type:'movie_2' });}}else{var lis=parseDomForArray(request('https://m.v.qq.com/play.html?cid='+MY_URL.split('/')[5].split('.')[0],{}),'.figures_list&&li');for(var k of lis){var ur='https://v.qq.com/x/cover/'+parseDomForHtml(k,'li&&data-cid')+'.html';var img=parseDomForHtml(k,'img&&dsrc');if(!img.includes('http'))img='https:'+img;var ti=parseDomForHtml(k,'strong&&Text');d1.push({ title:ti,img:img,desc:parseDomForHtml(k,'a&&Text'),url:ur+'##'+ti+'&&'+ur+'&&'+img+'##'+getItem('aa'), col_type:'movie_2' });}}}putVar2('tj','');}catch(e){d1.push({title:'““休息吧，追番也不要这么拼！””',col_type:'text_center_1'});}clearItem('yz');addListener('onRefresh',\"putVar('jl',parseInt(getVar('jl','0'),10)-1);\");addListener('onClose',\"if(getVar('jl')==1&&getVar('axe')=='追番'&&fetch('hiker://files/番剧更新表/我的追番.txt',{})!=getVar('lb'))refreshPage(false);putVar('jl',parseInt(getVar('jl','0'),10)-1);\");res1.data = d1; setHomeResult(res1);`);","pages":"[{\"col_type\":\"movie_3\",\"name\":\"测试\",\"path\":\"ceshi.html\",\"rule\":\"js:\\n\\r\\nvar res = {};\\r\\nvar d = [];\\nvar d1 = [];\\nvar d2 = [];\\nvar d3 = [];\\nvar d4 = [];\\nvar d5 = [];\\nfunction sel(a){\\n   try{\\n      a=a.match(/[\\\\w]*?\\\\.com/g)[0];\\n     }catch(e){return 'oth';}\\n            switch (a) {\\n                case \\\"qq.com\\\":\\n                    str = 'tx';\\n                    break;\\n                case \\\"iqiyi.com\\\":\\n                    str = 'qy';\\n                    break;\\n                case \\\"youku.com\\\":\\n                    str = 'yk';\\n                    break;\\n                case \\\"mgtv.com\\\":\\n                    str = 'mg';\\n                    break;\\n                case \\\"bilibili.com\\\":\\n                    str = 'bl';\\n                    break;\\n                default:\\n                    str = 'oth';\\n                    break;\\n            }\\nreturn str;\\n}\\n\\nvar path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';\\nvar fi=fetch(path,{});\\ntry{\\neval('jx='+fi);\\neval('a='+fi);\\n\\nsaveFile('save.txt',fi);\\n\\nfor(let x of Object.keys(jx.settings)){\\nvar b=jx.settings[x].split(',');\\nfor(i=0;i<b.length;i++){\\nfor(j=i+1;j<b.length;j++){\\nif(b[i]==b[j]){\\nb.splice(j,1);\\n}\\n}\\n}\\njx.settings[x]=b.filter(a=>{return a!='';}).join(',');\\n}\\n\\njx.settings.cj='hiker://files/cache/Parse_Dn.js';\\njx.title=jx.title.filter(a=>{\\nif(jx.codes[a]){jx.codes[a]=a+'解析';\\nreturn a;}\\nelse{delete jx.codes[a];}});\\nvar fi=JSON.stringify(jx);\\nfor(j of jx.title){fi=fi.replace('\\\"'+j+'解析\\\"',((typeof a.codes[j])!='function'?('\\\"'+a.codes[j].toString().trim()+'\\\"'):a.codes[j].toString().trim()));}writeFile(path,fi);\\n\\ninput=getVar('input');\\nputVar('input','');\\nvar name=getVar('i');\\n\\nd.push({\\ntitle:'测试',\\ndesc:'输入测试链接...',\\nurl:`putVar('input',input);refreshPage(false);`,\\ncol_type:'input',\\nextra:{id:\\\"ink\\\"}\\n});\\nvar path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';\\n\\neval('jx='+fi);\\nvar pd=0;\\nfor(i=0;i<jx.title.length;i++){\\nif(jx.title[i]==name){\\npd=1;break;\\n}\\n}\\nif(name==''||pd==0)name=jx.title[0];\\n\\nd.push({\\ntitle:'测试从 '+name+' 开始: ',\\ndesc:'点击切换起点解析',\\nurl:`select://{\\\"title\\\": \\\"选择解析...\\\",\\\"options\\\" :[`+jx.title.map(a=>{return '\\\"'+a+'\\\"'})+`],col: 3, \\\"js\\\":\\\"putVar('i',input);refreshPage(false);'toast://切换至'+input+'开始测试！'\\\"}`,\\ncol_type:'text_1'\\n});\\nd.push({col_type:'line_blank'});\\nif(input!=''&&input.includes('://')){\\nvar cs=0;\\nfor(var ii=0;ii<jx.title.length;ii++){\\n\\nif(name!=jx.title[ii]&&cs==0){\\ncontinue;\\n}else if(name==jx.title[ii]){cs=1;}\\n\\n\\n\\nif(jx.title[ii]!='defaultParse'){\\ntry{\\nshowLoading('正在测试 '+jx.title[ii]);\\n\\nif((typeof jx.codes[jx.title[ii]])!='string'){\\nvar url=jx.codes[jx.title[ii]](input).replace(/\\\\\\\"/g,'\\\\\\\\\\\"').replace(/\\\\'/g,\\\"\\\\\\\\'\\\").replace(/\\\\`/g,'\\\\\\\\`');\\nif(sel(input)=='mg'&&url.search(/User-Agent|Referer/)==-1)\\nurl=url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';\\n}\\nelse{\\nvar url='';\\n}\\n\\nif(url.includes('toast://')||!url.includes('://')||url==input)url='';\\n}catch(e){\\nurl='';\\n}\\n\\nif(url!='')\\n{\\nd1.push({\\ntitle:jx.title[ii],\\ndesc:'找到一个免嗅',\\nurl:`select://{\\\"title\\\": \\\"选择操作...\\\", \\\"options\\\" :['播放','添加','删除'], col: 3, \\\"js\\\": \\\"if(input=='播放'){\\\\``+url+`\\\\`;}else {var path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';var fi=fetch(path,{});eval('jx='+fi);eval('a='+fi);if(input=='添加'){var set=jx.settings['`+sel(input)+`'];set=set.split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');jx.settings['`+sel(input)+`']='`+jx.title[ii]+`'+(set==''?'':',')+set;for(j of jx.title){jx.codes[j]=j+'解析';}var fi=JSON.stringify(jx);}else{var jxl=jx.title.filter(a=>{if(a!='`+jx.title[ii]+`')return a;});for(j of jx.title){if(j!='`+jx.title[ii]+`')jx.codes[j]=j+'解析';else delete jx.codes[j];}jx.title=jxl;for(k of Object.keys(jx.settings)){jx.settings[k]=jx.settings[k].split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');}var fi=JSON.stringify(jx);}for(j of jx.title){fi=fi.replace('\\\\\\\\\\\"'+j+'解析\\\\\\\\\\\"',((typeof a.codes[j])!='function'?('\\\\\\\\\\\"'+a.codes[j].toString().trim()+'\\\\\\\\\\\"'):a.codes[j].toString().trim()));}writeFile(path,fi);'toast://完成！'}\\\"}`,\\ncol_type:'text_1'\\n});\\ntry{\\nputVar('i',jx.title[ii+1]);\\n}catch(e){\\nclearVar('i');}\\nd1.push({col_type:'line'});\\nd1.push({\\ntitle:'下一个',\\nurl:`hiker://empty@lazyRule=.js:putVar('input','`+input+`');refreshPage(false);'toast://下一个'`,\\ncol_type:'text_2'\\n});\\nd1.push({\\ntitle:'从头开始',\\nurl:`hiker://empty@lazyRule=.js:putVar('input','`+input+`');clearVar('i');refreshPage(false);'toast://开始'`,\\ncol_type:'text_2'\\n});\\nhideLoading();\\nbreak;\\n}\\n\\n\\nelse{\\nif((typeof jx.codes[jx.title[ii]])!='string')\\nd2.push({\\ntitle:jx.title[ii],\\n\\nurl:`select://{\\\"title\\\": \\\"选择操作...\\\", \\\"options\\\" :['重试','添加','删除'], col: 3, \\\"js\\\": \\\"if(input=='重试'){\\\\`hiker://empty@lazyRule=.js:var path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';var fi=fetch(path,{});eval('jx='+fi);jx.codes['`+jx.title[ii]+`']('`+input+`');\\\\`}else {var path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';var fi=fetch(path,{});eval('jx='+fi);eval('a='+fi);if(input=='添加'){var set=jx.settings['`+sel(input)+`'];set=set.split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');jx.settings['`+sel(input)+`']='`+jx.title[ii]+`'+(set==''?'':',')+set;for(j of jx.title){jx.codes[j]=j+'解析';}var fi=JSON.stringify(jx);}else{var jxl=jx.title.filter(a=>{if(a!='`+jx.title[ii]+`')return a;});for(j of jx.title){if(j!='`+jx.title[ii]+`')jx.codes[j]=j+'解析';else delete jx.codes[j];}jx.title=jxl;for(k of Object.keys(jx.settings)){jx.settings[k]=jx.settings[k].split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');}var fi=JSON.stringify(jx);}for(j of jx.title){fi=fi.replace('\\\\\\\\\\\"'+j+'解析\\\\\\\\\\\"',((typeof a.codes[j])!='function'?('\\\\\\\\\\\"'+a.codes[j].toString().trim()+'\\\\\\\\\\\"'):a.codes[j].toString().trim()));}writeFile(path,fi);'toast://完成！'}\\\"}`,\\ncol_type:'text_3'\\n});\\nelse{\\nvar x5=jx.codes['defaultParse'](jx.codes[jx.title[ii]]+input).replace(/\\\\\\\\/g,'\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\').replace(/\\\\\\\"/g,'\\\\\\\\\\\"').replace(/\\\\'/g,\\\"\\\\\\\\'\\\").replace(/\\\\`/g,'\\\\\\\\`').replace(/[\\\\s]/g,' ');\\nd4.push({\\ntitle:jx.title[ii],\\n\\nurl:`select://{\\\"title\\\": \\\"选择操作...\\\", \\\"options\\\" :['解析','添加','删除'], col: 3, \\\"js\\\": \\\"if(input=='解析'){'`+x5+`'}else {var path='file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/DuanNian/MyParse.json';var fi=fetch(path,{});eval('jx='+fi);eval('a='+fi);if(input=='添加'){var set=jx.settings['`+sel(input)+`'];set=set.split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');jx.settings['`+sel(input)+`']='`+jx.title[ii]+`'+(set==''?'':',')+set;for(j of jx.title){jx.codes[j]=j+'解析';}var fi=JSON.stringify(jx);}else{var jxl=jx.title.filter(a=>{if(a!='`+jx.title[ii]+`')return a;});for(j of jx.title){if(j!='`+jx.title[ii]+`')jx.codes[j]=j+'解析';else delete jx.codes[j];}jx.title=jxl;for(k of Object.keys(jx.settings)){jx.settings[k]=jx.settings[k].split(',').filter(a=>{if(a!=''&&a!='`+jx.title[ii]+`')return a;}).join(',');}var fi=JSON.stringify(jx);}for(j of jx.title){fi=fi.replace('\\\\\\\\\\\"'+j+'解析\\\\\\\\\\\"',((typeof a.codes[j])!='function'?('\\\\\\\\\\\"'+a.codes[j].toString().trim()+'\\\\\\\\\\\"'):a.codes[j].toString().trim()));}writeFile(path,fi);'toast://完成！'}\\\"}`,\\ncol_type:'text_3'\\n});}\\n}\\n}}\\n}\\nhideLoading();\\nif(d2!='')\\nd3.push({\\ntitle:'⭐️以下是解析失败的免嗅:',\\ncol_type:'text_1'\\n\\n});\\nif(d4!='')\\nd5.push({\\ntitle:'⭐️以下不是免嗅，需要手动测试:',\\ncol_type:'text_1'\\n\\n});\\n}catch(e){\\nd.push({\\ntitle:'文件损坏，点击此处恢复(如果有备份的话)',\\ncol_type:'text_center_1',\\ndesc:'先点一下试一试吧',\\nurl:`hiker://empty@lazyRule=.js:writeFile('`+path+`',readFile('save.txt'));refreshPage(false);'toast://执行成功！'`\\n});\\n}\\nd=d.concat(d1).concat(d3).concat(d2).concat(d5).concat(d4);\\n\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"so.html\",\"rule\":\"if(input=='搜索分组'){`input://{\\\"hint\\\":'输入分组名称：',\\\"js\\\":\\\"a=[];a[0]=0;a[1]=input;if(a[1]!=''){se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.so=a;writeFile(se,JSON.stringify(fi));refreshPage(false);}\\\"}`}\\nelse{`input://{\\\"hint\\\":'输入小程序名称：',\\\"js\\\":\\\"a=[];a[0]=1;a[1]=input;if(a[1]!=''){se='hiker://files/番剧更新表/set.txt';var fi=JSON.parse(fetch(se,{}));fi.so=a;writeFile(se,JSON.stringify(fi));refreshPage(false);}\\\"}`}\"},{\"col_type\":\"movie_3\",\"name\":\"简介\",\"path\":\"jianj\",\"rule\":\"function jianj(a){\\nreturn `hiker://empty@rule=js:var res = {};var d = [];d.push({title:'简介：\\\\\\\\n'+\\\\``+a+`\\\\`,col_type:'long_text'});res.data = d;setHomeResult(res);`\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"classify\",\"rule\":\"js:\\nd=[];\\nputVar('分类','');\\nvar path=\\\"hiker://files/番剧更新表/我的追番.txt\\\";\\nvar file=request(path);\\nif(file!=\\\"\\\"){\\nd.push({\\n    title:\\\"操作说明：\\\",\\n    desc:\\\"先选择放到一个分组的番剧，点击完成，输入名称即可！\\\",\\n    col_type:\\\"text_1\\\",\\n    extra:{id:'步骤'}\\n\\n});\\nvar xx=file.split('@@').filter(a=>{return a!=\\\"\\\";});\\nvar arr=xx.map(a=>{\\n    var b={};\\nvar cate=a.split(\\\"&&\\\");\\n    var t=cate[0];\\nti=t;\\nif(cate[4]&&cate[4]!=\\\"\\\")ti='‘‘'+t+'’’';\\n    b.title=ti;\\n    b.url=\\\"hiker://empty#noLoading#@lazyRule=.js:var a=getVar('分类','');var b=0;a=a==''?[]:JSON.parse(a);a=a.filter(i=>{if(i=='\\\"+t+\\\"'){b=1;}else{return i;}});if(b==0)a.push('\\\"+t+\\\"');putVar('分类',a);updateItem({title:b==0?('““\\\"+t+\\\"””'):('\\\"+ti+\\\"'),extra:{id:'\\\"+t+\\\"'}});('toast://'+(b==0?'已选中！':'取消选中！'))\\\";\\n    b.col_type=\\\"text_2\\\";\\n    b.extra={id:t};\\n    return b;\\n});\\nd=d.concat(arr);\\nd.push({\\n    title:\\\"完成\\\",\\n    col_type:\\\"text_center_1\\\",\\n    url:`input://{\\\"hint\\\":\\\"分组名称......\\\", \\\"js\\\": \\\"var fi=`+JSON.stringify(xx).replace(/\\\"/g,\\\"'\\\")+`;var a=getVar('分类','');a=a==''?[]:JSON.parse(a);for(let i of a){for(let j in fi){var cate=fi[j].split('&&');var ti=cate[0];if(ti==i){cate[4]=input;fi[j]=cate.join('&&');break;}}}writeFile('`+path+`',fi.join('@@')+'@@');refreshPage();'toast://完成!'\\\"}`\\n})\\n\\n\\n}else{\\n    d.push({\\n    title:\\\"没有追番。。。\\\",\\n    desc:\\\"请先添加追番再试！！\\\",\\n    col_type:\\\"text_center_1\\\"\\n});\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"追番分组\",\"path\":\"zffz\",\"rule\":\"putVar('jl',parseInt(getVar('jl','0'),10)-1);\\n\\nvar inp=getVar('url1').split('&&');inp[4]=input;inp=inp.join('&&');\\n\\nvar xr=inp+'@@'+fetch('hiker://files/番剧更新表/我的追番.txt',{});\\n\\nwriteFile('hiker://files/番剧更新表/我的追番.txt',xr);\\n\\nrefreshPage(false);\\n\\n'toast://追番成功！';\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/119.svg"},{"last_chapter_rule":"","title":"花猫影视🤡","author":"缘分","version":0,"type":"video","url":"https://www.xuanmao520.com/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.myui-screen__list'\nconst 小类定位 = 'body&&a:not(:matches(首页|演员|明星|资讯|地区|年份|排序|类型|字母|剧情|语言|B站|记录))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/type\\/id(\\/\\d+)\\.html/, 'show/id$1.html').replace('.html',/page/+ page + '.html')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'pic-text&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('','') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'a&&title'),\n       desc:parseDomForHtml(list[j], '.lazyload&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.xuanmao520.com/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('超清不卡，推荐NO.1','').replace('资源广告请无视。','').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 分类 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace('类型：','');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').substring(0,15);\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&p,5&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\nif(getVar(\"ms\")==\"1\"){\nvar Color =\"red\";\n}else{\nvar Color=\"#098AC1\"\n}\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n   title:(getVar(\"ms\")==\"1\"?getHead(\"♥️断插\"):getHead(\"💎免嗅\")),\n url:\"hiker://empty\"+`@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n  col_type: 'scroll_button',\n\n})\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('3VSXRioY+SPkEcgp41WF/x3M7Z3tPukpltTfdPUQ+oo3YdxEFoKKDCE04NIkY14rrRSMo92XslsAM7vVCbaVd7p/8e+X2R1+0MSOmxI4rtZZHMmqrgH/eA7413E+7sLicD5ttR/DjDOXq65ygG8VveWvYvNnd1dPmBXUFqvCBvkoXs8Ac2oI81rSx9rpTRNzJar/pYryMSlzrnaq8rk9Kl/2DQcpFVZ/XCNG4MrAAWm6lu2mJx8hXYGjm7bFt7AQzmut97jjreQi8O04LiVDFvGFKAhNp7BuW9vDi0IKM17oVzM2wEw4Uh5E04atyfrJcSTezPoumsPkz6xAyomIl2Wo6TD84peY3RYOlbTrNwN38tgo97hcFNmOH8FNFsWqR0uvxoxvohHCWf6FH9DK0FoFUwRmATD8zsGap1iUAEd1iiM5tfHlGiBkRIISRzV/EYI4CtNQzvqtnC6nYjYB3QgYDcPRBUCmAausFVXxIqWcpe/WZZJYLSniZAY+xhuyJ9OhCaC0xWHyZkjuYL6iVHg7Ee/7M5ep+DkxqLmb/bxZWiOn841ijFBvDXGtvHT7V5z47ypicMUdmbVZOm3wpUaJeU7DYwGasEVWuy/zUKmMbaSCGODpTcGa8Z0xZCWgNQWkrsMBUfPj+Fc5eSBoD7DiuzAGu0mRYkuhMwNzPXmbV+mZUNL4cOmRC20FcQ1NqGiRhKFdOQur1Pcvok7Rq+/9+Sxu/dGkM3vmaO3XGfNdxLKqpaBfAeBH+y+RIowjv3GbtklEoaPkySXm/khaDqSHKQDsjipGQ7JOvz2xs6VWiKUcfsDQ1jY2NULDxhc8owU5lWQtbVC31l51oDgzsDiCfEjL28HVyKkheyx2Aj1StvX+K432gJq2CY9kFcALf+Nls6IxTJ8nFIGACuouDOLjTMCIZg+J1p5X7UiFHpuTRgQMvG6DeaBCqixa+nK+pbwqqVd6Xw2tCliclPJjuWxCVOj7yOzOPPsflTcnhbrQ0F71G3KBMO8Tcjg0/n5czhCzWivUsMWhQQLiKsqLZQ==')\"}]","icon":"https://www.xuanmao520.com/template/mytheme/statics/img/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"libvio","author":"","version":0,"type":"video","url":"https://www.libvio.me/type/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&日韩剧&欧美剧","class_url":"1&2&4&15&16","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":".stui-vodlist&&li;a&&title;a&&href;.pic-text1&&Text;.pic-text2&&Text;.lazyload&&data-original","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.stui-content__detail&&h2&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.stui-content__detail&&.data&&Text',//一般主演，地区，影片评分等描述\n content:'.stui-content__detail&&.desc&&Text',//内容简介，详情\n tabs:'body&&.stui-pannel__head',//线路\n lists:'.stui-content__playlist&&li',//列表\n tab_id:'a&&href',//线路id，可不填\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","icon":"#ff01bfa5"},{"last_chapter_rule":"","title":"小熊影视🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##http://www.xxys520.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.box&&.library-box'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/,  page+'$1')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('http://www.xxys520.com/index.php/verify/index.html?');;\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('http://www.xxys520.com/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nparStr=\".module-items&&.module-search-item;h3&&Text;img&&data-src.js:input+'@Referer=';.video-serial&&Text;a&&href.js:input+'#immersiveTheme#';.video-info-item&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://www.xxys520.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n//选择器填写区\n\n//信息接口，列表可以为空，不为空则信息内容基于列表，且列表不是数组\n\nvar 列表 = \".view-heading\";\n      var 信息 = \".video-info-items,1&&Text\";\n      var 信息1 = \".video-info-items&&Text\";\n      var 信息2 = \"\";\n      var 信息3 = \".video-info-items,3&&Text\";\n      var 信息4 = \".video-info-items,2&&Text\";\n      var 封面 = \"img&&data-src\";\n\n\n//简介接口\nvar 简介 = \".vod_content&&Text\";\n\n\n//路线名接口，路线列表与路线列表正则只能填一个，且返回数组\n\nvar 路线列表 = \"body&&.module-tab-item\";\nvar 路线列表正则 = \"\";\n      var 路线名 = \"Text\";\n\n\n//集数接口\n//只要是列表，都要返回数组\n\nvar 集数总列表 = \"body&&.scroll-box-y\";\n      var 集数列表 = \"body&&a\";\n            var 集数名 = \"a&&Text\";\n            var 集数地址 = \"a&&href\";\n\n\n//接口解析（非必填），填写了则默认免探嗅解析\n//默认未填格式：var 免嗅解析 = `@lazyRule=.js:`;\n\nvar 免嗅解析 = lazy\n\n//以下代码，如非必要请勿修改\n\n//探嗅代码\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n     if (urls[i].indexOf(\"url=\") == -1){\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n       }\n    }\n});\n\n\n//信息接口代码\nif (列表 != \"\") {\n   if(列表.indexOf(\"&&Html\") == -1){\n     列表 = 列表 + \"&&Html\";\n    } \n   var code = parseDomForHtml(html, 列表);\n} else {\n    var code = html;\n}\n\n信息 = parseDomForHtml(code, 信息).replace(/\\//g, ' ');\n信息1 = parseDomForHtml(code, 信息1).replace(/\\//g, ' ');\n信息2 = parseDomForHtml(code, 信息2);\n信息3 = parseDomForHtml(code, 信息3);\n信息4 = parseDomForHtml(code, 信息4);\n封面 = parseDom(code, 封面);\n\nif (信息.length > 20) {\n    信息 = 信息.replace(信息, 信息.substring(0, 20) + \"...\");\n}\nif (信息1.length > 17) {\n    信息1 = 信息1.replace(信息1, 信息1.substring(0, 17) + \"...\");\n}\nif (信息3.length > 20) {\n    信息3 = 信息3.replace(信息3, 信息3.substring(0, 20) + \"...\");\n}\n\nvar 标题 = 信息 + \"\\n\" + 信息1 + \"\\n\" + 信息2;\nvar 副标题 = 信息3 + \"\\n\" + 信息4;\n\nd.push({\n    title: 标题.replace(/  /g, \" \"),\n    desc: 副标题,\n    pic_url: 封面,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//简介接口代码\n简介 = parseDomForHtml(html, 简介).replace(\"　　\", \"\").replace(\"简介：\", \"\");\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n//探嗅设置\nvar 探嗅设置名 = MY_URL + \"探嗅设置\";\nvar 探嗅设置 = getVar(探嗅设置名);\n\nif(免嗅解析 == `@lazyRule=.js:`){\nd.push({\n      title:'📺探嗅解析',\n      url: `toast://不要点击了，没有其它选项`,\n      col_type: 'flex_button'\n    });\n}else{\n\nif(探嗅设置 == \"\" || 探嗅设置 == \"免嗅\"){\nvar 图标1 = '📺';\nvar 图标2 = '❎';\n}else{\nvar 图标2 = '📺';\nvar 图标1 = '❎';\n}\n\nvar 切换免嗅 = `@lazyRule=.js:putVar({key:'`+探嗅设置名+`', value:'免嗅'});refreshPage(false);'toast://切换免嗅解析成功...'`;\n\nvar 切换探嗅 = `@lazyRule=.js:putVar({key:'`+探嗅设置名+`', value:'探嗅'});refreshPage(false);'toast://切换探嗅解析成功...'`;\n\nd.push({\n      title:图标1+'免嗅解析',\n      url: 切换免嗅,\n      col_type: 'flex_button'\n    });\nd.push({\n      title:图标2+'探嗅解析',\n      url: 切换探嗅,\n      col_type: 'flex_button'\n    });\n\n}\n\n//空白行\nd.push({\n    col_type: 'blank_block'\n});\n\n//路线名设置\nvar 路线名设置名 = MY_URL + \"路线名设置\";\nvar 路线名设置 = getVar(路线名设置名);\n\n集数总列表 = parseDomForArray(html,集数总列表);\nif(路线列表正则 == \"\"){\n路线列表 = parseDomForArray(html,路线列表);\n}else{\n路线列表 = html.match(\"/\"+路线列表+\"/g\");\n}\nif(路线名设置 == \"\"){\nvar 临时名 = parseDomForHtml(路线列表[0], 路线名);\nputVar({key:路线名设置名, value:临时名});\n路线名设置 = getVar(路线名设置名);\n}\n\nfor (var i = 0; i < 集数总列表.length; i++) {\nvar 临时名 = parseDomForHtml(路线列表[i], 路线名);\nif(临时名 == getVar(路线名设置名) ){\n集数列表 = parseDomForArray(集数总列表[i],集数列表);\n临时名 = \"““\" + 临时名 + \"””\";\n}\n\nvar 切换路线 = `@lazyRule=.js:putVar({key:'`+路线名设置名+`', value:'`+临时名.replace(\"““\", \"\").replace(\"””\", \"\")+`'});refreshPage(false);'toast://切换路线成功...'`;\n\nd.push({\n      title:临时名,\n      url: 切换路线,\n      col_type: 'scroll_button'\n    });\n\n}\n\n//添加空白块\nd.push({\n    title: '',\n    col_type: 'line_blank'\n});\n\n\n//选集列表代码\nvar 路线名排序名 = MY_URL + getVar(路线名设置名) + \"排序\";\nvar 路线名排序 = getVar(路线名排序名);\n\nif(路线名排序 == \"\"){\nputVar({key:路线名排序名, value:'正序'});\n路线名排序 = getVar(路线名排序名);\n}\n\nif(路线名排序 == \"倒序\"){\nvar 倒序显示 = `‘‘` + getVar(路线名设置名) + `’’<small><small><font color='#5bb7fe'> •倒序•</font></small></small>`;\n\nvar 切换到正序 = `@lazyRule=.js:putVar({key:'`+路线名排序名+`', value:'正序'});refreshPage(false);'toast://切换正序成功...'`;\n\nd.push({\n    title: 倒序显示,\n    url: 切换到正序,\n    col_type: 'text_center_1'\n  })\n\n}else{\n\nvar 正序显示 = `‘‘` + getVar(路线名设置名) + `’’<small><small><font color='#5bb7fe'> •正序•</font></small></small>`;\n\nvar 切换到倒序 = `@lazyRule=.js:putVar({key:'`+路线名排序名+`', value:'倒序'});refreshPage(false);'toast://切换倒序成功...'`;\n\nd.push({\n    title: 正序显示,\n    url: 切换到倒序,\n    col_type: 'text_center_1'\n  })\n\n}\n\nif(路线名排序 == \"倒序\"){\nvar 暂时集数列表 = [];\nfor(var a=集数列表.length; a--; ){\n暂时集数列表.push(集数列表[a])\n}\n集数列表 = 暂时集数列表;\n}\n\nfor (var i = 0; i < 集数列表.length; i++) {\nvar 二级解析 =\"\";\nif(免嗅解析 ==`@lazyRule=.js:` ){\n\n二级解析 = 'x5Rule://' + parseDom(集数列表[i], 集数地址)  + '@' +_x5;\n\n}else{\n\nif(探嗅设置 == \"\" || 探嗅设置 == \"免嗅\"){\n\n二级解析 = parseDom(集数列表[i], 集数地址) + 免嗅解析;\n\n}else{\n二级解析 = 'x5Rule://' + parseDom(集数列表[i], 集数地址)  + '@' +_x5;\n}\n\n}\n\nd.push({\n      title: parseDomForHtml(集数列表[i], 集数名),\n      url: 二级解析,\n      col_type: 集数列表.length > 3 ? 'text_3' : 'text_2'\n    });\n\n}\n\n\nd.push({\n    title: '\\n',\n    col_type: 'long_text'\n});\n//在尾部加多行空格\n\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//自动二级(lazy);\n自动二级();","ua":"mobile","preRule":"var 验证码='http://www.xxys520.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题).replace('片库', '')\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题).replace('排序', '').replace('全部', '').replace('查找', '')\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl = unescape(base64Decode(jsurl));\\n    };\\n    var from = player.from;\\n\\n    var jx = \\\"https://player.xxys520.com/?url=\\\";\\n\\n    var parse = jx + jsurl;\\n    log('\\\\n线路：' + from + '\\\\n' + '解析接口：' + jx + '\\\\nURL：' + jsurl);\\n    showLoading(\\\"网页嗅探中,请稍后...\\\");\\n    var video = 'x5Rule://' + parse + '@' + $.toString(() => {\\n        var urls = _getUrls();\\n        var exclude = /playm3u8|m3u8\\\\.tv|min\\\\.css|404\\\\.m3u8/;\\n        var contain = /\\\\.mp4|\\\\.m3u8|\\\\.flv|\\\\.avi|\\\\.mpeg|\\\\.wmv|\\\\.mov|\\\\.rmvb|\\\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\\n        for (var i in urls) {\\n            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\\n                //fy_bridge_app.log(urls[i])\\n                if (/mgtv|sohu/.test(urls[i])) {\\n                    return urls[i] + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n                } else if (/bili/.test(urls[i])) {\\n                    return urls[i] + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n                } else {\\n                    return urls[i]\\n                }\\n            }\\n        }\\n    }) //video\\n    return video\\n});\"}]","icon":"http://www.xxys520.com/mxstatic/image/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"贝贝影院🤡","author":"缘分","version":0,"type":"video","url":"https://www.beibei133.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.menuNavList:not(:matches(今日更新))'\nconst 拼接分类 = 'body&&.selectList||.view-filter'\nconst 小类定位 = 'body&&a:not(:matches(首页|福利|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/mianfei\\/(\\w+)/, 'index.php/vod/show/id/$1.html').replace('.html', '/page/'+page + '.html').replace(/(---\\d+.html)/, page + '$1')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.box_con&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'i&&Text'),\n        img: pd(list[j], 'img&&src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.show-list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'h2&&Text'),\n       desc:parseDomForHtml(list[j], '.play-txt&&dl,4&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.beibei133.com/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n   var urls = _getUrls()\n   for (var i in urls) {\n       if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n          fy_bridge_app.log(urls[i])\n          return urls[i]\n       }\n   }\n}))\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '#zzjs_zzjs1&&h2,1:');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('-永久免费','').replace('贝贝影院-','').replace('-电影资源','').replace('电影',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '#zzjs_zzjs1&&.video_list,2:');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 分类 = parseDomForHtml(html, '#juqing&&.fn-clear&&dl&&Text').replace('类型：','');\n\nvar 主演 = parseDomForHtml(html, '#juqing&&.fn-clear&&dl,1&&Text').substring(0,15);\n\nvar 导演 = parseDomForHtml(html, '#juqing&&.fn-clear&&dl,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '#juqing&&.fn-clear&&dl,4&&Text');\n\nvar 图片 = parseDom(html, '.detail-pic&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '#juqing&&.tjuqing&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\nif(getVar(\"ms\")==\"1\"){\nvar Color =\"red\";\n}else{\nvar Color=\"#098AC1\"\n}\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n   title:(getVar(\"ms\")==\"1\"?getHead(\"♥️探嗅\"):getHead(\"💎免嗅\")),\n url:\"hiker://empty\"+`@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n  col_type: 'scroll_button',\n\n})\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">▲</font></small>' + '<small><font color=\"#ff4c00\">▼</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">▲</font></small>' + '<small><font color=\"#0aa344\">▼</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy1 = $('').lazyRule((MY_HOME)=> {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n        return url\\n}, MY_HOME);\\n\\nvar lazy2 = \\\"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\n\\nvar lazy = (getVar(\\\"ms\\\") == \\\"1\\\" ? lazy2 : lazy1)\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://www.beibei133.com/favicon.ico"},{"last_chapter_rule":"","title":"TVB云播","author":"","version":0,"type":"video","url":"hiker://empty##http://www.hktvmi.com/vod/show/id/2/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n  //这里是随机颜色代码\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.nav-list'\n//这里是四大金刚的定位,现在看看是否正常显示。\n\nconst 拼接分类 = 'body&&.myui-screen__list'\n//这里是定位年代什么的\n\nconst 小类定位 = 'body--a&&a'\n//因为前面多了一排不需要的所以用--排除第一个a\n\nconst 分类标题 = 'a&&Text'\n//这里几乎不需要动\nconst 分类链接 = 'a&&href'\n//这里也是\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(\\d+)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n//这一块，你们不会正则的，其实嫖了这么多动态分类的。咋们直接用链接去搜，我操作一遍给你们看看，套娃就是复制粘贴\n\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\n\npdfa(html, '.myui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-tag&&Text'),\n       img: pd(list, '.lazyload&&data-original'),\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nJSON.parse(getResCode()).list.forEach(list => {\n  d.push({\n       title: list.name,\n       desc: '',\n       content: '',\n       pic_url: list.pic,\n       url:'http://www.hktvmi.com/vod/detail/id/'+list.id+'.html#immersiveTheme#'\n  });\n})\nsetResult(d)","search_url":"http://www.hktvmi.com/index.php/ajax/suggest?wd=**&mid=1&limit=10","group":"1影搜","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\n\n// 从子页面引入lazy\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\nvar html = getResCode();\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&h3');\n\nvar len=arts.length-2;\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n   if (i==0||i>len-2)continue;\n    tabs.push(parseDomForHtml(arts[i], 'Text')); \n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,4&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"// lazy定式\\nputVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n            //fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n            //fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\nvar jsurl=xx.url;var from=xx.from;\\nif(jsurl.match(/\\\\.m3u8|pan/)){\\n     jsurl\\n }else{\\n     showLoading('正在嗅探中，请稍候');'x5Rule://'+input+'@'+getVar('_x5')\\n     }`;\\n\"}]","proxy":"","icon":"https://jscdn.ssxmall.cn/01/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"好看影视大全","author":"","version":0,"type":"other","url":"hiker://empty##https://m.ysdqwz.com/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nvar d = d || []\nlet 一级 = $.require('hiker://page/yiji?rule=模板·Q')\n\nvar page = MY_PAGE\nvar true_url = 一级.获取正确链接(page)\nlet headers = {\n    \"User-Agent\": PC_UA,\n    \"Referer\": MY_URL\n};\nvar html = 一级.获取源码(true_url, headers)\n\n一级.打造分类([\n    // 定位四大金刚\n    {\n        一级分类: 'body&&.dropdown',\n        子分类: 'ul&&li:gt(0):lt(5)',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n    },\n    // 定位其他大分类，如地区、年份等\n    {\n        一级分类: 'body&&.type-slide',\n        子分类: 'body&&a',\n    }\n])\n\nvar 列表 = 'body&&.stui-vodlist__thumb';\nvar 标题 = 'a&&title';\nvar 描述 = '.module-item-note&&Text';\nvar 图片 = 'a&&data-original';\nvar 链接 = 'a&&href';\n\n一级.生成片单(d, html)\n\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://m.ysdqwz.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://m.ysdqwz.com/statics/img/logo_min_f.png"},{"last_chapter_rule":".stui-content__playlist&&a,-1&&Text.js:'更新至：'+input","title":"剧白白2♔","author":"蓝莓果酱UX","version":7,"type":"video","url":"hiker://empty##https://www.jubaibai.cc/type/dianying-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.stui-header__menu'\nconst 拼接分类 = '#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(首页|明星|资讯|敏感|专题))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href.js:input.replace(/type/, \"vodshow/id\")'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/-(.*?).html/)[1];\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = []\nfor (var j of JSON.parse(getResCode()).list) {\n    d.push({\n        title: j.name,\n        img: j.pic + \"@Referer=\",\n        url: 'https://www.jubaibai.cc/vod/' + j.id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"https://www.jubaibai.cc/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-vodlist__head:has(.stui-content__playlist)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], '.title&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, 'p.data,6&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,7&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('6rySfIeN3hsCAqUc3KkURJbJIXdwuJFz/adduvbmQ2HfqHFXVN3US5KPTK/sYj/RwNn9Wg11DHsagUf0evCgNzS8ZwMgG30PF/sMSa1Zqrjw9HQHG7hZoPmt2kUS5hTFOa1N0pd8J5Id2rDZ8hnm/UAGCc9fvrJVD4ghGxB8A1XIMYLK4sQ5f9q/sSWXw0oFlFc6gpociX00sHWRzNjPHLndJOega2ROBu4EBbZqw8jPwWixtgyiaB5HmNke0ivynq1qZ+uidc8w0fEORAAgZjh7WJjXaOtIYu4LkYazxEhTOkerP5FbSzCxDTyZJuUOjLjw2N2jRYfCoKAh0Mp3jf7Ihbdz3b7jZ7fa0C7iofWNAcozUQUd/gKqbkxCCgUZumt5hf4MsC9bD0QLzwzJLgqsALsoc7TsANcYPWB73UsYNNQoXNpShjm/5Ispk3jKuzGbegHR1GwCIO6TSNST7I88PohVkIA5gKiM3ZVA2QVsWAX+HNfmP6HWZLzUFWVlw24JhDfDi9XOK8J2QU8uumQ6qyl6ZGAvJpkaQOGiKAFHmTDpWKV4e814sfR5DUrqYiDp9mOUy1+THVNoWhhMIvQIJazMbzOVIXWNOybkC8NkOzCxjqWQ0W5ahtJyu9rpm2khEeK+Sg5XMh8gqO9nH8CGepthlmCdmpy61d1M8EEze2LgUUR0gRGmaQtpUts8bdc/vB+ulHBX1dHXCzaNhsUi1sCRXT3FOIlnK7VIDgX+L3egDNWjnQToWhYGsoKimYgQlKXhJYL315ERXNzGiTcnMIJg87QkD5QCaifIdXen8w0gblLB5qKI2gh5yM2cnIzeCbgxbFFFkiJXVeBpk2suf9WNjRN5Qh0dMO8P5cyJHiTPFiNLLzXnZuq64HfMnEyY17Huf9V7OVzQBkd8JywhxGYFWCPrVq/jnMjxSHmf/0BbzCwMUr7qC5SgyalO7uC8Qf0fDxmcGv/+HmMjLkONysYa4G2ARrKAroPB8lXq29LjLgTOfogxjj/lXKvQuFyyvB7otcyoEB/QSD2iQhbmnqodJo9X959IGZp6dhfJsat3Adpy3sKn9dVKyW/COkQnxCTSw8aSF2JE0f0StrBCxChGTUOx1/oz1n41EhDuJeXomdkUHRrDV0CNB24XGvudHR0RsSK7GgzMwUUKmGa89ZAghFl83csRYNj5ck4Jis6sCoqqXJY765hf/Zx4hCnzq8EMrGAFVQwJd/iMOVjy0zrxSd64Hi3Gbpb+bz5YXgo/xJrBkAt5nKK/lvMMpMajlH55WRAX4orhi0IuKis8BW7y9iUcKsEj1b7dk55O7EhPGUYyNtLNgoXRQOmvPcrVNC4nGm5UxRRNg0bPWYzrtQelj8D3/YIpgkyiK0uacIIWqpGcCmN5zi9htR8iiHswqiUFZ58gqyzHO4jfAItgw4epRIxW6c6EzG3MxfY=')\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","icon":"https://www.jubaibai.cc/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\n//选集列表的定位\nvar list = pdfa(conts, 'ul&&li');\nvar title = pdfh(list[list.length - 1], 'a&&Text');\nsetResult(\"更新至: \" + title);","title":"小墙迷·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://www.xqmi.top/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.stui-header__menu'\n\nconst 拼接分类 = 'body&&.stui-screen__list'\n\nconst 小类定位 = 'body&&a:not(:contains(首页)):not(:contains(专题)):not(:contains(APP下载))'\n\nconst 分类标题 = 'a&&Text'\n\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        .replace('type', 'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        //content: parseDomForHtml(list[j], 'p,1&&Text') + \"\\n\" + parseDomForHtml(list[j], 'p,0&&Text') + \"\\n\" + parseDomForHtml(list[j], 'p,2&&Text'),\n        pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"text_3","detail_find_rule":"js:\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\nvar d = [];\nvar html = getResCode();\n\n\nvar playBtn = pdfh(html, '.playbtn&&a&&href');\n\nvar playhtml = request('https://www.xqmi.top/' + playBtn);\nvar arts = parseDomForArray(playhtml,'body&&.t-ul&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\nvar conts = parseDomForArray(playhtml, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&a'))\n}\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\n\nd.push({\n\ttitle: parseDomForHtml(html, '.data,2&&Text').replace('类型：','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.data,1&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data&&Text').substring(0, 15),\n\tdesc:parseDomForHtml(html,'.detail-sketch||.data,3||#desc&&Text'),\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: fm,\n\tcol_type: 'movie_1_vertical_pic_blur'\n});\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', ''),\n            url: parseDom(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n    var jx = MacPlayerConfig.player_list[html.from].parse\\n    eval(request(jx + url, {\\n        headers: {\\n            'Referer': MY_URL\\n        }\\n    }).match(/var config = {[\\\\s\\\\S]*?}/)[0])\\n    jx = jx.replace('?url=', '')\\n    eval('jxk = ' + request(jx + 'js/setting.js').match(/var.*=(\\\\[.*?);/)[1])\\n    eval(request(jx + 'js/decode.js'))\\n    jx += jxk[4]\\n\\n    function dd(jx, body) {\\n        return getVideoInfo(JSON.parse(post(jx, {\\n            body: body,\\n        })).url);\\n    }\\n    return dd(jx, {\\n        url: config.url,\\n        vkey: config.vkey,\\n        token: config.token,\\n        sign: jxk[8]\\n    }) + '#isVideo=true#'\\n}, MY_HOME)\"}]","icon":"https://www.xqmi.top/template/xqmi/img/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"香资搜","author":"香雅情","version":4,"type":"other","url":"https://v.sogou.com/api/video/result?order=&style=&zone=&year=fyyear&req=class&entity=fyclass&page=fypage&pagesize=30","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"film&teleplay&tvshow&cartoon","area_name":"","area_url":"","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar res = {};\nvar items = [];\n//var pg = MY_URL.match(/page\\=(.*?)\\&pagesize/)[1];\n//if (pg == '1') {\n    items.push({\n        title: \"资源网搜\",\n        url: $.toString(() => {\n            var link = 'hiker://empty$$$?wd=' + input + '&pg=1&ac=list$$$fypage';\n            //log(link);\n            return $(link).rule(() => {\n                eval(fetch('hiker://files/rules/xyq/zywcj.js'));\n                zywsea()\n               \n            });\n        }),\n        desc: \"请输入搜索关键词\",\n        col_type: \"input\"\n    });\n//}\nvar html = JSON.parse(getResCode());\nvar list = html.longVideo.results;\n\nfor (var i = 0; i < list.length; i++) {\n    var title = list[i].name;\n    var img = list[i].v_picurl;\n    var desc = list[i].score;\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $('hiker://empty$$$hiker://files/rules/xyq/hikermovie.json$$$' + title.replace(/[\\s]/g, '') + '$$$fypage$$$').rule(() => {\n            eval(fetch('hiker://files/rules/xyq/hikermovie.js'));\n            hiksearch();\n        }),\n        desc: desc\n    });\n}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hiksearch();","search_url":"hiker://empty$$$hiker://files/rules/xyq/hikermovie.json$$$**$$$fypage$$$","titleColor":"#fff20c00","group":"1影搜","detail_col_type":"text_2","detail_find_rule":"","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"mobile","preRule":"//执行香情影视预处理\nvar lac = fetch('hiker://files/rules/xyq/hikermovie.js');\nif (lac.search(/lazyRule/)!=-1) {\n    eval(lac);\n    hikerpre();\n} else {\n    setError('香情影视规则不完整请尝试切换到香情影视检查。');\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小苹果影视i（不免嗅）","author":"ivnyoov","version":0,"type":"other","url":"https://www.163kp.com/vod-list-id-fyclass-pg-fypage-order-desc-by-fyarea-class-0-year-0-letter--area--lang-.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"1&2&4&3","area_name":"推荐&人气&时间","area_url":"score&hits&time","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".crlist&&ul&&li;\n.jqr&&title;\nimg&&src;\n.bz&&Text;\n.jqr&&href","searchFind":"body&&.sul&&li;\n.link&&title;\n.link&&href;\n.scorebg&&Text;\n.stext--h2&&Text;\n.lazy&&data-original","search_url":"https://www.163kp.com/vod-search-pg-fypage-wd-**.html","titleColor":"#ffff00ff","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\ntry{\nvar des_pic =parseDom(html, '.img&&img&&src');\n}catch(e){\nvar des_pic ='';\n}\n\ntry{\nvar des_desc = parseDomForHtml(html, 'body&&.cdes1&&Text');\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\nvar arts = parseDomForArray(html,'body&&.from');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.playlist');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.ulli&&ul&&li'))\n}\n\nd.push({\ntitle:'共有'+arts.length+'条线路\\n如果无法正常显示，请点击此处访问原网页',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: MY_URL,\n col_type: 'movie_1_vertical_pic'\n});\n\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'flex_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘选集：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href'),\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href'),\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#fffe9700"},{"last_chapter_rule":"","title":"蓝莓X","author":"ccc","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://lanmeiguojiang.com/ys/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        floatVideo: true,\n        canBack: true       \n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/ys/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"看看","author":"哈哈哈","version":0,"type":"other","url":"https://www.kankanpu.com/vshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-original')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.kankanpu.com/vsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-ab498c51-8871-421b-8e23-a43eaa306dff/36a681d7-ed59-42cc-b55c-b20964a8a9d0.png"},{"last_chapter_rule":"","title":"花火影视","author":"","version":0,"type":"video","url":"hiker://empty##https://www.hanabi.tv/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.myui-screen__list'\nconst 小类定位 = 'body--a&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace('vodtype', 'show').replace('.html', '/page/'+page + '.html')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.hanabi.tv/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.hanabi.tv/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"茶杯狐搜.dr","author":"道长&Taoist","version":2,"type":"video","url":"hiker://empty##https://cupfox.app/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d=[];\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n搜索建议(d, '海报开');\nsetResult(d);","searchFind":"js:\nrequire(config.模板);\nlet d=[];\nvar page=MY_PAGE;\nMY_URL=MY_URL.replace('hiker://empty##','');\n//log('当前页数:'+page);\nfunction render(data,d){ \ndata=JSON.parse(data);\ndata=data.resources||data.props.pageProps.resourceSearchResult.resources;\nlet lazy=魔断();\ndata.forEach((o)=>{\n    d.push({\n        title:pdfh(o.text,'body&&Text'),\n        url:是否支持魔断(o.url,true)?o.url+lazy:o.url+'#immersiveTheme#',\n        desc:o.website,\n        icon:o.icon,\n        content:o.tags.join('')\n    })\n});\n}\nif(page==1){\nvar html=request(MY_URL);\nlet data=pdfh(html,'#__NEXT_DATA__&&Html');\nrender(data,d);\n}else{\n    let key=MY_URL.match(/key=(.*?)#/)[1];\n   // log('搜索关键字:'+key);\n    eval(getCryptoJS());\n    let token = CryptoJS.SHA1(key+ 'URBBRGROUN').toString();\n   // log('搜索token:'+token);\n    let size=20;\n    let from=10+size*(page-1);\n    let url=`https://api2.jackeriss.com/api/v2/search/?text=${key}&type=0&from=${from}&size=${size}&token=${token}`;\n   // log('搜索链接:'+url);\n    d.push({\n      title:`搜索${key} 第${page}页`,\n      url:'toast://别点我，点下面的搜索结果'\n    });\n    let data=request(url);\n    render(data,d);\n}\nsetResult(d);","search_url":"hiker://empty##https://cupfox.app/search?key=**#fypage","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://p0.meituan.net/dpgroup/cd088044f183d2719f3f9fe56d5c34204207.png"},{"last_chapter_rule":"","title":"茶杯狐x5","author":"ccc","version":0,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://cupfox.app/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        floatVideo: true,\n        canBack: true       \n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"私人不卡影院","author":"","version":0,"type":"video","url":"https://soumk.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body--li&&li:not(:contains(APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\nconst list = pdfa(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\" + pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://soumk.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://soumk.com/statics/img/load.gif"},{"last_chapter_rule":"","title":"西瓜影院2","author":"ccc","version":1,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://m.5xigua.cc/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        floatVideo: true,\n        canBack: true       \n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/ys/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nzuixin()","title":"懒猫影视√","author":"帅√`人才","version":2,"type":"video","url":"hiker://empty##http://221.236.18.123:665/api.php/v1.vod##video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear##fysort","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","area_url":"&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"http://lanmao.lanmaoymw.cn/api.php/v1.vod","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nyiji()","searchFind":"js:require(config.依赖);\nvar 是否APP = 1;\nsousuo()","search_url":"hiker://empty##http://221.236.18.12:665/api.php/v1.vod##search?text=**&pg=fypage&page=fypage&limit=10","titleColor":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nerji()\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://src48597962.coding.net/p/src/d/hk/git/raw/master/srcDyTmpl.js\"\n});\n//上面的代码不要随意修改，by.帅√`人才 影视模板","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/3.png"},{"firstHeader":"class","last_chapter_rule":"","title":"聚杯狐1.Aotu","author":"小棉袄&tee&香雅晴&发粪涂墙&道长&顺承天意&枫林雨殇&风吹发梢","version":3,"type":"video","url":"hiker://empty##fyclass","col_type":"movie_3_marquee","class_name":"首页&茶杯狐&51搜剧&电影狗&白嫖联盟&搜片&未知搜索","class_url":"all&https://cupfox.app/&https://51souju.com/&https://www.dianyinggou.com/&https://www.bpzhe.com/&https://soupian.app/&https://xsear.ch/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar myurl = MY_URL.split(\"##\")[1];\nfunction loadUrl(myurl) {\n  setResult([{\n        col_type: \"x5_webview_single\",\n        url: myurl,\n        desc: \"float&&top\",\n        extra: {\n            canBack: true,\n            urlInterceptor: $.toString(() => {\n                if (!input.startsWith(\"https://cupfox.app/\")&&!input.startsWith(\"https://51souju.com/\")&&!input.startsWith(\"https://www.dianyinggou.com/\")&&!input.startsWith(\"https://www.bpzhe.com/\")&&!input.startsWith(\"https://soupian.app/\")&&!input.startsWith(\"https://xsear.ch/\")&&!input.includes(\"search\")&&!input.includes(\"douban\")&&!input.includes(\"baike.baidu\")&&!input.includes(\"wikipedia\")&&!input.includes(\"moegirl\")&&!input.includes(\"bilibili\")) {\n                    return $.toString((url) => {\n                        fba.open(JSON.stringify({\n                            rule: '聚杯狐.Aotu',\n                            url: 'hiker://page/detailsQ?rule=聚杯狐.Aotu&url=' + url\n.replace('yzne.com/thread','yzne.com/VOD')\n.replace('31kan.vip/play','31kan.vip/31kan')\n.replace('niumatv.com/play','niumatv.com/vod')\n.replace('dm530p.cc/play','dm530p.cc/view')\n.replace('play','detail')\n.replace(/bilibili(.*?)\\/detail/,'bilibili$1/play')\n                         }));\n                     }, input)\n                }\n            })\n        }\n    }]);\n}\nif(myurl == \"all\")\n{\nlet d = [];\nlet cls = getMyVar(\"cls\", \"\");\n    if (cls) {\n        u = cls;\n        loadUrl(u);\n        clearMyVar(\"cls\");}\n  else{\nlet r = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title));\nlet cn = r.class_name.split(\"&\");\nlet cu = r.class_url.split(\"&\");\nlet cpic = [\"\",\n\"http://pic.xiazaicc.com/upload/2021-11/202111221029492933.png\",\n\"https://51souju.com/images/favicon.png\",\n\"https://img1.ali213.net/shouyou/cover/5/10355333.jpg?1642604271\",\n\"https://dingyue.ws.126.net/2022/0306/71f04a37j00r8btks0004d0007s0028p.jpg\",\n\"https://soupian.app/images/icon.png\",\n\"https://xsear.ch/favicon.ico\"];\n\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n 搜索建议(d, '海报开')\n\nfor (let i = 1; i < cn.length; i++) {\n            d.push({\n                title: cn[i],\n                url: $().lazyRule((u) => {\n                    putMyVar(\"cls\", u);\n                    //refreshX5Desc(\"top&&float\");\n                    refreshPage();\n                    return \"hiker://empty\";\n                }, cu[i]),\n                col_type: \"icon_small_3\",\n                desc: \"\",\n                pic_url: cpic[i],\n            });\n        }\nrefreshX5Desc(\"0&&float\");\nsetResult(d);}\n}\nelse{\n  loadUrl(myurl);\n}\n//一级来自聚云盘pro微改套娃,顺佬视界搜索","searchFind":"js:\n     require('hiker://page/searchss');\n//搜索解析规则来自香情影视茶杯狐模块，by香雅晴&发粪涂墙","search_url":"hiker://empty##hiker://empty#x#fypage@-1@#x#**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n       require('hiker://page/detailsQ')\n\n//默认跳转墙佬模版Q自动匹配+香免，可自行改为跳转DR匹配，将detailsQ改为details即可。","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"DR二级匹配\",\"path\":\"details\",\"rule\":\"js:\\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');\\nrequire(config.自动匹配);\\n香免();\\n自动二级(lazy);\\n//自动二级();\"},{\"col_type\":\"movie_3\",\"name\":\"香情茶杯搜\",\"path\":\"searchss\",\"rule\":\"\\nevalPrivateJS('htzOHxroWA41B+XJreUT33ykqGmgOXJZ70dffIdDod0kg0123lFJ8N1ubSa86all4OxdDYIQEu30fQXie6Z4c6dO+WWatbvlg2bz8kKBgwu2glL7neKT5Ex6p3uF0XkaadlPBFegSYIIG98SEo9Qee6BGZsXQlHtmgG4d6mav5c91UvwrMEYrgZcNe5yqI1vjbyVmyKcbfSMeKsHPbjvwRLvPHNY1LDxCi6eYLy2ma6v9kGawi8v/1gjQLnxJLjSC1eWCdIt66TRNSxQt9228hWBvYjLtX1gohOX8eIIdrqQyYCwu41mDfwsEs5fBN8Nnr7STGkMgJIJw92tpR0RKZHjWLev0FjM9qNZaoWSmxSnQPvhQTXyO/IhV7R56UUWqKTCPBTi/Ilchx2VJsjgudXQD6PokdxxSWXQJkMcg6a0hclNB4QbajuKJ+wxhk5267pOKGEwx7OEHhiDw39m5faBlmPhclYp3fcXYyTsT1RuFYg+JVoRJjav64kIGac0Mh11h2TdKVx4k4ovzFDCxSLdYbiPPsF4KhCDJBopzr9OhU8OkkiZv3P4PKWSDblNQCCAUWeq3Mj5V37i3/of/VFBEk4M04dBBhsAlkEf6NH9sQEi4iul81t7xIV9i/nz5X29H/u7M2pW6Ya8LftIEUm44Naizm+ls31MNYX8qzUCxIH9qubvAMojmRXb/eU5sMHGMAqvkZeC6E7bn9j4+ssry0jWVnP7CJ/71kgB1Pb9O60sZqLoUNj9BX7/V8MWiRTfUbbcTLH9dYcWlslWQzawo7kkU+GFYsXhhYW49/QN23a6f2c+TutmOyrs9/qLLnWVXRlLNqtE5QhMwJBQoW1KvGj46OAPHM6oKU7AzEd5eoZcEyJRqIuLeaT7fzw3Tc6Dd8x/g/Jz9nF/HoFcztKelV0iT7k3msEUUOHN3K13kJrQhwqVIFylaLXA3c1g8LxFmYf7pIS1L5JEdfIeTBlMSrNqLKK8ah+ofCBx487boGA7xH+JthRxElGLcLe/yyvLSNZWc/sIn/vWSAHU9pl48vKq8YSLkItcTAns/rrr8qKDn9nXCR+AYr8UVg+GuUGgxRrr8pUK4caYKFgTaMPFYozkx8/F/j9diQTgq6PJsMgUd/7H/K5qFYtUJaPp16Qa1ldQicD6a1ZGWm19wLof0KL6zTHU83Ye1Yqx9zavGiTqVsj8wIbQD/nqZiYUxTtnWy9G0Q20b8mdoAwJ0gAbBWX54FsH5axd1mrJJVPf9SF36p0/zJUskWzbnXiCuiiBjfhmvK1Lq6j+pvtsHzzvcuXIErgr1D/PugFmhOVA/52NALXkD536BxSfTTEOoVf+RSkdJTaIE9ix7owrzeJyvetfK2JMjj9/8U0MrM3Bt3Pggyyl6sgHekltggbazpQy+w7887DkJyvv2wnOJwiNAfDvlK55dIWcbpRCH89EaO45ulKP+Mdn6aVNCspGmpuanfinoJJBEjhvJEEHqexn7CDPXR9TsDyMCkUUlhfiU0ZPAOUEwjHLyehUkaeiKHdDVQXhZdFzWmImdMeFkbaYZ1y3BaxxrFcnyJ08Kw3dwmOrZQAimtyxucOw5C3HGgaS3Bty/uXCCdqb9AHhCO9lvy0MISNXGeuyOM+vGFkr9ksIiTimwFIjX22/auVo6LB2szQwqEald3J4O4yZ8/z8SMm1YbBCVMgVO2pHfRXOlDL7DvzzsOQnK+/bCc4nCI0B8O+Urnl0hZxulEIfz0Ro7jm6Uo/4x2fppU0Kykaam5qd+KegkkESOG8kQQeplqU6NcH+UkFZVTkVZIKQyBQy3QzEQIm6yj984loSf/apx6xeyO5ynAQAHwQ7SFpZ47ALu7gwuKS/5cTL3g7nz9BqncJuFU2VkBD2Aznb5sHZZ4MlspKD+8kvXrN31jnsn1O3iRHqQwmGBBtgthFSJv049sCEfpuOBOqh41Oo/cv610K0RWWYBC0sicPf0oE94iQoZ9QgY7QcH+jc5igTBL3hr/2dskqrUpc+Yh7Ivj6rbPf8YejcN6aQaJQ9wAuiRffC8vIWZL/WtgCHGO1YCXxvCLiXkqmI3Gyz19pgdZMkqCHSYKktaBWRCZCKwT4fKUPG3liqyciTGGsA39M6L1RtBrdgaAX+f4d+5WzXLu26KIGN+Ga8rUurqP6m+2wfPO9y5cgSuCvUP8+6AWaE5aW29qRyPP7d7J9mBAAD+oS7pzy09dZOZVLGY2qHzFKM0txBeXP/uaadV6gKVvUvqfPpdsvJ4guUH/Au18B1pXWSrD729rI6FsHKVeKEEzMnDleUpv3/l/TE8oWXoov0Kssry0jWVnP7CJ/71kgB1Pa8sVmDOzIlSTI8YWcj2X3jyyvLSNZWc/sIn/vWSAHU9lU9Q5OnEieM5XEFPZKP78RLDuUtDmqywnGdgD9oD7LSwFitHSh+EKJGCMoUuFI21AvPYzPwlrU/cdn/B2WZD4dVeaODRARcvglcRt5amx+EyyvLSNZWc/sIn/vWSAHU9vUOBDokEgsyEQhXunKQLso6pZtT2eFCN0xWvtr+Lw7/YaUbjlRa3lxUqit4O2bDXHOGFfymbcp6cmbaT3DHxIBeCwzQ1CrLwP9ObeJX+IFRKs1ZFw/1UvdN3wdpQ7p9KRu06fibb5CxMXNG21Avo1T43Kjwy4ugGqZYKrDKS0QcggR79fsH3aEJtF/aD5wbtdBqncJuFU2VkBD2Aznb5sHZZ4MlspKD+8kvXrN31jnsjqYqzLHdbA45CLO3y8a5zDopWWAFxzHJnn516rbjSP/610K0RWWYBC0sicPf0oE94iQoZ9QgY7QcH+jc5igTBL3hr/2dskqrUpc+Yh7Ivj7lGbR6oye/DyAnWeI4wyL6hLfx/XgpCP7DboVOYuft1nxvCLiXkqmI3Gyz19pgdZMIa/p/ET6baZH4nWkjpfoTa6BOBjBxNF/FK4iqxdQjOVRtBrdgaAX+f4d+5WzXLu26KIGN+Ga8rUurqP6m+2wfPO9y5cgSuCvUP8+6AWaE5aW29qRyPP7d7J9mBAAD+oS7pzy09dZOZVLGY2qHzFKM0txBeXP/uaadV6gKVvUvqfPpdsvJ4guUH/Au18B1pXWSrD729rI6FsHKVeKEEzMnwogAr3ii3RdWO+FPF0efUMsry0jWVnP7CJ/71kgB1Pa8sVmDOzIlSTI8YWcj2X3jyyvLSNZWc/sIn/vWSAHU9mhxgQ2fgKW4l/BrQ449UCiJ0bwp9Ller74QvTH+SWI+wFitHSh+EKJGCMoUuFI21AvPYzPwlrU/cdn/B2WZD4dVeaODRARcvglcRt5amx+EyyvLSNZWc/sIn/vWSAHU9vUOBDokEgsyEQhXunKQLso6pZtT2eFCN0xWvtr+Lw7/BELBpJY5K0gwgOTWU6GnPWBXNGzbCyVMPwxrkiUePpnMp+icAh8fHUqxWKIQRaMg5jXxXmc3FfILjE/mB0nPsw==');\\n\"},{\"col_type\":\"movie_3\",\"name\":\"Q模版二级匹配\",\"path\":\"detailsQ\",\"rule\":\"js:\\nvar lazy = $('').lazyRule(() => {\\n\\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n    return x5rule(input, input);\\n    \\n});\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/327.png"},{"last_chapter_rule":"","title":"酷视屋","author":"","version":0,"type":"video","url":"hiker://empty##https://www.kushiwu.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.hl-nav'\nconst 拼接分类 = 'body&&.hl-filter-list:not(:matches(连载动画|完结动画|电影))'\nconst 小类定位 = 'body&&a:not(:matches(首页|直播|留言|最新|资讯|专题|APP|排行))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nvar page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------/').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.hl-vod-list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = []\nvar list = pdfa(getResCode(), 'body&&.hl-list-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: pdfh(list[j], 'a&&title'),\r\n       desc: pdfh(list[j], '.hl-pic-text&&Text'),\r\n       img: pd(list[j], 'a&&data-original'),\n       content:pdfh(list[j],'p,-1&&Text'),\r\n       url: pd(list[j], 'a&&href') + '#immersiveTheme#'\r\n  });\r\n}\nsetResult(d)","search_url":"https://www.kushiwu.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = []\nvar html = getResCode()\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nd.push({\n    title: pdfh(html, '.hl-data-xs&&Text').replace('类型：', '').replace('地区：', ' ').replace('年份：', '').replace('语言：', '') + '\\n\\n' + pdfh(html, 'p,4&&Text').substring(0, 30),\n    desc: pdfh(html, '.blurb&&Text'),\n    img: pd(html, '.hl-lazy&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.hl-from-list&&li'\nvar 选集 = 'body&&.hl-plays-list'\nvar 线路名 = 'Text'\nvar 选集列表 = 'ul&&li'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"好看影视","author":"","version":0,"type":"video","url":"hiker://empty##https://kh666.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.hl-nav'\nconst 拼接分类 = 'body&&.hl-filter-list:not(:matches(连载动画|完结动画|电影))'\nconst 小类定位 = 'body&&a:not(:matches(首页|最新|留言|APP|排行|专题))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nvar page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------/').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.hl-vod-list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = []\nvar list = pdfa(getResCode(), 'body&&.hl-list-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: pdfh(list[j], 'a&&title'),\r\n       desc: pdfh(list[j], '.hl-pic-text&&Text'),\r\n       img: pd(list[j], 'a&&data-original'),\n       content:pdfh(list[j],'p,-1&&Text'),\r\n       url: pd(list[j], 'a&&href') + '#immersiveTheme#'\r\n  });\r\n}\nsetResult(d)","search_url":"https://kh666.cc/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = []\nvar html = getResCode()\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nd.push({\n    title: pdfh(html, '.hl-data-xs&&Text').replace('类型：', '').replace('地区：', ' ').replace('年份：', '').replace('语言：', '') + '\\n\\n' + pdfh(html, 'p,4&&Text').substring(0, 30),\n    desc: pdfh(html, '.blurb&&Text'),\n    img: pd(html, '.hl-lazy&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.hl-from-list&&li'\nvar 选集 = 'body&&.hl-plays-list'\nvar 线路名 = 'Text'\nvar 选集列表 = 'ul&&li'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"快看","author":"发粪涂墙&木","version":0,"type":"video","url":"hiker://empty##https://www.ikan234.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = '#screenbox&&ul'\nconst 小类定位 = 'body--li&&li:not(:contains(专题))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\nconst list = pdfa(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\" + pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.ikan234.com/search/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"TV1920♔","author":"蓝莓果酱UX","version":0,"type":"video","url":"hiker://empty##https://www.tv1920.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        .replace('type', 'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nlog(true_url)\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\nif (html.indexOf('系统安全验证') > -1) {\neval(JSON.parse(request('hiker://page/jxhs?rule=模板·Q')).rule);\n    evalPrivateJS(ssyz);\n    let headers = {\n        \"User-Agent\": PC_UA,\n        \"Cookie\": getVar('1920$cookie'),\n        \"Referer\": MY_URL\n    };\n    let vcode = getVCode2('https://www.tv1920.com/index.php/verify/index.html?', JSON.stringify(headers),'num');\nfetch('https://www.tv1920.com/index.php/ajax/verify_check?type=search&verify=' + JSON.parse(vcode).ret, {\n        headers: headers,\n        method: 'POST'\n    });\n    html = fetch(getUrl(), {\n        headers: headers\n    });\n}\r\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img&&data-original')+'@Referer=',\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.tv1920.com/index.php/vod/search/page/fypage/wd/**.html\n;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)&&Cookie@.js:getVar('1920$cookie')}}","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (!getVar('1920$cookie')) {\n    var html = fetchCookie('https://www.tv1920.com/index.php/verify/index.html?', {\n        headers: {\n            \"User-Agent\": PC_UA\n        }\n    })\n    let cookie = JSON.parse(html);\n    putVar('1920$cookie', cookie.join(';'));\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('qC04ik7fP4gWaqXW7rptSw+8i9oyfSr0lWCb17OnifgtG9epoyGRYt86+CYk2fn8RdAzYhAIeYvjgWCfSiRhHbJhMLcWSdlCenN1Mm9oq7nw7zMAdAzfxUJOnExlzpLXPUkg8jXPqwMmoSnbpny9ewFh/anLPVGbbzPB/MFCIAYhF02YGjCPcvMDwAqyeUCGmQ3/FsOHVkDuZJNM7mtRiGe+QEDiqM4G6BqRhrgA9tsvuQ28bZvnImxlrG53vYF9k3pcCMuCPFB8mSc/Yq1II8V9qTxKTRzDcnxcN3voBem3SKONjjuvLNUkyUrI9sJssIrgtckjTIpC2Wtx0Cjf7S5zBJnKplPNLbguNmz12Xunu8tqvoG7vZQkTC53KdsWW0RcQwB0MZKDOV8HhlRTcFyVvUSOECofh2v+PpHaNSiOn6Bsh4nBOEKrLUN0Uw3+LrXYa/8BtCqIH1KO8MR+4SMHY+FZgoYm9kiiqCrE0Il0m8/D1AzkaqxknEnhBpkgaVPVgThTamlK1DFHngvZnedeBjmIcRhM5lJfihXt6W5g6fo2DkDWG+qPwiJpjMFGTrJyxkiF8yZ0xSwEbB+y3NcxJrVztXxAUA/ERxMK2rPgQG4qqTkFtLxCxxC830dzkl2rYpQzFBGqRxRzavCSVfl9IB6bglsHaErmVhQcLruhgtCCAtDrdzKFEZhARRkOsF+AUCDqlA32BXsd3BXToqcXumV23sKXKPaC2ddWUWbudiCxztyuAwX727SrhhSBZ6zKDxUwyb7zfzpYJ0Z3CtAHrBInnSmi4lPAGm9Ih80utdhr/wG0KogfUo7wxH7hW8edh67j7qBMayxeuQM5WLdYlENGhBQZHCtO3NN5w+823shM9o7Tr2TsyFDa9X+HjSVakrdLdpcu5ARnmqaJeM5DXz0mQPK5dYygpGDPk2rbmCnb5xGwjkLNbZs1mQ74ynwyGav6uPnDUqGevKt4G/RhtkhFprAFDe4Z6f2pKXkqzVkXD/VS903fB2lDun0psibdkypGlekhfHCt908LWVtVduqIpRWMlxWfr+xBxPAWenjDDOcdHl88RuXXkCY2oi8GQJVuY4R3xqBMMcS93FuSouCk6aCXThWP7x/6F0rJYyDxtT+F41RCalXkqld5+zUYT3km3X1/1/fbAWlsHYfUaf9Vfnp92+I/hPXIVVBvzW21SnTdD3hY2+oSjToWj/DMaSFxVcZ7MoWl2on8Glu/p2kKJYlftXWuGuawwILY7/buvYVW9Xl6a7LQBmXHKD+BHnojbNvDSfT3RN6YprA7myUV+iA2T84/LcEOknL/Ke3/BZ8yHAr1UVwY5C3FCF2K0CQdPrkQSZXiQDjUzDqlm1PZ4UI3TFa+2v4vDv+9t5rWiqBSyta8PXxbDSj3OkueQ2RhdwQ2TLho20LhCyjkGUCJYkp0Z4DsXgrp3WRB5oGnXiTOucQJhCmtoRw2M1FfWhmQqS7+BEO3bNT2RbzqIZ5y40Y7TiO6IF60OkWkBf5i7sv/P/Gy6SQIniWHRgPYZpaokdOZa6UvkKtm2dthQJvsQeD4VBNUgJ+KDJ/r5lDUn0r5wsuggs6LlgpNN+Dlz8b1osqxifDq058LCwahwju+hUS6mrKG3NtmsfiKY3AVTQKVmFE+/Tcig0kdKrSFi3nZT6iOQ0mnEyT3PJR/Y04WOuYH0X/AeAxc/OW0Sfz8GZJIRa3c5NNeCLj9jkRELnY9/7muj2xttmjTDX86Df71nFmQRsg0GwBSibMESwcE6kq8HMADSVGR7NOcoFlX6zlOFsWuX3ZMAfIUyd0HEkIHqb5QT4sKtc7wcXhwRcrMk3eJ1lVOnUW0K8mduh/QovrNMdTzdh7VirH3Nt1wiXOQ7EWF4wPTtViGymqr/kuoSPOBDOy1bB+pdlLpLmPBf0qBWRMGhzILIcfITi7uAmlRYdYjLkP6oOKcbVYqkQXl1+aP05fWT7iELaCVzjsH8AcwkT2MH4LPS3CBz79JqMdC55t0In6fbbk2TA/IAIRWNt+AJOU/nKL7rUvhoGHp9s3XO2EgnBDPyhxXhNLeEql37Rx++TDiXtjEiL8wqKmCvobypmzA5gC+weMZF81VxJR74d2Ut2hutDeM+5EqpfC6bKmiLg4aS7K0jfRGjX5VuAHMOxapQ+C4IqmwG3a943Uq/lC+JtNRRi3KYOozOpjFaw07GH8r5vVtRHBhf8O9dzoRaO2AMoY7rdLNDSr4ui4QsjIQEuKeWWwM8+lWBpZwjCuR0B0hhVxj2rPG5AWOS4nrqdT6d/VX9kHJv6+A7naQX+/qgpmMwO2GkMsry0jWVnP7CJ/71kgB1PaDBiFpteKKL7bHBxyr9athXpZ+bPpYhCEIlxsX484dJPYUREHjo/3n0WPijZjlsjydMfa5/4L9UdDjgCYoIpAxYG+0J2yzb5LfbaSHQ+Z+vs6UMvsO/POw5Ccr79sJzieEDTWSw1Y+IuOQBvxS0omrtDTD2IsSEAl80qFMBOlgTvuaAxviIM/BqHvZEsHRLkE2NlgHeWRaaFbpIPnKNLMKyyvLSNZWc/sIn/vWSAHU9uaPOXhEk7tGTiEIkVTfYOZrZfX712qZJ08IvowXB68arnlAcyo10sGTJaaVWaruc5MOuzdez5WjTgjRsc+UFtqMWZfgPJo7CSR44Q+q4cJqR0cpGXa7D8dqtjb7QseuL4owdgDTts3n4zObWjoET5y6W+THNr5Nbgxq3SHG1gOsJ9fUEcSHWvk8fpynw+BkYAYW7TAa/zXTwqWDSwrVMDLLK8tI1lZz+wif+9ZIAdT2MCbKltjjto5t1zp76RMnmYQNNZLDVj4i45AG/FLSiatpz60IR5i4kLAJ2+dDlInKbb1ZxVHjqb66ThawKML9fDhfzexWXE86iX7DbdheXvVuiNiWABMldK92aOK2kqyzaQEyF+FtdRcGPkygyL7ITWvfiEja0VsE1q2w0ZDI0dtdHsQKMrmvxZrPjuMCcg+q0w8QtTTCXJxRTjqaKFJhRROK5k2nAamegwkTJAYqcWy7fKTg6BvoQ0fvdzqyru+YmEA5KIunySQLshpCdlU53ZAyUa70iqRllEf/DJPMZmYbVDKv12Uf1GTVlTpkQOOQd7gGi6ynduRPkRJ4F9YI3icZJmf2g0VQ9BjGQWH/XOaVezWvoPiwkdiHr7vHeQ9C2U7ce4fB21AF7uj0TsC2P86UMvsO/POw5Ccr79sJzicTXMOk7/xE3x4NHu4mAtFGKBNXul0agOe2pIIScmsHKP84pBT8aoWBaS8XVaAMTQYAo0H6M9Drgyjj2MI+OCWTzMepVmli+fw9sgIJqbIeeGBPPRZF24aVkjzJ2yfTaoYMFmk3RwEFNVwtIb8GGPdqtzvuXstLQEgEZIewlCux/pPiORl71Rfv0LsihUdWGafLK8tI1lZz+wif+9ZIAdT2jAk/zGpKT0xd4s+0+lmsom2atj5d++vmLvSfB7tyCqHLK8tI1lZz+wif+9ZIAdT2snPja73djQkKloPGX+pCQAahwju+hUS6mrKG3NtmsfiCRzumzF5WV5BvBvzC5oNjxF6u9LasbgzHluLYvHNhaeB6MRNSvdqbuf7lrek12YDQTaMVS0N0OkUvLjP1UitjiHQRsEdSGsyNB4YMWORFBLJeo7V7bP+jUBJQ6HYvFhg8xk8Fzb4/R8fwyc7qKeU6Zi8cd27YQomnINqBu1P0eMsry0jWVnP7CJ/71kgB1PZsaxgN9f5XU2Z9mw0N9howqtQieY/tdhgqPhZ+jadK3BDMyUhulDto59bU8oXuvut0PydZjq6gn4hRPmkFDIJc8JZwXv5H3MB1VL8KoVrp4Xpe+322gply0b1iFAXNIBpVVsn2D4KMONW3WaK/6RnId0z+VGVF5F3bla9KwQ7u+CRdxbwySgv8TXsCSI7c3TRgoaGds5IlxiqxhY6kkqJUNHv2T+Q9Ze5SB63rUjVuguY5215O68Sd6BNICKtpiZFcPpy3PslANF1QtKt0PQqDgvGcWsRE4uze1himjiW5ldf/6G8w8oJMsNC+tdqw/5ewpYGJf7o+grlwVlJ4a6waml/v94cfnBK90n3TaDcqb8qeZ/3qNa/q1uoYm9B7Fkcbdr3jdSr+UL4m01FGLcpg6jM6mMVrDTsYfyvm9W1EcAPDsUrt2bxNGqwlqfX2RRXLK8tI1lZz+wif+9ZIAdT2X83LjoY110K+QyhZgJd8DeAH2Dzr77lzZFCh6b+eWamJJw63p2Vsxxue1N0CO71PyyvLSNZWc/sIn/vWSAHU9tOaCUPwD7exNmjZb9M81us6c21Idbfs2CS1LaBeBwlEoJyhrNvyDTRDmJBFmeV/oFE4X89v6zfpwFMq0dsGI6I8jOtMpWxKoCeiEkEQIEwG0Eu1LX7i9SYQGlXUQBgBussry0jWVnP7CJ/71kgB1Pbv/mb0D5ceB/TxBlRixhQfd4cNRZZ/bpNuKI+XHk3e3mbIxBt9/1fr/jx2crm5lOUUiE9XzGkrzZT6yh2DTCGUyyvLSNZWc/sIn/vWSAHU9l3bO5N+GPmSsOdilPRuPUxrZfX712qZJ08IvowXB68arnlAcyo10sGTJaaVWaruc5MOuzdez5WjTgjRsc+UFtqMWZfgPJo7CSR44Q+q4cJqR0cpGXa7D8dqtjb7QseuL8sry0jWVnP7CJ/71kgB1PawGpgr2IHEW3cawUwWlWJdnSe4nuCR+9rUEWai/Reba85QB3BRMu5ZnG9gukkeFN8873LlyBK4K9Q/z7oBZoTl5Roo7sNwWj9St76IaOwOYKjajxMBfjgQPWLjUfSJ8GXYGJUOL4xuwiM97+kkMrYiLw/t6KQFTuBBXz+DNbJclkNr/A29Ce2rFaOjXOHXrB2KMHYA07bN5+Mzm1o6BE+cuVOYk6gybXvWkIBVttWbaUhVSvOWux+sE7DTPvVXhaH2eYjl6w9/oxevs5IIkAhAyyvLSNZWc/sIn/vWSAHU9jGP651yNO3JQwkHhMQBU4Q1azwXj/I0UQ5wZcs6utT/Joh20JygEiCghavmPOnBvouHL/HI33wrFdm38XCUXyfLK8tI1lZz+wif+9ZIAdT2Zri/T7oxF2EoU3DYJVuiyIu5ypmMeBICs5XKW0Ybx1SBKmeN6bl/guu8aPfdkS+AzpQy+w7887DkJyvv2wnOJwahwju+hUS6mrKG3NtmsfgWt8E3DkhdELMQkvpUdgj9Vf7iJmRdN6l1qtpRXgVZPsAOgpT49RaTguf70glvUNVu9UDXrOMiUB+h2joqkfIDyyvLSNZWc/sIn/vWSAHU9gBQ/zRXt6IefUuwAb/kwZJYpKvsekjh/8ndqnugZCQoTpwQ5Z1fmKzq0lhktBGh+/4jjbbfunb3GwkTNSXhe+/LK8tI1lZz+wif+9ZIAdT22GAutdJwZxR5VCB0X2M+33zHYi3Uab7878GDKGf8uLPYyzag7BNJZQs2SjxmnSMLy0VSmWupxehNj/GhuS7Ny8sry0jWVnP7CJ/71kgB1PYg42RLeF2VyTMH4cfc/K+KyyvLSNZWc/sIn/vWSAHU9tOaCUPwD7exNmjZb9M81uvIxpN9/fHgUyxTzgUB9cvPfgNu5Pt7ERZ3kP31okl4F8sry0jWVnP7CJ/71kgB1PY/v7NRTVBbT/TK9Io4sP/CVK2dSebo+S/j3WLmh/jjLNPUcoNDQ0cXvq6rDM96oqiSkrC5hzUbHOFg1BoGbDibgkTkLee5hazo8jx+Paqfe6W2cEf2gedUlxCqW2fyHwMrHjtsjQvmc1QX1ygOmRa4bRo+adsnd1DjEsQQLYh3/rPKqCu1gd/GI7OqT6cZKs4O/4wdwysYaul8C4NnWlT79ih5L4/JbFr5zZxkLtJtPw==')\"}]","proxy":"","icon":"https://www.tv1920.com/upload/mxprocms/20220610-1/37cb7780207ce22a82fb099ee06625e0.png"},{"last_chapter_rule":"","title":"grab4k","author":"Joe","version":0,"type":"other","url":"https://grab4k.com/vod/show/id/20/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//https://netflix.mom\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img||.lazyloaded&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"","search_url":"https://mayi4k.com/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"道德经","author":"轻合集生成器","version":100,"type":"all","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\n// log('typeShow:'+typeShow);\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nvar mySub = (function (){\n    require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/subscribe.js'); // 引入道长订阅\n    return 道长主页(true)\n})();\nconst path = mySub.subPath;\n// const cfg = mySub.cfg;\n// const subs = mySub.subs;\nconst sub_count = mySub.sub_count;\n// const cms_config = mySub.cms_config;\nconst nowData = mySub.nowData;\nconst nowSub = mySub.nowSub;\nconst subBtns = mySub.el;\nlet iconApi = mySub.iconApi;\nif(typeof(iconApi)==='undefined'||!iconApi){\n    iconApi = false;\n}\nlet el = [], rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\neval(fetch(\"hiker://assets/home.js\"));\nvar _urgent=false;\nel=el.concat(HikerHome.load(\"main\",_urgent));\n\nlet tips='小程序:'+getRuleCount()+' 订阅:'+sub_count;\nel.push({\n    url: '\"hiker://search?s=\"+input',\n    desc: tips+' 搜你要...',\n    title: '搜索',\n    col_type: 'input',\n    extra: {\n        rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        }, QING_TITLE, typeShow,disTabModify),\n        defaultValue: getMyVar('searchKey', ''),\n        onChange: \"putMyVar('searchKey',input)\"\n    }\n});\nel = el.concat(subBtns); // 连接订阅设置和切换按钮\nel.push({\n    col_type:\"blank_block\",\n});\nlet appKey = getMyVar('appKey','');\nif(appKey){//有搜索关键字则筛选\n    rules = rules.filter(it=>it.title.includes(appKey)||it.url.includes(appKey));\n}\n\nfunction getCateUrl(show){ // 空白字符串,全部,英语，中文\n    return $('#noLoading#').lazyRule((show,typeShow,disTabModify)=>{\n        if(disTabModify){//禁用了自定义分类\n            if(!show){//全部\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }else{\n            if(!show||show==='全部'){\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }\n\n        if(((!typeShow&&show!=='全部')||(typeShow&&typeShow!==show))&&!(!typeShow&&!show)){\n            // log('typeShow:'+typeShow+'!=show:'+show);\n            refreshPage(false);\n        }\n        return 'hiker://empty'\n    },show,typeShow,disTabModify);\n}\n\nlet typeBtns = [];\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            typeBtns.push({\n                title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n                url:getCateUrl(k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    let typeNow = typeShow || '全部';\n    types.forEach((its)=>{\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length;\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url||it.sort_url==='其他').length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        typeBtns.push({\n            title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n            url: getCateUrl(its),\n            col_type: 'scroll_button'\n        })\n\n    });\n\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\nlet searchTitle = appKey?small(color(' :'+appKey.slice(0,5), '#12b668')):'';\ntypeBtns.splice(1,0,{\n    title:'🔍'+searchTitle,\n    col_type:'scroll_button',\n    url:$(appKey,'请输入小程序名称|链接').input(()=>{\n        putMyVar('appKey',input);\n        refreshPage(false);\n        return 'hiker://empty'\n    })\n});\nel = el.concat(typeBtns);\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || (iconApi?iconApi+v.title:'hiker://images/icon1'),\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true,\n                nowData: nowData\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'hiker://files/rules/dzHouse/ruleCache/cmsData.json');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\n    addListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n/*\\nel.push({\\n    title:'““””' + '🏅'.small() + '&nbsp 订阅管理 &nbsp'.bold().fontcolor('#757575'),\\n    url:$('hiker://empty').rule(()=>{\\n        setPageTitle('订阅管理');\\n        require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/subscribe.js');\\n        一级();\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n */\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode === '导入海阔') {\\n    el.push({\\n        title:'搜索',\\n        desc:'输入小程序标题|地址进行搜索...',\\n        url:$.toString(()=>{\\n            refreshPage(false);\\n        }),\\n        col_type:'input',\\n        extra: {\\n            onChange: \\\"putMyVar('importSearchKey',input)\\\",\\n            titleVisible: true,\\n            defaultValue:getMyVar('importSearchKey','')\\n        },\\n    });\\n    el.push({\\n        title: '全部导入(非搜索过滤后结果)',\\n        url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n        col_type: 'text_center_1',\\n        extra: {lineVisible: false}\\n    });\\n}\\nvar datas = (disableCustom ? data : JSON.parse(readFile('customData') || '[]'));\\nlet sk = getMyVar('importSearchKey','');\\nif(editMode === '导入海阔'&&sk) {\\n    datas = datas.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n    data = data.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n}\\ndatas.forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]));\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    {\\n        RULE,\\n        isIndex,\\n        pageTitle,\\n        nowData\\n    } = MY_PARAMS,\\n    thisRULE = {}\\nif (nowData) {\\n    //log(nowData);\\n    let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n    thisRULE = JSON.parse(fetch(pt)).find((v) => v.title == RULE.title)\\n} else {\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\n}\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title, nowData) => {\\n                    let rules = []\\n                    let r = {}\\n                    if (nowData) {\\n                        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n                        r = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n                    } else {\\n                        r = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == title)\\n                    }\\n                    rules = [r]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title, nowData),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule2 = RULE.preRule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(thisRULE.title + \\\"@pre\\\", \\\"no\\\")\\n    if (\\\"yes\\\" != loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(thisRULE.title + \\\"@pre\\\", \\\"yes\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, nowData) => {\\n    let RULE = {}\\n    if (nowData) {\\n        //log(nowData);\\n        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n        RULE = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n    } else {\\n        RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    }\\n    return {\\n        pages: RULE.pages,\\n        pageList: JSON.parse(RULE.pages || '[]')\\n    }\\n}, QING_TITLE, RULE.title, nowData)\\n\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) {\\n        return rule\\n    }\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), {\\n                params: v.extra || {}\\n            })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title,\\n                nowData: nowData\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), {\\n                        detail_find_rule: detailFindRule\\n                    }),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"主页元素\",\"path\":\"home_item\",\"rule\":\"const Gtimeout=500; //全局超时\\nconst avatarPic=\\\"http://q1.qlogo.cn/g?b=qq&nk=434857005&s=640\\\"; //头像链接\\n\\nvar range = function (min,max) {\\nreturn Math.floor(Math.random()*(max-min))+min;\\n};\\n\\nfunction getOne(items) {\\n    return items[Math.floor(Math.random() * items.length)]\\n}\\nfunction getSay() {//获取一言\\n   let sc='https://v2.jinrishici.com/one.json';\\n    var colors = ['grey', '#ff7512', '#cb54ff', '#ff5358', '#ff9044', '#7678ff', '#34b1ff'];\\n    let word = \\\"此情若是长久时,网络不好可不行\\\";\\n    let sjsc=\\\"\\\";\\ntry{\\nsjsc=JSON.parse(request(sc,{timeout:Gtimeout})).data.content;\\n}catch(e) {sjsc = word;}\\n      let say = '<small><font color=\\\"' + getOne(colors) + '\\\">' + sjsc + '</font></small>';\\n    return say\\n}\\n\\n$.exports.getSay=getSay;\\n$.exports.avatarPic=avatarPic;\\n$.exports.Gtimeout=Gtimeout;\\n$.exports.range=range;\\n$.exports.getOne=getOne;\"}]","proxy":"","icon":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/img/dao.png"},{"last_chapter_rule":"","title":"ABmovie","author":"套娃秋葵Q","version":0,"type":"video","url":"hiker://empty##https://www.abu22.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list:not(:matches(类型|语言))'\nconst 小类定位 = 'body--li&&li:has(a)'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\.html/, 'vodshow/'+ '$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+\\.html)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.stui-vodlist&&li')\n\nfor (var i in list) {\n    d.push({\n        title: pdfh(list[i], 'h4&&Text'),\n        desc: pdfh(list[i], '.pic-text&&Text'),\n        img: pd(list[i], 'a&&data-original')+'@Referer=',\n        url: pd(list[i], 'a&&href')+'#immersiveTheme#'\n    })\n}\nsetResult(d)","searchFind":".stui-vodlist&&li;h4&&Text;h4&&a&&href;.pic-text&&Text;*;a&&data-original","search_url":"https://www.abu22.com/vodsearch/**----------fypage---/","group":"1影搜","detail_col_type":"text_2","detail_find_rule":"js:\nvar lazy = $(\"\").lazyRule(() => {\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n    return x5rule(input, input);\n});\r\neval(JSON.parse(request('hiker://page/h3?rule=模板·Q')).rule)","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://www.abu22.com/template/stui_tpl/img/favicon.ico"},{"last_chapter_rule":"","title":"小苹果","author":"道长&壹","version":0,"type":"video","url":"hiker://empty##http://ht.grelighting.cn/api.php/v1.vod##fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar M = MY_URL.split(\"##\");\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nlet true_url = getMyVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE;\n//?page=1&type=1&area=&class=&lang=&version=&actor=&year=&sortby=hits\nlet rowParam = '?page=' + page + '&type=分类&class=类型&area=地区&year=年份&sortby=排序&limit=30';\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nlet rowUrl = M[1] + rowParam.replace('分类', getMyVar('channel', '1'))\n    .replace('类型', getMyVar('class', ''))\n    .replace('地区', getMyVar('area', ''))\n    .replace('年份', getMyVar('year', ''))\n    .replace('排序', getMyVar('order', 'hits'));\n\n//log(rowUrl)\nlet listdata = JSON.parse(fetch(rowUrl, {\n    headers: {\n        \"User-Agent\": \"Dalvik/2.1.0\"\n    },\n    method: \"get\"\n})).data.list;\n//log(listdata)\ntry {\n    listdata.forEach(it => {\n        if(it.vod_status == 1 && it.type_id_1 == 1){\n            var des = it.vod_remarks ? it.vod_remarks : it.vod_douban_score;\n        }else{\n            if(it.vod_serial == \"已完结\"){\n                var des1 = it.vod_serial\n            }else{\n                var des1 = \"更新至\" + it.vod_serial\n            }\n            var des = it.vod_remarks ? it.vod_remarks : des1;\n        }\n        \n        d.push({\n            title: it.vod_name,\n            img: it.vod_pic + '@Referer=',\n            desc: des,\n            url: 'hiker://empty##' + it.vod_id + \"#immersiveTheme#\"\n        })\n    });\n} catch (e) {\n    log(JSON.stringify(listdata))\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nMY_URL = MY_URL.split('##')[1];\nvar listdata = JSON.parse(request(MY_URL, {\n    headers: {\n        \"User-Agent\": \"okhttp/4.9.3\"\n    },\n    method: \"get\"\n})).data.list;\n//log(list)\nlistdata.forEach(it => {\n    if (it.vod_status == 1 && it.type_id_1 == 1) {\n        var des = it.vod_remarks ? it.vod_remarks : it.vod_douban_score;\n    } else {\n        if (it.vod_serial == \"已完结\") {\n            var des1 = it.vod_serial\n        } else {\n            var des1 = \"更新至\" + it.vod_serial\n        }\n        var des = it.vod_remarks ? it.vod_remarks : des1;\n    }\n\n    d.push({\n        title: it.vod_name,\n        img: it.vod_pic + '@Referer=',\n        desc: des,\n        content: it.vod_blurb ? it.vod_blurb : (\"主演:\" + it.vod_actor + \"\\n导演:\" + it.vod_director),\n        url: 'hiker://empty##' + it.vod_id + \"#immersiveTheme#\"\n    })\n});\n\nsetResult(d);","search_url":"hiker://empty##http://ht.grelighting.cn/api.php/v1.vod?wd=**&page=fypage&ac=videolist","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nlet vod_id = MY_URL.match(/(\\d+)/)[1];\nlet json = JSON.parse(fetch('http://ht.grelighting.cn/api.php/v1.vod?ac=detail&ids=' + vod_id, {\n    headers: {\n        \"User-Agent\": \"okhttp/4.9.3\"\n    },\n    method: \"get\"\n}));\n//log(json)\n\nlet list = json.data.list[0];\nd.push({\n    title: \"类型: \" + list.type_name + \"\\n时间: \" + list.vod_year + \"\\n区域: \" + list.vod_area,\n    url: list.vod_pic + '@Referer=',\n    col_type: \"movie_1_vertical_pic_blur\",\n    desc: \"导演: \" + list.vod_director + \"\\n主演: \" + list.vod_actor,\n    pic_url: list.vod_pic + '@Referer='\n});\n\nlet contents = list.vod_content;\nd.push({\n    title: '‘‘’’<font color=\"#098AC1\">剧情简介</font>',\n    desc: '‘‘’’<font color=\"\"> ' + contents.substr(0,60) + '</font>' + '<small><font color=\"red\">详情</font></small>',\n    col_type: 'text_1',\n    extra: {\n        //lineVisible: false\n    },\n    url: $().rule((text) => {\n        setResult([{\n            title: text,\n            col_type: 'long_text',\n        }])\n    }, contents)\n});\n\nlet plist = list.vod_play_url.split('$$$');\nlet playlists = [];\nfor (let it of plist) {\n    if (list.type_id_1 == \"1\") {\n        it = it.split('$');\n        playlists.push([{\n            title: it[0],\n            url: it[1]\n        }]);        \n    } else {\n        let playlist = [];\n        let item = it.split('#');\n        for (let it of item) {\n            it = it.split('$');\n            playlist.push({\n                title: it[0],\n                url: it[1]\n            });\n        }\n        playlists.push(playlist);\n    }\n}\n//log(playlists)\n//log(plist)\nvar tab = list.vod_play_from.split('$$$');\nvar tabs = [];\nfor (let it of tab) {\n    tabs.push(it);\n}\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n//图标来自顺佬小程序\nvar icon_s = 'http://82.156.222.77/weisyr/icon/';\nif (getMyVar('顺序', '正序') == '正序') {\n    var avatar = icon_s + '正序.svg';\n    var ordtext = \"★正序↓\";\n} else {\n    var avatar = icon_s + '反序.svg';\n    var ordtext = \"☆逆序↑\";\n}\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"#f13b66a\">' + title + '</front></strong>';\n}\n\n//默认数据列表\nfunction setLists(d, pdata, lazy) {\n    var len = pdata.length;\n    for (var i = 0; i < len; i++) {\n        d.push({\n            title: pdata[i].title,\n            url: \"hiker://empty##\" + pdata[i].url + lazy,\n            col_type: 'text_2',\n            extra: {\n                id: pdata[i].url,\n                cls: MY_RULE + \"itemid\"\n            }\n        });\n    }\n}\nvar setLists = setLists;\n//线路匹配，加载对应数据\ntabs.forEach((Tabname, i) => {\n    //log(Tabname)\n    d.push({\n        title: getMyVar('tabnum', '0') == i ? getHead(Tabname) : Tabname,\n        url: $(\"#noLoading#\").lazyRule((orderid, cls, setLists, getHead, tabs, Tabname, playlists, i, lazy) => {\n            deleteItemByCls(cls);\n            let d = [];\n            let list = playlists[i];\n            if (getMyVar('顺序', '') != '') {\n                if (getMyVar('顺序', '正序') == '逆序') {\n                    setLists(d, list, lazy)\n                } else {\n                    list = list.reverse();\n                    setLists(d, list, lazy)\n                }\n            } else {\n                setLists(d, list, lazy)\n            }\n\n            //在排序id后面添加列表\n            addItemAfter(orderid, d);\n            updateItem(\"tabid\" + getMyVar(\"tabnum\", \"0\"), {\n                title: tabs[parseInt(getMyVar(\"tabnum\", \"0\"))]\n            });\n            //log(Tabname)\n\n            updateItem(\"tabid\" + i, {\n                title: getHead(Tabname)\n            });\n            \n            putMyVar(\"tabnum\", i);\n            //return 'toast://切换成功!'\n            return \"hiker://empty\"\n        }, \"orderid\", MY_RULE + \"itemid\", setLists, getHead, tabs, Tabname, playlists, i, lazy),\n        col_type: \"text_5\",\n        extra: {\n            id: \"tabid\" + i\n        }\n    });\n})\n\n//排序设置\nd.push({\n    title: '‘‘’’<span style=\"color:#098AC1\"><small>播放列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>',\n    url: $('#noLoading#').lazyRule((orderid, cls, setLists, playlists, lazy) => {\n        deleteItemByCls(cls);\n        var d = [];\n        let list = playlists[parseInt(getMyVar(\"tabnum\", \"0\"))];\n        if (getMyVar('顺序', '') == '') {\n            putMyVar('顺序', '逆序');\n        }\n        if (getMyVar('顺序', '正序') == '正序') {\n            putMyVar('顺序', '逆序');\n            var ordtext = \"★正序↓\";\n            setLists(d, list, lazy)\n        } else {\n            putMyVar('顺序', '正序');\n            var ordtext = \"☆逆序↑\";\n            list = list.reverse();\n            setLists(d, list, lazy)\n        }\n\n        //log(d[0])\n        addItemAfter(orderid, d);\n        //refreshPage(true);\n        updateItem(orderid, {\n            title: '‘‘’’<span style=\"color:#098AC1\"><small>播放列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>'\n        });\n        return 'hiker://empty'\n    }, \"orderid\", MY_RULE + \"itemid\", setLists, playlists, lazy),\n    col_type: 'text_center_1',\n    extra: {\n        id: \"orderid\",\n    }\n})\n\nsetLists(d, playlists[0], lazy)\nlet newstip = list.vod_remarks;\nif (/集/.test(newstip)) {\n    setLastChapterRule('js:' + $.toString((newstip) => {\n        setResult('更新至:' + newstip);\n    }, newstip));\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    input = input.split('##')[1];\\n    return input.replace(\\\"app.\\\", \\\"ht.\\\") + \\\";{User-Agent@Lavf/58.12.100}\\\"\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\";\\nif (!fileExist('hiker://files/cache/xpg_Types.json')) {\\n    let TypeFile = JSON.parse(fetch(\\\"http://ht.grelighting.cn/api.php/v2.vod/androidtypes\\\", {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"okhttp/4.9.1\\\"\\n        },\\n        method: \\\"get\\\"\\n    })).data;\\n    //log(JSON.stringify(TypeFile))\\n    writeFile(\\\"hiker://files/cache/xpg_Types.json\\\", JSON.stringify(TypeFile));\\n}\\n\\nlet Types = JSON.parse(readFile(\\\"hiker://files/cache/xpg_Types.json\\\"));\\nlet channels = [];\\nfor (let it of Types) {\\n    channels.push({\\n        \\\"id\\\": it.type_id,\\n        \\\"name\\\": it.type_name\\n    })\\n}\\n//log(channels)\\nlet channel = {\\n    \\\"cName\\\": \\\"频道\\\",\\n    \\\"listItems\\\": [{\\n        \\\"eName\\\": \\\"channel\\\",\\n        \\\"items\\\": channels\\n    }]\\n}\\n\\nfunction getCates(id) {\\n    //log(id)\\n    if (id == \\\"1\\\") {\\n        var i = 0;\\n    } else if (id == \\\"2\\\") {\\n        var i = 1;\\n    } else if (id == \\\"3\\\") {\\n        var i = 2;\\n    } else {\\n        var i = 3;\\n    }\\n\\n    //log(Types[0])\\n    let it = Types[i];\\n    let tcates = {\\n        \\\"cName\\\": \\\"分类\\\",\\n        \\\"listItems\\\": [{\\n            \\\"eName\\\": \\\"class\\\",\\n            \\\"items\\\": [{\\n                \\\"id\\\": [\\\"\\\"].concat(it.classes),\\n                \\\"name\\\": [\\\"全部\\\"].concat(it.classes)\\n            }]\\n        }, {\\n            \\\"eName\\\": \\\"area\\\",\\n            \\\"items\\\": [{\\n                \\\"id\\\": [\\\"\\\"].concat(it.areas),\\n                \\\"name\\\": [\\\"全部\\\"].concat(it.areas)\\n            }]\\n        }, {\\n            \\\"eName\\\": \\\"year\\\",\\n            \\\"items\\\": [{\\n                \\\"id\\\": [\\\"\\\"].concat(it.years),\\n                \\\"name\\\": [\\\"全部\\\"].concat(it.years)\\n            }]\\n        }, {\\n            \\\"eName\\\": \\\"order\\\",\\n            \\\"items\\\": [{\\n                \\\"id\\\": [\\\"updatetime\\\", \\\"hits\\\", \\\"score\\\"],\\n                \\\"name\\\": [\\\"最新上线\\\", \\\"最近热播\\\", \\\"评分最高\\\"]\\n            }]\\n        }]\\n    }\\n    return tcates\\n}\\n\\n\\n//分类拼接\\nlet tcates = [];\\nif (getMyVar('channel', '1') == '1') {\\n    //电影\\n    let tcates = getCates(getMyVar('channel'));\\n    try {\\n        var categories = channel.listItems.concat(tcates.listItems)\\n    } catch (e) {\\n        var categories = channel.listItems;\\n    }\\n} else if (getMyVar('channel') == '2') {\\n    //电视剧\\n    let tcates = getCates(getMyVar('channel'));\\n    try {\\n        var categories = channel.listItems.concat(tcates.listItems)\\n    } catch (e) {\\n        var categories = channel.listItems;\\n    }\\n} else if (getMyVar('channel') == '3') {\\n    //综艺\\n    let tcates = getCates(getMyVar('channel'));\\n    try {\\n        var categories = channel.listItems.concat(tcates.listItems)\\n    } catch (e) {\\n        var categories = channel.listItems;\\n    }\\n} else {\\n    //动漫\\n    let tcates = getCates(getMyVar('channel'));\\n    try {\\n        var categories = channel.listItems.concat(tcates.listItems)\\n    } catch (e) {\\n        var categories = channel.listItems;\\n    }\\n}\\n\\n//log(categories)\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getMyVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    /*\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: $.toString(() => {\\n            putMyVar(\\\"Mykey\\\", input);\\n            refreshPage(true)\\n        }),\\n           desc: \\\"搜你想看的影视、剧集、动漫等...\\\",\\n           col_type: \\\"input\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"Mykey\\\")\\n        }\\n    });\\n    */\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    //log(categories.length)\\n    categories.forEach((category, index) => {\\n        //log(category)\\n        let class_key = category.eName;\\n        let sub_categories = category.items;\\n        //log(sub_categories)    \\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = item.name;\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(item.id + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putMyVar(params.class_key, input)\\n                        clearMyVar('class');\\n                        clearMyVar('area');                       \\n                        clearMyVar('year');\\n                        clearMyVar('order');\\n                        \\n                        //log(input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        class_key: class_key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories = category.items[0].name;\\n            let id = category.items[0].id;\\n            //log(sub_categories.length)\\n            try {\\n                sub_categories.forEach((item, key) => {\\n                    let title = item;\\n                    let uid = id[key];\\n                    //log(uid)\\n                    d.push({\\n                        title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                        url: $(uid + '#noLoading#').lazyRule((params) => {\\n                            params.cate_temp[params.index] = params.key.toString()\\n                            putMyVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                            //log(params.class_key)                                \\n                            putMyVar(params.class_key, input)\\n                            refreshPage(true)\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            cate_temp: cate_temp,\\n                            index: index,\\n                            key: key,\\n                            class_key: class_key,\\n                            page: page,\\n                        }),\\n                        col_type: 'scroll_button',\\n                    })\\n                })\\n            } catch (e) {\\n                log(sub_categories)\\n                log(e.toString())\\n            }\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        }\\n\\n    })\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"可乐影视.D🐺","author":"家娃","version":0,"type":"video","url":"hiker://empty##https://klyingshi.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note||.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-original||data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(主演：)&&Text'),\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(剧情：)&&Text'),\n       img: parseDom(list[j], '.lazyload&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'h3&&a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://klyingshi.com/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return playUrl;\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        //获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \"body&&.player-wrapper&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            var jxkJSPath = \"https://klyingshi.com/static/player/\" + fro + \".js\";\n            var jiekHtml = request(jxkJSPath, {});\n            jiek = jiekHtml.match(/src=\"(.*?)'/)[1];\n        }\n        if (jiek != '') {\n            if (jiek.substring(0, 4) == 'http') {\n                jiek = jiek;\n            } else if (jiek.substring(0, 2) == '\\/\\/') {\n                jiek = 'https:' + jiek;\n            } else {\n                jiek = \"https://klyingshi.com/\" + jiek\n            }\n        }\n        var jiexi = jiek + playUrl;\n        //log(\"jiexi-->\" + jiexi);\n\n        var playerHtml = request(jiexi, {\n            headers: {\n                \"User-Agent\": MOBILE_UA\n            }\n        });\n        eval(playerHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n        if (fro == 'Good') {\n            var jsonStr = request(jiexi.split('?')[0] + 'API.php', {\n                headers: {\n                    \"User-Agent\": MOBILE_UA\n                },\n                body: \"url=\" + config.url + \"&time=\" + config.time + \"&key=\" + config.key,\n                method: \"POST\"\n            });\n            if (jsonStr.indexOf('解析失败') > 0) {\n                return 'toast://解析失败，请重试或切换线路~'\n            }\n            var json = JSON.parse(jsonStr);\n            //log(\"json-->\" + json);\n            if (json.code == 200) {\n                playUrl = json.url;\n            } else {\n                return 'toast://解析失败。'\n            }\n        } else {\n            playUrl = config.url;\n        }\n\n       // log(playUrl);\n        return toUrl(playUrl);\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items:contains(导演：)&&Text');\n\n    var 主演 = parseDomForHtml(html, '.video-info-items:contains(主演：)&&Text');\n\n    var 更新 = parseDomForHtml(html, '.video-info-items:contains(上映：)&&Text');\n\n    var 状态 = parseDomForHtml(html, '.video-info-items:contains(备注：)&&Text');\n\n    var 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\n    var 简介 = parseDomForHtml(html, '.module-info-introduction-content||.video-info-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://klyingshi.com/template/mxone/mxstatic/image/ICON.jpg"},{"last_chapter_rule":"","title":"JustLive","author":"Joe&&随风&&发粪涂墙&&Rx&&Zruiry&&排名不分先后","version":6,"type":"video","url":"hiker://empty##fyclass##http://live.yj1211.work/api/live/getRecommend?&page=fypage&size=20##http://live.yj1211.work/api/live/getRecommendByPlatform?platform=fyclass&page=fypage&size=20","col_type":"movie_2","class_name":"全部&虎牙&斗鱼&哔哩&网易","class_url":"all&huya&douyu&bilibili&cc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar url = MY_URL.split(\"##\")[2]\nvar fyclass = MY_URL.split(\"##\")[1]\nputMyVar(\"fyclass\", fyclass)\nvar res = JSON.parse(request(url)).data\nif (MY_PAGE == 1) {\n    d.unshift({\n        title: \"昵称：\" + getItem(\"nickname\"),\n        url: \"hiker://page/history\",\n        col_type: \"text_1\"\n    })\n    d.push({\n        title: \"搜索\",\n        desc: \"搜索直播\",\n        url: '\"hiker://search?s=\"+input+\"&rule=\"+MY_RULE.title',\n        col_type: \"input\"\n    })\n    d.push({\n        title: \"分区\",\n        url: $().lazyRule(() => {\n            putMyVar(\"typeNameVar\", '全部');\n            return \"hiker://page/newClass\" + '#noHistory#'\n        }),\n        col_type: \"text_center_1\"\n    })\n}\nif (fyclass == \"all\") {\n    var res = JSON.parse(request(MY_URL.split(\"##\")[2])).data\n    log(res)\n    for (data of res) {\n        d.push({\n            title: data.roomName,\n            desc: data.platForm.replace('huya', '虎牙').replace('douyu', '斗鱼').replace('cc', '网易CC').replace(\"bilibili\", \"哔哩哔哩\") + '·' + data.categoryName + '·' + data.ownerName,\n            img: (data.roomPic.startsWith('/') ? 'https:' + data.roomPic : data.roomPic) + '@Referer=',\n            url: \"hiker://page/detail?#immersiveTheme#&roomid=\" + data.roomId + \"&platform=\" + data.platForm\n        })\n    }\n} else {\n    var res = JSON.parse(request(MY_URL.split(\"##\")[3])).data\n    for (data of res) {\n        d.push({\n            title: data.roomName,\n            desc: data.categoryName + \"·\" + data.ownerName,\n            img: (data.roomPic.startsWith('/') ? 'https:' + data.roomPic : data.roomPic) + '@Referer=',\n            url: \"hiker://page/detail?#immersiveTheme#&roomid=\" + data.roomId + \"&platform=\" + data.platForm\n        })\n    }\n}\nsetResult(d);","searchFind":"js:\nvar url = MY_URL.split(\"##\")[1] + getMyVar(\"fyclass\")\nvar json = JSON.parse(request(url)).data\nlog(json)\nd = json.map(data => ({\n    title: data.nickName,\n    desc: data.platform,\n    img: (data.headPic.startsWith('/') ? 'https:' + data.headPic : data.headPic) + '@Referer=',\n    content: data.isLive == '0' ? '未开播' : '直播中' + \"\\平台:\",\n    url: data.isLive == '1' ? \"hiker://page/detail?#immersiveTheme#&roomid=\" + data.roomId + \"&platform=\" + data.platform : \"toast://没开播，看什么\"\n}))\nsetResult(d)","search_url":"hiker://empty##http://live.yj1211.work/api/live/search?keyWords=**&platform=","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var account = getItem(\"account\")\nvar password = getItem(\"password\")\nif (getItem(\"uid\", \"\") == \"\") {\n    var cookies = JSON.parse(request('http://live.yj1211.work/api/login', {\n        headers: {\n            'User-Agent': PC_UA\n        },\n        body: \"username=\" + account + \"&password=\" + md5(password),\n        method: 'POST'\n    }))\n    if (cookies.code == 200) {\n        toast(\"登陆成功\")\n        setItem(\"uid\", cookies.data.uid)\n        setItem(\"nickname\", cookies.data.userName)\n    } else {\n        toast(\"登陆失败，可能是用户名或密码有误\")\n        setItem(\"nickname\", \"未登陆\")\n        setItem(\"uid\", \"\")\n    }\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\nvar res = JSON.parse(request(\\\"http://live.yj1211.work/api/live/getRoomInfo?uid=\\\" + getMyVar(\\\"uid\\\") + \\\"&platform=\\\" + getParam(\\\"platform\\\") + \\\"&roomId=\\\" + getParam(\\\"roomid\\\")))\\n//这两个链接不同\\nvar playurl = JSON.parse(request(\\\"http://live.yj1211.work/api/live/getRealUrl?platform=\\\" + getParam(\\\"platform\\\") + \\\"&roomId=\\\" + getParam(\\\"roomid\\\"))).data\\nd.push({\\n    title: res.data.roomName,\\n    img: res.data.roomPic + \\\"@Referer=\\\",\\n    desc: \\\"分区：\\\" + res.data.categoryName + (res.data.isLive == 1 ? \\\"\\\\n状态：正在直播\\\" : \\\"\\\\n状态：未开播\\\") + \\\"\\\\n点我复制房间号\\\",\\n    url: \\\"copy://\\\" + res.data.roomId,\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n})\\nvar uid = getMyVar(\\\"uid\\\")\\nvar follow = res.data.isFollowed\\nvar roomid = res.data.roomId\\nvar platform = getParam(\\\"platform\\\")\\nd.push({\\n    title: res.data.ownerName,\\n    img: res.data.ownerHeadPic + \\\"@Referer=\\\",\\n    col_type: \\\"icon_2_round\\\"\\n})\\nd.push({\\n    title: res.data.isFollowed == 1 ? \\\"已关注\\\" : \\\"未关注\\\",\\n    url: $().lazyRule((uid, roomid, platform, follow) => {\\n        log(follow)\\n        if (follow == 0) {\\n            var res = JSON.parse(request(\\\"http://124.222.5.131:8013/api/live/follow?platform=\\\" + platform + \\\"&roomId=\\\" + roomid + \\\"&uid=\\\" + uid))\\n            refreshPage()\\n            return \\\"toast://\\\" + res.data\\n        } else {\\n            var res = JSON.parse(request(\\\"http://124.222.5.131:8013/api/live/unFollow?platform=\\\" + platform + \\\"&roomId=\\\" + roomid + \\\"&uid=\\\" + uid))\\n            refreshPage()\\n            return \\\"toast://\\\" + res.data\\n        }\\n    }, uid, roomid, platform, follow),\\n    col_type: \\\"text_2\\\"\\n})\\nvar name = {\\n    \\\"OD\\\": \\\"原画\\\",\\n    \\\"FD\\\": \\\"流畅\\\",\\n    \\\"LD\\\": \\\"标清\\\",\\n    \\\"SD\\\": \\\"高清\\\",\\n    \\\"HD\\\": \\\"超清\\\",\\n    \\\"2K\\\": \\\"2K\\\",\\n    \\\"4K\\\": \\\"4K\\\",\\n    \\\"FHD\\\": \\\"全高清\\\",\\n    \\\"XLD\\\": \\\"极速\\\",\\n    \\\"SQ\\\": \\\"普通音质\\\",\\n    \\\"HQ\\\": \\\"高音质\\\"\\n}\\nvar urls = []\\nvar names = []\\nfor (var key in playurl) {\\n    if (!/ayyuid|to/.test(key)) {\\n        urls.push(playurl[key])\\n        names.push(name[key])\\n    }\\n}\\nd.push({\\n    col_type: \\\"line_blank\\\"\\n})\\nd.push({\\n    title: \\\"选择清晰度\\\",\\n    col_type: \\\"text_center_1\\\"\\n})\\nfor (var i in names) {\\n    d.push({\\n        title: names[i],\\n        url: urls[i],\\n        col_type: \\\"text_4\\\"\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"关注列表\",\"path\":\"history\",\"rule\":\"js:\\nvar d = [];\\nsetPageTitle(\\\"关注\\\")\\nd.push({\\n    title: \\\"昵称：\\\" + getItem(\\\"nickname\\\"),\\n    url: $().lazyRule(() => {\\n        setItem(\\\"uid\\\", \\\"\\\")\\n        setItem(\\\"nickname\\\", \\\"未登陆\\\")\\n        refreshPage()\\n        return \\\"toast://注销成功\\\"\\n    }),\\n    col_type: \\\"text_1\\\"\\n})\\nif (getItem(\\\"uid\\\", \\\"\\\") == \\\"\\\") {\\n    d.push({\\n        desc: \\\"账号\\\",\\n        extra: {\\n            onChange: \\\"setItem('account',input)\\\",\\n            titleVisible: false\\n        },\\n        col_type: \\\"input\\\"\\n    })\\n    d.push({\\n        desc: \\\"密码\\\",\\n        extra: {\\n            onChange: \\\"setItem('password',input)\\\",\\n            titleVisible: false\\n        },\\n        col_type: \\\"input\\\"\\n    })\\n    d.push({\\n        title: \\\"确定\\\",\\n        url: $().lazyRule(() => {\\n            back()\\n            return \\\"toast://返回自动登陆\\\"\\n        }),\\n        col_type: \\\"text_center_1\\\"\\n    })\\n}\\nvar res = JSON.parse(request(\\\"http://124.222.5.131:8013/api/live/getRoomsOn?uid=\\\" + getItem(\\\"uid\\\")))\\nvar res = res.data\\nvar sType = getMyVar(\\\"sType\\\", \\\"living\\\")\\nd.push({\\n    title: getMyVar(\\\"sType\\\") == \\\"living\\\" ? '‘‘’’<strong><font color=\\\"#FA7298\\\">正在直播</front></strong>' : \\\"正在直播\\\",\\n    url: $().lazyRule((sType) => {\\n        putMyVar(\\\"sType\\\", sType == 'living' ? 'outline' : 'living');\\n        refreshPage();\\n        return \\\"hiker://empty\\\"\\n    }, sType),\\n    col_type: \\\"text_2\\\"\\n})\\nd.push({\\n    title: getMyVar(\\\"sType\\\") == \\\"outline\\\" ? '‘‘’’<strong><font color=\\\"#FA7298\\\">未直播</front></strong>' : \\\"未直播\\\",\\n    url: $().lazyRule((sType) => {\\n        putMyVar(\\\"sType\\\", sType == 'outline' ? 'living' : 'outline');\\n        refreshPage();\\n        return \\\"hiker://empty\\\"\\n    }, sType),\\n    col_type: \\\"text_2\\\"\\n})\\nif (getMyVar(\\\"sType\\\") == \\\"living\\\") {\\n    for (var i in res) {\\n        var temp = res[i]\\n        if (temp.isLive == 1) {\\n            d.push({\\n                title: temp.roomName,\\n                img: temp.roomPic + \\\"@Referer=\\\",\\n                url: \\\"hiker://page/detail?#immersiveTheme#&roomid=\\\" + temp.roomId + \\\"&platform=\\\" + temp.platForm\\n            })\\n        }\\n    }\\n} else {\\n    for (var i in res) {\\n        var temp = res[i]\\n        if (temp.isLive == 0) {\\n            d.push({\\n                title: temp.ownerName,\\n                img: temp.ownerHeadPic + \\\"@Referer=\\\",\\n                url: \\\"hiker://page/detail?#immersiveTheme#&roomid=\\\" + temp.roomId + \\\"&platform=\\\" + temp.platForm\\n            })\\n        }\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"text_3\",\"name\":\"分区\",\"path\":\"newClass\",\"rule\":\"js:\\nvar d = [];\\nvar url = 'http://live.yj1211.work/api/live/getAllAreas';\\nvar res = JSON.parse(request(url)).data;\\n\\nvar typeNames = [];\\nvar bigList = [];\\nvar smallList = [];\\nputMyVar(\\\"typeNameVar\\\", !getMyVar('typeNameVar') ? '全部' : getMyVar('typeNameVar'));\\n\\nfor (let r of res) {\\n    for (let x of r) {\\n        if (!typeNames.includes(x.typeName)) {\\n            typeNames.push(x.typeName);\\n            bigList.push({\\n                title: getMyVar(\\\"typeNameVar\\\") == x.typeName ? '‘‘’’<strong><font color=\\\"#FA7298\\\">' + x.typeName + '</front></strong>' : x.typeName,\\n                url: $().lazyRule((typeNameVar) => {\\n                    putMyVar(\\\"typeNameVar\\\", typeNameVar);\\n                    refreshPage();\\n                    return \\\"hiker://empty\\\"\\n                }, x.typeName),\\n                col_type: \\\"flex_button\\\"\\n            })\\n        }\\n        smallList.push({\\n            title: x.areaName,\\n            url: 'hiker://page/newClassList?typeName=' + x.typeName + '&areaName=' + x.areaName + \\\"&page=fypage\\\",\\n            img: x.areaPic,\\n            col_type: \\\"icon_round_4\\\",\\n            typeName: x.typeName\\n        })\\n    }\\n}\\n\\nbigList.unshift({\\n    title: getMyVar(\\\"typeNameVar\\\") == '全部' ? '‘‘’’<strong><font color=\\\"#FA7298\\\">全部</front></strong>' : '全部',\\n    url: $().lazyRule((typeNameVar) => {\\n        putMyVar(\\\"typeNameVar\\\", typeNameVar);\\n        refreshPage();\\n        return \\\"hiker://empty\\\"\\n    }, '全部'),\\n    col_type: \\\"flex_button\\\"\\n})\\nd = d.concat(bigList);\\n\\nd.push({\\n    col_type: 'blank_block'\\n})\\nlog(getMyVar('typeNameVar'))\\nif (getMyVar('typeNameVar') == '全部') {\\n    d = d.concat(smallList);\\n} else {\\n    d = d.concat(smallList.filter(s => s.typeName == getMyVar('typeNameVar')));\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_2\",\"name\":\"分区列表\",\"path\":\"newClassList\",\"rule\":\"js:\\nvar d = [];\\nvar url = 'http://live.yj1211.work/api/live/getRecommendByAreaAll?areaType=' + getParam(\\\"typeName\\\") + '&area=' + getParam(\\\"areaName\\\") + '&page=' + getParam(\\\"page\\\");\\nvar res = JSON.parse(request(url)).data;\\n\\nfor (data of res) {\\n    d.push({\\n        title: data.roomName,\\n        desc: data.categoryName + \\\"·\\\" + data.ownerName,\\n        img: (data.roomPic.startsWith('/') ? 'https:' + data.roomPic : data.roomPic) + '@Referer=',\\n        url: \\\"hiker://page/detail?#immersiveTheme#&roomid=\\\" + data.roomId + \\\"&platform=\\\" + data.platForm\\n    })\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://avatars.githubusercontent.com/u/23636549?s=48&v=4"},{"firstHeader":"class","last_chapter_rule":"","title":"5imv.dr","author":"道长&ssl","version":1,"type":"video","url":"http://5imv.net/vodshow/movie/page/fypage/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首|表|更|榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\//, 'vodshow/$1/page/'+page+'/').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##http://5imv.net/vodsearch/page/fypage/wd/**/","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://5imv.net/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"影猫","author":"小棉袄🌞","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet url = \"https://www.mvcat.com/\"\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.mvcat.com/img/logo_appicon.png"},{"last_chapter_rule":"","title":"多多影视","author":"道长&祥子","version":1,"type":"video","url":"hiker://empty##https://www.ddzyz1.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"1影搜","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=多多影视"},{"firstHeader":"class","last_chapter_rule":"","title":"玄天影视.dr","author":"道长&ssl","version":1,"type":"video","url":"hiker://empty##http://m.sltsccj.com/vodshow/2--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首|表|更|榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype(\\/\\d+).*/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = []\nfor (var j of JSON.parse(getResCode()).list) {\n    d.push({\n        title: j.name,\n        img: j.pic + \"@Referer=\",\n        url: MY_HOME + '/xuantian/' + j.id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://m.sltsccj.com/upload/mxprocms/20220726-1/162c48b6aaf1987ea97a5960429feb5a.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = pdfa(html, 'body&&#hl-plays-list')[0];\n//选集列表的定位\nvar list = pdfa(conts, 'body&&li');\nvar title = pdfh(list[list.length-1],'a&&Text');\nsetResult(\"更新至：\"+title);","title":"七猫影视.dr","author":"道长&ssl","version":11,"type":"video","url":"hiker://empty##https://www.qimaotv.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影Dr二","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([\n{一级分类:'body&&.hl-nav',\n子分类:'body&&li:has(a[href]):matches(电影|电视剧|综艺|动漫)',\n       分类链接:{\n        二次处理(u){\n        return u.replace('type', 'show')}\n    }},\n{  一级分类:'body&&.hl-filter-list,1:',\n   子分类:'body&&a',\n    },\n{一级分类:'body&&.hl-rb-title',\n 子分类:'body&&a',\n }]);\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n混合(ui,\"voddetail\",\"gbook\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.qimaotv.com/index.php/vod/search/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h2&&Text;.hl-col-xs-12,4&&Text;.hl-col-xs-12,3&&Text',\n    img: '.hl-lazy&&data-original',\n    url: '.hl-lazy&&data-original',\n    desc: '.hl-col-xs-12,11&&Text;.hl-col-xs-12,5&&Text',\n    content: '.hl-col-xs-12,12&&Text',\n    tabs: 'body&&.hl-tabs-btn',\n    lists: '.hl-plays-list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.qimaotv.com/upload/site/20220818-1/7c4b4cfc46390bb331a51170c66c60b6.png"},{"firstHeader":"class","last_chapter_rule":"","title":"vof.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.voflix.com/show/1-----------.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.voflix.com/search/-------------.html?wd=**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=vof"},{"firstHeader":"class","last_chapter_rule":"","title":"NIKE影视.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.ajeee.com/show/Movie/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n //page = MY_PAGE;\n //true_url = getMyVar('header.url', MY_URL);\n true_url = 获取正确链接();\n //log(true_url);\nlet cates=打造动态分类([{\n  一级分类: '.navbar-items',\n        子分类: 'ul&&li:has(a[href]):matches(电影|电视剧|综艺|动漫)',\n     分类链接:{\n         二次处理(u){\n             return u.replace(/vodtype/, 'show')\n            }\n        }\n},{\n        一级分类: 'body&&.module-class-items',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n自动一级(null,cates,html);}\n混合(ui,\"/vod/\",\"gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.ajeee.com/search/page/fypage/wd/**","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=NIKE影视"},{"last_chapter_rule":"","title":"贝乐虎·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://vd.ubestkid.com/api/v1/feature/egtab_fyclass.json?JsonBody={\"age\":1,\"appver\":\"6.1.9\",\"egvip_status\":0,\"svip_status\":0,\"vps\":40};POST","col_type":"card_pic_3","class_name":"儿歌&益智","class_url":"eg&yz","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar json = JSON.parse(getResCode()).result\nvar rule = $('').rule(() => {\nvar d = [];\nvar json = JSON.parse(getResCode()).result\njson.items.forEach(a => {\n    d.push({\n        title: a.title,\n        img: a.image,\n        url: a.url\n    })\n})\nsetResult(d);\n})\njson.icon_items.forEach(a => {\n\n    d.push({\n        title: a.title,\n        img: a.data.bannercover,\n        url: 'https://vd.ubestkid.com/api/v1/bv/video?JsonBody={\"age\":1,\"appver\":\"6.1.9\",\"egvip_status\":0,\"svip_status\":0,\"vps\":60,\"subcateId\":' + a.contentId + ',\"p\":fypage};POST'+rule,\n        col_type: 'scroll_button'\n    })\n\n})\n\njson.more_items.forEach(a => {\n\n    d.push({\n        title: a.title+'\\t\\t\\t\\t\\t\\t\\t\\t\\t更多',\n        img: a.data.bannercover,\n        url: 'https://vd.ubestkid.com/api/v1/bv/video?JsonBody={\"age\":1,\"appver\":\"6.1.9\",\"egvip_status\":0,\"svip_status\":0,\"vps\":60,\"subcateId\":' + a.contentId + ',\"p\":fypage};POST'+rule,\n        col_type: 'avatar'\n    })\n    a.data.items.forEach(list => {\n        d.push({\n            title: list.title,\n            img: list.image,\n            url: list.url,\n            desc: '0'\n        })\n    })\n})\n\nsetResult(d);","searchFind":"","search_url":"","titleColor":"","group":"1影搜","detail_col_type":"movie_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"极品影视.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.jpys.me/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('voddetail','gbook');\n//一级书签('voddetail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('%E6%96%97%E7%BD%97');","search_url":"hiker://empty##https://www.jpys.me/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=极品影视.DR"},{"last_chapter_rule":"","title":"鑫享","author":"道长","version":1,"type":"video","url":"hiker://empty##http://iosa.xn--654a.cc/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"1影搜","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=鑫享"},{"firstHeader":"class","last_chapter_rule":"","title":"360书签","author":"道长&壹","version":2,"type":"video","url":"hiker://empty##http://h5.mse.360.cn/h5-films.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/sq')).rule);\n一级书签('/s?q=', 'true');","searchFind":"js:\neval(JSON.parse(request('hiker://page/search')).rule);","search_url":"hiker://empty##https://api.so.360kan.com/index?force_v=1&kw=**&from=&pageno=fypage&v_ap=1&tab=all","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\ntry {\n    var d = [];\n    if (/s\\?q=/.test(MY_URL)) {\n        //let kw = MY_URL.split(\"s?q=\")[1].split(\"&\")[0];\n        //log(decodeURI(MY_URL))\n        var kw = decodeURI(MY_URL.split(\"s?q=\")[1].split(\"&\")[0])\n            .replace(/韩剧|美剧|日剧|高清中字|高清|电视剧|完整版|电影版|电影|动漫版|动画片|动画版|动漫|动画|综艺|免费|樱花|视频|在线|观看|播放|免费|普通话|全集|《|》|“|”/g, \"\");\n        log(decodeURI(MY_URL.split(\"s?q=\")[1].split(\"&\")[0]))\n        let seaUrl = \"https://api.so.360kan.com/index?force_v=1&kw=\" + kw + \"&from=&pageno=1&v_ap=1&tab=all\";\n        let shtml = fetch(seaUrl, {\n            headers: {\n                \"User-Agent\": PC_UA\n            },\n            method: \"get\"\n        })\n        //log(shtml)\n        let sdata = JSON.parse(shtml).data.longData.rows;\n        //log(sdata.length)        \n        if (sdata.length == 1) {            \n            let cat_id = sdata[0].cat_id;\n            let en_id = sdata[0].en_id;\n            var ejUrl = \"https://api.web.360kan.com/v1/detail?cat=\" + cat_id + '&id=' + en_id;\n        } else {            \n            setPageTitle(\"搜索\")\n            eval(JSON.parse(request('hiker://page/ssjy')).rule);\n            sousuo(d, \"海报开\", kw);\n            /*\n            setResult([{\n                title: \"点击继续执行\" + \"‘‘\" + kw + \"’’\" + \"搜索\",\n                url: \"hiker://search?rule=\" + MY_RULE.title + \"&s=\" + kw,\n                col_type: \"text_center_1\"\n            }]);\n            */\n            //eval(JSON.parse(request('hiker://page/search')).rule);\n        }\n    } else {\n        var ejUrl = MY_URL.split(\"##\")[1];\n    }\n    log(ejUrl)\n    if (ejUrl) {\n        let cat = ejUrl.match(/cat=(\\d+)/)[1];     \n        var html = JSON.parse(fetch(ejUrl)).data;\n        //log(html)\n        addListener(\"onClose\", $.toString(() => {\n            clearMyVar(\"顺序\");\n            clearMyVar(\"tabnum\");\n            clearMyVar(\"year\");\n            clearMyVar(\"yearnum\");\n        }));\n        try {\n            var upinfo = html.upinfo;\n        } catch (e) {\n            var upinfo = \"\";\n        }\n        d.push({\n            title: \"地区：\" + html.area.join(' ') + \"\\n类型：\" + html.moviecategory.join(' ') + '\\n出版时间：' + html.pubdate,\n            desc: \"演员：\" + html.actor.join(' ') + \"\\n更新至：\" + upinfo,\n            img: html.cdncover,\n            url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory##noRecordHistory#\",\n            col_type: 'movie_1_vertical_pic'\n        });\n\n        let contents = html.description;\n        d.push({\n            title: '‘‘’’<font color=\"#098AC1\">剧情简介</font>',\n            desc: '‘‘’’<font color=\"\"> ' + contents.substr(0, 70) + '</font>' + '<small><font color=\"red\">详情</font></small>',\n            col_type: 'text_1',\n            extra: {\n                //lineVisible: false\n            },\n            url: $().rule((text) => {\n                setResult([{\n                    title: text,\n                    col_type: 'long_text',\n                }])\n            }, contents)\n        });\n        //log(html)\n        var lazy = $('').lazyRule(() => {\n            eval(\"var config =\" + fetch(\"hiker://files/rules/DuanNian/MyParse.json\"));\n            eval(request(config.settings.cj));\n            return aytmParse(input);\n            /*\n            require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js')\n            return aytmParse(input)\n            */\n        });\n\n        /*\n        let years = [];\n        let tags = html.tag;\n        for (let it in tags) {\n            years.push(it);\n        }*/\n        //log(years)\n        let years = [];\n        let tabs = html.playlink_sites;\n        if (cat == \"1\") {\n            var playlists = html.playlinksdetail;\n        } else if (cat == \"3\") {\n            var playlists = [];\n            for (var i in tabs) {\n                if (upinfo && upinfo > 20) {\n                    var playlinks = 'https://api.so.360kan.com/episodeszongyi?site=' + tabs[i] + '&y=年份&entid=' + html.id + '&offset=&count=20';\n                    var links = [playlinks]\n\n                    //log(links)\n                } else {\n                    var links = 'https://api.so.360kan.com/episodeszongyi?site=' + tabs[i] + '&y=年份&entid=' + html.id + '&offset=&count=20';\n                }\n                playlists.push(links);\n                let yearlink = ejUrl + \"&site=\" + tabs[i];\n                let tags = JSON.parse(request(yearlink)).data.tag;\n                let tyear = [];\n                for (let it in tags) {\n                    tyear.push(it);\n                }\n                years.push(tyear);\n            }\n        } else {\n            var playlists = [];\n            for (var i in tabs) {\n                if (upinfo) {\n                    if (upinfo > 200) {\n                        let num = Math.ceil(parseInt(upinfo) / 200);\n                        var links = [];\n                        //log(\"num: \" + num)\n                        for (var j = 1; j <= num; j++) {\n                            if (j == num) {\n                                var playlinks = ejUrl + '&start=' + ((j - 1) * 200 + 1) + '&end=' + upinfo + '&site=' + tabs[i];\n                            } else {\n                                var playlinks = ejUrl + '&start=' + ((j - 1) * 200 + 1) + '&end=' + j * 200 + '&site=' + tabs[i];\n\n                            }\n                            links.push(playlinks)\n                        }\n                        //log(links)\n                    } else {\n                        var links = ejUrl + '&start=1&end=' + upinfo + '&site=' + tabs[i];\n                    }\n                } else {\n                    var links = ejUrl + '&site=' + tabs[i];\n                }\n\n                playlists.push(links)\n            }\n        }\n        //log(tabs)\n        //log(playlists)\n        //log(years)\n        var icon_s = 'http://82.156.222.77/weisyr/icon/';\n        if (getMyVar('顺序', '正序') == '正序') {\n            var avatar = icon_s + '正序.svg';\n            var ordtext = \"★正序↓\";\n        } else {\n            var avatar = icon_s + '反序.svg';\n            var ordtext = \"☆逆序↑\";\n        }\n\n        var getHead = function(title) {\n            return '‘‘’’<strong><font color=\"#f13b66a\">' + title + '</front></strong>';\n        }\n\n        //默认数据列表\n        var setLists = function(d, pdata, lazy, cat, years, getHead) {\n            function formatDate(date) {\n                var date = new Date(date);\n                var YY = date.getFullYear() + '-';\n                var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\n                var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());\n                return YY + MM + DD;\n            }\n            if (cat == \"1\") {\n                d.push({\n                    title: formatDate(parseInt(pdata.createline * 1000)) || (pdata.temp_vip == \"1\" ? \"VIP\" : \"\"),\n                    img: (pdata.cdn_h_cover || pdata.h_cover) + \"@Referer=\",\n                    desc: pdata.quality || \"\",\n                    url: pdata.default_url + lazy,\n                    col_type: 'movie_2',\n                    extra: {\n                        id: pdata.default_url,\n                        cls: MY_RULE + \"itemid\"\n                    }\n                });\n            } else if (cat == \"3\") {\n                var zyLists = function(d, pdata, lazy, year) {\n                    var len = pdata.length;\n                    //log(\"len: \" + len)\n                    if (typeof(pdata) == \"object\") {\n                        pdata = pdata[0].replace(\"年份\", year);\n                        //log(pdata)\n                        let fData = JSON.parse(request(pdata)).data;\n                        let fLists = fData.list;\n                        if (fData.total > 20) {\n                            let num = Math.ceil(parseInt(fData.total) / 20);\n                            //let ys = parseInt(fData.total) % 20;\n                            let urls = [];\n                            //log(parseInt(fData.total) - ys)\n\n\n                            for (var j = 1; j < num; j++) {\n                                var playlinks = pdata.replace(/offset=/, \"offset=\" + (j * 20));\n                                urls.push({\n                                    url: playlinks,\n                                    options: {\n                                        headers: {\n                                            'User-Agent': PC_UA\n                                        }\n                                    }\n                                });\n                            }\n                            //log(urls)\n\n                            var jdata = batchFetch(urls);\n                            var newDatas = [];\n                            jdata.forEach((it) => {\n                                newDatas = newDatas.concat(JSON.parse(it).data.list);\n                            });\n                        } else {\n                            var newDatas = [];\n                        }\n                        newDatas = fLists.concat(newDatas);\n                    } else {\n                        pdata = pdata.replace(\"年份\", year);\n                        var newDatas = JSON.parse(request(pdata)).data.list;\n                    }\n                    if (getMyVar('顺序', '正序') == '逆序') {\n                        newDatas = newDatas.reverse()\n                    }\n\n                    for (var i = 0; i < newDatas.length; i++) {\n                        d.push({\n                            title: newDatas[i].name,\n                            img: (newDatas[i].cdn_v_cover || newDatas[i].v_cover) + \"@Referer=\",\n                            desc: newDatas[i].period,\n                            url: newDatas[i].url + lazy,\n                            col_type: 'movie_2',\n                            extra: {\n                                id: newDatas[i].url,\n                                cls: MY_RULE + \"itemid\"\n                            }\n                        });\n                    }\n                }\n                var getHead = function(title) {\n                    return '‘‘’’<strong><font color=\"#f13b66a\">' + title + '</front></strong>';\n                }\n                let fyears = years[parseInt(getMyVar(\"tabnum\", \"0\"))];\n                fyears.forEach((item, i) => {\n                    d.push({\n                        title: getMyVar('yearnum', (fyears.length - 1).toString()) == i ? getHead(item) : item,\n                        url: $(\"#noLoading#\").lazyRule((cls, fyears, getHead, item, i, zyLists, pdata, lazy) => {\n                            deleteItemByCls(cls);\n                            let d = [];\n                            log(fyears[i])\n                            zyLists(d, pdata, lazy, fyears[i])\n\n                            //在年份id后面添加列表\n                            addItemAfter(\"years_id_\" + (fyears.length - 1), d);\n\n                            updateItem(\"years_id_\" + getMyVar('yearnum', (fyears.length - 1).toString()), {\n                                title: fyears[parseInt(getMyVar('yearnum', (fyears.length - 1).toString()))]\n                            });\n\n                            updateItem(\"years_id_\" + i, {\n                                title: getHead(item)\n                            });\n                            putMyVar(\"yearnum\", i)\n                            return \"hiker://empty\"\n                        }, MY_RULE + \"itemid\", fyears, getHead, item, i, zyLists, pdata, lazy),\n                        col_type: \"scroll_button\",\n                        extra: {\n                            id: \"years_id_\" + i\n                        }\n                    });\n                })\n\n                //log(fyears[parseInt(getMyVar('yearnum', (fyears.length - 1).toString()))])\n                zyLists(d, pdata, lazy, fyears[parseInt(getMyVar('yearnum', (fyears.length - 1).toString()))])\n            } else {\n                //log(typeof pdata)\n                var len = pdata.length;\n                //log(\"len: \" + len)\n                if (typeof(pdata) == \"object\") {\n                    let urls = [];\n                    var site = \"\";\n                    for (var j = 0; j < len; j++) {\n                        site = pdata[j].match(/site=(.*)/)[1];\n                        urls.push({\n                            url: pdata[j],\n                            options: {\n                                headers: {\n                                    'User-Agent': PC_UA\n\n                                }\n                            }\n                        });\n                    }\n                    var jdata = batchFetch(urls);\n                    //log(jdata)\n                    var newDatas = [];\n                    jdata.forEach((it) => {\n                        newDatas = newDatas.concat(JSON.parse(it).data.allepidetail[site]);\n                    });\n                } else {\n                    var site = pdata.match(/site=(.*)/)[1];\n                    var newDatas = JSON.parse(request(pdata)).data.allepidetail[site];\n                }\n                if (getMyVar('顺序', '正序') == '逆序') {\n                    newDatas = newDatas.reverse()\n                }\n                for (var i = 0; i < newDatas.length; i++) {\n                    d.push({\n                        title: \"第\" + newDatas[i].playlink_num + \"集\",\n                        img: (newDatas[i].cdn_v_cover || newDatas[i].v_cover) + \"@Referer=\",\n                        desc: newDatas[i].is_vip == \"0\" ? \" \" : \"VIP\",\n                        url: newDatas[i].url + lazy,\n                        col_type: 'movie_2',\n                        extra: {\n                            id: newDatas[i].url,\n                            cls: MY_RULE + \"itemid\"\n                        }\n                    });\n                }\n            }\n        }\n\n        //线路匹配，加载对应数据\n        tabs.forEach((Tabname, i) => {\n            //log(Tabname)\n            d.push({\n                title: getMyVar('tabnum', '0') == i ? getHead(Tabname) : Tabname,\n                url: $(\"#noLoading#\").lazyRule((orderid, cls, setLists, getHead, tabs, Tabname, playlists, i, lazy, cat, years) => {\n                    deleteItemByCls(cls);\n                    clearMyVar(\"year\");\n                    updateItem(\"tabid\" + getMyVar(\"tabnum\", \"0\"), {\n                        title: tabs[parseInt(getMyVar(\"tabnum\", \"0\"))]\n                    });\n                    putMyVar(\"tabnum\", i);\n                    let d = [];\n                    //log(tabs[i])\n                    if (cat == \"1\") {\n                        var list = playlists[tabs[i]];\n                    } else {\n                        var list = playlists[i];\n                    }\n                    //log(list)\n                    setLists(d, list, lazy, cat, years)\n\n                    //在排序id后面添加列表\n                    addItemAfter(orderid, d);\n\n                    //log(Tabname)\n\n                    updateItem(\"tabid\" + i, {\n                        title: getHead(Tabname)\n                    });\n\n                    //return 'toast://切换成功!'\n                    return \"hiker://empty\"\n                }, \"orderid\", MY_RULE + \"itemid\", setLists, getHead, tabs, Tabname, playlists, i, lazy, cat, years),\n                col_type: \"text_4\",\n                extra: {\n                    id: \"tabid\" + i\n                }\n            });\n        })\n\n        //排序设置\n        d.push({\n            title: '‘‘’’<span style=\"color:#098AC1\"><small>播放列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>',\n            url: $('#noLoading#').lazyRule((orderid, cls, setLists, playlists, lazy, cat, tabs, years) => {\n                deleteItemByCls(cls);\n                var d = [];\n                if (cat == \"1\") {\n                    var list = playlists[tabs[parseInt(getMyVar(\"tabnum\", \"0\"))]];\n                } else {\n                    var list = playlists[parseInt(getMyVar(\"tabnum\", \"0\"))];\n                }\n\n                if (getMyVar('顺序', '正序') == '正序') {\n                    putMyVar('顺序', '逆序');\n                    var ordtext = \"☆逆序↑\";\n                } else {\n                    putMyVar('顺序', '正序');\n                    var ordtext = \"★正序↓\";\n                }\n                setLists(d, list, lazy, cat, years)\n                //log(d[0])\n                addItemAfter(orderid, d);\n                //refreshPage(true);\n                updateItem(orderid, {\n                    title: '‘‘’’<span style=\"color:#098AC1\"><small>播放列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>'\n                });\n                return 'hiker://empty'\n            }, \"orderid\", MY_RULE + \"itemid\", setLists, playlists, lazy, cat, tabs, years),\n            col_type: 'text_center_1',\n            extra: {\n                id: \"orderid\",\n            }\n        })\n        try {\n            if (cat == \"1\") {\n                setLists(d, playlists[tabs[0]], lazy, \"1\")\n            } else if (cat == \"3\") {\n                //log(playlists[0])\n                setLists(d, playlists[0], lazy, \"3\", years)\n            } else {\n                //log(playlists[0])\n                setLists(d, playlists[0], lazy)\n            }\n        } catch (e) {}\n        if (upinfo) {\n            setLastChapterRule('js:' + $.toString((newstip) => {\n                setResult('更新至:' + newstip);\n            }, upinfo));\n        }\n        setResult(d)\n    }\n} catch (e) {\n    log(e.toString())\n    setResult([{\n        title: \"搜索君没有找到与“\" + \"““\" + kw + \"””\" + \"”相关的结果\" + \"\\n\\n点击此处可调用青豆进行片源检索\",\n        desc: \"请换其他小程序搜索片源哦！\",\n        url: \"hiker://search?s=\" + kw + \"&rule=青豆\",\n        //desc: \"点击此处可调用青豆进行片源检索\",\n        //url: \"hiker://empty\",\n        col_type: \"text_center_1\"\n    }]);\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\n/*\\nif (MY_URL.includes('/s?q=')) {\\n    var d = [];\\n    log(MY_URL)\\n    let kw = MY_URL.split(\\\"s?q=\\\")[1].split(\\\"&\\\")[0];\\n    setPageTitle(decodeURI(kw).replace(\\\"在线观看\\\", \\\"\\\") + \\\"搜索结果\\\")\\n    let page = MY_PAGE;\\n    //log(kw)\\n    let seaUrl = \\\"https://api.so.360kan.com/index?force_v=1&kw=\\\" + kw + \\\"&from=&pageno=\\\" + page + \\\"&v_ap=1&tab=all\\\";\\n    let shtml = fetch(seaUrl, {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        },\\n        method: \\\"get\\\"\\n    })\\n    let sdata = JSON.parse(shtml).data.longData.rows;\\n    //log(sdata.length)\\n\\n    let html = fetch(MY_URL, {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        },\\n        method: \\\"get\\\"\\n    })\\n    sdata.forEach(video => {\\n        d.push({\\n            title: video.titleTxt,\\n            desc: video.coverInfo.txt || video.coverInfo.quality,\\n            img: video.cover + '@Referer=' + video.cover,\\n            url: 'https://api.web.360kan.com/v1/detail?cat=' + video.cat_id + '&id=' + video.en_id,\\n            col_type: 'movie_3_marquee',\\n        })\\n    })\\n    setResult(d);\\n} else {\\n    */\\n    MY_URL = MY_URL.replace('hiker://empty##', '');\\n    var d = [];\\n    let html = fetch(MY_URL, {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        },\\n        method: \\\"get\\\"\\n    })\\n    JSON.parse(html).data.longData.rows.forEach(video => {\\n        d.push({\\n            title: video.titleTxt,\\n            content: video.description,\\n            desc: video.coverInfo.txt || video.coverInfo.quality,\\n            img: video.cover + '@Referer=' + video.cover,\\n            url: 'hiker://empty##https://api.web.360kan.com/v1/detail?cat=' + video.cat_id + '&id=' + video.en_id,\\n            col_type: 'movie_3_marquee',\\n        })\\n    })\\n    setResult(d);\\n//}\"},{\"col_type\":\"movie_3\",\"name\":\"一级书签\",\"path\":\"sq\",\"rule\":\"function 一级书签(detailUrl) { // 拦截详情页\\r\\n    detailUrl = detailUrl || '/detail/'; //详情页链接如 'vod/detail/'  \\r\\n    MY_URL = MY_URL.replace('hiker://empty##', ''); // 拿到地址栏链接\\r\\n    let js = $.toString((MY_RULE, detailUrl) => {\\r\\n        MY_URL = input; //附加首页地址为了getHome正常运行\\r\\n        var rule = MY_RULE.title; //小程序名称\\r\\n        var host = getHome(input); //获取拦截地址的域名\\r\\n        var route = input.replace(host, ''); //获取拦截地址的路由\\r\\n        if (input.includes(detailUrl)) {\\r\\n            return $.toString((url, MY_RULE, rule) => {\\r\\n                let ejUrl = 'hiker://empty##' + url;\\r\\n                fba.parseLazyRule($$$().lazyRule((ck, rule) => {\\r\\n                    let privateCk = rule + '@cookie';\\r\\n                    putVar(privateCk, ck);\\r\\n                    // log('已设置cookie:'+ck);\\r\\n                    // log('设置后cookie:'+getVar(privateCk));\\r\\n                    return 'hiker://empty';\\r\\n                }, document.cookie, rule));\\r\\n                let group = MY_RULE.group;\\r\\n                let preRule = MY_RULE.preRule2 || MY_RULE.preRule;\\r\\n                let pages = MY_RULE.pages;\\r\\n                let detail_find_rule = MY_RULE.detail_find_rule || JSON.parse(request('hiker://home@' + rule)).detail_find_rule;\\r\\n                fba.open(JSON.stringify({\\r\\n                    // title: rule,\\r\\n                    title: '详情页',\\r\\n                    rule: rule,\\r\\n                    group: group,\\r\\n                    preRule: preRule,\\r\\n                    pages: pages,\\r\\n                    // url: 'hiker://page/ej?rule=' + rule + '&url=' + url,//子页面写法\\r\\n                    url: ejUrl,\\r\\n                    // findRule:JSON.parse(request('hiker://home@' + rule)).detail_find_rule,\\r\\n                    findRule: \\\"js:\\\" + $$$.toString((preRule, detail_find_rule) => { //自定义js页面规则代码写法\\r\\n                        if (!config.模板) {\\r\\n                            eval(preRule);\\r\\n                            // log('执行了预处理:'+preRule);\\r\\n                            let _cfg = getMyVar('initConfig', '{}');\\r\\n                            if (_cfg && _cfg.length > 0) {\\r\\n                                config = JSON.parse(_cfg);\\r\\n                            }\\r\\n                        }\\r\\n                        // log(config);\\r\\n                        // 可能测试环境取不到 MY_RULE.detail_find_rule就eval本规则\\r\\n                        eval(detail_find_rule);\\r\\n                    }, preRule, detail_find_rule),\\r\\n                }));\\r\\n            }, input, MY_RULE, rule)\\r\\n        }\\r\\n    }, MY_RULE, detailUrl);\\r\\n\\r\\n    extra = {\\r\\n        canBack: true,\\r\\n        urlInterceptor: js,\\r\\n        floatVideo: true,\\r\\n    };\\r\\n    setResult([{\\r\\n        col_type: \\\"x5_webview_single\\\",\\r\\n        url: MY_URL,\\r\\n        desc: \\\"float&&100%\\\",\\r\\n        extra: extra\\r\\n    }]);\\r\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索建议\",\"path\":\"ssjy\",\"rule\":\"function sousuo(d, pic, kw) {\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar('sousuo$input');\\n    }));\\n    var rule_name = MY_RULE.title;\\n    var img = getItem(rule_name + '建议海报');\\n    if (img == 'undefined') img = 'https://vkceyugu.cdn.bspapp.com/VKCEYUGU-80953a7e-7873-4802-9cc1-ea559e692799/fd313234-383e-4ff8-81cc-459cef28f7b0.jpg';\\n    var name = getItem(rule_name + '建议片名');\\n    if (pic == '海报开') {\\n        d.push({\\n            img: img,\\n            col_type: 'card_pic_1',\\n            extra: {\\n                id: 'img'\\n            },\\n            desc: \\\"0\\\",\\n            url: 'hiker://search?s=' + name + '&rule=' + rule_name,\\n        })\\n    }\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + rule_name + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看的...\\\",\\n        col_type: \\\"input\\\",\\n        extra: {\\n            onChange: $.toString((rule_name) => {\\n                let sug = config.sug || [];\\n                for (let i in sug) {\\n                    deleteItem(sug[i]);\\n                }\\n                if (input == '') deleteItemByCls(\\\"#s\\\");\\n                if (input) {\\n                    if (input == '清除搜索记录') writeFile('hiker://files/cache/搜索记录.json', '');\\n                    initConfig({\\n                        sug: [input]\\n                    });\\n                    http.fetch('https://s.video.qq.com/smartbox?callback=fn&plat=2&ver=0&num=5&otype=json&query=' + input, {}).success(data => {\\n                        var gg = JSON.parse(data.split('fn\\\\(')[1].replace('\\\\}\\\\)', '\\\\}')).item;\\n                        if(gg){\\n                        putMyVar('建议数据', gg)\\n                        }else{\\n                            putMyVar('建议数据', '[]')\\n                        }\\n                        try{\\n                        var dd = gg.find((e) => (e.dc))                    \\n                        }catch(e){         \\n                        var dd = {};                \\n                        }    \\n                        if (dd) {\\n                            setItem(rule_name + '建议海报', dd.dc)\\n                            setItem(rule_name + '建议片名', dd.word)\\n                            //log(dd.word)\\n                            updateItem('img', {\\n                                img: dd.dc,\\n                                url: 'hiker://search?s=' + dd.word + '&rule=' + rule_name,\\n                                extra: {\\n                                    id: 'img'\\n                                }\\n                            })\\n                        }                   \\n                    }).error(msg => log(msg.toString())).start(log(\\\"Error\\\"))   \\n                    //log(getMyVar('建议数据'))       \\n                    var gg = JSON.parse(getMyVar('建议数据'));                    \\n                    deleteItemByCls(\\\"#s\\\");\\n                    for (let i in gg) {\\n                        var nn = gg[i].word;\\n                        addItemAfter(\\\"input_id\\\", {\\n                            title: \\\"⚡\\\" + nn,\\n                            //title: nn,\\n                            url: $(\\\"#noLoading#\\\").lazyRule((nn, rule_name) => {\\n                                let localData = request('hiker://files/cache/搜索记录.json');\\n                                if (!localData) localData = \\\"[]\\\";\\n                                let lishi = JSON.parse(localData);\\n                                let ccc = lishi.indexOf(nn);\\n                                if (ccc > -1) {\\n                                    lishi.splice(ccc, 1)\\n                                };\\n                                lishi.push(nn);\\n                                lishi = lishi.slice(-3);\\n                                writeFile('hiker://files/cache/搜索记录.json', JSON.stringify(lishi));\\n                                return 'hiker://search?s=' + nn + '&rule=' + rule_name\\n                            }, nn, rule_name),\\n                            col_type: \\\"text_1\\\",\\n                            extra: {\\n                                id: input,\\n                                cls: \\\"#s\\\"\\n                            }\\n                        });\\n                    }\\n                } else {\\n                    //默认\\n                    let localData = request('hiker://files/cache/搜索记录.json');\\n                    if (!localData) localData = \\\"[]\\\";\\n                    let lishi = JSON.parse(localData).slice(-3);\\n                    config.sug = lishi;\\n                    initConfig({\\n                        sug: config.sug\\n                    });\\n                    for (let it of config.sug) {\\n                        addItemAfter(\\\"input_id\\\", {\\n                            title: it,\\n                            url: 'hiker://search?s=' + it + '&rule=' + rule_name,\\n                            col_type: \\\"text_3\\\",\\n                            extra: {\\n                                id: it,\\n                                cls: \\\"#s\\\"\\n                            }\\n                        });\\n                    }\\n                }\\n            }, rule_name),\\n            defaultValue: kw,\\n            //titleVisible: false,\\n            id: \\\"input_id\\\"\\n        }\\n    });\\n    \\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n    d.push({\\n        title: '<span style=\\\"color:#ff6600\\\">\\\\t热搜榜\\\\t\\\\t\\\\t</span>',\\n        url: \\\"hiker://empty\\\",\\n        pic_url: 'https://ss1.baidu.com/6ONXsjip0QIZ8tyhnq/it/u=3779990328,1416553241&fm=179&app=35&f=PNG?w=108&h=108&s=E7951B62A4639D153293A4E90300401B',\\n        col_type: 'icon_small_3'\\n    });\\n    var html = request(\\\"https://waptv.sogou.com/hotsugg\\\");\\n    var list = pdfa(html, \\\"body&&.hot-list&&li\\\");\\n    for (var i in list) {\\n        d.push({\\n            title: i == \\\"0\\\" ? '““””<span style=\\\"color:#ff3300\\\">' + (parseInt(i) + 1).toString() + '</span>' + \\\"\\\\t\\\\t\\\\t\\\" + pdfh(list[i], \\\"a&&Text\\\") : i == \\\"1\\\" ? '““””<span style=\\\"color:#ff6600\\\">' + (parseInt(i) + 1).toString() + '</span>' + \\\"\\\\t\\\\t\\\\t\\\" + pdfh(list[i], \\\"a&&Text\\\") : i == \\\"2\\\" ? '““””<span style=\\\"color:#ff9900\\\">' + (parseInt(i) + 1).toString() + '</span>' + \\\"\\\\t\\\\t\\\\t\\\" + pdfh(list[i], \\\"a&&Text\\\") : '““””<span>' + (parseInt(i) + 1).toString() + '</span>' + \\\"\\\\t\\\\t\\\\t\\\" + pdfh(list[i], \\\"a&&Text\\\"),\\n            url: \\\"hiker://search?rule=\\\" + rule_name + \\\"&s=\\\" + pdfh(list[i], \\\"a&&Text\\\"),\\n            col_type: \\\"text_1\\\"\\n        });\\n    }\\n    setResult(d);\\n}\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/50.svg"},{"last_chapter_rule":"","title":"追剧兔·Q","author":"发粪涂墙","version":1,"type":"video","url":"hiker://empty##https://www.zjtu.cc/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper,1:'\nconst 拼接分类 = 'body&&.site-tabs'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url+'page/'+page\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.list-a&&li')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.list-remarks&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = []\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\n\t//eval(JSON.parse(fetch('hiker://page/yzm')).rule);\r\nvar list = pdfa(html, 'body&&.search-list');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),\n        desc: pdfh(list[j], '.deployment&&Text'),\n        img: pd(list[j], '.lazy&&data-original') + '@Referer=',\n        content: pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    })\n}\nsetResult(d)","search_url":"https://www.zjtu.cc/vodsearch/**----------fypage---/","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode()\nvar lazy = $('').lazyRule((MY_HOME) => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) return url\n    var jx = fetch(MY_HOME + '/static/player/' + html.from + '.js').split(\"'\")[3]\n    eval(request(jx.replace('jx', 'index') + url, {\n        headers: {\n            'Referer': MY_URL\n        }\n    }).match(/var config = {[\\s\\S]*?}/)[0])\n    return config.url\n}, MY_HOME)\nd.push({\n    title: pdfh(html, '.deployment&&Text'),\n    desc: pdfh(html, '.detail-box&&Text'),\n    img: pd(html, '.lazy&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.swiper-wrapper&&a'\nvar 选集 = 'body&&.content-playlist'\nvar 线路名 = 'a&&Text'\nvar 选集列表 = 'ul&&li'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"if (html.indexOf('系统安全验证') > -1) {\\n\\n    let headers = {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n        \\\"Referer\\\": MY_URL\\n    };\\n    eval(JSON.parse(request('hiker://page/jxhs?rule=模板·Q')).rule);\\n   // evalPrivateJS(ssyz);\\n\\n    let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n    fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n        headers: headers,\\n        method: 'POST'\\n    })\\n    var yz = !/search/.test(MY_URL) ? true_url : MY_URL\\n    html = fetch(yz, {\\n        headers: headers\\n    });\\n}\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/15/zV1T9P.png"},{"last_chapter_rule":"","title":"bd360","author":"狗浩啊","version":0,"type":"video","url":"https://bd360.xyz/vodshow/4--------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0}","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(留言|下载|APP|更新|首页|加群))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], '.module-poster-item-title&&Text'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, 'body&&.module-item');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),//标题\n        desc: pdfh(list[j], '.module-item-note&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://bd360.xyz/vodsearch/**----------fypage---.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: '.module-info-item,1&&Text;.module-info-item,2&&Text;.module-info-item,4&&Text',\n    content: '.show-desc,0&&p,0&&Text',\n    tabs: 'body&&.tab-item',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.module-play-list-content,#id&&a',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule(() => {\n        try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n        var url = html.url\n        if (html.encrypt == '1') {\n            url = unescape(url);\n        } else if (html.encrypt == '2') {\n            url = unescape(base64Decode(url));\n        }\n        if (/m3u8|mp4/.test(url)) {\n            return url\n        } else {\n            return 'video://' + input\n        }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"100影视","author":"狗浩啊","version":0,"type":"video","url":"https://www.dy111.me/vodshow/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(热搜|下载|APP|更新|首页|加群|专题|客户端|回家))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype\\/(\\d+)\\//, 'vodshow/$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+\\.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], '.module-poster-item-title&&Text'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, 'body&&.module-item');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),//标题\n        desc: pdfh(list[j], '.module-item-note&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.dy111.me/vodsearch/**----------fypage---/","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: '.module-info-item,1&&Text;.module-info-item,2&&Text;.module-info-item,4&&Text',\n    content: '.show-desc,0&&p,0&&Text',\n    tabs: 'body&&.tab-item',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.module-play-list-content,#id&&a',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule(() => {\n        try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n        var url = html.url\n        if (html.encrypt == '1') {\n            url = unescape(url);\n        } else if (html.encrypt == '2') {\n            url = unescape(base64Decode(url));\n        }\n        if (/m3u8|mp4/.test(url)) {\n            return url\n        } else {\n            return 'video://' + input\n        }\n    } catch (e) {\n        return 'video://' + input\n    }\n});\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"视中心影院.DT🐺","author":"家娃","version":20221207,"type":"video","url":"hiker://empty##https://www.ksksy.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note||.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-original||data-src') + '@Referer=',\n      extra: {              \n                mytitle: pdfh(list[j], 'img&&alt')            \n            },\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(主演：)&&Text'),\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(剧情：)&&Text'),\n       img: parseDom(list[j], '.lazyload&&data-src')+'@Referer=',\n       extra: {              \n                mytitle: parseDomForHtml(list[j], 'img&&alt')               \n            },\r\n       url: parseDom(list[j], 'h3&&a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.ksksy.com/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        var playUrl = player_data.url;\n\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        var jxUrl = 'https://languang.ksksy.com/?url=' + playUrl + '&tm=' + player_data.tm + '&key=' + player_data.key + '&next=' + player_data.link_next + '&title=' + pdfh(html, \"title&&Text\").split(\"-\")[0];\n        var jxHtml = request(jxUrl, {\n            headers: {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n            },\n            method: \"GET\"\n        });\n        eval(jxHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n        var apiUrl = 'https://languang.ksksy.com/API.php';\n        var apiHtml = request(apiUrl, {\n            headers: {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n            },\n            body: \"url=\" + config.url + \"&time=\" + config.time + \"&key=\" + config.key,\n            method: \"POST\"\n        });\n        var json = JSON.parse(apiHtml);\n        if (json.code == 200) {\n            playUrl = json.url;\n            return toUrl(playUrl);\n        } else {\n            return 'toast://' + json.msg;\n        }\n\n    } catch (e) {\n        //setError(e);\n        showLoading(\"正在进行检索，请稍候...\");\n        var video = 'x5Rule://' + input + '@' + $.toString(() => {\n            //fba.log(fba.getUrls())\n            var urls = _getUrls()\n            var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n            var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n            for (var i in urls) {\n                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                    // fy_bridge_app.log(urls[i])\n                    if (/mgtv|sohu/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                    } else if (/bili/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                    } else if (/ixigua/.test(urls[i])) {\n                        return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                    } else {\n                        return urls[i]\n                    }\n                }\n            }\n        });\n        return video;\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items:contains(导演：)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items:contains(主演：)&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items:contains(集数)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items:contains(上映：)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": MY_PARAMS.mytitle,\n    \"pic\": parseDom(html, '.lazyload&&data-src||data-original'),\n    \"content\": parseDomForHtml(html, '.video-info-content&&Text').replace('收起', ''),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDom(html, '.lazyload&&data-src||data-original'),\n                        \"content\": parseDomForHtml(html, '.video-info-content&&Text').replace('收起', ''),\n                        \"from\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDom(html, '.lazyload&&data-src||data-original'),\n                        \"content\": parseDomForHtml(html, '.video-info-content&&Text').replace('收起', ''),\n                        \"from\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://www.ksksy.com/ios_szx.png"},{"firstHeader":"class","last_chapter_rule":"","title":"IMAX影视.dr","author":"道长&小祥","version":1,"type":"video","url":"https://imaxw.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**-------------.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=IMAX影视"},{"firstHeader":"class","last_chapter_rule":"","title":"电影天堂.DR","author":"道长&zetalpha","version":3,"type":"video","url":"https://www.ksksy.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = []\n\nvar getRangeColors = function() {      \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'scroll-content'\nconst 拼接分类 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(首|表|更|榜|APP|备))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (page == 1) {\n    d.push({\n        title: \"🔍\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"搜点什么\",\n        col_type: \"input\"\n    });\n}\n\ntrue_url = true_url.replace(/vodtype(\\/\\d+).*/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.module-list&&.module-item')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-text&&Text'),\n        img: pd(video, '.lazy&&data-src'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/page/fypage/wd/**.html","group":"1影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\n\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nlet parse = {\n    \"title\": \"h1&&Text;.video-info-items&&Text;.video-info-items,1&&Text\",\n    \"img\": \".lazyload&&data-src\",\n    \"desc\": \".video-info-items,3&&Text\",\n    \"content\": \".video-info-content&&Text\",\n    \"tabs\": \"body&&.module-tab-content&&.module-tab-item\",\n    \"lists\": \"body&&.scroll-box-y,#id&&a\"\n}\n\n二级(parse,lazy)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.ksksy.com/template/mxone/mxstatic/picture/logo.png"},{"last_chapter_rule":"","title":"虎牙直播(推送)","author":"香雅情","version":1,"type":"live","url":"hiker://empty##fypage##","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\n\nif (MY_PAGE == 1) {\n    items.push({\n        title: (getMyVar('huyazb', '0') == '1' ? '推送🟢' : '推送🔴'),\n        url: `hiker://empty@lazyRule=.js:getMyVar('huyazb','0')=='1'?putMyVar('huyazb','0'):putMyVar('huyazb','1');refreshPage();'toast://切换成功！'`,\n\n        col_type: 'scroll_button'\n    });\n    if (getMyVar('cathtml', '') == '') {\n        var cathtml = fetch('https://www.huya.com/g/', {\n            headers: {\n                'User-Agent': PC_UA\n            }\n        });\n        putMyVar('cathtml', cathtml);\n    }\n    //log(cathtml);\n    putMyVar('defacat', parseDomForHtml(getMyVar('cathtml', ''), '.game-list&&li&&a&&data-gid'));\n    var cate = parseDomForArray(getMyVar('cathtml', ''), '.game-list&&li');\n\n    for (let i = 0; i < cate.length; i++) {\n        //log(parseDomForHtml(cate[i], 'a&&Text'));\n        //log(parseDomForHtml(cate[i], 'a&&data-gid'));\n        items.push({\n            title: (getItem('huyazb', '0') == i ? '👇🏻' : '') + parseDomForHtml(cate[i], 'a&&Text'),\n            url: `hiker://empty@lazyRule=.js:setItem('huyazb', '` + i + `');setItem('huyacat','` + parseDomForHtml(cate[i], 'a&&data-gid') + `');refreshPage();'toast://切换成功！'`,\n\n            col_type: 'scroll_button'\n        });\n    }\n\n}\n\nvar html = fetch('https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=' + getItem('huyacat', getMyVar('defacat')) + '&tagAll=0&page=' + MY_PAGE, {\n    headers: {\n        'User-Agent': PC_UA\n    }\n});\nvar list = JSON.parse(html).data.datas;\n//log(list[0]);\n\nfor (let j = 0; j < list.length; j++) {\n    var desc = list[j].introduction;\n    var img = list[j].screenshot;\n    var url = list[j].profileRoom;\n    var title = list[j].nick;\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $(url).lazyRule((title, img) => {\n            //卷毛鼠直播代理https://github.com/JMSTV/jmstv.github.io\n            //https://epg.112114.xyz/huya/\n            //https://live.52sf.ga/huya/\n            /*\n            var ul = JSON.parse(request('https://epg.112114.xyz/huya/' + input, {\n                redirect: false,\n                withHeaders: true\n            }));\n            return ul.headers.location[0];\n            */\n\n            //let rid = input.split('/').pop();\n            let html = fetch('https://m.huya.com/' + input, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA\n                }\n            });\n\n            let live_json = html.match(/window.HNF_GLOBAL_INIT = (.*?)<\\/script>/)[1];\n            let live = JSON.parse(live_json);\n            let purl = JSON.stringify({\n                name: title,\n                urls: [getRealUrl(base64Decode(live.roomProfile.liveLineUrl)).replace('//', 'http://')],\n                pic: img,\n                guolv: \"#ignoreImg=true#\"\n            });\n\n            //log(purl);\n            if (getMyVar('huyazb', '0') == '1') {\n                return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(purl.replace(/\\&/g, '＆＆'));\n            } else {\n                return purl\n            }\n            //以下代码来自TyrantG虎牙直播\n            function getRealUrl(live_url) {\n                let [i, b] = live_url.split('?');\n                let r = i.split('/').pop();\n                let s = r.replace(/\\.(flv|m3u8)/, '');\n                let c_tmp = b.split('&').filter(n => n);\n                // let c = []\n                let n = {};\n                let c_tmp2 = [];\n                c_tmp.forEach((tmp, index) => {\n                    if (index < 3) {\n                        // c.push(tmp)\n                        n[tmp.split('=')[0]] = tmp.split('=')[1]\n                    } else {\n                        c_tmp2.push(tmp)\n                    }\n                });\n                let tmp2 = c_tmp2.join('&');\n                n[tmp2.split('=')[0]] = tmp2.split('=')[1];\n\n                let fm = decodeURIComponent(n.fm).split('&')[0];\n                let u = base64Decode(fm);\n                let p = u.split('_')[0];\n                let f = new Date().getTime() + '0000';\n                let ll = n.wsTime;\n                let t = '0';\n                let h = [p, t, s, f, ll].join('_');\n                let m = md5(h);\n                return (i + \"?wsSecret=\" + m + \"&wsTime=\" + ll + \"&u=\" + t + \"&seqid=\" + f + \"&\" + c_tmp2.pop()).replace('hls', 'flv').replace('m3u8', 'flv');\n            }\n\n        }, title, img),\n        desc: desc\n    });\n}\n\nsetHomeResult({\n    data: items\n});","searchFind":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.response[\"3\"].docs.length; i++) {\n    var j = json.response[\"3\"].docs[i];\n    d.push({\n        content: j.game_introduction,\n        url: $(j.room_id).lazyRule(() => {\n            var ul = JSON.parse(request('https://live.52sf.ga/huya/' + input, {\n                redirect: false,\n                withHeaders: true\n            }));\n            return ul.headers.location[0];\n        }),\n        desc: j.gameName,\n        title: j.game_nick,\n        img: j.game_screenshot\n    })\n\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://search.cdn.huya.com/?m=Search&do=getSearchContent&plt=m&q=**&uid=0&app=11&v=4&typ=-5&start=fypage@-1@*40@&rows=40;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36}","group":"2推送","detail_col_type":"text_2","detail_find_rule":"","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3gSMQ.png"},{"last_chapter_rule":"","title":"XYQ推送","author":"香雅情","version":0,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nd.push({\n    title: \"推送\",\n    url: $.toString(() => {\n        clearMyVar('name');\n        //var link = 'hiker://page/push.html?url=' + encodeURIComponent(input.replace(\"#isMusic=true#\", '').replace('#isVideo=true#', ''));\n        var link = \"hiker://page/push?pushurl=\" + encodeURIComponent(input);\n\n        if (input.startsWith('http') || input.startsWith('magnet:') || (input.includes(\"\\n\") && !input.startsWith(\"{\"))) {\n            return link;\n        } else if (input.startsWith(\"{\") && input.endsWith(\"}\")) {\n            return link;\n        } else if (/\\.torrent|ed2k\\:/.test(input)) {\n            return 'toast://不支持推送这种链接。'\n        } else {\n            return 'toast://请输入正确的链接。'\n        }\n    }),\n    extra: {\n        titleVisible: true\n    },\n    col_type: 'input'\n});\nd.push({\n    title: \"TVB搜索\",\n    url: $.toString(() => {\n        let tvip = getItem('hikertvboxset', '');\n        let state = 'false';\n        if (tvip != '' && tvip.includes(':997')) {\n            var state = request(tvip + '/action', {\n                headers: {\n                    'Content-Type': 'application/x-www-form-urlencoded',\n                    //'X-Requested-With': 'XMLHttpRequest',\n                    'Referer': tvip\n                },\n                timeout: 2000,\n                body: 'do=search&word=' + input,\n                method: 'POST'\n            });\n        }\n        //log(state);\n        if (state == 'ok') {\n            return 'toast://搜索推送成功，请注意观看电视端tvbox界面';\n        } else {\n            return 'toast://搜索推送失败'\n        }\n    }),\n    extra: {\n        titleVisible: true\n    },\n    col_type: 'input'\n});\n//调用代码示例\n//return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(input);\n//url: 'hiker://page/push?rule=XYQ推送&pushurl='+encodeURIComponent(url);\nd.push({\n    title: '下载TVBox推送插件',\n    url: 'https://framagit.org/lzk23559/tvbox/-/tree/main',\n    col_type: 'text_2'\n});\nd.push({\n    title: '查看TV设置教程',\n    url: 'https://framagit.org/lzk23559/tvbox/-/blob/main/%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E-%E5%BF%85%E7%9C%8B/XYQTVBox%E6%AD%A5%E9%AA%A4%E6%93%8D%E4%BD%9C%E8%AF%B4%E6%98%8E.pdf',\n    col_type: 'text_2'\n});\nd.push({\n    title: \"有推送功能的规则\",\n    url: 'hiker://empty',\n    col_type: \"text_1\"\n});\nvar jump = ['tvbox云盘推送', '云盘君(推送)', 'AI影搜(推送)', 'MY阿里云盘', '香情影视', '聚影√', '风影 Ⓕ'];\nfor (var j in jump) {\n    d.push({\n        title: jump[j],\n        url: 'hiker://home@' + jump[j],\n        col_type: \"text_3\"\n    });\n}\nsetResult(d);","searchFind":"","search_url":"","group":"2推送","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes(\\\"\\\\n\\\") && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI茶杯(推送)","author":"","version":48,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"2推送","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet mvtitle = base64Decode(getParam(\\\"movtitle\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\nlet tfpush = getItem('webpush', '0');\\nlet _web = $.toString((tfpush) => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            //return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            if (tfpush == '0') {\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            } else {\\n                let play = fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\"));\\n                return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(JSON.stringify({\\n                    \\\"name\\\": document.title,\\n                    \\\"url\\\": play\\n                }));\\n            }\\n        }\\n    }\\n}, tfpush);\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            //var urlx = \\\"video://\\\" + it.href;\\n            var urlx = tfpush == '0' ? 'video://' + it.href : 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(JSON.stringify({\\n                \\\"name\\\": getPageTitle() + t,\\n                \\\"url\\\": it.href\\n            }));\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            ph: t + \\\"$\\\" + it.href,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    let mtab = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        mtab.push(d[i].ph);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                mtab.push('#');\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n    let playl = mtab.join('#').replace(/###/g, '$$$$$$');\\n\\n    let from = [];\\n    for (var j = 0; j < playl.split('$$$').length; j++) {\\n        from.push(\\\"播放列表\\\" + [j + 1]);\\n    }\\n    let push = JSON.stringify({\\n        \\\"name\\\": mvtitle,\\n        \\\"from\\\": from.join('$$$'),\\n        \\\"url\\\": playl.replace(/\\\\&/g, '＆＆')\\n    });\\n    //log(push);\\n\\n    d2.unshift({\\n        title: \\\"推送当前页列表到TVBox\\\",\\n        url: $(push).lazyRule(() => {\\n            return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(input);\\n        }),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n\\n    d2.unshift({\\n        title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\\n        url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\\n\\n        col_type: 'scroll_button'\\n    });\\n    setResult(d2);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let html = fetch(\\\"https://cupfox.app/s/\\\" + s);\\n    let text = pdfh(html, \\\"body&&#__NEXT_DATA__&&Html\\\");\\n    //log(text);\\n    let data = JSON.parse(text);\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of data.props.pageProps.resourceSearchResult.resources) {\\n        d.push({\\n            title: wrap(it.text, s),\\n            url: \\\"hiker://page/p?u=\\\" + base64Encode(it.url) + \\\"&movtitle=\\\" + base64Encode(wrap(it.text, s)),\\n            col_type: \\\"text_1\\\",\\n            desc: it.website + \\\" \\\" + (it.tags || []).join(\\\" \\\"),\\n            pic_url: \\\"\\\",\\n            extra: {\\n                inheritTitle: false\\n            }\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\"茶杯狐\\\",\\n        url: \\\"web://https://cupfox.app\\\",\\n        col_type: \\\"flex_button\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"MY阿里云盘","author":"香雅情","version":1,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nfunction formatDate(_date, _fmt) {\n    let fmt = _fmt || \"yyyy-MM-dd HH:mm:ss\";\n    const date = !isNaN(_date) ? new Date(_date * 1000) : new Date(_date);\n    const o = {\n        \"M+\": date.getMonth() + 1, //月份 \n        \"d+\": date.getDate(), //日 \n        \"h+\": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12,\n        \"H+\": date.getHours(), //小时 \n        \"m+\": date.getMinutes(), //分 \n        \"s+\": date.getSeconds(), //秒 \n        \"q+\": Math.floor((date.getMonth() + 3) / 3), //季度 \n        \"S\": date.getMilliseconds() //毫秒 \n    };\n    if (/(y+)/.test(fmt)) {\n        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \"\").substr(4 - RegExp.$1.length));\n    }\n    for (let k in o) {\n        if (new RegExp(\"(\" + k + \")\").test(fmt)) {\n            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\"00\" + o[k]).substr((\"\" + o[k]).length)));\n        }\n    }\n    return fmt;\n};\n\nfunction formatSize(size) {\n    if (!size) {\n        return '';\n    }\n    const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n    let i = 0;\n    while (size >= 1024) {\n        size /= 1024;\n        i++;\n    }\n    size = i ? Number(size.toFixed(2)) : size;\n    return `${size} ${units[i]}`;\n}\n//////\nvar tokenjson = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0];\nvar drivid = tokenjson.default_drive_id;\nd.push({\n    title: '当前用户：' + tokenjson.nick_name + ' ' + tokenjson.user_name,\n    url: 'hiker://empty',\n    col_type: \"avatar\",\n    pic_url: tokenjson.avatar\n});\n\nvar selfroot = fetch('https://api.aliyundrive.com/adrive/v3/file/list', {\n    headers: {\n        'Content-Type': 'application/json',\n        'authorization': getMyVar(\"aliaccessTk\", \"\")\n    },\n    body: '{\"drive_id\":\"' + drivid + '\",\"parent_file_id\":\"root\",\"limit\":100,\"all\":false,\"url_expire_sec\":1600,\"image_thumbnail_process\":\"image/resize,w_400/format,jpeg\",\"image_url_process\":\"image/resize,w_1920/format,jpeg\",\"video_thumbnail_process\":\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\",\"fields\":\"*\",\"order_by\":\"name\",\"order_direction\":\"ASC\"}',\n    method: 'POST'\n});\n\nvar conts = JSON.parse(selfroot).items;\nvar dongtai = JSON.parse(fetch('hiker://page/selflazyurl', {})).rule.toString();\nvar tuisong = [];\nfor (var i in conts) {\n    var listyp = conts[i].type;\n    if (listyp != 'folder') {\n        var cate = conts[i].category;\n        var fname = conts[i].name;\n        if (cate == 'video') {\n            var title = '📺' + conts[i].name;\n        } else if (cate == 'doc') {\n            var title = '📖' + conts[i].name;\n        } else if (cate == 'image') {\n            var title = '🖼' + conts[i].name;\n        } else if (cate == 'zip') {\n            var title = '📦' + conts[i].name;\n        } else {\n            var title = conts[i].name\n        }\n        d.push({\n            title: title,\n            url: $(conts[i].file_id).lazyRule((drivid, dongtai, cate, fname) => {\n                eval(dongtai);\n                return play\n            }, drivid, dongtai, cate, fname),\n            desc: formatDate(conts[i].updated_at) + '  ' + formatSize(conts[i].size),\n            col_type: 'text_1'\n\n        });\n        if (cate == 'video' || cate == 'audio') {\n            tuisong.push(\n                title.replace(/\\#/g, '_').replace(/\\$/g, '_') + '$' + cate + '|' + conts[i].file_id\n            );\n        }\n    } else {\n        d.push({\n            title: '📂' + conts[i].name,\n            url: $('hiker://empty' + conts[i].file_id).rule((drivid,pushname) => {\n                eval(JSON.parse(fetch('hiker://page/selfruleloop', {})).rule);\n            }, drivid,conts[i].name),\n            col_type: 'flex_button'\n        });\n\n    } //end if\n}\nlet pushname = \"网盘根目录\"\neval(JSON.parse(fetch('hiker://page/pushcode', {})).rule);\n\nd.unshift({\n    title: getItem('hikertvboxset', ''),\n    url: 'hiker://empty',\n    col_type: 'flex_button'\n});\nd.unshift({\n    title: '设置IP地址',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'flex_button'\n});\n//推送代码结束\nsetHomeResult({\n    data: d\n});","searchFind":"","search_url":"","group":"2测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if (!getMyVar(\"aliaccessTk\")) {\n    let ntoken=[];\n    if (!fileExist(\"hiker://files/rules/icy/icy-ali-token.json\")) {\n        var reftoken = \"\";\n    } else {\n        var reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\n    }\n    var refresh = fetch('https://auth.aliyundrive.com/v2/account/token', {\n        headers: {\n            'Content-Type': 'application/json',\n            'User-Agent': PC_UA,\n            'Referer': 'https://www.aliyundrive.com/'\n        },\n        body: '{\"refresh_token\":\"' + reftoken + '\",\"grant_type\":\"refresh_token\"}',\n        method: 'POST'\n    });\n    //log(refresh);\n    if (!fileExist(\"hiker://files/rules/icy/icy-ali-token.json\") || refresh.length > 300) {\n        ntoken.push(JSON.parse(refresh));\n        writeFile(\"hiker://files/rules/icy/icy-ali-token.json\", JSON.stringify(ntoken));\n    }\n    \n    var refresh = fetch('hiker://files/rules/icy/icy-ali-token.json', {});\n    var accessTk = JSON.parse(refresh)[0].token_type + ' ' + JSON.parse(refresh)[0].access_token;\n    putMyVar(\"aliaccessTk\", accessTk);\n}\n\n\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"自己嵌套页面\",\"path\":\"selfruleloop\",\"rule\":\"var d = [];\\n\\nfunction formatDate(_date, _fmt) {\\n    let fmt = _fmt || \\\"yyyy-MM-dd HH:mm:ss\\\";\\n    const date = !isNaN(_date) ? new Date(_date * 1000) : new Date(_date);\\n    const o = {\\n        \\\"M+\\\": date.getMonth() + 1, //月份 \\n        \\\"d+\\\": date.getDate(), //日 \\n        \\\"h+\\\": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12,\\n        \\\"H+\\\": date.getHours(), //小时 \\n        \\\"m+\\\": date.getMinutes(), //分 \\n        \\\"s+\\\": date.getSeconds(), //秒 \\n        \\\"q+\\\": Math.floor((date.getMonth() + 3) / 3), //季度 \\n        \\\"S\\\": date.getMilliseconds() //毫秒 \\n    };\\n    if (/(y+)/.test(fmt)) {\\n        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \\\"\\\").substr(4 - RegExp.$1.length));\\n    }\\n    for (let k in o) {\\n        if (new RegExp(\\\"(\\\" + k + \\\")\\\").test(fmt)) {\\n            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\\\"00\\\" + o[k]).substr((\\\"\\\" + o[k]).length)));\\n        }\\n    }\\n    return fmt;\\n};\\n\\nfunction formatSize(size) {\\n    if (!size) {\\n        return '';\\n    }\\n    const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\\n    let i = 0;\\n    while (size >= 1024) {\\n        size /= 1024;\\n        i++;\\n    }\\n    size = i ? Number(size.toFixed(2)) : size;\\n    return `${size} ${units[i]}`;\\n}\\nvar tokenjson = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0];\\n\\nvar rescod = fetch('https://api.aliyundrive.com/adrive/v3/file/list', {\\n    headers: {\\n        'Content-Type': 'application/json',\\n        'authorization': getMyVar(\\\"aliaccessTk\\\", \\\"\\\")\\n    },\\n    body: '{\\\"drive_id\\\":\\\"' + drivid + '\\\",\\\"parent_file_id\\\":\\\"' + getResCode() + '\\\",\\\"limit\\\":100,\\\"image_thumbnail_process\\\":\\\"image/resize,w_160/format,jpeg\\\",\\\"image_url_process\\\":\\\"image\\\\/resize,w_1920/format,jpeg\\\",\\\"video_thumbnail_process\\\":\\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\\"order_by\\\":\\\"name\\\",\\\"order_direction\\\":\\\"ASC\\\"}',\\n    method: 'POST'\\n});\\n//log(rescod);\\nvar conts = JSON.parse(rescod).items;\\nvar tuisong = [];\\nvar dongtai = JSON.parse(fetch('hiker://page/selflazyurl', {})).rule.toString();\\nfor (var i in conts) {\\n\\n    var listyp = conts[i].type;\\n    if (listyp != 'folder') {\\n        var cate = conts[i].category;\\n        var fname = conts[i].name;\\n        if (cate == 'video') {\\n            var title = '📺' + conts[i].name;\\n        } else if (cate == 'doc') {\\n            var title = '📖' + conts[i].name;\\n        } else if (cate == 'image') {\\n            var title = '🖼' + conts[i].name;\\n        } else if (cate == 'zip') {\\n            var title = '📦' + conts[i].name;\\n        } else {\\n            var title = conts[i].name\\n        }\\n        d.push({\\n            title: title,\\n            url: $(conts[i].file_id).lazyRule((drivid, dongtai, cate, fname) => {\\n                eval(dongtai);\\n                return play\\n            }, drivid, dongtai, cate, fname),\\n            desc: formatDate(conts[i].updated_at) + '  ' + formatSize(conts[i].size),\\n            col_type: 'text_1'\\n\\n        });\\n        if (cate == 'video' || cate == 'audio') {\\n            tuisong.push(\\n                title.replace(/\\\\#/g, '_').replace(/\\\\$/g, '_') + '$' + cate + '|' + conts[i].file_id\\n            );\\n        }\\n    } else {\\n        d.push({\\n            title: '📂' + conts[i].name,\\n            url: $('hiker://empty' + conts[i].file_id).rule((drivid, pushname) => {\\n                eval(JSON.parse(fetch('hiker://page/selfruleloop', {})).rule);\\n            }, drivid, conts[i].name),\\n            col_type: 'flex_button'\\n        });\\n\\n    } //end if\\n\\n\\n}\\neval(JSON.parse(fetch('hiker://page/pushcode', {})).rule);\\n\\nsetHomeResult({\\n    data: d\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"自己动态解析\",\"path\":\"selflazyurl\",\"rule\":\"function accessTk() {\\n    let ntoken = [];\\n    var reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    let accessTk = \\\"\\\";\\n    let refresh = fetch('https://auth.aliyundrive.com/v2/account/token', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Referer': 'https://www.aliyundrive.com/'\\n        },\\n        body: '{\\\"refresh_token\\\":\\\"' + reftoken + '\\\",\\\"grant_type\\\":\\\"refresh_token\\\"}',\\n        method: 'POST'\\n    });\\n    ntoken.push(JSON.parse(refresh));\\n    if (!fileExist(\\\"hiker://files/rules/icy/icy-ali-token.json\\\") || refresh.length > 300) {\\n        writeFile(\\\"hiker://files/rules/icy/icy-ali-token.json\\\", JSON.stringify(ntoken));\\n    }\\n    //log(JSON.parse(refresh));    \\n    accessTk = JSON.parse(refresh).token_type + ' ' + JSON.parse(refresh).access_token;\\n    putMyVar(\\\"aliaccessTk\\\", accessTk);\\n    return accessTk\\n}\\nif (cate == 'video' || cate == 'audio') {\\n    //处理视频  \\n    var dfid = input;\\n    if (cate == 'video') {\\n        var json = fetch('https://api.aliyundrive.com/v2/file/get_video_preview_play_info', {\\n            headers: {\\n                'Content-Type': 'application/json',\\n                'Authorization': accessTk()\\n            },\\n            body: '{\\\"drive_id\\\":\\\"' + drivid + '\\\",\\\"category\\\":\\\"live_transcoding\\\",\\\"file_id\\\":\\\"' + input + '\\\",\\\"template_id\\\":\\\"\\\"}',\\n            method: 'POST'\\n        });\\n        //log(json);\\n\\n        var dfid = JSON.parse(json).file_id;\\n    }\\n    if (cate == 'video') {\\n        var body = '{\\\"expire_sec\\\":115200,\\\"file_id\\\":\\\"' + dfid + '\\\",\\\"drive_id\\\":\\\"' + drivid + '\\\"}';\\n\\n    } else {\\n        var body = '{\\\"file_id\\\":\\\"' + dfid + '\\\",\\\"get_audio_play_info\\\":true,\\\"drive_id\\\":\\\"' + drivid + '\\\"}';\\n    }\\n    var djson = fetch('https://api.aliyundrive.com/v2/file/get_download_url', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Authorization': accessTk()\\n        },\\n        body: body,\\n        method: 'POST'\\n    });\\n    var link = JSON.parse(djson).url;\\n\\n    var play = link + ';{Referer@https://www.aliyundrive.com/}';\\n\\n} else if (cate == 'image') {\\n    //处理文档\\n    var json = fetch('https://api.aliyundrive.com/v2/file/get_download_url', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Authorization': accessTk()\\n        },\\n        body: '{\\\"drive_id\\\":\\\"' + drivid + '\\\",\\\"expire_sec\\\": 115200,\\\"file_id\\\":\\\"' + input + '\\\"}',\\n        method: 'POST'\\n    });\\n\\n    //log(json);\\n    var loclink = JSON.parse(json).url;\\n\\n    //log(loclink);\\n    if (cate == 'image') {\\n        var play = 'pics://' + loclink + '@Referer=https://www.aliyundrive.com/';\\n    } else {\\n        var play = loclink + ';{Referer@https://www.aliyundrive.com/}';\\n    }\\n} else {\\n    var play = 'toast://该格式暂未支持，目前只支持查看视频和图片。'\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"推送代码\",\"path\":\"pushcode\",\"rule\":\"js:\\n//推送代码\\nlet push = JSON.stringify({\\n    \\\"name\\\":pushname,\\n    \\\"url\\\": tuisong.join('#'),\\n    \\\"default_drive_id\\\": drivid,\\n    \\\"refresh_token\\\": tokenjson.refresh_token\\n}).replace(/\\\\&/g, '＆＆');\\n//log(push);\\nlet tvip = getItem('hikertvboxset', '');\\n//log(tuisong.length);\\nif(tuisong.length>0){\\nd.unshift({\\n    title: \\\"推送当前页音视频到TVBox\\\",\\n    url: $(push).lazyRule((tvip) => {\\n        if (!tvip.includes(':997')) {\\n            return 'toast://IP为空或不正确，请先设置。'\\n        };\\n        var state = request(tvip + '/action', {\\n            headers: {\\n                'Content-Type': 'application/x-www-form-urlencoded',\\n                //'X-Requested-With': 'XMLHttpRequest',\\n                'Referer': tvip\\n            },\\n            timeout: 2000,\\n            body: 'do=push&url=' + input,\\n            method: 'POST'\\n        });\\n        log(state);\\n        if (state == 'ok') {\\n            return 'toast://推送成功，如果tvbox显示“没找到数据”可能是当前的jar不支持。';\\n        } else {\\n            return 'toast://推送失败'\\n        }\\n    }, tvip),\\n    col_type: \\\"scroll_button\\\"\\n});\\n}\\n//\"}]","proxy":"","icon":"https://gw.alicdn.com/imgextra/i3/O1CN01aj9rdD1GS0E8io11t_!!6000000000620-73-tps-16-16.ico"},{"title":"黑黑影视p🌚","author":"Blacker","version":0,"url":"hiker://empty$$$fypage$$$","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\n/**参数模板\n * 可以自行添加免嗅，注意搜索处也需要添加\n * 美剧虫: mjc_lazy\n * 极品影视网：jpys_lazy\n * 冷月: lengyue_lazy\n * 参数无先后关系\n * hikerHomePage({\n *   jpys_lazy : `@lazyRule=.js:`,\n *   mjc_lazy : '',\n *   lengyue_lazy : ''\n * })\n */\n\nvar lengyue_lazy=`@lazyRule=iframe&&src.js:if(/m3u8/.test(input)){input;}else{eval(fetch('hiker://files/rules/js/Messy-parsing.js'));var url= input.split('url=')[1]; player(url)}`;\n\n var jpys_lazy=`@lazyRule=.js:var get =fetch(input,{headers:{\"User-Agent\":PC_UA,\"Referer\":\"https://www.jpysvip.net\"}});var js = parseDomForHtml(get,\".myui-player__box&&script&&Html\");eval(js);var url=player_data.url;var fro=player_data.from;if(url.indexOf('html')>0){var jsUrl=getVar('jsUrl');eval(fetch('hiker://files/rules/js/Messy-parsing.js'));play(url);}else if(fro=='xinm3u8'){var play=fetch('https://jxn.dxsdkw.cn/x2.php?id='+url,{}).match(/url: \\'(.*?)\\'/)[1];play;}else{url}`;\n\n\neval(fetch('hiker://files/rules/black/blackmovie.js'));\nhikerHomePage({});","searchFind":"js:\n/**\n没想到会有这么多人支持黑黑影视，作为一个刚入门海阔不久的萌新，还是有些意外和惊喜的。\n在这表达一下对为海阔贡献代码的各位大佬得感谢。\n技术上感谢小棉袄，秃头编写代码.\n免嗅部分，感谢断佬提供的插件，这边也给大家提供了自己的接口，可以自己去换免嗅。\n然后搜索框的UI用的是墙老的，然后为了方便大家能够获取，把它单独放到了我的云。墙佬还是永远的神\n在代码方面也非常感谢，断老香老对我在写代码过程中遇到的问题进行指点\n在图标样式上，感谢糖果超甜，提供的UI图标\n在代码的编写过程中也参考了众多大佬曾经写过的源，辛苦各位大佬的付出，\n还有感谢七彩人生大佬提供的服务器\n*/\neval(fetch('hiker://files/rules/black/blackmovie.js'));\nsearchmovie({});","search_url":"hiker://empty$$$**$$$","titleColor":"#f47983","group":"2测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\neval(base64Decode('bGV0IGxvY2FsID1mZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zeW4udHh0JykgOwppZihsb2NhbD09dW5kZWZpbmVkfHxsb2NhbCE9JzAnKXsKICBsZXTCoGxvY2FsSHRtbMKgPcKgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svYmxhY2suanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRIdG1swqA9wqBmZXRjaCgnaHR0cDovLzgyLjE1Ni4yMjIuNzcvYmxhY2svYmxhY2suanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWbCoCghbG9jYWxIdG1swqB8fMKgbG9jYWxIdG1swqAhPcKgZ2l0SHRtbCnCoHsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3cml0ZUZpbGUoImhpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svYmxhY2suanMiLMKgZ2l0SHRtbCk7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxldMKgQl9wbGF5wqA9wqBmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9CX3BsYXkuanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfcGxhecKgPcKgZmV0Y2goJ2h0dHA6Ly84Mi4xNTYuMjIyLjc3L2JsYWNrL0JfcGxheS5qcycpOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZsKgKCFCX3BsYXnCoHx8wqBCX3BsYXnCoCE9wqBnaXRfcGxheSnCoHsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB3cml0ZUZpbGUoImhpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svQl9wbGF5LmpzIizCoGdpdF9wbGF5KTvCoArCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9CgrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBsZXTCoGJsYWNrbW92aWXCoD3CoGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2JsYWNrL2JsYWNrbW92aWUuanMnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfbW92aWXCoD3CoGZldGNoKCdodHRwOi8vODIuMTU2LjIyMi43Ny9ibGFjay9ibGFja21vdmllLmpzJyk7CsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmwqAoIWJsYWNrbW92aWXCoHx8wqBibGFja21vdmllwqAhPcKgZ2l0X21vdmllKcKgewrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9ibGFja21vdmllLmpzIizCoGdpdF9tb3ZpZSk7wqAKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgfQoKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqB0Y8KgPcKgZmV0Y2goJ2hpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svc2VhcmNoLmh0bWwnKTsKwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgbGV0wqBnaXRfdGPCoD3CoGZldGNoKCdodHRwOi8vODIuMTU2LjIyMi43Ny9ibGFjay9zZWFyY2guaHRtbCcpOwrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZsKgKCF0Y8KgfHzCoHRjwqAhPcKgZ2l0X3RjKcKgewrCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zZWFyY2guaHRtbCIswqBnaXRfdGMpO8KgCsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0KCiAgIHdyaXRlRmlsZSgiaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zeW4udHh0IiwgJzAnKTsKfQoKCnZhcsKgY29uZmlnwqA9wqBmZXRjaCgnaGlrZXI6Ly9maWxlcy9jYWNoZS9NeVBhcnNlU2V0Lmpzb24nKTsKaWYoY29uZmlnwqA9PcKgJyfCoHx8wqAhZmV0Y2goSlNPTi5wYXJzZShjb25maWcpLmNqKSl7CsKgwqDCoMKgdmFywqBqc1VybMKgPcKgJ2h0dHBzOi8vY29kZS5hbGl5dW4uY29tL0FJOTU3L0hpa2VyL3Jhdy9tYXN0ZXIvdi9DbG91ZFBhcnNlLVYyX0RuLmpzJzsKfWVsc2V7CsKgwqDCoMKgdmFywqBqc1VybMKgPcKgSlNPTi5wYXJzZShjb25maWcpLmNqOwp9CnB1dFZhcignanNVcmwnLGpzVXJsKTsKCgpsZXQgc2VhcmNoID1mZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9zZWFyY2guanMnKSA7CmlmKCFzZWFyY2gpewogZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9ibGFjay9ibGFja21vdmllLmpzJykuc3BsaXQoJy8vU0VBUkNIQUxMJylbMV0uc3BsaXQoJy8vU0VBUkNIQUxMJylbMF0pOwogICAgdmFyIGRhdGEgPWB2YXIgc2VhcmNoTW9kZT0wOyB2YXIgc2VhcmNoUGFnZU51bT0zO3ZhciB4NUhlaWdodCA9IDEwMDt2YXIgeXNTdHI9J+aegeWTgSblvbHmmKAmMTc5JztgCiAgIAogICB3cml0ZUZpbGUoImhpa2VyOi8vZmlsZXMvcnVsZXMvYmxhY2svc2VhcmNoLmpzIiwgZGF0YSk7Cn0='));"},{"firstHeader":"class","last_chapter_rule":"","title":"ikuuu签到","author":"香雅情&道长","version":14,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nString.prototype.replaceAll = function(old,new_str){\n        return this.split(old).join(new_str);\n};\nvar res = {};\nvar d = [];\nvar cookie='';\nvar html = '';\nvar domain='https://ikuuu.co';\nvar myset = getVar('ikuuu_settings','');\nputVar2(\"exteriorUrl\",myset);\nif(myset.length>0) {\n    var costom = JSON.parse(myset);\n    try {\n        var settings = fetch(costom.path) || '{}';\n        settings = JSON.parse(settings);\n        cookie = settings.cookie || '';\n    } catch (e) {\n        cookie = '';\n    }\n}\n\nfunction add0(m){return m<10?'0'+m:m }\nfunction formatDate(needTime){\n  \t //needTime是整数，否则要parseInt转换\n   \t   var time = new Date(needTime*1000);\n   \t   var y = time.getFullYear();\n  \t   var m = time.getMonth()+1;\n  \t   var d = time.getDate();\n  \t   var h = time.getHours();\n \t  var mm = time.getMinutes();\n \t  var s = time.getSeconds();\n  \t  return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s);\n}\n\nfunction get_subs(html){\n    let fn_str = parseDomForHtml(html,'body&&script,-2&&Html').match(/function[\\s\\S]*}/mg)[0];\n    // let keys = fn_str.match(/(?<=client == \\').*?(?=\\')/g);\n    let keys = fn_str.match(/client == \\'.*?(?=\\')/g); // 对内部split(\"'\")[1]\n    // let values = fn_str.match(/(?<=oneclickImport\\(\\'.*?\\'.*?\\').*?(?=\\'\\))/g);\n    let values = fn_str.match(/oneclickImport\\(\\'.*?\\'.*?\\'.*?(?=\\'\\))/g); // 对内部split(\"'\")[3]\n    let subs = {};\n    for(var i=0;i<keys.length;i++){\n        // subs[keys[i]] = values[i];\n        subs[keys[i].split(\"'\")[1]] = values[i].split(\"'\")[3];\n    }\n    return subs;\n}\nif(cookie.indexOf(\"Cookie@\")>-1){\ncookie=cookie.split(\"Cookie@\")[1].replace(\"}\",\"\").replaceAll(\"；； \",\";\");\n}\nfunction get_import(html,subs){\n    subs = subs||{};\n    let btns = parseDomForArray(html,'.buttons&&a');\n    // setError(btns.length);\n    for(var i=0;i<btns.length;i++){\n        try {\n            let other_text =  parseDomForHtml(btns[i],'a&&Text');\n            let other_link = parseDomForHtml(btns[i],'a&&data-clipboard-text');\n            if(other_link){\n                subs[other_text] = other_link;\n            }\n        }catch (e) {}\n    }\n    return subs\n}\n\nfunction render(){\n    var ti = parseDomForHtml(html,'.d-sm-none&&Text')+'\\n';\nfor (var i = 0;i<4;i++){\nvar txt=parseDomForHtml(html, \".main-content&&.row&&.card,\"+i+\"&&Text\");\nvar ti=ti+ txt +' '+'\\n';}\n//setError(ti);\nd.push({\n            title: ti,\n            col_type: 'long_text'\n});\n\nd.push({\n    title: '点击签到',\n    url:`hiker://empty@lazyRule=.js:var chec=JSON.parse(fetch('`+domain+`/user/checkin', {headers:{'User-Agent':MOBILE_UA,'Cookie':'`+cookie+`','X-Requested-With':'XMLHttpRequest','Origin':'`+domain+`'},body:'',method:'POST'})).msg;refreshPage();'toast://'+chec`,\n    col_type: 'text_2'\n});\n\nd.push({\n            title: '订阅列表',\n            url:'/',\n            col_type: 'text_center_1'\n});\nlet subs = get_subs(html);\n//setError('subs:'+JSON.stringify(subs));\n//log({'ikuuu-subs':subs});\nsubs = get_import(html,subs);\n//setError('subs:'+JSON.stringify(subs));\n\nfor(var key in subs){\n    d.push({\n            title: key,\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"订阅复制成功!\\n\"+value)\n                },subs[key]),\n            col_type: key.indexOf('复制')>-1?'text_center_1':'text_3'\n    });\n}\n}\n\nfunction render_free(){\n    d.push({\n            title: '““””<small><font color=\"#f4a460\">以下为长期免费优质节点(国内被墙,先飞再更)</font></small>',\n            url:'https://t.me/s/SSRSUB',\n            col_type: 'text_center_1'\n        });\n    let free_list = {\n        ss:'https://raw.githubusercontent.com/ssrsub/ssr/master/ss-sub',\n        v2ray:'https://raw.githubusercontent.com/ssrsub/ssr/master/v2ray',\n        ssr:'https://raw.githubusercontent.com/ssrsub/ssr/master/ssrsub',\n        Trojan:'https://raw.githubusercontent.com/ssrsub/ssr/master/trojan',\n        Surge:'https://raw.githubusercontent.com/ssrsub/ssr/master/Surge.conf',\n        Clash:'https://raw.githubusercontent.com/ssrsub/ssr/master/Clash.yml',\n    };\n    for(var key in free_list){\n        d.push({\n            title: '““””<small><font color=\"#8000ff\">'+key+'</font></small>',\n            // title: key,\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"订阅复制成功!\\n\"+value)\n                },free_list[key]),\n            col_type: 'text_2'\n    });\n    }\n}\n\nd.push({\n        desc:\"0\",\n        col_type:\"x5_webview_single\"\n});\n\nlet x5_url = 'hiker://empty@rule=js:putVar2(\"cKey\",\"DZexteriorQuote\");setResult([{url:\"file:///sdcard/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/newPlan.html\",desc:\"100%&&float\",col_type:\"x5_webview_single\"}])';\n\nd.push({\n    title: '设置',\n    col_type: 'icon_round_small_4',\n    pic_url:'https://z3.ax1x.com/2021/06/18/RpbLdO.png',\n    url: x5_url\n});\nlet is_login = false;\nif(cookie){\n    html =fetch(domain+'/user',{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":domain+\"/auth/login\",\"Cookie\":cookie}});\n    if(html.indexOf('退出登录')>-1){\n        is_login = true;\n        let exp_date=cookie.split(\"expire_in=\")[1].split(\";\")[0];\n       d.push({\n            title: '““””<small>本地cookie过期时间为:\\n'+formatDate(parseInt(exp_date))+'</small>',\n            url:domain+'/user',\n            col_type: 'text_center_1'\n        });\n        render();\n    }\n}\nif(!is_login){\n    d.push({\n            title: '““””<small>cookie未设置或者已过期，请重新设置cookie后再刷新\\n点击进入网页登录后用海阔查看源码\\n复制整个含cookie文本然后回来粘贴进设置</small>',\n            url:domain+'/user',\n            col_type: 'text_center_1'\n        });\n}\nrender_free();\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"2测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var newPlanUrls={};\nnewPlanUrls.localUrl = \"hiker://files/NewPlanConfigFile.json\";\nnewPlanUrls.newPlanJsUrl = \"hiker://files/rules/js/home1.9.js\"\nnewPlanUrls.htmlUrl = \"file:///sdcard/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/newPlan.html\";\n if(!fetch(newPlanUrls.newPlanJsUrl)){\nwriteFile(newPlanUrls.newPlanJsUrl,fetch(\"https://erp.scwinbao.com/hikerule/rulelist.json?id=841\"));\n}\n\nif(!fetch(newPlanUrls.htmlUrl)){\nwriteFile(newPlanUrls.htmlUrl,fetch(\"https://erp.scwinbao.com/hikerule/rulelist.json?id=866\"));\n}\n\nputVar2(\"newPlanUrls\",JSON.stringify(newPlanUrls));\nvar costom={\n    path:\"hiker://files/rules/ikuuu/settings.json\",\n    input:[\n        {\n            id:\"cookie\",\n            type:\"text\",\n            placeholder:\"cookie\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n        {\n            id:\"username\",\n            type:\"text\",\n            placeholder:\"用户名\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n        {\n            id:\"password\",\n            type:\"password\",\n            placeholder:\"密码\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n    ],\n    fill:true\n};\nputVar2(\"exteriorUrl\",JSON.stringify(costom)); //固定写法\nputVar2(\"ikuuu_settings\",JSON.stringify(costom)); //自定义写法","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Love直播","author":"小棉袄🌞","version":28,"type":"other","url":"hiker://empty#fyAll","col_type":"text_3","class_name":"收藏&设置","class_url":"&setting","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet data = [{\n    col_type: 'line'\n}]\nlet configPath = \"hiker://files/rules/live/config.json\";\nif (!fileExist(configPath)) {\n    writeFile(configPath, \"\");\n}\nlet config = fetch(configPath);\n\neval(JSON.parse(request(\"hiker://page/config\")).rule);\n\nfunction renderSetting() {\n    const d = [{\n        title: \"导入\",\n        col_type: \"input\",\n        desc: \"请输入直播源订阅地址\",\n        url: $.toString((rule) => {\n            if (input == \"\") {\n                return \"toast://不能为空\"\n            } else if (input.indexOf(\"http\") != 0 && input.indexOf(\"file\") != 0 && input.indexOf(\"hiker\") != 0) {\n                return \"toast://链接格式有误\"\n            } else {\n                return \"input://////请输入订阅标题.js:\" + $.toString((url, rule) => {\n                    eval(JSON.parse(request(\"hiker://page/config?rule=\" + rule)).rule);\n                    let config = getConfig();\n                    config.data.push({\n                        name: input,\n                        url: url\n                    });\n                    writeFile(\"hiker://files/rules/live/config.json\", JSON.stringify(config));\n                    refreshPage();\n                    return \"toast://已保存\";\n                }, input, rule)\n            }\n        }, MY_RULE.title)\n    }];\n\n    config = getConfig();\n    d.push({\n        title: \"““””<span style='color:#1aad19'>批量导入</span>\",\n        col_type: \"text_4\",\n        url: \"input://.js:\" + $.toString((rule) => {\n            eval(JSON.parse(request(\"hiker://page/batchIm?rule=\" + rule)).rule);\n            return batchImport(input, rule);\n        }, MY_RULE.title)\n    });\n    d.push({\n        title: \"““””<span style='color:#1aad19'>导出全部</span>\",\n        col_type: \"text_4\",\n        url: \"copy://\" + JSON.stringify(config)\n    });\n    d.push({\n        title: \"““””<span style='color:#1aad19'>编辑全部</span>\",\n        col_type: \"text_4\",\n        url: \"editFile://hiker://files/rules/live/config.json\"\n    });\n    d.push({\n        title: \"““””<span style='color:#1aad19'>使用说明</span>\",\n        col_type: \"text_4\",\n        url: \"confirm://顶部输入框输入订阅源的地址，然后点击导入按钮在弹窗里面输入订阅源标题保存即可增加一条订阅源。批量导入的格式形如点击“导出全部”按钮生成的数据格式，已存在的链接不会重复导入。.js:''\"\n    });\n    d.push({\n        col_type: \"blank_block\"\n    })\n\n    for (source of config.data) {\n        d.push({\n            title: source.name,\n            col_type: \"text_4\",\n            url: \"confirm://确认删除此订阅？.js:\" + $.toString((name) => {\n                let config = fetch(\"hiker://files/rules/live/config.json\");\n                if (config == \"\") {\n                    config = {\n                        data: [],\n                        version: 0\n                    }\n                } else {\n                    config = JSON.parse(config)\n                }\n                config.data = config.data.filter(i => i.name != name);\n\n                writeFile(\"hiker://files/rules/live/config.json\", JSON.stringify(config));\n                refreshPage();\n                return \"toast:已删除\";\n            }, source.name)\n        })\n    }\n    return d\n}\n\nfunction getReferer(url) {\n    if (url.indexOf(\"gitee\") > 0) {\n        return \"https://\" + url.split(\"://\")[1].split(\"/\")[0];\n    } else {\n        return null\n    }\n}\n\nfunction renderLiveData(url) {\n    try {\n        var txts = request(url, {\n                headers: {\n                    Referer: getReferer(url)\n                }\n            }).replace(/#EXTINF:-1 ,/g, '')\n            .replace(/#EXTINF:-1,/g, '')\n            .replace(/\\n#genre#/g, ',#genre#')\n            .replace(/#EXTINF:-1/g, '')\n            .replace(/group-title=\"/g, '')\n            .replace(/\\nhttp/g, ',http')\n            .replace(/=/g, '')\n            .replace(/，#/g, ',#')\n            .replace(/\",/g, '/')\n            .replace(/ /g, '')\n            .split('\\n');\n        const d1 = []\n        for (var i = 0; i < txts.length; i++) {\n            var r = {};\n            var j = txts[i].split(',');\n            if (txts[i].indexOf(\"#EXTINF\") == 0 &&\n                j.length == 3 && j[2].indexOf(\"http\") == 0) {\n                r.title = j[1].split('/')[j[0].split('/').length - 1];\n                r.url = j[2].replace(`\\n`, '').replace('\\r', '');\n                if (r.url.indexOf(\"http\") == 0) {\n                    r.url = r.url + \"#isVideo=true#\";\n                }\n                d1.push(r);\n                continue;\n            }\n\n            if (j.length < 2) {\n                continue;\n            }\n            r.title = j[0].split('/')[j[0].split('/').length - 1];\n            r.url = j[1].replace(`\\n`, '').replace('\\r', '');\n            if (r.url.indexOf(\"http\") == 0) {\n                r.url = r.url + \"#isVideo=true#\";\n            }\n            d1.push(r);\n        }\n        //多线路\n        const d2 = {}\n        for (let it of d1) {\n            if (d2[it.title] == null) {\n                d2[it.title] = []\n            }\n            d2[it.title].push(it.url)\n        }\n\n        for (let it of Object.keys(d2)) {\n            data.push({\n                title: it,\n                url: JSON.stringify({\n                    urls: d2[it]\n                })\n            })\n        }\n    } catch (e) {\n        data.push({\n            title: \"数据加载失败\",\n            desc: JSON.stringify(e),\n            col_type: \"text_1\"\n        })\n    }\n}\n\nif (config == \"\" || MY_URL.indexOf('setting') > 0) {\n    data = renderSetting();\n} else {\n    config = getConfig();\n    if (config.data.length <= 0) {\n        data = renderSetting();\n    } else {\n        let select = getVar(\"live-select\", config.data[0].name);\n        log(select)\n        let has = config.data.map(i => i.name).includes(select);\n        log(has)\n        if (!has) {\n            select = config.data[0].name;\n        }\n        data.push({\n            col_type: \"big_blank_block\"\n        })\n        for (source of config.data) {\n            data.push({\n                title: source.name == select ? \"““””<span style='color: #1aad19'>\" + select + \"</span>\" : source.name,\n                col_type: \"scroll_button\",\n                url: $().lazyRule((a) => {\n                    putVar(\"live-select\", a);\n                    refreshPage();\n                    return \"hiker://empty\"\n                }, source.name)\n            })\n        }\n\n        for (source of config.data) {\n            if (source.name == select) {\n                renderLiveData(source.url);\n                break\n            }\n        }\n    }\n}\nsetResult(data);","searchFind":"","search_url":"","titleColor":"","group":"2直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"加载数据\",\"path\":\"config\",\"rule\":\"function getConfig() {\\n    let config = fetch(\\\"hiker://files/rules/live/config.json\\\");\\n    if (config == \\\"\\\") {\\n        return {\\n            data: [],\\n            version: 0\\n        }\\n    } else {\\n        return JSON.parse(config)\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"batchIm\",\"rule\":\"function batchImport(input, rule) {\\n    input = input.trim();\\n    if (input.length < 3 || input[0] != \\\"{\\\") {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let im = JSON.parse(input);\\n    if (im.data == null || im.data.length < 1) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    eval(JSON.parse(request(\\\"hiker://page/config?rule=\\\" + rule)).rule);\\n    let config = getConfig();\\n    let count = 0;\\n    let all = config.data.map(it => it.url + \\\"&&&\\\").join();\\n    for (let i of im.data) {\\n        if (all.indexOf(i.url + \\\"&&&\\\") >= 0) {\\n            //重复的不要\\n            continue;\\n        }\\n        count++;\\n        config.data.push(i)\\n    }\\n    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n    refreshPage();\\n    return \\\"toast://已导入\\\" + count + \\\"条订阅源\\\";\\n}\"}]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fis4.mzstatic.com%2Fimage%2Fthumb%2FPurple3%2Fv4%2Fdf%2Ff6%2Fda%2Fdff6da83-47d7-9cb6-2398-1919c13837b4%2Fmzl.kgmnwodo.png%2F0x0ss-85.jpg&refer=http%3A%2F%2Fis4.mzstatic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638629349&t=2f6d967185fe2b9c54e8b230eb83e66c"},{"last_chapter_rule":"","title":"资源网","author":"道长&爱是用心","version":3,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"2网盘资源","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"evalPrivateJS('WJxUWKDa6wUuJqbGPrbqoLz/eC/0e7K1VMFGqushV+IjevDJA+N/zE7c+w0cwpsT0MU/u3MkO/+p3HwGqttxnSgS+wmKGahaGBBjMV4iEDgviN7+10OKrzbH9hDXHZMaUdH9rnWBi9fa2ckhOYFwBku0RsNNOe+reghRCJojZqs=')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"last_chapter_rule":"","title":"用心直播","author":"小棉袄🌞&Joker&爱是用心","version":0,"type":"live","url":"hiker://empty#fyAll","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet data = [],\n    configPath = \"hiker://files/rules/live/config.json\";\nif (!fileExist(configPath)) {\n    writeFile(configPath, \"\");\n}\nlet config = fetch(configPath),\n    renderSetting = $.require('hiker://page/renderSetting').renderSetting;\n\neval(JSON.parse(request(\"hiker://page/config\")).rule);\nURL = \"hiker://empty\" + getVar('set');\nif (config == \"\" || URL.indexOf('setting') > 0) {\n    data = renderSetting();\n} else {\n    config = getConfig();\n    if (config.data.length <= 0) {\n        data = renderSetting();\n    } else {\n        let select = getVar(\"live-select\", config.data[0].name);\n        let has = config.data.map(i => i.name).includes(select);\n        if (!has) {\n            select = config.data[0].name;\n        }\n\n        data.push({\n            title: '🔍',\n            desc: '请输入搜索关键词',\n            extra: {\n                defaultValue: getVar('search_key', ''),\n                onChange: 'putVar(\"search_key\",input)'\n            },\n            col_type: 'input',\n            url: $.toString(() => {\n                return 'hiker://search?rule=' + getMyVar('title') + '&s=' + getVar('search_key', '')\n            })\n        })\n\n        for (source of config.data) {\n            data.push({\n                title: source.name == select ? \"““””<span style='color: #19B89D'>\" + select + \"</span>\" : source.name,\n                col_type: \"scroll_button\",\n                url: $('#noLoading#').lazyRule((a) => {\n                    putVar(\"live-select\", a);\n                    putMyVar('selectGroup', '');\n                    refreshPage();\n                    return \"hiker://empty\"\n                }, source.name)\n            })\n        }\n        data.push({\n            title: \"设置\",\n            col_type: \"scroll_button\",\n            url: $(\"\").lazyRule(() => {\n                putVar(\"set\", '#setting');\n                refreshPage(false);\n                return \"hiker://empty\"\n            })\n        })\n        data.push({\n            col_type: 'line'\n        })\n        for (source of config.data) {\n            if (source.name == select) {\n                try {\n                    let items = $.require('hiker://page/renderData').renderLiveData(source.url);\n                    let groups = Object.keys(items);\n                    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n                    let selectGroup = getMyVar('selectGroup', groups[0]);\n                    if (selectGroup == \"\") selectGroup = groups[0];\n                    groups.forEach((group) => {\n                        if (group) {\n                            data.push({\n                                title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                                url: $('#noLoading#').lazyRule((group) => {\n                                    putMyVar('selectGroup', group);\n                                    refreshPage();\n                                    return 'hiker://empty'\n                                }, group),\n                                col_type: 'flex_button',\n                                extra: {\n                                    lineVisible: false\n                                }\n                            })\n                        }\n                    })\n                    for (let title in items[selectGroup]) {\n                        data.push({\n                            title: title,\n                            url: JSON.stringify({\n                                urls: items[selectGroup][title]\n                            }),\ncol_type: 'icon_2_round',\n                    img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n                        })\n                    }\n                } catch (e) {\n                    data.push({\n                        title: \"数据加载失败\",\n                        desc: JSON.stringify(e),\n                        col_type: \"text_1\"\n                    })\n                }\n                break;\n            }\n        }\n    }\n}\nsetResult(data);","searchFind":"js:\neval(JSON.parse(request(\"hiker://page/config\")).rule);\nlet config = getConfig();\nlet rules = config.data.map((source) => {\n    return {\n        title: source.name,\n        search_url: 'hiker://empty?key=**',\n        searchFind: 'js:' + $.toString((url, rule_title) => {\n            let d = [],\n                key = getParam('key');\n            let items = $.require('hiker://page/renderData?rule=' + rule_title).renderLiveData(url);\n            for (let group in items) {\n                for (let title in items[group]) {\n                    if (title.indexOf(key) >= 0 || title.toLowerCase().indexOf(key) >= 0) {\n                        d.push({\n                            title: title,\n                            url: JSON.stringify({\n                                urls: items[group][title]\n                            })\n                        })\n                    }\n                }\n            }\n            setResult(d);\n        }, source.url, getMyVar('title'))\n    };\n})\nsetResult([{\n    title: \"点我开始聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"key\"),\n    extra: {\n        rules: $.toString((rules) => {\n            return JSON.stringify(rules)\n        }, rules)\n    }\n}])","search_url":"hiker://empty?key=**","group":"3直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('title',MY_RULE.title);","pages":"[{\"col_type\":\"movie_3\",\"name\":\"加载数据\",\"path\":\"config\",\"rule\":\"function getConfig() {\\n    let config = fetch(\\\"hiker://files/rules/live/config.json\\\");\\n    if (config == \\\"\\\") {\\n        return {\\n            data: [],\\n            version: 0\\n        }\\n    } else {\\n        return JSON.parse(config)\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"batchIm\",\"rule\":\"function batchImport(input, rule) {\\n    input = input.trim();\\n    if (input.length < 3 || input[0] != \\\"{\\\") {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let im = JSON.parse(input);\\n    if (im.data == null || im.data.length < 1) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    eval(JSON.parse(request(\\\"hiker://page/config?rule=\\\" + rule)).rule);\\n    let config = getConfig();\\n    let count = 0;\\n    let all = config.data.map(it => it.url + \\\"&&&\\\").join();\\n    for (let i of im.data) {\\n        if (all.indexOf(i.url + \\\"&&&\\\") >= 0) {\\n            //重复的不要\\n            continue;\\n        }\\n        count++;\\n        config.data.push(i)\\n    }\\n    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n    refreshPage();\\n    return \\\"toast://已导入\\\" + count + \\\"条订阅源\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"直播数据\",\"path\":\"renderData\",\"rule\":\"function renderLiveData(url) {\\n    function getReferer(url) {\\n        if (url.indexOf(\\\"gitee\\\") > 0) {\\n            return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n        } else {\\n            return null\\n        }\\n    }\\n    var txts = fetchCache(url,24, {\\n            headers: {\\n                Referer: getReferer(url)\\n            }\\n        }).replace(/#EXTINF:-1 ,/g, '')\\n        .replace(/#EXTINF:-1,/g, '')\\n        .replace(/\\\\n#genre#/g, ',#genre#')\\n        .replace(/#EXTINF:-1/g, '')\\n        .replace(/group-title=\\\"/g, '')\\n        .replace(/\\\\nhttp/g, ',http')\\n        .replace(/=/g, '')\\n        .replace(/，#/g, ',#')\\n        .replace(/\\\",/g, '/')\\n        .replace(/ /g, '')\\n        .split('\\\\n');\\n    const d1 = []\\n    for (var i = 0; i < txts.length; i++) {\\n        var r = {};\\n        var j = txts[i].split(',');\\n        if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n            j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n            r.title = j[1].split('/')[j[0].split('/').length - 1];\\n            r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n            if (r.url.indexOf(\\\"http\\\") == 0) {\\n                r.url = r.url + \\\"#isVideo=true#\\\";\\n            }\\n            d1.push(r);\\n            continue;\\n        }\\n\\n        if (j.length < 2) {\\n            continue;\\n        }\\n        r.title = j[0].split('/')[j[0].split('/').length - 1];\\n        r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n        if (r.url.indexOf(\\\"http\\\") == 0) {\\n            r.url = r.url + \\\"#isVideo=true#\\\";\\n        }\\n        d1.push(r);\\n    }\\n    //多线路\\n    const d2 = {}\\n    for (let it of d1) {\\n        if (d2[it.title] == null) {\\n            d2[it.title] = []\\n        }\\n        d2[it.title].push(it.url)\\n    }\\n    return d2;\\n}\\n\\nfunction renderLiveData2(url) {\\n    function getReferer(url) {\\n        if (url.indexOf(\\\"gitee\\\") > 0) {\\n            return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n        } else {\\n            return null\\n        }\\n    }\\n    const m3u = fetchCache(url, 24, {\\n            headers: {\\n                Referer: getReferer(url)\\n            }\\n        }),\\n        mode = m3u.indexOf('#EXTM3U') == 0,\\n        re = mode ? /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\\\s]*)/g;\\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (/group-title=\\\"(.*?)\\\"/.exec(i[1]) || [null, ''])[1];\\n        } else if (i[3] == '#genre#') {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].trim() + '#isVideo=true#';\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title] = items[group][title].concat([url]);\\n            } else {\\n                items[group][title] = [url];\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = [url];\\n        };\\n    }\\n    return items;\\n}\\n\\n$.exports = {\\n    renderLiveData: renderLiveData2\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"设置页\",\"path\":\"renderSetting\",\"rule\":\"function renderSetting() {\\n    const d = [{\\n        title: \\\"导入\\\",\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入直播源订阅地址\\\",\\n        url: $.toString((rule) => {\\n            if (input == \\\"\\\") {\\n                return \\\"toast://不能为空\\\"\\n            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                return \\\"toast://链接格式有误\\\"\\n            } else {\\n                return \\\"input://////请输入订阅标题.js:\\\" + $.toString((url, rule) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/config?rule=\\\" + rule)).rule);\\n                    let config = getConfig();\\n                    config.data.push({\\n                        name: input,\\n                        url: url\\n                    });\\n                    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                    refreshPage();\\n                    return \\\"toast://已保存\\\";\\n                }, input, rule)\\n            }\\n        }, getMyVar('title'))\\n    }];\\n    eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n    config = getConfig();\\n    d.push({\\n        title: \\\"““””<span style='color:#19B89D'>批量导入</span>\\\",\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"input://.js:\\\" + $.toString((rule) => {\\n            eval(JSON.parse(request(\\\"hiker://page/batchIm?rule=\\\" + rule)).rule);\\n            return batchImport(input, rule);\\n        }, getMyVar('title'))\\n    });\\n    d.push({\\n        title: \\\"““””<span style='color:#19B89D'>导出全部</span>\\\",\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"copy://\\\" + JSON.stringify(config)\\n    });\\n    d.push({\\n        title: \\\"““””<span style='color:#19B89D'>编辑全部</span>\\\",\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"editFile://hiker://files/rules/live/config.json\\\"\\n    });\\n    d.push({\\n        title: \\\"““””<span style='color:#19B89D'>返回收藏</span>\\\",\\n        col_type: \\\"flex_button\\\",\\n        url: $(\\\"\\\").lazyRule(() => {\\n            putVar(\\\"set\\\", '');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        })\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n\\n    for (let source of config.data) {\\n        d.push({\\n            title: source.name,\\n            col_type: \\\"text_4\\\",\\n            url: \\\"confirm://确认删除此订阅？.js:\\\" + $.toString((name) => {\\n                let config = fetch(\\\"hiker://files/rules/live/config.json\\\");\\n                if (config == \\\"\\\") {\\n                    config = {\\n                        data: [],\\n                        version: 0\\n                    }\\n                } else {\\n                    config = JSON.parse(config)\\n                }\\n                config.data = config.data.filter(i => i.name != name);\\n\\n                writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                refreshPage();\\n                return \\\"toast:已删除\\\";\\n            }, source.name)\\n        })\\n    }\\n    return d\\n}\\n\\n$.exports = {\\n    renderSetting: renderSetting\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"last_chapter_rule":"","title":"精品美女吧","author":"xxs","version":2,"type":"cartoon","url":"hiker://empty##https://www.jpmn8.com##fypage","col_type":"pic_2_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"动漫","year_url":"","find_rule":"js:\nlet d = [];\nconst 分类颜色 = '#098AC1'\nvar 大类定位 = 'body&&.sitenav&&ul'\nvar 小类定位 = 'body&&li'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nconst page =MY_URL.split('##')[2]; //获取页码\nMY_URL = MY_URL.split('##')[1];\nlet true_url = getMyVar('html.url', MY_URL);\nif (page != 1) {\n    true_url = true_url + 'index' + page + '.html'; //拼接页码\n}\nvar html = fetch(true_url, {\n    method: 'GET',\n    headers: {\n        'content-type': 'application/json; charst=UTF-8'\n    },\n}) //我统一使用PC UA\nif(true_url.indexOf('category')!=-1){\n    大类定位='body&&.breadcrumb';\n  小类定位 = 'body&&a';\n}\n//获取列表 \nconst fl = parseDomForArray(html, 大类定位); //四大金刚(电影，综艺，动漫，剧集)\n\n\n\nlet init_cate = []\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\n// 取四金刚缓存\n\nconst cate_temp_json = getMyVar(\"html.fl\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n// 取其他分类列表缓存\n\nconst classify_json = getMyVar(\"html.classify\", JSON.stringify(init_cate))\nconst classify_temp = JSON.parse(classify_json)\nif (parseInt(page) === 1) {\n    fl.forEach((category, index) => {\n        //四大金刚的分类\t\n        let sub_classify = parseDomForArray(category, 小类定位);\n        sub_classify.forEach((item, key) => {\n            let title = parseDomForHtml(item, 分类标题)\n            d.push({\n                title: key.toString() === cate_temp[index] ? '““””<b><font color=' + 分类颜色 + '>' + title + ' </font></b>' : title,\n                url: $(parseDom(item, 分类链接)).lazyRule((params) => {\n                    params.cate_temp[params.index] = params.key.toString()\n                    putMyVar(\"html.fl\", JSON.stringify(params.cate_temp))\n                    putMyVar(\"html.url\", input)\n                    refreshPage(true)\n                    return \"hiker://empty\"\n                }, {\n                    cate_temp: cate_temp,\n                    index: index,\n                    key: key,\n                    page: page,\n                }),\n                col_type: 'scroll_button',\n            })\n        })\n        d.push({\n            col_type: \"blank_block\"\n        });\n    })\n\n}\n\nvar list = pdfa(html, 'body&&article');\nlog(list)\nif(list.length==0){\nlist = pdfa(html, 'body&&#list&&li');\n}\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),\n        img: pd(list[j], 'img&&src'),\n        url: 'hiker://page/detail?url=' + pd(list[j], 'a&&href').replace('play', 'detail'),\n\t     desc:pdfh(list[j],'.footer&&Text')\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nhtml = fetch(MY_URL, {});\n\nvar list = pdfa(html, '#main&&.entry-title');\nfor (var j in list) {\n    d.push({\n        \n       // img: pd(list[j], 'img&&src') + '@Referer=',\n        \n        title: pdfh(list[j], '.entry-title&&Text'),\n       // desc: pdfh(list[j], '.entry-date&&Text')+pdfh(list[j], '.entry-category&&Text'),\n        col_type:'text_1',\n        url: 'hiker://page/detail?url=' + pd(list[j], 'a&&href').replace('play', 'detail') \n    });\n}\nsetResult(d);","search_url":"https://www.jpmn8.com/page/fypage/?s=**","titleColor":"","group":"::🖼","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"detail\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\nvar html = fetch(MY_URL, {headers:{'content-type':'text/html;charst=UTF-8'}});\\nlet pics = [];\\nconst mUrl=MY_URL.match(/http.*?com/)[0];\\n\\n//const header = pdfh(html, '#main-content&&Html');\\nconst page_link = pdfa(html, '.content&&.pagination1&&a').length-1;\\nvar j =0;\\nwhile(j < page_link) {\\n    if (j != 0) {\\n\\t     page=j;\\n        url = MY_URL.replace('.html' ,'_'+page + '.html');\\n        html = fetch(url, {headers:{'content-type':'text/html;charst=UTF-8'}});\\n    }\\n var cts = pdfa(html, '.content&&img');\\n  \\n    for (var i in cts) {\\n\\t  if(pdfh(cts[i], 'img&&title')!=''){\\n        let pic =mUrl + pdfh(cts[i], 'img&&src');\\n        pics.push(pic)\\n\\t  }\\n    }  \\n  j++;\\n}\\ntitle = pdfh(html, '.article-title&&Text');\\n/**\\nif(pics.length==0){\\n  pics.push(pdfh(html,'.NewsContent&&img&&src'));\\n}\\n**/\\nd.push({\\n    img: pics[0] + '@Referer=',\\n    url: MY_URL,\\n    col_type: 'pic_2_card',\\n    desc: '0'\\n}, {\\n    title: title,\\n    url: 'pics://' + pics.join('&&'),\\n    col_type: 'text_1'\\n});\\nsetResult(d);\"}]","proxy":"","icon":"https://www.jpmn8.com/img/logo.gif"},{"last_chapter_rule":"","title":"PikPak","author":"Joe","version":0,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n$.require(\"hiker://page/hp\")","searchFind":"","search_url":"","group":"A网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.extend({\n    audio: [\"mp3\", \"flac\", \"ogg\", \"m4a\", \"wav\", \"opus\"],\n    movie: [\"mp4\", \"mkv\", \"avi\", \"mov\", \"rmvb\", \"webm\", \"flv\", \"m4v\", \"m3u8\", \"ts\"],\n    img: [\"jpg\", \"png\", \"jpeg\", \"gif\", \"svg\", \"raw\"]\n})\nconst {\n    refreshtoken\n} = $.require(\"hiker://page/code\")\nrefreshtoken()","pages":"[{\"col_type\":\"movie_3\",\"name\":\"code\",\"path\":\"code\",\"rule\":\"$.exports.login = function(username, password) {\\n    let res = JSON.parse(post(\\\"https://user.mypikpak.com/v1/auth/signin\\\", {\\n        body: {\\n            \\\"captcha_token\\\": \\\"\\\",\\n            \\\"client_id\\\": \\\"YNxT9w7GMdWvEOKa\\\",\\n            \\\"client_secret\\\": \\\"dbw2OtmVEeuUvIptb1Coyg\\\",\\n            \\\"username\\\": username,\\n            \\\"password\\\": password\\n        }\\n    }))\\n    if (res.access_token) {\\n        setItem(\\\"access_token\\\", res.access_token)\\n        setItem(\\\"refresh_token\\\", res.refresh_token)\\n        return true\\n    } else {\\n        log(res)\\n        return false\\n    }\\n}\\n$.exports.refreshtoken = function() {\\n    let res = JSON.parse(post(\\\"https://user.mypikpak.com/v1/auth/token\\\", {\\n        body: {\\n            \\\"client_id\\\": \\\"YNxT9w7GMdWvEOKa\\\",\\n            \\\"client_secret\\\": \\\"dbw2OtmVEeuUvIptb1Coyg\\\",\\n            \\\"grant_type\\\": \\\"refresh_token\\\",\\n            \\\"refresh_token\\\": getItem(\\\"refresh_token\\\")\\n        }\\n    }))\\n    if (res.access_token) {\\n        setItem(\\\"access_token\\\", res.access_token)\\n        setItem(\\\"refresh_token\\\", res.refresh_token)\\n        return true\\n    } else {\\n        log(res)\\n        return false\\n    }\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\"},{\"col_type\":\"text_2\",\"name\":\"settings\",\"path\":\"settings\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"账号(邮箱)\\\",\\n    url: $(getItem(\\\"username\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"username\\\", input)\\n        refreshPage()\\n    })\\n})\\nd.push({\\n    title: \\\"密码\\\",\\n    url: $(getItem(\\\"passwd\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"passwd\\\", input)\\n        refreshPage()\\n    })\\n})\\nd.push({\\n    title: \\\"登陆\\\",\\n    url: $().lazyRule(() => {\\n        const {\\n            login\\n        } = $.require(\\\"hiker://page/code\\\")\\n        if (login(getItem(\\\"username\\\"), getItem(\\\"passwd\\\"))) {\\n            back()\\n            return \\\"toast://登陆成功\\\"\\n        } else {\\n            return \\\"toast://登陆失败\\\"\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"hp\",\"path\":\"hp\",\"rule\":\"var d = [];\\nd.push({\\n    title: \\\"登陆\\\",\\n    col_type: \\\"text_2\\\",\\n    url: \\\"hiker://page/settings\\\"\\n})\\nif (getItem(\\\"access_token\\\", \\\"\\\") != \\\"\\\") {\\n    try {\\n        const {\\n            getHzm\\n        } = $.require(\\\"hiker://page/code\\\")\\n        let paths = storage0.getMyVar(\\\"paths\\\", [{\\n            \\\"id\\\": \\\"\\\",\\n            \\\"name\\\": \\\"家\\\"\\n        }])\\n        d.push({\\n            title: \\\"添加磁链\\\",\\n            col_type: \\\"text_2\\\",\\n            url: $(\\\"\\\", \\\"输入磁力链接\\\").input(() => {\\n                return \\\"pikpakapp://mypikpak.com/xpan/main_tab?tab=1&add_url=\\\" + encodeURIComponent(input)\\n            })\\n        })\\n        paths.forEach((item, i) => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((paths, i) => {\\n                    storage0.putMyVar(\\\"paths\\\", paths.slice(0, i + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, i)\\n            })\\n        })\\n        let list = JSON.parse(request(buildUrl(\\\"https://api-drive.mypikpak.com/drive/v1/files\\\", {\\n            \\\"parent_id\\\": paths[paths.length - 1].id,\\n            \\\"thumbnail_size\\\": \\\"SIZE_LARGE\\\",\\n            \\\"with_audit\\\": \\\"true\\\",\\n            \\\"limit\\\": \\\"1000\\\",\\n            \\\"filters\\\": '{\\\"phase\\\":{\\\"eq\\\":\\\"PHASE_TYPE_COMPLETE\\\"},\\\"trashed\\\":{\\\"eq\\\":false}}',\\n            \\\"page_token\\\": \\\"\\\"\\n        }), {\\n            headers: {\\n                \\\"Authorization\\\": \\\"Bearer \\\" + getItem(\\\"access_token\\\")\\n            }\\n        }))\\n        list.files.forEach(item => {\\n            if (item.kind == \\\"drive#folder\\\") {\\n                var urll = $().lazyRule((paths, item) => {\\n                    paths.push({\\n                        id: item.id,\\n                        name: item.name\\n                    })\\n                    storage0.putMyVar(\\\"paths\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, item)\\n            } else if ($.movie.includes(getHzm(item.name))) {\\n\\n                var ext = \\\"#isVideo=true#\\\"\\n            } else if ($.audio.includes(getHzm(item.name))) {\\n                var ext = \\\"#isMusic=true#\\\"\\n            } else if ($.img.includes(getHzm(item.name))) {\\n                var ext = \\\"#.jpg\\\"\\n            } else {\\n                var ext = \\\"\\\"\\n            }\\n            var url = $().lazyRule((item, ext) => {\\n                let u = `https://api-drive.mypikpak.com/drive/v1/files/${item.id}?_magic=2021&thumbnail_size=SIZE_LARGE`\\n                let res = JSON.parse(request(u, {\\n                    headers: {\\n                        \\\"Authorization\\\": \\\"Bearer \\\" + getItem(\\\"access_token\\\")\\n                    }\\n                }))\\n                for (item of res.medias) {\\n                    try {\\n                        let tmp = item.link\\n                        if (tmp.url) {\\n                            return tmp.url + ext\\n                            break\\n                        }\\n                    } catch (e) {}\\n                }\\n            }, item, ext)\\n            d.push({\\n                title: item.name,\\n                img: item.icon_link,\\n                col_type: \\\"avatar\\\",\\n                url: item.kind == \\\"drive#folder\\\" ? urll : url\\n            })\\n        })\\n    } catch (e) {\\n        toast(\\\"检测到错误\\\")\\n        log(e.message)\\n    }\\n}\\n\\nsetResult(d);\"}]","proxy":"","icon":"http://alist.joegu.tk/d/rules/PikPak_1.22.5.png"},{"last_chapter_rule":"","title":"蓝奏下载资源","author":"🐏&&小刘","version":22,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\neval(JSON.parse(request('hiker://page/classicHeader')).rule)\neval(JSON.parse(request('hiker://page/yemian')).rule)","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&.result&&.lanzou-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.lanzou-item-right-title&&Text'),\n        desc: pdfh(list[j], '.text-muted&&Text'),\n        content: pdfh(list[j], '.text-muted,1&&Text'),\n        url: $(pd(list[j], 'a&&href')).rule(() => {\n            var d = [];\n            eval(JSON.parse(request('hiker://page/lazy')).rule)\n            var html = getResCode();\n            var list = pdfa(html, 'body&&.url_adreess');\n            d.push({\n                title: \"<small>搜索内容来自蓝廋网页版。\\n若打不开链接或者提示分享已取消，请尝试其他的地址</small>\"\n            })\n\n            for (var j = 1; j < list.length; j++) {\n                var URL = pd(list[j], 'a&&href')\n                if (URL.indexOf(\"com/tp/\") == -1) {\n                    var URL = URL.replace(\"com/\", \"com/tp/\")\n                }\n\n                d.push({\n                    title: \"🔗  地址\" + j,          \n                    url: URL + lazy,\n                    col_type: \"avatar\",\n                })\n            }\n            setResult(d)\n        })\n    });\n}\nsetResult(d)","search_url":"https://www.6yit.com/disk-search?keyword=**","group":"A网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"rich_text","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"shuju\",\"rule\":\"var tabs = {\\n    \\\"data\\\": [\\n/////////软件///////\\n        {\\n            \\\"group\\\": \\\"常用软件\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"小棉袄软件系列\\\",\\n                    \\\"url\\\": \\\"https://haikuo.lanzoum.com/u/GoldRiver\\\",\\n                    \\\"pwd\\\": \\\"\\\"//要有密码填pwd这\\n                },\\n             {\\n                    \\\"name\\\": \\\"阿钊杂货\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoue.com/b02uiispc\\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },\\n{                     \\\"name\\\": \\\"TVBox\\\",                     \\\"url\\\": \\\"https://qiqi2020.lanzoub.com/b09svqv1c\\\",                     \\\"pwd\\\": \\\"666\\\"                 },\\n{\\n                    \\\"name\\\": \\\"太阳视界\\\",\\n                    \\\"url\\\": \\\"https://teyonds.lanzouw.com/b02jbs5ri\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"巧技影视\\\",\\n                    \\\"url\\\": \\\"https://wwa.lanzouw.com/b0d9k6lni\\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"影视合集\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/b481564/\\\",\\n                    \\\"pwd\\\": \\\"a08l\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"战机星球\\\",\\n                    \\\"url\\\": \\\"https://zhanji.lanzoui.com/b027vq3fa\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"飘雪资源\\\",\\n                    \\\"url\\\": \\\"https://lanzoux.com/u/aiwange?\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"线报坊合集\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoux.com/b60364\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"大肥合集\\\",\\n                    \\\"url\\\": \\\"https://pan.lanzoux.com/u/qianxun8\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"剪映[安卓]\\\",\\n                    \\\"url\\\": \\\"https://soso.lanzoui.com/b00okxhvg\\\",\\n                    \\\"pwd\\\": \\\"bs8c\\\"\\n                },\\n       {\\n                    \\\"name\\\": \\\"小戏软件]\\\",\\n                    \\\"url\\\": \\\"https://xzlzy.lanzouw.com/s/xzrjk？\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },         \\n                {\\n                    \\\"name\\\": \\\"影视软件APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f2x4syh\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }, \\n{\\n                    \\\"name\\\": \\\"影视APP②\\\",\\n                    \\\"url\\\": \\\"https://ufoclz.lanzoue.com/b00zboiwb\\\",\\n                    \\\"pwd\\\": \\\"2kzz\\\"\\n                },\\n                    \\n{\\n                    \\\"name\\\": \\\"TV集[安卓]①\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1944aj\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"TV集[安卓]②\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/b481565/\\\",\\n                    \\\"pwd\\\": \\\"gtrt\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"滴答清单\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/b00o1nuti\\\",\\n                    \\\"pwd\\\": \\\"hj7u\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"黑科技玩机]\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoux.com/b281858\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"视频剪辑[安卓]\\\",\\n                    \\\"url\\\": \\\"https://lanzoui.com/b04akxcyj\\\",\\n                    \\\"pwd\\\": \\\"e10j\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"软件合集②[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwl.lanzoue.com/b66477\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"软件合集③[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwl.lanzoue.com/b244238\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n        {\\n                    \\\"name\\\": \\\"软件合集④[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwl.lanzoue.com/u/aiwange\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },      \\n{\\n                    \\\"name\\\": \\\"魔法合集[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwz.lanzout.com/b010yadnc\\\",\\n                    \\\"pwd\\\": \\\"lr66\\\"\\n                },\\n\\n\\n            ]\\n        },\\n/////////常用工具///////\\n        {\\n            \\\"group\\\": \\\"常用工具\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"阿钊工具集[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoue.com/b02uij3tc\\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"安卓清理君\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/b00o2gnub#hb1t\\\",\\n                    \\\"pwd\\\": \\\"hb1t\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"Android CCLeaner\\\",\\n                    \\\"url\\\": \\\"https://soso.lanzoux.com/b00o6joqf\\\",\\n                    \\\"pwd\\\": \\\"cmre\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"虚拟机与框架软件集\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1fns7a\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"软件集\\\",\\n                    \\\"url\\\": \\\"https://ls125781003.lanzoum.com/b065lcl8j\\\",\\n                    \\\"pwd\\\": \\\"fv2t\\\"\\n                },{\\n                    \\\"name\\\": \\\"SonicePlus安卓\\\",\\n                    \\\"url\\\": \\\"https://sonice.lanzoum.com/b016sz1qd\\\",\\n                    \\\"pwd\\\": \\\"9ihe\\\"\\n                },{\\n                    \\\"name\\\": \\\"安卓网盘APP集\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1fl38j\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n             {\\n                    \\\"name\\\": \\\"下载器[全平台]\\\",\\n                    \\\"url\\\": \\\"https://wwd.lanzoum.com/b02un38xa\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }, {\\n                    \\\"name\\\": \\\"李跳跳软件集\\\",\\n                    \\\"url\\\": \\\"https://wwe.lanzoum.com/b01v0g3wj?w1\\\",\\n                    \\\"pwd\\\": \\\"1233\\\"\\n                 }, {\\n                    \\\"name\\\": \\\"李跳跳规则集\\\",\\n                    \\\"url\\\": \\\"https://wwp.lanzoum.com/b01vd0mfi?w1\\\",\\n                    \\\"pwd\\\": \\\"1233\\\"\\n                 },{\\n                    \\\"name\\\": \\\"奇妙搜索[安卓官版]\\\",\\n                    \\\"url\\\": \\\"https://magicalstory.lanzoum.com/s/magicalsearch?w1\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                 },{\\n                    \\\"name\\\": \\\"解压缩安卓软件集\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1bgvje\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"软件合集①[PC]\\\",\\n                    \\\"url\\\": \\\"https://lanzoux.com/u/ha16888?\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"BT下载工具[PC]\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1awgqb\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n         {\\n                    \\\"name\\\": \\\"IDM[PC]\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f3ahu0b\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"idm魔改增强版[安卓]\\\",\\n                    \\\"url\\\": \\\"https://naws.lanzoum.com/b00nex2wf\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"WIFI万能钥匙[安卓]\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1f1t5c\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"DieHeart.\\\",\\n                    \\\"url\\\": \\\"https://www.lanzouv.com/b05f9wyf\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"沙盘[PC]\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1ajzef\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n            ]\\n        },\\n/////////阅读///////\\n        {\\n            \\\"group\\\": \\\"阅读\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"阿钊阅读集[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoue.com/b02uipg8f\\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"阅读3.0测试版\\\",\\n                    \\\"url\\\": \\\"https://kunfei.lanzoum.com/b0f810h4b\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"阅读3.0乌云替换净化\\\",\\n                    \\\"url\\\": \\\"https://wwi.lanzoum.com/b0bw8jwoh\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }, {\\n                    \\\"name\\\": \\\"阅读3.0书源\\\",\\n                    \\\"url\\\": \\\"https://ls125781003.lanzoum.com/b066gazed\\\",\\n                    \\\"pwd\\\": \\\"8u15\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"阅读合集[安卓]①\\\",\\n                    \\\"url\\\": \\\"https://wwa.lanzoui.com/b04bryj3e\\\",\\n                    \\\"pwd\\\": \\\"i02r\\\"\\n                },\\n              {\\n                    \\\"name\\\": \\\"阅读合集［安卓］②\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1cdr9i\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"漫画 动漫\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoui.com/b04b0nxna\\\",\\n                    \\\"pwd\\\": \\\"4uv4\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"听书合集[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoui.com/b04b7skja\\\",\\n                    \\\"pwd\\\": \\\"8ltl\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"ZEKER新闻\\\",\\n                    \\\"url\\\": \\\"https://soso.lanzoux.com/b00o6js5i\\\",\\n                    \\\"pwd\\\": \\\"eb5v\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"QDreader内置插件版\\\",\\n                    \\\"url\\\": \\\"https://xihan.lanzoum.com/b0413c6he\\\",\\n                    \\\"pwd\\\": \\\"xihan\\\"\\n                },\\n            ]\\n        },\\n/////////听书///////\\n        {\\n            \\\"group\\\": \\\"音乐软件\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"阿钊音乐集\\\",\\n                    \\\"url\\\": \\\"https://wwx.lanzoue.com/b02uiy0uf\\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },\\n\\n{\\n                    \\\"name\\\": \\\"歌词适配[安卓]\\\",\\n                    \\\"url\\\": \\\"https://gcsp.lanzoum.com/b0e895h2b\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"卡音[安卓]\\\",\\n                    \\\"url\\\": \\\"https://zhoshuangquan.lanzoum.com/b015p86wd\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"听下音乐[安卓]\\\",\\n                    \\\"url\\\": \\\"https://bgg.lanzoum.com/b02bjj8pa\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"悦音[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwr.lanzoum.com/b02ie3p0d\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"全球收音机\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/b00o1ucxg\\\",\\n                    \\\"pwd\\\": \\\"az0j\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"soul音[安卓]\\\",\\n                    \\\"url\\\": \\\"https://wwc.lanzoum.com/b03d75wvc\\\",\\n                    \\\"pwd\\\": \\\"1314\\\"\\n                },{\\n                    \\\"name\\\": \\\"魔音[安卓]激活码1107\\\",\\n                    \\\"url\\\": \\\"https://wwu.lanzoum.com/b00p12xli\\\",\\n                    \\\"pwd\\\": \\\"3ldx\\\"\\n                },{\\n                    \\\"name\\\": \\\"魔音[PC]\\\",\\n                    \\\"url\\\": \\\"https://wwu.lanzoum.com/b00oylyti\\\",\\n                    \\\"pwd\\\": \\\"d22l\\\"\\n                },{\\n                    \\\"name\\\": \\\"洛雪音乐助手[全平台]\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoum.com/b906260/\\\",\\n                    \\\"pwd\\\": \\\"glqw\\\"\\n                },{\\n                    \\\"name\\\": \\\"LISTEN1[安卓]\\\",\\n                    \\\"url\\\": \\\"https://yujiangqaq.lanzoum.com/b0104q89e\\\",\\n                    \\\"pwd\\\": \\\"listen1\\\"\\n                },{\\n                    \\\"name\\\": \\\"Cimoc[安卓]\\\",\\n                    \\\"url\\\": \\\"https://haleydu.lanzoum.com/b0drmjgib\\\",\\n                    \\\"pwd\\\": \\\"1234\\\"\\n                },\\n\\n\\n            ]\\n        },\\n\\n/////////播放器///////\\n        {\\n            \\\"group\\\": \\\"播放器\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"MX player[安卓]\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f19eo3c\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"Reex本地播放器[安卓]密码qazw\\\",\\n                    \\\"url\\\": \\\"https://wwe.lanzoum.com/b01np165c\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"播放器安卓集\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1gvyqj\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"播放器winPC集\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1k59qh\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"B站APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f1gksne\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"网易云音乐[安卓]内置模块版\\\",\\n                    \\\"url\\\": \\\"https://wwu.lanzoum.com/b0crkhyzg\\\",\\n                    \\\"pwd\\\": \\\"3qvw\\\"\\n                },{\\n                    \\\"name\\\": \\\"网易云音乐APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f3qdjfc\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"酷我音乐APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f3nm6rc\\\",\\n                    \\\"pwd\\\": \\\"4230\\\"\\n                },{\\n                    \\\"name\\\": \\\"油管APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f2lkrab\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n            ]\\n        },\\n /////////浏览器///////\\n        {\\n            \\\"group\\\": \\\"浏览器\\\",\\n            \\\"options\\\": [\\n                {\\n                    \\\"name\\\": \\\"浏览器APP合集①\\\",\\n                    \\\"url\\\": \\\"https://coje-he.lanzoum.com/b00zdwqqd\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"浏览器APP合集②\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f24u4de\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"WebKit浏览器APP\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzoum.com/b0f2r0aoj\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },{\\n                    \\\"name\\\": \\\"土狗浏览器[安卓]\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoui.com/s/tgllq\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n\\n            ]\\n        },\\n////////////////\\n/////////游戏///////\\n        {\\n            \\\"group\\\": \\\"游戏合集\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"游戏合集①[安卓]\\\",\\n                    \\\"url\\\": \\\"https://lanzoux.com/b133841/\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"游戏合集②[安卓]\\\",\\n                    \\\"url\\\": \\\"http://pan.lanzoui.com/u/%E5%BD%AA%E7%85%8Cqq1846055318\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n{\\n                    \\\"name\\\": \\\"小银合集[安卓]\\\",\\n                    \\\"url\\\": \\\"https://lanzoux.com/u/jiek?r\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n\\n\\n            ]\\n        }\\n////////////////\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"获取头部\",\"path\":\"classicHeader\",\"rule\":\"var d = []\\nif (MY_PAGE == '1') {\\n    eval(JSON.parse(request('hiker://page/ss')).rule)\\n}\\neval(JSON.parse(request('hiker://page/shuju')).rule)\\n\\nvar lists = tabs.data\\nfunction setTabs(lists, vari) {\\n    for (var i = 0; i < lists.length; i++) {\\n        d.push({\\n            title: getMyVar(vari, '0') == i ? '““' + '⏳ ' + lists[i].group + '””' : lists[i].group,\\n            url: $(\\\"hiker://empty\\\").lazyRule((vari, i) => {\\n                putMyVar(vari, i);\\n                putMyVar(\\\"tabsurl\\\", i);\\n                putMyVar('shsort', '1')\\n                putMyVar('sh', i)\\n                putMyVar(\\\"varil\\\", \\\"0\\\");\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, vari, i),\\n            col_type: 'scroll_button',\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    if (lists.length != '') {\\n        var list = lists[index].options;\\n        for (var j = 0; j < list.length; j++) {\\n            var titile = list[j].name\\n            var listsurl = list[j].url\\n            var listspwd = list[j].pwd\\n            d.push({\\n                title: getMyVar(\\\"varil\\\", '0') == j ? '““' + '⏳ ' + titile + '””' : titile,\\n                url: $(\\\"#noLoading#\\\").lazyRule((listsurl, listspwd, j) => {\\n                    putMyVar('shsort', '0')\\n                    putMyVar(\\\"varil\\\", j);\\n                    putMyVar(\\\"listsurl\\\", listsurl);\\n                    putMyVar(\\\"listspwd\\\", listspwd);\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, listsurl, listspwd, j),\\n            //     col_type: 'scroll_button',\\n                col_type: 'flex_button',\\n            });\\n        }\\n    }\\n}\\n\\nif (MY_PAGE == '1') {\\n    setTabs(lists, MY_URL);\\n    d.push({\\n        col_type: 'line'\\n    })\\n    setLists(lists, getMyVar(MY_URL, '0'));\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\n\\n//URL\\nif (getMyVar('shsort') == \\\"1\\\") {\\n    var URL = lists[getMyVar('sh', \\\"0\\\")].options[0].url\\n    var pwd = lists[getMyVar('sh', \\\"0\\\")].options[0].pwd\\n} else {\\n    var URL = getMyVar(\\\"listsurl\\\", lists[0].options[0].url)\\n    var pwd = getMyVar(\\\"listspwd\\\", lists[0].options[0].pwd);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"cookie\",\"path\":\"cookie\",\"rule\":\"function getJson(url, pwd, trurl) {\\n    let html = request(url);\\n    try {\\n        var ico = html.match(/background:url\\\\((.*?)'/)[1];\\n    } catch (e) {}\\n    putMyVar(\\\"ico\\\", ico);\\n    putMyVar(\\\"html\\\", html);\\n    eval(html.match(/var pgs;([\\\\s\\\\S]*?pgs.+;)/)[1]);\\n    eval('var body =' + html.match(/data :([\\\\s\\\\S]*?\\\\})/)[1]);\\n    return JSON.parse(post(trurl + '/filemoreajax.php', {\\n        body: body\\n    })).text;\\n}\\nvar trurl = URL.match(/http.*?com/);\\nvar list = getJson(URL, pwd, trurl);\\n\\n//感谢墙佬代码\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"ss\",\"rule\":\"d.push({\\n    url: $.toString(() => {\\n      if (input.trim()) {\\n         if (/http|https/.test(input)) {\\n            var link = 'hiker://empty##fypage$$$' + input;\\n            return $(link).rule(() => {\\n                var d = []\\n                //var ssurl = MY_URL.split(\\\"$$$\\\")[1].match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n\\t\\t\\t\\tvar ssurl = MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n                var sspwd = MY_URL.split(\\\"密码:\\\")[1]\\n                putMyVar(\\\"listsurl\\\", ssurl);\\n                putMyVar(\\\"listspwd\\\", sspwd);\\n                var URL = getMyVar(\\\"listsurl\\\", \\\"\\\");\\n                var pwd = getMyVar(\\\"listspwd\\\", \\\"\\\");\\n                eval(JSON.parse(request('hiker://page/yemian')).rule)\\n            })\\n        }else{\\n       return \\\"hiker://search?rule=\\\" + MY_RULE.title + \\\"&s=\\\"+input\\n        \\n        }\\n        }\\n         else {\\n            return 'toast://请输入网盘链接';\\n        }\\n    }),\\n    title: '进入',\\n    desc: \\\"支持输入云盘分享链接\\\",\\n    col_type: \\\"input\\\"\\n});\"},{\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n       try {\\n          var html = request(input);\\n         // log(input)\\n                        var url = 'https://developer.lanzoug.com/file/' + html.match(/'(\\\\?.*?)'/)[1]\\n                       // log(url)\\n                        var jsurl = request(url, {\\n                            redirect: false,\\n                            withHeaders: true\\n                        })\\n                        var jsurl = jsurl.match(/href=.\\\"(.*?)\\\"/)[1]\\n                        return \\\"download://\\\" + jsurl //1、建议使用第三方下载器\\n                        // return jsurl   //2、建议内置下载器使用\\n                    } catch (e) {\\n                        log(\\\"转跳原站\\\")\\n                        log(input)\\n                        return input\\n                    }\\n                })\"},{\"col_type\":\"movie_3\",\"name\":\"网盘\",\"path\":\"yemian\",\"rule\":\"setPageTitle('网盘')\\neval(JSON.parse(request('hiker://page/lazy')).rule)\\n\\n\\n\\ntry {\\n    eval(JSON.parse(request('hiker://page/cookie')).rule)\\n    if (MY_PAGE == '1') {\\n        try {\\n            var wlist = parseDomForArray(getMyVar(\\\"html\\\"), '#folder&&a');\\n            for (var j in wlist) {\\n                var url = 'hiker://empty#fypage$$$' + trurl + wlist[j].match(/href=\\\"(.*?)\\\"/)[1];\\n                d.push({\\n                    img: 'https://lanmeiguojiang.com/tubiao/more/37.png',\\n                    title: parseDomForHtml(wlist[j], '.filename&&Text').replace(/公众号.+/g, \\\"\\\"),\\n                    col_type: \\\"avatar\\\",\\n                    url: $(url).rule(() => {\\n                        //log(MY_URL)\\n                        var d = []\\n                        var ssurl = MY_URL.split(\\\"$$$\\\")[1].match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n                        var sspwd = MY_URL.split(\\\"密码:\\\")[1]\\n                        putMyVar(\\\"listsurl\\\", ssurl);\\n                        putMyVar(\\\"listspwd\\\", sspwd);\\n                        var URL = getMyVar(\\\"listsurl\\\", \\\"\\\");\\n                        var pwd = getMyVar(\\\"listspwd\\\", \\\"\\\");\\n                        eval(JSON.parse(request('hiker://page/yemian')).rule)\\n                    }),\\n                });\\n                 d.push({\\n        col_type: 'line'\\n    })\\n            }\\n        } catch (e) {}\\n        try {\\n            //if (URL == lists[0].options[0].url) {\\n            if (/haikuo/.test(URL)) {\\n                d.push({\\n                    title: \\\"<center>\\\" + '<span style=\\\"color: #FF4500\\\">公众号：新方圆小棉袄！<small>(点击复制)</small></span></center>',\\n                    url: 'copy://新方圆小棉袄.js:\\\"toast://已复制，请到微信关注小棉袄公众号\\\"',\\n                    col_type: \\\"avatar\\\",\\n                    img: \\\"http://pic.downcc.com/upload/2021-4/2021481415301369.png\\\"\\n                })\\n                d.push({\\n                    title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #FF4500\\\">重要更新内容见公众号：新方圆小棉袄！\\\\n别忘了点赞、在看、投币三连！</span></small></center>',\\n                    url: 'https://mp.weixin.qq.com/s/ukMZ4D6eRm-OCAR1G8PaoQ',\\n                    col_type: 'text_center_1'\\n                });\\n                for (var j = 0; j < 5; j++) {\\n                    d.push({\\n                        col_type: 'line'\\n                    })\\n                }\\n            }\\n        } catch (e) {}\\n    }\\n\\n   \\n    for (var i in list) {\\n        if (list[i].id != undefined) {\\n        \\tvar url =trurl + '/tp/' + list[i].id\\n            if (list[i].ico != undefined) {\\n                var ico = getMyVar(\\\"ico\\\") + list[i].ico\\n            } else {\\n                var ico = \\\"https://lanmeiguojiang.com/tubiao/messy/71.svg\\\"\\n            }\\n            d.push({\\n                title: list[i].name_all,\\n                img: ico,                \\n                url:url+lazy, \\n                col_type: \\\"avatar\\\",\\n            });\\n            d.push({\\n            title:\\\"★发布于★\\\"+list[i].time,\\n          //  url:\\\"toast://发布于\\\"+list[i].time, \\n            url:url+lazy,\\n            col_type: \\\"text_1\\\",\\n          // col_type: \\\"avatar\\\",\\n            \\n            });\\n                d.push({\\n        col_type: 'line'\\n    })\\n        }\\n    }\\n    if (list == \\\"no file\\\") {\\n        d.push({\\n            title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #999999\\\">～～～我是有底线的～～～</span></small></center>',\\n            url: 'toast://别点了，我真的有底线！',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n    \\n      if (list == \\\"\\\") {\\n            d.push({\\n            title: \\\"““””<center>\\\" + '<span style=\\\"color: #FF4500\\\">没有获取到数据。！<small>(点击进原网页)</small></span></center>',\\n           //title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #999999\\\">没有获取到数据。（点击进原网页）</span></small></center>',\\n            url: URL,\\n            col_type: 'text_center_1'\\n        }); \\n    \\n     }\\n} catch (e) {\\n\\tif (/lanzou/.test(MY_URL)) {\\n\\t\\tvar da=MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n\\t\\tif(da.indexOf(\\\"com/tp/\\\")==-1){  \\n\\t\\tvar da=da.replace(\\\"com/\\\",\\\"com/tp/\\\")\\n\\t\\t}\\n\\t\\td.push({\\n\\t\\t\\ttitle: \\\"🔗\\\"+da,\\n\\t\\t\\turl: da+lazy,\\n\\t\\t\\tcol_type: \\\"text_1\\\",\\t\\t\\t\\n    });\\t\\n\\t\\t}else{\\n    d.push({\\n        title: \\\"没有获取到云盘信息，请确认网盘链接是否正确！\\\",\\n        url: 'toast://真的没有获取到~~',\\n        col_type: 'text_center_1'\\n    });\\n    if (/http|https/.test(MY_URL)) {\\n       var url = MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n    } else {\\n        var url = 'toast://好像不是个链接！'\\n    }\\n    d.push({\\n        title: \\\"点击网页查看。你输入的地址：\\\\n\\\" + MY_URL.split(\\\"$$$\\\")[1],\\n        url: url,\\n        col_type: 'text_1'\\n    });\\n    clearMyVar(\\\"listsurl\\\");\\n    clearMyVar(\\\"listspwd\\\");\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://img1.ali213.net/shouyou/cover/8/10257735.jpg"},{"last_chapter_rule":"","title":"三角体盘搜","author":"MrFly","version":3,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.ood.one\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"","search_url":"","group":"A网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://dalao.ru/favicon.ico"},{"last_chapter_rule":"","title":"星火资源[QQ文档]","author":"MrFly","version":1,"type":"all","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst categoryList = [\n  { name: '影视音乐', val: 'tab=ppx5bp&subId=ppx5bp&startrow=11' },\n  { name: '电视剧,纪录片', val: 'tab=qvnx1e&subId=qvnx1e&startrow=10' },\n  { name: '动漫漫画', val: 'tab=kwi9g7&subId=kwi9g7&startrow=11' },\n  { name: '小说.电子书.图片', val: 'tab=1nylx9&subId=1nylx9&startrow=11' },\n  { name: '教程.课程.软件', val: 'tab=BB08J2&subId=BB08J2&startrow=11' },\n];\nconst rendererFilter = function(d, data, key, cb){\n  const primaryColor = '#f47983';\n  if(!data || !data.length || data.length == 1) {\n\treturn false;\n  }\n  data.forEach(item => {\n\tvar title = item.val == getVar(key) ? \"““””<b>\"+'<span style=\"color: '+ primaryColor +'\">⭐ '+item.name+'</span></b>' : item.name;\n\td.push({\n\t  title: title,\n\t  url: $(\"#noLoading#\").lazyRule((key, val, cb)=>{\n\t\tputVar(key,val);\n\t\tif(cb) {\n\t\t  cb();\n\t\t}\n\t\trefreshPage(false);\n\t\treturn \"hiker://empty\"\n\t  }, key, item.val, cb),\n\t  col_type:'scroll_button'\n\t})\n  })\n  d.push({\n\tcol_type: \"blank_block\"\n  });\n}\n\nvar d = [];\nlet padId = '300000000$TzIVdaOubWOP';\nlet tab = getVar('icy_qq_tab', '') || this.categoryList[0].val;\nconst api = 'https://docs.qq.com/dop-api/get/sheet?'+tab+'&padId='+padId+'&outformat=1';\n\nthis.rendererFilter(d, this.categoryList, 'icy_qq_tab', () => {\n  putVar('icy_qq_subtab', '');\n});\nconst _res = fetch(api);\nlet res = JSON.parse(_res.replace(/\"(\\d+)\"/g, '\"qq_$1\"'));\nlet _items = res.data.initialAttributedText.text[0][0][0].c[1];\nlet items = [];\nObject.keys(_items).forEach(function(key){\n  if(_items[key].qq_2 instanceof Array && typeof _items[key].qq_2[1] == 'string' && !!_items[key].qq_2[1].trim() && _items[key].qq_2[1].trim().length > 1) {\n\tif(_items[key].qq_2[1].length < 2) {\n\t  log(_items[key].qq_2[1])\n\t}\n\titems.push(_items[key].qq_2)\n\n  }\n});\nlet _subcats = new Set();\nlet _data = [];\nfor(let i = 0; i< items.length; i += 3) {\n  let cat = items[i] ? items[i][1] : '';\n  let title = items[i+1] ? items[i+1][1] : '';\n  let url = items[i+2] ? items[i+2][1] : '';\n  if(title && url) {\n\t_subcats.add(cat);\n\t_data.push({\n\t  title: title,\n\t  desc: cat,\n\t  url: 'hiker://page/detail?rule=云盘汇影&url='+url,\n\t  col_type: 'text_1'\n\t})\n  }\n}\nlet subcats =  [{name: '全部', val: ''}].concat(Array.from(_subcats).map(item => {return {name: item, val: item}}));\nlet subtab = getVar('icy_qq_subtab', subcats[0].val);\nlet data = _data.filter(item => subtab ? item.desc == subtab : item)\nthis.rendererFilter(d, subcats.map(item => {\n  let itemData = _data.filter(_item => item.val ? _item.desc == item.val : _item);\n  item.name += ' ('+itemData.length+')'; \n  return item;\n}), 'icy_qq_subtab');\nd = d.concat(data);\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"A网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"#f47983"},{"last_chapter_rule":"","title":"学搜搜.度盘","author":"小棉袄🌞","version":6,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"宁可少字，不要错字。\",\n    col_type: \"input\"\n}])","searchFind":".search&&li;a&&Text;a&&href;.summary&&Text;*;*","search_url":"https://www.xuesousou.com/search?q=**&page=fypage","group":"A网盘","detail_col_type":"rich_text","detail_find_rule":"js:\nvar list = pdfh(getResCode(), \"body&&.content-hide-tips&&i&&div&&Html\");\nvar d = [{\n    title: list\n}];\nlet pwd = null;\ntry {\n    if (list.includes(\"提取码：\")) {\n        pwd = list.split(\"提取码：\")[1].substring(0, 4)\n    } else if (list.includes(\"密码：\")) {\n        pwd = list.split(\"密码：\")[1].substring(0, 4)\n    }\n} catch (e) {}\nif (pwd) {\n    d.push({\n        title: \"复制密码：\" + pwd,\n        url: \"copy://\" + pwd,\n        col_type: \"text_2\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n}\nsetResult(d)","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"YYDS影视","author":"MrFly","version":4,"type":"other","url":"hiker://empty?category_id=fyclass&&page=fypage","col_type":"movie_1_left_pic","class_name":"首页&热门精选&电影&剧集&动画&综艺&纪录片&日韩剧&欧美剧&恐怖&漫威&DC","class_url":"-1&0&3&12&4&10&1&13&5&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nlet category_id = getParam('category_id', '-1');\nlet page = getParam('page', '1');\nlet limit = 30;\nconst post_data = {\"category_id\": category_id,\"skip\": limit*(page - 1),\"limit\": limit,\"keyword\":\"\"};\nconst items = JSON.parse(fetch('https://cmn.yyds.fans/api/posts', {body: JSON.stringify(post_data),method: 'POST'})).data;\nitems.forEach(item => {\n  d.push({\n\ttitle: '““””'+item.title + (item.subtitle ? '\\n<small><span style=\"color: #999999\">' + item.subtitle + '</span></small>' : ''),\n\tdesc: item.release_time,\n\tpic_url: item.cover,\n\turl: 'hiker://empty?id=' + item.id + '&title=' + item.title,\n  })\n})\n\nsetHomeResult({\n  data: d\n});\n\n\n\n","searchFind":"js:\nlet d = [];\nlet category_id = getParam('category_id', '-1');\nlet keyword = getParam('keyword', '');\nlet page = getParam('page', '1');\nlet limit = 30;\nconst post_data = {\"category_id\": category_id,\"skip\": limit*(page - 1),\"limit\": limit,\"keyword\":keyword};\nconst items = JSON.parse(fetch('https://cmn.yyds.fans/api/posts', {body: JSON.stringify(post_data),method: 'POST'})).data;\nitems.forEach(item => {\n  d.push({\n\ttitle: item.title + (item.subtitle ? '\\n' + item.subtitle : ''),\n\tdesc: item.release_time,\n\tpic_url: item.cover,\n\turl: 'hiker://empty?id=' + item.id+ '&title=' + item.title,\n  })\n})\n\nsetHomeResult({\n  data: d\n});\n\n\n\n","search_url":"hiker://empty?keyword=**&&page=fypage","group":"A网盘","detail_col_type":"movie_1_left_pic","detail_find_rule":"js:\nlet d = [];\nlet id = getParam('id', '');\nlet title = getParam('title', '');\nconst post_data = {\"id\": id};\nconst res = JSON.parse(fetch('https://cmn.yyds.fans/api/post-info', {body: JSON.stringify(post_data),method: 'POST'}));\nconst data = res.data;\nif(data && data.title) {\nd.push({\n  title: '““””'+data.title + (data.subtitle ? '\\n<small><span style=\"color: #999999\">' + data.subtitle + '</span></small>' : ''),\n  desc: data.release_time,\n  pic_url: data.cover,\n  url: data.cover,\n})\nd.push({\n  title: '简介',\n  url: '',\n  col_type: 'text_1'\n})\nd.push({\n  title: data.content.replace(/href=\"https:\\/\\/(www\\.aliyundrive\\.com\\/s|alywp\\.net)(\\/|\\w|\\d)*/ig, function(e,t) {\n                return 'href=\"hiker://page/detail?rule=云盘汇影&url=' + e.split('href=\"')[1] + '??fypage';\n            })+'\\n'+data.desc,\n  col_type: \"rich_text\",\n});\n\nd.push({\n  col_type: \"line_blank\"\n});\ndata.links.forEach(_data=>{\n    d.push({\n  title: _data.name,\n  url: '',\n  col_type: 'text_1'\n})\n  \n    _data.item.forEach(item => {\n  \n  d.push({\n    title: '🔗 ' +item.title +'   '+ (item.code ? ('提取码：'+ item.code) : ''),\n    url: (item.link.match(/(www\\.aliyundrive\\.com\\/s|alywp\\.net)/) ? '' : 'web://') + item.link.replace(/https:\\/\\/(www\\.aliyundrive\\.com\\/s|alywp\\.net)(\\/|\\w|\\d)*/ig, function(e,t) {\n                return 'hiker://page/detail?rule=云盘汇影&url=' + e + '??fypage';\n            }),\n    col_type: 'text_1'\n  })\n d.push({\n  col_type: \"line_blank\"\n});\n})})\n\n\nd.push({\n  col_type: \"line_blank\"\n});\n} else {\nd.push({\n                title: \"““””<center><small>\"+'<span style=\"color: #ff0000\">'+res.message+'</span></small></center>\\n\\n<b><em>使用云盘汇影搜索 </em><span style=\"color:#f47983\">'+title+'</span></b>',\n                url: 'hiker://search?s='+title+'&rule=云盘汇影',\n                col_type: \"text_center_1\"\n            });\n}\n\nsetHomeResult({\n  data: d\n});\n\n\n\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://shp.qpic.cn/collector/1523230910/10d6b04e-e7a8-4db1-92ae-5b53518ab9f8/0"},{"last_chapter_rule":"","title":"逐风者•轻合集","author":"轻合集生成器","version":74,"url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet el = [{\n    title: '清除缓存,立即更新 <small>(基于远程仓库,不要频繁点击)',\n    url: $().lazyRule(() => {\n        clearItem('updatetime')\n        refreshPage(true)\n        return 'toast://已更新'\n    }),\n    img: 'hiker://images/icon1',\n    col_type: 'avatar'\n}]\nel.push({\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n})\nconst data = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection'))\nsetResult(el.concat(data.map((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1'\n    return {\n        title: v.title,\n        url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n        img: v.icon||'https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU',\n        extra: { RULE: v }\n    }\n})))","searchFind":"js:\nlet myCollection_el = [],\n    searchMode = getVar('myCollection-searchMode', ''),\n    [_, pageNum, keyword] = MY_URL.split('##'),\n    RULE = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection')).filter((v) => v.search_url)\npageNum = parseInt(pageNum)\nif (!searchMode && pageNum > RULE.length) setResult([])\n\nlet searchCount = { title: '⬆ 已搜索了' + pageNum + '个小程序 ⬆\\n⬇ 下面还有' + (RULE.length - pageNum) + '个小程序 ⬇' }\nRULE = searchMode ? RULE.find((v) => v.title == searchMode) : RULE[pageNum - 1]\n// 处理MY_URL和MY_RULE\nMY_RULE.ua = RULE.ua\nMY_RULE.col_type = RULE.col_type\nMY_RULE.detail_col_type = RULE.sdetail_col_type\nMY_RULE.find_rule = RULE.searchFind\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\nMY_RULE.preRule = RULE.preRule\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\nMY_RULE.params = {}\n\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nvar { MY_URL, indexHtml } = urlParse(RULE.search_url, searchMode ? pageNum : 1, (url) => {\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n})\nMY_RULE.url = MY_URL\n// 正文解析\nif (pageNum == 1) eval(MY_RULE.preRule)\nif (MY_RULE.find_rule.startsWith('js:')) {\n    function getUrl() {\n        return MY_URL\n    }\n\n    function getResCode() {\n        return indexHtml\n    }\n\n    function setResult(el, param1, param2, param3) {\n        param1 = CALLBACK_KEY\n        param2 = MY_RULE\n        param3 = MY_TYPE\n        if (Array.isArray(el.data)) el = el.data\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\n            let MY__RULE = Object.assign({}, MY_RULE)\n\n            if (!v.url) {\n                return v\n            } else if (v.url.includes('@rule=')) {\n                let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                v.url = url\n                MY__RULE.detail_find_rule = rule\n                MY__RULE.detail_col_type = MY_RULE.col_type\n            } else if (v.url.startsWith('hiker://page/')) {\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\n                    return v\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                MY__RULE.detail_find_rule = subPage.rule\n                MY__RULE.detail_col_type = subPage.col_type\n                MY__RULE.params = v.extra || {}\n            } else if (v.url.includes('@lazyRule=')) {\n                v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n                return v\n            } else if (!MY_RULE.detail_find_rule) { return v }\n            v.extra = { RULE: Object.assign({}, MY__RULE, { url: v.url }), pageTitle: v.title }\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n            return v\n        }))\n        if (!searchMode) myCollection_el.push(searchCount)\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\n    }\n\n    function setHomeResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    function setSearchResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    eval(MY_RULE.find_rule.slice(3))\n} else {\n    let findRule = MY_RULE.find_rule.split(';')\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\n                try {\n                    if (v == '*') return ''\n                    else v = (i == 1 || i == 4) ?\n                        parseDom(data, v) :\n                        parseDomForHtml(data, v)\n                    if (i != 1) v = runCode(v)\n                    return v\n                } catch (e) {}\n            }),\n            res = {\n                title: title,\n                url: url,\n                desc: desc,\n                content: content,\n                img: img\n            }\n        if (res.url) {\n            if (res.url.includes('@lazyRule=')) {\n                res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n            } else if (MY_RULE.detail_find_rule) {\n                res.extra = { RULE: Object.assign({}, MY_RULE, { url: res.url }), pageTitle: title }\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n            }\n        }\n        myCollection_el.push(res)\n        if (!searchMode) myCollection_el.push(searchCount)\n    })\n    setResult(myCollection_el)\n}\n","search_url":"hiker://empty##fypage##**","titleColor":"#ff13b66a","group":"A轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\n// 分组\n// 导入导出，排除，排序，简单编辑？？基于远程会自动更新@@判断是否为远程\n// 从轻合集导入海阔\n// 包裹错误\n// 多线程，香情影视那样,在首页点击搜索以后,选择一个规则查看搜索内容","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&')\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input+\\\"&rule=' + getItem('myCollection') + '\\\"',\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, indexHtml } = urlParse(RULE.url, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n})\\nMY_RULE.url = MY_URL\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule) { return v }\\n            v.extra = { RULE: Object.assign({}, MY__RULE, { url: v.url }), pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { RULE: Object.assign({}, MY_RULE, { url: res.url }), pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nvar myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, indexHtml } = urlParse(RULE.url, 1)\\nMY_RULE.url = MY_URL\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else { return v }\\n            v.extra = { RULE: Object.assign({}, MY__RULE, { url: v.url }) }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n            } else if (detailFindRule) {\\n                res.extra = { RULE: Object.assign({}, MY_RULE, { url: res.url, detail_find_rule: detailFindRule }), pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"//真正获取数据的逻辑\\nfunction load() {\\n    let url = 'http://hiker.nokia.press/hikerule/dev/json_list?name=510381049',\\n        d = []\\n    try {\\n        d = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            d = JSON.parse(d).rule\\n        d = JSON.parse(d)\\n    } catch (e) {log(e.message)\\n        d = []\\n    }\\n    return d.filter((v) => { return v.title != MY_RULE.title && v.author != '轻合集生成器' })\\n}\\n//检查间隔，默认一天\\nlet min = 60 * 24 * 1\\n\\nlet data = []\\nlet time = getItem('updatetime', '0')\\ntime = parseInt(time)\\nlet now = new Date().getTime()\\nif (now - time > 1000 * 60 * min) {\\n    log('更新了数据')\\n    setItem('updatetime', '' + now)\\n    data = load()\\n    saveFile('data.json', JSON.stringify(data))\\n} else {\\n    log('没有更新数据')\\n    data = JSON.parse(readFile('data.json'))\\n}\\n$.exports = data\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = options.headers['Content-Type'].slice(0, 19) + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], indexHtml: fetch(url[0], options) }\\n    }\\n}\\n\"}]","icon":"http://q2.qlogo.cn/headimg_dl?dst_uin=510381049&spec=100"},{"last_chapter_rule":"","title":"机核GCORES","author":"TyrantGenesis","version":1,"type":"news","url":"hiker://empty$$fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/COLLECTION/gcores.js'))\ngcores.baseParse()","searchFind":"","search_url":"","group":"TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"if (! fileExist('hiker://files/TyrantG/public/gcores_banners.html')) writeFile('hiker://files/TyrantG/public/gcores_banners.html', request('https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/public/gcores_banners.html'))","pages":"[]","proxy":"","icon":"https://www.gcores.com/apple-touch-icon.png?v=jw7pQOOwRY"},{"last_chapter_rule":"","title":"漫画猫","author":"TyrantGenesis","version":1,"type":"cartoon","url":"https://www.maofly.com/list.html###fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst baseParse = _ => {\n    addListener('onClose', $.toString(() => {\n        clearItem('maofly.true_url')\n        clearItem('maofly.tab_params')\n        clearItem('maofly.fold')\n    }))\n    let d = [];\n    let [base_url, page] = MY_URL.split('###')\n    page = parseInt(page)\n    const empty = 'hiker://empty'\n    const url = getItem('maofly.true_url', base_url.replace('.html', ''))\n    const fold = getItem('maofly.fold', '1')\n    const tab_params_json = getItem('maofly.tab_params', JSON.stringify([0, 0, 0, 0, 0, 0]))\n    const tab_params = JSON.parse(tab_params_json)\n\n    const html = fetch(url+'-page-'+page+'.html', {headers: {'User-Agent': PC_UA}})\n\n    if (page === 1) {\n        d.push({\n            title: fold === '1' ? '折叠' : '展开',\n            url: $(empty).lazyRule((fold) => {\n                log(fold)\n                setItem('maofly.fold', fold === '1' ? '0' : '1')\n                refreshPage(true)\n                return 'hiker://empty'\n            }, fold),\n            col_type: 'scroll_button',\n        }, fold)\n        d.push({\n            title: '重置筛选',\n            url: $(empty).lazyRule(() => {\n                clearItem('maofly.true_url')\n                clearItem('maofly.tab_params')\n                refreshPage(true)\n                return 'hiker://empty'\n            }),\n            col_type: 'scroll_button',\n        })\n        d.push({\n            col_type: 'blank_block',\n        })\n\n        if (fold === '1') {\n            const tab_list = pdfa(html, '.search_div&&.mt-4')\n\n            tab_list.forEach((item, row_index) => {\n                let row = pdfa(item, '.row&&a')\n                let tab_params_index = tab_params[row_index]\n                row.forEach((tab, col_index) => {\n                    let title = pdfh(tab, 'a&&Text')\n                    d.push({\n                        title: tab_params_index === col_index+1 ? '‘‘’’<strong><font color=\"red\">'+title+'</font></strong>' : title,\n                        url: $(pdfh(tab, 'a&&href')).lazyRule((row_string, col_string, tab_params) => {\n                            tab_params[parseInt(row_string)] = parseInt(col_string)+1\n                            setItem('maofly.true_url', input.replace('.html', ''))\n                            setItem('maofly.tab_params', JSON.stringify(tab_params))\n                            refreshPage(false)\n                            return 'hiker://empty'\n                        }, row_index.toString(), col_index.toString(), tab_params),\n                        col_type: 'scroll_button',\n                    })\n                })\n                d.push({\n                    col_type: 'blank_block',\n                })\n            })\n        }\n    }\n\n    const content = pdfa(html, '.comic-main-section&&.comic-book-unit')\n    content.forEach(item => {\n        d.push({\n            title: pdfh(item, 'h2&&a&&Text'),\n            url: pdfh(item, 'h2&&a&&href')+'#immersiveTheme#',\n            desc: pdfh(item, '.list-inline&&Text'),\n            pic_url: pdfh(item, '.comic-book-cover&&src'),\n            col_type: 'movie_3',\n        })\n    })\n\n    setResult(d);\n}\n\nbaseParse()","searchFind":".comic-main-section&&.comicbook-index;\nh2&&a&&Text;\nh2&&a&&href.js:input+\"#immersiveTheme#\";\n.comic-author&&Text;\n.comic-author&&Text;\nimg&&src","search_url":"https://www.maofly.com/search.html?q=**&page=fypage","group":"TyrantG","detail_col_type":"movie_1","detail_find_rule":"js:\n    addListener('onClose', $.toString(() => {\n        clearItem('maofly.sort')\n    }))\n    let d = [];\n    const empty = 'hiker://empty'\n    const html = getResCode()\n    const sort = getItem('maofly.sort', '1')\n    const comic_info = pdfh(html, '.comic-meta-data-table&&Html')\n    const info_title = pdfh(html, 'h1&&Text')\n    const info_pic = pdfh(comic_info, 'img&&src')\n\n    d.push({\n        title: info_title,\n        url: MY_URL,\n        desc: pdfh(html, '.comic_story&&Text'),\n        pic_url: info_pic,\n        col_type: 'movie_1_vertical_pic_blur',\n    })\n    d.push({\n        col_type: 'line_blank',\n    })\n\n    const list = pdfa(html, '#comic-book-list&&.tab-pane')\n    list.forEach(item => {\n        let title = pdfh(item, '.comic_version_title&&Text')\n        let select_arr = pdfa(item, 'ol&&li')\n        if (sort === '1') select_arr = select_arr.reverse()\n        const download_arr = select_arr.map(item => {\n            return {\n                url: pdfh(item, 'a&&href'),\n                title: pdfh(item, 'a&&Text'),\n            }\n        })\n        d.push({\n            title: title,\n            url: empty,\n            col_type: 'text_1',\n        })\n        d.push({\n            col_type: 'line',\n        })\n        d.push({\n            title: sort === '1' ? '倒序' : '正序',\n            url: $(empty).lazyRule((sort) => {\n                setItem('maofly.sort', sort === '1' ? '0' : '1')\n                refreshPage(false)\n                return 'hiker://empty'\n            }, sort),\n            col_type: 'text_2',\n        })\n        d.push({\n            title: '下载',\n            url: \"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\",\n            extra: {\n                chapterList: download_arr,\n                info:{\n                    bookName: info_title,\n                    ruleName: MY_RULE.title,\n                    bookTopPic: info_pic,\n                    parseCode: $.toString(() => {\n                        const LZString = function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;n<o.length;n++)t[o][o.charAt(n)]=n}return t[o][r]}var r=String.fromCharCode,n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\",t={},i={compressToBase64:function(o){if(null==o)return\"\";var r=i._compress(o,6,function(o){return n.charAt(o)});switch(r.length%4){default:case 0:return r;case 1:return r+\"===\";case 2:return r+\"==\";case 3:return r+\"=\"}},decompressFromBase64:function(r){return null==r?\"\":\"\"==r?null:i._decompress(r.length,32,function(e){return o(n,r.charAt(e))})},compressToUTF16:function(o){return null==o?\"\":i._compress(o,15,function(o){return r(o+32)})+\" \"},decompressFromUTF16:function(o){return null==o?\"\":\"\"==o?null:i._decompress(o.length,16384,function(r){return o.charCodeAt(r)-32})},compressToUint8Array:function(o){for(var r=i.compress(o),n=new Uint8Array(2*r.length),e=0,t=r.length;t>e;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(\"\"))},compressToEncodedURIComponent:function(o){return null==o?\"\":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?\"\":\"\"==r?null:(r=r.replace(/ /g,\"+\"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return\"\";var e,t,i,s={},p={},u=\"\",c=\"\",a=\"\",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<o.length;i+=1)if(u=o.charAt(i),Object.prototype.hasOwnProperty.call(s,u)||(s[u]=f++,p[u]=!0),c=a+u,Object.prototype.hasOwnProperty.call(s,c))a=c;else{if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(\"\"!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join(\"\")},decompress:function(o){return null==o?\"\":\"\"==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v=\"\",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return\"\"}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return\"\";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join(\"\")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();\"function\"==typeof define&&define.amd?define(function(){return LZString}):\"undefined\"!=typeof module&&null!=module&&(module.exports=LZString);\n                        const html = fetch(input, {headers: {'User-Agent': PC_UA}})\n                        const img_data = html.match(/let img_data = \"(.*?)\"/)[1]\n                        const img_data_arr = LZString.decompressFromBase64(img_data).split(',').map(item => 'https://mao.mhtupian.com/uploads/'+item)\n                        return 'pics://'+img_data_arr.join('&&')\n                    })\n                },\n                defaultView: \"1\"\n            },\n            col_type: 'text_2',\n        })\n        select_arr.forEach(sel => {\n            d.push({\n                title: pdfh(sel, 'a&&Text'),\n                url: $(pdfh(sel, 'a&&href')).lazyRule(() => {\n                    const LZString = function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;n<o.length;n++)t[o][o.charAt(n)]=n}return t[o][r]}var r=String.fromCharCode,n=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\",e=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+-$\",t={},i={compressToBase64:function(o){if(null==o)return\"\";var r=i._compress(o,6,function(o){return n.charAt(o)});switch(r.length%4){default:case 0:return r;case 1:return r+\"===\";case 2:return r+\"==\";case 3:return r+\"=\"}},decompressFromBase64:function(r){return null==r?\"\":\"\"==r?null:i._decompress(r.length,32,function(e){return o(n,r.charAt(e))})},compressToUTF16:function(o){return null==o?\"\":i._compress(o,15,function(o){return r(o+32)})+\" \"},decompressFromUTF16:function(o){return null==o?\"\":\"\"==o?null:i._decompress(o.length,16384,function(r){return o.charCodeAt(r)-32})},compressToUint8Array:function(o){for(var r=i.compress(o),n=new Uint8Array(2*r.length),e=0,t=r.length;t>e;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(\"\"))},compressToEncodedURIComponent:function(o){return null==o?\"\":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?\"\":\"\"==r?null:(r=r.replace(/ /g,\"+\"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return\"\";var e,t,i,s={},p={},u=\"\",c=\"\",a=\"\",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;i<o.length;i+=1)if(u=o.charAt(i),Object.prototype.hasOwnProperty.call(s,u)||(s[u]=f++,p[u]=!0),c=a+u,Object.prototype.hasOwnProperty.call(s,c))a=c;else{if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(\"\"!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join(\"\")},decompress:function(o){return null==o?\"\":\"\"==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v=\"\",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return\"\"}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return\"\";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join(\"\")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();\"function\"==typeof define&&define.amd?define(function(){return LZString}):\"undefined\"!=typeof module&&null!=module&&(module.exports=LZString);\n                    const html = fetch(input, {headers: {'User-Agent': PC_UA}})\n                    const img_data = html.match(/let img_data = \"(.*?)\"/)[1]\n                    const img_data_arr = LZString.decompressFromBase64(img_data).split(',').map(item => 'https://mao.mhtupian.com/uploads/'+item)\n                    return 'pics://'+img_data_arr.join('&&')\n                }),\n                col_type: 'text_4',\n            })\n        })\n        d.push({\n            col_type: 'line_blank',\n        })\n    })\n\n    setResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.maofly.com/static/images/180.png"},{"last_chapter_rule":"","title":"CK","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.feifei67.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=CK"},{"last_chapter_rule":"","title":"久草","author":"道长","version":1,"type":"video","url":"hiker://empty##http://jcspcj8.com/api#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=久草"},{"last_chapter_rule":"","title":"酷豆2","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.kdapi.info/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=酷豆2"},{"last_chapter_rule":"","title":"浪潮","author":"道长","version":1,"type":"video","url":"hiker://empty##http://langchaozy11.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=浪潮"},{"firstHeader":"class","last_chapter_rule":"","title":"咪咪","author":"小白","version":1,"type":"video","url":"http://mimitv.live/index.php/vod/show/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href.js:input.replace('detail','play').replace('.html','/sid/1/nid/1.html')","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"fl","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n// 线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a>/g);\n// 集数\nvar conts = parseDom(getResCode(), '.playlist&&Html').match(/\"playlist_notfull[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n\turl: getUrl(),\n\tcol_type: 'text_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://mimitv.live' + list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=.embed-responsive&&script&&Html.js:eval(input)；；player_aaaa.url',\n\t\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#ff228be6"},{"last_chapter_rule":"","title":"狼友","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.langyouzy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=狼友"},{"last_chapter_rule":"","title":"秀色","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.xiuseapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=秀色"},{"last_chapter_rule":"","title":"速度","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.ggmmzy.com:9999/inc/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=速度"},{"last_chapter_rule":"","title":"黄AV","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.pgxdy.com/api/json.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=黄AV"},{"last_chapter_rule":"","title":"色南国","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.sexnguon.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"fl","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=色南国"},{"last_chapter_rule":"","title":"风影 Ⓕ","author":"随风","version":221005,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nrequire(config.依赖);\nsy()","searchFind":"js: \nrequire(config.依赖);\nsou()","search_url":"hiker://empty##**","group":"①A影模板","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"let ycl = \"https://gitcode.net/suifen/suifeng/-/raw/master/ycl.js\";\ninitConfig({\n    依赖: ycl\n  });\t","pages":"[]","proxy":"","icon":"http://www.isoying.com/ico/logo.ico"},{"last_chapter_rule":"","title":"NikeTVdm.","author":"轻合集生成器","version":107,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①TVBOX推送","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://files.catbox.moe/7doem2.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://i.postimg.cc/YSb7bzz2/com-mtvn-mtvprimeandroid.png"},{"last_chapter_rule":"","title":"LSP聚合X偷渡版","author":"210816","version":3,"type":"video","url":"hiker://empty##http://fyAll/api/videosort/##fypage","col_type":"text_5","class_name":"1024&YTB&榴莲&草莓&丝瓜&向日葵&秋葵&蕾丝&宅男&小蝌蚪&银杏视频","class_url":"yjb.tw&fsafmyfootballpredictions.com&liulianshipin100.com&cmjk3.com&sgjk3.com&xrkjk3.com&api.klpqk.com&fsfanteriormanagement.com&gntwax.com&dianxianhongqiao.com&yxsp4.com:80","area_name":"1024②&YTB②&榴莲②&草莓②&丝瓜②&丝瓜3&向日葵②&向日葵③&宅男②","area_url":"yjb1024.com&sekihfde.com&liulianshipin104.com&cmjk2.com&sgjk2.com&api.sgbe2.xyz&xrkjk2.com&api.xrkbe2.xyz&ylpcvr.com","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar spl = MY_URL.split('##');\nvar html = JSON.parse(fetch(spl[1], {}));\nvar tabs = html.rescont;\nvar one = spl[1] + tabs[0].id + '?orderby=new&page=';\nif (spl[2] == '1') {\n    for (var i = 0; i < tabs.length; i++) {\n        var title = tabs[i].name;\n        var img = tabs[i].icopath;\n        var vid = tabs[i].id;\n        items.push({\n            title: (getVar(spl[1], '0') == i ? '👇🏻' : '') + title,\n            url: `hiker://empty@lazyRule=.js:putVar('` + spl[1] + \"', '\" + i + `');putMyVar('` + spl[1] + \"','\" + spl[1] + vid + `?orderby=new&page=');refreshPage();'toast://切换成功！'`,\n            col_type: 'scroll_button'\n        });\n    }\n}\n\nvar shtml = JSON.parse(fetch(getMyVar(spl[1], one) + spl[2], {}));\nvar conts = shtml.rescont.data\nfor (var j = 0; j < conts.length; j++) {\n    var title = conts[j].title;\n    var img = conts[j].coverpath + '@Referer=';\n    var vid = conts[j].id;\n    items.push({\n        title: title,\n        img: img,\n        url: $(spl[1].split('sort')[0] + 'play/' + vid + '?uuid=724b9c9fdd5e7b6f').lazyRule(() => {\n            var json = JSON.parse(fetch(input, {})).rescont.videopath;\n            return json.replace('https://yuanqiplay.com', 'http://liulianshipin100.com/api/index.m3u8?m3u8=https://www.bailiqinok.com').replace('https://yunyi668.com', 'http://chaopen97.com/api/index.m3u8?m3u8=https://www.cljcqzz.com')\n        }),\n        col_type: 'movie_1'\n    });\n}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar urlList= [\n[\"http://dianxianhongqiao.com/\",\"小蝌蚪\"],\n[\"http://yjb.tw/\",\"1024\"],\n[\"http://fsfapermanentcosmeticartistry.com/\",\"YTB\"],\n[\"http://cmjk3.com/\",\"草莓\"],\n[\"http://sgjk3.com/\",\"丝瓜\"],\n[\"http://api.klpqk.com/\",\"秋葵\"],\n[\"http://liulianshipin100.com/\",\"榴莲\"],\n[\"http://fsfanteriormanagement.com/\",\"蕾丝\"],\n[\"http://gntwax.com/\",\"宅男\"],\n[\"http://api.xrkbe2.xyz/\",\"向日葵\"]\n];\nMY_URL=MY_URL.split('#')[1];\ntry{\nvar data = batchFetch(urlList.map(data=>({url:data[0]+MY_URL})));\ndata.forEach((json,index)=>{\n    var list = JSON.parse(json).rescont.data;\n    for(var item of list){\n        d.push({\n            title: item.title,\n            desc: item.authername,\n            img: item.coverpath,\n            content: urlList[index][1],\n            url: urlList[index][0] + \"api/videoplay/\" + item.id + \"?uuid=724b9c9fdd5e7b6f\" + \"@lazyRule=Text.js: JSON.parse(input).rescont.videopath.replace( 'https://yuanqiplay.com','http://liulianshipin100.com/api/index.m3u8?m3u8=https://www.bailiqinok.com').replace( 'https://yunyi668.com','http://chaopen97.com/api/index.m3u8?m3u8=https://www.cljcqzz.com')\"\n        });\n    }\n})\n}catch(e){};\nsetResult(d)","search_url":"hiker://empty#api/videosort/0?serach=**&page=fypage","group":"①྄🍧","detail_col_type":"movie_1","detail_find_rule":"js: \nd = JSON.parse(getResCode()).rescont.data.map(data => ({\n    title: data.title,\n    url: MY_URL.split('sort')[0]+'play/'+data.id+'?uuid=724b9c9fdd5e7b6f'+`@lazyRule=Text.js:JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com','http://liulianshipin100.com/api/index.m3u8?m3u8=https://www.bailiqinok.com').replace( 'https://yunyi668.com','http://chaopen97.com/api/index.m3u8?m3u8=https://www.cljcqzz.com')`,\n    //desc: data.authername,\n    img: data.coverpath\n}));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"服务器备用\",\"path\":\"by\",\"rule\":\"\\n/**\\n丝瓜>https://sgjk2.com 丝瓜>https://sgjk3.com 丝瓜>https://api.sgbe2.xyz\\n草莓>https://cmjk2.com 草莓>https://cmjk3.com 草莓>https://api.cmbe2.xyz\\n向日葵>https://xrkjk3.com 向日葵>https://xrkjk2.com 向日葵>https://api.xrkbe2.xyz\\n榴莲>http://liulianshipin7.xyz 榴莲>http://liulianshipin100.com 榴莲>http://liulianshipin8.xyz\\n芭乐>https://api.blbe2.xyz 芭乐>https://bljk2.com 芭乐>https://bljk3.com\\n秋葵>http://api.klpqk.com\\n测试>http://sgjk2.com\\n1024服务器替换http://1gb.tw  http://yjb.tw  http://1024yjb.com  http://yjb1024.com\\nYTB服务器替换http://fsfapermanentcosmeticartistry.com  http://sekihfde.com http://fsvibrantnutritionandhealth.com http://fsafmyfootballpredictions.com\\n榴莲服务器替换http://liulianshipin100.com http://liulianshipin101.com http:/\\n/liulianshipin102.com http://liulianshipin103.com http://liulianshipin104.com\\n蕾丝服务器 http://fsfanteriormanagement.com\\n     http://fsfarlingtonqiwellness.com\\n     http://fsfcjanaturalbuilding.com\\n     http://fshandcalligraphypa.com\\n    http://ewgabrielaconstantine.com\\n宅男\\nhttp://gntwax.com\\nhttp://ylpcvr.com\\nhttp://bjfbuq.com\\nhttp://kqcfrq.com\\nhttp://pdpulf.com\\nvideo:\\thttp://gntwax.com\\\\/api\\\\/index.m3u8?m3u8=https:\\\\/\\\\/syastjt.com\\\\/\\\"\\n小蝌蚪\\n \\\"http://dianxianhongqiao.com/\\\",\\n      \\\"http://chaopen97.com/\\\",\\n      \\\"http://xiaokedou898.com/\\\",\\n      \\\"http://xiaokedou188.com/\\\",\\n      \\\"http://xiaokedou233.com/\\\",\\n      \\\"http://xiaokedou699.com/\\\"\\nvideo:http://chaopen97.com/api/index.m3u8?m3u8\\\\u003dhttps://www.hfkuangshanche.com/\\\"\\n银杏视频播放替换\\nhttp://yxsp1.com:80/api/index.m3u8?m3u8=https://mhzb998.com/\\n*/\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/54.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"人体艺术.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.rtmmf.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vod/detail/','/ys/index.php/gbook/index.html');\n//一级书签('vod/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/ys/index.php/vod/search/page/fypage/wd/**.html","group":"①྄🍧","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=人体艺术"},{"last_chapter_rule":"","title":"奇艺影院♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"http://www.shudx.com/list/fyclass_fypage.html?order=fysort","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"2&1&4&3","area_name":"","area_url":"","sort_name":"按时间&按人气","year_name":"","sort_url":"time&hit","year_url":"","find_rule":".stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist__media&&li;.title&&Text;a&&href;.pic-text&&Text;.detail&&Text;.lazyload&&data-original","search_url":"http://www.shudx.com/search.php?searchword=**;post;utf-8","titleColor":"272727","group":"①①影视","detail_col_type":"text_2","detail_find_rule":"js:\nvar res ={};\nvar d=[];\ntry{\nvar thumb = parseDom(getResCode(), \".stui-content__thumb&&img&&data-original\");\nd.push({\n\t\t\ttitle: '线路预览'+' 共'+getResCode().match(/\\\"stui-content__playlist/g).length+'条线路',\n    desc:parseDomForHtml(getResCode(), \".stui-content__detail&&p,-1&&Text\"),\n    pic_url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nvar tabs=parseDom(getResCode(),'body&&.nav-tabs&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\nvar conts=parseDom(getResCode(),'body&&.tab-content&&Html').match(/<ul class=\\\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n  var list=conts[i].match(/<a.*?<\\/a>/g);\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j = 0; j<list.length; j++){\n    //setError(parseDom(list[j], \"a&&href\"));\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:parseDom(list[j], \"a&&href\")+`@lazyRule=.js:var get =fetch(input,{})；；var js = parseDomForHtml(get,\".stui-player__video＆＆＆＆iframe＆＆＆＆src\")；；var jx = fetch(js,{headers:{'Referer':'http://www.anluyg.net/'}})；；if(jx.indexOf('ldgplayer')!=-1){if(jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0].indexOf('http')!=-1){jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0]；；}else{'http:'+jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0]；；}}else if(jx.indexOf('id=\\\"vod\\\"')!=-1){jx.match(/http.*?m3u8/g)[0]；；}else if(jx.indexOf('DPlayer')!=-1){jx.match(/http.*?m3u8/g)[0]；；}else{if(input.indexOf('http')!=-1){input}else{'http:'+input}}`,\n      col_type: 'text_5'\n\t\t\t});\n   }\n}\n} catch (e) { }\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/5.png"},{"last_chapter_rule":"","title":"神马电影网","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.smdyy.cc';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"①①影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":"http://www.wwwgcard.com/static/images/touxiang.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"酷客","author":"缘分","version":0,"type":"video","url":"http://www.2kuke.com/list/fyclass_fypage.html?order=fysort","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&","class_url":"1&2&3&4&","area_name":"","area_url":"","sort_name":"按时间&按人气&","year_name":"","sort_url":"time&hit&","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.stui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pic-text&&Text'),\n            pic_url: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.stui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pic-text&&Text'),\n            pic_url: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.2kuke.com/search.php?searchword=**;post","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.stui-content__playlist');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.stui-content__detail&&p,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'').substring(0, 18),\n    desc: pdfh(html, '.stui-content__detail&&p,3&&Text'),\n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var url = pdfh(request(input),'iframe&&src')\\ntry {\\ntry {\\n    var url = pdfh(request(url,{}),'body&&script,1&&Html').match(/else[\\\\s\\\\S]*?src=\\\"(.*?)\\\"/)[1]\\nif (/m3u8|mp4/.test(url)) {\\n        return url\\n}} catch (e) {\\nvar url = pdfh(request(url),'iframe&&src')\\nvar url = request(url,{headers: {\\n                'Referer': MY_URL\\n            }}).match(/Source\\\\(\\\"(.*?)\\\"/)[1]\\n        return url\\n}} catch (e) {\\nvar url = pdfh(request(input),'iframe&&src')\\nvar url = request(url,{headers: {\\n                'Referer': MY_URL\\n            }}).match(/Source\\\\(\\\"(.*?)\\\"/)[1]\\n        return url\\nlog(url)\\n}\\n}, MY_HOME)\"}]","proxy":"","icon":"http://www.2kuke.com/static/favicon.ico"},{"last_chapter_rule":"","title":"哔哩兔","author":"2022//22","version":0,"type":"video","url":"hiker://empty##https://www.bilituys.com/bilishow/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.item#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(首页|资讯|专题))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.stui-vodlist&&li');\nfor (var j in list) {\n  var img = pd(list[j], '.lazyload&&data-original')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = []\nfor (var j of JSON.parse(getResCode()).list) {\n    d.push({\n        title: j.name,\n        img: j.pic + \"@Referer=\",\n        url: MY_HOME+'/voddetail/' + j.id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"/index.php/ajax/suggest?mid=fypage&wd=**&limit=10","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":"https://www.bilituys.com/template/jianbai/statics/img/logo.png"},{"last_chapter_rule":"","title":"章鱼影视","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##http://lb520.fun/icciu_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"①①📽️影视","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=章鱼影视"},{"last_chapter_rule":"","title":"抖音直播","author":"TyrantGenesis","version":2,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n$.require('hiker://page/douyin').liveParse();","searchFind":"","search_url":"","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"// putMyVar('tg.dy_web.url.live_url', 'https://live.douyin.com')","pages":"[{\"name\":\"签名\",\"path\":\"signature\",\"rule\":\"var exports = undefined\\n  , module = undefined\\n  , Image = function Image() {}\\n  , PluginArray = function PluginArray() {}\\n  , indexedDB = {}\\n  , DOMException = function DOMException() {}\\n  , WebSocket = function WebSocket() {}\\n  , Request = function Request() {}\\n  , Headers = function Headers() {};\\nvar localStorage = {\\n    getItem: function getItem(x) {return null},\\n    removeItem: function removeItem(x) {}\\n};\\nvar sessionStorage = {\\n    getItem: function getItem(x) {return null},\\n    removeItem: function removeItem(x) {}\\n};\\nvar MimeType = {\\n    description: \\\"Native Client Executable\\\",\\n    suffixes: \\\"\\\",\\n    type: \\\"application/x-nacl\\\"\\n};\\nMimeType[Symbol.toStringTag] = \\\"MimeType\\\";\\nvar navigator = {\\n    plugins: {\\n        0: {\\n            0: MimeType,\\n            name: \\\"Native Client\\\",\\n            length: 2,\\n            filename: \\\"internal-nacl-plugin\\\",\\n            description: \\\"\\\",\\n            length: 1\\n        }\\n    },\\n    webdriver: false,\\n    userAgent: \\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n    languages: [\\\"zh-CN\\\", \\\"zh\\\"],\\n    appCodeName: \\\"Mozilla\\\",\\n    appName: \\\"Netscape\\\",\\n    appVersion: \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n    platform: \\\"Win32\\\"\\n};\\nnavigator.plugins[0][\\\"application/x-nacl\\\"] = MimeType;\\nnavigator.plugins[0].__proto__.item = function item() {\\n    return MimeType\\n}\\n;\\nnavigator.plugins[Symbol.toStringTag] = \\\"PluginArray\\\";\\nnavigator.plugins[0][Symbol.toStringTag] = \\\"Plugin\\\";\\nnavigator.plugins[0][0].enabledPlugin = navigator.plugins[2];\\nvar CanvasRenderingContext2D_ = {\\n    toString: function() {\\n        return \\\"[object CanvasRenderingContext2D]\\\"\\n    }\\n};\\nCanvasRenderingContext2D_.__proto__.fillText = function fillText() {}\\n;\\nCanvasRenderingContext2D_.__proto__.arc = function arc() {}\\n;\\nCanvasRenderingContext2D_.__proto__.stroke = function stroke() {}\\n;\\nvar getContext_ = {\\n    toString: function() {\\n        return \\\"[object WebGLRenderingContext]\\\"\\n    }\\n};\\nvar aaaaa=0;\\nvar canvas = {\\n    toDataURL: function toDataURL() {\\n        if(aaaaa=0){\\n            aaaaa=aaaaa+1\\n            return \\\"[native code]\\\"\\n        }\\n        return \\\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAQCAYAAABQrvyxAAACN0lEQVRIS8WWP0hWYRTGf98S5NBSm5sObgWt6RJR5uLQIGRC1OAWNEspOAWCIIR+4GYFDg1NEoEQ5tIghFNbBIlDLi5Bi/LIOXA8vu/1Q76v7nLvff+c9zzPc55zb4vT11F612vLxjTnz4Vl/3xoCHhaSsgTzQlncL0EcxV4C9xLtLSB58Af4AyAEvu+Pyf7P9S4BdwG5i2pogIl1mMJRUJ6qUCux8vAIvAeeABM24J2idm8ueaBCHYSmDJ2XgLPgO+Axt8AGnPmFF/srQM3PJFQGiUzKc5AIcYZDzQpoMAlH0jaLyGRHeAmsAI8BN4BrwIor28B2gac3S2r+wxAyY8YwL7kjaICnTCe2Rc7m3ay6rQfOAQ+AL+BpQAgAnZlYpIyqC4HKpBRPQfYaGKBcLbjs7fVOOcHaU4HvQZmgfvADHAtAfASiqAygBeAgGr8oNKgiwA82Xj30inNzVlwv+tQHb4MXDdAOigmqy2+zhMsKRCZjn7x8Ucqp2jiWhvNCkRCZNDPwKoNemI/gDWr8Qjgp3UTdZGPgeEagAzUz3bf/DqvFTb1e83tA6PAtwBAho7JRQBaNgZ8NaXOU0BqylvyQb4Ud66mQKce+ATcDZHdoLFt1hQ4KQHb26SAPDVhbblRgfwLEdkvzYn9J8BGxWTdGs7fDI87LGWyAtmosev43BVrkT7XrUQvFKfkgUvA30o0Sb0A6KfKO8+FDu7WphKAceCxfYD27Hsw\\\" + mu_() + \\\"AAAAAElFTkSuQmCC\\\"\\n    },\\n    getContext: function getContext(x) {\\n        if (x === \\\"2d\\\") {\\n            return CanvasRenderingContext2D_\\n        } else {\\n            return getContext_\\n        }\\n    }\\n};\\ncanvas[Symbol.toStringTag] = \\\"HTMLCanvasElement\\\";\\ncanvas.getContext[Symbol.toStringTag] = \\\"WebGLRenderingContext\\\";\\ngetContext_.__proto__.getExtension = function getExtension(x) {\\n    return {\\n        UNMASKED_RENDERER_WEBGL: 37446,\\n        UNMASKED_VENDOR_WEBGL: 37445\\n    }\\n}\\n;\\ngetContext_.__proto__.getParameter = function getParameter(x) {\\n    return \\\"Google Inc. (Intel)/ANGLE (Intel, Intel(R) UHD Graphics Direct3D11 vs_5_0 ps_5_0, D3D11-27.20.100.8681)\\\"\\n}\\n;\\nvar location = {\\n    href: \\\"https://www.douyin.com/\\\",\\n    toString: function() {\\n        return location.href\\n    },\\n    protocol: \\\"https:\\\"\\n};\\nvar document = {\\n    createEvent: function createEvent() {},\\n    location: location,\\n    cookie: \\\"\\\",\\n    vlinkColor: \\\"\\\",\\n    referrer: \\\"\\\",\\n    fgColor: \\\"\\\",\\n    dir: \\\"\\\",\\n    addEventListener: function addEventListener(x) {},\\n    createElement: function createElement(x) {\\n        return canvas\\n    }\\n};\\ndocument.createElement[Symbol.toStringTag] = \\\"HTMLImageElement\\\";\\nvar history = {\\n    length: 1,\\n    scrollRestoration: \\\"auto\\\",\\n    state: null\\n};\\nvar upload = {\\n    onabort: null,\\n    onerror: null,\\n    onload: null,\\n    onloadend: null,\\n    onloadstart: null,\\n    onprogress: null,\\n    ontimeout: null\\n};\\nupload[Symbol.toStringTag] = \\\"XMLHttpRequestUpload\\\";\\nvar XMLHttpRequest = function() {\\n    this.onabort = null,\\n    this.onerror = null,\\n    this.onload = null,\\n    this.onloadend = null,\\n    this.onloadstart = null,\\n    this.onprogress = null,\\n    this.onreadystatechange = null,\\n    this.ontimeout = null,\\n    this.readyState = 0,\\n    this.response = \\\"\\\",\\n    this.responseText = \\\"\\\",\\n    this.responseType = \\\"\\\",\\n    this.responseURL = \\\"\\\",\\n    this.responseXML = null,\\n    this.status = 0,\\n    this.statusText = \\\"\\\",\\n    this.timeout = 0,\\n    this.upload = upload,\\n    this.withCredentials = false\\n};\\nXMLHttpRequest.prototype.open = function() {\\n    function ee() {\\n        this.openArgs = arguments\\n    }\\n    function Vn(e, t) {\\n        var n = \\\"function\\\" == typeof Symbol && e[Symbol.iterator];\\n        if (!n)\\n            return e;\\n        var r, o, i = n.call(e), a = [];\\n        try {\\n            for (; (void 0 === t || t-- > 0) && !(r = i.next()).done; )\\n                a.push(r.value)\\n        } catch (e) {\\n            o = {\\n                error: e\\n            }\\n        } finally {\\n            try {\\n                r && !r.done && (n = i.return) && n.call(i)\\n            } finally {\\n                if (o)\\n                    throw o.error\\n            }\\n        }\\n        return a\\n    }\\n    ;function a() {\\n        for (var t = [], n = 0; n < arguments.length; n++)\\n            t[n] = arguments[n];\\n        var r = Vn(t, 2)\\n          , o = r[0]\\n          , i = r[1];\\n        return this._url = i || \\\"\\\",\\n        this._method = o && o.toLowerCase() || \\\"\\\",\\n        ee.apply(this, t)\\n    }\\n    ;for (var e = [], t = 0; t < arguments.length; t++)\\n        e[t] = arguments[t];\\n    return a.apply(this, e)\\n}\\n;\\nXMLHttpRequest.prototype.setRequestHeader = function() {\\n    function a() {\\n        for (var t = [], n = 0; n < arguments.length; n++)\\n            t[n] = arguments[n];\\n        return this._requestHeaders = this._requestHeaders || [],\\n        this._requestHeaders.push(t)\\n    }\\n    ;for (var e = [], t = 0; t < arguments.length; t++)\\n        e[t] = arguments[t];\\n    return a.apply(this, e)\\n}\\n;\\nXMLHttpRequest.prototype.send = function() {\\n    return false\\n    function Wn(e, t) {\\n        for (var n = 0, r = t.length, o = e.length; n < r; n++,\\n        o++)\\n            e[o] = t[n];\\n        return e\\n    }\\n    ;function Vn(e, t) {\\n        var n = \\\"function\\\" == typeof Symbol && e[Symbol.iterator];\\n        if (!n)\\n            return e;\\n        var r, o, i = n.call(e), a = [];\\n        try {\\n            for (; (void 0 === t || t-- > 0) && !(r = i.next()).done; )\\n                a.push(r.value)\\n        } catch (e) {\\n            o = {\\n                error: e\\n            }\\n        } finally {\\n            try {\\n                r && !r.done && (n = i.return) && n.call(i)\\n            } finally {\\n                if (o)\\n                    throw o.error\\n            }\\n        }\\n        return a\\n    }\\n    ;qr = function(e, t, n) {\\n        return function() {\\n            for (var r = [], o = 0; o < arguments.length; o++)\\n                r[o] = arguments[o];\\n            if (!e)\\n                return hr;\\n            var i = e[t]\\n              , a = n.apply(void 0, Wn([i], Vn(r)))\\n              , s = a;\\n            return Yn(s) && (s = function() {\\n                for (var e = [], t = 0; t < arguments.length; t++)\\n                    e[t] = arguments[t];\\n                try {\\n                    return a.apply(this, e)\\n                } catch (t) {\\n                    return Yn(i) && i.apply(this, e)\\n                }\\n            }\\n            ),\\n            e[t] = s,\\n            function(n) {\\n                n && s !== e[t] || (e[t] = i)\\n            }\\n        }\\n    }\\n    ;\\n    function Yn(e) {\\n        return \\\"function\\\" == typeof e\\n    }\\n    ;Jr = function(e) {\\n        return qr(e, \\\"onreadystatechange\\\", (function(t, n, r, o, i) {\\n            return function() {\\n                for (var a = [], s = 0; s < arguments.length; s++)\\n                    a[s] = arguments[s];\\n                return 4 === this.readyState && o && o({\\n                    name: Gr,\\n                    type: \\\"get\\\",\\n                    event: Wr(e, n, r, i)\\n                }),\\n                t && t.apply(this, a)\\n            }\\n        }\\n        ))\\n    }\\n    ;\\n    n = function(t) {\\n        r.chechIsReady() ? e.prototype.sendEvent.call(r, t) : r.preQueue.push(t)\\n    }\\n    ;\\n    function ew() {\\n        var t = this\\n          , n = this.openArgs\\n          , r = arguments\\n          , o = n[0] || \\\"GET\\\"\\n          , i = new URL(n[1],window.location.href);\\n    }\\n    ;function a() {\\n        for (var i = [], a = 0; a < arguments.length; a++)\\n            i[a] = arguments[a];\\n        return Jr(this)({}, null, n, \\\"https://www.douyin.com/\\\"),\\n        this._start = Date.now(),\\n        this._data = null == i ? void 0 : i[0],\\n        ew.apply(this, i)\\n    }\\n    ;for (var e = [], t = 0; t < arguments.length; t++)\\n        e[t] = arguments[t];\\n    return a.apply(this, e)\\n}\\n;\\nXMLHttpRequest.prototype.overrideMimeType = function overrideMimeType() {}\\n;\\nXMLHttpRequest.prototype[Symbol.toStringTag] = \\\"XMLHttpRequest\\\";\\nvar window = {\\n    queueMicrotask: undefined,\\n    setTimeout: undefined,\\n    setInterval: undefined,\\n    clearTimeout: undefined,\\n    clearInterval: undefined,\\n    TextEncoder: undefined,\\n    URLSearchParams: undefined,\\n    URL: undefined,\\n    WebAssembly: undefined,\\n    //WeakRef: WeakRef,\\n    //FinalizationRegistry: FinalizationRegistry,\\n    Atomics: undefined,\\n    SharedArrayBuffer: undefined,\\n    isNaN: undefined,\\n    isFinite: undefined,\\n    eval: eval,\\n    unescape: undefined,\\n    escape: undefined,\\n    encodeURIComponent: encodeURIComponent,\\n    encodeURI: encodeURI,\\n    decodeURIComponent: decodeURIComponent,\\n    decodeURI: decodeURI,\\n    Reflect: undefined,\\n    Proxy: undefined,\\n    WeakSet: undefined,\\n    WeakMap: undefined,\\n    Set: undefined,\\n    BigInt: undefined,\\n    Map: undefined,\\n    DataView: undefined,\\n    BigInt64Array: undefined,\\n    BigUint64Array: undefined,\\n    Uint8ClampedArray: undefined,\\n    Float64Array: undefined,\\n    Float32Array: undefined,\\n    Int32Array: undefined,\\n    Uint32Array: undefined,\\n    Int16Array: undefined,\\n    Uint16Array: undefined,\\n    Int8Array: undefined,\\n    Uint8Array: undefined,\\n    ArrayBuffer: undefined,\\n    Intl: undefined,\\n    Math: Math,\\n    JSON: JSON,\\n    URIError: undefined,\\n    TypeError: undefined,\\n    SyntaxError: undefined,\\n    ReferenceError: undefined,\\n    RangeError: undefined,\\n    EvalError: undefined,\\n    Error: undefined,\\n    Promise: undefined,\\n    Date: Date,\\n    Symbol: undefined,\\n    String: String,\\n    Boolean: Boolean,\\n    undefined: undefined,\\n    NaN: NaN,\\n    Infinity: Infinity,\\n    parseInt: parseInt,\\n    parseFloat: parseFloat,\\n    Number: Number,\\n    Array: Array,\\n    Function: Function,\\n    Object: Object,\\n    navigator: undefined,\\n    location: location,\\n    document: document,\\n    history: history,\\n    indexedDB: undefined,\\n    localStorage: undefined,\\n    sessionStorage: undefined,\\n    RegExp: RegExp,\\n    XMLHttpRequest: XMLHttpRequest,\\n    fetch: function fetch() {return \\\"[native code]\\\"},\\n    console: console,\\n    HTMLElement: function HTMLElement() {},\\n    chrome: {\\n        \\\"app\\\": {\\n            \\\"isInstalled\\\": false,\\n            \\\"InstallState\\\": {\\n                \\\"DISABLED\\\": \\\"disabled\\\",\\n                \\\"INSTALLED\\\": \\\"installed\\\",\\n                \\\"NOT_INSTALLED\\\": \\\"not_installed\\\"\\n            },\\n            \\\"RunningState\\\": {\\n                \\\"CANNOT_RUN\\\": \\\"cannot_run\\\",\\n                \\\"READY_TO_RUN\\\": \\\"ready_to_run\\\",\\n                \\\"RUNNING\\\": \\\"running\\\"\\n            }\\n        },\\n        \\\"runtime\\\": {\\n            connect: function connect() {return \\\"[native code]\\\"},\\n            \\\"OnInstalledReason\\\": {\\n                \\\"CHROME_UPDATE\\\": \\\"chrome_update\\\",\\n                \\\"INSTALL\\\": \\\"install\\\",\\n                \\\"SHARED_MODULE_UPDATE\\\": \\\"shared_module_update\\\",\\n                \\\"UPDATE\\\": \\\"update\\\"\\n            },\\n            \\\"OnRestartRequiredReason\\\": {\\n                \\\"APP_UPDATE\\\": \\\"app_update\\\",\\n                \\\"OS_UPDATE\\\": \\\"os_update\\\",\\n                \\\"PERIODIC\\\": \\\"periodic\\\"\\n            },\\n            \\\"PlatformArch\\\": {\\n                \\\"ARM\\\": \\\"arm\\\",\\n                \\\"ARM64\\\": \\\"arm64\\\",\\n                \\\"MIPS\\\": \\\"mips\\\",\\n                \\\"MIPS64\\\": \\\"mips64\\\",\\n                \\\"X86_32\\\": \\\"x86-32\\\",\\n                \\\"X86_64\\\": \\\"x86-64\\\"\\n            },\\n            \\\"PlatformNaclArch\\\": {\\n                \\\"ARM\\\": \\\"arm\\\",\\n                \\\"MIPS\\\": \\\"mips\\\",\\n                \\\"MIPS64\\\": \\\"mips64\\\",\\n                \\\"X86_32\\\": \\\"x86-32\\\",\\n                \\\"X86_64\\\": \\\"x86-64\\\"\\n            },\\n            \\\"PlatformOs\\\": {\\n                \\\"ANDROID\\\": \\\"android\\\",\\n                \\\"CROS\\\": \\\"cros\\\",\\n                \\\"LINUX\\\": \\\"linux\\\",\\n                \\\"MAC\\\": \\\"mac\\\",\\n                \\\"OPENBSD\\\": \\\"openbsd\\\",\\n                \\\"WIN\\\": \\\"win\\\"\\n            },\\n            \\\"RequestUpdateCheckStatus\\\": {\\n                \\\"NO_UPDATE\\\": \\\"no_update\\\",\\n                \\\"THROTTLED\\\": \\\"throttled\\\",\\n                \\\"UPDATE_AVAILABLE\\\": \\\"update_available\\\"\\n            }\\n        }\\n    }\\n};\\nwindow[Symbol.toStringTag] = \\\"Window\\\";\\nnavigator[Symbol.toStringTag] = \\\"Navigator\\\";\\nlocation[Symbol.toStringTag] = \\\"Location\\\";\\ndocument[Symbol.toStringTag] = \\\"HTMLDocument\\\";\\nhistory[Symbol.toStringTag] = \\\"History\\\";\\nindexedDB[Symbol.toStringTag] = \\\"IDBFactory\\\";\\nlocalStorage[Symbol.toStringTag] = \\\"Storage\\\";\\nsessionStorage[Symbol.toStringTag] = \\\"Storage\\\";\\nObject.prototype.constructor.getOwnPropertyNames = function(x) {\\n    if (toString.call(x) == \\\"[object Navigator]\\\") {\\n        return []\\n    } else {\\n        return Object.keys(x)\\n    }\\n}\\n\\nfunction mu_() {\\n    var e = [];\\n    var a = \\\"123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ\\\";\\n    for (var b = 0; b < 28; b++) {\\n        e[b] = a[Math.floor(Math.random() * a.length)]\\n    }\\n    ;return e.join('')\\n}\\n\\n\\nObject.freeze(navigator);\\nObject.freeze(document);\\nObject.freeze(location);\\nObject.freeze(history);\\nObject.freeze(indexedDB);\\n//Object.freeze(localStorage);\\n//Object.freeze(sessionStorage);\\n\\nvar glb;\\n(glb = \\\"undefined\\\" == typeof window ? global : window)._$jsvmprt = function(b, e, f) {\\n    function a() {\\n        if (\\\"undefined\\\" == typeof Reflect || !Reflect.construct)\\n            return !1;\\n        if (Reflect.construct.sham)\\n            return !1;\\n        if (\\\"function\\\" == typeof Proxy)\\n            return !0;\\n        try {\\n            return Date.prototype.toString.call(Reflect.construct(Date, [], (function() {}\\n            ))),\\n            !0\\n        } catch (b) {\\n            return !1\\n        }\\n    }\\n    function d(b, e, f) {\\n        return (d = a() ? Reflect.construct : function(b, e, f) {\\n            var a = [null];\\n            a.push.apply(a, e);\\n            var d = new (Function.bind.apply(b, a));\\n            return f && c(d, f.prototype),\\n            d\\n        }\\n        ).apply(null, arguments)\\n    }\\n    function c(b, e) {\\n        return (c = Object.setPrototypeOf || function(b, e) {\\n            return b.__proto__ = e,\\n            b\\n        }\\n        )(b, e)\\n    }\\n    function n(b) {\\n        return function(b) {\\n            if (Array.isArray(b)) {\\n                for (var e = 0, f = new Array(b.length); e < b.length; e++)\\n                    f[e] = b[e];\\n                return f\\n            }\\n        }(b) || function(b) {\\n            if (Symbol.iterator in Object(b) || \\\"[object Arguments]\\\" === Object.prototype.toString.call(b))\\n                return Array.from(b)\\n        }(b) || function() {\\n            throw new TypeError(\\\"Invalid attempt to spread non-iterable instance\\\")\\n        }()\\n    }\\n    for (var i = [], r = 0, t = [], o = 0, l = function(b, e) {\\n        var f = b[e++]\\n          , a = b[e]\\n          , d = parseInt(\\\"\\\" + f + a, 16);\\n        if (d >> 7 == 0)\\n            return [1, d];\\n        if (d >> 6 == 2) {\\n            var c = parseInt(\\\"\\\" + b[++e] + b[++e], 16);\\n            return d &= 63,\\n            [2, c = (d <<= 8) + c]\\n        }\\n        if (d >> 6 == 3) {\\n            var n = parseInt(\\\"\\\" + b[++e] + b[++e], 16)\\n              , i = parseInt(\\\"\\\" + b[++e] + b[++e], 16);\\n            return d &= 63,\\n            [3, i = (d <<= 16) + (n <<= 8) + i]\\n        }\\n    }, u = function(b, e) {\\n        var f = parseInt(\\\"\\\" + b[e] + b[e + 1], 16);\\n        return f = f > 127 ? -256 + f : f\\n    }, s = function(b, e) {\\n        var f = parseInt(\\\"\\\" + b[e] + b[e + 1] + b[e + 2] + b[e + 3], 16);\\n        return f = f > 32767 ? -65536 + f : f\\n    }, p = function(b, e) {\\n        var f = parseInt(\\\"\\\" + b[e] + b[e + 1] + b[e + 2] + b[e + 3] + b[e + 4] + b[e + 5] + b[e + 6] + b[e + 7], 16);\\n        return f = f > 2147483647 ? 0 + f : f\\n    }, y = function(b, e) {\\n        return parseInt(\\\"\\\" + b[e] + b[e + 1], 16)\\n    }, v = function(b, e) {\\n        return parseInt(\\\"\\\" + b[e] + b[e + 1] + b[e + 2] + b[e + 3], 16)\\n    }, g = g || window || window, h = Object.keys || function(b) {\\n        var e = {}\\n          , f = 0;\\n        for (var a in b)\\n            e[f++] = a;\\n        return e.length = f,\\n        e\\n    }\\n    , m = (b.length,\\n    0), I = \\\"\\\", C = m; C < m + 16; C++) {\\n        var q = \\\"\\\" + b[C++] + b[C];\\n        q = parseInt(q, 16),\\n        I += String.fromCharCode(q)\\n    }\\n    if (\\\"HNOJ@?RC\\\" != I)\\n        throw new Error(\\\"error magic number \\\" + I);\\n    m += 16;\\n    parseInt(\\\"\\\" + b[m] + b[m + 1], 16);\\n    m += 8,\\n    r = 0;\\n    for (var w = 0; w < 4; w++) {\\n        var S = m + 2 * w\\n          , R = \\\"\\\" + b[S++] + b[S]\\n          , x = parseInt(R, 16);\\n        r += (3 & x) << 2 * w\\n    }\\n    m += 16,\\n    m += 8;\\n    var z = parseInt(\\\"\\\" + b[m] + b[m + 1] + b[m + 2] + b[m + 3] + b[m + 4] + b[m + 5] + b[m + 6] + b[m + 7], 16)\\n      , O = z\\n      , E = m += 8\\n      , j = v(b, m += z);\\n    j[1];\\n    m += 4,\\n    i = {\\n        p: [],\\n        q: []\\n    };\\n    for (var A = 0; A < j; A++) {\\n        for (var D = l(b, m), T = m += 2 * D[0], $ = i.p.length, P = 0; P < D[1]; P++) {\\n            var U = l(b, T);\\n            i.p.push(U[1]),\\n            T += 2 * U[0]\\n        }\\n        m = T,\\n        i.q.push([$, i.p.length])\\n    }\\n    var _ = {\\n        5: 1,\\n        6: 1,\\n        70: 1,\\n        22: 1,\\n        23: 1,\\n        37: 1,\\n        73: 1\\n    }\\n      , k = {\\n        72: 1\\n    }\\n      , M = {\\n        74: 1\\n    }\\n      , H = {\\n        11: 1,\\n        12: 1,\\n        24: 1,\\n        26: 1,\\n        27: 1,\\n        31: 1\\n    }\\n      , J = {\\n        10: 1\\n    }\\n      , N = {\\n        2: 1,\\n        29: 1,\\n        30: 1,\\n        20: 1\\n    }\\n      , B = []\\n      , W = [];\\n    function F(b, e, f) {\\n        for (var a = e; a < e + f; ) {\\n            var d = y(b, a);\\n            B[a] = d,\\n            a += 2;\\n            k[d] ? (W[a] = u(b, a),\\n            a += 2) : _[d] ? (W[a] = s(b, a),\\n            a += 4) : M[d] ? (W[a] = p(b, a),\\n            a += 8) : H[d] ? (W[a] = y(b, a),\\n            a += 2) : J[d] ? (W[a] = v(b, a),\\n            a += 4) : N[d] && (W[a] = v(b, a),\\n            a += 4)\\n        }\\n    }\\n    return K(b, E, O / 2, [], e, f);\\n    function G(b, e, f, a, c, l, m, I) {\\n        null == l && (l = window);\\n        var C, q, w, S = [], R = 0;\\n        m && (C = m);\\n        var x, z, O = e, E = O + 2 * f;\\n        if (!I)\\n            for (; O < E; ) {\\n                var j = parseInt(\\\"\\\" + b[O] + b[O + 1], 16);\\n                O += 2;\\n                var A = 3 & (x = 13 * j % 241);\\n                if (x >>= 2,\\n                A < 1) {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A > 2)\\n                        (A = x) > 10 ? S[++R] = void 0 : A > 1 ? (C = S[R--],\\n                        S[R] = S[R] >= C) : A > -1 && (S[++R] = null);\\n                    else if (A > 1) {\\n                        if ((A = x) > 11)\\n                            throw S[R--];\\n                        if (A > 7) {\\n                            for (C = S[R--],\\n                            z = v(b, O),\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);\\n                            O += 4,\\n                            S[R--][A] = C\\n                        } else\\n                            A > 5 && (S[R] = h(S[R]))\\n                    } else if (A > 0) {\\n                        (A = x) > 8 ? (C = S[R--],\\n                        S[R] = typeof C) : A > 6 ? S[R] = --S[R] : A > 4 ? S[R -= 1] = S[R][S[R + 1]] : A > 2 && (q = S[R--],\\n                        (A = S[R]).x === G ? A.y >= 1 ? S[R] = K(b, A.c, A.l, [q], A.z, w, null, 1) : (S[R] = K(b, A.c, A.l, [q], A.z, w, null, 0),\\n                        A.y++) : S[R] = A(q))\\n                    } else {\\n                        if ((A = x) > 14)\\n                            z = s(b, O),\\n                            (U = function e() {\\n                                var f = arguments;\\n                                return e.y > 0 ? K(b, e.c, e.l, f, e.z, this, null, 0) : (e.y++,\\n                                K(b, e.c, e.l, f, e.z, this, null, 0))\\n                            }\\n                            ).c = O + 4,\\n                            U.l = z - 2,\\n                            U.x = G,\\n                            U.y = 0,\\n                            U.z = c,\\n                            S[R] = U,\\n                            O += 2 * z - 2;\\n                        else if (A > 12)\\n                            q = S[R--],\\n                            w = S[R--],\\n                            (A = S[R--]).x === G ? A.y >= 1 ? S[++R] = K(b, A.c, A.l, q, A.z, w, null, 1) : (S[++R] = K(b, A.c, A.l, q, A.z, w, null, 0),\\n                            A.y++) : S[++R] = A.apply(w, q);\\n                        else if (A > 5)\\n                            C = S[R--],\\n                            S[R] = S[R] != C;\\n                        else if (A > 3)\\n                            C = S[R--],\\n                            S[R] = S[R] * C;\\n                        else if (A > -1)\\n                            return [1, S[R--]]\\n                    }\\n                } else if (A < 2) {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A < 1) {\\n                        if ((A = x) > 9)\\n                            ;\\n                        else if (A > 7)\\n                            C = S[R--],\\n                            S[R] = S[R] & C;\\n                        else if (A > 5)\\n                            z = y(b, O),\\n                            O += 2,\\n                            S[R -= z] = 0 === z ? new S[R] : d(S[R], n(S.slice(R + 1, R + z + 1)));\\n                        else if (A > 3) {\\n                            z = s(b, O);\\n                            try {\\n                                if (t[o][2] = 1,\\n                                1 == (C = G(b, O + 4, z - 3, [], c, l, null, 0))[0])\\n                                    return C\\n                            } catch (m) {\\n                                if (t[o] && t[o][1] && 1 == (C = G(b, t[o][1][0], t[o][1][1], [], c, l, m, 0))[0])\\n                                    return C\\n                            } finally {\\n                                if (t[o] && t[o][0] && 1 == (C = G(b, t[o][0][0], t[o][0][1], [], c, l, null, 0))[0])\\n                                    return C;\\n                                t[o] = 0,\\n                                o--\\n                            }\\n                            O += 2 * z - 2\\n                        }\\n                    } else if (A < 2) {\\n                        if ((A = x) > 12)\\n                            S[++R] = u(b, O),\\n                            O += 2;\\n                        else if (A > 10)\\n                            C = S[R--],\\n                            S[R] = S[R] << C;\\n                        else if (A > 8) {\\n                            for (z = v(b, O),\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);  if(O===4358){debugger}\\n                            O += 4;\\n                            if (S[R] === undefined) {\\n                                break;\\n                            }\\n                            S[R] = S[R][A]\\n                        } else\\n                            A > 6 && (q = S[R--],\\n                            C = delete S[R--][q])\\n                    } else if (A < 3) {\\n                        (A = x) < 2 ? S[++R] = C : A < 4 ? (C = S[R--],\\n                        S[R] = S[R] <= C) : A < 11 ? (C = S[R -= 2][S[R + 1]] = S[R + 2],\\n                        R--) : A < 13 && (C = S[R],\\n                        S[++R] = C)\\n                    } else {\\n                        if ((A = x) > 12)\\n                            S[++R] = l;\\n                        else if (A > 5)\\n                            C = S[R--],\\n                            S[R] = S[R] !== C;\\n                        else if (A > 3)\\n                            C = S[R--],\\n                            S[R] = S[R] / C;\\n                        else if (A > 1) {\\n                            if ((z = s(b, O)) < 0) {\\n                                I = 1,\\n                                F(b, e, 2 * f),\\n                                O += 2 * z - 2;\\n                                break\\n                            }\\n                            O += 2 * z - 2\\n                        } else\\n                            A > -1 && (S[R] = !S[R])\\n                    }\\n                } else if (A < 3) {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A > 2)\\n                        (A = x) > 7 ? (C = S[R--],\\n                        S[R] = S[R] | C) : A > 5 ? (z = y(b, O),\\n                        O += 2,\\n                        S[++R] = c[\\\"$\\\" + z]) : A > 3 && (z = s(b, O),\\n                        t[o][0] && !t[o][2] ? t[o][1] = [O + 4, z - 3] : t[o++] = [0, [O + 4, z - 3], 0],\\n                        O += 2 * z - 2);\\n                    else if (A > 1) {\\n                        if ((A = x) < 2) {\\n                            for (z = v(b, O),\\n                            C = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                C += String.fromCharCode(r ^ i.p[P]);\\n                            S[++R] = C,\\n                            O += 4\\n                        } else if (A < 4)\\n                            if (S[R--])\\n                                O += 4;\\n                            else {\\n                                if ((z = s(b, O)) < 0) {\\n                                    I = 1,\\n                                    F(b, e, 2 * f),\\n                                    O += 2 * z - 2;\\n                                    break\\n                                }\\n                                O += 2 * z - 2\\n                            }\\n                        else\\n                            A < 6 ? (C = S[R--],\\n                            S[R] = S[R] % C) : A < 8 ? (C = S[R--],\\n                            S[R] = S[R]instanceof C) : A < 15 && (S[++R] = !1)\\n                    } else if (A > 0) {\\n                        (A = x) < 1 ? S[++R] = g : A < 3 ? (C = S[R--],\\n                        S[R] = S[R] + C) : A < 5 ? (C = S[R--],\\n                        S[R] = S[R] == C) : A < 14 && (C = S[R - 1],\\n                        q = S[R],\\n                        S[++R] = C,\\n                        S[++R] = q)\\n                    } else {\\n                        (A = x) < 2 ? (C = S[R--],\\n                        S[R] = S[R] > C) : A < 9 ? (z = v(b, O),\\n                        O += 4,\\n                        q = R + 1,\\n                        S[R -= z - 1] = z ? S.slice(R, q) : []) : A < 11 ? (z = y(b, O),\\n                        O += 2,\\n                        C = S[R--],\\n                        c[z] = C) : A < 13 ? (C = S[R--],\\n                        S[R] = S[R] >> C) : A < 15 && (S[++R] = s(b, O),\\n                        O += 4)\\n                    }\\n                } else {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A > 2)\\n                        (A = x) > 13 ? (S[++R] = p(b, O),\\n                        O += 8) : A > 11 ? (C = S[R--],\\n                        S[R] = S[R] >>> C) : A > 9 ? S[++R] = !0 : A > 7 ? (z = y(b, O),\\n                        O += 2,\\n                        S[R] = S[R][z]) : A > 0 && (C = S[R--],\\n                        S[R] = S[R] < C);\\n                    else if (A > 1) {\\n                        (A = x) > 10 ? (z = s(b, O),\\n                        t[++o] = [[O + 4, z - 3], 0, 0],\\n                        O += 2 * z - 2) : A > 8 ? (C = S[R--],\\n                        S[R] = S[R] ^ C) : A > 6 && (C = S[R--])\\n                    } else if (A > 0) {\\n                        if ((A = x) < 3) {\\n                            var D = 0\\n                              , T = S[R].length\\n                              , $ = S[R];\\n                            S[++R] = function() {\\n                                var b = D < T;\\n                                if (b) {\\n                                    var e = $[D++];\\n                                    S[++R] = e\\n                                }\\n                                S[++R] = b\\n                            }\\n                        } else\\n                            A < 5 ? (z = y(b, O),\\n                            O += 2,\\n                            C = c[z],\\n                            S[++R] = C) : A < 7 ? S[R] = ++S[R] : A < 9 && (C = S[R--],\\n                            S[R] = S[R]in C)\\n                    } else {\\n                        if ((A = x) > 13)\\n                            C = S[R],\\n                            S[R] = S[R - 1],\\n                            S[R - 1] = C;\\n                        else if (A > 4)\\n                            C = S[R--],\\n                            S[R] = S[R] === C;\\n                        else if (A > 2)\\n                            C = S[R--],\\n                            S[R] = S[R] - C;\\n                        else if (A > 0) {\\n                            for (z = v(b, O),\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);\\n                            A = +A,\\n                            O += 4,\\n                            S[++R] = A\\n                        }\\n                    }\\n                }\\n            }\\n        if (I)\\n            for (; O < E; ) {\\n                j = B[O];\\n                O += 2;\\n                A = 3 & (x = 13 * j % 241);\\n                if (x >>= 2,\\n                A < 1) {\\n                    var U;\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A < 1) {\\n                        if ((A = x) > 14)\\n                            z = W[O],\\n                            (U = function e() {\\n                                var f = arguments;\\n                                return e.y > 0 ? K(b, e.c, e.l, f, e.z, this, null, 0) : (e.y++,\\n                                K(b, e.c, e.l, f, e.z, this, null, 0))\\n                            }\\n                            ).c = O + 4,\\n                            U.l = z - 2,\\n                            U.x = G,\\n                            U.y = 0,\\n                            U.z = c,\\n                            S[R] = U,\\n                            O += 2 * z - 2;\\n                        else if (A > 12)\\n                            q = S[R--],\\n                            w = S[R--],\\n                            (A = S[R--]).x === G ? A.y >= 1 ? S[++R] = K(b, A.c, A.l, q, A.z, w, null, 1) : (S[++R] = K(b, A.c, A.l, q, A.z, w, null, 0),\\n                            A.y++) : S[++R] = A.apply(w, q);\\n                        else if (A > 5)\\n                            C = S[R--],\\n                            S[R] = S[R] != C;\\n                        else if (A > 3)\\n                            C = S[R--],\\n                            S[R] = S[R] * C;\\n                        else if (A > -1)\\n                            return [1, S[R--]]\\n                    } else if (A < 2) {\\n                        (A = x) < 4 ? (q = S[R--],\\n                        (A = S[R]).x === G ? A.y >= 1 ? S[R] = K(b, A.c, A.l, [q], A.z, w, null, 1) : (S[R] = K(b, A.c, A.l, [q], A.z, w, null, 0),\\n                        A.y++) : S[R] = A(q)) : A < 6 ? S[R -= 1] = S[R][S[R + 1]] : A < 8 ? S[R] = --S[R] : A < 10 && (C = S[R--],\\n                        S[R] = typeof C)\\n                    } else if (A < 3) {\\n                        if ((A = x) > 11)\\n                            throw S[R--];\\n                        if (A > 7) {\\n                            for (C = S[R--],\\n                            z = W[O],\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);\\n                            O += 4,\\n                            S[R--][A] = C\\n                        } else\\n                            A > 5 && (S[R] = h(S[R]))\\n                    } else {\\n                        (A = x) < 1 ? S[++R] = null : A < 3 ? (C = S[R--],\\n                        S[R] = S[R] >= C) : A < 12 && (S[++R] = void 0)\\n                    }\\n                } else if (A < 2) {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A > 2)\\n                        (A = x) > 12 ? S[++R] = l : A > 5 ? (C = S[R--],\\n                        S[R] = S[R] !== C) : A > 3 ? (C = S[R--],\\n                        S[R] = S[R] / C) : A > 1 ? O += 2 * (z = W[O]) - 2 : A > -1 && (S[R] = !S[R]);\\n                    else if (A > 1) {\\n                        (A = x) < 2 ? S[++R] = C : A < 4 ? (C = S[R--],\\n                        S[R] = S[R] <= C) : A < 11 ? (C = S[R -= 2][S[R + 1]] = S[R + 2],\\n                        R--) : A < 13 && (C = S[R],\\n                        S[++R] = C)\\n                    } else if (A > 0) {\\n                        if ((A = x) < 8)\\n                            q = S[R--],\\n                            C = delete S[R--][q];\\n                        else if (A < 10) {\\n                            for (z = W[O],\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);\\n                            O += 4,\\n                            S[R] = S[R][A]\\n                        } else\\n                            A < 12 ? (C = S[R--],\\n                            S[R] = S[R] << C) : A < 14 && (S[++R] = W[O],\\n                            O += 2)\\n                    } else {\\n                        if ((A = x) < 5) {\\n                            z = W[O];\\n                            try {\\n                                if (t[o][2] = 1,\\n                                1 == (C = G(b, O + 4, z - 3, [], c, l, null, 0))[0])\\n                                    return C\\n                            } catch (m) {\\n                                if (t[o] && t[o][1] && 1 == (C = G(b, t[o][1][0], t[o][1][1], [], c, l, m, 0))[0])\\n                                    return C\\n                            } finally {\\n                                if (t[o] && t[o][0] && 1 == (C = G(b, t[o][0][0], t[o][0][1], [], c, l, null, 0))[0])\\n                                    return C;\\n                                t[o] = 0,\\n                                o--\\n                            }\\n                            O += 2 * z - 2\\n                        } else\\n                            A < 7 ? (z = W[O],\\n                            O += 2,\\n                            S[R -= z] = 0 === z ? new S[R] : d(S[R], n(S.slice(R + 1, R + z + 1)))) : A < 9 && (C = S[R--],\\n                            S[R] = S[R] & C)\\n                    }\\n                } else if (A < 3) {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A < 1)\\n                        (A = x) < 2 ? (C = S[R--],\\n                        S[R] = S[R] > C) : A < 9 ? (z = W[O],\\n                        O += 4,\\n                        q = R + 1,\\n                        S[R -= z - 1] = z ? S.slice(R, q) : []) : A < 11 ? (z = W[O],\\n                        O += 2,\\n                        C = S[R--],\\n                        c[z] = C) : A < 13 ? (C = S[R--],\\n                        S[R] = S[R] >> C) : A < 15 && (S[++R] = W[O],\\n                        O += 4);\\n                    else if (A < 2) {\\n                        (A = x) < 1 ? S[++R] = g : A < 3 ? (C = S[R--],\\n                        S[R] = S[R] + C) : A < 5 ? (C = S[R--],\\n                        S[R] = S[R] == C) : A < 14 && (C = S[R - 1],\\n                        q = S[R],\\n                        S[++R] = C,\\n                        S[++R] = q)\\n                    } else if (A < 3) {\\n                        if ((A = x) < 2) {\\n                            for (z = W[O],\\n                            C = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                C += String.fromCharCode(r ^ i.p[P]);\\n                            S[++R] = C,\\n                            O += 4\\n                        } else\\n                            A < 4 ? S[R--] ? O += 4 : O += 2 * (z = W[O]) - 2 : A < 6 ? (C = S[R--],\\n                            S[R] = S[R] % C) : A < 8 ? (C = S[R--],\\n                            S[R] = S[R]instanceof C) : A < 15 && (S[++R] = !1)\\n                    } else {\\n                        (A = x) > 7 ? (C = S[R--],\\n                        S[R] = S[R] | C) : A > 5 ? (z = W[O],\\n                        O += 2,\\n                        S[++R] = c[\\\"$\\\" + z]) : A > 3 && (z = W[O],\\n                        t[o][0] && !t[o][2] ? t[o][1] = [O + 4, z - 3] : t[o++] = [0, [O + 4, z - 3], 0],\\n                        O += 2 * z - 2)\\n                    }\\n                } else {\\n                    A = 3 & x;\\n                    if (x >>= 2,\\n                    A > 2)\\n                        (A = x) > 13 ? (S[++R] = W[O],\\n                        O += 8) : A > 11 ? (C = S[R--],\\n                        S[R] = S[R] >>> C) : A > 9 ? S[++R] = !0 : A > 7 ? (z = W[O],\\n                        O += 2,\\n                        S[R] = S[R][z]) : A > 0 && (C = S[R--],\\n                        S[R] = S[R] < C);\\n                    else if (A > 1) {\\n                        (A = x) > 10 ? (z = W[O],\\n                        t[++o] = [[O + 4, z - 3], 0, 0],\\n                        O += 2 * z - 2) : A > 8 ? (C = S[R--],\\n                        S[R] = S[R] ^ C) : A > 6 && (C = S[R--])\\n                    } else if (A > 0) {\\n                        if ((A = x) > 7)\\n                            C = S[R--],\\n                            S[R] = S[R]in C;\\n                        else if (A > 5)\\n                            S[R] = ++S[R];\\n                        else if (A > 3)\\n                            z = W[O],\\n                            O += 2,\\n                            C = c[z],\\n                            S[++R] = C;\\n                        else if (A > 1) {\\n                            D = 0,\\n                            T = S[R].length,\\n                            $ = S[R];\\n                            S[++R] = function() {\\n                                var b = D < T;\\n                                if (b) {\\n                                    var e = $[D++];\\n                                    S[++R] = e\\n                                }\\n                                S[++R] = b\\n                            }\\n                        }\\n                    } else {\\n                        if ((A = x) < 2) {\\n                            for (z = W[O],\\n                            A = \\\"\\\",\\n                            P = i.q[z][0]; P < i.q[z][1]; P++)\\n                                A += String.fromCharCode(r ^ i.p[P]);\\n                            A = +A,\\n                            O += 4,\\n                            S[++R] = A\\n                        } else\\n                            A < 4 ? (C = S[R--],\\n                            S[R] = S[R] - C) : A < 6 ? (C = S[R--],\\n                            S[R] = S[R] === C) : A < 15 && (C = S[R],\\n                            S[R] = S[R - 1],\\n                            S[R - 1] = C)\\n                    }\\n                }\\n            }\\n        return [0, null]\\n    }\\n    function K(b, e, f, a, d, c, n, i) {\\n        var r, t;\\n        null == c && (c = window),\\n        d && !d.d && (d.d = 0,\\n        d.$0 = d,\\n        d[1] = {});\\n        var o = {}\\n          , l = o.d = d ? d.d + 1 : 0;\\n        for (o[\\\"$\\\" + l] = o,\\n        t = 0; t < l; t++)\\n            o[r = \\\"$\\\" + t] = d[r];\\n        for (t = 0,\\n        l = o.length = a.length; t < l; t++)\\n            o[t] = a[t];\\n        return i && !B[e] && F(b, e, 2 * f),\\n        B[e] ? G(b, e, f, 0, o, c, null, 1)[1] : G(b, e, f, 0, o, c, null, 0)[1]\\n    }\\n}\\n,\\n(glb = \\\"undefined\\\" == typeof window ? global : window)._$jsvmprt(\\\"484e4f4a403f5243000d2d1aea78184c36c3d671000000000000ab44020000250074211b000b02430200013e2217000e1c211b000b03430200024017000e18011b000b02041c16004c211b000b04430200033e2217000b1c1b000b041e00041700181b000b04260200050a000118010a0002101c16001e180022011700051c131f0018011800131e00061a001d000727041c00261102000025552002000825000d1b000b081e00090101001f0702000a25000e211b000b094302000240001f0802000b25005b131e000c02000d02000e1a02221e000f24131e00100a000110220117003c1c0200002500131800221e0011240a0000100200123e00131e001301220117001a1c211b000b0a43020002402217000b1c1b000b0a1e001404001f090200152500131b000b0b1a00221e0016240a000010001f0a020017250039211800430200023e22011700081c1800263e17000702000000211800430200183e170012180017000902001916000602001a001800001f0b02001b25005218010117000802001c1f010200001f0618001f0e180e480039170033180618011b000b0c221e001d241b000b0c221e001e240a00001018011e001f2a0a00011019281f06180e2e1f0e16ffcb1806001f0c0200202500df0200021f0621134318063e22011700121c13221e0011240a00001002002140220117001c1c1b000b051e00221e0011221e002324130a00011002002140220117000d1c211b000b084318063e22011700201c1b000b08221e0011240a000010221e0024240200250a00011048003a220117000d1c211b000b0d4318063e22011700151c1b000b0d221e0011240a00001002002640220117000d1c211b000b0e4318063e17000520001b020b07260a00001001170028211b000b0f4318063e22011700151c1b000b0f221e0011240a00001002002740170005200012001f0d0200282500a3211801430200294017000400180002002a281f061801221e002b24131e000c02002c0200001a020a0001101f0748001f12181218071e001f3a17006618071812191f081808221e002d2448000a00011002002e3e17001a1808221e002f24480118081e001f0a0002101f0816ffd81808221e00242418060a00011048003e1700191808221e002f2418061e001f18081e001f0a0002100018122d1f1216ff95001f0e02003025007146000306000a271f22020000000500600200001f06131e003117001c131e0031221e00322418000a0001101f061806170006180600131e003317001c131e0033221e00322418000a0001101f0618061700061806001b020b0e2618001b000b081e00340a0002101f0618060007001f0f02003525009c460003060006271f2205008f131e0031170015131e0031221e003624180018010a0002101c131e0033170015131e0033221e003624180018010a0002101c49016d48182a483c2a483c2a4903e82a1f061b000b081800020037281d00341b000b08180002002a28180128020038281b000b0b1b000b0b1a00221e0016240a0000101806281a01221e0039240a0000102802003a281d003407001f1002003b25004c460003060006271f1e05003f131e0031170013131e0031221e003c2418000a0001101c131e0033170013131e0033221e003c2418000a0001101c1b000b081800020037281d003407001f1102003d2500a31b000b101a001f061b000b05221e003e24180602003f131e00061a002202000025000c1b030b00201d0040001d00410a0003101c1b000b11221e00422402004318060a0002101c13221700081c131e00442217000b1c131e00441e00451700091800201d00401b020b08260a00001017003013221700221c131e0046131e00472948643922011700101c131e0048131e0049294864391700091800201d0040001f1302004a25002b211343020002402217001f1c1b000b051e00221e0011221e002324131e004b0a00011002004c3e001f1402004d2500611b020b07260a0000100117005202004e1b000b0d420122011700111c1b000b0d1e004e1b000b12410122011700091c02004f134222011700091c020050134222011700091c0200511342220117000f1c020052134202005313423a0012001f150200542501661b000b0d1e005517000520000200561b000b05421700431b000b05221e0056241b000b0d0a0001101f101810221e0024240200550a00011048003b22011700151c1810221e0024240200570a00011048003b170005200013221700081c131e00582217000b1c131e00581e00592217000e1c131e00581e00591e005a17002a460003060006271f9605001e131e00581e0059221e005a240a0000101b000b063e17000520000702005b02005c02005d02005e02005f0200600200610200620200630200640200650a000b1f060200660200670200680a00031f07180708031fc918c921041700181fc8180718c8191fca1318ca19170005200016ffe7180608031fc918c9210417001b1fc8180618c8191fca131e006918ca19170005200016ffe4131e006908031fc918c921041700341fc818c8221e006a24131e000c02006b0200001a020a0001102217000f1c131e006918c81902006c19170005200016ffcb12001f1602006d2500c71b020b08260a0000101700291b000b13221e006e2402000f0a0001101f06180602000025000c1b030b00201d006f001d00701b020b09260a00001017005b46000306002c271f1a181a1e00711b000b14020072193e2217000e1c131e00311e001f48003e1700091800201d006f050029131e0031221e0036240200730200000a0002101c131e0031221e003c240200730a0001101c071b020b07260a000010170024131e007401221700121c131e007522011700081c131e00761700091800201d006f001f170200772500b11b020b07260a000010011700a21b000b08221e0078240200790a0001101f0618061e007a221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a220117003b1c1b000b0d1e0011221e0011240a000010221e007b24131e000c02007c02007d1a020200000a000210221e00242402007e0a00011048003a22011700181c1b000b0d1e004e221e0011240a00001002007f400012001f18020080250075131e000c0200810200001a021f0613221700081c131e00822217000b1c131e00821e008317004c131e00821e00831f071807221e0024240200840a00011048003e22011700151c1807221e0024240200850a00011048003e22011700111c1806221e000f2418070a000110170005200012001f190200862500961b020b1a1e008717000b1b020b1a1e00870046000306000a271f1e020000000500731b000b08221e0078240200790a0001101f0c180c221e0088240200890a0001101f0d180d221e008a2402008b0a0001101f0e180d221e008c24180e02008d190a0001101f0f180d221e008c24180e02008e190a0001101f10180f02008f281810281f111b020b1a18111d008718110007001f1b0200902501270200001f061b020b1a1e009117000f1b020b1a1e00911f061600fb48051f0e0a00001f0f1b000b0d1e004e1f10181022011700071c0a00001f1148001f121812180e3a1700b7460003060006271f3f0500a318111812191f130a00001f1448001f16181618131e001f3a1700371813221e00922418160a00011017001f1814221e0093241813221e00922418160a0001101e00940a0001101c18162d1f1616ffc418131e0095020000281f1518131e0096170011181518131e009602000028281f15181518131e009702000028281f1518151814221e0098240200000a000110281f15180f221e00932418150a0001101c0718122d1f1216ff47180f221e0098240200990a0001101f061b020b1a18061d00911806221e009a2448004904000a000210001f1c02009b2504631b000b0d1e009c221e009d240a0000101f061b000b0d1e009e221e009d240a0000101f0748001f0848011f0948021f0a48031f0b48041f0c48051f0d180d1f0e02009f1f0f0200a01f100200a11f110200a21f120200a31f130200a41f140200a51f150200a61f161806221e0024240200a70a00011048003b22011700151c1806221e0024240200a80a00011048003b17000a180c1f0e1600f71806221e002424180f0a00011048003b17000a18081f0e1600dd1806221e00242418110a00011048003b17000a18091f0e1600c31806221e00242418120a00011048003b22011700151c1806221e0024240200a90a00011048003b22011700151c1806221e0024240200aa0a00011048003b17000a180a1f0e16007b1806221e00242418130a00011048003b22011700141c1806221e00242418140a00011048003b22011700141c1806221e00242418150a00011048003b22011700151c1806221e0024240200ab0a00011048003b22011700151c1806221e0024240200ac0a00011048003b17000a180b1f0e160007180d1f0e1807221e00242418100a00011048003b221700091c180e18084017000820001601521807221e00242418120a00011048003b22011700141c1807221e00242418110a00011048003b22011700151c1807221e0024240200ad0a00011048003b221700091c180e180a40221700091c180e18094017000820001600f91807221e00242418160a00011048003b22011700141c1807221e00242418140a00011048003b22011700141c1807221e00242418150a00011048003b22011700141c1807221e00242418130a00011048003b221700091c180e180c40221700091c180e180b40170008200016008b1807221e00242418100a00011048003a221700141c1807221e00242418120a00011048003a221700141c1807221e00242418160a00011048003a221700141c1807221e00242418130a00011048003a221700141c1807221e00242418140a00011048003a221700141c1807221e00242418150a00011048003a1f001800180e180d3e40170005200048001f1748011f1848021f1948041f1a48051f1b181b1f1c1806221e0024240200ae0a00011048003b17000a18191f1c1600861806221e0024240200af0a00011048003b22011700151c1806221e0024240200b00a00011048003b17000a18181f1c1600541806221e0024240200b10a00011048003b17000a18171f1c1600391806221e0024240200b20a00011048003b22011700151c1806221e0024240200b30a00011048003b17000a181a1f1c160007181b1f1c1b020b1c260a000010221e009d240a0000101f1d1b020b1b260a000010221e009d240a0000101f1e181c18173f221700091c181c18183f2217002d1c131e005822011700231c1b000b0d1e00b4221e0011240a000010221e0024240200b50a00011048003b1700052000181c18173f221700091c181c18183f221700151c181d221e0024240200580a00011048003b1700052000181c181a3e2217000a1c181e0200003f170005200012001f1d0200b62500da261f0646000306000f271f121b000b081e00b71f060500191b000b08221e00b8240200b90a0001104800191f06071806263e170004001b000b08221e0078240200ba0a0001101f070200bb1b000b15264927101b000b0c221e001e240a0000102a480a0a000210280200bb281b000b0b1a00221e0016240a000010281f0818000200bc180828281f00180718001d00bd1318080200002500311b030b011800041c460003060006271f0c05001c1b030b06221e00be241b030b070a0001101c131b030b080907000d1806221e00bf2418070a0001101c001f1e0200c02500be18001e001f1f0618064802331f07180117003018001806480129191f0818074804291f07180818074803293a22011700091c1808180739170005260018081f0748001f09180918063a17004a180018091b000b16221e00c12418001809194900ff2f18001809194808354900ff2f18001809194810354900ff2f18001809194818354900ff2f0a0004100d18092d1f0916ffb41800221e0098240200000a0001101f0a1801170013180a221e002f24480018070a00021000180a001f200200c225007f18001e001f1f0618064802341f07180648032f48004017000818072d1f07180117001a1b000b1718074801281a011f081808180718060d16000d1b000b1718071a011f0848001f09180918063a17002c1808180948023423191800221e00c32418090a000110180948032f48033333300d18092d1f0916ffd21808001f210200c425000a18001400c52f001f220200c6250030180248053518014802333118014803351802480433312818001801311805180348032f180431191802312831001f230200c725001818001e001f48043a17000a180048041d001f1800001f240200c82500d618001e001f1f0618064801291f0718001807191f0948001f0a1b000b0c221e001d244806483418062b280a0001104800301f0d180d4800391700981b020b22180a1b020b1f28041f0a180a48023548032f1f0b48001f0c180c18073a17003d1800180c480128191f081800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061028040d271f09180c2d1f0c16ffc118004800191f08180018071b020b2218001807191b020b2326180a180818091807180b18010a00061028040d271f09180d2e1f0d16ff661800001f250200c92500d818001e001f1f0618064801291f0718004800191f081b000b0c221e001d244806483418062b280a0001101f0d1b020b22180d1b020b1f2a041f0a180a480040170093180a48023548032f1f0b18071f0c180c48003917003d1800180c480129191f091800180c1b020b221800180c191b020b2326180a18081809180c180b18010a00061029040d271f08180c2e1f0c16ffc118001807191f09180048001b020b2218004800191b020b2326180a180818094800180b18010a00061029040d271f081b020b22180a1b020b1f29041f0a16ff6b1800001f260200ca2501ac131e000c0200cb0200001a02221e000f2418000a0001101700061800000a00001f0618001e001f1f0748001f0848001f09180818073a1701641800221e00c32418080a0001101f0a180a4900803a170018180618091800221e002d2418080a0001100d16012a180a4908003a17002a180618091b000b16221e00c1244900c0180a48063430490080180a483f2f300a0002100d1600fa180a4a0000d8003a220117000c1c180a4a0000dfff39170036180618091b000b16221e00c1244900e0180a480c3430490080180a480634483f2f30490080180a483f2f300a0003100d1600ae180848012818073a1700991800221e00c32418084801280a0001101f0b180a4a0000dc003a2217000c1c4a0000dc00180b3c2217000c1c180b4a0000dfff3c170062180a4903ff2f480a33180b4903ff2f304a00010000281f0c180618091b000b16221e00c1244900f0180c481234483f2f30490080180c480c34483f2f30490080180c480634483f2f30490080180c483f2f300a0004100d18082d1f0816000d1b000b180200cc1a014718082d1f0818092d1f0916fe9a1806221e0098240200000a000110001f270200cd25024e1b000b1718011a011f0648001f0748001f0818001e001f1f09180718013a221700091c180818093a1702051800221e00c3241808222d1f080a0001101f0a180a4804341f0c180c480040170061180c480140170059180c480240170051180c480340170049180c480440170041180c480540170039180c480640170031180c480740170029180c480c4017002b180c480d40170023180c480e40170055180c480f401700a216016816017d18061807180a0d160173180818093a17002818061807180a481f2f4806331800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a0147160139180848012818093a17004018061807180a480f2f480c331800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f300d16000d1b000b180200ce1a01471600e4180848022818093a1700b4180a48072f4812331800221e00c3241808222d1f080a000110483f2f480c33301800221e00c3241808222d1f080a000110483f2f480633301800221e00c3241808222d1f080a000110483f2f304a00010000291f0b4800180b3c2217000c1c180b4a000fffff3c17002f18061807222d1f07180b480a344903ff2f4a0000d800300d18061807180b4903ff2f4a0000dc00300d16001b1b000b180200cf180b221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180a221e00112448100a000110281a014718072d1f0716fdef180718013a17000a180618071d001f1b000b161e00c11b000b16180610001f280200d12502aa0a00001f061b000b174a000080001a011f0748001f0848001f0918001e001f1f0a180818013a221700091c1809180a3a1702431800221e00c3241809222d1f090a0001101f0b180b4804341f0e180e480040170061180e480140170059180e480240170051180e480340170049180e480440170041180e480540170039180e480640170031180e480740170029180e480c4017002b180e480d40170023180e480e40170055180e480f401700a216016816017d18071808180b0d1601731809180a3a17002818071808180b481f2f4806331800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471601391809480128180a3a17004018071808180b480f2f480c331800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f300d16000d1b000b180200ce1a01471600e41809480228180a3a1700b4180b48072f4812331800221e00c3241809222d1f090a000110483f2f480c33301800221e00c3241809222d1f090a000110483f2f480633301800221e00c3241809222d1f090a000110483f2f304a00010000291f0c4800180c3c2217000c1c180c4a000fffff3c17002f18071808222d1f08180c480a344903ff2f4a0000d800300d18071808180c4903ff2f4a0000dc00300d16001b1b000b180200cf180c221e00112448100a000110281a014716000d1b000b180200ce1a014716001b1b000b180200d0180b221e00112448100a000110281a01471808497fff4801293b17003518084801281f0d1807180d1d001f180618061e001f1b000b161e00c11b000b161807100d1801180d291f0148004801291f0818082d1f0816fdb11808480039170020180718081d001f180618061e001f1b000b161e00c11b000b161807100d1806221e0098240200000a000110001f290200d22500b418011b000b063e22011700081c1801263e22011700091c180148003a17000a18001e001f1f01180148003e17000702000000131e000c0200cb0200001a02221e000f2418000a000110220117001c1c131e000c0200d30200001a02221e000f2418000a00011001170021180118001e001f3e1700061800001800221e00d424480018010a0002100018014a0000ffff3a1700131b020b2826180018010a0002101600101b020b2926180018010a000210001f2a0200d525006b18001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271800041f001b020b271801041f011b020b20261b020b25261b020b21261800200a0002101b020b241b020b21261801120a000210040a000210120a000210001f2b0200d625006718001b000b063e22011700081c1800263e220117000c1c18001e001f48003e1700061800001b020b271801041f011b020b2a1b020b20261b020b26261b020b21261800120a0002101b020b241b020b21261801120a000210040a000210200a00021004001f2c0200d725019d0200d81f0602002a1f0718021700080200001f07180117000718011f060200001f0848001f0a18001e001f180a4803283b1700b31800221e00c324180a222d1f0a0a0001104900ff2f4810331800221e00c324180a222d1f0a0a0001104900ff2f480833301800221e00c324180a222d1f0a0a0001104900ff2f301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f0818081806221e002d241809490fc02f4806340a000110281f0818081806221e002d241809483f2f0a000110281f0816ff4518001e001f180a294800391700a81800221e00c324180a222d1f0a0a0001104900ff2f48103318001e001f180a3917001a1800221e00c324180a0a0001104900ff2f4808331600054800301f0918081806221e002d2418094a00fc00002f4812340a000110281f0818081806221e002d2418094a0003f0002f480c340a000110281f08180818001e001f180a3917001a1806221e002d241809490fc02f4806340a0001101600051807281f0818081807281f081808001f2d0200d92500120200da221e00242418000a000110001f2e0200db2501100200001f0648001f07180718001e001f4803293a1700f61b020b2e1800221e002d2418074800280a000110041f081b020b2e1800221e002d2418074801280a000110041f091b020b2e1800221e002d2418074802280a000110041f0a1b020b2e1800221e002d2418074803280a000110041f0b18061b000b16221e00c12418084802331809480435300a000110281f061800221e002d2418074802280a00011002002a3f17002718061b000b16221e00c12418094804334900f02f180a480235480f2f300a000110281f061800221e002d2418074803280a00011002002a3f17002118061b000b16221e00c124180a4806334900c02f180b300a000110281f0618074804281f0716ff021806001f2f0200dc25004a1800483f2f1f001b000b16221e00c12418001800481a3a1700084841160025180048343a17000848471600181800483e3a17000b48004804291600084800481129280a000110001f310200dd2500331b020b311f06180618004818340418061800481234042818061800480c340428180618004806340428180618000428001f320200de2500981b020b121e00df0200e0281f061b020b1e26180602000025007818001e001f48083a17000400460003060006271f7405005f1b020b2c261b020b2f1800221e009a2448080a000110041800221e009a24480048080a0002100a0002101f0c180c0200e13e1700131b020b38262018000a0002101c160019180c0200e23e1700101b020b38261218000a0002101c07000a0002101c001f370200e325004e1b020b1218001d00e4460003060006271f1e050038131e0031170016131e0031221e0036240200e518010a0002101c131e0033170016131e0033221e0036240200e518010a0002101c07001f380200e62500a90200001f06460003060006271f2305003f131e0031170015131e0031221e0032240200e50a0001101f0618060122011700081c131e0033170015131e0033221e0032240200e50a0001101f06071806170055460003060006271f430500491b020b2c261b020b2f1806221e009a2448080a000110041806221e009a24480048080a0002100a0002101f2318230200e13e170008200016000e18230200e23e17000512000712001f390200e7250103121f061b020b121e00e4203e170009201f061600201b020b121e00e4123e170009121f0616000e1b020b39260a0000101f06131e00061a0022121d00e822121d00e922121d00822218061d00ea22121d00eb22121d004022121d00ec22121d00ed22121d005522121d006f22121d00ee220200ef25000520001f4018401d000f1f0718071b020b0d260a0000101d00eb18071e00eb011700671b020b131807041c1b020b171807041c18071b020b14260a0000101d00ec18071b020b15260a0000101d00ed18071b020b16260a0000101d005518071b020b18260a0000101d00ee18071b020b19260a0000101d008218071b020b1d260a0000101d00e91807001f3a0200f025005c1b000b05221e00f12418000a0001101f0648001f0718061e001f4801291f08180848003b1700321800180618081919170008480116000548001f09180918061e001f180829480129331807301f0718082e1f0816ffcc1807001f3b0200f225003848001f06180618011e001f3a17002618004a0001003f2a1801221e00c32418060a000110284800351f0018062d1f0616ffd51800001f3c0200f325003848001f06180618011e001f3a17002618001801221e00c32418060a000110314a0001003f2a4800351f0018062d1f0616ffd51800001f3d0200f42500a348001f06180618011e001f3a1700911801221e00c32418060a0001101f0718074a0000d8003b2217000c1c18074a0000dbff3c2217000c1c180618011e001f3a1700451801221e00c32418064801280a0001101f0818084a0000fc002f4a0000dc003d17002218074903ff2f480a3318084903ff2f284a00010000281f0718064801281f0618004a0001003f2a1807284800351f0018062d1f0616ff6a1800001f3e0200f5250077180022011700071c0200001f061806221e007b24131e000c0200f60200001a020200000a0002101f061806221e0024240200e00a0001104800480129401700211806221e00d42448001806221e0024240200e00a0001100a00021016000518061f061806170008180616000602008f1f061806001f3f0200f72500b1180022011700071c0200001f061806221e006a24131e000c0200f80200001a020a0001101f0718071700161807480019221e00d42448010a0001101600060200001f0618061700141806221e002b240200f90a000110160004261f08131e00061a001f09180817004548001f0a180a18081e001f3a17003618091808180a19221e002b2402002a0a0001104800191808180a19221e002b2402002a0a0001104801190d180a2d1f0a16ffc51809001f400200fa25009118000122011700171c1b000b19221e00fb2418000a0001100200fc3e17000a131e00061a00001b000b05221e00f12418000a000110221e00fd240a0000101f06131e00061a001f0748001f10181018061e001f3a170037180117001a180718061810191800180618101919020000280d1600131807180618101918001806181019190d18102d1f1016ffc41807001f410200fe2500781b000b17221e00ff2418000a0001101700131800221e0100241b020b420a0001100018001b000b05411700491b000b05221e00f12418000a000110221e00fd240a0000101f0c180c221e010124020000250017180018011b020b421b030b00180119040d180000131e00061a000a000210001800001f4202010225007d18000122011700171c1b000b19221e00fb2418000a0001100200fc3e170007020000001b000b05221e00f12418000a000110221e00fd240a0000101f060200001f0748001f10181018061e001f3a170029180718061810190a000102002a281800180618101919280200f928281f0718102d1f1016ffd21807001f430201032500cb1b000b08221e0078240200790a0001101f07180748301d0104180748101d01051807221e0088240201060a0001101f0818080201071d01081808221e01092402010a4802480c0a0003101c180848021d010b180848011d010c180802010d1d010e1808221e010f24480848084808480048020a0005101c1808221e0110240a0000101c1807221e007a240a0000101f0648001f09180948203a17002c18004a0001003f2a1806221e00c324180018061e001f2c0a000110284800351f0018092d1f0916ffd21800001f4402011125002046000306000c271f0c48004801290005000d1b020b44140112040007001f45020113250011110201131d00951118001d0114001f4602011525001a460003060008271f0c200005000b131e003101010007001f4702011625001a460003060008271f0c200005000b131e003301010007001f4802011725001a460003060008271f0c200005000b131e007401010007001f490201182500301b020b0b1b020b49260a000010041b020b0b1b020b48260a00001004281b020b0b1b020b47260a0000100428001f4a020119250023131e011a1f0618061e01040200bb2818061e0105280200bb2818061e011b28001f4b02011c250019131e011a1f0618061e011d0200bb2818061e011e28001f4c02011f2500711b000b1a0200002500640201201b000b0d421700511b000b0d221e0120240a000010221e0121240200002500311b040b001800020122190200bb28180002012319280200bb28180002012419280200bb2818000201251928041c000a0001101c16000a1800020000041c001a01001f4d02012625007d0201271f0648001f07211b000b0d180619430200024017000f1b000b0d1806191f0716001c211b000b0d180619430200024017000c1b000b0d1806191f07460003060009271f50121f080500181b000b08221e0128240201290a0001101c201f080702012a13421f0918070200bb281808280200bb28180928001f4e02012b2500671b000b0b1a001f061806221e012c2448010a0001101c1806221e012d2448050a0001101c48001806221e012e240a000010291f071806221e012d24480b0a0001101c48001806221e012e240a000010291f081b000b0c221e012f24180718080a000210001f4f0201302501dd0201310201320201330a00031f06131e00061a001f07131e00061a001f081b000b081e00b70117000702001a001806031f1b181b21041700711f1a1b000b08221e0078240201340a0001101f1c181c0201351d0136181c1e01370201381d0139181c1e0137181a1d013a1b000b081e00b7221e00bf24181c0a0001101c1807181a181c1e013b0d1808181a181c1e013c0d1b000b081e00b7221e00be24181c0a0001101c16ff8e02013d02013e02013f02014002014102014202014302014402014502014602014702014802014902014a02014b02014c02014d02014e02014f0201500201510201520201530201540201550201560201570201580201590a001d1f0948001f0b271f0a271f0c48001f1a181a18091e001f3a1700b31806031f1c181c210417009f1f1b1b000b08221e0078240201340a0001101f1d181d0201351d0136181d1e01370201381d0139181d1e01371809181a1902015a28181b281d013a1b000b081e00b7221e00bf24181d0a0001101c181d1e013b1807181b1940220117000f1c181d1e013c1808181b19401f1e1b000b081e00b7221e00be24181d0a0001101c181e170018181a481e3a17000d4801181a33180a301f0a16000616ff60181a2d1f1a16ff48180a221e00112448100a000110001f5002015b25002146000306000c271f0c180c1e01140005000e1b000b1b02015c1a011c07001f5102015d2500141b000b1c221e0011240a0000101e001f001f5202015e2501e81b020b07260a000010220117000d1c1b020b09260a00001022011700231c1b000b0d1e009c221e009d240a000010221e00242402015f0a00011048003917000702000000131e016022011700081c131e016122011700081c131e01621f061b000b1a02000025017d46000306000d271f6a1800020000041c0501691b030b0617015a1b030b06131e00061a0022131e00061a00220201631d01640a00011d01651a011f06020000250004001f07131e000c0201660200001a021f08131e000c02016702007d1a021f091806221e0168240200000a0001101c1b000b1d2602000025000d1b040b00020000041c004901f40a0002101c1806221e0169240a0000101f0a180a1b000b1a41170038180a221e0121240200002500131b040b06221e016a2418000a000110000a000110221e012124020000250004000a0001101c1600301806221e01692402000025001c1b040b06221e016a2418001b040b071b040b070a0003101c0018070a0002101c18060200002500601800221700091c18001e016b2217000c1c18001e016b1e016b1700431b040b08221e016c2418001e016b1e016b0a0001101f0618061700271806480019221e006a241b040b090a0001101f07180717000e1b040b001806480019041c001d016d16000a1800020000041c07001a01001f5302016e25005d02016f221e007b24131e000c02017002007d1a0202000025003e1b000b0c221e001e240a00001048102a4800301f0618000201713d170008180616000b180648032f4808301f071807221e00112448100a000110000a000210001f5402017225005518001e001f48223e1700481b020b3c2648001800221e002f24480048200a0002100a0002101f061806221e0011240a000010221e002f24480048020a0002101800221e002f24482048220a0002103e0012001f5502017325005d1b020b0f020174041f0618062217000b1c1b020b551806041700061806001b020b54260a0000101f0618061b020b3c26480018060a00021028221e002f24480048220a0002101f061b020b102602017418060a0002101c1806001f56020175250033180001170007020000001b020b0c4804041f0618061b020b2d261b020b2b26180018060a0002100201760a00021028001f5702017725015d180117003a48001f0b48001f0c180c18001e001f3a1700271800180c191e01781700141800180c191801180b222d1f0b191d0179180c2d1f0c16ffd40200001f061800221e017a2402000025001b1b03220b061b020b0b18001e01790402017b28281d017c000a0001101c18061b020b0a260a000010281f061b020b54260a0000101f071b000b0c221e001d241807221e00c32448030a00011048082b0a0001101807221e00c32448030a00011048082c281f081807221e002f24480448041808280a0002101f091b020b2d1b020b2b26180618090a000210180728041f061b020b12221e017d02017e1b000b1e180604280200f928281d017d271f0a1b020b1e26180a02000025004d180002017f1948003d2217000a1c1800020180191700351b020b121b020b57180002018019041d01811b020b121800020180191d01821b020b10260201831800020180190a0002101c000a0002101c001f5802018425049a1b000b0d221700051c13221700081c1b000b080117000400131e00061a00220201851d01862248041d01872218001e01851d0179131e00061a00220201881d01862248031d0187221b020b0a1d0189131e00061a002202018a1d01862248031d0187221b020b4a1d0189131e00061a00220200791d01862248031d0187221b020b451d0189131e00061a002202018b1d01862248031d0187221b020b0a1d0189131e00061a002202009e1d01862248001d0187131e00061a002202018c1d01862248001d0187131e00061a002202018d1d01862248001d0187131e00061a002202018e1d01862248001d0187131e00061a00220200571d01862248001d0187131e00061a002202018f1d01862248031d0187221b020b4b1d0189131e00061a00220201901d01862248031d0187221b020b4c1d0189131e00061a00220201911d01862248011d0187131e00061a00220201921d01862248011d0187131e00061a00220201931d01862248011d0187131e00061a00220201941d01862248001d0187131e00061a00220201951d01862248031d0187221b020b4d1d01892248011d0178131e00061a00220201961d01862248031d0187221b020b4e1d0189131e00061a00220201971d01862248031d0187221b020b4f1d0189131e00061a00220201981d01862248031d0187221b020b0a1d0189131e00061a00220201991d01862248031d0187221b020b1b1d0189131e00061a002202019a1d01862248031d0187221b020b501d0189131e00061a002202019b1d01862248031d0187221b020b1c1d0189131e00061a002202019c1d01862248031d0187221b020b0a1d0189131e00061a002202009c1d01862248001d0187131e00061a002202019d1d01862248031d0187221b020b0f1d0189220201831d019e131e00061a002202019f1d01862248031d0187221b020b511d0189131e00061a00220201a01d01862248031d0187221b020b521d0189131e00061a00220201a11d01862248031d0187221b020b531d01892248011d0178131e00061a00220200821d01862248011d0187131e00061a00220201a21d01862248041d0187221b020b061e01a31d0179131e00061a00220201a41d01862248031d0187221b020b561d0189131e00061a00220201a51d01862248031d0187221b020b0a1d0189131e00061a00220201a61d01862248041d01870a00221f060a00001f07180608031f11181121041700db1f1018061810191e01871f12181248004017001e1812480140170033181248024017004018124803401700501600a918061810191b020b0b1b000b0d18061810191e018619041d017916008c18061810191318061810191e0186191d017916007718061810191b000b0818061810191e0186191d017916005f18061810191e01781700321b000b1a1700281807221e00932418061810191e0189221e00232418061810191e019e0a0001100a0001101c160025180618101918061810191e0189221e0023242618061810191e019e0a0002101d017916ff241b000b1a1700361b000b1a221e01a72418070a000110221e0121240200002500141b020b58261b030b0618000a0002101c000a0001101c16000b1b020b581806041c001f590201a82500441b000b082217000b1c1b000b081e01a901170004001b020b5b08031f0d180d210417001f1f0c1b000b08221e01a924180c1b020b5b180c190a0002101c16ffe0001f5d0201aa25008418001e001f4900c8391700131800221e01ab24480048640a0002101c18001e001f48003917004e180018001e001f480129191f0c18011e01ac180c1e01ac2948003c220117002a1c0201ad1801422217000f1c18011e0171180c1e01713d2217000f1c18011e01ad180c1e01ad3d170004001800221e00932418010a0001101c001f610201ae25006048001f0618001e01af22011700091c18001e01b022011700091c18001e01b122011700091c18001e01b217000748011f061b020b61261b020b60131e00061a002218061d0171221b000b0b221e01b3240a0000101d01ac0a0002101c001f620201b425006d18001f0618001e00941f0718001e01b52217000a1c18070201b63e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5e18080a0002101c001f630201bb25006d18001f0618001e00941f0718001e01b52217000a1c18070201bc3e17001318001e01b74800191f061b02201d01b8131e00061a002218061e01b91d01712218061e01ba1d01ad221b000b0b221e01b3240a0000101d01ac1f081b020b61261b020b5f18080a0002101c001f640201bd2500191800221e0101241b020b650a00011018001e001f2b001f670201be25006818001e001f48013c1700064800001b020b671800041f061800221e01002402000025000b18001b030b0629000a0001101f071b000b0c221e01bf241807221e0100241b020b660a000110221e0101241b020b650a00011018001e001f4801292b0a000110001f680201c02500d548001f0648001f0718001e001f1801391700ba0a00001f0848001f09180918001e001f4801293a17008418001809480128191f0a18001809191f0b180a1e01ac180b1e01ac291f0c180c17005918021700171808221e0093244801180c2b0a0001101c1600401808221e0093241b000b0c221e01bf241b020b66180a1e0171180b1e017129041b020b66180a1e01ad180b1e01ad2904280a000110180c2b0a0001101c18092d1f0916ff741b020b671808041f061b020b681808041f07180748003d1700081401c11f07180618070a0002001f690201c2250119121f06460003060006271f2105002b1b000b082217000b1c1b000b081e01281700171b000b08221e0128240201290a0001101c201f06071b020b69261b020b5e48010a0002101f071b020b69261b020b604805200a0003101f0848011f09180601221700081c1b020b5c17000a18094840301f091b020b5e1e001f48003e17000d18094802301f09160015180748001948323917000a18094810301f091b020b5f1e001f48003e17000a18094804301f091b020b601e001f48003e17000d18094808301f0916001618084800191401c33917000a18094820301f091809221e00112448200a0001101f0a180a1e001f48013e17000e0201c4180a281f0a160016180a1e001f48023e17000b02001a180a281f0a180a001f6a0201c525002d0200001f06460003060006271f0e0500191b020b0e260201c61b000b081e00340a0002101f06071806001f6b0201c72500531b000b19221e00fb24131e00061a002218001d000e221b000b1f1b000b19221e00fb2418011e00b70a000110041d01c82218021d01860a0001101f061b020b2d261806020176200a0003101f071807001f6c0201c9250434211801430200023e2217000c1c21180043020001402217000a1c18001e01ca0117000d1b020b460201cb1a014748001f0648001f074a0000fff11f081b000b0b1a00221e0016240a0000104903e82b4800351f091b020b061e01cc012217003e1c1b020b3d261b020b3d2648001809020000280a0002101b000b0e1e0083221e002f241b000b0e1e01cd1e001f4802280a0001100a00021018082c1f071809180718082a31480035221e00112448020a0001101f0a180a1f0b180a1e001f48203917001b180a221e002f24180a1e001f4820290a0001101f0b16003c180a1e001f48203a1700310200001f7048001f7118714820180a1e001f293a170013187002001a281f7018712d1f7116ffe51870180b281f0b0201ce1f0c0201cf1f0d0201d01f0e180e180d28180c28180b281f061b000b1526180648020a0002101f061b020b3d2648001806020000280a0002101f0f1b020b3a260a0000101f1018100200e818020201d13e17000712160004200d0200001f11180117000a18011f1116011e1b020b5a1e01d2221e002324110201d318000a0003101c18001e00b72217001a1c1b000b19221e00fb2418001e00b70a0001100200fc4017006f48001fc318001e01d41700331b020b3e2648001b000b19221e00fb241b020b412618001e00b718001e01d40a0002100a0001100a0002101fc31600271b020b3e2648001b000b19221e00fb241b020b4218001e00b7040a0001100a0002101fc30201d518c3280200f9281f111b020b4018001e01ca041fc218001e01d617001a1b000b05221e01d72418c218001e01d60a00021016000518c21fc218111b020b4318c204281f1118110201d8281b020b3f18001e01ca04280200f9281f1118110201d9280201da281f111b020b5a1e01d2221e002324110201db18110a0003101c1b020b3b1810041f121b020b061e01cc012217000d1c1b020b45260a0000101f131b020b061e01cc012217001e1c1b020b121e018122011700111c1b020b571b020b0f02018304041f141b020b331806041b020b3318061401dc2b48003504281b020b33181318063104281b020b331b020b3d26180f1b020b061e01cc012217000b1c1b000b0d1e009c221e0011240a0000100a00021018082c4810331b020b3d26180f1811020000280a00021018082c3004281b020b3318124808331b020b061e01dd4804333018063104281b020b32180704281f151b020b334800041c181417000a18151814281f151b020b6a260a00001022011700071c0201de1f160200bb1b020b6d281b020b061e01df281f1718171816281f1718171b020b6e181528281f171b020b3e26480018170a000210221e00112448100a0001101f181818221e009a2418181e001f48022918181e001f0a0002101f1918171819281f170200001f1a1b020b6b260a0000101f1b181b17001f1b020b6c26181b180018110a0003101f1a18170201e028181a281f171817001f6f0201e1250072131e00061a001f06180108031f081808210417005a1f0718011807191f0918001809191f0a21180a430200023e22011700081c180a263e170006121f0a180a26402217001a1c21180a430200033e220117000c1c21180a430200013e170006201f0a18061809180a0d16ffa51806001f700201e225004b0201e30201e402009e0201e502019402018c0201e60201270201e70200b40201e80201e90201ea0201eb0201ec0201ed0201ee0a00111f061b020b70261b000b0d18060a000210001f710201ef2500450201f00200490200470201f10201f20201f30201930201f40201f50201f60201f70201610201f80201f90201fa0201fb0a00101f061b020b70261318060a000210001f720201fc2500270201fd0201fe0200090201ff0202000a00051f061b020b70261b000b0818060a000210001f730202012500551b000b08221e0078240200790a0001101f06261f07460003060006271f100500281806221e0088240200890a00011022011700121c1806221e0088240202020a0001101f0707180701170006261f071807001f740202032500671800221e008a240202040a00011022011700121c1800221e008a240202050a00011022011700121c1800221e008a240202060a0001101f0618061700271800221e008c2418061e02070a0001101f07180748003e17000748021f071807001600052600001f750202082501b61b020b1a1e020917000b1b020b1a1e0209001b020b74260a0000101f0618060117000a131e00061a0000131e00061a00221806221e020a240a00001022011700071c0a00001d020b221806221e020c240a0000101e020d1d020d221806221e008c2418061e020e0a0001101d020f221806221e008c2418061e02100a0001101d0211221806221e008c2418061e02120a0001101d0213221b020b751806041d0203221806221e008c2418061e02140a0001101d0215221806221e008c2418061e02160a0001101d0217221806221e008c2418061e02180a0001101d0219221806221e008c2418061e021a0a0001101d021b221806221e008c2418061e021c0a0001101d021d221806221e008c2418061e021e0a0001101d021f221806221e008c2418061e02200a0001101d0221221806221e008c2418061e02220a0001101d0223221806221e008c2418061e02240a0001101d0225221806221e008c2418061e02260a0001101d0227221806221e008c2418061e02280a0001101d0229221806221e008c2418061e022a0a0001101d022b221806221e008c2418061e022c0a0001101d00961f071b020b1a18071d02091807001f7602022d250065131e00061a00221b020b71260a0000101d022e221b020b72260a0000101d022f221b020b73260a0000101d0069221b020b76260a0000101d0089221b020b1b260a0000101d0230221b020b1c260a0000101d004e1f061b020b1a18061d02311806001f77020232250075131e00061a001f061b020b1a1e023117000f1b020b1a1e02311f0616000e1b020b77260a0000101f0618061b000b0b221e01b3240a0000101d02331b020b0c4804041f0718071b020b2d261b020b2b261b000b19221e00fb2418060a00011018070a0002100201760a000210281f081808001f7802023425003b48001f0618061b020b121e02351e001f3a1700251b020b121e0235180619221e000f2418000a000110170005200018062d1f0616ffd112001f790202362503ac131e02371e00221f0618061e006e1f0718061e02381f0818061e02391f0918061e023a1f0a18061e023b170007001600091806201d023b1806020000250076111e023c01170065111e023d221e009324131e00061a00220202381d023e221b041d023f0a0001101c131e000c02024002000e1a02221e000f2418000a00011017002a111801221e0011240a000010221e009d240a000010221e002b240202410a0001104800191d02421b030b08111b0410001d02381806020000250012111b041d02431b030b0a111b0410001d023a1806020000250040110a00001d023d111e023d221e009324131e00061a002202006e1d023e221b041d023f0a0001101c1118001d02441118011d02451b030b07111b0410001d006e02024602007002024702024802024902024a02024b0a00071f0b180602000025026f11201d023c1b020b79111e024504170255111e0245221e00242402024c0a00011048004801293917000c1b030b09111b0410001118001d024d111e024e1f06111e02461f07111e00701f08111e02471f09111e02481f0a111e02491f0b111e024a1f0c111e024b1f0d111e024f1f0e111e02501f0f131e00061a001f1048001f2a182a1b030b0b1e001f3a17002118101b030b0b182a19111e02511b030b0b182a19190d182a2d1f2a16ffd8131e00061a00221b020b82261b030b00111e02450a0002101d01ca1f11111e02440202523d17003c111e02420202533e220117000c1c111e02420202543e17001a1b020b80261811111e0242111e024d0a0003101c16000c1b030b09111b0410001b020b851b030b000417001c1b030b00221e02552418111b000b060201d10a0003101600151b020b6f2618111b000b060201d10a0003101f121b020b8326111e024518120a0002101f13111e023d221700131c111e023d48001902023e1902006e3f1700052600111e023d1f1448001fa418a418141e001f3a17003618a448003e170010181418a4191e023f480118130d11181418a41902023e191911181418a4191e023f101c18a42d1fa416ffc5111e024317000e111e023a11111e0243101c1102023d091b020b121e025617001e11221e0238241b020b061e02571b020b78260a0000100a0002101c1118061d024e1118071d02461118081d00701118091d024711180a1d024811180b1d024911180c1d024a11180d1d024b11180e1d024f11180f1d025048001f9018901b030b0b1e001f3a170021111e02511b030b0b18901918101b030b0b189019190d18902d1f9016ffd81b030b09111b0410001d0239001f7a0202582503f60202592503c31801220117000a1c131e00061a001f011b020b7b2217000b1c18001b000b20411f060200001f0702025a1f08180617001418001e01ca1f0718001e025b1f0816002418001f0718011e025b17001418011e025b221e025c240a00001016000518081f08180802025a402217000a1c180802025240220117000c1c1b020b79180704011700111b030b0626180018010a00021000131e00061a00221b020b82261b030b0018070a0002101d01ca1f0918080202523d1701fc1b020b7f26180018010a000210221e002b240202410a000110480019221e009d240a0000101f5018500202533e220117000a1c18500202543e1701af18061700c81800221e025d240a000010221e025e240a000010221e0121240200002500881b020b80261b040b091b040b5018000a0003101c1b020b851b030b000417001e1b030b00221e0255241b040b091b000b060201d10a0003101600171b020b6f261b040b091b000b060201d10a0003101f061b020b83261b040b0718060a0002101f071b020b81261b040b00180718000a0003101f081b030b062618081b040b010a000210000200002500161b000b1a0200002500091b050b0047001a01000a000210001600e21b020b80261809185018011e00b70a0003101c1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101fa21b020b8326180718a20a0002101fa31b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b062618a318010a000210001600111b030b0626180018010a00021000160112180802025a3e1700fb1b020b851b030b000417001c1b030b00221e02552418091b000b060201d10a0003101600151b020b6f2618091b000b060201d10a0003101f4e1b020b83261807184e0a0002101f4f18061700271b020b81261800184f1b000b060a0003101f501b030b0626185018010a000210001600871b020b121e025617006f18010117002a131e00061a0022131e00061a00221b020b061e02571b020b78260a0000100d1d025f1f0116004218011e025f011700231801131e00061a00221b020b061e02571b020b78260a0000100d1d025f16001918011e025f1b020b061e02571b020b78260a0000100d1b030b0626184f18010a000210001600111b030b0626180018010a00021000001f071b020b7e260a0000100117000400131e02601700070016000813201d0260131e02611f061318071d0261001f7d020262250008131e0261001f7e02026325010d0200001f061b020b7b2217000b1c18001b000b204117002218001e025f221e0041240202640a0001101f07180717000718071f061806001801221700091c18011e025f1700c61b020b7c2217000e1c18011e025f1b000b214117002218011e025f221e0041240202640a0001101f17181717000718171f0618060018011e025f1b000b174117004448001f47184718011e025f1e001f3a17003218011e025f184719480019221e009d240a0000100202643d17000f18011e025f1847194801190018472d1f4716ffc618011e025f1b000b054117003618011e025f08031f8f188f21041700231f8e188e221e009d240a0000100202643e17000c18011e025f188e190016ffdc180600001f7f0202652500ba1802263e220117000a1c18020200003e1700061800001802221e0011240a0000101f0218010202533e1700771800201d01d41802221e002b240200f90a0001101f0c131e00061a001f0d180c17004a48001f0e180e180c1e001f3a17003b180d180c180e19221e002b2402002a0a0001104800191b000b22180c180e19221e002b2402002a0a000110480119040d180e2d1f0e16ffc01800180d1d00b716001718001b000b19221e02662418020a0001101d00b71800001f8002026725009318001e025f1f061b020b121e025617001f1806221e0268241b020b061e02571b020b78260a0000100a0002101c1b000b201801131e00061a002218001e025b1d025b2218061d025f2218021d00b72218001e02691d02692218001e026a1d026a2218001e026b1d026b2218001e01eb1d01eb2218001e026c1d026c2218001e026d1d026d2218001e026e1d026e1a02001f8102026f25012518011f061b020b121e02701e001f48003917008048001f0818081b020b121e02701e001f3a17006c1b020b121e02701808194800191f091809221e000f2418010a0001101700451801221e007b2418091b020b121e02701808194801190a0002101f061b020b5a1e01d2221e0023241800020271020272180128020273281806280a0003101c16000b18082d1f0816ff8a1b000b2218060418063d17000c1b000b1f1806041f061806221e0024240200e00a0001101f071807480039221700151c1806221e0274240202750a00011018073917004d1806221e00d424480018074801280a0002101f201806221e00d424180748012818061e001f0a0002101f2118201821221e002b240202750a000110221e0098240202760a000110281f061806001f8202027725002d18001800221e0024240200e00a00011048004801294017000c02027818012816000902027918012828001f8302027a2500141b020b7a1800041c1b020b7d1800041c001f8402027b25000b18001b020b8741001f8502027c250019111b000b19221e0266241b020b860a0001101d027d001f8702027e2500c01b020b061e01cc17000526001b020b85110417000a111e027d1600071b020b121f061b000b05221e01d724180618000a0002101c1b020b8a1806041c18061e027a1700201b020b8b18061e027f041c1b020b8c18061e0280041c1b020b8411041c18061e02561700131b000b1d261b020b7748000a0002101c1b020b5d260a0000101c1b020b121e028101221700091c18061e01841700271b020b12201d02811b020b37260a0000101c1b000b1d261b020b59480018060a0003101c001f8902028225006618001e018548003e220117001c1c1b000b0c221e001d2418001e01850a00011018001e01853f17000d1b020b460202831a014718001e027a17002a18001e027f1e001f48003e220117000d1c18001e027f1e00930117000d1b020b460202841a0147001f8a02028525003f48001f06180618001e001f3a17002f180018061917001f1b020b121e0235221e0093241b000b2318001806191a010a0001101c18062d1f0616ffcc001f8b02028625004f18001b000b064017004448001f06180618001e001f3a1700351b020b121e0270221e0093241b000b2318001806194800191a0118001806194801190a00020a0001101c18062d1f0616ffc6001f8c020287250011131e028822011700071c020000001f8d0202892500561b020b0f1b020b061e028a0422011700071c0200001f061b020b111b020b061e028a041c180602028b3d17000b0200001f0616001518060200003d17000c1b000b081e02691f0618061700091318061d0288001f8e211b000b051e01d743020003401700c71b000b05221e003e241b000b050201d7131e00061a00220201d72500941800263e220117000b1c18001b000b063e17000d1b000b0702028c1a01471b000b051800041f0648011f0718071b031e001f3a17005b1b031807191f08180826402217000b1c18081b000b0640170039180808031f141814210417002c1f091b000b051e00221e028d221e002324180818090a00021017000d1806180918081809190d16ffd318072d1f0716ffa01806001f8f188f1d028e22201d028f22201d02900a0003101c1b000b051e00f1011701141b000b050200002501021b000b051e00221e028d1f06131e00061a0022261d0011221e0291240200110a000110011f0702001102029202029302028d02029402029102000d0a00071f0818081e001f1f090200002500b42118004302000340221700161c211800430200014022011700081c1800263e17000d1b000b070202951a01470a00001f06180008031f121812210417002a1f071b030b06221e002324180018070a0002101700111806221e00932418070a0001101c16ffd51b030b0717004548001f0818081b030b093a1700371b030b06221e00232418001b030b081808190a0002101700161806221e0093241b030b081808190a0001101c18082d1f0816ffc518060000260a0000101d00f1131e00061a00220202961d01a32248021d01dd22121d01cc220202881d028a220202971d01df220202981d02571f06131e00061a0022121d02992248001d018522121d018422121d025622121d027a220a00001d027f220a00001d0235220a00001d0280220a00001d02702202029a1d017d2202029b1d00df2202029c1d029d1f12131e00061a001f1a14029e1f1f48001f3002000025001e1b021b020b351d029f1b0218001d02a01b020b32180048023404001f34271f3302000025002a1b021b020b361d029f1b020b30481c331800480435301f061b0218001d02a01b020b32180604001f350200002500271b021b020b341d029f1b020b321b020b30481a33180048063530041b020b3118000428001f36131e00061a0022020000250049121f061b020b85110417000f111e027d1e02991f0616000c1b020b121e02991f061806221700201c1b000b11221e0042240202a11800280202a2280202a318010a0003101c001d01d21f5a131e00061a002218631d02a42218631d01b62218621d02a52218641d01bc2218641d02a61f5b121f5c0a00001f5e0a00001f5f0a00001f600200002500091800180128001f65020000250009180018002a001f660202a71f6d0202a81f6e1b000b202217000d1c1b000b201b000b05411f7b1b000b212217000d1c1b000b211b000b05411f7c1b000b19221e00fb2418120a0001101f86186f1f8818871e002218891d027e18871e002218881d025518871e0022188d1d02871806122217000b1c180d260a0000101d01cc188e260a0000101c180018871d027c1800188d1d0287180018891d027e180018881d02551b000b05221e003e2418000202a9131e00061a0022201d028e0a0003101c000a0002101c0002aa00066d606867617609776c6667646b6c67660864776c61766b6d6c03636f6607677a726d707671064d60686761760e607b7667665d63617063756e6770046b714b470c666d61776f676c764f6d6667096b71446b7067646d7a086b7151636463706b06506765477a720b616d6c7176707761766d70016b04766771760b4a564f4e476e676f676c7608766d5176706b6c6521596d60686761762251636463706b50676f6d76674c6d766b646b6163766b6d6c5f0671636463706b107277716a4c6d766b646b6163766b6d6c0c656776566b6f677176636f7207656776566b6f670865677654636e776707606d6d6e67636c013301320c70636c666d6f5176706b6c653e32333031363734353a3b636061666764656a6b68696e6f6c6d72737071767774757a7b78434041464744454a4b48494e4f4c4d52535051565754555a5b5805646e6d6d700670636c666d6f066e676c65766a09666d6f4667766761760f596d606867617622556b6c666d755f0972706d766d767b72670461636e6e076b6c66677a4d6408466d61776f676c7612596d6068676176224c63746b6563766d705f10596d6068676176224a6b71766d707b5f0a65677644706d6f517670067176706b6c65013f0571726e6b76045939245f06616a637043760122097177607176706b6c6509656776416d6d696b670e716771716b6d6c51766d70636567076567764b76676f0c6e6d61636e51766d7063656706616d6d696b6709716776416d6d696b67077167764b76676f313f3922677a726b7067713f4f6d6c2e2230322251677222303233322232323832323832322257564139227263766a3f2d390a3922677a726b7067713f0b766d454f565176706b6c650939227263766a3f2d390966676e416d6d696b670a70676f6d74674b76676f0e66676077656567704667766761760e6667646b6c6752706d726770767b026b6608666760776565677003656776036e6d6502276107616d6c716d6e6707646b70676077650a6d77766770556b66766a0a6b6c6c6770556b66766a0b6d777667704a676b656a760b6b6c6c67704a676b656a760a6c6d66674667766761760772706d6167717110596d60686761762272706d616771715f0d726a636c766d6f46677667617607726e77656b6c71085d726a636c766d6f0b61636e6e526a636c766d6f0b5d5d6c6b656a766f637067054377666b6d1841636c74637150676c6667706b6c65416d6c76677a7630460f75676066706b7467704667766761760975676066706b746770136567764d756c52706d726770767b4c636f6771096e636c65776365677106616a706d6f670770776c766b6f6707616d6c6c676176145d5d75676066706b7467705d6774636e77637667135d5d71676e676c6b776f5d6774636e776376671b5d5d75676066706b7467705d7161706b72765d64776c61766b6d6c175d5d75676066706b7467705d7161706b72765d64776c61155d5d75676066706b7467705d7161706b72765d646c135d5d647a66706b7467705d6774636e77637667125d5d66706b7467705d776c75706372726766155d5d75676066706b7467705d776c75706372726766115d5d66706b7467705d6774636e77637667145d5d71676e676c6b776f5d776c75706372726766145d5d647a66706b7467705d776c75706372726766095d71676e676c6b776f0c61636e6e51676e676c6b776f165d51676e676c6b776f5d4b46475d5067616d7066677008666d61776f676c76056f6376616a0a5e2659632f785f66615d066163616a675d0f6b6c616d656c6b766d466776676176046d72676c096b6c616d656c6b766d076d6c6770706d7004616d66671253574d56435d475a4147474647465d47505010716d6f6749677b4a677067407b766766096b6c66677a676646400c526d6b6c7667704774676c760e4f51526d6b6c7667704774676c760a6a6d6d694667766761760d617067637667476e676f676c760661636c74637109766d4663766357504e077067726e636167035e712801650a6c63766b7467616d666714596d606867617622526e77656b6c437070637b5f0e6e6d6163766b6d6c4667766761764a5c6a767672713d385e2d5e2d2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b086e6d6163766b6d6c046a70676404646b6e67106a767672382d2d6e6d61636e6a6d717606656776457277074552574b4c444d0a656776416d6c76677a7605756760656e0c656776477a76676c716b6d6c19554740454e5d66676077655d70676c66677067705d6b6c646d0c656776526370636f6776677015574c4f43514947465d54474c464d505d554740454e17574c4f43514947465d50474c46475047505d554740454e012d0a656776526e77656b6c7106524e57454b4c046b76676f047277716a04767b7267046c636f6707746770716b6d6c08646b6e676c636f6704686d6b6c02212105716e6b61670c616d6c716b7176416a67616909777167704365676c760b766d4e6d7567704163716708726e6376646d706f07756b6c666d757103756b6c07636c66706d6b66056e6b6c777a066b726a6d6c67046b726366046b726d66036f6361096f63616b6c766d716a0c6f63615d726d75677072612b0461706d71037a33330561706b6d7105647a6b6d7104726b696708646b7067646d7a2d066d726770632d05226d72702d07616a706d6f672d0876706b66676c762d046f716b670674676c666d7006456d6d656e670568716d6c7204606d667b14656776476e676f676c7671407b5663654c636f67046a676366067161706b7276015d0961636e6e606361693f037170610b70676f6d7467416a6b6e660b637272676c66416a6b6e660e766d406b6c63707b5176706b6c650c64706d6f416a6370416d66670d766d576b6c763130437070637b0a616a6370416d66674376056b6c7631300a36303b363b3435303b37026f7a04646b7a6912676c61707b7276576b6c763130437070637b12666761707b7276576b6c763130437070637b0a7776643a476c616d66670e5c595e7a32322f5e7a35645f2826104f636e646d706f6766227176706b6c65157776643a4667616d6667516a6d70765176706b6c651f576c646b6c6b716a6766225756442f3a226d617667762271677377676c616729416a63706361766770226d7776716b66672274636e6b6622576c6b616d66672270636c65673822327a15406366225756442f3a22676c616d666b6c6522327a147776643a4667616d66674e6d6c655176706b6c650a7776643a4667616d66670e5c595e7a32322f5e7a64645f282606717760717670057a7a76676307666761707b72760e6063716734365176636c666370664046696672656a3658497153403a322d4f64747531345a4b33503037295557436e476b354c4e606d735b564d5277786f4468486c707b7a3b4a5445616351764167106063716734365d616a63704b6c66677a40434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b292d146063716734365176636c666370664667616d6667096063716734365d616a066034365d313208656776526370636f08726370636f57706e013d026d6c036d64640971677651756b76616a0e5d726370636f51756b76616a4d6c0f5d607b7667665d726370636f5d71751265677651756b76616a44706d6f4163616a670f666776676176436c6d6f636e6b67710a666b70676176516b656c0a616d6c716b7176676c760671756b76616a03666d6f046c6d666707726a636c766d6f046a6d6d690b76677176446763767770670e637171676f606e67506771776e760469677b710b7166606f5d717663606e67047166606f107166606f5d717663606e675d726d6c7b076567765263766a222a6a767672385e2d5e2d7e6a76767271385e2d5e2d7e5e2d5e2d2b3d595c5e2d5f2808656776537767707b0e593d5f2a5e75293f2c28243d2b280124076d6068516d7076097176706b6c656b647b02797f04716d70760868716d6c516d7076076b71437070637b036f637206706766776167076d6068305176701261636c7463715d646b6c65677072706b6c7605756b66766a066a676b656a760230660a3336727a227167706b6404646d6c7608646b6e6e56677a7604c09f9a8e138e22c0acbf0a716a63666d75406e77700b716a6d754d64647167765a046e6b6f6709716a6d75416d6e6d7003637061067176706d69670965677641636c7463710a313531373b303a37373b0f416d6c646b65477a616772766b6d6c076f677171636567116a6371516771716b6d6c51766d706365670f6a63714e6d61636e51766d706365670c6a63714b6c66677a676646400c65677643606b6e6b766b67710d6567765067716d6e77766b6d6c0671617067676c0a616d6e6d70466772766a126567764374636b6e5067716d6e77766b6d6c0a6374636b6e556b66766a0b6374636b6e4a676b656a760e6567764063767667707b4b6c646d0a6567764063767667707b04766a676c08616a6370656b6c650c616a6370656b6c65566b6f670f666b71616a6370656b6c65566b6f67056e6774676e0c656776566d77616a4b6c646d0e6f637a566d77616a526d6b6c76710b6170676376674774676c760a566d77616a4774676c760c6d6c766d77616a71766370760b656776566b6f67786d6c670771677646637667087167764f6d6c766a11656776566b6f67786d6c674d6464716776036f6b6c08656776446d6c7671096f6d6c6d71726361670a71636c712f7167706b64057167706b64047172636c0d6f6f6f6f6f6f6f6f6f6f6e6e6b096b6c6c67704a564f4e0571767b6e67043530727a08646d6c76516b78670a646d6c7644636f6b6e7b0b6d6464716776556b66766a0c6d64647167764a676b656a760c5670676077616a6776224f5109556b6c65666b6c657107517b6e6463676c085167656d6722574b0a416d6c7176636c766b630b516b6f51776c2f477a7640084f5622477a7670630545776e6b6f0a4e67676e6375636667670556776c6563064f676b707b6d0654706b6c666309416d70666b63575241094372637063686b7663074b706b715752410852636e63766b6c6d0a416d6e6d6c6c63224f5608526e637b606b6e6e08486d6967706f636c09526370616a6f676c760a4f51224d77766e6d6d690956752241676c224f56064d52564b4f4306447776777063064354474c4b500c43706b636e224a67607067750a5163746d7b67224e47560941637176676e6e63700a4f5b504b43462252504d012e0e656776517b6c76637a4770706d701041706763766722556760516d616967760f6567764c63766b74674e676c65766a086567765076614b720b746b746d60706d757167701150564152676770416d6c6c6761766b6d6c146f6d7850564152676770416d6c6c6761766b6d6c17756760696b7650564152676770416d6c6c6761766b6d6c1c7176776c387176776c2c6e2c656d6d656e672c616d6f38333b3132300477706e710a6b6167516770746770713e2a59322f3b5f79332e317f2a5e2c59322f3b5f79332e317f2b79317f7e59632f64322f3b5f79332e367f2a3859632f64322f3b5f79332e367f2b79357f2b355c2a333b305e2c33343a5e2c7e33343b5e2c3037365e2c7e33325e2c7e3335305e2c2a3359342f3b5f7e305e667e315932335f2b2b1161706763766746637663416a636c6c676e0b6170676376674d64646770137167764e6d61636e46677161706b72766b6d6c0961636c666b6663766704677a67610e6d6c6b616761636c666b666376670477776b66207a7a7a7a7a7a7a7a7a7a7a7a367a7a7a7b7a7a7a7a7a7a7a7a7a7a7a7a7a7a7a04597a7b5f017a0d616a676169416e6b676c764b660b656776416e6b676c764b66057676616b660d676c61707b7276516761466b6640434041464744454a4b48494e4f4c4d52535051565754555a5b58636061666764656a6b68696e6f6c6d72737071767774757a7b7832333031363734353a3b2f2c0e637171676f606e67526370636f710172017007646d704763616a025c5c01340c647252706d646b6e6757706e033d733f087067765d616d66670264720e5d607b7667665d7167615d666b660c5d7063755d7167615d666b660776765d71616b660366647203636b66016c0164097176637076566b6f6701760963606b6e6b766b67710a766b6f677176636f7233136a63706675637067416d6c61777070676c617b0c6667746b61674f676f6d707b086e636c65776365670a7067716d6e77766b6d6c0f6374636b6e5067716d6e77766b6d6c0971617067676c566d720a71617067676c4e676476106667746b6167526b7a676e5063766b6d0a72706d66776176517760076063767667707b09766d77616a4b6c646d08766b6f67786d6c670a766b6f677176636f7230076572774b6c646d0b6871446d6c76714e6b71760b726e77656b6c714e6b71760a766b6f677176636f72310a67746770416d6d696b67016f0b717b6c76637a4770706d700c6c63766b74674e676c65766a057076614b52096472546770716b6d6c0b5d5d746770716b6d6c5d5d08616e6b676c764b660a766b6f677176636f72360b677a76676c66446b676e6603636e6e107176637076516b6f726b646b67665760106366664774676c764e6b7176676c677009636666566d4e6b71760671726e6b61670166017b136a636c666e6749677b606d6370664774676c7606636e7649677b076176706e49677b076f67766349677b08716a6b647649677b036c6d75136a636c666e67526d716b766b6d6c4774676c760e616a636c656766566d77616a677109766d77616a6f6d746707766d77616a6771023b3007616e6b676c765a07616e6b676c765b106a636c666e67416e6b61694774676c760a766d77616a71766370760861636e614f67636c1561636e615176636c666370664667746b63766b6d6c04717370760961636e61517267676604322c323315656776516b6f726e6b646b67665760506771776e7603322c3702323209656776566771764b660b5d5d63615d766771766b660f65676c6770637667566771764e6d6501600c656776516b656c63767770670377706e2c6c6d6c6167226f77717622606722636c226d606867617622756b766a22632277706e2272706d726770767b230b666d6f4c6d7654636e6b660872706d766d616d6e043232323208323232323232333302333207646d707067636e056667607765056c6d6c61670b606d667b54636e307176700a606d667b5d6a63716a3f05737767707b066371716b656c097263766a6c636f673f0976765d7567606b663f062477776b663f086c6d6c61675176700a36303b363b3435303b34096467546770716b6d6c033232320b7277716a546770716b6d6c01280a65677654636e77672633106c63746b6563766d70516b656c636e710b637272416d66674c636f67076372724c636f670772706d6677617608617277416e637171056d716172770974676c666d705177600a666d4c6d76567063616907746b60706376670b61706766676c766b636e710771766d706365671b706773776771764f67666b6349677b517b7176676f43616167717109606e7767766d6d766a0d756b6c666d75516b656c636e71054b6f6365670771617067676c5a0771617067676c5b0f6b71516761777067416d6c76677a7607766d6d6e6063700b6e6d6163766b6d6c6063700d4361766b74675a4d606867617608677a7667706c636e0b726d71764f6771716365671b756760696b7650677377677176436c6b6f63766b6d6c4470636f670d406e7767766d6d766a57574b46086c677671616372670f666d61776f676c76516b656c636e710c616a637063617667705167760a616d6f7263764f6d6667066e637b677071066b6f636567710e656776556760656e41636c74637112677a7267706b6f676c76636e2f756760656e0d6f637a436c6b716d76706d727b1e475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b6125554740494b565d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b61224f4d585d475a565d76677a767770675d646b6e7667705d636c6b716d76706d726b611e4f435a5d56475a565750475d4f435a5d434c4b514d56504d525b5d475a560c756760656e516b656c636e7105554740454e16656776517772726d70766766477a76676c716b6d6c7113717772726d70766766477a76676c716b6d6c7114656776416d6c76677a76437676706b607776677109636c766b636e6b637109404e57475d404b565108606e7767406b76710a464752564a5d404b565109666772766a406b76710a455047474c5d404b565109657067676c406b7671204f435a5d414d4f404b4c47465d56475a565750475d4b4f4345475d574c4b56511c6f637a416d6f606b6c676656677a767770674b6f636567576c6b7671194f435a5d415740475d4f43525d56475a565750475d514b5847156f637a417760674f637256677a76777067516b78671c4f435a5d445043454f474c565d574c4b444d504f5d544741564d5051196f637a447063656f676c76576c6b646d706f546761766d7071154f435a5d50474c4647504057444447505d514b5847136f637a50676c666770607764646770516b7867174f435a5d56475a565750475d4b4f4345475d574c4b5651146f637a56677a767770674b6f636567576c6b7671104f435a5d56475a565750475d514b58470e6f637a56677a76777067516b7867134f435a5d5443505b4b4c455d544741564d5051116f637a5463707b6b6c65546761766d7071124f435a5d54475056475a5d435656504b4051106f637a54677076677a437676706b60711e4f435a5d54475056475a5d56475a565750475d4b4f4345475d574c4b56511a6f637a54677076677a56677a767770674b6f636567576c6b76711a4f435a5d54475056475a5d574c4b444d504f5d544741564d5051176f637a54677076677a576c6b646d706f546761766d707118514a43464b4c455d4e434c45574345475d544750514b4d4c16716a63666b6c654e636c6577636567546770716b6d6c0c5156474c414b4e5d404b56510b7176676c616b6e406b767107544750514b4d4c066563766a6770096c63746b6563766d7006756b6c666d7503657277075147414b4c444d0a6567765167614b6c646d09766b6f677176636f720d6b71476c63606e67665263766a145d676c63606e675263766a4e6b7176506765677a0c6b6c766770616772765a4a500e5a4f4e4a7676725067737767717610716776506773776771764a67636667700471676c66106d746770706b66674f6b6f67567b72670f5d63615d6b6c766770616772766766055d71676c66155d607b7667665d6b6c766770616772765d6e6b71760464776c6109637065776f676c76710e5c616d6c76676c762f767b72672601390e5d607b7667665d616d6c76676c76115d6d746770706b66674f6b6f67567b72670d5d607b7667665d6f67766a6d660a5d607b7667665d77706e076d6c63606d7076066d6c6e6d6366096d6c6e6d6366676c660b6d6c6e6d636671766370760a6d6c72706d6570677171096d6c766b6f676d77760b5d716b656c63767770673f0b5d607b7667665d606d667b126d6c706763667b7176637667616a636c65670c706771726d6c7167567b726707766b6f676d77760677726e6d636604524d5156216372726e6b6163766b6d6c2d7a2f7575752f646d706f2f77706e676c616d666766106372726e6b6163766b6d6c2d68716d6c04716b656c0371666b0d7167614b6c646d4a67636667700e6b6c76677061677276446776616a0975706372446776616a03454756066f67766a6d660b766d57727267704163716705616e6d6c670476677a76076a676366677071165d5d63615d6b6c7667706167727667665d646776616a05646776616a0d717772726d707671446776616a145d656776446776616a416d6c76676c76567b72670c616d6c76676c762f767b72670b7772666376674c6d6c61670572637071670f60776b6e664c677550677377677176037167760870676467707067700e7067646770706770526d6e6b617b046f6d6667056163616a67087067666b70676176096b6c766765706b767b0e656776506775706b76676657706e105d77706e506775706b766750776e67710b706775706b766757706e22084d504b454b4c38220b08504755504b56474638220b6e6371764b6c66677a4d640125032730350860776b6e6657706e0c245d716b656c63767770673f0c3d5d716b656c63767770673f096b6c76677061677276196b714b6c7176636c61674d64407b76676643617063756e67700d407b76676643617063756e6770076d72766b6d6c71046b6c6b760e676c63606e675263766a4e6b71760f77706e506775706b766750776e6771045d6664720f74636e6b666376674d72766b6d6c711e6d72766b6d6c22636b662a4b6c76676567702b226b71226c676766676623276d72766b6d6c22676c63606e675263766a4e6b71762a437070637b2b226b71226c6767666766231065676c5263766a4e6b7176506765677a1265676c57706e506775706b7667506765677a0a656776506764677067700c5d5d63615d70676467706770106667636e506764677067704163616a670a7067646770677049677b0a5d5d63615d606e636c692a41636c6c6d7622616d6c7467707622776c6667646b6c6766226d70226c776e6e22766d226d60686761760e6a63714d756c52706d726770767b0574636e77670875706b7663606e670c616d6c646b65777063606e671472706d726770767b4b71476c776f677063606e670e766d4e6d61636e675176706b6c650774636e77674d640d6b7152706d766d767b72674d64204d60686761762c69677b712261636e6e6766226d6c226c6d6c2f6d606867617606302c33332c320640365834756d0c5a2f4f717166692f4b6c646d03606d67296a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d6567764b6c646d236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d72236a76767271382d2d7a7a60652c716c717166692c616d6f2d7567607166692d74332d7605776057706e0a3034373636313735343b02373302363a03276122022f3c0d616d6e6d703821603333376630096f6d7771676f6d74670769677b666d756c096f6d777167666d756c0232300232330a5d5d67714f6d66776e67\\\", [, , \\\"undefined\\\" != typeof exports ? exports : void 0, \\\"undefined\\\" != typeof module ? module : void 0, \\\"undefined\\\" != typeof define ? define : void 0, \\\"undefined\\\" != typeof Object ? Object : void 0, void 0, \\\"undefined\\\" != typeof TypeError ? TypeError : void 0, \\\"undefined\\\" != typeof document ? document : void 0, \\\"undefined\\\" != typeof InstallTrigger ? InstallTrigger : void 0, \\\"undefined\\\" != typeof safari ? safari : void 0, \\\"undefined\\\" != typeof Date ? Date : void 0, \\\"undefined\\\" != typeof Math ? Math : void 0, \\\"undefined\\\" != typeof navigator ? navigator : void 0, \\\"undefined\\\" != typeof location ? location : void 0, \\\"undefined\\\" != typeof history ? history : void 0, \\\"undefined\\\" != typeof Image ? Image : void 0, \\\"undefined\\\" != typeof console ? console : void 0, \\\"undefined\\\" != typeof PluginArray ? PluginArray : void 0, \\\"undefined\\\" != typeof indexedDB ? indexedDB : void 0, \\\"undefined\\\" != typeof DOMException ? DOMException : void 0, \\\"undefined\\\" != typeof parseInt ? parseInt : void 0, \\\"undefined\\\" != typeof String ? String : void 0, \\\"undefined\\\" != typeof Array ? Array : void 0, \\\"undefined\\\" != typeof Error ? Error : void 0, \\\"undefined\\\" != typeof JSON ? JSON : void 0, \\\"undefined\\\" != typeof Promise ? Promise : void 0, \\\"undefined\\\" != typeof WebSocket ? WebSocket : void 0, \\\"undefined\\\" != typeof eval ? eval : void 0, \\\"undefined\\\" != typeof setTimeout ? setTimeout : void 0, \\\"undefined\\\" != typeof encodeURIComponent ? encodeURIComponent : void 0, \\\"undefined\\\" != typeof encodeURI ? encodeURI : void 0, \\\"undefined\\\" != typeof Request ? Request : void 0, \\\"undefined\\\" != typeof Headers ? Headers : void 0, \\\"undefined\\\" != typeof decodeURIComponent ? decodeURIComponent : void 0, \\\"undefined\\\" != typeof RegExp ? RegExp : void 0]);\\n\\nwindow.byted_acrawler.init({\\n    aid: 6383,\\n    dfp: !1,\\n    boe: !1,\\n    intercept: !0,\\n    enablePathList: [\\\"/aweme/v1/*\\\", \\\"/aweme/v2/*\\\"]\\n})\\n\\nfunction S() {\\n    var a = new XMLHttpRequest\\n      , c = undefined || \\\"POST\\\";\\n    a.open(c, \\\"\\\" + \\\"https://mcs.snssdk.com/v1/user/webid\\\", !0),\\n    a.setRequestHeader(\\\"Content-Type\\\", \\\"application/json; charset=utf-8\\\"),\\n    undefined && a.setRequestHeader(\\\"X-MCS-AppKey\\\", \\\"\\\" + r),\\n    a.onload = function() {\\n        if (i) {\\n            var e = null;\\n            if (\\\"\\\") {\\n                try {\\n                    e = JSON.parse(a.responseText)\\n                } catch (t) {\\n                    e = {}\\n                }\\n                i(e, t)\\n            }\\n        }\\n    }\\n    ;\\n    5000 && (a.timeout = 5000),\\n    5000 && (a.ontimeout = function() {\\n        n && n(t, f.TIMEOUT)\\n    }\\n    ),\\n    a.onerror = function() {\\n        a.abort(),\\n        n && n(t, f.XHR_ON)\\n    }\\n    ,\\n    a.send({\\n        \\\"app_id\\\": 6383,\\n        \\\"url\\\": \\\"https://www.douyin.com/\\\",\\n        \\\"user_agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n        \\\"referer\\\": \\\"\\\",\\n        \\\"user_unique_id\\\": \\\"\\\"\\n    })\\n\\n}\\n\\n//S()\\n\\n\\nvar r = function() {\\n    var o = Object.prototype.toString;\\n    function i(e) {\\n        return \\\"[object Array]\\\" === o.call(e)\\n    }\\n    function a(e) {\\n        return void 0 === e\\n    }\\n    function s(e) {\\n        return null !== e && \\\"object\\\" == typeof e\\n    }\\n    function u(e) {\\n        if (\\\"[object Object]\\\" !== o.call(e))\\n            return !1;\\n        var t = Object.getPrototypeOf(e);\\n        return null === t || t === Object.prototype\\n    }\\n    function c(e) {\\n        return \\\"[object Function]\\\" === o.call(e)\\n    }\\n    function l(e, t) {\\n        if (null != e)\\n            if (\\\"object\\\" != typeof e && (e = [e]),\\n            i(e))\\n                for (var n = 0, r = e.length; n < r; n++)\\n                    t.call(null, e[n], n, e);\\n            else\\n                for (var o in e)\\n                    Object.prototype.hasOwnProperty.call(e, o) && t.call(null, e[o], o, e)\\n    }\\n    return {\\n        isArray: i,\\n        isArrayBuffer: function(e) {\\n            return \\\"[object ArrayBuffer]\\\" === o.call(e)\\n        },\\n        isBuffer: function(e) {\\n            return null !== e && !a(e) && null !== e.constructor && !a(e.constructor) && \\\"function\\\" == typeof e.constructor.isBuffer && e.constructor.isBuffer(e)\\n        },\\n        isFormData: function(e) {\\n            return \\\"undefined\\\" != typeof FormData && e instanceof FormData\\n        },\\n        isArrayBufferView: function(e) {\\n            return \\\"undefined\\\" != typeof ArrayBuffer && ArrayBuffer.isView ? ArrayBuffer.isView(e) : e && e.buffer && e.buffer instanceof ArrayBuffer\\n        },\\n        isString: function(e) {\\n            return \\\"string\\\" == typeof e\\n        },\\n        isNumber: function(e) {\\n            return \\\"number\\\" == typeof e\\n        },\\n        isObject: s,\\n        isPlainObject: u,\\n        isUndefined: a,\\n        isDate: function(e) {\\n            return \\\"[object Date]\\\" === o.call(e)\\n        },\\n        isFile: function(e) {\\n            return \\\"[object File]\\\" === o.call(e)\\n        },\\n        isBlob: function(e) {\\n            return \\\"[object Blob]\\\" === o.call(e)\\n        },\\n        isFunction: c,\\n        isStream: function(e) {\\n            return s(e) && c(e.pipe)\\n        },\\n        isURLSearchParams: function(e) {\\n            return \\\"undefined\\\" != typeof URLSearchParams && e instanceof URLSearchParams\\n        },\\n        isStandardBrowserEnv: function() {\\n            return (\\\"undefined\\\" == typeof navigator || \\\"ReactNative\\\" !== navigator.product && \\\"NativeScript\\\" !== navigator.product && \\\"NS\\\" !== navigator.product) && (\\\"undefined\\\" != typeof window && \\\"undefined\\\" != typeof document)\\n        },\\n        forEach: l,\\n        merge: function e() {\\n            var t = {};\\n            function n(n, r) {\\n                u(t[r]) && u(n) ? t[r] = e(t[r], n) : u(n) ? t[r] = e({}, n) : i(n) ? t[r] = n.slice() : t[r] = n\\n            }\\n            for (var r = 0, o = arguments.length; r < o; r++)\\n                l(arguments[r], n);\\n            return t\\n        },\\n        extend: function(e, t, n) {\\n            return l(t, (function(t, o) {\\n                e[o] = n && \\\"function\\\" == typeof t ? r(t, n) : t\\n            }\\n            )),\\n            e\\n        },\\n        trim: function(e) {\\n            return e.replace(/^\\\\s*/, \\\"\\\").replace(/\\\\s*$/, \\\"\\\")\\n        },\\n        stripBOM: function(e) {\\n            return 65279 === e.charCodeAt(0) && (e = e.slice(1)),\\n            e\\n        }\\n    }\\n}()\\n\\nfunction o(e) {\\n    return encodeURIComponent(e).replace(/%3A/gi, \\\":\\\").replace(/%24/g, \\\"$\\\").replace(/%2C/gi, \\\",\\\").replace(/%20/g, \\\"+\\\").replace(/%5B/gi, \\\"[\\\").replace(/%5D/gi, \\\"]\\\")\\n}\\n\\nfunction a(e, t, n) {\\n    if (!t)\\n        return e;\\n    var i;\\n    if (n)\\n        i = n(t);\\n    else if (r.isURLSearchParams(t))\\n        i = t.toString();\\n    else {\\n        var a = [];\\n        r.forEach(t, (function(e, t) {\\n            null != e && (r.isArray(e) ? t += \\\"[]\\\" : e = [e],\\n            r.forEach(e, (function(e) {\\n                r.isDate(e) ? e = e.toISOString() : r.isObject(e) && (e = JSON.stringify(e)),\\n                a.push(o(t) + \\\"=\\\" + o(e))\\n            }\\n            )))\\n        }\\n        )),\\n        i = a.join(\\\"&\\\")\\n    }\\n    if (i) {\\n        var s = e.indexOf(\\\"#\\\");\\n        -1 !== s && (e = e.slice(0, s)),\\n        e += (-1 === e.indexOf(\\\"?\\\") ? \\\"?\\\" : \\\"&\\\") + i\\n    }\\n    return e\\n}\\n\\nfunction feed() {\\n    var e = {\\n        \\\"url\\\": \\\"/aweme/v1/web/channel/feed/\\\",\\n        \\\"method\\\": \\\"get\\\",\\n        \\\"headers\\\": {\\n            \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n            \\\"Content-Type\\\": \\\"application/json\\\",\\n            \\\"withCredentials\\\": true\\n        },\\n        \\\"params\\\": {\\n            \\\"device_platform\\\": \\\"webapp\\\",\\n            \\\"aid\\\": 6383,\\n            \\\"channel\\\": \\\"channel_pc_web\\\",\\n            \\\"tag_id\\\": \\\"\\\",\\n            \\\"count\\\": 10,\\n            \\\"version_code\\\": \\\"160100\\\",\\n            \\\"version_name\\\": \\\"16.1.0\\\",\\n            \\\"cookie_enabled\\\": true,\\n            \\\"screen_width\\\": 1280,\\n            \\\"screen_height\\\": 720,\\n            \\\"browser_language\\\": \\\"zh-CN\\\",\\n            \\\"browser_platform\\\": \\\"Win32\\\",\\n            \\\"browser_name\\\": \\\"Mozilla\\\",\\n            \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n            \\\"browser_online\\\": true\\n        },\\n        \\\"baseURL\\\": \\\"\\\",\\n        \\\"transformRequest\\\": [null],\\n        \\\"timeout\\\": 0,\\n        \\\"xsrfCookieName\\\": \\\"XSRF-TOKEN\\\",\\n        \\\"xsrfHeaderName\\\": \\\"X-XSRF-TOKEN\\\",\\n        \\\"maxContentLength\\\": -1,\\n        \\\"maxBodyLength\\\": -1\\n    };\\n    var f = e.data\\n      , d = e.headers;\\n    r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n    var h = new XMLHttpRequest;\\n    if (e.auth) {\\n        var p = e.auth.username || \\\"\\\"\\n          , m = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \\\"\\\";\\n        d.Authorization = \\\"Basic \\\" + btoa(p + \\\":\\\" + m)\\n    }\\n    var v = e.url;\\n    if (h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0),\\n    h.timeout = e.timeout,\\n    h.onreadystatechange = function() {\\n        if (h && 4 === h.readyState && (0 !== h.status || h.responseURL && 0 === h.responseURL.indexOf(\\\"file:\\\"))) {\\n            var r = \\\"getAllResponseHeaders\\\"in h ? u(h.getAllResponseHeaders()) : null\\n              , i = {\\n                data: e.responseType && \\\"text\\\" !== e.responseType ? h.response : h.responseText,\\n                status: h.status,\\n                statusText: h.statusText,\\n                headers: r,\\n                config: e,\\n                request: h\\n            };\\n            o(t, n, i),\\n            h = null\\n        }\\n    }\\n    ,\\n    h.onabort = function() {\\n        h && (n(l(\\\"Request aborted\\\", e, \\\"ECONNABORTED\\\", h)),\\n        h = null)\\n    }\\n    ,\\n    h.onerror = function() {\\n        n(l(\\\"Network Error\\\", e, null, h)),\\n        h = null\\n    }\\n    ,\\n    h.ontimeout = function() {\\n        var t = \\\"timeout of \\\" + e.timeout + \\\"ms exceeded\\\";\\n        e.timeoutErrorMessage && (t = e.timeoutErrorMessage),\\n        n(l(t, e, \\\"ECONNABORTED\\\", h)),\\n        h = null\\n    }\\n    ,\\n    r.isStandardBrowserEnv()) {//   var g = (e.withCredentials || c(v)) && e.xsrfCookieName ? i.read(e.xsrfCookieName) : void 0;\\n    //   g && (d[e.xsrfHeaderName] = g)\\n    }\\n    if (\\\"setRequestHeader\\\"in h && r.forEach(d, (function(e, t) {\\n        void 0 === f && \\\"content-type\\\" === t.toLowerCase() ? delete d[t] : h.setRequestHeader(t, e)\\n    }\\n    )),\\n    r.isUndefined(e.withCredentials) || (h.withCredentials = !!e.withCredentials),\\n    e.responseType)\\n        try {\\n            h.responseType = e.responseType\\n        } catch (t) {\\n            if (\\\"json\\\" !== e.responseType)\\n                throw t\\n        }\\n    \\\"function\\\" == typeof e.onDownloadProgress && h.addEventListener(\\\"progress\\\", e.onDownloadProgress),\\n    \\\"function\\\" == typeof e.onUploadProgress && h.upload && h.upload.addEventListener(\\\"progress\\\", e.onUploadProgress),\\n    e.cancelToken && e.cancelToken.promise.then((function(e) {\\n        h && (h.abort(),\\n        n(e),\\n        h = null)\\n    }\\n    )),\\n    f || (f = null),\\n    h.send(f)\\n    return \\\"https://www.douyin.com\\\" + h._url\\n\\n}\\n\\nfunction search_item(keyword){\\n    var e = {\\n        \\\"url\\\": \\\"/aweme/v1/web/search/item/\\\",\\n        \\\"method\\\": \\\"get\\\",\\n        \\\"headers\\\": {\\n            \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n            \\\"Content-Type\\\": \\\"application/json\\\",\\n            \\\"withCredentials\\\": true\\n        },\\n        \\\"params\\\": {\\n            \\\"device_platform\\\": \\\"webapp\\\",\\n            \\\"aid\\\": 6383,\\n            \\\"channel\\\": \\\"channel_pc_web\\\",\\n            \\\"search_channel\\\": \\\"aweme_video_web\\\",\\n            \\\"sort_type\\\": \\\"0\\\",\\n            \\\"publish_time\\\": \\\"0\\\",\\n            \\\"keyword\\\": keyword,\\n            \\\"search_source\\\": \\\"normal_search\\\",\\n            \\\"query_correct_type\\\": \\\"1\\\",\\n            \\\"is_filter_search\\\": \\\"0\\\",\\n            \\\"offset\\\": 0,\\n            \\\"count\\\": 15,\\n            \\\"version_code\\\": \\\"160100\\\",\\n            \\\"version_name\\\": \\\"16.1.0\\\",\\n            \\\"cookie_enabled\\\": true,\\n            \\\"screen_width\\\": 1280,\\n            \\\"screen_height\\\": 720,\\n            \\\"browser_language\\\": \\\"zh-CN\\\",\\n            \\\"browser_platform\\\": \\\"Win32\\\",\\n            \\\"browser_name\\\": \\\"Mozilla\\\",\\n            \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n            \\\"browser_online\\\": true\\n        },\\n    };\\n        var f = e.data\\n          , d = e.headers;\\n        r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n        var h = new XMLHttpRequest;\\n        var v = e.url;\\n        h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0)\\n        h.send(f)\\n        return h._url\\n}\\n\\nfunction search_user(keyword){\\n    var e = {\\n        \\\"url\\\": \\\"/aweme/v1/web/discover/search/\\\",\\n        \\\"method\\\": \\\"get\\\",\\n        \\\"headers\\\": {\\n            \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n            \\\"Content-Type\\\": \\\"application/json\\\",\\n            \\\"withCredentials\\\": true\\n        },\\n        \\\"params\\\": {\\n            \\\"device_platform\\\": \\\"webapp\\\",\\n            \\\"aid\\\": 6383,\\n            \\\"channel\\\": \\\"channel_pc_web\\\",\\n            \\\"search_channel\\\": \\\"aweme_video_web\\\",\\n            \\\"sort_type\\\": \\\"0\\\",\\n            \\\"publish_time\\\": \\\"0\\\",\\n            \\\"keyword\\\": keyword,\\n            \\\"search_source\\\": \\\"normal_search\\\",\\n            \\\"query_correct_type\\\": \\\"1\\\",\\n            \\\"is_filter_search\\\": \\\"0\\\",\\n            \\\"offset\\\": 0,\\n            \\\"count\\\": 20,\\n            \\\"version_code\\\": \\\"160100\\\",\\n            \\\"version_name\\\": \\\"16.1.0\\\",\\n            \\\"cookie_enabled\\\": true,\\n            \\\"screen_width\\\": 1280,\\n            \\\"screen_height\\\": 720,\\n            \\\"browser_language\\\": \\\"zh-CN\\\",\\n            \\\"browser_platform\\\": \\\"Win32\\\",\\n            \\\"browser_name\\\": \\\"Mozilla\\\",\\n            \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n            \\\"browser_online\\\": true\\n        },\\n        \\\"baseURL\\\": \\\"\\\",\\n        \\\"transformRequest\\\": [null],\\n        \\\"transformResponse\\\": [null],\\n        \\\"timeout\\\": 0,\\n        \\\"xsrfCookieName\\\": \\\"XSRF-TOKEN\\\",\\n        \\\"xsrfHeaderName\\\": \\\"X-XSRF-TOKEN\\\",\\n        \\\"maxContentLength\\\": -1,\\n        \\\"maxBodyLength\\\": -1\\n    };\\n        var f = e.data\\n          , d = e.headers;\\n        r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n        var h = new XMLHttpRequest;\\n        if (e.auth) {\\n            var p = e.auth.username || \\\"\\\"\\n              , m = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \\\"\\\";\\n            d.Authorization = \\\"Basic \\\" + btoa(p + \\\":\\\" + m)\\n        }\\n        var v = e.url;\\n        if (h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0),\\n        h.timeout = e.timeout,\\n        h.onreadystatechange = function() {\\n            if (h && 4 === h.readyState && (0 !== h.status || h.responseURL && 0 === h.responseURL.indexOf(\\\"file:\\\"))) {\\n                var r = \\\"getAllResponseHeaders\\\"in h ? u(h.getAllResponseHeaders()) : null\\n                  , i = {\\n                    data: e.responseType && \\\"text\\\" !== e.responseType ? h.response : h.responseText,\\n                    status: h.status,\\n                    statusText: h.statusText,\\n                    headers: r,\\n                    config: e,\\n                    request: h\\n                };\\n                o(t, n, i),\\n                h = null\\n            }\\n        }\\n        ,\\n        h.onabort = function() {\\n            h && (n(l(\\\"Request aborted\\\", e, \\\"ECONNABORTED\\\", h)),\\n            h = null)\\n        }\\n        ,\\n        h.onerror = function() {\\n            n(l(\\\"Network Error\\\", e, null, h)),\\n            h = null\\n        }\\n        ,\\n        h.ontimeout = function() {\\n            var t = \\\"timeout of \\\" + e.timeout + \\\"ms exceeded\\\";\\n            e.timeoutErrorMessage && (t = e.timeoutErrorMessage),\\n            n(l(t, e, \\\"ECONNABORTED\\\", h)),\\n            h = null\\n        }\\n        ,\\n        r.isStandardBrowserEnv()) {\\n            //   var g = (e.withCredentials || c(v)) && e.xsrfCookieName ? i.read(e.xsrfCookieName) : void 0;\\n        //   g && (d[e.xsrfHeaderName] = g)\\n        }\\n        if (\\\"setRequestHeader\\\"in h && r.forEach(d, (function(e, t) {\\n            void 0 === f && \\\"content-type\\\" === t.toLowerCase() ? delete d[t] : h.setRequestHeader(t, e)\\n        }\\n        )),\\n        r.isUndefined(e.withCredentials) || (h.withCredentials = !!e.withCredentials),\\n        e.responseType)\\n            try {\\n                h.responseType = e.responseType\\n            } catch (t) {\\n                if (\\\"json\\\" !== e.responseType)\\n                    throw t\\n            }\\n        \\\"function\\\" == typeof e.onDownloadProgress && h.addEventListener(\\\"progress\\\", e.onDownloadProgress),\\n        \\\"function\\\" == typeof e.onUploadProgress && h.upload && h.upload.addEventListener(\\\"progress\\\", e.onUploadProgress),\\n        e.cancelToken && e.cancelToken.promise.then((function(e) {\\n            h && (h.abort(),\\n            n(e),\\n            h = null)\\n        }\\n        )),\\n        f || (f = null),\\n        h.send(f)\\n        return \\\"https://www.douyin.com\\\" + h._url\\n}\\n\\nfunction comment(aweme_id){\\n        var e={\\n            \\\"url\\\":\\\"/aweme/v1/web/comment/list/\\\",\\n            \\\"method\\\":\\\"get\\\",\\n            \\\"headers\\\":{\\n                        \\\"Accept\\\":\\\"application/json, text/plain, */*\\\",\\n                        \\\"Content-Type\\\":\\\"application/json\\\",\\n                        \\\"withCredentials\\\":true,\\n                        \\\"referer\\\": \\\"https://www.douyin.com\\\"\\n                    },\\n            \\\"params\\\":{\\n                \\\"device_platform\\\":\\\"webapp\\\",\\n                \\\"aid\\\":6383,\\n                \\\"channel\\\":\\\"channel_pc_web\\\",\\n                \\\"search_channel\\\":\\\"aweme_video_web\\\",\\n                \\\"sort_type\\\":\\\"0\\\",\\n                \\\"publish_time\\\":\\\"0\\\",\\n                \\\"aweme_id\\\":aweme_id,\\n                \\\"search_source\\\":\\\"normal_search\\\",\\n                \\\"query_correct_type\\\":\\\"1\\\",\\n                \\\"is_filter_search\\\":\\\"0\\\",\\n                \\\"offset\\\":0,\\n                \\\"count\\\":20,\\n                \\\"version_code\\\":\\\"160100\\\",\\n                \\\"version_name\\\":\\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\":true,\\\"screen_width\\\":1280,\\n                \\\"screen_height\\\":720,\\\"browser_language\\\":\\\"zh-CN\\\",\\n                \\\"browser_platform\\\":\\\"Win32\\\",\\\"browser_name\\\":\\\"Mozilla\\\",\\n                \\\"browser_version\\\":\\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\":true\\n            },\\n            \\\"baseURL\\\":\\\"\\\",\\\"transformRequest\\\":[null],\\\"transformResponse\\\":[null],\\\"timeout\\\":0,\\n            \\\"xsrfCookieName\\\":\\\"XSRF-TOKEN\\\",\\\"xsrfHeaderName\\\":\\\"X-XSRF-TOKEN\\\",\\\"maxContentLength\\\":-1,\\\"maxBodyLength\\\":-1\\n        };\\n        var f = e.data\\n          , d = e.headers;\\n        r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n        var h = new XMLHttpRequest;\\n        if (e.auth) {\\n            var p = e.auth.username || \\\"\\\"\\n              , m = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \\\"\\\";\\n            d.Authorization = \\\"Basic \\\" + btoa(p + \\\":\\\" + m)\\n        }\\n        var v = e.url;\\n        if (h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0),\\n        h.timeout = e.timeout,\\n        h.onreadystatechange = function() {\\n            if (h && 4 === h.readyState && (0 !== h.status || h.responseURL && 0 === h.responseURL.indexOf(\\\"file:\\\"))) {\\n                var r = \\\"getAllResponseHeaders\\\"in h ? u(h.getAllResponseHeaders()) : null\\n                  , i = {\\n                    data: e.responseType && \\\"text\\\" !== e.responseType ? h.response : h.responseText,\\n                    status: h.status,\\n                    statusText: h.statusText,\\n                    headers: r,\\n                    config: e,\\n                    request: h\\n                };\\n                o(t, n, i),\\n                h = null\\n            }\\n        }\\n        ,\\n        h.onabort = function() {\\n            h && (n(l(\\\"Request aborted\\\", e, \\\"ECONNABORTED\\\", h)),\\n            h = null)\\n        }\\n        ,\\n        h.onerror = function() {\\n            n(l(\\\"Network Error\\\", e, null, h)),\\n            h = null\\n        }\\n        ,\\n        h.ontimeout = function() {\\n            var t = \\\"timeout of \\\" + e.timeout + \\\"ms exceeded\\\";\\n            e.timeoutErrorMessage && (t = e.timeoutErrorMessage),\\n            n(l(t, e, \\\"ECONNABORTED\\\", h)),\\n            h = null\\n        }\\n        ,\\n        r.isStandardBrowserEnv()) {//   var g = (e.withCredentials || c(v)) && e.xsrfCookieName ? i.read(e.xsrfCookieName) : void 0;\\n        //   g && (d[e.xsrfHeaderName] = g)\\n        }\\n        if (\\\"setRequestHeader\\\"in h && r.forEach(d, (function(e, t) {\\n            void 0 === f && \\\"content-type\\\" === t.toLowerCase() ? delete d[t] : h.setRequestHeader(t, e)\\n        }\\n        )),\\n        r.isUndefined(e.withCredentials) || (h.withCredentials = !!e.withCredentials),\\n        e.responseType)\\n            try {\\n                h.responseType = e.responseType\\n            } catch (t) {\\n                if (\\\"json\\\" !== e.responseType)\\n                    throw t\\n            }\\n        \\\"function\\\" == typeof e.onDownloadProgress && h.addEventListener(\\\"progress\\\", e.onDownloadProgress),\\n        \\\"function\\\" == typeof e.onUploadProgress && h.upload && h.upload.addEventListener(\\\"progress\\\", e.onUploadProgress),\\n        e.cancelToken && e.cancelToken.promise.then((function(e) {\\n            h && (h.abort(),\\n            n(e),\\n            h = null)\\n        }\\n        )),\\n        f || (f = null),\\n        h.send(f)\\n        return \\\"https://www.douyin.com\\\" + h._url\\n\\n\\n}\\n\\nfunction aweme_post(sec_user_id){\\n        var e={\\n            \\\"url\\\":\\\"/aweme/v1/web/aweme/post/\\\",\\n            \\\"method\\\":\\\"get\\\",\\n            \\\"headers\\\":{\\n                        \\\"Accept\\\":\\\"application/json, text/plain, */*\\\",\\n                        \\\"Content-Type\\\":\\\"application/json\\\",\\n                        \\\"withCredentials\\\":true\\n                    },\\n            \\\"params\\\":{\\n                \\\"device_platform\\\":\\\"webapp\\\",\\n                \\\"aid\\\":6383,\\n                \\\"channel\\\":\\\"channel_pc_web\\\",\\n                \\\"search_channel\\\":\\\"aweme_video_web\\\",\\n                \\\"publish_video_strategy_type\\\":\\\"2\\\",\\n                \\\"sec_user_id\\\":sec_user_id,\\n                \\\"search_source\\\":\\\"normal_search\\\",\\n                \\\"query_correct_type\\\":\\\"1\\\",\\n                \\\"is_filter_search\\\":\\\"0\\\",\\n                \\\"count\\\":10,\\n                \\\"version_code\\\":\\\"160100\\\",\\n                \\\"version_name\\\":\\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\":true,\\\"screen_width\\\":1280,\\n                \\\"screen_height\\\":720,\\\"browser_language\\\":\\\"zh-CN\\\",\\n                \\\"browser_platform\\\":\\\"Win32\\\",\\\"browser_name\\\":\\\"Mozilla\\\",\\n                \\\"browser_version\\\":\\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\":true\\n            },\\n            \\\"baseURL\\\":\\\"\\\",\\\"transformRequest\\\":[null],\\\"transformResponse\\\":[null],\\\"timeout\\\":0,\\n            \\\"xsrfCookieName\\\":\\\"XSRF-TOKEN\\\",\\\"xsrfHeaderName\\\":\\\"X-XSRF-TOKEN\\\",\\\"maxContentLength\\\":-1,\\\"maxBodyLength\\\":-1\\n        };\\n        var f = e.data\\n          , d = e.headers;\\n        r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n        var h = new XMLHttpRequest;\\n        if (e.auth) {\\n            var p = e.auth.username || \\\"\\\"\\n              , m = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \\\"\\\";\\n            d.Authorization = \\\"Basic \\\" + btoa(p + \\\":\\\" + m)\\n        }\\n        var v = e.url;\\n        if (h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0),\\n        h.timeout = e.timeout,\\n        h.onreadystatechange = function() {\\n            if (h && 4 === h.readyState && (0 !== h.status || h.responseURL && 0 === h.responseURL.indexOf(\\\"file:\\\"))) {\\n                var r = \\\"getAllResponseHeaders\\\"in h ? u(h.getAllResponseHeaders()) : null\\n                  , i = {\\n                    data: e.responseType && \\\"text\\\" !== e.responseType ? h.response : h.responseText,\\n                    status: h.status,\\n                    statusText: h.statusText,\\n                    headers: r,\\n                    config: e,\\n                    request: h\\n                };\\n                o(t, n, i),\\n                h = null\\n            }\\n        }\\n        ,\\n        h.onabort = function() {\\n            h && (n(l(\\\"Request aborted\\\", e, \\\"ECONNABORTED\\\", h)),\\n            h = null)\\n        }\\n        ,\\n        h.onerror = function() {\\n            n(l(\\\"Network Error\\\", e, null, h)),\\n            h = null\\n        }\\n        ,\\n        h.ontimeout = function() {\\n            var t = \\\"timeout of \\\" + e.timeout + \\\"ms exceeded\\\";\\n            e.timeoutErrorMessage && (t = e.timeoutErrorMessage),\\n            n(l(t, e, \\\"ECONNABORTED\\\", h)),\\n            h = null\\n        }\\n        ,\\n        r.isStandardBrowserEnv()) {//   var g = (e.withCredentials || c(v)) && e.xsrfCookieName ? i.read(e.xsrfCookieName) : void 0;\\n        //   g && (d[e.xsrfHeaderName] = g)\\n        }\\n        if (\\\"setRequestHeader\\\"in h && r.forEach(d, (function(e, t) {\\n            void 0 === f && \\\"content-type\\\" === t.toLowerCase() ? delete d[t] : h.setRequestHeader(t, e)\\n        }\\n        )),\\n        r.isUndefined(e.withCredentials) || (h.withCredentials = !!e.withCredentials),\\n        e.responseType)\\n            try {\\n                h.responseType = e.responseType\\n            } catch (t) {\\n                if (\\\"json\\\" !== e.responseType)\\n                    throw t\\n            }\\n        \\\"function\\\" == typeof e.onDownloadProgress && h.addEventListener(\\\"progress\\\", e.onDownloadProgress),\\n        \\\"function\\\" == typeof e.onUploadProgress && h.upload && h.upload.addEventListener(\\\"progress\\\", e.onUploadProgress),\\n        e.cancelToken && e.cancelToken.promise.then((function(e) {\\n            h && (h.abort(),\\n            n(e),\\n            h = null)\\n        }\\n        )),\\n        f || (f = null),\\n        h.send(f);\\n        return \\\"https://www.douyin.com\\\" + h._url\\n\\n\\n}\\n\\nfunction user_info(sec_user_id){\\n        var e={\\n            \\\"url\\\":\\\"/aweme/v1/web/user/profile/other/\\\",\\n            \\\"method\\\":\\\"get\\\",\\n            \\\"headers\\\":{\\n                        \\\"Accept\\\":\\\"application/json, text/plain, */*\\\",\\n                        \\\"Content-Type\\\":\\\"application/json\\\",\\n                        \\\"withCredentials\\\":true\\n                    },\\n            \\\"params\\\":{\\n                \\\"device_platform\\\":\\\"webapp\\\",\\n                \\\"aid\\\":6383,\\n                \\\"channel\\\":\\\"channel_pc_web\\\",\\n                \\\"publish_video_strategy_type\\\":\\\"2\\\",\\n                \\\"sec_user_id\\\":sec_user_id,\\n                \\\"source\\\":\\\"channel_pc_web\\\",\\n                \\\"version_code\\\":\\\"160100\\\",\\n                \\\"version_name\\\":\\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\":true,\\n                \\\"screen_width\\\":1280,\\n                \\\"screen_height\\\":720,\\\"browser_language\\\":\\\"zh-CN\\\",\\n                \\\"browser_platform\\\":\\\"Win32\\\",\\\"browser_name\\\":\\\"Mozilla\\\",\\n                \\\"browser_version\\\":\\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\":true\\n            },\\n            \\\"baseURL\\\":\\\"\\\",\\\"transformRequest\\\":[null],\\\"transformResponse\\\":[null],\\\"timeout\\\":0,\\n            \\\"xsrfCookieName\\\":\\\"XSRF-TOKEN\\\",\\\"xsrfHeaderName\\\":\\\"X-XSRF-TOKEN\\\",\\\"maxContentLength\\\":-1,\\\"maxBodyLength\\\":-1\\n        };\\n        var f = e.data\\n          , d = e.headers;\\n        r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n        var h = new XMLHttpRequest;\\n        if (e.auth) {\\n            var p = e.auth.username || \\\"\\\"\\n              , m = e.auth.password ? unescape(encodeURIComponent(e.auth.password)) : \\\"\\\";\\n            d.Authorization = \\\"Basic \\\" + btoa(p + \\\":\\\" + m)\\n        }\\n        var v = e.url;\\n        if (h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0),\\n        h.timeout = e.timeout,\\n        h.onreadystatechange = function() {\\n            if (h && 4 === h.readyState && (0 !== h.status || h.responseURL && 0 === h.responseURL.indexOf(\\\"file:\\\"))) {\\n                var r = \\\"getAllResponseHeaders\\\"in h ? u(h.getAllResponseHeaders()) : null\\n                  , i = {\\n                    data: e.responseType && \\\"text\\\" !== e.responseType ? h.response : h.responseText,\\n                    status: h.status,\\n                    statusText: h.statusText,\\n                    headers: r,\\n                    config: e,\\n                    request: h\\n                };\\n                o(t, n, i),\\n                h = null\\n            }\\n        }\\n        ,\\n        h.onabort = function() {\\n            h && (n(l(\\\"Request aborted\\\", e, \\\"ECONNABORTED\\\", h)),\\n            h = null)\\n        }\\n        ,\\n        h.onerror = function() {\\n            n(l(\\\"Network Error\\\", e, null, h)),\\n            h = null\\n        }\\n        ,\\n        h.ontimeout = function() {\\n            var t = \\\"timeout of \\\" + e.timeout + \\\"ms exceeded\\\";\\n            e.timeoutErrorMessage && (t = e.timeoutErrorMessage),\\n            n(l(t, e, \\\"ECONNABORTED\\\", h)),\\n            h = null\\n        }\\n        ,\\n        r.isStandardBrowserEnv()) {//   var g = (e.withCredentials || c(v)) && e.xsrfCookieName ? i.read(e.xsrfCookieName) : void 0;\\n        //   g && (d[e.xsrfHeaderName] = g)\\n        }\\n        if (\\\"setRequestHeader\\\"in h && r.forEach(d, (function(e, t) {\\n            void 0 === f && \\\"content-type\\\" === t.toLowerCase() ? delete d[t] : h.setRequestHeader(t, e)\\n        }\\n        )),\\n        r.isUndefined(e.withCredentials) || (h.withCredentials = !!e.withCredentials),\\n        e.responseType)\\n            try {\\n                h.responseType = e.responseType\\n            } catch (t) {\\n                if (\\\"json\\\" !== e.responseType)\\n                    throw t\\n            }\\n        \\\"function\\\" == typeof e.onDownloadProgress && h.addEventListener(\\\"progress\\\", e.onDownloadProgress),\\n        \\\"function\\\" == typeof e.onUploadProgress && h.upload && h.upload.addEventListener(\\\"progress\\\", e.onUploadProgress),\\n        e.cancelToken && e.cancelToken.promise.then((function(e) {\\n            h && (h.abort(),\\n            n(e),\\n            h = null)\\n        }\\n        )),\\n        f || (f = null),\\n        h.send(f);\\n        return \\\"https://www.douyin.com\\\" + h._url\\n\\n\\n}\\n\\nfunction makeSignatureUrl(e) {\\n    var f = e.data, d = e.headers;\\n    r.isFormData(f) && delete d[\\\"Content-Type\\\"];\\n    var h = new XMLHttpRequest;\\n    var v = e.url;\\n    h.open(e.method.toUpperCase(), a(v, e.params, e.paramsSerializer), !0)\\n    h.send(f)\\n    return h._url\\n}\"},{\"name\":\"抖音\",\"path\":\"douyin\",\"rule\":\"const douyin = {\\n    d: [],\\n    empty: 'hiker://empty',\\n    ua: \\\"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36\\\",\\n    files: {\\n        cookieTemp: 'hiker://files/rules/TyrantG/cookie/douyin.txt',\\n        channels: 'hiker://files/rules/TyrantG/js/douyin_web_channels.json',\\n    },\\n    variable: {\\n        host: 'https://www.douyin.com',\\n        live: 'https://live.douyin.com',\\n        tabs: [\\n            {title: '推荐', name: 'feed'},\\n            {title: '直播', name: 'live'},\\n            // {title: '热点', name: 'hot'},\\n            {title: '本地关注', name: 'local'},\\n            {title: '抖音关注', name: 'attention'},\\n            {title: '设置', name: 'setting'},\\n        ],\\n        feedTab: [\\n            {title: '全部', id: ''},\\n            {title: '娱乐', id: '300201'},\\n            {title: '知识', id: '300203'},\\n            {title: '二次元', id: '300206'},\\n            {title: '游戏', id: '300205'},\\n            {title: '美食', id: '300204'},\\n            {title: '体育', id: '300207'},\\n            {title: '时尚', id: '300208'},\\n            {title: '音乐', id: '300209'},\\n        ],\\n    },\\n    data: {\\n        tab_selected: getMyVar('tg.dy_web.class.tab_selected', '0'),\\n        feed_tab_selected: getMyVar('tg.dy_web.class.feed_tab_selected', '0'),\\n        live_1st_tab_selected: getMyVar('tg.dy_web.class.live_1st_tab_selected', '0'),\\n        live_2nd_tab_selected: getMyVar('tg.dy_web.class.live_2nd_tab_selected', '0'),\\n        channel_select: getMyVar('tg.dy_web.class.channel_select', '0'),\\n        live_url: getMyVar('tg.dy_web.url.live_url', 'https://live.douyin.com'),\\n        max_cursor: getMyVar('tg.dy_web.page.max_cursor', ''),\\n    },\\n    request: (e) => {\\n        const cookie_content = request(douyin.files.cookieTemp)\\n        eval(JSON.parse(request('hiker://page/signature')).rule)\\n        const url = makeSignatureUrl(e)\\n\\n        let data_json = fetch(url, {\\n            method: e.method,\\n            headers: {\\n                \\\"referer\\\" : \\\"https://www.douyin.com/\\\",\\n                \\\"origin\\\" : \\\"https://www.douyin.com\\\",\\n                \\\"cookie\\\": cookie_content,\\n                \\\"Accept\\\": 'application/json, text/plain, */*',\\n                \\\"User-Agent\\\": douyin.ua,\\n            }\\n        })\\n\\n        return data_json\\n    },\\n    channelsInit: () => {\\n        let channels = []\\n\\n        try {\\n            if (fetch(douyin.files.channels)) {\\n                let local_channels = fetch(douyin.files.channels)\\n                channels = JSON.parse(local_channels)\\n            } else {\\n                let defaultChannels = [\\n                    {title: '长期洗涤Longwashing', sec_uid: 'MS4wLjABAAAAG6rxkrEV5bnuXAL1K8uiY8dZKkFBLszhYw1nm5_ohIQ', avatar_url: 'https://p3-pc.douyinpic.com/img/aweme-avatar/tos-cn-avt-0015_f8826b2fe246913f696a2ca94a832e23~c5_300x300.jpeg?from=2956013662'}\\n                ]\\n                writeFile(douyin.files.channels, JSON.stringify(defaultChannels))\\n                channels = defaultChannels\\n            }\\n        } catch (e){}\\n\\n        return channels\\n    },\\n    baseParse: () => {\\n        // eval(JSON.parse(request('hiker://page/signature')).rule)\\n\\n        const cookie_content = request(douyin.files.cookieTemp)\\n        const has_login = cookie_content.match(/(^| )passport_assist_user=([^;]*)(;|$)/)\\n\\n        if (has_login) {\\n            const page = parseInt(MY_URL.split('##')[1])\\n            const channels = douyin.channelsInit()\\n\\n            if (page === 1) {\\n                /*douyin.d.push({\\n                    url: $(douyin.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                        const douyin = $.require('hiker://page/douyin')\\n\\n                        setResult(douyin.d)\\n                    }),\\n                    title: '请输入关键词',\\n                    col_type: \\\"icon_1_search\\\",\\n                })*/\\n\\n                douyin.variable.tabs.forEach((item, index) => {\\n                    let url\\n                    if (item.name === 'setting') {\\n                        url = $(douyin.empty).rule(() => {\\n                            const douyin = $.require('hiker://page/douyin')\\n                            douyin.settingParse()\\n                            setResult(douyin.d)\\n                        })\\n                    } else {\\n                        url = $(douyin.empty).lazyRule((index) => {\\n                            putMyVar('tg.dy_web.class.tab_selected', index)\\n                            refreshPage(false)\\n                            return 'hiker://empty'\\n                        }, index.toString())\\n                    }\\n                    douyin.d.push({\\n                        title: douyin.data.tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+item.title+'</font></strong>' : item.title,\\n                        url: url,\\n                        col_type: 'scroll_button',\\n                    })\\n                })\\n                douyin.d.push({\\n                    col_type: 'blank_block',\\n                })\\n            }\\n\\n            switch (parseInt(douyin.data.tab_selected)) {\\n                case 0:\\n                    if (page === 1) {\\n                        douyin.variable.feedTab.forEach((tab, index) => {\\n                            douyin.d.push({\\n                                title: douyin.data.feed_tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+tab.title+'</font></strong>' : tab.title,\\n                                url: $(douyin.empty).lazyRule((index) => {\\n                                    putMyVar('tg.dy_web.class.feed_tab_selected', index)\\n                                    refreshPage(false)\\n                                    return 'hiker://empty'\\n                                }, index.toString()),\\n                                col_type: 'scroll_button',\\n                            })\\n                        })\\n                    }\\n                    douyin.feedList(douyin.variable.feedTab[douyin.data.feed_tab_selected].id, page)\\n                    break\\n                case 1:\\n                    if (page === 1) {\\n                        let html = fetch(douyin.data.live_url, {\\n                            headers: {\\n                                \\\"referer\\\" : \\\"https://www.douyin.com/\\\",\\n                                \\\"origin\\\" : \\\"https://www.douyin.com\\\",\\n                                \\\"cookie\\\": cookie_content,\\n                                \\\"Accept\\\": 'application/json, text/plain, */*',\\n                                \\\"User-Agent\\\": douyin.ua,\\n                            }\\n                        })\\n\\n                        const live_1st_tab = pdfa(html, '.dTHxj109&&.O9_s5yI4')\\n                        let live_2nd_tab = pdfa(html, '.w6nhrn5n&&a')\\n\\n                        live_1st_tab.forEach((tab, index) => {\\n                            let title = pdfh(tab, 'a&&Text')\\n                            let tab_url = douyin.variable.live + pdfh(tab, 'a&&href')\\n                            douyin.d.push({\\n                                title: douyin.data.live_1st_tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+title+'</font></strong>' : title,\\n                                url: $(douyin.empty).lazyRule((index, tab_url) => {\\n                                    putMyVar('tg.dy_web.class.live_1st_tab_selected', index)\\n                                    putMyVar('tg.dy_web.class.live_2nd_tab_selected', '0')\\n                                    putMyVar('tg.dy_web.url.live_url', tab_url)\\n                                    refreshPage(false)\\n                                    return 'hiker://empty'\\n                                }, index.toString(), tab_url),\\n                                col_type: 'scroll_button',\\n                            })\\n                        })\\n                        douyin.d.push({\\n                            col_type: 'blank_block',\\n                        })\\n                        live_2nd_tab.forEach((tab, index) => {\\n                            let title = pdfh(tab, 'a&&Text')\\n                            let tab_url = douyin.variable.live + pdfh(tab, 'a&&href')\\n                            douyin.d.push({\\n                                title: douyin.data.live_2nd_tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+title+'</font></strong>' : title,\\n                                url: $(douyin.empty).lazyRule((index, tab_url) => {\\n                                    putMyVar('tg.dy_web.class.live_2nd_tab_selected', index)\\n                                    putMyVar('tg.dy_web.url.live_url', tab_url)\\n                                    refreshPage(false)\\n                                    return 'hiker://empty'\\n                                }, index.toString(), tab_url),\\n                                col_type: 'scroll_button',\\n                            })\\n                        })\\n                    }\\n\\n                    let partition_arr = douyin.data.live_url.split('/').pop().split('_'), partition = 720, type = 1\\n\\n                    if (partition_arr.length > 1) {\\n                        partition = partition_arr.pop()\\n                        type = partition_arr.pop()\\n                    }\\n\\n                    douyin.liveList(page, partition, type)\\n                    break\\n                case 2:\\n                    let sec_uid = channels[douyin.data.channel_select].sec_uid\\n                    if (page === 1) {\\n                        channels.forEach((channel, index) => {\\n                            douyin.d.push({\\n                                title: parseInt(douyin.data.channel_select) === index ? '✓' + channel.title : channel.title,\\n                                pic_url: channel.avatar_url,\\n                                url: $(douyin.empty).lazyRule(index => {\\n                                    putMyVar(\\\"tg.dy_web.class.channel_select\\\", index)\\n                                    putMyVar(\\\"tg.dy_web.page.max_cursor\\\", \\\"\\\")\\n                                    refreshPage(true)\\n                                    return \\\"hiker://empty\\\"\\n                                }, index.toString()),\\n                                col_type: 'icon_round_4',\\n                                extra: {\\n                                    longClick: [\\n                                        {\\n                                            title: '置顶关注',\\n                                            js: $.toString((channels, index) => {\\n                                                const douyin = $.require('hiker://page/douyin')\\n                                                const current = channels[index]\\n                                                channels.splice(index, 1)\\n                                                channels.unshift(current)\\n                                                putMyVar(\\\"tg.dy_web.class.channel_select\\\", '0')\\n                                                putMyVar(\\\"tg.dy_web.page.max_cursor\\\", \\\"\\\")\\n                                                writeFile(douyin.files.channels, JSON.stringify(channels))\\n                                                refreshPage(false)\\n                                                return \\\"toast://置顶成功\\\"\\n                                            }, channels, index)\\n                                        },\\n                                        {\\n                                            title: '取消关注',\\n                                            js: $.toString((channels, index) => {\\n                                                const douyin = $.require('hiker://page/douyin')\\n                                                channels.splice(index, 1)\\n                                                putMyVar(\\\"tg.dy_web.class.channel_select\\\", '0')\\n                                                putMyVar(\\\"tg.dy_web.page.max_cursor\\\", \\\"\\\")\\n                                                writeFile(douyin.files.channels, JSON.stringify(channels))\\n                                                refreshPage(false)\\n                                                return \\\"toast://取消成功\\\"\\n                                            }, channels, index)\\n                                        },\\n                                    ],\\n                                },\\n                            })\\n                        })\\n\\n                        douyin.d.push({\\n                            col_type:\\\"blank_block\\\"\\n                        })\\n\\n                        let html = fetch(douyin.variable.host+'/user/'+sec_uid, {\\n                            headers: {\\n                                \\\"referer\\\" : \\\"https://www.douyin.com/\\\",\\n                                \\\"cookie\\\": cookie_content,\\n                                \\\"Accept\\\": 'application/json, text/plain, */*',\\n                                \\\"User-Agent\\\": douyin.ua,\\n                            }\\n                        })\\n                        try {\\n                            putMyVar(\\\"tg.dy_web.page.max_cursor\\\", html.match(/%22maxCursor%22%3A(.*?)%2C%22logPb/)[1])\\n                        }catch(e){}\\n                    }\\n                    douyin.userPostList(sec_uid, page, douyin.data.max_cursor)\\n                    break\\n                case 3:\\n                    let html = fetch(douyin.variable.host+'/user/self', {\\n                        headers: {\\n                            \\\"referer\\\" : \\\"https://www.douyin.com/\\\",\\n                            \\\"cookie\\\": cookie_content,\\n                            \\\"Accept\\\": 'application/json, text/plain, */*',\\n                            \\\"User-Agent\\\": douyin.ua,\\n                        }\\n                    })\\n\\n                    try {\\n                        let user_id = html.match(/user_id%22%3A%22(.*?)%22%2C%22/)[1]\\n                        let sec_user_id = html.match(/secUid%22%3A%22(.*?)%22%2C%22shortId/)[1]\\n                        douyin.followingList(user_id, sec_user_id, page)\\n                    }catch(e){}\\n            }\\n\\n        } else {\\n            douyin.d.push({\\n                title: '小程序没有检测到有效的cookie，请按照下面步骤登录抖音网页版以获取cookie',\\n                col_type: 'rich_text',\\n            })\\n            douyin.d.push({\\n                title: '前往登录',\\n                url: $(douyin.empty).rule(() => {\\n                    const douyin = $.require('hiker://page/douyin')\\n                    douyin.d.push({\\n                        title: '1. 进入抖音网页版x5网页后，等待登录弹窗弹出，选择任意方法登录（扫码、短信、密码），推荐使用短信验证码登录。\\\\r\\\\n' +\\n                            '2. 登录完成后等待”记住登录信息“的弹窗出现，点击”确认“。如果第一步是扫码登录或者密码登录会需要短信验证。\\\\r\\\\n' +\\n                            '3. 点击侧边栏”首页“，同时将页面迅速向右下拖动至基本居中，此时会弹出文字验证码或者图形验证码\\\\r\\\\n' +\\n                            '4. 通过验证后返回到首页刷新即可使用',\\n                        url: $(douyin.empty).rule(() => {\\n                            const douyin = $.require('hiker://page/douyin')\\n                            douyin.d.push({\\n                                url: 'https://www.douyin.com',\\n                                desc: '100%&&float',\\n                                col_type: 'x5_webview_single',\\n                                extra: {\\n                                    ua: PC_UA,\\n                                    canBack: true,\\n                                    imgLongClick: false,\\n                                    js: $.toString(douyin.injectJS),\\n                                }\\n                            })\\n                            setResult(douyin.d)\\n                        }),\\n                        col_type: 'long_text',\\n                    })\\n\\n                    douyin.d.push({\\n                        title: '操作视频',\\n                        url: 'https://cdn.tyrantg.com/videos/QQ%E8%A7%86%E9%A2%9120230206164831.mp4',\\n                        col_type: 'text_1',\\n                    })\\n\\n                    douyin.d.push({\\n                        title: '抖音登录',\\n                        url: $(douyin.empty).rule(() => {\\n                            const douyin = $.require('hiker://page/douyin')\\n                            douyin.d.push({\\n                                url: 'https://www.douyin.com',\\n                                desc: '100%&&float',\\n                                col_type: 'x5_webview_single',\\n                                extra: {\\n                                    ua: PC_UA,\\n                                    canBack: true,\\n                                    imgLongClick: false,\\n                                    js: $.toString(douyin.injectJS),\\n                                }\\n                            })\\n                            setResult(douyin.d)\\n                        }),\\n                        col_type: 'text_1',\\n                    })\\n                    setResult(douyin.d)\\n                }),\\n                col_type: 'text_1',\\n            })\\n            /*douyin.d.push({\\n                title: '输入已登录的网站cookie',\\n                col_type: 'text_1',\\n            })*/\\n        }\\n\\n        setResult(douyin.d)\\n    },\\n    liveParse: () => {\\n        const page = parseInt(MY_URL.split('##')[1])\\n        if (page === 1) {\\n            let html = fetch(douyin.data.live_url, {\\n                headers: {\\n                    \\\"referer\\\" : douyin.data.live_url,\\n                    \\\"origin\\\" : douyin.data.live_url,\\n                    // \\\"cookie\\\": cookie_content,\\n                    \\\"Accept\\\": 'application/json, text/plain, */*',\\n                    \\\"User-Agent\\\": douyin.ua,\\n                }\\n            })\\n\\n            const live_1st_tab = pdfa(html, '.dTHxj109&&.O9_s5yI4')\\n            let live_2nd_tab = pdfa(html, '.w6nhrn5n&&a')\\n\\n            live_1st_tab.forEach((tab, index) => {\\n                let title = pdfh(tab, 'a&&Text')\\n                let tab_url = douyin.variable.live + pdfh(tab, 'a&&href')\\n                douyin.d.push({\\n                    title: douyin.data.live_1st_tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+title+'</font></strong>' : title,\\n                    url: $(douyin.empty).lazyRule((index, tab_url) => {\\n                        putMyVar('tg.dy_web.class.live_1st_tab_selected', index)\\n                        putMyVar('tg.dy_web.class.live_2nd_tab_selected', '0')\\n                        putMyVar('tg.dy_web.url.live_url', tab_url)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, index.toString(), tab_url),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            douyin.d.push({\\n                col_type: 'blank_block',\\n            })\\n            live_2nd_tab.forEach((tab, index) => {\\n                let title = pdfh(tab, 'a&&Text')\\n                let tab_url = douyin.variable.live + pdfh(tab, 'a&&href')\\n                douyin.d.push({\\n                    title: douyin.data.live_2nd_tab_selected === index.toString() ? '‘‘’’<strong><font color=\\\"#5FCC97\\\">'+title+'</font></strong>' : title,\\n                    url: $(douyin.empty).lazyRule((index, tab_url) => {\\n                        putMyVar('tg.dy_web.class.live_2nd_tab_selected', index)\\n                        putMyVar('tg.dy_web.url.live_url', tab_url)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, index.toString(), tab_url),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n        }\\n\\n        let partition_arr = douyin.data.live_url.split('/').pop().split('_'), partition = 720, type = 1\\n\\n        if (partition_arr.length > 1) {\\n            partition = partition_arr.pop()\\n            type = partition_arr.pop()\\n        }\\n\\n        douyin.liveList(page, partition, type)\\n\\n        setResult(douyin.d)\\n    },\\n    settingParse: () => {\\n        douyin.d.push({\\n            title: '删除cookie',\\n            url: $(douyin.empty).lazyRule(() => {\\n                const douyin = $.require('hiker://page/douyin')\\n                writeFile(douyin.files.cookieTemp, '')\\n                refreshPage(false)\\n                back(true)\\n                return 'hiker://empty'\\n            }),\\n            col_type: 'text_1',\\n        })\\n    },\\n    videoParse: () => {\\n\\n    },\\n    injectJS: () => {\\n        window.document.body.style.width = '768px'\\n        // const getCookie = function (name) {\\n        //     let arr;\\n        //     const reg = new RegExp(`(^| )${name}=([^;]*)(;|$)`);\\n        //     if (arr = document.cookie.match(reg)) return unescape(arr[2]);\\n        //     return null;\\n        // };\\n\\n        setInterval(() => {\\n            fba.writeFile('hiker://files/rules/TyrantG/cookie/douyin.txt', document.cookie)\\n            // let login_status = getCookie('passport_assist_user')\\n            // if (login_status) {\\n                // alert('获取登录信息成功')\\n                // clearInterval(interval)\\n\\n                // fba.back()\\n            // }\\n        }, 1000)\\n    },\\n    feedList: (tag_id, page) => {\\n        const cookie_content = request(douyin.files.cookieTemp)\\n        let e = {\\n            \\\"url\\\": douyin.variable.host + \\\"/aweme/v1/web/channel/feed/\\\",\\n            \\\"method\\\": \\\"get\\\",\\n            \\\"headers\\\": {\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Content-Type\\\": \\\"application/json\\\",\\n                \\\"withCredentials\\\": true\\n            },\\n            \\\"params\\\": {\\n                \\\"device_platform\\\": \\\"webapp\\\",\\n                \\\"aid\\\": 6383,\\n                \\\"channel\\\": \\\"channel_pc_web\\\",\\n                \\\"tag_id\\\": tag_id,\\n                \\\"count\\\": 100,\\n                \\\"refresh_index\\\": page,\\n                \\\"version_code\\\": \\\"160100\\\",\\n                \\\"version_name\\\": \\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\": true,\\n                \\\"screen_width\\\": 1280,\\n                \\\"screen_height\\\": 720,\\n                \\\"browser_language\\\": \\\"zh-CN\\\",\\n                \\\"browser_platform\\\": \\\"Win32\\\",\\n                \\\"browser_name\\\": \\\"Mozilla\\\",\\n                \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\": true\\n            },\\n        }\\n\\n        let data_json = douyin.request(e)\\n\\n        if (! data_json) {\\n            douyin.d.push({\\n                title: 'cookie失效，请到设置里清除cookie并重新登录',\\n                col_type: \\\"long_text\\\",\\n            })\\n        } else {\\n            let list = JSON.parse(data_json).aweme_list\\n            if (list && list.length > 0) {\\n                list.forEach(item => {\\n                    if (item.video && item.author) {\\n                        douyin.d.push({\\n                            title: item.desc,\\n                            pic_url: item.video.cover.url_list[0],\\n                            desc: item.author.nickname,\\n                            url: item.video.play_addr.url_list[0] + \\\"#isVideo=true#;{Cookie@\\\"+cookie_content.replace(/;/g, '；；')+\\\"}\\\",\\n                            col_type: 'movie_2',\\n                        })\\n                    }\\n                })\\n            }\\n        }\\n    },\\n    liveList: (page, partition, type) => {\\n        let e = {\\n            \\\"url\\\": douyin.variable.live + \\\"/webcast/web/partition/detail/room/\\\",\\n            \\\"method\\\": \\\"get\\\",\\n            \\\"headers\\\": {\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Content-Type\\\": \\\"application/json\\\",\\n                \\\"withCredentials\\\": true\\n            },\\n            \\\"params\\\": {\\n                \\\"device_platform\\\": \\\"web\\\",\\n                \\\"aid\\\": 6383,\\n                \\\"live_id\\\": 1,\\n                \\\"partition\\\": partition,\\n                \\\"partition_type\\\": type,\\n                \\\"req_from\\\": 2,\\n                \\\"count\\\": 48,\\n                \\\"offset\\\": (page-1)*48,\\n                \\\"cookie_enabled\\\": true,\\n                \\\"screen_width\\\": 1920,\\n                \\\"screen_height\\\": 1080,\\n                \\\"browser_language\\\": \\\"zh-CN\\\",\\n                \\\"browser_platform\\\": \\\"Win32\\\",\\n            },\\n        }\\n\\n        let data_json = douyin.request(e)\\n\\n        if (! data_json) {\\n            douyin.d.push({\\n                title: 'cookie失效，请到设置里清除cookie并重新登录',\\n                col_type: \\\"long_text\\\",\\n            })\\n        } else {\\n            let list = JSON.parse(data_json).data.data\\n            if (list && list.length > 0) {\\n                list.forEach(item => {\\n                    const stream_url_map = item.room.stream_url.flv_pull_url\\n\\n                    douyin.d.push({\\n                        title: item.room.title,\\n                        pic_url: item.room.cover.url_list[0],\\n                        desc: item.room.owner.nickname,\\n                        url: JSON.stringify({urls: Object.values(stream_url_map), names: Object.keys(stream_url_map)}),\\n                        col_type: 'movie_2',\\n                    })\\n                })\\n            }\\n        }\\n    },\\n    userPostList: (uid, page, max_cursor) => {\\n        let e = {\\n            \\\"url\\\": douyin.variable.host + \\\"/aweme/v1/web/aweme/post/\\\",\\n            \\\"method\\\": \\\"get\\\",\\n            \\\"headers\\\": {\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Content-Type\\\": \\\"application/json\\\",\\n                \\\"withCredentials\\\": true\\n            },\\n            \\\"params\\\": {\\n                \\\"device_platform\\\": \\\"webapp\\\",\\n                \\\"aid\\\": 6383,\\n                \\\"channel\\\": \\\"channel_pc_web\\\",\\n                \\\"sec_user_id\\\": uid,\\n                \\\"show_live_replay_strategy\\\": 1,\\n                \\\"locate_query\\\": false,\\n                \\\"publish_video_strategy_type\\\": 2,\\n                \\\"max_cursor\\\": max_cursor,\\n                \\\"count\\\": 24,\\n                // \\\"offset\\\": (page-1)*24,\\n                \\\"version_code\\\": \\\"160100\\\",\\n                \\\"version_name\\\": \\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\": true,\\n                \\\"screen_width\\\": 1280,\\n                \\\"screen_height\\\": 720,\\n                \\\"browser_language\\\": \\\"zh-CN\\\",\\n                \\\"browser_platform\\\": \\\"Win32\\\",\\n                \\\"browser_name\\\": \\\"Mozilla\\\",\\n                \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\": true,\\n                \\\"round_trip_time\\\": 50\\n            },\\n        }\\n\\n        let data_json = douyin.request(e)\\n\\n        if (! data_json) {\\n            douyin.d.push({\\n                title: 'cookie失效，请到设置里清除cookie并重新登录',\\n                col_type: \\\"long_text\\\",\\n            })\\n        } else {\\n            let data = JSON.parse(data_json)\\n            let list = data.aweme_list\\n            if (list && list.length > 0) {\\n                putMyVar(\\\"tg.dy_web.page.max_cursor\\\", data.max_cursor.toString())\\n                list.forEach(item => {\\n                    d.push({\\n                        title: item.desc,\\n                        pic_url: item.video.cover.url_list[0],\\n                        desc: item.author.nickname,\\n                        url: item.video.play_addr.url_list[0] + \\\"#isVideo=true#\\\",\\n                        col_type: 'movie_2',\\n                    })\\n                })\\n            }\\n        }\\n    },\\n    followingList: (user_id, sec_user_id, page) => {\\n        let e = {\\n            \\\"url\\\": douyin.variable.host + \\\"/aweme/v1/web/user/following/list/\\\",\\n            \\\"method\\\": \\\"get\\\",\\n            \\\"headers\\\": {\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Content-Type\\\": \\\"application/json\\\",\\n                \\\"withCredentials\\\": true\\n            },\\n            \\\"params\\\": {\\n                \\\"device_platform\\\": \\\"webapp\\\",\\n                \\\"aid\\\": 6383,\\n                \\\"channel\\\": \\\"channel_pc_web\\\",\\n                \\\"user_id\\\": user_id,\\n                \\\"sec_user_id\\\": sec_user_id,\\n                \\\"count\\\": 1000,\\n                \\\"offset\\\": (page-1)*1000,\\n                \\\"min_time\\\": 0,\\n                \\\"max_time\\\": 0,\\n                \\\"source_type\\\": 4,\\n                \\\"is_top\\\": 1,\\n                \\\"version_code\\\": \\\"160100\\\",\\n                \\\"version_name\\\": \\\"16.1.0\\\",\\n                \\\"cookie_enabled\\\": true,\\n                \\\"screen_width\\\": 1280,\\n                \\\"screen_height\\\": 720,\\n                \\\"browser_language\\\": \\\"zh-CN\\\",\\n                \\\"browser_platform\\\": \\\"Win32\\\",\\n                \\\"browser_name\\\": \\\"Mozilla\\\",\\n                \\\"browser_version\\\": \\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.164 Safari/537.36\\\",\\n                \\\"browser_online\\\": true,\\n                \\\"round_trip_time\\\": 50\\n            },\\n        }\\n\\n        let data_json = douyin.request(e)\\n\\n        if (! data_json) {\\n            douyin.d.push({\\n                title: 'cookie失效，请到设置里清除cookie并重新登录',\\n                col_type: \\\"long_text\\\",\\n            })\\n        } else {\\n            let data = JSON.parse(data_json)\\n            log(data)\\n            // let list = data.aweme_list\\n            // if (list && list.length > 0) {\\n            //     putMyVar(\\\"tg.dy_web.page.max_cursor\\\", data.max_cursor.toString())\\n            //     list.forEach(item => {\\n            //         d.push({\\n            //             title: item.desc,\\n            //             pic_url: item.video.cover.url_list[0],\\n            //             desc: item.author.nickname,\\n            //             url: item.video.play_addr.url_list[0] + \\\"#isVideo=true#\\\",\\n            //             col_type: 'movie_2',\\n            //         })\\n            //     })\\n            // }\\n        }\\n    },\\n}\\n\\n$.exports = douyin\\n\"}]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/douyin.jpg"},{"last_chapter_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nzuixin()","title":"创意","author":"帅√`人才","version":2,"type":"video","url":"hiker://empty##https://www.30dian.cn/api.php/v1.vod##video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","area_url":"&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nyiji()","searchFind":"js:require(config.依赖);\nvar 是否APP = 1;\nsousuo()","search_url":"hiker://empty##https://www.30dian.cn/api.php/v1.vod##search?text=**&pg=fypage&page=fypage&limit=10","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\nvar 是否APP = 1;\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://gitcode.net/src48597962/hk/-/raw/master/srcDyTmpl.js\"\n});\n//上面的代码不要随意修改，by.帅√`人才 影视模板","pages":"[]","proxy":"","icon":"https://www.kan365.xyz/template/conch/asset/img/favicon.png"},{"last_chapter_rule":"","title":"诺讯","author":"","version":0,"type":"video","url":"https://www.nunxun.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.nunxun.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"西瓜","author":"ᝰꫛꫀꪝ藍凋&&sm`回忆","version":4,"type":"video","url":"https://www.osqqq.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.osqqq.com/vodsearch/**----------fypage---.html","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.js:var js = request(input);var url = base64Decode(parseDomForHtml(js, '.fed-play-iframe&&data-play').slice(3));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){var rr=request('https://jiexi.moeamv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];cacheM3u8(rr)}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&ul&&li:not(:contains(永久导航：www.osqq.net(网址发布页))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,0&&Text');\n\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.fed-deta-images&&.fed-list-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-esan&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"UM","author":"泪渲染了寂寞","version":0,"type":"video","url":"https://www.umkan.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&记录","class_url":"1&2&4&3&29","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.umkan.com/index.php/vod/search.html?wd=**","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"imaxw.DT🐺","author":"家娃","version":20230201,"type":"video","url":"hiker://empty##https://imaxw.com/vodshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|追剧周表|今日更新|专题|排行|APP|留言|热榜|深夜|影剧片库|广告|影剧下载|热搜榜|网址导航))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n true_url = true_url.replace(/vodtype\\/(.*?)\\.html/,'vodshow/$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note||.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-original||data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-info-actor&&Text').replace(/\\//g,' '),\r\n       content: parseDomForHtml(list[j], '.video-info-items:contains(剧情：)&&Text').replace(/剧情：/g,' '),\n       img: parseDom(list[j], '.lazyload&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://imaxw.com/vodsearch/**----------fypage---.html","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items:matches(导演)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items:contains(主演)&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items:matches(更新)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items:matches(集数)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-items:matches(剧情)&&Text').replace(/剧情：/g, '').replace(/收起/g, '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": parseDom(html, '.lazyload&&data-src'),\n    \"content\": parseDomForHtml(html, '.video-info-item:matches(剧情)&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-src'),\n                        \"content\": parseDomForHtml(html, '.video-info-items:matches(剧情)&&Text').replace(/剧情：/g, '').replace(/收起/g, ''),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-src'),\n                        \"content\": parseDomForHtml(html, '.video-info-items:matches(剧情)&&Text').replace(/剧情：/g, '').replace(/收起/g, ''),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"},{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"//家娃\\nevalPrivateJS('vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2EkcKx0HP7HHSHRO4UTAj4GPrVTjgkZM10quoVar+JiuKAQy6323JKtzBuIFFU+v3dwJvVYi17KWCnRmVA01kbenxOfPlGkNlwu8K3fG/9XJPB/xCvGG/tWZt1oF0CHyIyKUovX1lQWkCRly5D84l5fhXqUgD03gwKVCJUtWMtxJgmbm2YGcD1aEdbXjRJHt0dCJeFlTNJ3OjWxBC3NxGQEse8f6eEWWFRwASizyucGSh1qXEgNXp6zgos2zD+j49r5qiK8Kf6Utolz3gd56rT5Q6xpofQwJRRpflTsTpzQndyz7tuCri2n2+I1klEAIFvarc1a2BBUQyTehhd9cHFjz/xUc8rbCpwPQptbCw+XD8aw8LUoJyUGfpiNZb8Ye9GEDTWSw1Y+IuOQBvxS0omrfWcRv6Nrj4iTmTkKIkxN0Z8Tnz5RpDZcLvCt3xv/VyTwf8Qrxhv7VmbdaBdAh8iMhkYtVmNvOwN/41TBmWRp4Pa2RlgY+ErKmnxwT/mcyr3YGJUOL4xuwiM97+kkMrYi0tOQry74fRZCkxOPdnG5t8MkAMTXDyREur8hkNcqzdnLGhS5g/4u+pbfyFsL9StRw4xIYcCpQcY48OyDMrSCNxEaONnIVwlD9Dpolu/QukQ4zt/BN43d/OhkvE8j/TiCFz6rjauZf8IeWR7ddDe9JN+gH58TzGnhodNIJch1wCkk8ewrVTG4azBIVskD2oNR7hN5qwGOWWYEm0y8iCSFxizR+SnD1V6scbKDot23DMDeThwcQUrHLvYzbwiSpEw7LD+PYywzjx0YJ9FxRTMUZb3NwSH+WnraRvJoK3CMqkRkKwtsGA2AU7gir4huxsxm1uIeqj+55aXeRVxcIVj8Vbxo3YByeJGWlfA5//4oQftOas576C6DIManu13n1/Mq3nvb1yhH1gNmstwG+3vlYCtJWvXraCsRDU+EchSHfqEcglvdWAUQoelI9VMP7OR3mGzFu8F5haAZALN2R9TD0Y9jFyQw0OFnUGqnL3goI5cpslbu+pIC3kB7aWml1KnUzVRf+NWo+z/+0AUNilZYiE073a2kBVeXjySW+6+WR/ba7vNHJENV/kEsA3jtvaOhRXmpUURxVwI7fV5oTTfcSs2h0wGkWL4dCbTKMvfl3anyBcZzXEtD4SjUj7VVbq410kEUZnUHzbZbnU7YBFT4AMqdbH5MgrnFlT2vByzcvay0wixjTZHtlIwLlVuk2MCQlliJbgjta5vqkgbyxTnC8z51LNylwS8gO/TYTfT8m8a/GGiln1wIh9GCVxSJm5UZ9WiuNBgElcE6YUVHbtM7fxD4vh/ENS4qHvOechfkaFUcen+lUVhes05g+wsmxrPejLjw2N2jRYfCoKAh0Mp3jQ4ep7KWzXDMnv9OgBgqfYx8SKd/f9WdoQ2QaCJYmv45HeBM2xDR44ZGadfqc94ytTDg96JVTEmuAbPEAuMmn2x+ABncEt2g2XQMFgiKuSLvZvIcuaDB+7+sA8uLwNcp44w2E3ml2NuFftgQyI3Qc19JR0POlpInfc3B4euKDcNPg2Fu3X34vt+z8Zm5G4VZGaTqUP7nD4JZFGoWNmDPkuhHR+p/Hx1M/hARhn6XRPlgpUmSc7Vk32Q6/eZSb11BsA8kIytovAJWkQPu3KHLmW0q8pt4Z5KQ4+iedhDnPiCPwexBmyuxcqiT0Z8SyCSO4WrqmjhW3NXSWOwFo+RUXtOaDBRi585Oex1BsMf03/SHxfajh/oKT4eTb7tWabvDkdQiITYy8kSQkOUTnBN5e33nZMGUKaDrvLsTrFUp3fsb05oJQ/APt7E2aNlv0zzW6/EtPiudbczD488gyJqXEktFbDiZcct1oWbjFU8sIKDMVcaN0D4lgixz1NW6MSF359GNdgzURX8UhETpkMY2bokEIcn3W4Ldw6dVZk8UQG2cNwCpDJgY61Vu4VVitQRqUuUHWNqBRg7+4t73VwqNBa6xe6zs47eeI8aOtaF39EUQfJb8PL6PMcDULWv0aju0CWjWj+2gGkKJePcCsIg5c86aS3ZBvBkHCQbixWZsgqmliRnp5y543fkNrumsls1iuEXUnVO//mAz0oW94TX3ulm8FxJu/vl8yDonvYDqE6dTeAZAi4V4dQYc16ZZ/vBr45nu8fZHLItc2sNe4dXSRfy8jRqUPpefv7/N4/so+JdkMJIQm5+qU/EmKojR7zURNURFRWAKuNoC0isBgOV0SkmGbnMzoTUBsQX+VR3ZlEAAZL3Qy/e0YheYC5SvCNi30RGE03kH6TyygpYKxu4twqyQ08zUXtkNWkz2y8qR9vfj3ieImSd4TuAUIrmYFBX14hjdH0g3HcKGa0efwgH0N7sEnNG+GB35+Xb08yz+5MlSolV5zsK9oANK0NnVLDGThkWITv6gJedqPNDm6bStUvMBF6JagvSe+lc/mZF7aY25a/Sj1mCEIeNvMZnbnnWxpjvoahDAynO/P9MU4iW/momytzMZMEDPwFMT9mqJVmf5YHPDrYoM9eY523QYZc0jHRa4hmd+Paj4FTytv36SH1bLK8tI1lZz+wif+9ZIAdT2kCyhAvdVXl/0vRkU2R2E7IaJKoT00uEs9SZv7jXppYTkQuF8ymm/4VHEUVgZKaeoo43P1oIV12fVPkXYcMfvbAYZM8W2PVujRrKeZbaEZAWCROQt57mFrOjyPH49qp97qrz/cVFj1eYijwtjnoMrL0gbHuZCSTXKcoqMYqLovb7lg6F6mc9bww+3DxDCR4v/Ftn8lvJTyv5HTL2EExSwXDdOGvTamy4aXlrUTD4ajfgKiletex8xPF0XOF3k/pTSgq36r2jR7+Yks4dn00AGK2YhMY+OfmqgB6gh8V2IBpg34Am2Qut6anqF1+VSFkNSNCiTUr8vDO/rFfdSmaAGMdF+qce97LGEPlrsm9zi8NmaW0n28Y+CKpvmdmX0q7t33EIMq9ZTaFuW0XYDK6Mq9zT0M9D4IHk8RTWIPeztM8JFTqjqvh382C1iPtYP8Gtav4qwTvct19xWV0f5AARu5N4+5EakvBw+doEYtJa2HVFQvAwkwoIrBbsEeHTDUeo8WYIcIdzg7V7+/lvW/20HxVem+klN6LQN3qID5zKyTsfoE3kHQOUhnC26YvNbG2gM9LHxPPD9n2nrDc3hxQUR8nVipUfDxGpbUU6wiMW2xrN0N58IvJXXDOWEQn1tzXA0YCzgHyaMIcux+eLjwDAHxT5ftWOqGRL8f49hO6k2OxCpEVsTHEJ2s+Qqm4bPRmK7OMTrs4wMnV8dUkiTA+1agDpLokjLHDVlj+Mql4j5+yHc/RvvyOkSn7vBV9NYVpomGdHostwbEX6N4SKmLfPiySErC7u8m57IqYomp0yHVLI1KHxeC4EzJ31XGBbHLBGeYCzgHyaMIcux+eLjwDAHxWcd2GVGic3VAKrLkKVvqhEcu/b2Ub3FhuHC2iC6Pj2m2+fwhOph5AEJWn/J0ybHays56LbmsPcBrvO77J7ylpOsICDR8JsK3xxHmcUnangtBR464qq/QC9gTfWMe1Hs1XU8GyQujsRysxUonIXWGlLlGijuw3BaP1K3voho7A5govq81TFYmqj/0rKJgyEwQWHTy+49Tc+4cFAtJ678cTYMtGxuS4dYytQpUY83JiFfyyvLSNZWc/sIn/vWSAHU9iEUTWMQ453zRyrhCIdoWJUg1UA0ZsYwPVhCWlyj+vcD3PFaow5BSUCe23bmVNGm3MxakGmvbT55pQ1aFL32P/e2KwXyJ/Qinh7dRin53XO+iUb1kEH9/xYLKDJSb/TWJ8lieH5sRIuSlkwsjQG5RDVbvVx0WWYzd0XO6RrHLVMAiAGxfA8VBoFPgoZW3yTGf/mqIrwp/pS2iXPeB3nqtPlxLVs78f8dV5+2UuJjQpn3Oxi9DSgwQ6NthVeyNw0QSdE+BhdCxsLZK67mSeOwp11qiryogCqcGKE+OTrhal0cyblotlbMrzkyo1CYYz644xDs2xCK2ViTDRsjAuIFjxI5B06Zibr/DnQownPI6GFvyg6yeU3DkQcgGig11kIARX1Wp+Lgzobo9mZcIaVtVf/Qw5jCmbm93/38vvog7ofJxnSoN0pb4+sqdGGOWNML9I5ERC52Pf+5ro9sbbZo0w1uPFKBYK4nzoXO0mwM2x8v45xMa4TZi+jgjvP1Iw9mSzvEi4V16Lp29hgFySVMK3r8Mq9tYuBE5TyhEMBVWCuuJdMA0gJNqwXwQzNWgnydA1mlFnmUQ4HckQ5WkA6l/GRIzr78YqqUROBPwLzDxXQ6EOzbEIrZWJMNGyMC4gWPEvA0slFVfTUFc+qCAMewyFHzVpJ3xvlO6ocaDYojA8IUwCfIXN5hVGTpS0cUY2UJKAzQL5J7TQNtILeu2Bsgjb/Y1/bz0t86vmHw/+K+XKTyXpxj0qjgfVZI0ygd/0rupIQNNZLDVj4i45AG/FLSiasGdEy+qovBwJ2SKoi5NULwfZ0JVK4KEuX8eCzbAZ/B+LG2CT3ZATd5QDu57eRbjafoCi+4HYw8K22BkjX8PzAfyFLb4RcFVAKTjN14KK2z/OsmnqfgqqtrhDaKYNA88U+eiCRAO7/fuavXsvsNn77WWMBkDc6zKv1zPgDgPvwz1Qh/xGTmEcm50BVKzfEowzWiGUc3gaG0Rqui0jn/AVvf2SQY9mnelUepmHafokZDB1twTqvOa3SR8KKfhnG1vgjr3HLbWcL1HRmbjFuQR3GUExSFry9ARHkhZYADBN5a644yYM8iZk/Px5v5/bJJ1OzrB5SBmZjyOeJCfDvWOloHwCfIXN5hVGTpS0cUY2UJKAzQL5J7TQNtILeu2Bsgjb943onu9YYKoZ9din32YswKNzHmAXStoLfowHD98zkgkf5rW/Zxi+zWJ7RhbWv84eU79nJ3uuDE6SYxq0vFCE4QCqwAuyhztOwA1xg9YHvdS6hmp4ZcstGUiwHNh2CkdSLhDUb3guUjX65WikFV31IFKsvPU4YCxZcPAd1J9eFBqAMRGWcaU+QxMKOIJZx+KujGvOVphkTJRPINGEsJvnyWizD5xy9vxo0Lk0ClYfkShIPScHzXZNMjr5EvM86dOxIRb09fk57Cxa0B5tWpZeEM')\"}]","proxy":"","icon":"https://vip-9-cdn-cn.4kya.com/cdn-9/k/upload/vod/20221205-1/0bc9354e45d7e031bc6df3c126ea9c55.png"},{"last_chapter_rule":"","title":"影视","author":"Quan","version":2,"type":"video","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/26587c1c6de0807875331d463b06d854.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%200h1024v1024H0V0z%22%20fill%3D%22%23202425%22%20opacity%3D%22.01%22%20%2F%3E%3Cpath%20d%3D%22M512%20887.466667a34.133333%2034.133333%200%200%201%2034.133333-34.133334h375.466667a34.133333%2034.133333%200%200%201%2034.133333%2034.133334v34.133333a34.133333%2034.133333%200%200%201-34.133333%2034.133333H546.133333a34.133333%2034.133333%200%200%201-34.133333-34.133333v-34.133333z%22%20fill%3D%22%23FFAA44%22%20%2F%3E%3Cpath%20d%3D%22M955.733333%20512c0%20245.077333-198.656%20443.733333-443.733333%20443.733333S68.266667%20757.077333%2068.266667%20512%20266.922667%2068.266667%20512%2068.266667s443.733333%20198.656%20443.733333%20443.733333z%22%20fill%3D%22%2311AA66%22%20%2F%3E%3Cpath%20d%3D%22M512%20375.466667a102.4%20102.4%200%201%200%200-204.8%20102.4%20102.4%200%200%200%200%20204.8z%20m136.533333%20136.533333a102.4%20102.4%200%201%200%20204.8%200%20102.4%20102.4%200%200%200-204.8%200z%20m-238.933333%20238.933333a102.4%20102.4%200%201%201%20204.8%200%20102.4%20102.4%200%200%201-204.8%200z%20m-34.133333-238.933333a102.4%20102.4%200%201%200-204.8%200%20102.4%20102.4%200%200%200%20204.8%200z%22%20fill%3D%22%23FFFFFF%22%20%2F%3E%3C%2Fsvg%3E"},{"firstHeader":"class","last_chapter_rule":"","title":"卫华","author":"卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##https://www.panghuys.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卫华影视🐮🐮🐮"},{"last_chapter_rule":"","title":"爱奇艺","author":"","version":0,"type":"video","url":"https://pcw-api.iqiyi.com/search/video/videolists?channel_id=fyclass&is_purchase=fyyear&mode=fyarea&pageNum=fypage&pageSize=48&data_type=1&site=iqiyi","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&纪录片","class_url":"2&1&6&4&3","area_name":"综合排序&热播榜&好评榜&新上线","area_url":"24&11&8&4","sort_name":"","year_name":"全部资费&免费&付费","sort_url":"","year_url":"&0&2","find_rule":"js: \nvar s = getResCode(); \nvar json={}; \neval('json=' + s);\n\nvar res = {};\nvar d = [];\nfor(var i=0;i<json.data.list.length;i++) {\n var j = json.data.list[i];\n var r = {};\n r.pic_url = j.imageUrl;\n r.title = j.name;\n if(j.channelId==2||j.channelId==4) {\n if(j.latestOrder==j.videoCount) {\n r.desc = (j.hasOwnProperty(\"score\")?j.score:0)+\"分\\t\"+j.latestOrder+\"集全\";\n } else {\n r.desc = (j.hasOwnProperty(\"score\")?j.score:0)+\"分\\t\"+j.latestOrder+\"/\"+j.videoCount+\"集\";\n }\n } else if(j.channelId==1) {\n r.desc = (j.hasOwnProperty(\"score\")?j.score:0)+\"分\";\n } else if(j.channelId==6) {\n r.desc = j.formatPeriod+\"期\";\n } else {\n if(j.latestOrder==j.videoCount) {\n r.desc = (j.hasOwnProperty(\"score\")?j.score:0)+\"分\\n\"+j.latestOrder+\"集全\";\n } else {\n r.desc = j.formatPeriod+\"期\";\n }\n }\n r.url = j.playUrl;\n d.push(r)\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"https://m.iqiyi.com/search.html?key=**","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/29.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"小收","author":"","version":0,"type":"video","url":"https://syjytv.net/show/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&动画电影&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧&大陆综艺&港台综艺&日韩综艺&欧美综艺&国产动漫&日本动漫&欧美动漫","class_url":"2&1&3&4&27&6&7&8&9&10&11&12&13&14&15&16&23&24&25&26&20&21&22","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://syjytv.net/search.html?wd=**","titleColor":"#ff871f78","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n// 模块的间距\nlet line_model = 13;\n// 模块间距类型\nlet line_type_model = 'blank_block';\n\n\n//默认播放地址(需修改)\nvar lazy =  `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`;\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'body&&h1&&Text');//视频标题标签得改\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.myui-content__detail&&p,2&&Text');//得改;取data里面第x个p,或者写成.data&&Text是取整个date\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');//视频封面定位得改\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.nav&&a');//线路名列表得改\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');//播放列表的列表定位得改\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//折叠需要用到的\n   \nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })        \n  }\nd.push({\n            col_type: 'line_blank'\n        })\nfunction setTabs(tabs, vari) {\n        d.push({\n title: \"““””<b>\"+'<span style=\"color: #CC0066\">'+'▶',\n        col_type: 'scroll_button'        \n    })\n    var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n           \n var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换线路成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+\"““””<b>\"+'<span style=\"color: #CC0055\">'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\n function setLists(lists, index) {\n      d.push({\n            col_type: 'line_blank'\n        })\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\nfor (let i = 0; i < line_model; i++) {\nd.push({\n            col_type: line_type_model\n        })       \n  }\nif(lists.length != '')  {\n        var list = lists[index];\n {\n            for (var j = 0; j < list.length; j++) {\nvar title= parseDomForHtml(list[j], 'a&&Text');\nif(title==''){var title='暂无，等待上传'} else{var title=title}\n\n                d.push({\n               title:\"““””\"+'<span style=\"color: #000000\">'+ parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n               \n     url:parseDom(list[j],'a&&href')+lazy,\n                  \n                col_type: list.length >3?'text_5':'text_2'\n                });\n            }\n        }\n        \n        }else{d.push({title:'当前线路暂无集数,请检查选集是否正确',url:'toast://当前线路暂无集数,请检查选集是否正确',col_type: 'text_1'});}    \n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"腾讯","author":"","version":0,"type":"video","url":"https://v.qq.com/x/bu/pagesheet/list?_all=1&append=1&channel=fyclass&listpage=1&offset=fypage@-1@*21@&pagesize=21&sort=fyarea&fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&少儿&纪录片&综艺","class_url":"tv&movie&cartoon&child&doco&variety","area_name":"最热&最新&好评&口碑好评&知乎高分&综艺最新","area_url":"18&19&16&21&22&4","sort_name":"","year_name":"全部&电视剧：免费&会员&|&电影：免费&包月&用券&付费","sort_url":"","year_url":"&pay=867&pay=868&&charge=1&charge=2&charge=3&charge=4","find_rule":"body&&.list_item;img&&alt;img&&src;a&&Text;a&&href","searchFind":"","search_url":"https://m.v.qq.com/search.html?keyWord=**","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/31.svg"},{"last_chapter_rule":"","title":"片吧","author":"zetalpha","version":7,"type":"video","url":"http://www.pianbb.com/class/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"l","find_rule":"js:\nvar d = []\n//随机颜色\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n//动态分类定义\n//需根据实际修改\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.dropdown.type.clearfix'\nconst 拼接分类 = 'body&&#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(留言))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\n\nvar type = ''\nvar tl = ['top', 'month', 'week', 'day']\ntry {\n    type = true_url.match(/sort\\/(\\w+).*?\\.html$/m)[1]\n} catch {}\n\n//log(type)\n\nif (tl.includes(type)) {} else {\n    true_url = true_url.replace('sort', 'class')\n    //log(1 + true_url)\n    if (true_url.indexOf('-.html') == -1) {\n        //log(2 + true_url)\n        if (new RegExp(/(\\d{4}).html/).test(true_url)) {\n            //log(3 + true_url)\n            true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, page + '---$2.html')\n            //log(4 + true_url)\n        } else {\n            //log(5 + true_url)\n            true_url = true_url.replace('.html', '--------' + page + '---.html')\n        }\n    } else {\n        true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, (a, b, c) => {\n            var y = c != undefined ? c : '';\n            return page + '---' + y + '.html'\n        })\n        //log(6 + true_url)\n        //true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, page + '---$2.html')\n    }\n}\n//log(true_url)\n\n\n\n//获取源码\nvar html = request(true_url)\n\n\n//动态分类\neval(JSON.parse(request('hiker://page/dt')).rule)\n\n\n//页面内容填充\nconst list = pdfa(html, 'body&&.stui-vodlist__box')\nlist.forEach(video => {\n\n    //log(video)\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\n//log(d)\nsetResult(d);","searchFind":"body&&.stui-vodlist__box;\nh4&&a&&Text;\na&&href;\n.pic-text.text-right&&Text;\n;\na&&data-original;","search_url":"http://www.pianbb.com/so/**----------fypage---.html","titleColor":"#009cff","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, 'body&&.stui-vodlist__head>span');\n\n\n//log(arts)\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&ul.stui-content__playlist.clearfix');\n\nvar down = pdfa(html, 'body&&ul.stui-content__down.clearfix');\n\n\n//log(conts)\n\n//log(down)\nvar conts1 =conts.concat(down)\n\n//log(conts1)\n\nvar lists = [];\nfor (var i in conts1) {\n    lists.push(pdfa(conts1[i], 'body&&a:not(.copy_btn)'))\n}\n\nfunction getData(datan) {\n    let arr = [];\n    let datat = '';\n    arr = xpathArray(html, \"//span[contains(text(),'\" + datan + \"')]/following-sibling::*//text()\");\n    if (arr.length == 0) {\n        arr = xpathArray(html, \"//span[contains(text(),'\" + datan + \"')]/parent::*/text()\");\n    }\n    arr = arr.filter(x => x != 0)\n\n    //log(arr)\n    switch (datan) {\n        case '主演':\n            if (arr.length != 0) {\n                datat = datan + '：' + arr.slice(0, 5).join('、');\n            }\n            break;\n\n        case '剧情':\n            datat = datan + '：' + arr.slice(1, 2).join('、');\n            break;\n        default:\n\n            datat = datan + '：' + arr.join('、');\n            break;\n    }\n    datat = datat.replace(/&middot;/g, '·')\n    return datat;\n}\n\n\n\n\n/*\nlog(getData('状态'))\nlog(getData('年份'))\nlog(getData('类型'))\nlog(getData('地区'))\nlog(getData('导演'))\nlog(getData('主演'))\nlog(getData('更新'))\nlog(getData('剧情'))\n*/\n\n\nd.push({\n    title: getData('状态') +\n        '\\n' + getData('导演') +\n        '\\n' + getData('主演') +\n        '\\n' + getData('更新'),\n    desc: getData('剧情'),\n    img: pd(html, 'body&&.stui-content&&img&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//log(d)\n//快捷搜索 不需要注释掉就行\n//eval(JSON.parse(fetch('hiker://page/qsearch', {})).rule);\n\n//独立快捷版搜索\neval(JSON.parse(fetch('hiker://page/qsearchd', {})).rule);\n\n\n//eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n\neval(JSON.parse(fetch('hiker://page/Parse', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"嗅探\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    if (input.indexOf('magnet:?xt') == -1) {\\n        return \\\"video://\\\" + input\\n    } else {\\n        return input\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"快捷搜索\",\"path\":\"qsearch\",\"rule\":\"//搜索，以下基本不需要修改。\\ntry {\\n    var title = parseDomForHtml(html, 'h1&&Text');\\n    var Color = \\\"#f13b66a\\\";\\n    var Color1 = \\\"#098AC1\\\";\\n\\n\\n\\n    function getHead(title) {\\n        return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n    }\\n} catch {}\\n\\nlet qdbcfile = \\\"hiker://files/rules/joker/qdb_config.js\\\"\\n\\n\\nif (fileExist(qdbcfile)) {\\n    var json = JSON.parse(request(qdbcfile));\\n    var list = json.quickSearchConfigs.order;\\n    for (l in list) {\\n        var obj = json.quickSearchConfigs[list[l]];\\n        //log(obj)\\n\\n        d.push({\\n            title: list[l],\\n            url: 'hiker://search?s=' + title + '&rule=' + obj.name,\\n            pic_url: obj.pic,\\n            col_type: json.quickSearchConfigs.mode\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: '不存在青豆小程序点我导入',\\n        col_type: 'text_1',\\n        url: $('#noLoading#').lazyRule((name, home) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === name);\\n            if (hasRule) {\\n                back();\\n                //toast(\\\"请配置快速搜索\\\")\\n                return home + \\\"s@\\\" + name;\\n            } else {\\n                //toast(\\\"请安装青豆小程序\\\")\\n                return 'rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ6Z2S6LGG44CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTE1OTE='\\n            }\\n        }, \\\"青豆\\\", \\\"hiker://home\\\")\\n\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title:'配置',\\n    col_type: 'flex_button',\\n    url: \\n    $().lazyRule(()=>{ \\n        toast(\\\"点击设置配置快速搜索\\\");\\n        return 'hiker://home@青豆'\\n    })\\n   \\n})\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\nif (typeof(拼接分类) != 'undefined' && 拼接分类 != '') {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} else {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””' + '∨'.fontcolor(\\\"#FF0000\\\") + '' : '““””' + '∧'.fontcolor(\\\"#1aad19\\\") + '',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"通免\",\"path\":\"Parse\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    if (input.indexOf('magnet:?xt') == -1) {\\n        try {\\n            var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n            var url = html.url\\n            if (html.encrypt == '1') {\\n                url = unescape(url);\\n            } else if (html.encrypt == '2') {\\n                url = unescape(base64Decode(url));\\n            }\\n            if (/m3u8|mp4/.test(url)) {\\n                return url\\n            } else {\\n                requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\\n                return lazyParse(input);\\n            }\\n        } catch (e) {\\n            log('报错改web嗅探');\\n            //requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\\n            //return lazyParse(input);\\n            return \\\"video://\\\" + input\\n        }\\n    } else {\\n        return input\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"快捷搜索_独立\",\"path\":\"qsearchd\",\"rule\":\"//搜索，以下基本不需要修改。\\ntry {\\n    var title = parseDomForHtml(html, 'h1&&Text');\\n    var Color = \\\"#f13b66a\\\";\\n    var Color1 = \\\"#098AC1\\\";\\n\\n\\n\\n    function getHead(title) {\\n        return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n    }\\n} catch {}\\n\\nvar rules = {\\n    \\\"quickSearchConfigs\\\": {\\n        \\\"mode\\\": \\\"icon_round_small_4\\\",\\n        \\\"order\\\": [\\\"海阔搜索\\\", \\\"风影\\\", \\\"香情\\\", \\\"聚影\\\"],\\n        \\\"海阔搜索\\\": {\\n            \\\"name\\\": \\\"\\\",\\n            \\\"pic\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\"\\n        },\\n        \\\"风影\\\": {\\n            \\\"name\\\": \\\"风影 Ⓕ\\\",\\n            \\\"pic\\\": \\\"https://pic1.imgdb.cn/item/6346beda16f2c2beb1f1bbde.jpg\\\",\\n            \\\"rule\\\": \\\"copy://https://pasteme.tyrantg.com/xxxxxx/tajhqzgaaeoqxjio\\\"\\n        },\\n        \\\"香情\\\": {\\n            \\\"name\\\": \\\"香情影视\\\",\\n            \\\"pic\\\": \\\"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png\\\"\\n        },\\n        \\\"聚影\\\": {\\n            \\\"name\\\": \\\"聚影√\\\",\\n            \\\"pic\\\": \\\"https://img.vinua.cn/images/QqyC.png\\\",\\n            \\\"rule\\\": \\\"rule://Iua1t+mYlOinhueVjOmmlumhtemikemBk+inhOWImeOAkOiBmuW9seKImuOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD01MTAy\\\"\\n        }\\n    }\\n}\\n\\nvar json = rules;\\nvar list = json.quickSearchConfigs.order;\\n\\nfor (l in list) {\\n    var obj = json.quickSearchConfigs[list[l]];\\n    log(obj.name)\\n\\n\\n    d.push({\\n        title: list[l],\\n        url: $('#noLoading#').lazyRule((obj, home, title) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === obj.name);\\n            if (hasRule || obj.name == '') {\\n                //toast(\\\"请配置快速搜索\\\")\\n                return 'hiker://search?s=' + title + '&rule=' + obj.name;\\n            } else {\\n\\n                if (obj.hasOwnProperty(\\\"rule\\\")) {\\n                    return obj.rule\\n                } else {\\n                    return \\\"toast://请安装\\\" + obj.name + \\\"小程序\\\";\\n                }\\n            }\\n        }, obj, \\\"hiker://home\\\", title),\\n        pic_url: obj.pic,\\n        col_type: json.quickSearchConfigs.mode\\n    })\\n}\\n\\n\\n/*    $().lazyRule((obj, home, title) => {\\n        let ruleList = JSON.parse(request(home));\\n        let hasRule = ruleList.some(item => item.title === obj.name);\\n        if (hasRule) {\\n\\n            //toast(\\\"请配置快速搜索\\\")\\n            return 'hiker://search?s=' + title + '&rule=' + obj.name,\\n        } else {\\n            //toast(\\\"请安装青豆小程序\\\")\\n            if (obj.hasOwnProperty(\\\"rule\\\")) {\\n                return \\\"toast://请安装\\\" + obj.name + \\\"小程序\\\";\\n            } else {\\n\\n                return '2'\\n            }\\n        }\\n    }, obj, \\\"hiker://home\\\", title)*/\\n\\n\\n\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\n/*d.push({\\n    title: '配置',\\n    col_type: 'flex_button',\\n    url: $().lazyRule(() => {\\n        toast(\\\"点击设置配置快速搜索\\\");\\n        return 'hiker://home@青豆'\\n    })\\n\\n})*/\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/15/zAvjsJ.png"},{"last_chapter_rule":"","title":"奈飞狗","author":"2022//22","version":0,"type":"video","url":"hiker://empty##https://netflixdog.club/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nvar 排除 = '全部|片库'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src').replace(/http.*?url=/,'')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = []\nfor (var j of JSON.parse(getResCode()).list) {\n    d.push({\n        title: j.name,\n        img: j.pic + \"@Referer=\",\n        url: MY_HOME+'/voddetail/' + j.id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=.jsinput+new Date().getTime()","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":"https://netflixdog.club/upload/mxcms/20221217-1/63765dfc8584e38e754f72bbb7ca5ba3.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.numList')[0];\nvar list = pdfa(conts, 'body&&a');\nvar title = pdfh(list[list.length,0], 'a&&Text');\nsetResult(\"更新至: \" + title);","title":"农民","author":"缘分","version":2,"type":"video","url":"hiker://empty##https://v.emsdn.cn/index.php?m=vod-list-id-1-pg-fypage-order--by-time-class-0-year-0-letter--area--lang-.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequireCache(config.依赖, config.更新间隔);\n大类定位 = 'body&&.swiper-wrapper'\n拼接分类 = 'body&&.con'\n小类定位 = 'body&&a:not(:matches(小姐姐|明|音乐))'\n分类标题 = 'a&&Text'\n分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/vod-type-id-(\\d+)/, 'index.php?m=vod-list-id-$1').replace(/-pg-1/,'-pg-'+page)\n}\n//log(true_url)\nvar html = request(true_url)\nvar 列表 = '.resize_list&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.sBottom&&Text'\nvar 图片 = 'img&&data-echo'\nvar 链接 = 'a&&href'\n一级1.A()","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '#data_list&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.sTit&&Text'),\n            desc: parseDomForHtml(list[j], '.sStyle&&Text'),\n            content: parseDomForHtml(list[j],\n                '.sDes&&Text'),\n            pic_url: parseDom(list[j], '.lazyload&&data-src') + '@Referer=',\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://v.emsdn.cn/index.php?m=vod-search&wd=**","group":"①①📽️影视","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n   \n    var playBtn = pdfh(html, '.page-btn&&a&&href');\n    var playhtml = request('https://v.emsdn.cn/' + playBtn);\n    var arts = parseDomForArray(playhtml, '#leftTabBox&&.hd&&ul&&li');\n    var tabs = [];\n    for (var i in arts) {\n        tabs.push(parseDomForHtml(arts[i], 'Text'))\n    }\n    var conts = parseDom(playhtml, '.main&&script&&Html').match(/mac_url='([\\s\\S].*)';/)[1].split(\"$$$\");\nvar lists = [];\n    for (var i in conts) {\n        lists.push(parseDom(conts[i], 'Text').split(\"#\"))\n    }\n    var lazy = $('').lazyRule(() => {\n        var url = pdfh(request(input), 'body&&script&&Html').match(/url=(.*?)\"/)[1]\n        log(url)\n        if (url.search(/\\.mp4|\\.m3u8/) > -1) {\n            return url\n        } else {\n            input = input.replace('?url=', 'nm.php?url=')\n            var url = pdfh(request(input), 'body&&script,-2&&Html').match(/src=\"(.*?)\"/)[1]\n            log(input)\n            if (url.search(/mp4|\\.m3u8/) > -1) {\n                return url + '#isVideo=true#'\n            } else {\n                input = input.replace('nm.php', '')\n                requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n                return x5rule(input, input);\n            }\n        }\n    });\n try {  \n    var 主演 = parseDomForHtml(html, '.page-bd&&.desc_item,1&&Text');\n\n    var 类型 = parseDomForHtml(html, '');\n\n    var 更新 = parseDomForHtml(html, '');\n\n    var 导演 = parseDomForHtml(html, '.page-bd&&.desc_item&&Text');\n\n    var 图片 = parseDom(html, 'img&&src');\n\n    var 简介 = parseDomForHtml(html, '.detail-con&&p&&Text').replace('简 介：', '');\n\n    var 图片链接 = parseDom(html, 'img&&src');\n\n    var Color = \"#f13b66a\";\n    var Color1 = \"#098AC1\";\n    function getHead(title) {\n        return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n    }\n    let line_model = 8;\n    let line_type_model = 'blank_block';\n    d.push({\n        title: 主演 + '\\n' + 类型,\n        desc: 更新 + '\\n' + 导演,\n        pic_url: 图片,\n        url: 图片,\n        col_type: 'movie_1_vertical_pic_blur',\n        extra: {\n            gradient: true\n        }\n    });\n    d.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n        url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n        col_type: 'text_1'\n    });\n } catch (e) {}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n  \n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#0aa344\">正序↑</font></small>' + '<small><font color=\"#ff4c00\">反序↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#ff4c00\">正序↑</font></small>' + '<small><font color=\"#0aa344\">反序↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDom(list[j], 'Text').replace(MY_HOME + '/', '').split(\"$\")[0],\n                    url: 'https://api.emsdn.cn/webcloud/?url=' + parseDom(list[j], 'Text').split(\"$\")[1] + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDom(list[j], 'Text').replace(MY_HOME + '/', '').split(\"$\")[0],\n                    url: 'https://api.emsdn.cn/webcloud/?url=' + parseDom(list[j], 'Text').split(\"$\")[1] + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: 'https://pastebin.com/raw/D2iimVHk',\n    更新间隔: 48\n});","pages":"[]","proxy":"","icon":"https://v.emsdn.cn/favicon.ico"},{"last_chapter_rule":"","title":"野马","author":"道长","version":1,"type":"video","url":"hiker://empty##http://v.yemays.tk/api.php/app#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"①①📽️影视","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=野马影视"},{"last_chapter_rule":"","title":"臻品fix","author":"sm`回忆","version":0,"type":"video","url":"https://www.zpcxb.com/zptop/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&记录片","class_url":"dianying&dianshiju&zongyi&dongman&jilupian","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&香港剧&台湾剧&韩国剧&日本剧&泰国剧&美国剧&海外剧","sort_url":"","year_url":"guochanju&xianggangju&taiwanju&hanguoju&ribenju&taiju&meiju&haiwaiju","find_rule":"js:var res={};var d=[];var html=getResCode();var list=parseDomForArray(html,'.stui-vodlist&&li');for(var j in list){d.push({title:parseDomForHtml(list[j],'a&&title'),desc:parseDomForHtml(list[j],'span,1&&Text'),pic_url:parseDom(list[j],'a&&data-original'),url:parseDom(list[j],'a&&href')})}res.data=d;setHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h2&&title&&Text'),//'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j],'.detail&&a&&href'),\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.zpcxb.com/sosou/page/fypage.html?wd=**","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n//默认播放地址(需修改)\nvar lazy= `@lazyRule=.js:eval(parseDomForHtml(request(input),'.embed-responsive&&script&&Html').replace(/player_.*?={/,'player_aaaa={'));var url=unescape(base64Decode(player_aaaa.url));var fr=player_aaaa.from;if(fr=='alizy'){request('https://jx.anje.cn/?url='+url).match(/\"url\":\"(.*?)\"/)[1]}else if(fr=='mgtv'|fr=='qq'|fr=='qiyi'|fr=='sohu'|fr=='youku'){var ref ='https://jhjx.anje.cn/api/?url=';var html1 = request(ref + url,{headers:{'Referer':'https://www.zpcxb.com',\"User-Agent\":MOBILE_UA}});var parse1 = parseDomForHtml(html1, 'iframe&&src');var html2 = request('https://jhjx.anje.cn/api/'+parse1,{headers:{'Referer':ref + url,\"User-Agent\":MOBILE_UA}});url= parseDomForHtml(html2,'video&&source&&src')+\"#isVideo=true#\"}else if(fr=='leduo'){request('https://api.leduotv.com/wp-api/glid.php?vid='+url+'&isDp=1').match(/url='(.*?)'/)[1]+\"#isVideo=true#\"}else if(fr=='sohu'){base64Decode(request('https://api.yueliangjx.com/?url='+url).match(/url = '(.*?)'/)[1])+\"#isVideo=true#\"}else{url}` \ntry{\nvar des_title = parseDomForHtml(html, 'body&&.stui-content__detail&&h2&&Text');//'body&&.stui-vodlist__detail&&h3&&Text');//ok\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');//ok\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\ntry{\nvar des_desc = parseDomForHtml(html,'body&&.stui-content__detail&&p,4&&Text');\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head');//线路列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');//播放列表\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))   //线路名\n}\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))    //' 列表名改'ul&&li'\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下！\n//不需要就不要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n//折叠需要用到的\n\nfunction setTabs(tabs, vari) {\n     d.push({\n        title: '‘‘🔎线路’’',\n        col_type: 'text_center_1'\n    })\n    var title = '';\n   if(tabs.length != '')  {\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"hiker://empty@lazyRule=.js:putVar('\"+vari+\"', '\"+i+\"');refreshPage();'toast://切换成功！'\";\n\n        d.push({\n           title: (getVar(vari, '0')==i?'🚩':'')+tabs[i] ,\n           url: url,\n           col_type: tabs.length>2?'text_3':'text_2'\n        })\n    }\n    \n }else{d.push({title:'当前线路暂无线路,请检查线路是否正确',url:'toast://当前线路暂无线路,请检查线路是否正确',col_type: 'text_1'});}     \n    \n    d.push({        col_type: 'line_blank'    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">(逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">  (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +'〰️'+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        }\n        \n        }else{d.push({title:'当前线路暂无集数,请检查选集是否正确',url:'toast://当前线路暂无集数,请检查选集是否正确',col_type: 'text_1'});}    \n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"7itv.DT","author":"家娃","version":20221227,"type":"video","url":"hiker://empty##https://www.7itv.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首|更|写真|APP|热|追|专|文|明|热|留|福))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n \nconst page = MY_PAGE\n\ntrue_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n \nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.module-item-note&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  log(MY_URL);\nvar list = parseDomForArray(html,'body&&.module-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc: parseDomForHtml(L, '.module-info-item,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.module-info-item,1&&Text').replace(/剧情：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.7itv.com/vodsearch/**----------fypage---.html","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        var playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        } else {   \n            var apiUrl = 'https://jx.quankan.app/api.php';\n            var apiHtml = request(apiUrl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n                },\n                body: \"url=\" + playUrl + \"&ac=jx\",\n                method: \"POST\"\n            });\n\n            var json = JSON.parse(apiHtml);\n            if (json.code == 200) {\n                playUrl = json.url;\n                return toUrl(playUrl);\n            } else {\n                return 'toast://' + json.msg;\n            }\n        }\n    } catch (e) {\n        //setError(e);\n        return 'video://' + input\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:contains(排序))');\n  \n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\n\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item:matches(集数：|备注：)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n    \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://www.7itv.com/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"热影库·Q","author":"发粪涂墙","version":0,"type":"video","url":"http://m.reyingku.com/?m=vod-type-id-fyclass-pg-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&20&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.figures_list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),\n        desc: pdfh(list[j], 'em&&Text'),\n        img: pd(list[j], 'a&&style') + \"@Referer=\",\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\n\nsetResult(d);","searchFind":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.figures_list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),\n        desc: pdfh(list[j], 'em&&Text'),\n        img: pd(list[j], 'a&&style') + \"@Referer=\",\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\n\nsetResult(d);","search_url":"http://m.reyingku.com/index.php?m=vod-search-pg-fypage-wd-**.html","group":"①①📽️影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n\nvar html = request(MY_URL)\n\neval(pdfh(request(MY_URL.replace(/(.*)detail(.*)\\.html.*/, '$1play$2-src-1-num-1.html')), '.MacPlayer&&script&&Html'))\neval(request(MY_HOME + '/js/playerconfig.js'))\n\nvar arts = mac_from.split('$$$')\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(arts[i])\n}\n\nvar conts = mac_url.split('$$$')\nvar lists = [];\nfor (var i in conts) {\n    lists.push(conts[i].split('#'))\n}\n\nvar 分类 = pdfh(html, '.data&&p,3&&Text');\n\nvar 主演 = pdfh(html, '.data&&p,2&&Text');\n\nvar 导演 = pdfh(html, 'p,4&&Text');\n\nvar 更新 = pdfh(html, 'p,1&&Text');\n\nvar 图片 = pd(html, '.d_img&&style');\n\nvar 简介 = pdfh(html, '.data_intro&&Text').replace('简介：', '').replace('详情', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var title = mac_show[tabs[i]]\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(title) : title,\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    try {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: list[j].split('$')[0],\n                url: $(list[j].split('$')[1]).lazyRule((MY_HOME,tab) => {\n                    if (/m3u8|mp4/.test(input)) {\n                        return input\n                    } else {\nvar jx = MY_HOME+fetch(MY_HOME + '/player/' + tab+ '.js').match(/src=\"(.*?)'/)[1]\n\n    return 'video://'+jx+input\n                    }\n                }, MY_HOME,tabs[index]),\n                col_type: list.length > 3 ? 'text_4' : 'text_3'\n            });\n        }\n    } catch (e) {\n        d.push({\n            title: '没有选集哟，不信点图片去看看👀',\n            col_type: 'text_center_1'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n}, {\n    col_type: 'big_blank_block'\n}, {\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://m.reyingku.com/template/huiwap/images/logo.png"},{"last_chapter_rule":"","title":"音频","author":"Quan","version":1,"type":"music","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①②🎶音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/ae5eb15050e43d32884f01734a19e0f8.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M1001.27197023%20524.28948332h-125.65651489c-5.24719513%200-15.74158539%205.3852792-15.74158539%2010.77055843l-20.9887805%2032.31167525-26.23597565-113.0908634c0-10.77055842-10.49439025-16.15583763-20.9887805-16.15583763-5.24719513%200-15.74158539%205.3852792-20.98878051%2016.15583763l-52.3338672%20166.9436555-31.48317078-253.10812286c0-10.77055842-10.49439025-16.15583763-20.9887805-16.15583764-5.24719513%200-15.74158539%205.3852792-20.98878051%2016.15583764l-89.06423308%20409.28121996-36.59228181-662.38934283c0-10.77055842-10.49439025-21.54111683-20.98878051-21.54111684-5.24719513%200-15.74158539%205.3852792-20.98878052%2016.15583763l-99.42053925%20441.59289521-26.23597565-226.1817268c0-5.3852792-10.49439025-16.15583763-15.74158536-16.15583764-10.49439025%200-20.98878051%205.3852792-26.23597565%2016.15583764l-57.58106233%20188.48477234-26.23597563-102.320305c0-10.77055842-10.49439025-16.15583763-15.74158538-16.15583763-10.49439025%200-20.98878051%205.3852792-20.98878051%2010.77055842l-36.59228182%2075.39390893h-115.16212463c-10.49439025%200-20.98878051%2010.77055842-20.98878052%2021.54111686s10.49439025%2021.54111683%2020.98878052%2021.54111683h125.6565149c10.49439025%200%2015.74158539-5.3852792%2020.98878051-10.77055841l15.74158538-37.69695448%2026.23597562%20118.47614262c5.24719513%2010.77055842%2010.49439025%2016.15583763%2020.98878051%2016.15583763s15.74158539-5.3852792%2020.98878053-16.15583763l52.33386718-166.9436555L351.72444708%20675.07730119c0%2010.77055842%2010.49439025%2021.54111683%2020.9887805%2021.54111685s20.98878051-5.3852792%2020.9887805-16.15583762l94.17334415-414.66649917%2031.48317075%20667.77462201c0%2010.77055842%2010.49439025%2021.54111683%2020.98878052%2021.54111686s20.98878051-5.3852792%2020.98878051-16.15583763l99.42053925-441.59289523%2026.23597565%20220.79644762c0%2010.77055842%2010.49439025%2021.54111683%2020.9887805%2021.54111683s15.74158539-5.3852792%2020.98878052-16.15583763l62.82825745-188.48477233%2020.9887805%20102.32030498c5.24719513%205.3852792%2010.49439025%2016.15583763%2020.98878052%2016.15583762%205.24719513%200%2015.74158539-5.3852792%2020.98878051-10.77055842l36.59228181-75.39390893h109.91492951c10.49439025%200%2020.98878051-10.77055842%2020.98878052-21.54111684s-10.49439025-21.54111683-20.98878052-21.54111684z%22%20fill%3D%22%23d81e06%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"图像","author":"Quan","version":1,"type":"picture","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①③🖼️图像","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/ce18ec80dab0fb477c24f3349eb9984d.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201.1904296875em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201219%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M93.766866%200C43.933409%200%200%2036.57054%200%2097.521441v828.590925c0%2058.90295%2045.298709%2097.033834%2093.766866%2097.521441h1031.484283c45.493752%204.534747%2088.598229-33.352333%2093.766865-97.521441V97.521441C1219.018014%2036.57054%201172.110201%200%201125.251149%200H93.766866z%20m117.513336%20194.994122c57.976497-0.146282%20105.518199%2043.348281%20105.664482%2097.47268%200.146282%2053.44175-47.005335%2097.326398-105.664482%2097.521441-57.927736%200.097521-105.469439-43.397041-105.615721-97.521441%200-53.734314%2047.102856-97.228877%20105.615721-97.521441zM148.86648%20926.453691c-54.1244-0.048761-60.999661-20.479503-51.345039-48.760721l205.282634-195.042882c24.185317-31.255622%2062.413722-35.010197%20102.690077%200l153.986356%2097.521441c3.510772%208.581887%2041.93422%203.315729%2051.296278%200l410.614028-438.846485c24.575403-9.898426%2045.883838-3.900858%2051.345039%2048.760721v487.607205c3.657054%2017.651381-15.310866%2043.884649-51.345039%2048.760721%205.753765-0.048761%202.633079%200.097521%200%200H148.86648z%22%20fill%3D%22%23FF7B04%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"爱优腾VIP","author":"","version":0,"type":"other","url":"https://v1.jinrishici.com/all","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"https://www.520juhui.top/","find_rule":"js:\nvar titles = [\n\n '优酷™  @@  https://m.youku.com@@https://ae01.alicdn.com/kf/H8bb923925af44d47870300d34782de55i.png?glideCache=skip',\n\n  '爱奇艺™@@https://m.iqiyi.com@@https://ae01.alicdn.com/kf/H7f83f4193f6c4810bb3cde3ebc9a1cd6X.png?glideCache=skip',\n\n  '腾讯™  @@  https://m.v.qq.com@@https://ae01.alicdn.com/kf/H89104aa906944448a5154f3b76c951f4y.png?glideCache=skip',\n\n  '咪咕™  @@  https://m.miguvideo.com@@https://ae01.alicdn.com/kf/Hfd61468f6fc9437bbba24cb2711055f9k.png?glideCache=skip',\n\n  '芒果™  @@  https://m.mgtv.com@@https://ae01.alicdn.com/kf/H6615610baee34bfeb4d3d22ed1aeedfcn.png?glideCache=skip',\n\n  '哔哩™  @@  https://m.bilibili.com/index.html@@https://ae01.alicdn.com/kf/Hf0e6c6020eba44aca267c43cba770183o.png?glideCache=skip',\n\n  '乐视™  @@  http://m.le.com/@@https://ae01.alicdn.com/kf/H1f0a1ee56b9448fb923f3dfeb3176af1K.png?glideCache=skip',\n\n  '搜狐™  @@  https://m.tv.sohu.com/@@https://ae01.alicdn.com/kf/H0604ed7ec5424e10b950281e38c63407Q.png?glideCache=skip',\n\n\n  'PPTV™@@https://m.pptv.com/@@https://ae01.alicdn.com/kf/Ha07ebe600df94e9da592a63c8336a0d8R.png?glideCache=skip',\n\n  '风行™  @@  http://m.fun.tv/@@https://ae01.alicdn.com/kf/H5cae2ec6c51e47e498a3388d1ff26edfK.png?glideCache=skip',\n\n  '1095 @@https://vip.1905.com/listm/p1o1.shtml/@@https://ae01.alicdn.com/kf/He517a9b732c543528c1d6b7dcf6a6462x.png?glideCache=skip',\n\n  '搜狗视频@@http://m.v.sogou.com/?source=node&spver=@@https://ae01.alicdn.com/kf/Hef3d43b3150642d4a72d0bcefced0f54k.jpg?glideCache=skip'\n\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push({title:hitokoto.content,url:\"  https://movie.douban.com/tag/#/\",desc:'类别：'+hitokoto.category+'                                                                                                        作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\ncol_type: 'pic_1',\n\n   url:\"http://mp.weixin.qq.com/mp/homepage?__biz=MzI3MzY4NDYzNg==&hid=4&sn=29db5237b7cb75a297b353749fd0c15a&scene=18#wechat_redirect\",\n   pic_url: 'https://mmbiz.qpic.cn/mmbiz_png/KiaQJribS3H5ylBZwqLNTNfaKkbe2IAicVXqhicNiaSyFdd9hiaUVCibSqZc1Fb68ZBjBibziciasNUR2WialC3PRVRMLJG4A/640?wx_fmt=png&tp=webp&wxfrom=5&wx_lazy=1&wx_co=1' + new Date().getTime()\n});\n\nfor (var i = 0; i < t.length && i < 12; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.desc = k[0];\n  r.url = k[1];\n  r.pic_url = k[2];\n  r.col_type = 'pic_3';\n  d.push(r);\n}\n\nfor (var i = 12; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  if (k.length < 1) continue;\n  var r = {};\n  r.title = k[0];\n  r.url = k[1];\n  r.col_type = 'text_3';\n  d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"①全网VIP","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI影搜","author":"","version":48,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);\n","search_url":"hiker://empty##**","group":"①工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `稀饭@https://www.xifanys.com/yingpiansearch/-------------.html?wd=**\\n达龟@https://www.dadagui.me/vodsearch/-------------.html?wd=**&submit=\\n城市@https://www.citydy.com/search.html?wd=**\\nlibvio@https://www.libvio.me/search/-------------.html?wd=**&submit=\\n新视@https://www.6080dy1.com/vodsearch/-------------.html?wd=**\\n看看y@https://www.kkdy.live/vod-search.html?wd=**&submit=\\n饭团@https://www.fantuanhd.com/search.html?wd=**&submit=\\n免的@https://www.freeok.vip/vodsearch/-------------.html?wd=**\\n牛马@https://www.niumatv.cc/vodsearch.html?wd=**&submit=\\n免费@https://www.thefree.vip/vodsearch/-------------.html?wd=**\\n莫扎兔@https://www.mozhatu.com/index.php/vod/search.html?wd=**\\n霹雳@https://plyingshi.com/vodsearch/-------------.html?wd=**\\n厂长@https://www.czspp.com/xssearch?q=**\\nVOF@https://www.voflix.com/search/-------------.html?wd=**\\n电影@https://www.appmovie.cc/index.php/vod/search.html?wd=**&submit=\\n追剧@http://zjdr.vip/vod/search/wd/**.html\\n疯狗@https://m.fenggoudy3.com/index.php?s=vod-search-name&wd=**\\n在线@https://zxzj.vip/vodsearch/-------------.html?wd=**&submit=\\n七七@http://aaasofa.com/search.php\\n北川@https://www.bcwzg.com/vodsearch/-------------/?wd=**\\nEF@https://www.pili5.cn/vodsearch/-------------.html?wd=**&submit=\\n影家@http://yszjvip.com/index.php/vod/search.html?wd=**\\n五五@https://555dy.cc/vodsearch/-------------.html?wd=**\\n渣漫@https://www.dm2022.com/vodsearch.html?wd=**\\n在家@https://zxzj.vip/vodsearch/-------------.html?wd=**&submit=\\npia库@https://m.piaku.cc/s/-------------/?wd=**\\n极品@https://www.jpys.me/vodsearch/-------------.html?wd=**\\n艾迪@https://aidi.tv/vsearch/-------------.html?wd=**&submit=\\n九州@http://www.jiuzhou911.com/search.php?searchword=**\\n十千@http://www.qianshihouse.com/srh/-------------.html?wd=**\\n麦片@http://m.ly368.com/index.php?s=vod-m_s-name&wd=**\\n私人@https://soumk.com/vodsearch/-------------.html?wd=**\\n星辰@http://www.qhddj.com.cn/xcyysearch/**-------------.html\\nCokevY@https://cokemv.me/vodsearch/-------------.html?wd=**\\n爱看y@https://ikan6.vip/vodsearch/-------------/?wd=**&submit=\\n干饭py@https://www.gfysys1.com/vodsearch/-------------.html?wd=**\\n天空y@http://tkznp.com/vodsearch.html?wd=**\\n蓝光@https://www.lgyy.cc/vodsearch/-------------.html?wd=**\\n低端@https://ddys.tv/?s=**&post_type=post\\n努努@https://www.nunuyy3.org/so/**-**--.html`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"我的鸡盒","author":"xiaojihe","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://caoniang.net/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"①常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://tva1.sinaimg.cn/square/005SyZH5ly1gwkkdzohz1j309x0ad0t4.jpg"},{"last_chapter_rule":"","title":"meowTG","author":"@LoyDgIk","version":6,"type":"video","url":"hiker://empty#noRefresh#","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet layout = [];\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    title: '<h1 style=\"text-align: center;\"><font color=\"#FEBD6F\">meow*TG</font><br><font color=\"#FB6C73\">最懂你的TG搜索~Meow</font></h1>',\n    col_type: \"rich_text\"\n});\nlayout.push({\n    col_type: \"input\",\n    url: \"input?'hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key='+encodeURIComponent(input):'toast://请输入内容'\",\n    title: \"🔍\"\n});\nconst id = Date.now() + MY_RULE.title + \"关键词\";\nlayout.push({\n    col_type: \"blank_block\",\n    extra: {\n        id: id\n    }\n});\nsetResult(layout);\n\ntry {\n    let data = JSON.parse(request(\"https://meow.tg/api/results/keywords\"));\n    let keyList = [];\n    keyList.push({\n        title: \"<strong>🎈近期热门关键词：</strong>\",\n        col_type: \"rich_text\",\n    });\n    data.keywords.forEach(key => {\n        keyList.push({\n            title: key,\n            col_type: \"flex_button\",\n            url:\"hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key=\"+encodeURIComponent(key)\n        });\n    });\n    addItemAfter(id, keyList);\n}catch(e){\n    log(e.toString())\n}\n","searchFind":"","search_url":"","group":"①常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"搜索\",\"rule\":\"js:\\nlet data = \\\"{}\\\";\\nlet source = MY_PARAMS.sourceName;\\nlet zhName = MY_PARAMS.zhName;\\nlet avatar = MY_PARAMS.avatar;\\nlet page = Number(getMyVar(\\\"page\\\", \\\"0\\\")) + MY_PAGE;\\nlet keyword = getMyVar(\\\"key\\\", getParam(\\\"key\\\"));\\nlet perPage = 10;\\nlet layout = [];\\nif (source) {\\n    data = request(buildUrl(\\\"https://meow.tg/api/results/querySource\\\", {\\n        keyword: keyword,\\n        page: page,\\n        perPage: perPage,\\n        sourceName: source\\n    }));\\n} else {\\n    data = request(buildUrl(\\\"https://meow.tg/api/results/query\\\", {\\n        keyword: keyword,\\n        page: page,\\n        perPage: perPage\\n    }));\\n}\\naddListener(\\\"onClose\\\", \\\"clearMyVar('page');clearMyVar('key');\\\");\\ndata = JSON.parse(data);\\nif (MY_PAGE === 1) {\\n    if (avatar) {\\n        layout.push({\\n            col_type: \\\"card_pic_3\\\",\\n            url: \\\"hiker://empty\\\",\\n        }, {\\n            col_type: \\\"card_pic_3\\\",\\n            url: \\\"hiker://empty\\\",\\n            pic_url: avatar\\n        });\\n        layout.push({\\n            col_type: \\\"big_blank_block\\\"\\n        });\\n    }\\n    if (zhName) {\\n        layout.push({\\n            title: \\\"““””<strong><big>\\\" + zhName + \\\"</big></strong>\\\",\\n            col_type: \\\"text_center_1\\\",\\n            url: \\\"hiker://empty\\\",\\n            extra: {\\n                lineVisible: false\\n            }\\n        });\\n        layout.push({\\n            col_type: \\\"big_blank_block\\\"\\n        });\\n    }\\n    layout.push({\\n        col_type: \\\"input\\\",\\n        url: \\\"if(input){putMyVar('key',encodeURIComponent(input));refreshPage();}else{'toast://请输入关键词'}\\\",\\n        title: \\\"🔍\\\",\\n        extra: {\\n            defaultValue: decodeURIComponent(keyword)\\n        }\\n    });\\n    layout.push({\\n        col_type: \\\"text_2\\\",\\n        url: \\\"hiker://empty\\\",\\n        title: \\\"总计\\\" + data.total,\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    let pageNum = Math.ceil(data.total / perPage);\\n    layout.push({\\n        col_type: \\\"text_2\\\",\\n        url: $(\\\"\\\", \\\"最大:\\\" + pageNum).input((m) => {\\n            let n = Number(input);\\n            if (Number.isNaN(n)) {\\n                return \\\"toast://请输入数字\\\";\\n            }\\n            if (n > m || n < 1) {\\n                return \\\"toast://数字不对哦\\\";\\n            }\\n            putMyVar(\\\"page\\\", (n - 1) + \\\"\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }, pageNum),\\n        title: \\\"共\\\" + pageNum + \\\"页\\\",\\n    });\\n\\n\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n}\\nif (data.finalList && data.finalList.length > 0) {\\n    setPageTitle(\\\"「\\\" + decodeURIComponent(getParam(\\\"key\\\")) + \\\"」#\\\" + page);\\n}\\n\\n\\nfor (let item of data.finalList) {\\n    layout.push({\\n        col_type: \\\"avatar\\\",\\n        pic_url: item.source.avatar,\\n        //url: \\\"tg://resolve?domain=\\\" + item.source.name_en + \\\"&post=\\\" + item.results.id,\\n        url: \\\"hiker://empty\\\",\\n        title: item.source.name_zh || item.source.name_en\\n    });\\n    layout.push({\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"tg://resolve?domain=\\\" + item.source.name_en + \\\"&post=\\\" + item.results.id,\\n        title: \\\"跳转\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"hiker://page/详细#noRecordHistory##noHistory##fullTheme#?name=\\\" + item.source.name_zh,\\n        title: \\\"详细\\\",\\n        extra: {\\n            uniqueID: item.results.uniqueID,\\n        }\\n    });\\n    layout.push({\\n        col_type: \\\"rich_text\\\",\\n        title: \\\"<pre><code>\\\" + item.results.text + \\\"</code></pre>\\\" /*<br><big>匹配情况</big><br>\\\"+(item.results.highLight[0]||\\\"\\\").replace(/style=\\\"background:/g,'color=\\\"').replace(/\\\\n/g,\\\"<br>\\\")*/ ,\\n    });\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"详细\",\"path\":\"详细\",\"rule\":\"js:\\nlet data = request(\\\"https://meow.tg/api/results/detail/\\\" + MY_PARAMS.uniqueID);\\n\\n\\ndata = JSON.parse(data);\\nsetPageTitle(\\\"详细\\\");\\nlet layout = [];\\n\\nlayout.push({\\n    col_type: \\\"card_pic_3\\\",\\n    url: \\\"hiker://empty\\\",\\n}, {\\n    col_type: \\\"card_pic_3\\\",\\n    url: \\\"hiker://empty\\\",\\n    pic_url: data.source.avatar\\n});\\nlayout.push({\\n    col_type: \\\"big_blank_block\\\"\\n});\\nlayout.push({\\n    title: \\\"““””<strong><big>\\\" + data.source.name_zh + \\\"</big></strong>\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"big_blank_block\\\"\\n});\\nlayout.push({\\n    col_type: \\\"text_2\\\",\\n    url: \\\"tg://resolve?domain=\\\" + data.source.name_en + \\\"&post=\\\" + data.detail.messageID,\\n    title: \\\"进入频道\\\"\\n});\\nlayout.push({\\n    col_type: \\\"text_2\\\",\\n    url: data.source.previewLink,\\n    title: \\\"进入预览\\\"\\n});\\n\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    url: $.toString(() => input ? \\\"hiker://page/搜索?page=fypage&key=\\\" + encodeURIComponent(input) : \\\"请输入内容\\\"),\\n    title: \\\"🔍\\\",\\n    extra:{\\n        sourceName: encodeURIComponent(data.source.name_en),\\n        avatar: data.source.avatar,\\n        zhName: data.source.name_zh\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>🐱搜索结果：</strong><br>\\\" + data.detail.rawText.replace(/\\\\n/g, \\\"<br>\\\")\\n});\\nlet links = data.detail.rawText.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\nif (links.length) {\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"rich_text\\\",\\n        title: \\\"<strong>🥳阿里链接：</strong>\\\",\\n        url: \\\"hiker://empty\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    \\n\\n    links.forEach((link, index) => {\\n        layout.push({\\n            title: '🔗 ' + (links.length > 1 ? '链接' + (index + 1) + '：' : '') + link,\\n            url: 'hiker://page/detail?rule=云盘汇影&url=' + link + '??fypage',\\n            col_type: \\\"text_1\\\"\\n        });\\n    })\\n}\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\n\\nlayout.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"⚡智能搜索建议⚡\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>🎈可能感兴趣的关键词：</strong>\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\ndata.wordList.forEach(key => {\\n    layout.push({\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key=\\\" + encodeURIComponent(key),\\n        title: key\\n    });\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>😘推荐结果：</strong>\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\ndata.recommends.forEach(item => {\\n    layout.push({\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://page/详细#noRecordHistory##noHistory##fullTheme#\\\",\\n        title: item._source.rawText,\\n        extra: {\\n            uniqueID: item._source.uniqueID,\\n        }\\n    });\\n});\\nsetResult(layout);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"音范丝","author":"Joe&缘分","version":0,"type":"video","url":"https://www.yinfans.me/topic/fyclass/page/fypage","col_type":"movie_3","class_name":"蓝光原盘&4k&电影&纪录片&演唱会","class_url":"bluray-movie&4k&bluray-movie/movie&bluray-movie/documentry&bluray-movie/song","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".mainleft&&li;a&&title;img&&src;.info_date&&Text;a&&href.js:input+\"#immersiveTheme#\"","searchFind":".mainleft&&li;a&&title;a&&href;.info_date&&Text;;img&&src","search_url":"https://www.yinfans.me/page/fypage?s=**","group":"①常用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar conts = pdfa(html, 'body&&#cili');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: pdfh(html, '#post_content&&p,1&&Text').replace(/◎译　　名.*?◎年　　代　/, '').replace(/◎产　　地/, '').replace(/◎类　　别/, '').replace(/◎语　　言/, '').replace(/◎/, '').replace(/日期/, '') +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '').substring(0, 18),\n    desc: pdfh(html, '#post_content&&p,1&&Text').match(/(片　　长.*?)◎/)[1],\n    img: pd(html,\n        '.alignnone&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    title: '磁力云播列表(无声请用mx或reex播放)👇',\n    url: '',\n    col_type: 'text_1'\n})\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            url: pd(list[j], 'a&&href'),\n            col_type: 'text_1'\n        });\n    }\n}\n\n//setTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"批量修改助手","author":"永远の明日","version":4,"type":"other","url":"hiker://empty","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet todoRule = JSON.parse(getVar('batchEdit-todoRule', '[]')),\n  editAttr = JSON.parse(getVar('batchEdit-editAttr', '[\"group\"]')),\n  subMode = getVar('batchEdit-subMode', '字串'),\n  replaceMode = getVar('batchEdit-replaceMode', '字串'),\n  subStr = getVar('batchEdit-subStr', ''),\n  replacement = getVar('batchEdit-replacement', ''),\n  quickCopy = ['/^.*$/', '/[\\\\s\\\\S]*/', 'new RegExp(\"\",\"\")', '()=>{return \"\"}', 'function(){return \"\"}', 'new Function(\"\", \"\")'],\n  el = []\n\nel.push({\n  title: '““””<b>恢复备份',\n  url: $('#noLoading#').lazyRule(() => {\n    if (!fetch('hiker://files/share/batchEdit-backup-rules.json')) return 'toast://备份为空'\n    else return 'rule://' + base64Encode('海阔视界￥home_rule_url￥hiker://files/share/batchEdit-backup-rules.json')\n  })\n}, {\n  title: '““””<b>使用须知',\n  url: 'hiker://page/manual#noHistory##noRecordHistory#',\n}, {\n  title: '““””<b>编辑队列: ' + todoRule.length,\n  url: 'hiker://page/queueEdit#noHistory##noRecordHistory#',\n}, {\n  title: '修改标题',\n  url: $('#noLoading#').lazyRule(() => {\n    putVar('batchEdit-subMode', '字串')\n    putVar('batchEdit-editAttr', '[\"title\"]')\n    refreshPage(false)\n    return 'toast://请输入查询和替换内容'\n  })\n}, {\n  title: '修改分组',\n  url: $('#noLoading#').lazyRule(() => {\n    putVar('batchEdit-subMode', '正则')\n    putVar('batchEdit-subStr', '/^.*$/')\n    putVar('batchEdit-editAttr', '[\"group\"]')\n    refreshPage(false)\n    return 'toast://已正则全选查询内容，请输入替换内容'\n  })\n}, {\n  title: '修改颜色',\n  url: $('#noLoading#').lazyRule(() => {\n    putVar('batchEdit-subMode', '正则')\n    putVar('batchEdit-subStr', '/^.*$/')\n    putVar('batchEdit-editAttr', '[\"titleColor\"]')\n    refreshPage(false)\n    return 'toast://已正则全选查询内容，请输入替换内容'\n  })\n}, { col_type: 'line_blank' })\n\nel.push({\n  title: '““””<b>✎ 待改属性: </b><small>' + editAttr,\n  url: 'hiker://page/AttrSelect?mode=batchEdit-editAttr#noHistory##noRecordHistory#',\n  col_type: 'text_center_1',\n}, {\n  title: subMode + '查询',\n  url: $.toString((subMode) => {\n    if (!input) {\n      subMode = { '字串': '正则', '正则': '字串' } [subMode]\n      putVar('batchEdit-subMode', subMode)\n      refreshPage(false)\n      return 'toast://已切换至' + subMode + '查询模式'\n    }\n  }, subMode),\n  desc: '输入' + subMode + '，为空时右侧可切换模式',\n  col_type: 'input',\n  extra: { defaultValue: subStr, OnChange: 'putVar(\"batchEdit-subStr\", input)' }\n}, {\n  title: replaceMode + '替换',\n  url: $.toString((replaceMode) => {\n    if (!input) {\n      replaceMode = { '字串': '函数', '函数': '字串' } [replaceMode]\n      putVar('batchEdit-replaceMode', replaceMode)\n      refreshPage(false)\n      return 'toast://已切换至' + replaceMode + '替换模式'\n    }\n  }, replaceMode),\n  desc: '输入' + replaceMode + '，为空时右侧可切换模式',\n  col_type: 'input',\n  extra: { defaultValue: replacement, OnChange: 'putVar(\"batchEdit-replacement\", input)' }\n}, {\n  title: '💾   修改并导入',\n  url: $('#noLoading#').lazyRule((todoRule, editAttr, subStr, replacement, subMode, replaceMode) => {\n    let rules = JSON.parse(fetch('hiker://home'))\n    writeFile('hiker://files/share/batchEdit-backup-rules.json', JSON.stringify(rules))\n    if (subMode == '正则') {\n      try { subStr = eval(subStr) } catch (e) {}\n      if (!(subStr instanceof RegExp)) throw '查询正则语法错误'\n    }\n    if (replaceMode == '函数') {\n      try { replacement = eval(replacement) } catch (e) {}\n      if (!(replacement instanceof Function)) throw '替换函数语法错误'\n    }\n    rules = rules.map((v) => {\n      if (todoRule.indexOf(v.title) >= 0)\n        editAttr.forEach((attr) => (v[attr] = v[attr].replace(subStr, replacement)))\n      return v\n    })\n    writeFile('hiker://files/share/batchEdit-home-rules.json', JSON.stringify(rules))\n    putVar('batchEdit-todoRule', '[]')\n    return 'rule://' + base64Encode('海阔视界￥home_rule_url￥hiker://files/share/batchEdit-home-rules.json')\n  }, todoRule, editAttr, subStr, replacement, subMode, replaceMode),\n  col_type: 'text_center_1',\n}, { col_type: 'line_blank' }, {\n  title: '““””<b>快捷复制',\n  url: 'hiker://empty',\n  col_type: 'text_center_1',\n})\n\nArray.prototype.push.apply(el, quickCopy.map((v) => {\n  return { title: v, url: 'copy://' + v }\n}))\nsetResult(el)\n","searchFind":"","search_url":"hiker://empty##**","titleColor":"#148e8e","group":"①常用","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"text_3","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_3\",\"name\":\"编辑队列\",\"path\":\"queueEdit\",\"rule\":\"js:\\naddListener('onClose', 'refreshPage(false)')\\n\\nconst filterAttr = JSON.parse(getVar('batchEdit-filterAttr', '[\\\"title\\\",\\\"url\\\"]')),\\n  groupShow = getVar('batchEdit-groupShow', '0'),\\n  queueShow = getVar('batchEdit-queueShow', '全部'),\\n  todoRule = JSON.parse(getVar('batchEdit-todoRule', '[]'))\\nlet rules = JSON.parse(fetch('hiker://home')),\\n  filterKey = getVar('batchEdit-filterKey', ''),\\n  groups = rules.map((v) => v.group).filter((v, i, arr) => arr.indexOf(v) == i)\\ngroups.unshift('分组:')\\nsetPageTitle('编辑队列: ' + todoRule.length)\\n\\nlet el = [{\\n  title: '过滤',\\n  url: $.toString(() => {\\n    putVar('batchEdit-filterKey', input)\\n    refreshPage(false)\\n    return 'hiker://empty'\\n  }),\\n  desc: '过滤关键词可正则，下方选择对什么属性进行过滤',\\n  col_type: 'input',\\n  extra: { defaultValue: filterKey }\\n}, {\\n  title: '✎ 过滤属性: &nbsp““””<small>' + filterAttr,\\n  url: 'hiker://page/AttrSelect?mode=batchEdit-filterAttr#noHistory##noRecordHistory#',\\n  col_type: 'text_center_1'\\n}, { col_type: 'line_blank' },\\n  { col_type: 'big_blank_block' },\\n  { col_type: 'big_blank_block' }\\n]\\n\\ngroups.forEach((v, i) => {\\n  el.push({\\n    title: '““””<span style=\\\"color:' + (groupShow == i ? '#12b668\\\">' : 'black\\\">') + (v || '[无分组]'),\\n    url: groupShow == i ? 'hiker://empty' : $('#noLoading#').lazyRule((i) => {\\n      putVar('batchEdit-groupShow', i)\\n      refreshPage(false)\\n      return 'hiker://empty'\\n    }, i),\\n    col_type: 'scroll_button',\\n  })\\n})\\n\\nif (filterKey) {\\n  filterKey = /^\\\\/(.+)\\\\/([gim]{0,3})$/.exec(filterKey) || [, filterKey, '']\\n  filterKey = new RegExp(filterKey[1], filterKey[2])\\n  rules = rules.filter((v) => {\\n    for (let attr of filterAttr) {\\n      let res = filterKey.exec(v[attr])\\n      if (res) {\\n        if (res[0] == '') return v[attr] == ''\\n        else return true\\n      }\\n    }\\n    return false\\n  })\\n}\\nif (groups[groupShow] != '分组:')\\n  rules = rules.filter((v) => (groups[groupShow] == v.group))\\nif (queueShow == '已选')\\n  rules = rules.filter((v) => (todoRule.indexOf(v.title) >= 0))\\n\\nel.push({ col_type: 'line' }, {\\n  title: '““””<span style=\\\"color:black\\\">⇵ 显示' + queueShow,\\n  url: $('#noLoading#').lazyRule((queueShow) => {\\n    putVar('batchEdit-queueShow', { '全部': '已选', '已选': '全部' } [queueShow])\\n    refreshPage(false)\\n    return 'hiker://empty'\\n  }, queueShow)\\n}, {\\n  title: '““””<span style=\\\"color:black\\\">◉ 全选',\\n  url: $('#noLoading#').lazyRule((rules, todoRule, group) => {\\n    if (group == '全部') todoRule = rules\\n    else rules.forEach((v) => { if (todoRule.indexOf(v) == -1) todoRule.push(v) })\\n    putVar('batchEdit-todoRule', JSON.stringify(todoRule))\\n    refreshPage(false)\\n    return 'toast://' + group + ', 已全选'\\n  }, rules.map((v) => v.title), todoRule, groups[groupShow]),\\n}, {\\n  title: '““””<span style=\\\"color:black\\\">○ 全不选',\\n  url: $('#noLoading#').lazyRule((rules, todoRule, group) => {\\n    if (group == '全部') todoRule = []\\n    else todoRule = todoRule.filter((v) => (rules.indexOf(v) == -1))\\n    putVar('batchEdit-todoRule', JSON.stringify(todoRule))\\n    refreshPage(false)\\n    return 'toast://' + group + ', 已全不选'\\n  }, rules.map((v) => v.title), todoRule, groups[groupShow]),\\n})\\nrules.forEach((v) => {\\n  let index = todoRule.indexOf(v.title),\\n    color = '&nbsp <span style=\\\"color:#' + v.titleColor.slice(-6) + '\\\">'\\n  el.push({\\n    title: '““””<small>' + (index == -1 ? '⚪' : '🟢') + color + v.title,\\n    url: $('#noLoading#').lazyRule((todoRule, title, index) => {\\n      if (index == -1) todoRule.push(title)\\n      else todoRule.splice(index, 1)\\n      putVar('batchEdit-todoRule', JSON.stringify(todoRule))\\n      refreshPage(false)\\n      return 'hiker://empty'\\n    }, todoRule, v.title, index)\\n  })\\n})\\n\\nsetResult(el)\\n\"},{\"col_type\":\"text_2\",\"name\":\"选择属性\",\"path\":\"AttrSelect\",\"rule\":\"js:\\naddListener('onClose', 'refreshPage(false)')\\n\\nconst mode = getParam('mode'),\\n  rule = JSON.parse(fetch('hiker://home'))[0],\\n  allAttr = Object.keys(rule).filter((v) => (typeof(rule[v]) == 'string')),\\n  attrs = JSON.parse(getVar(mode, mode == 'batchEdit-filterAttr' ? '[\\\"title\\\",\\\"url\\\"]' : '[\\\"group\\\"]'))\\nsetPageTitle('选择属性')\\n\\nlet el = [{\\n  title: '““””<span style=\\\"color:black\\\">◉ 全选',\\n  url: $('#noLoading#').lazyRule((mode, allAttr) => {\\n    putVar(mode, JSON.stringify(allAttr))\\n    refreshPage(false)\\n    return 'toast://已全选'\\n  }, mode, allAttr),\\n}, {\\n  title: '““””<span style=\\\"color:black\\\">○ 全不选',\\n  url: $('#noLoading#').lazyRule((mode) => {\\n    putVar(mode, '[]')\\n    refreshPage(false)\\n    return 'toast://已全不选'\\n  }, mode),\\n}]\\nallAttr.forEach((v) => {\\n  let index = attrs.indexOf(v)\\n  el.push({\\n    title: (index == -1 ? '⚪ ' : '🟢 ') + v,\\n    url: $('#noLoading#').lazyRule((mode, v, attrs, index) => {\\n      if (index == -1) attrs.push(v)\\n      else attrs.splice(index, 1)\\n      putVar(mode, JSON.stringify(attrs))\\n      refreshPage(false)\\n      return 'hiker://empty'\\n    }, mode, v, attrs, index),\\n    col_type: 'text_3',\\n  })\\n})\\n\\nsetResult(el)\"},{\"col_type\":\"rich_text\",\"name\":\"使用说明\",\"path\":\"manual\",\"rule\":\"js:\\nsetResult([\\n  '本规则使用了视界的合集导入功能进行批量修改，在导入前务必选择【删除原规则】，否则会没有效果。<br>同时不要担心改坏了，每次导入前都会备份，可以点击【恢复备份】导入备份，此时同样要选择【删除原规则】',\\n  '批量修改每次只能修改一次，修改后待处理队列会清空，无法继续修改',\\n  '点击【待改属性】可以选择要修改的属性，同时有三个快捷选项，一般只用这些功能就可以',\\n  '查询内容有字符串和正则两种模式，替换内容有字符串和函数两种模式，点击右侧按钮可切换，不会正则和函数的话尽量只用字符串模式。<br>这两种模式与js的replace函数参数一致，详见<a href=\\\"https://www.w3school.com.cn/jsref/jsref_replace.asp\\\">W3CSchool</a>',\\n  '目前也不知道能做什么了，还需要什么功能可以告诉我，但不保证能实现哦'\\n].map((v) => ({ title: v })))\\n\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"NEW字幕组","author":"小棉袄🌞","version":4,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title);\nd.push({\n    title: \"\",\n    url: \"https://newzmz.com/index.html\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"①常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0]);\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule) {\\n    return $.toString((rule) => {\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (input.startsWith(\\\"https://ysfx.tv/\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        }\\n    }, rule);\\n}\"}]","proxy":"","icon":"https://newzmz.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至：\"+title);","title":"348蓝光影视 Ⓕ","author":"随风","version":5,"type":"other","url":"https://www.348z.com/vodshow/fyarea/fysort/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧&纪录片&灾难片&魔幻片&犯罪片&悬疑片&B站电影&4K专区&4K电影&4K电视剧&B站剧集&其他剧&直播","class_url":"1&2&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21&22&24&25&29&37&38&39&49&50&52","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&area/大陆&area/香港&area/台湾&area/美国&area/法国&area/英国&area/日本&area/韩国&area/德国&area/泰国&area/印度&area/意大利&area/西班牙&area/加拿大&area/其他","sort_name":"排序&时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"&by/time&by/hits&by/score","year_url":"&year/2021&year/2020&year/2019&year/2018year/&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004&year/2003&year/2002&year/2001&year/2000","find_rule":"js:var res = {};var d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.list-a&&ul&&li');\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.list-remarks&&Text'),\npic_url:parseDom(list[i],'.lazy&&data-original')+\"@Referer=\",\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",\ncol_type: 'movie_3'});\n  }catch(e){}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.searchlilst&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.list-remarks&&Text'),\r\n       img: parseDom(list[j], '.lazy&&data-original') + \"@Referer=\",\r\n       content: parseDomForHtml(list[j], '.detail&&Text').replace('立即播放',''),\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.348z.com/vodsearch/page/fypage/wd/**.html","group":"①常用","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//免嗅\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': PC_UA\n        }\n    }), '#bofang_box&&script&&Html'));\n    var url = decodeURIComponent(player_aaaa.url);\n    if (url.search(/m3u8|mp4|obj/)>-1) {\n        var video = url\n    } else {\neval(fetch('https://www.348z.com/static/js/playerconfig.js'));\n        var jx = MacPlayerConfig.player_list[player_aaaa.from].parse;\n        if (jx == '') {\n            jx = MacPlayerConfig.parse\n        };\n        var play = jx + url\n        showLoading(\"\\u5df2\\u5f00\\u542f\\u5f3a\\u529b\\u55c5\\u63a2\\uff0c\\u8bf7\\u7a0d\\u5019\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) { \n            if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';} else if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';}\n            }\n        })\n    }\n    return video\n});\n\n//线路\nvar arts = parseDomForArray(html, '#tag&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt').replace(' ', ''))\n}\n\n//选集\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.dt-info-box&&ul&&li&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.dt-info-box&&ul&&li,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.dt-info-box&&ul&&li,3&&Text').replace('年代', '类型').substring(0, 20) + parseDomForHtml(html, '.dt-info-box&&ul&&li&&Text').substring(3, 20) + parseDomForHtml(html, '.dt-info-box&&ul&&li&&Text').substring(3, 20),\n    //定位描述\n    desc: parseDomForHtml(html, '.dt-info-box&&ul&&li,1&&Text'),\n    //定位图片\n    pic_url: parseDom(html, '.lazy&&data-original'),\n    url: parseDom(html, '.lazy&&data-original'),\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n   var desc = parseDomForHtml(html, '.m-box&&Text').replace('……','。').replace('　','').replace('展开','').replace('收起','').replace('详情：','');\nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 50) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#'+ '\\n'  + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n          col_type: 'text_1'\n});\n    \nfor (let i = 0; i < line_model; i++){\n\n        d.push({\n            col_type: line_type_model\n        })\n  }\t \n\nfunction setTabs(tabs, vari) {\n        d.push({\n         title: '‘‘线路 :’’',\n         url:'toast://选择线路',\n            col_type: 'scroll_button',}) \n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]+'↓') : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>';}\n\nfunction setLists(lists, index) {\n    d.push({\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>数据资源收集于网络，海阔不提供任何资源！</font></small>',\n    desc: '““””<small><font color=#f20c00>本规则仅限学习与交流，请导入后24小时内删除，请勿传播！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://img1.baidu.com/it/u=538146090,2394011905&fm=26&fmt=auto"},{"last_chapter_rule":"","title":"皮皮泡♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##http://www.pipipao.com/vodshow/id/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body&&a:not(:matches(首页|明星|资讯|敏感|专题))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href.js:input.replace(/type/, \"vodshow/id\")'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&.stui-vodlist__media&&li');\n\nfor(let l of list){\n    d.push({\n        title: pdfh(l, 'a&&title'),\n        col_type: 'movie_3',\n        desc: pdfh(l, '.pic-text&&Text'),\n        content: pdfh(l, '.hidden-sm&&Text'),\n        img: pd(l, 'a&&data-original'),\n        url: pd(l, 'a&&href') + '#immersiveTheme#'\n    });\n}\n\nsetResult(d);","search_url":"http://www.pipipao.com/vodsearch**/page/fypage.html","group":"①常用","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\n\nvar html = getResCode();\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&h3:gt(0)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], '.title&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS('vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2FnlqrIA5sMWnmRxD3BMHkAGUxKs2osorxqH6h8IHHjzrK/Jr7NEB0A0HLRxyACVxUeNp8WCQFkyAVYUE6156K68mZ/xI7NEB9sA6GS+UCtHVfSFjGIR2yd4FlajVy/WOBaWCr4hg/61NJ7Zom+IeJugrfHDrwgHsDrAJkUrn4TNT1EQIhCT3C6DAyJ/BG9h02b8mDsB01oNllvEodsCv0bHD7YmkXU4zwLC0Ouf51FYU4PZy/4cC1ucgKwg6EbyyMzkgcfxnMJYyJV0vZQAJNh8rfEiaviHC8O3UDv8rdXS13dTe7U8z7Cj7Vby7e8mJeDpsr8aiHHuO+s6N0ZLY+XGvfVDOSOWJXFyEYXEhQfmCYkm93S/lJPvBFX7VCgvm4OBx7EFBa2oE8AsA6nRKX2xnHmPz/mi78tROFM5qnoAHt4OBZBa78lE6jOmYiP9zM5V2wXUgIa+/Si9rHvztLFpV14CP2XFQKbVmoJ98bSiArg/mJby6Rj//zNu4mQ5IpMGtKP4nFBgYJrCttitE5URed8LHFdF5mVfYQcEVtGpXqd/p//HxQZWxb1H0AUmOnGNiZezRyUqV8G7tiQ8PCB0DnFsxrHJ2+a6xVT+PfKY3yzEstQcC4nCLliD0rmdwa+3bmHROn95+lhcSUC30vEQWYYkAIHNQJjMOYHtzjzjkNb6q7mAIG3EVxicYG/lMQbWEMCzE6Pc/mVOYaXF8mGLPrvF2IAguPhiS2BvBWS5WLB9QUHaJZEOpcf1Gn98jTAHSXT4HNbGz7tmoPnFBG8TsRAwaPOkvbmKVIV2YC+Y4vWfCxTL6MISxtrAHjWGBkxXKrNZ8Yi7g7VI1Ap6G9KonL2vyW/R8SUMy78wmW77/HWA4gu66lKw3zWf7Ap5x9wGdnjWmCM4Uu18bDJGu8Wb5asSXk1WSeQbwT8PCkUKSIqHT9fUfzlmCaJpraA6NhzqZ+SzDkz28StDVeRpYNtP11ksT3Uosh4eh+lKMBp9uh1Gt89Fj3BMJIgBrKkgmsv2NwkQPfi6dzbZNVPwnOKHjDEj7wbPRtBky9wmF9TqVahB8sloCeWcC0Ab8S3pIHf7Or8PG1ScuTrC0gaZj/MId/Vn7+PDxwbtq9ItkHUuBP8FRHoOwyEQGnlP0+Z9rXYNgD04PydschPp2Fop1GpToTFmqTuvawcLf16ExroluIC1OFJongniKMddyXU7n0ponMDMdxa0VraxdiFOCYg8PL/TyWoSeQKDyV+LY7+2hQ6ItSyoJPqDOky2wT+cfuMjWScKsz6eMRzBBSxHaqeYXUrJ/z/SA39bBMBXSB8OPsL+q576mO7xnRkl6nUPz+5Lo6Xd31sUuAO3fciq+/MFWqSrongqPMxngRBqDTgaombrr8ZUQuOKgvXFdjRyeaSO1KY+qliotJHT7pYocpBXUoyeHDz2oteSjcQkIsBQUEqE0KNVkf2LJRrKBZkFQmDqzmSfEapmGOG4IdZBYbH3LPu24KuLafb4jWSUQAgW9qtzVrYEFRDJN6GF31wcWPP/FRzytsKnA9Cm1sLD5cPlW2epAYf3pytZchwt3EGgXQHhtjkOli+tcOnRljAa31V9WRE9gYRUkq1LP1YkdZoKOg2CUIW1nvfK5iE4tf/E+Fu3CtfeoNT/guWpM3jjho=')\"}]","icon":""},{"last_chapter_rule":"","title":"搜优图Ⓜ︎","author":"墨非白","version":4,"type":"other","url":"https://www.souutu.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet jscode = getVar(\"souutucode\");\neval(jscode);\ngetTitle();","searchFind":"js:\nlet res = {};\n    let d = [];\n    let rescode = getResCode();\n    d.push({\n        title:parseDomForHtml(rescode,\".f16&&Text\"),\n    });\n    let searchlist = parseDomForArray(rescode,\".work-list-box&&.card-box\");\n    for(let i=0;i<searchlist.length;i++){\n    d.push({\n        title:parseDomForHtml(searchlist[i],\".card-info-title&&Text\"),\n        pic_url:parseDomForHtml(searchlist[i],\"img&&lazysrc\")+\"@Referer=https://www.souutu.com/\",\n        desc:parseDomForHtml(searchlist[i],\".card-item&&Text\"),\n        url:parseDomForHtml(searchlist[i],\"a,0&&href\")\n    })\n    }\n    res.data= d;\n    setResult(res);","search_url":"https://www.souutu.com/c-0-1-0-**/fypage.html","titleColor":"#65887f","group":"①常用😼","detail_col_type":"movie_1","detail_find_rule":"js:\nlet jscode = getVar(\"souutucode\");\neval(jscode);\nif(MY_URL.indexOf(\"bizhi\")!=-1 || MY_URL.indexOf(\"mbizhi\")!=-1){\n  getPiclist();\n}else{\n  getPiclist1();\n}\n","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nlet jscode = getVar(\"souutucode\");\nlet evalcode = jscode.match(/rule\\([\\s\\S]*? setResult\\(res\\);/gm)[1].replace(\"rule(() => {\",\"\");\nwriteFile(\"hiker://files/aff.txt\",evalcode);\neval(evalcode);\n\n","ua":"pc","preRule":"let localfile = \"hiker://files/wallpapers/souutu.js\";\nlet souutu = fetch(localfile,{});\nif(!souutu){\n  souutu = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/images/souutu.js\",{});\n  writeFile(localfile,souutu);\n}\nputVar(\"souutucode\",souutu);","pages":"[]","icon":"#65887f"},{"last_chapter_rule":"","title":"趣炮屋影视","author":"","version":0,"type":"video","url":"hiker://empty##https://www.7pw.net/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nvar 排除=\"片库|全部\"\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src').replace(/http.*?url=/,'')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.7pw.net/index.php/vod/search/page/fypage/wd/**.html","group":"①影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":"https://www.7pw.net/template/mxone/mxstatic/image/logo_black.png"},{"last_chapter_rule":"","title":"期刊杂志demo","author":"Joker","version":6,"type":"read","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nlet now = getItem('now', '推荐期刊');\nif (MY_PAGE == 1) {\n    let arr = ['推荐期刊', '热门期刊', '直播', '收藏'];\n    for (let it of arr) {\n        d.push({\n            title: now == it ? '““””' + it.fontcolor('red') : it,\n            col_type: 'scroll_button',\n            url: $('#noLoading#').lazyRule((it) => {\n                setItem(\"now\", it);\n                refreshPage();\n                return 'hiker://empty';\n            }, it)\n        })\n    }\n    d.push({\n        title: '规则设置',\n        col_type: 'scroll_button',\n        url: 'hiker://page/setting'\n    });\n}\nif (now == '直播') {\n    eval(JSON.parse(fetch(\"hiker://page/getHeaders\")).rule);\n    let zb_list = JSON.parse(request(\"https://api.lifves.com/magazine/source\", {\n            headers: headers\n        })).data_list.live_source_list,\n        select_list = zb_list.select_list,\n        source_list = zb_list.source_list,\n        select_zb = getItem('select_zb', select_list[0].value);\n    if (MY_PAGE == 1) {\n        d.push({\n            col_type: \"blank_block\"\n        });\n        for (let obj of select_list) {\n            d.push({\n                title: obj.value == select_zb ? '““””' + obj.label.fontcolor('red') : obj.label,\n                url: $('#noLoading#').lazyRule((e) => {\n                    setItem('select_zb', e);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, obj.value),\n                col_type: \"scroll_button\"\n            });\n        }\n        for (let it of source_list[select_zb].list) {\n            d.push({\n                title: it.title,\n                url: $().lazyRule((tag) => {\n                    eval(JSON.parse(fetch(\"hiker://page/getHeaders\")).rule);\n                    let list = JSON.parse(request('http://api.lifves.com/video/getLiveSourceLink?tag=' + tag, {\n                            headers: headers\n                        })).data_list,\n                        urls = list.map(v => v.href);\n                    return JSON.stringify({\n                        urls: urls\n                    });\n                }, it.tag),\n                col_type: \"icon_4_card\",\n                desc: it.sub_title,\n                pic_url: it.img\n            });\n        }\n    }\n} else if (now == '推荐期刊' || now == '热门期刊') {\n    eval(JSON.parse(fetch(\"hiker://page/getHeaders\")).rule);\n    let category_id = now == \"推荐期刊\" ? 0 : 1,\n        qk_list = JSON.parse(request(\"https://api.lifves.com/magazine/more?category_id=\" + category_id + \"&page=\" + MY_PAGE, {\n            headers: headers\n        })).data_list;\n    for (let i in qk_list) {\n        let it = qk_list[i];\n        d.push({\n            title: it.title,\n            desc: it.qishu,\n            img: it.img,\n            col_type: 'movie_3',\n            url: 'hiker://page/catalogue#immersiveTheme#',\n            extra: {\n                href: 'https://api.lifves.com/magazine/book?mag_id=' + it.mag_id + '&qishu=' + it.qishu,\n            }\n        });\n    }\n} else if (now == '收藏') {\n    if (MY_PAGE == 1) {\n        let collection = JSON.parse(readFile('collection') || '{}');\n        for (let i in collection) {\n            let it = collection[i];\n            d.push({\n                title: i,\n                col_type: 'movie_3',\n                img: it.img,\n                url: 'hiker://page/history',\n                extra: {\n                    href: it.url,\n                    title: i,\n                    img: it.img\n                }\n            })\n        }\n    }\n}\nsetResult(d);","searchFind":"js:\nlet d = [];\neval(JSON.parse(fetch(\"hiker://page/getHeaders\")).rule);\nlet qk_list = JSON.parse(request(\"https://api.lifves.com/magazine/search?keyword=\" + MY_URL.split(\"##\")[1], {\n    headers: headers\n})).data_list;\nfor (let i in qk_list) {\n    let it = qk_list[i];\n    d.push({\n        title: it.title,\n        desc: it.qishu,\n        img: it.img,\n        col_type: 'movie_3',\n        url: 'hiker://page/catalogue#immersiveTheme#',\n        extra: {\n            href: 'https://api.lifves.com/magazine/book?mag_id=' + it.mag_id + '&qishu=' + it.qishu,\n        }\n    });\n}\nsetResult(d);","search_url":"hiker://empty##**","titleColor":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"目录\",\"path\":\"catalogue\",\"rule\":\"js:\\neval(JSON.parse(fetch(\\\"hiker://page/getHeaders\\\")).rule);\\nlet readTheme = getItem('readTheme', 'false') == 'true' ? '#readTheme#' : '',\\n    fullTheme = getItem('fullTheme', 'true') == 'true' ? '#fullTheme#' : '',\\n    url = MY_PARAMS.href,\\n    data_list = JSON.parse(request(url, {\\n        headers: headers\\n    })).data_list;\\n\\nlet d = [];\\nd.push({\\n    title: data_list.title + \\\"\\\\n\\\" + data_list.qishu,\\n    desc: \\\"““””\\\" + \\\"点我查看往期期刊\\\".bold().big(),\\n    img: data_list.img,\\n    col_type: 'movie_1_vertical_pic_blur',\\n    url: \\\"hiker://page/history\\\",\\n    extra: {\\n        href: \\\"https://api.lifves.com/magazine/history?mag_id=\\\" + data_list.mag_id,\\n        title: data_list.title,\\n        img: data_list.img\\n    }\\n})\\nd.push({\\n    title: '目录'.big().bold(),\\n    col_type: 'rich_text'\\n})\\n\\nlet stroge = {};\\nfor (let i in data_list.ml) {\\n    let list = data_list.ml[i].list;\\n    for (let j in list) {\\n        stroge[list[j].title] = \\\"https://api.lifves.com/magazine/read?read_id=\\\" + list[j].read_id;\\n    }\\n}\\nsaveFile('stroge', JSON.stringify(stroge));\\nlet star = Object.keys(stroge);\\n\\nfor (let i in data_list.ml) {\\n    let item = data_list.ml[i];\\n    d.push({\\n        title: '““””<strong>▶' + item.title + '</strong>',\\n        col_type: 'text_1',\\n        url: \\\"hiker://empty\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n\\n    item.list.forEach(e => {\\n        let index = star.indexOf(e.title);\\n        d.push({\\n            title: '““””&nbsp;&nbsp;&nbsp;&nbsp;•' + e.title,\\n            col_type: 'text_1',\\n            url: 'hiker://page/text' + fullTheme + readTheme,\\n            extra: {\\n                lineVisible: false,\\n                href: \\\"https://api.lifves.com/magazine/read?read_id=\\\" + e.read_id,\\n                index: index\\n            }\\n        })\\n    })\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"获取请求头\",\"path\":\"getHeaders\",\"rule\":\" function random_char(t) {\\n     for (var n = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'], i = '', e = 0; e < t; e++) {\\n         var o = Math.ceil(35 * Math.random())\\n         i += n[o]\\n     }\\n     return i\\n }\\n\\n function getSecretdate() {\\n     var t = parseInt((new Date()).getTime() / 1e3)\\n     var n = random_char(32)\\n     var i = 'timestamp=' + t + '&nonce=' + n\\n     return i\\n }\\n\\n\\n var secretdate = getSecretdate()\\n var secreted = md5(secretdate + 'apilifves5201314')\\n\\n var headers = {\\n     'Secret-Date': secretdate,\\n     'Secreted': secreted,\\n     \\\"Content-Type\\\": \\\"application/json;charset=utf-8\\\"\\n }\"},{\"col_type\":\"movie_3\",\"name\":\"往期期刊\",\"path\":\"history\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"year\\\")');\\neval(JSON.parse(fetch(\\\"hiker://page/getHeaders\\\")).rule);\\nlet d = [],\\n    {\\n        href: url,\\n        title: name,\\n        img\\n    } = MY_PARAMS,\\n    collection = JSON.parse(readFile('collection') || '{}'),\\n    isCollected = !!(collection[name] && collection[name].url == url),\\n    data_list = JSON.parse(request(url, {\\n        headers: headers\\n    })).data_list;\\nsetPageTitle(name);\\nsetLastChapterRule('js:' + $.toString(() => {\\n    eval(JSON.parse(fetch(\\\"hiker://page/getHeaders\\\")).rule);\\n    let url = MY_PARAMS.href,\\n        data_list = JSON.parse(request(url, {\\n            headers: headers\\n        })).data_list,\\n        data = data_list[0].data[0].qishu;\\n    setResult('最新：' + data);\\n}));\\nd.push({\\n    title: isCollected ? '♥已收藏' : '♡添加收藏',\\n    url: $().lazyRule((is, url, name, img) => {\\n        let collection = JSON.parse(readFile('collection') || '{}');\\n        if (is) {\\n            delete collection[name];\\n            saveFile('collection', JSON.stringify(collection));\\n            refreshPage();\\n            return 'toast://已取消收藏'\\n        } else {\\n            collection[name] = {\\n                url: url,\\n                img: img\\n            };\\n            saveFile('collection', JSON.stringify(collection));\\n            refreshPage();\\n            return 'toast://已添加收藏'\\n        }\\n    }, isCollected, url, name, img),\\n    col_type: \\\"scroll_button\\\",\\n});\\n\\nlet data = {},\\n    now = getVar('year', String(data_list[0].year));\\nfor (let list of data_list) {\\n    if (now == list.year) data = list.data;\\n    d.push({\\n        title: '““””' + (list.year == now ? '<font color=red>' + list.year + '</font>' : list.year),\\n        col_type: 'scroll_button',\\n        url: $().lazyRule((year) => {\\n            putVar('year', String(year));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, list.year)\\n    });\\n}\\nfor (let item of data) {\\n    d.push({\\n        title: item.qishu,\\n        url: 'hiker://page/catalogue#immersiveTheme#',\\n        img: item.img,\\n        extra: {\\n            href: \\\"https://api.lifves.com/magazine/book?mag_id=\\\" + item.mag_id + \\\"&qishu=\\\" + item.qishu\\n        }\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"文章\",\"path\":\"text\",\"rule\":\"js:\\naddListener('onClose', $.toString(() => {\\n    clearVar('texthref');\\n    clearVar('texttitle');\\n    clearVar('textindex');\\n}));\\nlet click = getItem('click', 'true'),\\n    fontsize = parseInt(getItem('fontsize', String(17))),\\n    indent = parseInt(getItem('indent', String(7))),\\n    indents = '';\\nfor (let i = 0; i < indent; i++) {\\n    indents += '&nbsp;';\\n}\\nlet stroge = JSON.parse(readFile('stroge')),\\n    star = Object.keys(stroge);\\n\\neval(JSON.parse(fetch(\\\"hiker://page/getHeaders\\\")).rule);\\nlet index = parseInt(getVar('textindex') || MY_PARAMS.index),\\n    href = getVar('texthref', '') || MY_PARAMS.href,\\n    data_list = JSON.parse(request(href, {\\n        headers: headers\\n    })).data_list;\\n\\nlet d = [];\\nd.push({\\n    title: '““””<h2>' + data_list.title + '</h2>',\\n    col_type: 'text_center_1',\\n    url: \\\"http://qk.demo.lifves.com/book/read/\\\" + data_list.mag_id + \\\"/\\\" + data_list.qishu + \\\"/\\\" + data_list.read_id,\\n    extra: {\\n        lineVisible: false\\n    }\\n}, {\\n    title: data_list.content.replace(/\\\\>[a-zA-Z0-9+=\\\\-\\\\/]*\\\\</g, '><').replace(/(\\\\<p\\\\>\\\\s*)+\\\\</g,'<').replace(/\\\\<p\\\\>/g, '<p>' + indents),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: fontsize,\\n        click: click\\n    }\\n})\\nif (index != 0) {\\n    let title = star[index - 1];\\n    let href = stroge[title];\\n    d.push({\\n        title: '上一篇:' + title,\\n        col_type: 'text_center_1',\\n        url: $('hiker://empty#noLoading#').lazyRule((href, title, index) => {\\n            putVar('texthref', href);\\n            putVar('texttitle', title);\\n            putVar('textindex', String(index - 1));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, href, title, index),\\n        extra: {\\n            href: href,\\n            lineVisible: false\\n        }\\n    })\\n}\\nif (index != star.index) {\\n    let title = star[index + 1];\\n    let href = stroge[title];\\n    d.push({\\n        title: '下一篇:' + title,\\n        col_type: 'text_center_1',\\n        url: $('hiker://empty#noLoading#').lazyRule((href, title, index) => {\\n            putVar('texthref', href);\\n            putVar('texttitle', title);\\n            putVar('textindex', String(index + 1));\\n            refreshPage();\\n            return 'hiker://empty'\\n        }, href, title, index),\\n        extra: {\\n            href: href,\\n            lineVisible: false\\n        }\\n    })\\n}\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: 'blank_block'\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"设置页\",\"path\":\"setting\",\"rule\":\"js:\\nlet d = [];\\nlet fontsize = parseInt(getItem('fontsize', String(17)));\\nlet indent = parseInt(getItem('indent', String(7)));\\nlet indents = '';\\nfor (let i = 0; i < indent; i++) {\\n    indents += '&nbsp;';\\n}\\nlet readTheme = getItem('readTheme','false');\\nlet fullTheme = getItem('fullTheme', 'true');\\nlet click = getItem('click', 'true');\\n\\nd.push({\\n    title: '阅读模式' + (readTheme == 'true' ? '✔' : '✘'),\\n    col_type: 'text_3',\\n    url: readTheme == 'true' ? $('hiker://empty#noLoading#').lazyRule(() => {\\n        setItem('readTheme', 'false');\\n        refreshPage();\\n        return 'hiker://empty';\\n    }) :$('注意：开启阅读模式后,全屏模式设置和字号设置将不起作用！').confirm(() => {\\n        setItem('readTheme', 'true');\\n        refreshPage();\\n        return 'hiker://empty';\\n    })\\n})\\nd.push({\\n    title: '全屏模式' + (fullTheme == 'true' ? '✔' : '✘'),\\n    col_type: 'text_3',\\n    url: $('hiker://empty#noLoading#').lazyRule((i) => {\\n        setItem('fullTheme', i == 'true' ? 'false' : 'true');\\n        refreshPage();\\n        return 'hiker://empty';\\n    }, fullTheme)\\n})\\nd.push({\\n    title: '点击翻页' + (click == 'true' ? '✔' : '✘'),\\n    col_type: 'text_3',\\n    url: $('hiker://empty#noLoading#').lazyRule((i) => {\\n        setItem('click', i == 'true' ? 'false' : 'true');\\n        refreshPage();\\n        return 'hiker://empty';\\n    }, click)\\n})\\n\\nd.push({\\n    title: '调整字号'.big().bold(),\\n    col_type: 'rich_text'\\n})\\nd.push({\\n    title: '字号➕',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('fontsize', String(s + 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, fontsize)\\n}, {\\n    title: '字号➖',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('fontsize', String(s - 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, fontsize)\\n})\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title: '调整缩进'.big().bold(),\\n    col_type: 'rich_text'\\n})\\nd.push({\\n    title: '缩进➕',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('indent', String(s + 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, indent)\\n}, {\\n    title: '缩进➖',\\n    col_type: 'flex_button',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule((s) => {\\n        setItem('indent', String(s - 1));\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, indent)\\n})\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title: '预览'.big() + '(字号:' + fontsize + ',缩进:' + indent + ')',\\n    col_type: 'rich_text'\\n}, {\\n    title: '<p>小棉袄帅吗?</p><p>小棉袄怎么这么帅？</p><p>小棉袄真是超超超超超超超超级帅!!!!帅炸了好不好？举世颜无双!!!!</p>'.replace(/\\\\<p\\\\>/g, '<p>' + indents),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: fontsize\\n    }\\n})\\nsetResult(d);\"}]","proxy":"","icon":"http://qk.demo.lifves.com/favicon.ico"},{"last_chapter_rule":"","title":"故事会","author":"","version":6,"type":"other","url":"http://new-qk.lifves.com/list.php?url=M0QzJWV1c3NpNjIlMTIwMkQzJXJhZXk2MiUyODVlNjY5YmEyMzktOWQ3Yi04NWY0LWUyNjItNzFjM2NkODBEMyVkaUYzJWxpYXRlZEYyJWFnYW1GMiVjcEYyJW1vYy5uYWtpcS5zcGQuZ3N0eGRuakYyJUYyJUEzJXB0dGg=","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\"));\nlet data = [];\nfor (let i = 0; i < data_list.data_list.length; i++) {\n    let l = data_list.data_list[i];\n    for (let j = 0; j < l.list.length; j++) {\n        let item = l.list[j];\n        data.push({\n            title: item.span,\n            url: \"http://new-qk.lifves.com/intro.php?url=\" + item.link,\n            pic_url: item.img\n        });\n    }\n}\nsetResult(data);","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"text_1","detail_find_rule":"js:\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\").split(\"localStorage\")[0]);\nlet data = [];\nfor (let i = 0; i < page_list.length; i++) {\n    let item = page_list[i];\n    data.push({\n        title: item.title,\n        extra: {\n            u: \"http://new-qk.lifves.com/\" + item.href,\n            title: item.title\n        },\n        url: \"hiker://page/content\",\n    });\n}\nsetResult(data);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"js:\\nsetResult([{\\n    title: MY_PARAMS.title,\\n    url: MY_PARAMS.u,\\n    desc: \\\"100%&&float\\\",\\n    col_type: \\\"x5_webview_single\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            (function() {\\n                if (window.location.href.indexOf(\\\"/content.php?url=\\\") < 0) {\\n                    return\\n                }\\n                var nodes = document.getElementsByTagName(\\\"p\\\");\\n                for (let i = 0; i < nodes.length; i++) {\\n                    nodes[i].style.fontSize = '17px';\\n                    nodes[i].style.lineHeight = '200%';\\n                    nodes[i].style.marginBottom = '25px';\\n                    nodes[i].style.transition = 'all .5s';\\n                }\\n\\n                nodes = document.getElementsByClassName(\\\"el-card__body\\\");\\n                for (let i = 0; i < nodes.length; i++) {\\n                    nodes[i].style.padding = '10px';\\n                    nodes[i].style.transition = 'all .5s';\\n                }\\n                nodes = document.getElementsByClassName(\\\"el-main\\\");\\n                for (let i = 0; i < nodes.length; i++) {\\n                    nodes[i].style.padding = '10px';\\n                    nodes[i].style.transition = 'all .5s';\\n                }\\n\\n            })();\\n        })\\n    }\\n}])\"}]","proxy":"","icon":"https://www.lifves.com/favicon.ico"},{"last_chapter_rule":"","title":"香哈菜谱","author":"帅√`人才","version":0,"type":"other","url":"https://www.xiangha.com/caipu/sp-fyAll/hot-fypage/","col_type":"movie_1_vertical_pic","class_name":"家常&川菜&湘菜&粤菜&鲁菜&京菜","class_url":"jiachangcai&chuancai&xiangcai&yuecai&lucai&jingcai","area_name":"烘焙&创意&肉类&素类&凉菜&鱼类","area_url":"hongbeilei&chuangyi&roulei&sucai&liangcai&yulei","sort_name":"","year_name":"西餐&美容&女生&海鲜&靓汤","sort_url":"","year_url":"xican&meirongyangyancai&nvshencai&haixian&liangtang","find_rule":"js:\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.s_list&&li');\n\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a,0&&title'),\n        desc: parseDomForHtml(list[j], '.info,0&&Text'),\n        pic_url: parseDom(list[j], 'img&&src'),\n        url: parseDom(list[j], 'a,0&&href')+`@lazyRule=.js:var html=request(input,{});var url=parseDomForHtml(html, 'body&&source&&src');url`\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\n//var list = parseDomForArray(getResCode(), 'body&&.s_list&&li');\n//log(list)\nvar list = parseDomForArray(getResCode(), '.search-con-block&&ul&&li');\nfor (var j in list) {\n  if(list[j].indexOf('videoIcon')>-1){\n\t/*d.push({\n        title: parseDomForHtml(list[j], 'a,0&&title'),\n        desc: parseDomForHtml(list[j], '.info,0&&Text'),\n        pic_url: parseDom(list[j], 'img&&src'),\n        url: parseDom(list[j], 'a,0&&href')+`@lazyRule=.js:var html=request(input,{});var url=parseDomForHtml(html, 'body&&source&&src');url`\n    });\n\t*/\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.dishItem-stat&&span,1&&Text'),\n        content: parseDomForHtml(list[j], '.dishItem-stat&&span,0&&Text'),\n        pic_url: parseDom(list[j], 'img&&data-echo'),\n        url: parseDom(list[j], 'a&&href')+`@lazyRule=.js:var html=request(input,{});var url=parseDomForHtml(html, 'body&&source&&src');url`\n    });\n\t\n  }\n}\nsetResult(d);","search_url":"https://m.xiangha.com/so?s=**&t=caipu","titleColor":"#fff20c00","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://b.bdstatic.com/searchbox/mappconsole/image/20190111/6f1a73c7-71ec-4b01-a3c2-e2cdfa2c43e7.png"},{"title":"美食天下·DL","author":"淡了过往","version":0,"url":"https://home.meishichina.com/recipe/fyAll/page/fypage/","col_type":"movie_1","class_name":"热菜&凉菜&汤羹&主食&小吃&西餐&烘焙&饮品&零食&泡酱腌菜&自制食材&","class_url":"recai&liangcai&tanggeng&zhushi&xiaochi&xican&hongbei&yinpin&lingshi&jiangpaoyancai&zizhishicai&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.ui_newlist_1&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h2&&Text'),\n       desc: parseDomForHtml(list[j], 'p,1&&Text'),\r\n       pic_url: parseDom(list[j], '.pic&&img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '#search_res_list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\n       desc: parseDomForHtml(list[j], '.substatus&&Text'),\n       content: parseDomForHtml(list[j], '.subcontent&&Text'),\n       pic_url: parseDom(list[j], '.pic&&img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://home.meishichina.com/search/**/page/fypage/","titleColor":"#000000","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":""},{"last_chapter_rule":"","title":"游戏集𝔥","author":"小棉袄🌞&小🔥星&鬼四&爱是用心&Joker&Hood","version":5,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\nd.push({\n    title: \"更新数据\",\n    pic_url: \"https://lanmeiguojiang.com/tubiao/movie/38.svg\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        confirm({\n            title: \" 确认更新数据？\",\n            content: \"这会覆盖本地文件\",\n            confirm: `eval(JSON.parse(fetch('hiker://page/update')).rule);refreshPage();'toast://数据已更新'`,\n            cancel: ''\n        });\n        return 'hiker://empty'\n    }),\n    col_type: 'avatar'\n});\n\n//列表\neval(fetch(\"hiker://files/rules/Hood/yxj.json\"));\n\nfor(var i in list){\n    let picurl = list[i].split(\",\")[2];\n    if(!picurl) picurl = \"https://lanmeiguojiang.com/tubiao/ke/58.png\";\n    d.push({\n        title: list[i].split(\",\")[0],\n        pic_url: picurl + \"@Referer=\",\n        url: list[i].split(\",\")[1] + \"#gameTheme#\"\n    });\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"js:\nsetResult([{\n    col_type: 'x5_webview_single',\n    url: MY_URL,\n    desc: \"auto&&float\",\n    extra: {\n        canBack: true\n    }\n}])","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//自动更新？1启用, 0关闭\nvar update = 0;\n\n//更新间隔, 单位为天\nvar uptime = 3;\n\nvar local = \"hiker://files/rules/Hood/yxj.json\";\nvar date_txt = \"hiker://files/cache/update/yxj.txt\";\n\n//计算时间间隔\nvar start = new Date(fetch(date_txt)); \nvar now = new Date(); \nvar D_T = now.getTime() - start.getTime(); \nvar D_D = D_T / (1000 * 3600 * 24);\nvar mytime=parseInt(D_D)+'';\n\nif(!fetch(date_txt) || !fetch(local) || (update==1&&mytime>=uptime)){\n    try{\n        var cloud = base64Decode(fetch(\"https://ghproxy.com/https://raw.githubusercontent.com/xixifree/Hiker/main/yxj.json\",{}));\n        if(cloud.includes(\"合集\")){\n            writeFile(local,cloud);\n            writeFile(date_txt,new Date()+'');\n        }\n    }catch(e){}\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"更新数据\",\"path\":\"update\",\"rule\":\"var cloud = base64Decode(fetchCache(\\\"https://ghproxy.com/https://raw.githubusercontent.com/xixifree/Hiker/main/yxj.json\\\",24));\\nif(cloud.includes(\\\"合集\\\")){\\n    writeFile(\\\"hiker://files/rules/Hood/yxj.json\\\",cloud);\\n    writeFile(\\\"hiker://files/cache/update/yxj.txt\\\",new Date()+'');\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/58.png"},{"title":"下厨房R","author":"1606142&Reborn","version":12,"url":"https://www.xiachufang.com/fyAll?page=fypage;get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_1","class_name":"本周最受欢迎&新秀菜谱&往期头条&厨房101&月度最佳&最新创建&流行菜单","class_url":"explore&explore/rising&explore/head&explore/honor&explore/monthhonor&explore/created&explore/menu/pop","area_name":"家常菜&快手菜&下饭菜&早餐&汤羹&烘培&小吃","area_url":"category/40076&category/40077&category/40078&category/40071&category/20130&category/51761&category/40073","sort_name":"甜品饮品&甜品&糖水&果汁&下午茶&深夜食堂&宵夜&零食&三明治&炸牛奶&炸鲜奶","year_name":"糖醋&粥&面条&鸡蛋&虾&鳕鱼&电饭煲&高压锅&懒人食谱&视频菜谱","sort_url":"category/52381/&category/20135/&category/50680/&category/51823/&category/40072/&category/52107/&category/51865/&category/40074/&category/20157/&category/1025798/&category/1000044/","year_url":"category/40066/&category/20131/&category/1025/&category/394/&category/469/&category/1072/&category/51313/&category/52376/&category/1012722/&category/52428/","find_rule":".pure-u-3-4&&li;img&&alt;img&&data-src;.stats||.stat||.time&&Text;a&&href.js: (input.indexOf('recipe_list') > -1 ? (input + '?page=fypage') : input) + '#noHistory#'","searchFind":".search-result-list&&ul&&li;.name&&Text;a&&href.js: 'https://www.xiachufang.com' + input + '#noHistory#';.stats&&Text;.ing&&Text;.cover&&img&&data-src.js: input.replace('w/215/h/136', 'w/430/h/272')","search_url":"https://www.xiachufang.com/search/?keyword=**&page=fypage;get;utf-8;{User-Agent@Mozilla 5.0}","titleColor":"#fff20c00","group":"①推荐","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar urlSplits = MY_URL.split('?page=');\nvar page = 1;\ntry {\n    let pageTemp = parseInt(urlSplits[1]);\n    page = isNaN(pageTemp) === true ? page : pageTemp;\n} catch (e) { }\n\n/**\n * 个人配置已移到预处理，请前往预处理进行配置\n */\n\n/**\n * 是否开启伪异步加载模式 1/开启 0/不开启\n *\n * 注意：二级会卡可以尝试开启该选项，但可能导致某些图片不显示\n */\nlet valueInMap = getVar('xiachu_multiStepModel');\nlet multiStepModel = 0;\nvalueInMap = parseInt(valueInMap);\nmultiStepModel = isNaN(valueInMap) === true ? multiStepModel : valueInMap;\n// 是否隐藏图片(省流模式) 1/隐藏 0/不隐藏\nlet hideImg = 0;\nvalueInMap = getVar('xiachu_hideImg');\nvalueInMap = parseInt(valueInMap);\nhideImg = isNaN(valueInMap) === true ? hideImg : valueInMap;\n// 图片质量，默认 300，推荐 600 或 800\nlet imgWidth = 600;\nvalueInMap = getVar('xiachu_imgWidth');\nvalueInMap = parseInt(valueInMap);\nimgWidth = isNaN(valueInMap) === true ? imgWidth : valueInMap;\n// 是否显示看大图(防止无法加载图片) 1/显示 0/不显示\nlet showFullImgTips = 1;\nvalueInMap = getVar('xiachu_showFullImgTips');\nvalueInMap = parseInt(valueInMap);\nshowFullImgTips = isNaN(valueInMap) === true ? showFullImgTips : valueInMap;\n// 用户颜色\nlet userColor = \"#2979FF\";\nvalueInMap = getVar('xiachu_userColor');\nuserColor = valueInMap === '' ? userColor : valueInMap;\n// 是否显示菜的描述 1/显示 0/不显示\nlet showDesc = 1;\nvalueInMap = getVar('xiachu_showDesc');\nvalueInMap = parseInt(valueInMap);\nshowDesc = isNaN(valueInMap) === true ? showDesc : valueInMap;\n// 用料模块显示方式 1/完整视图 0/缩略模式\nlet ingsMode = 0;\nvalueInMap = getVar('xiachu_ingsMode');\nvalueInMap = parseInt(valueInMap);\ningsMode = isNaN(valueInMap) === true ? ingsMode : valueInMap;\n// 用料名颜色\nlet ingNameColor = \"#46c200\";\nvalueInMap = getVar('xiachu_ingNameColor');\ningNameColor = valueInMap === '' ? ingNameColor : valueInMap;\n// 用料量颜色\nlet ingUnitColor = \"#706a6b\";\nvalueInMap = getVar('xiachu_ingUnitColor');\ningUnitColor = valueInMap === '' ? ingUnitColor : valueInMap;\n// 小贴士颜色\nlet tipsColor = \"#706a6b\";\nvalueInMap = getVar('xiachu_tipsColor');\ntipsColor = valueInMap === '' ? tipsColor : valueInMap;\n// 模块之间的间隔\nlet model_line_height = 1;\nvalueInMap = getVar('xiachu_model_line_height');\nvalueInMap = parseInt(valueInMap);\nmodel_line_height = isNaN(valueInMap) === true ? model_line_height : valueInMap;\n// 正文提示\nlet contentTips = '下厨房的时候一定要注意安全哦～' + '<br>';\nvalueInMap = getVar('xiachu_contentTips');\ncontentTips = valueInMap === '' ? contentTips : valueInMap;\n\nfunction getBigText(text) {\n    return '<big>' + text + '</big>';\n}\nfunction getSmallText(text) {\n    return '<small>' + text + '</small>';\n}\nfunction getStrongText(text) {\n    return '<strong>' + text + '</strong>';\n}\nfunction getTitleText(text) {\n    return getStrongText(text);\n}\nfunction getColorText(text, color) {\n    return '<font color=\"' + color + '\">' + text + '</font>';\n}\nfunction getGreyText(text) {\n    return getColorText(text, 'grey');\n}\nfunction getAuthorText(text) {\n    return getColorText(text, userColor);\n}\nfunction getCodeText(text) {\n    return '<code>' + text + '</code>';\n}\nfunction getBlockquoteText(text) {\n    return '<blockquote>' + text + '</blockquote>'\n}\nfunction getAddressTag(url, text) {\n    return '<a href=\"' + url + '\">' + text + '</a>'\n}\nfunction getCommentMeta(html) {\n    return getSmallText(html);\n}\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\n    let returnValue = this;\n    if (callback != null) {\n        returnValue = callback(this, searchValue, replaceValue);\n    }\n    return returnValue;\n};\n\nlet imgError = '<font color=\"grey\">图片暂时无法显示，若要查看请<a href=\"' + MY_URL + '\">访问原文</a></font>';\nfunction imgTag(context, sourceTag, imgUrl) {\n    if(/(w\\/(\\d+)\\/interlace)/.test(imgUrl) === true) {\n        sourceTag = sourceTag.replace(RegExp.$1, 'w/' + imgWidth + '/interlace');\n    }\n    let replaceString = sourceTag;\n    let replaceString1 = imgUrl === ''\n        ? imgError\n        : ('<a href=\"' + imgUrl + '\">'\n            + (hideImg === 1 ? '[点击查看大图]' : '图片无法加载？点我试试~')\n            + '</a>');\n    if(showFullImgTips) {\n        replaceString += ('<br>' + getSmallText(replaceString1));\n    }\n    if (hideImg) {\n        replaceString = replaceString1;\n    }\n    return context.replace(/<img data-v>/g, replaceString);\n}\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\n    let matchArray = context.match(searchValue);\n    let returnValue = context;\n    if (matchArray != null) {\n        for (let i = 0; i < matchArray.length; i++) {\n            let item = matchArray[i];\n            /(<img (src|data-src)=\"(.*?)\"([\\s\\S]*?)>)/.test(item);\n            let imgUrl = RegExp.$3;\n            if (imgUrl !== '') {\n                returnValue = returnValue.replace(item, replaceValue);\n                returnValue = imgTag(returnValue, RegExp.$1,imgUrl);\n            }\n        }\n    }\n    return returnValue;\n}\n\ntry {\n    let mainHtml = parseDomForHtml(html, '.main-panel&&Html');\n    if (MY_URL.indexOf('recipe_list') > -1) {\n        let rule = '@rule=js:' + `var res={},d=[],html=getResCode(),urlSplits=MY_URL.split(\"?page=\"),page=1;try{let e=parseInt(urlSplits[1]);page=!0===isNaN(e)?page:e}catch(e){}let valueInMap=getVar(\"xiachu_multiStepModel\"),multiStepModel=0;valueInMap=parseInt(valueInMap),multiStepModel=!0===isNaN(valueInMap)?multiStepModel:valueInMap;let hideImg=0;valueInMap=getVar(\"xiachu_hideImg\"),valueInMap=parseInt(valueInMap),hideImg=!0===isNaN(valueInMap)?hideImg:valueInMap;let imgWidth=600;valueInMap=getVar(\"xiachu_imgWidth\"),valueInMap=parseInt(valueInMap),imgWidth=!0===isNaN(valueInMap)?imgWidth:valueInMap;let showFullImgTips=1;valueInMap=getVar(\"xiachu_showFullImgTips\"),valueInMap=parseInt(valueInMap),showFullImgTips=!0===isNaN(valueInMap)?showFullImgTips:valueInMap;let userColor=\"#2979FF\";valueInMap=getVar(\"xiachu_userColor\"),userColor=\"\"===valueInMap?userColor:valueInMap;let showDesc=1;valueInMap=getVar(\"xiachu_showDesc\"),valueInMap=parseInt(valueInMap),showDesc=!0===isNaN(valueInMap)?showDesc:valueInMap;let ingsMode=0;valueInMap=getVar(\"xiachu_ingsMode\"),valueInMap=parseInt(valueInMap),ingsMode=!0===isNaN(valueInMap)?ingsMode:valueInMap;let ingNameColor=\"#46c200\";ingNameColor=\"\"===(valueInMap=getVar(\"xiachu_ingNameColor\"))?ingNameColor:valueInMap;let ingUnitColor=\"#706a6b\";ingUnitColor=\"\"===(valueInMap=getVar(\"xiachu_ingUnitColor\"))?ingUnitColor:valueInMap;let tipsColor=\"#706a6b\";tipsColor=\"\"===(valueInMap=getVar(\"xiachu_tipsColor\"))?tipsColor:valueInMap;let model_line_height=1;valueInMap=getVar(\"xiachu_model_line_height\"),valueInMap=parseInt(valueInMap),model_line_height=!0===isNaN(valueInMap)?model_line_height:valueInMap;let contentTips=\"下厨房的时候一定要注意安全哦～\"+\"<br>\";function getBigText(e){return\"<big>\"+e+\"</big>\"}function getSmallText(e){return\"<small>\"+e+\"</small>\"}function getStrongText(e){return\"<strong>\"+e+\"</strong>\"}function getTitleText(e){return getStrongText(e)}function getColorText(e,t){return'<font color=\"'+t+'\">'+e+\"</font>\"}function getGreyText(e){return getColorText(e,\"grey\")}function getAuthorText(e){return getColorText(e,userColor)}function getCodeText(e){return\"<code>\"+e+\"</code>\"}function getBlockquoteText(e){return\"<blockquote>\"+e+\"</blockquote>\"}function getAddressTag(e,t){return'<a href=\"'+e+'\">'+t+\"</a>\"}function getCommentMeta(e){return getSmallText(e)}contentTips=\"\"===(valueInMap=getVar(\"xiachu_contentTips\"))?contentTips:valueInMap,String.prototype.replaceWithCallback=function(e,t,l){let a=this;return null!=l&&(a=l(this,e,t)),a};let imgError='<font color=\"grey\">图片暂时无法显示，若要查看请<a href=\"'+MY_URL+'\">访问原文</a></font>';function imgTag(e,t,l){!0===/(w\\\\/(\\\\d+)\\\\/interlace)/.test(l)&&(t=t.replace(RegExp.$1,\"w/\"+imgWidth+\"/interlace\"));let a=t,r=\"\"===l?imgError:'<a href=\"'+l+'\">'+(1===hideImg?\"[点击查看大图]\":\"图片无法加载？点我试试~\")+\"</a>\";return showFullImgTips&&(a+=\"<br>\"+getSmallText(r)),hideImg&&(a=r),e.replace(/<img data-v>/g,a)}function imgTagReplacement2(e,t,l){let a=e.match(t),r=e;if(null!=a)for(let e=0;e<a.length;e++){let t=a[e];/(<img (src|data-src)=\"(.*?)\"([\\\\s\\\\S]*?)>)/.test(t);let o=RegExp.$3;\"\"!==o&&(r=imgTag(r=r.replace(t,l),RegExp.$1,o))}return r}try{let e=parseDomForHtml(html,\".main-panel&&Html\");try{let t=getBigText(getStrongText(parseDomForHtml(e,\"h1&&Text\")))+\" \"+getSmallText(getAddressTag(MY_URL,\"[查看原文]\")),l=\"\";try{let e=parseDomForHtml(html,\".recipe-tags&&Html\"),t=parseDomForArray(e,\".recipe-cats&&a\");for(let e=0;e<t.length;e++){let a=t[e];l+=getCodeText(parseDomForHtml(a,\"Text\"))}}catch(e){}l=\"\"===l?\"<br>\"+getCodeText(\"暂无分类\"):\"<br>\"+l,d.push({title:t+l}),d.push({col_type:\"line\"})}catch(e){}try{let t=getAuthorText(\"作者：\"+parseDomForHtml(e,\".author&&Text\")),l=\"\";try{l=\"<br>\"+parseDomForHtml(e,\".desc&&Html\")}catch(e){}let a=\"\";try{let e=parseDomForHtml(html,\".recipe-show&&Html\"),t=parseDomForHtml(e,\"iframe&&src\"),l=fetch(t,{});a=getAddressTag(parseDomForHtml(l,\"video&&src\"),\"本帖含视频，点我查看～\")}catch(e){}let r=\"\";try{let t=parseDomForHtml(e,\".ings&&Html\"),l=parseDomForArray(t,\"table&&tr\");for(let e=0;e<l.length;e++){let t=l[e];/<td class=\"name\">([\\\\s\\\\S]*?)<\\\\/td>/.test(t);let a=RegExp.$1;if(\"\"!==a){a=getColorText(parseDomForHtml(a,\"Text\"),ingNameColor),/<td class=\"unit\">([\\\\s\\\\S]*?)<\\\\/td>/.test(t);let o=RegExp.$1,n=a+\" \"+(o=getColorText(o===a?\"未知\":o,ingUnitColor));r+=n=e===l.length-1?n:n+(1===ingsMode?\"<br>\":\"、\")}}r=getBigText(getTitleText(\"用料\"))+\"<br>\"+r}catch(e){}if(l=1===showDesc?l:\"\",model_line_height>0){d.push({title:getBlockquoteText(t+l)+(\"\"===a?getGreyText(contentTips):a+\"<br>\")});for(let e=0;e<model_line_height;e++)d.push({col_type:\"line_blank\"});d.push({title:r});for(let e=0;e<model_line_height;e++)d.push({col_type:\"line_blank\"})}else d.push({title:getBlockquoteText(t+l)+(\"\"===a?\"\":a+\"<br><br>\")+r})}catch(e){}try{let t=getBigText(getTitleText(\"\"+parseDomForHtml(e,\"#steps&&Text\"))),l=parseDomForArray(e,\".steps&&.container\");multiStepModel&&model_line_height>0&&d.push({title:t});let a=\"\";for(let e=0;e<l.length;e++){let t=parseDomForHtml(l[e],\".container&&Html\");t=getStrongText(\"步骤\"+(e+1)+\"<br>\")+t.replace(/<\\\\/p> <img src=/g,\"<br><img src=\").replaceWithCallback(/(<img (src|data-src)=\"(.*?)\"([\\\\s\\\\S]*?)>)/g,\"<img data-v>\",imgTagReplacement2).replace(/(<p class=\"text\" style=\".*?\">)|(<\\\\/p>)/,\"\"),multiStepModel&&model_line_height>0?d.push({title:t}):a+=\"<br><br>\"+t}multiStepModel&&model_line_height>0||d.push({title:t+a});for(let e=0;e<model_line_height;e++)d.push({col_type:\"line_blank\"});let r=\"\";try{let t=parseDomForHtml(e,\".tip-container&&Html\"),l=getBigText(getTitleText(parseDomForHtml(t,\"h2&&Text\")));tipsContent=\"<br>\"+parseDomForHtml(t,\".tip&&Html\"),r=getColorText(l+tipsContent,tipsColor),d.push({title:r});for(let e=0;e<model_line_height;e++)d.push({col_type:\"line_blank\"})}catch(e){}}catch(e){}try{let e=parseDomForHtml(html,\".recipe-stats&&Html\"),t=getSmallText(getGreyText(parseDomForHtml(e,\".time&&Text\")+\"<br>\"+parseDomForHtml(e,\".pv&&Text\")+\"<br>\"+parseDomForHtml(e,\".copyright&&Text\")));d.push({title:t})}catch(e){}try{let e=parseDomForHtml(html,\".page-bottom-outer&&.page-container&&Html\"),t=getBigText(getTitleText(parseDomForHtml(e,\"h2&&Text\"))),l=parseDomForArray(e,\".question-list&&.recipe-quesions-content\");l.length>0&&(d.push({col_type:\"line_blank\"}),d.push({title:t}));let a=\"\";for(let e=0;e<l.length;e++){let t=parseDomForArray(l[e],\"li&&.avatar-right-2\");for(let e=0;e<t.length;e++){let l=\"\",r=\"\";if(t[e].indexOf(\"赞\")>-1){let a=getAuthorText(parseDomForHtml(t[e],\".info&&a&&Text\")),r=\"\";!0===/(<span class=\"normal-font gray-font align-baseline\">[\\\\s\\\\S]*?<\\\\/span>)/.test(t[e])&&(r=getGreyText(RegExp.$1));let o=getCommentMeta(\"<br>\"+a+r);l=parseDomForHtml(t[e],\".right-bottom&&Html\")+o}if(t[e].indexOf(\"作者回复\")>-1)try{let l=getAuthorText(\"作者回复\"),a=\"\";!0===/(<span class=\"normal-font gray-font align-baseline\">[\\\\s\\\\S]*?<\\\\/span>)/.test(t[e])&&(a=getGreyText(RegExp.$1));let o=getCommentMeta(\"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\"+l+a);r=\"<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>\"+parseDomForHtml(t[e],\".right-bottom&&Html\")+o}catch(e){}a=l+r,d.push({title:a.replace(/<div class=\"recipe-questions-digg\">/g,\"\")})}d.push({col_type:\"line\"})}}catch(e){}}catch(e){}res.data=d,setHomeResult(res);`;\n        if(page === 1) {\n            /**\n             * header\n             */\n            try {\n                let headerTitle = getBigText(getStrongText(parseDomForHtml(mainHtml, 'h1&&Text')))\n                    + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文]'));\n                let headerHtml = parseDomForHtml(mainHtml, '.rl-summary&&Html');\n                let collectionCount = '<br>' + getSmallText(parseDomForHtml(headerHtml, '.stats&&Text'));\n                let time = ' ' + getSmallText(getGreyText(parseDomForHtml(headerHtml, '.time&&Text')));\n                d.push({\n                    title: headerTitle + collectionCount + time\n                });\n                d.push({\n                    col_type: 'line'\n                });\n                let author = getAuthorText(parseDomForHtml(headerHtml, '.avatar-link&&Text'));\n                let desc = '<br>' + parseDomForHtml(headerHtml, '.desc&&Text');\n                let meta = getBlockquoteText(author + desc);\n                if (model_line_height > 0) {\n                    d.push({\n                        title: meta + getGreyText(contentTips)\n                    });\n                    for (let i = 0; i < model_line_height; i++) {\n                        d.push({\n                            col_type: 'line_blank'\n                        });\n                    }\n                } else {\n                    d.push({\n                        title: meta\n                    });\n                }\n            } catch (e) { }\n        }\n        /**\n         * 正文\n         */\n        try {\n            let contentsHtml = parseDomForHtml(html, '.rl-recipes&&Html');\n            if(page === 1) {\n                let contentTitle = getBigText(parseDomForHtml(contentsHtml, '.block-title&&Text'));\n                d.push({\n                    title: contentTitle\n                });\n            }\n            let contentsHtmlArray = parseDomForArray(contentsHtml, '.normal-recipe-list&&li');\n            for (let i = 0; i < contentsHtmlArray.length; i++) {\n                let contentItemHtml = contentsHtmlArray[i];\n                let cover = parseDomForHtml(contentItemHtml, '.cover&&img&&data-src');\n                let title = parseDomForHtml(contentItemHtml, '.info&&.name&&Text');\n                let desc = parseDomForHtml(contentItemHtml, '.stats&&Text');\n                let url = parseDom(contentItemHtml, 'a&&href');\n                d.push({\n                    title: title,\n                    pic_url: cover,\n                    desc: desc,\n                    url: url + rule,\n                    col_type: 'movie_1'\n                })\n            }\n        } catch (e) { }\n    } else {\n        /**\n         * header\n         */\n        try {\n            let headerTitle = getBigText(getStrongText(parseDomForHtml(mainHtml, 'h1&&Text')))\n                + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文]'));\n            let tags = '';\n            try {\n                let headerTagsHtml = parseDomForHtml(html, '.recipe-tags&&Html');\n                let tagsHtmlArray = parseDomForArray(headerTagsHtml, '.recipe-cats&&a');\n                // setError(JSON.stringify(tagsHtmlArray));\n                for (let i = 0; i < tagsHtmlArray.length; i++) {\n                    let tagHtml = tagsHtmlArray[i];\n                    let tag = getCodeText(parseDomForHtml(tagHtml, 'Text'));\n                    tags += tag;\n                }\n                // setError(tags);\n            } catch (e) { }\n            tags = tags === '' ? '<br>' + getCodeText('暂无分类') : '<br>' + tags;\n            d.push({\n                title: headerTitle + tags\n            });\n            d.push({\n                col_type: 'line'\n            });\n        } catch (e) { }\n\n        /**\n         * 描述\n         */\n        try {\n            let author = getAuthorText('作者：' + parseDomForHtml(mainHtml, '.author&&Text'));\n            let desc = '';\n            try {\n                desc = '<br>' + parseDomForHtml(mainHtml, '.desc&&Html');\n            } catch (e) { }\n\n            /**\n             * 展示\n             */\n            let showVideo = '';\n            try {\n                let showHtml = parseDomForHtml(html, '.recipe-show&&Html');\n                let iframeVideoUrl = parseDomForHtml(showHtml, 'iframe&&src');\n                // setError(iframeVideoUrl);\n                let iframeHtml = fetch(iframeVideoUrl, {});\n                // setError(iframeHtml);\n                let videoUrl = parseDomForHtml(iframeHtml, 'video&&src');\n                showVideo = getAddressTag(videoUrl, '本帖含视频，点我查看～');\n            } catch (e) { }\n\n            let ings = '';\n            try {\n                /**\n                 * 用料\n                 */\n                let ingsHtml = parseDomForHtml(mainHtml, '.ings&&Html');\n                let ingsHtmlArray = parseDomForArray(ingsHtml, 'table&&tr');\n                // setError(JSON.stringify(ingsHtmlArray));\n                for (let i = 0; i < ingsHtmlArray.length; i++) {\n                    let ingHtml = ingsHtmlArray[i];\n                    /<td class=\"name\">([\\s\\S]*?)<\\/td>/.test(ingHtml);\n                    let ingName = RegExp.$1;\n                    if (ingName !== '') {\n                        ingName = getColorText(parseDomForHtml(ingName, 'Text'), ingNameColor);\n                        /<td class=\"unit\">([\\s\\S]*?)<\\/td>/.test(ingHtml);\n                        let ingUnit = RegExp.$1;\n                        ingUnit = getColorText(((ingUnit === ingName) ? '未知' : ingUnit), ingUnitColor);\n                        let ing = ingName + ' ' + ingUnit;\n                        ing = i === (ingsHtmlArray.length - 1) ? ing : ing + (ingsMode === 1 ? '<br>' : '、');\n                        ings += ing\n                    }\n                }\n                ings = (getBigText(getTitleText('用料')) + '<br>') + ings;\n            } catch (e) { }\n            desc = showDesc === 1 ? desc : '';\n            if (model_line_height > 0) {\n                d.push({\n                    title: getBlockquoteText(author + desc) + (showVideo === '' ? getGreyText(contentTips) : showVideo + '<br>')\n                });\n                for(let i = 0; i < model_line_height; i++) {\n                    d.push({\n                        col_type: 'line_blank'\n                    });\n                }\n                d.push({\n                    title: ings\n                });\n                for(let i = 0; i < model_line_height; i++) {\n                    d.push({\n                        col_type: 'line_blank'\n                    });\n                }\n            } else {\n                d.push({\n                    title: getBlockquoteText(author + desc) + (showVideo === '' ? '' : showVideo + '<br><br>') + ings\n                });\n            }\n        } catch (e) { }\n\n        /**\n         * 正文\n         */\n        try {\n            let stepsTitle = getBigText(getTitleText('' +  parseDomForHtml(mainHtml, '#steps&&Text') + ''));\n            let stepsHtmlArray = parseDomForArray(mainHtml, '.steps&&.container');\n            if(multiStepModel && model_line_height > 0) {\n                d.push({\n                    title: stepsTitle\n                });\n            }\n            let steps = '';\n            for (let i = 0; i < stepsHtmlArray.length; i++) {\n                let step = parseDomForHtml(stepsHtmlArray[i], '.container&&Html');\n                step = getStrongText('步骤' +(i + 1) + '<br>')\n                    + step\n                        .replace(/<\\/p> <img src=/g, '<br><img src=')\n                        .replaceWithCallback(/(<img (src|data-src)=\"(.*?)\"([\\s\\S]*?)>)/g, \"<img data-v>\", imgTagReplacement2)\n                        .replace(/(<p class=\"text\" style=\".*?\">)|(<\\/p>)/, '');\n                if(multiStepModel && model_line_height > 0) {\n                    d.push({\n                        title: step\n                    })\n                } else {\n                    steps += '<br><br>' + step;\n                }\n            }\n            if (!(multiStepModel && model_line_height > 0)) {\n                d.push({\n                    title: stepsTitle + steps\n                });\n            }\n            for(let i = 0; i < model_line_height; i++) {\n                d.push({\n                    col_type: 'line_blank'\n                });\n            }\n            /**\n             * Tips\n             */\n            let tips = '';\n            try {\n                let tipsHtml = parseDomForHtml(mainHtml, '.tip-container&&Html');\n                let tipsTitle = getBigText(getTitleText(parseDomForHtml(tipsHtml, 'h2&&Text')));\n                tipsContent = '<br>' + parseDomForHtml(tipsHtml, '.tip&&Html');\n                tips = getColorText(tipsTitle + tipsContent, tipsColor);\n                d.push({\n                    title: tips\n                });\n                for(let i = 0; i < model_line_height; i++) {\n                    d.push({\n                        col_type: 'line_blank'\n                    });\n                }\n            } catch(e) { }\n        } catch (e) { }\n\n        /**\n         * footer\n         */\n        try {\n            let footerHtml = parseDomForHtml(html, '.recipe-stats&&Html');\n            let time = parseDomForHtml(footerHtml, '.time&&Text');\n            let collectionCount = parseDomForHtml(footerHtml, '.pv&&Text');\n            let copyright = parseDomForHtml(footerHtml, '.copyright&&Text');\n            let footer = getSmallText(getGreyText(time + '<br>' + collectionCount + '<br>' + copyright))\n            d.push({\n                title: footer\n            });\n        } catch (e) { }\n\n        /**\n         * 评论\n         */\n        try {\n            let commentHtml = parseDomForHtml(html, '.page-bottom-outer&&.page-container&&Html');\n            let commentTitle = getBigText(getTitleText(parseDomForHtml(commentHtml, 'h2&&Text')));\n            let commentsHtmlArray = parseDomForArray(commentHtml, '.question-list&&.recipe-quesions-content');\n            if (commentsHtmlArray.length > 0) {\n                d.push({\n                    col_type: 'line_blank'\n                });\n                d.push({\n                    title: commentTitle\n                });\n            }\n            let comment = '';\n            for (let i = 0; i < commentsHtmlArray.length; i++) {\n                let commentsBlockHtmlArray = parseDomForArray(commentsHtmlArray[i], 'li&&.avatar-right-2');\n                for (let j = 0; j < commentsBlockHtmlArray.length; j++) {\n                    let replyComment = '';\n                    let authorComment = '';\n                    if (commentsBlockHtmlArray[j].indexOf('赞') > -1) {\n                        let replier = getAuthorText(parseDomForHtml(commentsBlockHtmlArray[j], '.info&&a&&Text'));\n                        let reply_time = '';\n                        if (/(<span class=\"normal-font gray-font align-baseline\">[\\s\\S]*?<\\/span>)/.test(commentsBlockHtmlArray[j]) === true) {\n                            reply_time = getGreyText(RegExp.$1);\n                        }\n                        let reply_meta = getCommentMeta('<br>' + replier + reply_time);\n                        let reply_content = parseDomForHtml(commentsBlockHtmlArray[j], '.right-bottom&&Html');\n                        replyComment = reply_content + reply_meta;\n                    }\n                    if (commentsBlockHtmlArray[j].indexOf('作者回复') > -1) {\n                        try {\n                            let author = getAuthorText('作者回复');\n                            let time = '';\n                            if (/(<span class=\"normal-font gray-font align-baseline\">[\\s\\S]*?<\\/span>)/.test(commentsBlockHtmlArray[j]) === true) {\n                                time = getGreyText(RegExp.$1);\n                            }\n                            let meta = getCommentMeta('<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + author + time);\n                            let commentContent = '<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>'\n                                + parseDomForHtml(commentsBlockHtmlArray[j], '.right-bottom&&Html');\n                            authorComment = commentContent + meta;\n                            // authorComment = '<br>' + authorComment;\n                        } catch (e) { }\n                    }\n                    comment = replyComment + authorComment;\n                    d.push({\n                        title: comment.replace(/<div class=\"recipe-questions-digg\">/g, '')\n                    });\n                }\n                d.push({\n                    col_type: 'line'\n                });\n            }\n        } catch (e) { }\n    }\n} catch (e) {  }\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"pc","preRule":"/**\n * 是否开启伪异步加载模式 1/开启 0/不开启\n *\n * 注意：二级会卡可以尝试开启该选项，但可能导致某些图片不显示\n */\nlet multiStepModel = 0;\n// 是否隐藏图片(省流模式) 1/隐藏 0/不隐藏\nlet hideImg = 0;\n// 图片质量，默认 300，推荐 600 或 800\nlet imgWidth = 600;\n// 是否显示看大图(防止无法加载图片) 1/显示 0/不显示\nlet showFullImgTips = 1;\n// 用户颜色\nlet userColor = \"#2979FF\";\n// 是否显示菜的描述 1/显示 0/不显示\nlet showDesc = 1;\n// 用料模块显示方式 1/完整视图 0/缩略模式\nlet ingsMode = 0;\n// 用料名颜色\nlet ingNameColor = \"#46c200\";\n// 用料量颜色\nlet ingUnitColor = \"#706a6b\";\n// 小贴士颜色\nlet tipsColor = \"#706a6b\";\n// 模块之间的间隔\nlet model_line_height = 1;\n// 正文提示\nlet contentTips = '下厨房的时候一定要注意安全哦～' + '<br>';\n\nputVar2('xiachu_multiStepModel', multiStepModel.toString());\nputVar2('xiachu_hideImg', hideImg.toString());\nputVar2('xiachu_imgWidth', imgWidth.toString());\nputVar2('xiachu_showFullImgTips', showFullImgTips.toString());\nputVar2('xiachu_userColor', userColor);\nputVar2('xiachu_showDesc', showDesc.toString());\nputVar2('xiachu_ingsMode', ingsMode.toString());\nputVar2('xiachu_ingNameColor', ingNameColor);\nputVar2('xiachu_ingUnitColor', ingUnitColor);\nputVar2('xiachu_tipsColor', tipsColor);\nputVar2('xiachu_model_line_height', model_line_height.toString());\nputVar2('xiachu_contentTips', contentTips);"},{"last_chapter_rule":"","title":"POKI摸鱼神器","author":"爱是用心","version":1,"type":"news","url":"hiker://empty##https://poki.cn/","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar url = MY_URL.split(\"##\")[1];\nd.push({\n    desc: 'auto&&float',\n    url: url,\n    col_type: 'x5_webview_single',\n    extra: {\n        canBack: true\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://a.poki.com/icons/fav-512.png"},{"last_chapter_rule":"","title":"吾爱破解","author":"","version":2,"type":"news","url":"hiker://empty##https://www.52pojie.cn/forum.php?mod=guide&view=hot&page=1","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet ad = JSON.parse(fetch(\"hiker://page/ad\")).rule;\nad = ad.split(\"￥\")[2];\nlet blockRules = ad.split(\"&&\");\nlet url = 'https://www.52pojie.cn/forum.php?mod=guide&view=hot&page=1';\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, url);\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true,\n        blockRules: blockRules,\n        //floatVideo: true\n    }\n}])","searchFind":"","search_url":"","titleColor":"#666666","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"广告拦截\",\"path\":\"ad\",\"rule\":\"海阔视界规则分享，当前分享的是：广告网址拦截￥ad_url_rule￥/ad/&&.GIF&&/sh/to/\"},{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet ad = JSON.parse(fetch(\\\"hiker://page/ad\\\")).rule;\\nad = ad.split(\\\"￥\\\")[2];\\nlet blockRules = ad.split(\\\"&&\\\");\\nlog(blockRules);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        //floatVideo: true,\\n        blockRules: blockRules\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if ((!input.includes(host) && input.startsWith(\\\"http\\\")) || input.includes(\\\"/play\\\") || (input.includes(\\\"/thread-\\\") && !origin.includes(\\\"/thread-\\\"))) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                //跳网页\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n\\n        }\\n    }, rule, origin);\\n}\"}]","proxy":"","icon":"https://www.52pojie.cn/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"豆瓣新版.D","author":"(o˘◡˘o)&Reborn","version":10,"type":"other","url":"https://movie.douban.com/j/new_search_subjects?range=0,10&start=fypage@-1@*20@&tags=fyclass&fysort&fyarea&fyyear","col_type":"movie_3","class_name":"全部&电影&电视剧&综艺&动漫&纪录片&短片","class_url":"&电影&电视剧&综艺&动漫&纪录片&短片","area_name":"全部&中国大陆&美国&中国香港&中国台湾&日本&韩国&英国&法国&德国&意大利&西班牙&印度&泰国&俄罗斯&伊朗&加拿大&澳大利亚&爱尔兰&瑞典&巴西&丹麦","area_url":"countries=&countries=中国大陆&countries=美国&countries=中国香港&countries=中国台湾&countries=日本&countries=韩国&countries=英国&countries=法国&countries=德国&countries=意大利&countries=西班牙&countries=印度&countries=泰国&countries=俄罗斯&countries=伊朗&countries=加拿大&countries=澳大利亚&countries=爱尔兰&countries=瑞典&countries=巴西&countries=丹麦","sort_name":"近期热 & 标记多 & 评分高 &  新上映  &┃\n\n&全部&剧情&喜剧&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&犯罪&同性&音乐&歌舞&传记&历史&战争&西部&奇幻&冒险&灾难&武侠&情sè","year_name":"全部&2020&2019&2018&2010年代&2000年代&更早","sort_url":"sort=U&sort=T&sort=S&sort=R&\n\n&genres=&genres=剧情&genres=喜剧&genres=动作&genres=爱情&genres=科幻&genres=动画&genres=悬疑&genres=惊悚&genres=恐怖&genres=犯罪&genres=同性&genres=音乐&genres=歌舞&genres=传记&genres=历史&genres=战争&genres=西部&genres=奇幻&genres=冒险&genres=灾难&genres=武侠&genres=情(sè自己替换)","year_url":"year_range=&year_range=2020,2020&year_range=2019,2019&year_range=2018,2018&year_range=2010,2019&year_range=2000,2009&year_range=1,1999","find_rule":"js:\n// 是否进入测试模式，开发者专用选项，平民玩家开了也没用\nlet testMode = 0;\ntry {\nvar defaultPic = 'http://1t.click/aXjm';\n\nvar data = JSON.parse(getResCode()).data.map(function(o) {\n  return {\n    title: o.title,\n    desc: o.rate\n      ? o.rate + '分'\n      : (o.casts.length > 0 ? o.casts : o.directors).slice(0, 2).join(' / '),\n    pic_url: o.cover.includes('default') && defaultPic ? defaultPic : o.cover,\n    url: 'https://m.douban.com/movie/subject/' + o.id + '/' + '#' + o.title + '#noHistory#'\n  };\n});\n\nsetHomeResult({ data: data });\n\n} catch (e) {\n    let result = {};\n    let errorTitle = '““””<font color=\"grey\">' + '暂无内容，请稍候再试' + '</font>';\n    let errorDesc = '';\n    try {\n         result = JSON.parse(getResCode());\n    } catch (e) { }\n    if (result.msg != null && result.msg !== '') {\n         errorTitle = '““' + result.msg + '””';\n         errorDesc = '提示：也许只是服务器打了个盹等等就会好起来了？\\n提示：也许你可以试试搜索？有惊喜哦～';\n    }\n\n    setHomeResult({\n          data: [{\n              title: errorTitle,\n              desc: errorDesc,\n              url: testMode === 1 ? 'https://m.douban.com/subject/26357307/' : '',\n              col_type: 'text_center_1'\n          }]\n    });\n}\n\n/* v0.11.12 (o˘◡˘o) */","searchFind":".search_results_subjects&&li;span&&Text;a&&href.js: 'https://movie.douban.com' + input.replace('/movie', '') + '#noHistory#';p&&Text.js: if(/尚未.*/.test(input) != true) \"评分：\" + input; else input;;*;img&&src","search_url":"https://m.douban.com/search/?(o%CB%98%E2%97%A1%CB%98o)&type=movie&query=**;get;utf-8;{User-Agent@Windows}","titleColor":"#fff20c00","group":"①推荐","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar colType = 'rich_text';\nvar html = getResCode();\nvar urlSplits = MY_URL.split('#');\nvar mUrl = urlSplits[0];\n\n/**\n * 一些全局配置，请移步预处理中进行配置\n */\n// 是否开启视界搜\nlet openHikerSearch = -1;\ntry {\n    openHikerSearch = parseInt(getVar('db_open_hiker_search'));\n} catch (e) { }\nopenHikerSearch = openHikerSearch === -1 ? 1 : openHikerSearch;\n// desc 描述的三行中每行的最大长度\nlet descLineMaxLen = -1;\ntry {\n    descLineMaxLen = parseInt(getVar('db_desc_line_max_len'));\n} catch (e) { }\ndescLineMaxLen = descLineMaxLen === -1 ? 25 : descLineMaxLen;\n// 评论用户颜色\nlet userColor = \"#2979FF\";\ntry {\n    userColor = getVar('db_user_color');\n} catch (e) { }\nuserColor = userColor === '' ? \"#2979FF\" : userColor;\n// 模块的间距\nlet line_model = -1;\ntry {\n    line_model = parseInt(getVar('db_line_model'));\n} catch (e) { }\nline_model = line_model === -1 ? 0 : line_model;\n// 模块间距类型（适配以后可能会有的无边距线）\nlet line_type_model = '';\ntry {\n    line_type_model = getVar('db_line_type_model');\n} catch (e) { }\nline_type_model = line_type_model === '' ? \"line\" : line_type_model;\n\n// 评分对应颜色 [ 五星力荐，四星推荐，三星还行，二星较差，一星很差]\nlet ratingTexts = [\n    \"力荐\",\n    \"推荐\",\n    \"还行\",\n    \"较差\",\n    \"很差\",\n];\nlet ratingColors = [\n    \"#00d437\",\n    \"#9cdc00\",\n    \"#ddcf00\",\n    \"#ffa400\",\n    \"#ff7800\",\n];\n\nfunction getBigText(text) {\n    return '<big>' + text + '</big>';\n}\nfunction getSmallText(text) {\n    return '<small>' + text + '</small>';\n}\nfunction getTitleText(text) {\n    return '<strong>' + text + '</strong>';\n}\nfunction getColorText(text, color) {\n    return '<font color=\"' + color + '\">' + text + '</font>';\n}\nfunction getGreyText(text) {\n    return getColorText(text, 'grey');\n}\nfunction getAuthorText(text) {\n    return getColorText(text, userColor);\n}\nfunction getRatingText(text) {\n    let colorIndex = ratingTexts.indexOf(text);\n    let textColor = colorIndex < 0 ? '#f9b700' : ratingColors[colorIndex];\n    return getColorText(text, textColor);\n}\nfunction getAbbrevText(text) {\n    let mText = text;\n    if (text.length > descLineMaxLen) {\n        mText = mText.substring(0, descLineMaxLen) + '...';\n    }\n    return mText;\n}\nfunction getCommentMeta(html) {\n    return getSmallText(html);\n}\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\n    let returnValue = this;\n    if (callback != null) {\n        returnValue = callback(this, searchValue, replaceValue);\n    }\n    return returnValue;\n};\n\nlet reviewRule = '@rule=js: ' + `var res={},d=[],colType=\"rich_text\",html=getResCode(),hideImg=0;let userColor=\"#2979FF\";try{userColor=getVar(\"db_user_color\")}catch(t){}userColor=\"\"===userColor?\"#2979FF\":userColor;let line_model=-1;try{line_model=parseInt(getVar(\"db_line_model\"))}catch(t){}line_model=-1===line_model?0:line_model;let line_type_model=\"\";try{line_type_model=getVar(\"db_line_type_model\")}catch(t){}line_type_model=\"\"===line_type_model?\"line\":line_type_model;let ratingTexts=[\"力荐\",\"推荐\",\"还行\",\"较差\",\"很差\"],ratingColors=[\"#00d437\",\"#9cdc00\",\"#ddcf00\",\"#ffa400\",\"#ff7800\"];function getBigText(t){return\"<big>\"+t+\"</big>\"}function getSmallText(t){return\"<small>\"+t+\"</small>\"}function getStrongText(t){return\"<strong>\"+t+\"</strong>\"}function getTitleText(t){return getStrongText(t)}function getItalicText(t){return\"<i>\"+t+\"</i>\"}function getColorText(t,e){return'<font color=\"'+e+'\">'+t+\"</font>\"}function getGreyText(t){return getColorText(t,\"grey\")}function getAuthorText(t){return getColorText(t,userColor)}function getRatingText(t){let e=ratingTexts.indexOf(t);return getColorText(t,e<0?\"#f9b700\":ratingColors[e])}function getAbbrevText(t){let e=t;return t.length>descLineMaxLen&&(e=e.substring(0,descLineMaxLen)+\"...\"),e}function getCommentMeta(t){return getSmallText(t)}function styleSpanToStyleFontReplacement(t,e,l){let r=t;try{let o=t.match(e);for(let t=0;t<o.length;t++){let e=o[t];l=e,e.indexOf(\"font-weight: bold;\")>-1&&(l=getStrongText(l)),e.indexOf(\"font-style: italic;\")>-1&&(l=getItalicText(l)),r=r.replace(e,l)}}catch(t){}return r}String.prototype.replaceWithCallback=function(t,e,l){let r=this;return null!=l&&(r=l(this,t,e)),r};try{let t=getSmallText(getGreyText('<a href=\"'+MY_URL+'\">[查看原文]</a>')),e=parseDomForHtml(html,\"#content&&.article&&Html\"),l=getBigText(getTitleText(parseDomForHtml(e,\"h1&&Text\")));e=parseDomForHtml(e,\".main-hd&&Html\");let r=\"\",o=\"\";!0===/(<a href=\"https:\\\\/\\\\/www.douban.com[\\\\s\\\\S]*?<\\\\/a>)/.test(e)&&(o=getAuthorText(parseDomForHtml(RegExp.$1,\"Text\")));let n=\"\";!0===/(<a href=\"https:\\\\/\\\\/movie.douban.com[\\\\s\\\\S]*?<\\\\/a>)/.test(e)&&(n=getColorText(parseDomForHtml(RegExp.$1,\"Text\"),\"#8965b4\")),r=\"\"!==o&&\"\"!==n?o+\" \"+getGreyText(\"评论\")+\" \"+n:\"\";let a=\"\";try{a=getRatingText(parseDomForHtml(e,\".main-title-rating&&title\"))+\" \"}catch(t){}r=getSmallText(r+=\" \"+a+getGreyText(parseDomForHtml(e,\".main-meta&&Text\"))),d.push({title:l+\" \"+t+\"<br>\"+r}),d.push({col_type:\"line\"})}catch(t){}try{let t=parseDomForHtml(html,\"#review-content&&Html\"),e=\"\";try{e=\"<blockquote>\"+parseDomForHtml(t,\".main-title-tip&&Html\")+\"</blockquote>\"}catch(t){}let l=parseDomForHtml(t,\".review-content&&Html\").replaceWithCallback(/<span style=\".*?\">([\\\\s\\\\S]*?)<\\\\/span>/g,\"\",styleSpanToStyleFontReplacement),r=\"\";try{r=getSmallText(getGreyText(parseDomForHtml(t,\".copyright&&Html\")))}catch(t){}let o=parseDomForHtml(t,\".main-panel-useful&&Html\"),n=\"<br>\"+getSmallText(getColorText(parseDomForHtml(o,\".useful_count&&Text\"),ratingColors[0])),a=\"\\\\t\\\\t\"+getSmallText(getColorText(parseDomForHtml(o,\".useless_count&&Text\"),ratingColors[4]));d.push({title:e+l+r+n+a})}catch(t){}d.push({title:\"““””\"+getColorText(\"· · · 查看评论 · · ·\",\"#ad8b25\"),url:MY_URL+\"#comment-list\",col_type:\"text_center_1\"}),res.data=d,setHomeResult(res);`;\n\n/**\n * 获取 影片/书籍 信息\n * @type {string}\n */\ntry {\n    let sub_info_html = parseDomForHtml(html, \"#wrapper&&Html\")\n        .replace(/\\n/g, '');\n    let sub_original_title = parseDomForHtml(sub_info_html, 'h1&&Text');\n    let sub_cover = parseDomForHtml(sub_info_html, '#mainpic&&a&&img&&src');\n    // let sub_title = parseDomForHtml(sub_info, '.sub-detail&&.sub-title&&Text');\n    let sub_meta_html = parseDomForHtml(sub_info_html, '#info&&Html');\n    let actor = '';\n    let type = '';\n    let showDate = '';\n    if (mUrl.indexOf('book') > -1) {\n        try {\n            if (/(<span>[\\s\\S]*?<span class=\"pl\"> 作者<\\/span>[\\s\\S]*?(?=<br>))/.test(sub_meta_html) === true) {\n                actor = '<div class=\"actor\">' + RegExp.$1 + '</div>';\n                actor = parseDomForHtml(actor, '.actor&&Text')\n            }\n        } catch (e) { }\n        try {\n            if (/(<span class=\"pl\">出版社:<\\/span>[\\s\\S]*?(?=<br>))/.test(sub_meta_html) === true) {\n                type = '<div class=\"type\">' + RegExp.$1 + '</div>';\n                type = parseDomForHtml(type, '.type&&Text')\n            }\n        } catch (e) { }\n        try {\n            if (/(<span class=\"pl\">出版年:<\\/span>[\\s\\S]*?(?=<br>))/.test(sub_meta_html) === true) {\n                showDate = '<div class=\"date\">' + RegExp.$1 + '</div>';\n                showDate = parseDomForHtml(showDate, '.date&&Text')\n            }\n        } catch (e) { }\n    } else {\n        actor = parseDomForHtml(sub_meta_html, '.actor&&Text');\n        try {\n            if (/(<span class=\"pl\">类型:<\\/span>[\\s\\S]*?(?=<br>))/.test(sub_meta_html) === true) {\n                type = '<div class=\"type\">' + RegExp.$1 + '</div>';\n                type = parseDomForHtml(type, '.type&&Text')\n            }\n        } catch (e) { }\n        try {\n            if (/(<span class=\"pl\">(上映日期|首播):<\\/span>[\\s\\S]*?(?=<br>))/.test(sub_meta_html) === true) {\n                showDate = '<div class=\"date\">' + RegExp.$1 + '</div>';\n                showDate = parseDomForHtml(showDate, '.date&&Text')\n            }\n        } catch (e) { }\n    }\n    let sub_meta = getAbbrevText(actor)\n        + (type === '' ? '' : ('\\n' + getAbbrevText(type)))\n        + (showDate === '' ? '' : ('\\n' + getAbbrevText(showDate)));\n    let db_title = '';\n    try {\n        db_title = urlSplits[1];\n    } catch (e) { }\n    // 搜索参数\n    let searchValue = getVar('db_search_value');\n    let sub_url = openHikerSearch === 1\n        ? ('hiker://search?s='\n            + (db_title === '' || db_title === undefined\n                ? sub_original_title\n                : db_title)\n            + searchValue\n        )\n        : mUrl;\n    d.push({\n        title: sub_original_title,\n        pic_url: sub_cover,\n        url: sub_url,\n        desc: sub_meta,\n        col_type: 'movie_1_vertical_pic'\n    });\n    for (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n    }\n} catch (e) { }\n\n/**\n * 豆瓣评分\n */\ntry {\n    let rating = parseDomForHtml(html, '#interest_sectl&&Html');\n    let rating_title = '';\n    let rating_content = '';\n    let rating_show = parseDomForHtml(rating, '.rating_self&&div[class^=rating_right]&&Text');\n    if (rating_show === '尚未播出' || rating_show === '尚未上映') {\n        rating_content += (getBigText('豆瓣评分') + ' ' + getSmallText(getGreyText(rating_show)));\n    } else {\n        let ratingText = parseDomForHtml(rating, '.rating_self&&strong&&Text');\n        rating_content += getBigText('豆瓣评分 '\n            + (ratingText === ''\n                ? getSmallText(getGreyText('暂无评分'))\n                : (getTitleText(ratingText) + ' 分'))\n            + '<br>');\n        let rating_array = [];\n        if (mUrl.indexOf('book') > -1) {\n            rating_array = rating.match(/<span class=\"stars[\\s\\S]*?(?=<br>)/g);\n        } else {\n            rating_array = parseDomForArray(rating, '.ratings-on-weight&&.item');\n        }\n        for (let i = 0; i < rating_array.length; i++) {\n            let ratingItem = rating_array[i];\n            if (i === 0) rating_content += '🌟 ';\n            if (i === 2) rating_content += '<br>⭐ ';\n            if (i === 3) rating_content += '<br>☄️ ';\n            rating_content += getColorText(parseDomForHtml(ratingItem, 'Text'), ratingColors[i]) + '\\t\\t';\n        }\n    }\n    let dContent = rating_title + (rating_title === '' ? '' : '<br>') + rating_content;\n    d.push({\n        title: dContent\n    });\n    for (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n    }\n} catch (e) { }\n\n/**\n * 剧情简介/书籍内容介绍\n */\ntry {\n    let sub_intro = parseDomForHtml(html, '.related-info||.related_info&&Html')\n        .replace(/\\n/g, '');\n    let sub_intro_title = parseDomForHtml(sub_intro, 'h2&&Text')\n        .replace(/(.*?的)|(· · · · · ·)|(&nbsp;·&nbsp;·&nbsp;·&nbsp;·&nbsp;·&nbsp;·)|(· · · · · ·)/g, '');\n    sub_intro_title = getBigText(getGreyText(sub_intro_title));\n    let sub_intro_content = '';\n    try {\n        sub_intro_content = parseDomForHtml(sub_intro, '.indent&&span[class^=all]&&Html');\n    } catch (e) {\n        sub_intro_content = parseDomForHtml(sub_intro, '.indent&&Html');\n    }\n    try {\n        sub_intro_content = parseDomForHtml(sub_intro_content, '.intro&&Html');\n    } catch (e) { }\n    dContent = sub_intro_title + '<br>' + sub_intro_content;\n    d.push({\n        title: dContent\n    });\n    for (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n    }\n} catch (e) { }\n\n/**\n * 短评\n */\ntry {\n    let comments_html = parseDomForHtml(html, '#comments-section&&Html');\n    let comments_title = getBigText(getGreyText(parseDomForHtml(comments_html, 'h2&&Html')\n        .replace(/(.*?的)|(· · · · · ·)|(&nbsp;·&nbsp;·&nbsp;·&nbsp;·&nbsp;·&nbsp;·)/g, '')))\n        .replace(/<i[\\s\\S]*?>|<\\/i>/g, '')\n        .replace(/movie.douban.com/g, 'm.douban.com/movie');\n    dContent = comments_title;\n    d.push({\n        title: dContent\n    });\n    let comments_content_html = parseDomForHtml(comments_html, '.tab-bd||#comment-list-wrapper&&Html');\n    let comments_content_html_array = parseDomForArray(comments_content_html, '#hot-comments||#new_score&&.comment-item');\n    for (let i = 0; i < comments_content_html_array.length; i++) {\n        let commentHtmlItem = comments_content_html_array[i];\n        let content = parseDomForHtml(commentHtmlItem, 'p&&Html');\n        try {\n            if (/<\\/span>[\\s\\S]*?(<span class=\"[\\s\\S]*?full\">[\\s\\S]*?<\\/span>)/.test(content) === true) {\n                content = RegExp.$1;\n            }\n        } catch (e) {\n            content = parseDomForHtml(commentHtmlItem, 'p&&Html');\n        }\n        let watchStatus = parseDomForHtml(commentHtmlItem, '.comment-info&&Text');\n        if (watchStatus.indexOf(\"看过\")) watchStatus = '看过';\n        else if (watchStatus.indexOf(\"想看\")) watchStatus = '想看';\n        let ratingText = '';\n        try {\n            ratingText = '\\t' + getRatingText(parseDomForHtml(commentHtmlItem, '.comment-info&&.rating&&title'))\n        } catch (e) { }\n        let meta = getAuthorText(parseDomForHtml(commentHtmlItem, '.comment-info&&a&&Text'))\n            + '\\t'\n            + getGreyText(watchStatus)\n            + ratingText\n            + '\\t'\n            + getGreyText(parseDomForHtml(commentHtmlItem, '.comment-info&&span[class^=comment-time]&&Text'));\n        dContent = content + '<br>' + getCommentMeta(meta);\n        d.push({\n            title: dContent\n                .replace(/<a class=\"source-icon\"[\\s\\S]*?<\\/a>/g, '')\n                .replace(/\\(<a href=\"javascript:;\"[\\s\\S]*?>展开<\\/a>\\)/g, '')\n        });\n        if (i < comments_content_html_array.length - 1) {\n            d.push({\n                col_type: 'line'\n            })\n        }\n    }\n    for (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n    }\n} catch (e) { }\n\n/**\n * 影评/书评\n */\ntry {\n    let reviews_html = parseDomForHtml(html, '#reviews-wrapper&&Html');\n    let reviews_title = getBigText(getGreyText(\n        parseDomForHtml(reviews_html, 'h2&&Html')\n            .replace('href=\"reviews\"', 'href=\"' + mUrl + 'reviews\"')\n            .replace(/(.*?的)|(· · · · · ·)/g, '')\n    ));\n    dContent = reviews_title;\n    d.push({\n        title: dContent\n    });\n    let reviews_content_html = parseDomForHtml(reviews_html, 'div[class^=review-list]&&Html');\n    let reviews_content_html_array = reviews_content_html.match(/<div class=\"main review-item\"[\\s\\S]*?<\\/div>/g);\n    for (let i = 0; i < reviews_content_html_array.length; i++) {\n        let reviewHtmlItem = reviews_content_html_array[i];\n        let contentHtml = parseDomForHtml(reviewHtmlItem, '.main-bd&&Html');\n        let reviewTitle = parseDomForHtml(contentHtml, 'h2&&Html');\n        let reviewUrl = parseDomForHtml(reviewTitle, 'a&&href');\n        let reviewRuleUrl = 'base64://' + base64Encode(reviewUrl + '#noHistory#' + reviewRule);\n        reviewTitle = reviewTitle.replace(reviewUrl, reviewRuleUrl);\n        let content = getTitleText(reviewTitle)\n            + '<br>'\n            + parseDomForHtml(contentHtml, '.review-short&&.short-content&&Html')\n            + ' <small><a href=\"' + reviewRuleUrl + '\">[查看全文]</a></small>'\n        ;\n        let ratingText = '';\n        try {\n            ratingText = '\\t' + getRatingText(parseDomForHtml(reviewHtmlItem, '.main-hd&&.main-title-rating&&title'))\n        } catch (e) { }\n        let meta = getAuthorText(parseDomForHtml(reviewHtmlItem, '.main-hd&&.name&&Text'))\n            + ratingText\n            + '\\t'\n            + getGreyText(parseDomForHtml(reviewHtmlItem, '.main-hd&&.main-meta&&Text'));\n        let responseHtml = '';\n        let feedback = '';\n        try{\n            if (/(<a href=\"http[\\s\\S]*?class=\"reply[\\s\\S]*?<\\/a>)/.test(reviewHtmlItem) === true) responseHtml = RegExp.$1;\n            feedback = getGreyText('👍🏻' + parseDomForHtml(reviewHtmlItem, '.action&&.action-btn.up&&Text')\n                + '\\t'\n                + '👎🏻' + parseDomForHtml(reviewHtmlItem, '.action&&.action-btn.down&&Text')\n                + '\\t'\n                + responseHtml\n            );\n        } catch (e) { }\n        dContent = content\n            + '<br>'\n            + getCommentMeta(meta)\n            + (feedback === '' ?\n                    ''\n                    : ('<br>' + getCommentMeta(feedback))\n            );\n        d.push({\n            title: dContent\n                .replace(/<a class=\"source-icon\"[\\s\\S]*?<\\/a>/g, '')\n                .replace(/\\([\\s\\S][\\r\\n]<a href=\"javascript:;\"[\\s\\S]*?title=\"展开\">展开<\\/a>\\)/g, '')\n                .replaceWithCallback(/(<p class=\"spoiler-tip\">(.*?)<\\/p>)/g,\n                    '<blockquote class=\"spoiler-tip\">{有剧透}</blockquote>',\n                    function (source, searchValue, replaceValue) {\n                        let returnValue = source;\n                        if (searchValue.test(source) === true) {\n                            let replaceText = RegExp.$2;\n                            replaceText = replaceText === '' ? RegExp.$1 : replaceValue.replace('{有剧透}', replaceText);\n                            returnValue = source.replace(RegExp.$1, replaceText)\n                        }\n                        return returnValue;\n                    })\n        });\n        if (i < reviews_content_html_array.length - 1) {\n            d.push({\n                col_type: 'line'\n            })\n        }\n    }\n} catch (e) { }\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"pc","preRule":"/**\n * 是否开启视界搜，开启后点击第一项即可使用\n *\n * 若不开启则点击为查看原文\n *\n * 开启/1 不开启/0\n */\nlet openHikerSearch = 1;\n// desc 描述的三行中每行的最大长度\nlet descLineMaxLen = 25;\n// 评论用户颜色\nlet userColor = \"#2979FF\";\n// 模块的间距\nlet line_model = 1;\n// 模块间距类型（适配以后可能会有的无边距线）\nlet line_type_model = 'line_blank';\n/**\n * 搜索模式\n *\n * 0: \"hiker://search?s=测试，将会打开搜索弹窗，自动填充搜索的关键词“测试”，由用户自己选择分组和规则后搜索\",\n * 1: \"hiker://search?s=测试&group=②影搜，将会打开搜索弹窗，自动填充搜索的关键词“测试”并且自动切换分组为“②影搜”，用户可切换分组和规则\",\n * 2: \"hiker://search?s=测试&rule=海阔视界，将会直接跳转搜索结果界面，自动选择标题为“海阔视界”的规则进行搜索，并且该界面不可切换别的规则\",\n * 3: \"hiker://search?s=测试&rule=海阔视界&simple=false，将会自动填充搜索的关键词“测试”，并且自动切换分组为“①推荐”、自动选中标题为“海阔视界”的规则，用户可切换分组和规则，并自动开始搜索\"\n */\nlet searchMode = 0;\n// 搜索分组\nlet searchGroup = '';\n// 搜索规则\nlet searchRule = '';\n\n/**\n * 以下完全不需要使用者配置，如看不懂代码请勿乱动\n */\nlet searchValues = [\n    '',\n    searchGroup === '' ? '' : '&group=' + searchGroup,\n    searchRule === '' ? '' : '&rule=' + searchRule,\n    searchRule === '' ? '' : '&rule=' + searchRule + '&simple=false'\n];\nlet searchValue = searchValues[searchMode];\nputVar2('db_open_hiker_search', openHikerSearch.toString());\nputVar2('db_desc_line_max_len', descLineMaxLen.toString());\nputVar2('db_user_color', userColor);\nputVar2('db_line_model', line_model.toString());\nputVar2('db_line_type_model', line_type_model);\nputVar2('db_search_value', searchValue);","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nlet html = getResCode()\n// log(html)\nlet regex = /window\\.__INITIAL_STATE__=(.*?);\\(function\\(\\)\\{/\n// log(MY_URL)\nif(MY_URL.startsWith('https://api.bilibili.com/x/web-interface/view/detail')) {\n    let code = JSON.parse(html)\n    try {\n        if (code.data.View['redirect_url']) {\n            MY_URL = code.data.View['redirect_url'];\n            html = fetch(MY_URL, {});\n        }\n    } catch (e) {\n        log (e.message)\n    }\n}\n// log(html)\nif (MY_URL.startsWith('https://www.bilibili.com/bangumi/play/') && regex.test(html)) {\n    // 番剧\n    // log('匹配：' + RegExp.$1)\n    let res = JSON.parse(RegExp.$1)\n    let result = res.newestEp\n    if(!result) {\n        result = res.mediaInfo.new_ep\n    }\n    setResult(\"更新至：第\" + result.title + \"话\")\n} else if (MY_URL.startsWith('https://api.bilibili.com/x/space/arc/search')) {\n    // UP 主\n    let res = JSON.parse(html)\n    let result = res.data.list.vlist[0].title\n    setResult(\"更新至：\" + result)\n} else {\n    setResult(\"\")\n}","title":"哔哩Ⓡ","author":"1606142&Rx&Reborn","version":22032601,"type":"video","url":"hiker://empty#fypage","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar _type = fetch('hiker://files/bili/样式.txt', {});\nif (_type == \"新版\") {\n    eval(JSON.parse(fetch(\"hiker://page/common\")).rule);\n} else if (_type == \"旧版\"){\n    eval(JSON.parse(fetch(\"hiker://page/common2\")).rule);\n}","searchFind":"js:\neval(JSON.parse(fetch(\"hiker://page/s\")).rule);","search_url":"https://api.bilibili.com/x/web-interface/search/all/v2?keyword=**&page=fypage&pagesize=20;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 7.0；； wv lite baiduboxapp) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 T7/10.3 SearchCraft/2.6.2 (Baidu；； P1 7.0)}","group":"①推荐","detail_col_type":"movie_2","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"js:\neval(JSON.parse(fetch(\"hiker://page/ycl\")).rule);\n//通过搜索查看自己的uid，然后替换即可\nif (!fetch('hiker://files/rules/bili/starid.txt',{})){\nputVar('starid','928123');\n}else{\nputVar('starid',fetch('hiker://files/rules/bili/starid.txt',{}));\n}\nputVar(\"access_key\",fetch('hiker://files/rules/bili/access_key.txt'));\n//自己去b站客户端首页抓包，找到app.bilibili.com开头的链接，然后把access_key的值填入上方'='后面即可\nif (!fetch('hiker://files/bili/样式.txt', {})){\n    writeFile('hiker://files/bili/样式.txt',\"新版\");\n    }","pages":"[{\"col_type\":\"movie_3\",\"name\":\"代码-一级\",\"path\":\"common\",\"rule\":\"var res = {};\\nvar d = [];\\nif (MY_URL.split('#')[1] == '1') {\\n    //.replace('m.bilibili.com', 'www.bilibili.com').replace(/\\\\?/g, '？？').replace(/\\\\&/g, '＆＆')\\n    d.push({\\n        title: '解析',\\n        url: \\\"'hiker://page/detail?url='+'https://'+input.split('https://')[1]+'#immersiveTheme#'\\\",\\n        col_type: 'input',\\n        desc: '请输入网址或者b站复制的链接'\\n    });\\n\\n    d.push({\\n        url: $(\\\"更多\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        //pic_url: 'https://img0.baidu.com/it/u=1612101423,1145982163&fm=253&app=138&f=JPEG?w=500&h=424',\\n        img:\\\"https://www.helloimg.com/images/2022/03/01/GYPyaA.jpg\\\",\\n        col_type: 'card_pic_1',\\n        desc:\\\"0\\\"\\n    });\\n    d.push({\\n        title: '排行榜',\\n        url: $(\\\"排行榜\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/50.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: '直播',\\n        url: $(\\\"直播\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/22.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: '时光机',\\n        url: $(\\\"时光机\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/56.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: 'UP',\\n        url: $(\\\"UP主\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/98.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: '索引',\\n        url: $(\\\"索引\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/47.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: '新番',\\n        url: $(\\\"新番\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/23.png',\\n        col_type: 'icon_2'\\n    });\\n    d.push({\\n        title: '漫游',\\n        url: $(\\\"漫游\\\").lazyRule(() => {\\n            writeFile(\\\"hiker://files/bili/多合一.txt\\\", input);\\n            refreshPage(false);\\n            return \\\"hiker://page/newdetial?url=hiker://empty#fypage\\\";\\n        }, ),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/83.png',\\n        col_type: 'icon_2'\\n    });\\n\\n    d.push({\\n        title: '登录',\\n        url: 'hiker://page/newlogin',\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/2.png',\\n        col_type: 'icon_2'\\n    });\\n}\\nres.data = d;\\nsetResult(res)\"},{\"col_type\":\"pic_1_card\",\"name\":\"代码-排行榜\",\"path\":\"phb\",\"rule\":\"//分类\\n\\nif (MY_URL.split('#')[1] == '1') {\\nvar c1 = 'all&bangumi&guochan&douga&music&knowledge&tech&car&life&food&kichiku&fashion&cinephile&origin&rookie&game&ent&dance&movie&tv&documentary&animal&guochuang';\\nvar w1 = '全部&番剧&国创&动画&音乐&知识&科技&汽车&生活&美食&鬼畜&时尚&影视&原创&新人&游戏&娱乐&舞蹈&电影&电视剧&纪录片&动物圈&国创相关';\\nvar word1 = w1.split('&');\\nvar class1 = c1.split('&');\\nvar lab1 = getVar('lab1', '全部');\\nvar key1 = getVar('key1', 'all');\\n\\n    for (var i in word1) {\\n        var a = word1[i];\\n        var b = class1[i];\\n        var c = a + '&' + b;\\n        d.push({\\n            title:  a == lab1 ? getHead(a) : a,\\n            url: $(\\\"#noLoading#\\\").lazyRule((c) => {\\n                putVar(\\\"lab1\\\", c.split('&')[0]);\\n                putVar(\\\"key1\\\", c.split('&')[1]);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, c),\\n            col_type: 'scroll_button'\\n        });\\n    }\\n}\\n//分类\\n//log(MY_PAGE)\\n\\nvar url = 'https://www.bilibili.com/v/popular/rank/all';\\n\\nMY_URL = url.replace('all', getVar('key1'));\\n\\nvar ym = request(MY_URL, {}).replace(/\\\\\\\\u002F/g, '/');\\nif (ym.includes('rank-tips')) {\\n\\n    /*提示信息\\n      d.push({\\n        title:'““'+parseDomForHtml(ym,'.rank-tips&&Text')+'””',\\n        col_type:'text_1'\\n      });\\n    提示信息*/\\n\\n    var pi = JSON.parse(ym.split('\\\"rankList\\\":')[1].split(',\\\"rankNote\\\"')[0]);\\n    for (var i = 0; pi != null && i < pi.length; i++) {\\n        var num = i + 1;\\n        var q = JSON.stringify(pi[i]);\\n        if (!pi[i].url) {\\n            var rurl = 'https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + pi[i].bvid;\\n        } else {\\n            var rurl = pi[i].url;\\n        }\\n        \\n        d.push({\\n            title: pi[i].title,\\n            pic_url: pi[i].pic + Referer,\\n            desc: (!q.includes('name') ? pi[i].new_ep.index_show : ('up: ' + pi[i].owner.name)),\\n            url: 'hiker://page/detail?url=' + rurl + '#immersiveTheme#',\\n            col_type: 'pic_1_card'\\n        });\\n        /*\\n        d.push({\\n                title:'No.'+num+'\\\\n\\\\n‘‘<small>'+pi[i].title+'\\\\n'+(!q.includes('name')?pi[i].new_ep.index_show:('up: '+pi[i].owner.name))+'</small>',\\n                pic_url:pi[i].pic+Referer,\\n                desc:'0',\\n                url:'hiker://page/detail?url='+rurl+'#immersiveTheme#',\\n                col_type:'pic_1_card'\\n              });\\n        */\\n    }\\n} else {\\n    d.push({\\n        title: '““节制一点，休息啦！””',\\n        col_type: 'text_center_1'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-up🐷\",\"path\":\"up\",\"rule\":\"const headColor = \\\"#358ccd\\\";\\n\\n//时间戳转换方法\\n/*\\nfunction getLocalTime(nS) { \\n     var sss = new Date(parseInt(nS)).toLocaleString().substr(0,17);\\n     var YMD = sss.split('日')[0].replace('年','-').replace('月','-');\\n     return (YMD)\\n}\\n*/\\nfunction getLocalTime(nS) {\\n    var date = new Date(nS);\\n    var YY = date.getFullYear() + '-';\\n    var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\\n    var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());\\n    var time = YY + MM + DD;\\n    return time\\n}\\nvar sr = `@lazyRule=.js:writeFile(\\\"hiker://files/bili/收藏.txt\\\",input);putVar('up','');putVar('UP','');putVar('set','');refreshPage(false);\\\"toast://切换成功\\\"`;\\n//时间戳转换\\n\\nvar uid = fetch(\\\"hiker://files/bili/up_cache.txt\\\", {});\\nvar UP_URL = 'https://api.bilibili.com/x/space/arc/search?mid=uid&ps=30&tid=0&keyword=&jsonp=jsonp&pn=' + pagenum + '&order=pubdate';\\nvar up_url = UP_URL.replace(\\\"uid\\\", uid);\\nvar xx = getVar('lb2').split('\\\\n');\\n//更新头像\\nfor (var k in xx) {\\n    if (!xx[k].split('##')[1]) {\\n        try {\\n            var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid=' + xx[k].split('&&')[1] + '&jsonp=jsonp', {})).data.face;\\n        } catch (e) {\\n            var pic = JSON.parse(fetch('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid=' + xx[k].split('&&')[1] + '&need_top=1', {})).data.cards[0].desc.user_profile.info.face;\\n        }\\n        var face = xx[k] + '##' + pic;\\n        var face = fetch(\\\"hiker://files/bili/up.txt\\\", {}).replace(xx[k], face);\\n        writeFile(\\\"hiker://files/bili/up.txt\\\", face);\\n    }\\n}\\n\\n\\n\\nif (MY_URL.split('#')[1] == '1') {\\n    var s_tab = fetch('hiker://files/bili/收藏.txt', {});\\n    if (getVar(\\\"access_key\\\") && getVar('starid')) {\\n        d.push({\\n            title: s_tab == '推荐' ? '🔴' + getHead(s_tab) : '⚪️推荐',\\n            url: '推荐' + sr,\\n            col_type: 'text_4'\\n        });\\n        d.push({\\n            title: s_tab == '收藏' ? '🔴' + getHead(s_tab) : '⚪️收藏',\\n            url: '收藏' + sr,\\n            col_type: 'text_4'\\n        });\\n        d.push({\\n            title: s_tab == '追番' ? '🔴' + getHead(s_tab) : '⚪️追番',\\n            url: '追番' + sr,\\n            col_type: 'text_4'\\n        });\\n        d.push({\\n            title: s_tab == '追剧' ? '🔴' + getHead(s_tab) : '⚪️追剧',\\n            url: '追剧' + sr,\\n            col_type: 'text_4'\\n        });\\n    }\\n    //自己的关注\\n    var starjson = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid=' + getVar('starid') + '&jsonp=jsonp', {}));\\n    d.push({\\n        title: (getVar('UP') == '关注' ? '☺️' : '') + starjson.data.name,\\n        pic_url: starjson.data.face + Referer,\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('UP', getVar('UP')=='关注'?'折叠':'关注');putVar('set','');clearVar('htm');writeFile('hiker://files/bili/收藏.txt','');refreshPage(false);'toast://'+getVar('UP','专注')\\\",\\n        col_type: 'icon_2_round'\\n    });\\n    //自己的关注\\n\\n    d.push({\\n        title: '<strong>' + '‘‘UP’’' + '</strong>' + (getVar('up', '折叠') == '展开' ? '🙉' : '🙈'),\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('up', getVar('up')=='展开'?'折叠':'展开');putVar('set','');writeFile('hiker://files/bili/收藏.txt','');refreshPage(false);'toast://已'+getVar('up','展开');\\\",\\n        col_type: 'text_4'\\n    });\\n\\n    d.push({\\n        title: getVar('set') != '' ? (getVar('set') == '置顶' ? '<strong>' + '““置顶' + '</strong>' : '<strong>' + '““取关””' + '</strong>') : '设置',\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('set', getVar('set','展开')=='取关'?'置顶':'取关');putVar('up','');putVar('UP','');writeFile('hiker://files/bili/收藏.txt','');refreshPage(false);'toast://'+getVar('set','展开')+'ing~'\\\",\\n        col_type: 'text_4'\\n    });\\n\\n    if (getVar('UP') == '关注') {\\n        if (getVar('htm') == '' || getVar('up') == '展开') {\\n            var urls = [];\\n            var surl = 'https://space.bilibili.com/h5/follow?type=follow&mid=' + getVar('starid');\\n            var id = surl.split('mid=')[1];\\n            var code = fetch(surl, {});\\n            var starlist = JSON.parse('{\\\"my' + code.split('{\\\"my')[1].split('}};')[0] + '}}');\\n\\n            var starls = starlist['list']['getFollowList-page-mid-' + id]['result'];\\n            for (x in starls) {\\n                var yurl = 'https://api.bilibili.com/x/space/arc/search?mid=' + starls[x].mid + '&ps=30&tid=0&keyword=&jsonp=jsonp&pn=fypage&order=pubdate';\\n                urls.push({\\n                    url: yurl.replace(/fypage/g, '1')\\n                });\\n\\n                if (getVar('up') == '展开')\\n                    d.push({\\n                        title: starls[x].uname,\\n                        img: starls[x].face + Referer,\\n                        url: 'hiker://page/gz2?url=' + yurl,\\n                        col_type: 'icon_round_4'\\n                    });\\n            }\\n        }\\n    }\\n    //关注列表\\n\\n    if (getVar('up') == '展开' && getVar('UP') != '关注') {\\n        for (var k in xx) {\\n            var st = uid == xx[k].split('&&')[1].split('##')[0] ? '✓' : '';\\n            var pic = xx[k].split('##')[1];\\n            /*头像获取\\n                try{\\n                 var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid='+xx[k].split('&&')[1]+'&jsonp=jsonp',{})).data.face;\\n                }catch(e){\\n                   var pic = JSON.parse(fetch('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid='+xx[k].split('&&')[1]+'&need_top=1',{})).data.cards[0].desc.user_profile.info.face;\\n                }\\n            */\\n            if (!pic) {\\n                var pic = 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif';\\n            }\\n            d.push({\\n                title: st + xx[k].split('&&')[0],\\n                url: 'hiker://empty#' + xx[k].split('&&')[1] + `@lazyRule=.js:input=input.split('#')[1];putVar2('uid',input);writeFile(\\\"hiker://files/bili/up_cache.txt\\\",input);putVar('up','折叠');refreshPage(false);\\\"toast://切换成功\\\";`,\\n                pic_url: pic + Referer,\\n                col_type: 'icon_round_4'\\n            });\\n        }\\n    }\\n\\n    //取关相关\\n\\n    if (getVar('set') == '取关') {\\n\\n        for (var k in xx) {\\n            var st = uid == xx[k].split('&&')[1] ? '✓' : '';\\n            var pic = xx[k].split('##')[1];\\n            /*头像获取\\n                try{\\n                 var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid='+xx[k].split('&&')[1]+'&jsonp=jsonp',{})).data.face;\\n                }catch(e){\\n                   var pic = JSON.parse(fetch('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid='+xx[k].split('&&')[1]+'&need_top=1',{})).data.cards[0].desc.user_profile.info.face;\\n                }\\n            */\\n            if (!pic) {\\n                var pic = 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif';\\n            }\\n            d.push({\\n                title: '❌' + st + xx[k].split('&&')[0],\\n                url: xx[k] + `@lazyRule=.js:var sc=input+'\\\\\\\\n';var xr=getVar('lb2')+'\\\\\\\\n';var xz=xr.replace(sc,'');writeFile(\\\"hiker://files/rules/js/up.js\\\",xz);refreshPage(false);'toast://取关成功！铁子再见🦆'`,\\n                pic_url: pic + Referer,\\n                col_type: 'icon_round_4'\\n            });\\n        }\\n    }\\n\\n    //置顶相关\\n\\n    if (getVar('set') == '置顶') {\\n\\n        for (var k in xx) {\\n            var st = uid == xx[k].split('&&')[1] ? '✓' : '';\\n            var pic = xx[k].split('##')[1];\\n            /*头像获取\\n                try{\\n                 var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid='+xx[k].split('&&')[1]+'&jsonp=jsonp',{})).data.face;\\n                }catch(e){\\n                   var pic = JSON.parse(fetch('https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?host_uid='+xx[k].split('&&')[1]+'&need_top=1',{})).data.cards[0].desc.user_profile.info.face;\\n                }\\n            */\\n            if (!pic) {\\n                var pic = 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif';\\n            }\\n            d.push({\\n                title: '🔝' + st + xx[k].split('&&')[0],\\n                url: xx[k] + `@lazyRule=.js:var sc=input+'\\\\\\\\n';var xr=getVar('lb2')+'\\\\\\\\n';var xz=xr.replace(sc,'');writeFile(\\\"hiker://files/rules/js/up.js\\\",sc+xz);refreshPage(false);'toast://置顶成功🔝'`,\\n                pic_url: pic + Referer,\\n                col_type: 'icon_round_4'\\n            });\\n        }\\n    }\\n\\n\\n}\\n//d.push({title:xx});\\nif (s_tab == '推荐') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/feed\\\")).rule);\\n} else if (s_tab == '收藏') {\\n    if (MY_URL.split('#')[1] == '1') eval(JSON.parse(fetch(\\\"hiker://page/video\\\")).rule);\\n} else if (s_tab == '追剧') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/dsj\\\")).rule)\\n} else if (s_tab == '追番') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/fanju\\\")).rule)\\n} else if (getVar('UP') != '关注' && getVar('up') != '展开' && getVar('set') == '') {\\n    var json = {};\\n    eval('json=' + fetch(up_url, {}));\\n    for (var i = 0; i < json.data.list.vlist.length; i++) {\\n        var r = {};\\n        var j = json.data.list.vlist[i];\\n        var t = Number(j.created) * 1000;\\n\\n\\n        var time = getLocalTime(t);\\n\\n        if (j.play > 10000)\\n            var play = (j.play / 10000).toFixed(1) + '万';\\n        else\\n            var play = j.play;\\n\\n        var pics = (j.pic.indexOf(':') != -1) ? j.pic : 'https:' + j.pic;\\n\\n        r.pic_url = pics + Referer;\\n        r.url = 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + j.bvid + '#immersiveTheme#';\\n        r.title = j.title;\\n        r.col_type = 'movie_1_vertical_pic';\\n        r.desc = '时长：' + j.length + '  播放量：' + play + '  发布日期：' + time;\\n        if (j.length != \\\"00:00\\\") {\\n            d.push(r)\\n        };\\n    }\\n} else if (getVar('UP') == '关注' && getVar('up') != '展开') {\\n\\n    if (getVar('htm') == '') {\\n        htm = [];\\n        var ym = batchFetch(urls).map(function(a) {\\n            var h = JSON.parse(a).data.list.vlist;\\n            htm = htm.concat(h);\\n        });\\n        htm = htm.sort(function(a, b) {\\n            return b.created - a.created;\\n        }).map(function(a) {\\n            a.created = getLocalTime(Number(a.created) * 1000);\\n            return a\\n        });\\n        putVar('htm', JSON.stringify(htm));\\n    } else htm = JSON.parse(getVar('htm'));\\n    var i = 0;\\n    var k = 0;\\n    var r = new Date();\\n    var M = r.getMonth() + 1;\\n    var tD = r.getFullYear() + '-' + (M < 10 ? ('0' + M) : M) + '-' + (r.getDate() < 10 ? ('0' + r.getDate()) : r.getDate());\\n\\n    for (var j = 0; j < htm.length; j++) {\\n        try {\\n\\n            if (j != 0 && htm[j - 1].created != htm[j].created) i++;\\n\\n            if (i + 1 == MY_URL.split('#')[1]) {\\n                if (k == 0) {\\n                    var date = htm[j].created;\\n                    k++;\\n                    if (date == tD) date = '<strong>今天</strong>';\\n                    d.push({\\n                        title: '““””<font color=\\\"#358ccd\\\">' + date + '<\\\\font>',\\n                        col_type: 'text_center_1',\\n                        //url:`@lazyRule=.js:clearVar('htm');refreshPage(false);'toast://刷新成功';`\\n                    });\\n                }\\n                if (htm[j].play > 10000)\\n                    var play = (htm[j].play / 10000).toFixed(1) + '万';\\n                else\\n                    var play = htm[j].play;\\n                d.push({\\n                    title: htm[j].title,\\n                    img: ((htm[j].pic.indexOf(':') != -1) ? htm[j].pic : ('https:' + htm[j].pic)) + Referer,\\n                    desc: 'UP:' + htm[j].author + '  时长：' + htm[j].length + '\\\\n播放量：' + play + '  发布日期：' + htm[j].created,\\n                    url: 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + htm[j].bvid + '#immersiveTheme#',\\n                    col_type: 'movie_1_vertical_pic'\\n                });\\n            } else if (i + 1 > MY_URL.split('#')[1]) {\\n                break;\\n            }\\n        } catch (e) {}\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-时光🐔\",\"path\":\"sgj\",\"rule\":\"//分类\\nvar pagenum = MY_URL.split('#')[1];\\nif (MY_URL.split('#')[1]=='1'){\\nvar c2 = '22&212&71&182&138&28&33&185';\\n\\nvar w2 = '鬼畜&美食&综艺&影视&生活&音乐&番剧&电视剧';\\n\\nvar word2 = w2.split('&');\\nvar class2 = c2.split('&');\\nvar lab2 = getVar('lab2', '鬼畜');\\nvar key2 = getVar('key2', '22');\\nfor (var i in word2){\\n    var a = word2[i];\\n    var b = class2[i];\\n    var c = a + '&' + b;\\n    d.push({\\n    title: a==lab2? getHead(a):a,\\n    url: $(\\\"#noLoading#\\\").lazyRule((c)=>{\\n        putVar(\\\"lab2\\\",c.split('&')[0]);\\n        putVar(\\\"key2\\\",c.split('&')[1]);\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }, c),\\n    col_type:'scroll_button'\\n    });\\n}\\n}\\n//分类\\n\\nvar m = Number(fetch(\\\"hiker://files/bili/mouths.txt\\\",{}));\\nvar t = m<0?0:m;\\nvar num1 = Number(t)-12;\\nvar num2 = Number(t)+12;\\nvar num3 = Number(t)-1;\\nvar num4 = Number(t)+1;\\n//var timestamp = Date.parse(new Date());\\nvar timestamp = new Date().getTime();\\nvar stamp1 = timestamp - t*30*24*60*60*1000;\\nvar stamp2 = timestamp - (t+1)*30*24*60*60*1000;\\n/*\\nfunction getLocalTime(nS) { \\n     var sss = new Date(parseInt(nS)).toLocaleString().substr(0,17);\\n     var mm = sss.split('年')[1].split('月')[0];\\n     var dd = sss.split('月')[1].split('日')[0];\\n     var YY = sss.split('年')[0];\\n     var MM = (mm< 10 ? '0' + mm:mm);\\n     var DD = (dd< 10 ? '0' + dd:dd);\\n     return (YY+MM+DD)\\n}\\n*/\\nfunction getLocalTime(nS) { \\nvar date = new Date(nS);\\nvar YY = String(date.getFullYear()); \\nvar MM = String((date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)); \\nvar DD = String((date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate())); \\nvar time = YY + MM + DD;\\nreturn time\\n}\\n//时间戳转换\\nvar time1 = getLocalTime(stamp1);\\nvar time2 = getLocalTime(stamp2);\\nvar SGJ_URL = 'https://s.search.bilibili.com/cate/search?main_ver=v3&search_type=video&view_type=hot_rank&order=click&copy_right=-1&cate_id=22&page='+pagenum+'&pagesize=10&time_from=time2&time_to=time1';\\nvar URL = SGJ_URL.replace('time1',time1).replace('time2',time2).replace('22',getVar('key2')!=''?getVar('key2'):'22');\\nvar json = JSON.parse(request(URL,{}));\\n\\nif (MY_URL.split('#')[1]=='1'){\\nd.push({\\n          title:'+1年',\\n          url:\\nnum1+`@lazyRule=.js:writeFile('hiker://files/bili/mouths.txt',input);refreshPage();'toast://切换成功 '`,\\n          col_type:'text_4'\\n       });\\nd.push({\\n          title:'-1年',\\n          url:\\nnum2+`@lazyRule=.js:writeFile('hiker://files/bili/mouths.txt',input);refreshPage();'toast://切换成功 '`,\\n          col_type:'text_4'\\n       });\\nd.push({\\n          title:'+1月',\\n          url:\\nnum3+`@lazyRule=.js:writeFile('hiker://files/bili/mouths.txt',input);refreshPage();'toast://切换成功 '`,\\n          col_type:'text_4'\\n       });\\nd.push({\\n          title:'-1月',\\n          url:\\nnum4+`@lazyRule=.js:writeFile('hiker://files/bili/mouths.txt',input);refreshPage();'toast://切换成功 '`,\\n          col_type:'text_4'\\n       });\\nd.push({\\n          title:getHead(('当前时间线: '+time2+'~'+time1)),\\n          \\n          col_type:'text_center_1'\\n       });\\n/*\\nd.push({\\n          title: getLocalTime(timestamp). split('日')[0],\\n          \\n          col_type:'text_center_1'\\n       });\\n*/\\n}\\n/*\\nd.push({\\n          title: getLocalTime(sss),\\n          \\n          col_type:'text_center_1'\\n       });\\n*/\\nfor (var i in json.result)\\n{\\n var r = {};\\n var j = json.result[i];\\n if (j.play>10000)\\n    var play = (j.play/10000).toFixed(1)+'万';\\n else\\n    var play = j.play;\\n d.push({\\n          title:j.title,\\n          img:'https:'+j.pic+Referer,\\n          desc:'up🐷:'+j.author+'\\\\n播放量: '+play+'        发布日期: '+j.pubdate/*+'\\\\n描述:'+j.description*/,\\n          url:\\n'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + j.bvid+'#immersiveTheme#',\\n          col_type:'movie_2'\\n       });\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面-二级\",\"path\":\"detail\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\n//log(MY_RULE.title)\\nvar Referer = '@Referer=http://www.bilibili.com';\\n//颜色\\nvar Colors = [\\\"4\\\", \\\"5\\\", \\\"0\\\", \\\"1\\\", \\\"A\\\", \\\"3\\\", \\\"8\\\", \\\"9\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"6\\\", \\\"7\\\", \\\"F\\\"];\\nvar Color = '#';\\nif (getVar('YS') == '随机') {\\n    for (var i = 0; i < 6; i++) {\\n        var num = Math.ceil((Math.random() * 15)) - 1;\\n        var Color = Color + Colors[num];\\n    }\\n} else {\\n    var Color = \\\"#FA7298\\\";\\n}\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\n\\nd.push({\\n    desc: '258&&float',\\n    col_type: 'x5_webview_single'\\n});\\nvar bangumi = getResCode();\\nif (MY_URL.indexOf('api.bili') == -1) {\\n    try {\\n        var a = fetch(MY_URL, {});\\n        var b = JSON.parse(a.split('\\\"epList\\\":')[1].split('}]')[0] + '}]');\\n        //log(b)\\n        var rurl = 'https://api.bilibili.com/x/web-interface/view/detail?aid=&bvid=' + b[0].bvid;\\n    } catch (e) {\\n        var a = fetch(MY_URL, {\\n            redirect: false\\n        });\\n        var b = a.split('video/')[1].split('\\\"')[0].split(\\\"?\\\")[0];\\n        var rurl = 'https://api.bilibili.com/x/web-interface/view/detail?aid=&bvid=' + b;\\n    }\\n    var bangumi = fetch(rurl, {});\\n}\\nvar json = JSON.parse(bangumi);\\nvar v = json.data.View;\\nvar p = v.pages;\\nvar card = json.data.Card.card;\\nvar related = json.data.Related;\\nvar ts = new Date().getTime();\\nvar like_url = 'https://app.bilibili.com/x/v2/view/like';\\nvar coin_url = 'https://app.bilibili.com/x/v2/view/coin/add';\\nvar add_url = 'https://api.bilibili.com/pgc/app/follow/add';\\nvar del_url = 'https://api.bilibili.com/pgc/app/follow/del';\\nvar content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\nvar c_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&avtype=1&build=6130400&c_locale=zh_CN&channel=master&from=7&from_spmid=tm.recommend.0.0&mobi_app=android&multiply=1&platform=android&s_locale=zh_CN&select_like=1&spmid=main.ugc-video-detail.0.0&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&upid=0&sign=8abbddd87a6bd82e1e42cb3cffd32bb9';\\nvar l_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=master&like=0&mobi_app=android&platform=android&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&sign=4a08645c2994eb692ac0cfb0bd7569c6';\\nvar xlxz = \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\";\\nvar jxgl = \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/jxItem.js');jxItem.jxList();setResult(d)\\\";\\nif (v['redirect_url']) {\\n    var redirect = v['redirect_url'];\\n    var ym = fetch(redirect, {});\\n\\n}\\n\\nevalPrivateJS(\\\"XUiFT1vXYWrUw+Vhpnqlg0N0vAWgpglh8MhZ+9vPD99NJ5VgeFdHmwaKawIy6C0h6FFQhEQ5RhJmV0EQHnL9xybPHAchAL7hZEZd+hbGHV5jeG+nK5Q3ie78puGDb1TJ4fAI7g6ezLIjQMBxN/2XM92YNNPKDHdhLIMQGV69Mq8cTOWjKpZQp0/vgNuxaPQKEzSdHQJue7tTxdSEvDt3s/txdEh/oGzFCCNWeZCUU53zhEhC06q6ZFjZCM+d8FsZ5cXlNJemtegMgJULdTqaVdRwVhVX+1uBQ9Ny0DpsNGx2LwHgOjls9hw14LhEqthEe73yPBGvSgKEBdSYgG7cK7hYVTENeGTiRAzKPQ7jGEqEJ8aadHOHAeSa25aBbzc81hhxgXtialX8Uqepn7k4g2GksqoG3JVI+qTfWZxPWqNM/0jUXbrUTCRZnrzGVow6NwPQXKq3CDKl9i+aZveWz5If5ENEZGiWlW5z4aJSEcexCDsiZlo1/QJIj2rWonE0u54ah2/ZZ//ZGoMBJ+d19GmepkLBD3n2qogKnjZj2rjWqgPadEee1ZIhZ3SGbmTlJf1A4BYIuuPwv4dGZdRoDW64BhC5juCn6wDm7Ymy7BXf1sQaFimEnrSIiHGhM+WKg3IyWecuh/Gk++MmN6AxxcvNAyp8bC4hzBMvZJ/l5tRyapomdCV5BpiXfjkWRnbopIjI+WKB3fCaYyRdeNLERKnElscDiz7UenLprhYc/a4LsGeMMFVZ8Yo8/wGYH38J\\\")\\n\\nvar purl = 'https://www.bilibili.com/video/' + v.bvid;\\nvar mode = fetch(\\\"hiker://files/cache/bilibili.txt\\\", {});\\nvar mode_url = `@lazyRule=.js:writeFile('hiker://files/cache/bilibili.txt',input);refreshPage();'toast://切换成功, 点个视频试试吧(^_^) '`;\\nvar zl = \\\"hiker://empty@lazyRule=.js:putVar('page', getVar('page')=='直链'?'关闭':'直链');refreshPage();if(getVar('page')=='直链'){'toast://点击下方切换清晰度🤟'}else{'toast://已关闭'}\\\";\\nif (mode == 'yhc') {\\n    var lazy = yhc\\n}\\nd.push({\\n    title: v.title,\\n    desc: '描述: ' + v.desc + '　类型: ' + v.tname,\\n    url: purl,\\n    img: v.pic + Referer,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '  ' + card.name,\\n    pic_url: card.face + Referer,\\n    //url: 'hiker://page/gz1?url=https://space.bilibili.com/h5/follow？？type=follow＆＆mid=' + card.mid,\\n    url: 'hiker://page/ss?url=https://api.bilibili.com/x/space/arc/search？？mid=' + card.mid + '＆＆ps=30＆＆tid=0＆＆keyword=＆＆jsonp=jsonp＆＆pn=fypage＆＆order=pubdate',\\n    col_type: 'icon_2_round'\\n});\\nd.push({\\n    title: '““⭐️Star””',\\n    url: 'hiker://empty#' + card.name + '&&' + card.mid + `@lazyRule=.js:input=input.split('#')[1];var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid='+input.split(\\\"&&\\\")[1]+'&jsonp=jsonp',{})).data.face;if(!getVar('lb2').includes(input.split('&&')[1].split('##')[0])){var xr=getVar('lb2')+'\\\\\\\\n'+input+'##'+pic;writeFile(\\\"hiker://files/rules/js/up.js\\\",xr);'toast://关注成功'}else{'toast://年轻人，耗子尾汁'}`,\\n    col_type: 'text_2'\\n});\\n\\nfunction request_bili_api(baseUrl, SecretId, SecretKey) {\\n    if (!SecretId || !SecretKey) return request(baseUrl)\\n    eval(getCryptoJS())\\n    let nowDate = new Date();\\n    let dateTime = nowDate.toUTCString();\\n    let source = 'bili-api';\\n    let auth = \\\"hmac id=\\\\\\\"\\\" + SecretId + \\\"\\\\\\\", algorithm=\\\\\\\"hmac-sha1\\\\\\\", headers=\\\\\\\"x-date source\\\\\\\", signature=\\\\\\\"\\\";\\n    let signStr = \\\"x-date: \\\" + dateTime + \\\"\\\\n\\\" + \\\"source: \\\" + source;\\n    let sign = CryptoJS.HmacSHA1(signStr, SecretKey)\\n    sign = CryptoJS.enc.Base64.stringify(sign)\\n    sign = auth + sign + \\\"\\\\\\\"\\\"\\n    return request(baseUrl, {\\n        headers: {\\n            \\\"Source\\\": source,\\n            \\\"X-Date\\\": dateTime,\\n            \\\"Authorization\\\": sign\\n        }\\n    })\\n}\\n\\neval(JSON.parse(fetch(\\\"hiker://page/api\\\")).rule)\\n\\n//自定义api项\\nvar mApi = {\\n    author: '',\\n    type: '',\\n    id: '',\\n    baseUrl: '',\\n    secretId: '',\\n    secretKey: ''\\n}\\nif (mApi.baseUrl && mApi.secretId && mApi.secretKey) {\\n    putVar('api', JSON.stringify(mApi))\\n}\\n\\nvar apiIndexStr = getVar('apiIndex', '')\\nvar apiIndex = parseInt(apiIndexStr)\\n\\n\\ntry {\\n    if (v['redirect_url']) {\\n        var ep = JSON.parse(ym.split('\\\"epList\\\":')[1].split('}]')[0] + '}]');\\n        var season_id = ym.split('\\\"season_id\\\":')[1].split(',')[0];\\n        //log(season_id)\\n        putVar('aid', String(ep[0].aid));\\n        d.push({\\n            title: mode == '直链' ? getHead('直链') : '直链',\\n            url: '直链' + mode_url,\\n            col_type: 'text_2'\\n        });\\n        d.push({\\n            title: mode == '断插' ? getHead('断插') : '断插',\\n            url: (mode == '断插' ? xlxz : '断插' + mode_url),\\n            col_type: 'text_2'\\n        });\\n        if (getVar('like_type') === '开启' && getVar('access_key')) {\\n            d.push({\\n                title: '点赞',\\n                url: $(like_url).lazyRule(() => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var l_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=master&like=0&mobi_app=android&platform=android&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&sign=4a08645c2994eb692ac0cfb0bd7569c6';\\n                    var l_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: l_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(l_code);\\n                    return 'toast://' + l_code.data.toast;\\n                }, ),\\n                col_type: 'text_4'\\n            });\\n            d.push({\\n                title: '投币',\\n                url: $(coin_url).lazyRule(() => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var c_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&avtype=1&build=6130400&c_locale=zh_CN&channel=master&from=7&from_spmid=tm.recommend.0.0&mobi_app=android&multiply=1&platform=android&s_locale=zh_CN&select_like=1&spmid=main.ugc-video-detail.0.0&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&upid=0&sign=8abbddd87a6bd82e1e42cb3cffd32bb9';\\n                    var c_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: c_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(c_code);\\n                    return 'toast://投了1个币';\\n                }, ),\\n                col_type: 'text_4'\\n            });\\n            d.push({\\n                title: '追番',\\n                url: $(add_url).lazyRule((season_id) => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var add_body_txt = 'access_key=' + getVar('access_key') + '&appkey=1d8b6e7d45233436&build=6091000&c_locale=zh_CN&channel=master&mobi_app=android&platform=android&s_locale=zh_CN&season_id=' + season_id + '&statistics={\\\"appId\\\":1,\\\"platform\\\":3,\\\"version\\\":\\\"6.9.1\\\",\\\"abtest\\\":\\\"\\\"}&ts=' + ts + '&sign=c64b4c50832d29e40a3ddeded3667135';\\n                    var add_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: add_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(add_code);\\n                    return 'toast://' + add_code.result.toast;\\n                }, season_id),\\n                col_type: 'text_4'\\n            });\\n            d.push({\\n                title: '取消',\\n                url: $(del_url).lazyRule((season_id) => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var del_body_txt = 'access_key=' + getVar('access_key') + '&appkey=1d8b6e7d45233436&build=6091000&c_locale=zh_CN&channel=master&mobi_app=android&platform=android&s_locale=zh_CN&season_id=' + season_id + '&statistics={\\\"appId\\\":1,\\\"platform\\\":3,\\\"version\\\":\\\"6.9.1\\\",\\\"abtest\\\":\\\"\\\"}&ts=' + ts + '&sign=c64b4c50832d29e40a3ddeded3667135';\\n                    var del_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: del_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(del_code);\\n                    return 'toast://' + del_code.result.toast;\\n                }, season_id),\\n                col_type: 'text_4'\\n            });\\n        }\\n        d.push({\\n            title: '',\\n            col_type: 'blank_block'\\n        });\\n        \\n\\n        for (var i = 0; i < ep.length; i++) {\\n            var badgeType = ep[i]['badgeType'] === 0 ? ((ep[i]['badge'] != '') ? '💰' : '🆓') : '📢';\\n            var badge = ep[i]['badge'] ? '[' + ep[i]['badge'] + ']' : '';\\n            \\n            \\n            if (mode == 'X5') {\\n                var purl = 'x5Rule://' + jx + 'https://www.bilibili.com/bangumi/play/ep' + ep[i]['id'] + '@';\\n            } else {\\n                var purl = 'https://www.bilibili.com/bangumi/play/ep' + ep[i]['id'];\\n            }\\n            var pics = (ep[i]['cover'].indexOf(':') != -1) ? ep[i]['cover'] : 'https:' + ep[i]['cover'];\\n            var titles = (ep[i]['titleFormat']) ? ep[i]['titleFormat'] : ep[i]['title'];\\n            var desc = (ep[i]['longTitle']) ? ep[i]['longTitle'] : (ep[i]['long_title'] ? ep[i]['long_title'] : '');\\n            evalPrivateJS(\\\"ifnzqaNqNRkN6NqG0fZx5Mey477OsMJOTbTd9SajMkfDOROuKjiMBEfpnBNelGUf439AuJpe0uRN1tbE1iU505SjkUAQ8OZuVkDnlBS9g9E9/VanAaokIWZavQEvqbKiNiMke1McNDMd0jDhFfVFZp+QF4KA8PGkCuDPJpybpGzE80ENP25YDL2ym/UTUroW8PSN09OliH3GcWn6JfNMZE4BvQoFJfg2Wvv4QWCECG1FHDKOZynsYf1csVIube8F65dtRE7guR5878/PUJXQgDob5t2YUO5QzzMckrE1ws3waG0pnD64qkNH2EsIlCcCvBz7YigC9IpH1qm6p8i+iX3xBPpB66LD91gPyzprzMO/sa3RXVWOLtegL/fBIkVHaflSZcKzb7HV2720nzizNhSysNeEK97qs6g1B6w5TcdST7mEXx55LNTuf/24o0yyCrv4SJLuXWEvO9Rx0jazjlyWiahE08xzwzR8kyjrdL1g22CZSPKbTOrHId5LbJQdVsEv0WDl/xtINRS3VYKZ/nHuGPF8QLAlANPzotDGkkd9GpJDMsXjnmUOWIPgmwAjFBk/W2E3WSbiXl8EtJPgQz3F4VdkNdvpoW98rXMeM4CRkS7Tn/5KIFEj7rF3//cpkawkCDzrgnGcIsFN+S1UecHkhy474TTxWH1FMy8nP6edKjaCx87Uf7F+kn/nn6MpVGfwwz/yP3YG3oJVGlEv+WkuFAeQMXY4QnRywcHEeQ+s2u13NAWcvUI6MnyOqIwqyC4P4lDEmIZnWDXjUGYuzi/L5m03mD6TiwhFzrtd+h36mgLtepSf3TVAou3Odbxx032mdUEj5PFDTxkEaG2reoZBEOTmiC349OwuXXQe1fwGHweG+69r6d+KNWjENYUFNp/c7FmedsuzwherJ1Tx6Lz41aofOvL54R9lugrC32tbVXbqiKUVjJcVn6/sQcTwALSZopivMM4HVNF3mY2XL8Z+mpWknqDB/HwNIaCmKN7LK8tI1lZz+wif+9ZIAdT2S+vVNx4gsUMmsXVxo3GOs2qA+xrP+jxxMSaRTGKNuYbNSXzLacox9RO8cpVRDqzooTOtofFUAf0o+ZDW6ls0ncsry0jWVnP7CJ/71kgB1PZYSXTuCueofa6U1/WJAHNhnrBOb/XNpSEAqnw9VAFSyj66IyT77EGwvWF7+YQOLOImj03ePTIUD5ZQ1B36BU7BAUcQLDF7uVXbD1vFgE/+RTOSBx/GcwljIlXS9lAAk2FST7mEXx55LNTuf/24o0yyOxdiuWuJfMg82BXdEjuQvRktzoJQA9hjf1ItpuWmiqBwdf/L0KOx26r2M8pjSh9EwzkTrio4jARH6ZwTXpRlH0MgUNg70Ah0WIfQQup+cVx6k/3CbWqwIs+Abz9FF2uh9eOPd4LPnBxuBhZ2eu1IXBriMaDios6MMFSgUNwqDAcEgmYFJ3y3GJ3LF8SAltDjZhZuRpAU3R9uFNsaaCsfZQZJUz11z0S4iQP4DDLU0CTLK8tI1lZz+wif+9ZIAdT226Bz6coA/EwoqJh/Rm6e2m4D89nQeKUsDYNqKNMolRn8UFR75EW6RECTvmx5EId8yw8f1Hm3aY+LdJQZXeD39Z6SY106WOi/NgU68YqquHq6M2zjAjwQR/9MWWDyCqAJ1Rxz7QS8rAQIKHN1w1fldatU+xddihg2OsVxzp2/jIKChaxCm1L4g8OBR9luQhZSc3pmUonNsxwDxfp1bKOiUZB1waMrhXuS1Zb1XXHTvp4ujMwWmeZCN0UJK4PiFU8VuA9eydBbeoA+4+FX/UdQd7A7myUV+iA2T84/LcEOknLMTQpGCS1EXe3BZkTWzKjSweAQxZC2dkjiKM/y/7otKMslW0I34uq5x16ZgN1Ve1DalH+mvQJyWUy1lXU+17sszpQy+w7887DkJyvv2wnOJ5H/oeFhJvCVgpzhTcrGJI+zdar88CwZFq1aLsesH82EReXPq0OipU1agFu6Pz699t7N3s43mj9IP1ydzidsSC3LK8tI1lZz+wif+9ZIAdT2gLp+95TCD6F9IOfki/TuBFgjfCA8nlkgcSdQn/zbPd215HhjuM0mrP9yo9u+SMonyyvLSNZWc/sIn/vWSAHU9u8Z7/VtL2Iowatt3WsUHHVcaIkN0mxPZqbwJ3gos/GXyyvLSNZWc/sIn/vWSAHU9rPcwdhZZ4rPEmryQnZQm8lXwYjKA4x4Lsd/b3LcMb53zpQy+w7887DkJyvv2wnOJ/yAxBRPiz4JV6Wv1ojQpL9ftH2H9KEzljdd1DyE6OfryyvLSNZWc/sIn/vWSAHU9nfPhoFnBOKoX6tXU1Z0pKuMqeGBOigut3lp9Neij3fryyvLSNZWc/sIn/vWSAHU9iC/+2L/5n3HIf3sBNbMgdYCvPYuExCtLFS2laxcNJPuyyvLSNZWc/sIn/vWSAHU9gMNEHXarXrhx5hcEf59Z6ayC2Qpmg/kX43H0V8lHh2e7To78CR7N3yP0g4O4gs7QMsry0jWVnP7CJ/71kgB1PY499mp8Ss/C3x8mWijcUehq+QbzhgFaUu/mtruJkf1F8sry0jWVnP7CJ/71kgB1PYb2nuBAz5B7HqFzTO+cTZyhSI7KIP1yE1QhNGrFnh1dYkiROfGNAIRxC9aO/sZ8Qs8ybKKCa6AbUkiFoh0NSCOzpQy+w7887DkJyvv2wnOJ2ZYP+k3GQK13mTwfj4xG8CRazdyKeMQMjS7vgAm9SnkvoWK/LaSyfHegiCj+vwqtigeIRz+OHmnKLm/+WCPa07QRHd9s293TBOS4ZGXMQWCLfcWL/263r2vJOE5LC1SL5c2kZ2go1oAD7j0N+Lj82AAjUIRjIh3DuA6CCokXk5EoTDjzuJqTFz8dMbdqlxSUn63ewQrw0pCpTMadk/mjCcWFrR2NQps1ql87iJjzhUKIPYtOAPxJDecXVNkiieEDRfvXorue+0i/NtarjXWkVsAjUIRjIh3DuA6CCokXk5EYfv/LIjeTm8KQw1w+mcqbSgeIRz+OHmnKLm/+WCPa05scP4Vc84uQJxMI333VuE2yyvLSNZWc/sIn/vWSAHU9jsKK2OXSAcFJrzcjkzmF/8JWUEhEETEm3JBOJsGtEIInQ66eoTKYzCLJFSB+lgarnbxoSqyyI8mtdcgadizLcxgJZ1ZE3nK8saN+4RmLfH/yyvLSNZWc/sIn/vWSAHU9sECa8kD2WIf5sJKoSWzx/vh+dcbbd86BfQ1L1frCRBaxl78CHy1o6wJYEbOY2kC4s6UMvsO/POw5Ccr79sJzid6ys/U4G2Yo3daSBHBJKQYyyvLSNZWc/sIn/vWSAHU9ha/T2uOkP2SuGVSMl9rO54cQv/VXTtCmnyTaI3ObQoDb7OxV1BN0EHre/Qn3qaxMeQb7KJysYZqEBkl2p/iOVZgofy7CgzgNDGN/vGN+gF/6yaep+Cqq2uENopg0DzxT6dqLBEW3YEe6P2CVnFoT4safrkGxRLTzKaYLIse6JHZVqQhdYQROQE9uh0305JGqVtVduqIpRWMlxWfr+xBxPDrqqijydiHEoEPgHtWbcGdVIhZnhvsNBB2/ActWunxaQoc9eslFcAtkx405Da0Smg+Qx5mvD0G4r13yLdhsZj2coE1P0rih5kzUIufhgmc6xb2pJZIRW+v5beW8XtB8ZXLK8tI1lZz+wif+9ZIAdT2pXyOIaPCE5p5Zix46nk9DHuPjD6F0wH0OsopbZpKRYlCqh/8mfcpkvk9DQiiLS+DyyvLSNZWc/sIn/vWSAHU9hrcf6tD/pVfB/C1VeadWT8Kuz98ezbHUXIvS2NF6v241yRW1e9gUJY8FCvehld2kMsry0jWVnP7CJ/71kgB1PY7HnWgXJxWHIT73cC477SHS4hhctMCABzwmTnoFGeTbdNyJKgl7kKSAsF/GoU+MRLAYwNNXGF30y3D6ZeMv8DOMvsVGdXHtj24ZUfwDWsJMssry0jWVnP7CJ/71kgB1Pae6Oz+4q6AA0hwe/i2W6uwN0rejCV4gslmaisTC+96VMsry0jWVnP7CJ/71kgB1PZqrvpI1SzTj1LoJgIVEOZ1yyvLSNZWc/sIn/vWSAHU9uPW2wvyCZBpDNV2ymUSpT72Gvzz1PBNpxp0x1DWY+5E9tR+fphIuUWntSI7UeSjjA+0oEMTri54LueTv7Cgegmy37+AYlQuF1CbaoH/F+QJiVSn2X6OK90RfEqjkC/rISYz/7ucp6aM3T19cJpxErHLK8tI1lZz+wif+9ZIAdT2NIiMiFGSCnFP8oy/qIfyWVYcnW2Pz9FMIXQKXZ/pbBNsUlhwxoWWeYyKzYAtU40+zpQy+w7887DkJyvv2wnOJ/Lna5WsLxZNcigrp0bUBOgy+TMU24nlgBzyoFsJYBZfH/Yo1VgO7MDag4WzO0XKw7o8AcRlRa4q4MopNsg++wPLK8tI1lZz+wif+9ZIAdT29AuB4jPcX1d/3Al+JEueD3BnjkJc0bH5Lw41G7RxBjIT1yzPhXceXQmEcmcwv8Ysma3dUaD2drvtELW7CtroEac0OOvZZ3aSYa8GnsofqBzDLtiYwcAOSy6Y3keuOVXgINVANGbGMD1YQlpco/r3A86UMvsO/POw5Ccr79sJzid9eOwQAeLNn1nbRN357RSnV9cbvPX4RmacCPMqkKefXQqsALsoc7TsANcYPWB73UuwtKSPOQtCSfJpJ1LTRaQenv1rVnIOPWi2tuoOISVN7HbxoSqyyI8mtdcgadizLcwctzldM94mMsLHtHp5FQM3PcXhV2Q12+mhb3ytcx4zgJGRLtOf/kogUSPusXf/9ymRrCQIPOuCcZwiwU35LVR5weSHLjvhNPFYfUUzLyc/p5QP4s3VcKT0kLr8lkGEljqIRrgWmuzZk5ccg0RtCQ80VdkcQaDmZ3knZiEYGf3a2Zgeqb6UptiARCZxUWlgnpCjpmp6wcko0KC1zsLeSfE+fG8IuJeSqYjcbLPX2mB1k43g0G9SRRiD5I7oM8Z3C8SYkLfa3w2+6zr1GXg+WmMqrFQUZs4WXcH4QDIxtc60nMUX6L1WXOUUxnM5fLYgiEA8ALsIirtBl+EO1OL99lG8RK7ulob//MAk+7DQDUnnpNUlgu8iL8wOo+5aioIKspoRkmsGzkHxkMGSNp9DixGlz/lrA0NJdefPGGHOctb8luIFMctyou8hQD4XSq8gif4Y00SUHEw52usj0n7Hgg7a4xyQlZwHY2T97JKgsF/7sY1usvS5uwGf4Mudr9hz/O528aEqssiPJrXXIGnYsy3M2Ta73v038aKnvRmxlqut/QECkY8H5a38LW+DNrbNx9dp8KuNSlK5MYuhCwMpEApbfaA5yyBz/uO5NBGLvAhsIRclqnf/xBTzoXOSRZmfgRdSvaJhsEqRlmKm3znyd0gEaF0/XoVomAn1lFFE90CISa3r02DYkFNM/R3bVCunL+Dt7wpeDLAIf7VwYPeXX5FaLGj4T8vs5JN84DLP4kuG9dgx9zMpdzUAjAnOagvROERfG+O8GOZ6UIpzTc0NHBRxa23oNfZjZ0AHx3xoV+aTBvD25SdnNbUpKX7SC+CPfw4UFyYiv7M+zB4OhCIERyeBrPDLMW78J+FTgtb21D8lwOPq0kXp0mMhJWH9tKgQUuUTew3bBvwW0vTRX9ODo/rri0Nx9MmGIi10ubZi0BtPSgazxKF0M3q0B/zm6iJlyYd6rBUDgUuKuJKEaO3SSXstI/zc0JqXwvhdlPg+kqiIp+Pq0kXp0mMhJWH9tKgQUuUTew3bBvwW0vTRX9ODo/rrYAr8jyl15bQeWa1I1F9Bi/D25SdnNbUpKX7SC+CPfw5tZJPMadsBQkNJJhVH6cWac+VKS3L/wpOYV1kMJZi3FpXigOhEEX5z8ZASy345GhMqN9Ew4TOvoueBhYQjn69sfrd7BCvDSkKlMxp2T+aMJ8c9ckIV3I4E+Y+fatjNjVAt9xYv/breva8k4TksLVIvUvWzznVEGnkR6bEOv5coUQCNQhGMiHcO4DoIKiReTkSe7k+oSBAx6g/DlcjvS8iNKB4hHP44eacoub/5YI9rThxKOnVE6GuAIKg/YeWhDFzLK8tI1lZz+wif+9ZIAdT2uonDtefsMfmeiOTUE3nRrdi2Bhs4K477yVhpId24yg1jkH7fX+dTRAnoCiUFk6PkyyvLSNZWc/sIn/vWSAHU9pkWVHRgVYch+yvGtxGbHkx8bwi4l5KpiNxss9faYHWTrCI/rLjnzwNqmoge+VLXLcsry0jWVnP7CJ/71kgB1PbB491FigEE8ioWUjFWl/qBBaR9D4u+inBm6GINm0z2tigTV7pdGoDntqSCEnJrByg/ugssJDkf3NSBH/L73oJzTjDu3yq/eWY+BrzMVznXPFCcau2owXLB2xdZIDEs6zGQ4Mom2oy5ok+C+FKx0UyfueEfQjqq9cvP0UL1gZdbfqNgBt5u+up3MOupcUM4SrvLK8tI1lZz+wif+9ZIAdT2G9p7gQM+Qex6hc0zvnE2cprQhjUv+q6l5wniSmjRTSsC+wgHcn2sioXgt+oaMzt2yyvLSNZWc/sIn/vWSAHU9loUUG6+CFawO0qD96GLRxgbaYdjpIt6mvU/lX4PQwW4Sox87mIxALZ3SDounDD9XJ19yZMuLyIMVWsuHV4oXw5GXdGC1Q+NF0ZXgNowz/AiPdSxMn8RVGSYYl1aJ73489kdjGK6o0S0hpu1AoKc+5LLK8tI1lZz+wif+9ZIAdT2mytU95BsMEe25sCo+roq8Msry0jWVnP7CJ/71kgB1PZejQt2JQC2JnVSWXfivuTLgnkFmvIQa0ym/RRzDPtogZg8zFY/MemHsm0B/fn3Gp9qYN5mT23Uhp1rOtrIjtjAyyvLSNZWc/sIn/vWSAHU9tEmQOPZJQniLc2W/EWcRn8tLOjqKsTTqCBfWVpxuY6fY1KsjBMVM8CCzji3cGMel8sry0jWVnP7CJ/71kgB1PZFbHl6gghp1U4VUzSNPCxNyyvLSNZWc/sIn/vWSAHU9iJGiMCebYgiwjZIrN8gLi3ca3ZpVg7O9aaIG1rFC7OdMXRanpsdHtzLAS87JTdtMTINnVu+ybLi6+zNf4q/PHfLK8tI1lZz+wif+9ZIAdT20nOKPt4mZWkrp2FKVxj0dW64kp9rzGco4ZXlfXkE+wZz+PPAiZHJitPQLLv4aMgJ8oOtEbBgx0Hq9Rt2S4gDow==\\\")\\n            \\n            var dc = $(purl).lazyRule(() => {\\n                eval(\\\"var config =\\\" + fetch(\\\"hiker://files/rules/DuanNian/MyParse.json\\\"));\\n                eval(request(config.settings.cj));\\n                return aytmParse(input);\\n            });\\n            d.push({\\n                title: titles + badgeType,\\n                img: pics + Referer,\\n                desc: badge + desc,\\n                url: (mode == '直链' ? true_url : (mode == '断插' ? dc : purl + lazy)),\\n                col_type: 'movie_2'\\n            });\\n        }\\n        \\n    } else {\\n        putVar('aid', String(v.aid));\\n\\n        d.push({\\n            title: mode == '直链' ? getHead('直链') : '直链', //'直链播放',\\n            url: '直链' + mode_url, //lazy1,\\n            col_type: 'text_2'\\n        });\\n\\n        d.push({\\n            title: mode == 'yhc' ? getHead('萤火虫') : mode == '断插' ? getHead('断插') : '萤火虫',\\n            url: mode == '断插' ? 'yhc' + mode_url : '断插' + mode_url,\\n            col_type: 'text_2'\\n        });\\n        if (getVar('like_type') === '开启') {\\n            d.push({\\n                title: '点赞',\\n                url: $(like_url).lazyRule(() => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var l_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=master&like=0&mobi_app=android&platform=android&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&sign=4a08645c2994eb692ac0cfb0bd7569c6';\\n                    var l_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: l_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(l_code);\\n                    return 'toast://' + l_code.data.toast;\\n                }, ),\\n                col_type: 'text_2'\\n            });\\n            d.push({\\n                title: '投币',\\n                url: $(coin_url).lazyRule(() => {\\n                    var ts = new Date().getTime();\\n                    var content_type = 'application/x-www-form-urlencoded; charset=utf-8';\\n                    var c_body_txt = 'access_key=' + getVar('access_key') + '&aid=' + getVar('aid') + '&appkey=1d8b6e7d45233436&avtype=1&build=6130400&c_locale=zh_CN&channel=master&from=7&from_spmid=tm.recommend.0.0&mobi_app=android&multiply=1&platform=android&s_locale=zh_CN&select_like=1&spmid=main.ugc-video-detail.0.0&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&upid=0&sign=8abbddd87a6bd82e1e42cb3cffd32bb9';\\n                    var c_code = JSON.parse(request(input, {\\n                        headers: {\\n                            'Content-Type': content_type\\n                        },\\n                        body: c_body_txt,\\n                        method: 'POST'\\n                    }));\\n                    //log(c_code);\\n                    return 'toast://投了1个币';\\n                }, ),\\n                col_type: 'text_2'\\n            });\\n        }\\n        d.push({\\n            title: '',\\n            col_type: 'blank_block'\\n        });\\n\\n\\n        for (var i = 0; i < p.length; i++) {\\n            var part = v.videos != 1 ? p[i].part : '当前视频无选集，点击此处播放';\\n            putVar('UA', ';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\\\\\；\\\\\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}');\\n            evalPrivateJS(\\\"ifnzqaNqNRkN6NqG0fZx5Mey477OsMJOTbTd9SajMkf5R5O396J22FxkbQbkXXCpggfuad5o+3p97LHWbIptow4o+MRQtaP0/8wiyJCrZCaZYW64wU1B60xRBQtbdJCEgRuHhoZsbGAZBA43/TXxGwIkCckbV6nzHhm93Dk5DiC5I5Hn+CfiBME4yQo39OUJy3pGAWljD1snpzGhBj1b3HrTvykjFaSPgnS/MUdJMf0QZISNGU8z5ovanPsH+F5WsQgHgIqxW9evV3+tgyfLUdFR0N4DltLYrw7vCPgzPQX/vwBMPy6YcVtSVKjb6QzFauTN+J2IRYrpay15akAkofa+Yx/fNTef4+6ZaVzmXeZaEaj0bQ/HPZibxTz3S+DmUVdgYu0HXMy0CFCXSt3+eOUN9c+EmVALrNN8OqWrPekrvF1qN1UKv6kBcBEP/Swkufs3vM07fWv/RNJYB7hEhsoIxyvHQOiPYCTD+eUs+fh+U9bRRAUzRSlXCzhWXjDfCJjY/9B2l4Rph/nwopEMqii5pJCJUPTc/H4Ufw9FOLZmxMHbEiWffp0rgbpHoKnRnzwYfg/RK7n9zLAdGAK/8uGa0slZ5IT1XUeqrPsCqt3MH5G2myxBDlqD0YQUb6NWhI7pjjpin6bW2thwzH4NT/Tp4CWpHlVycBVWsSghGySBEQRpBQKLOTv1EvOxgFxh9GYcu9T6WPufbEnDg/LK9rgr2pwoI3YIj0p2BbBmX7vMhPxKKLpxZi43JwVf9Hxn31NaYQi/0S1zTCg9S26tUgAq48ri+Ei3MHUkI6WsMbA73LnfgBj77DAlQl5QOkUv/pHhyYliiQ2XYaYxSH+hG4+tA+K6uP0hDKeQLk/f9t7i+6YO0U+8Gi/XwHAst6CL7I/KiBfFPnNYLxZBx9E0sQerI+8YKF2JfTotvHfc9iSf3LeAcUzWy/GsYr20qzE1+2hqUnxQbqiEjlaMqer//Qo58Ow+FmpQp1wu+7hgfr6RkK4YwxkeweXhORfCBNqIBJztwZ1fB0mbpRN3cknzDicramm3jWkDiYzf/JM3hYs3cryldGyXqr28J6u8xLaSDXF/yUQwbSFWJMst4+ijS3H7DU5wYjgkhEzhBVKx724LUmkpUTaRTj00JgCMslHDyyvLSNZWc/sIn/vWSAHU9q2CYR7C9CIkGuI0kOKH0nwKKi1xWf9Zw1ivgLxkUlOEIFNpQ8Xd4RvijjGLrxQR2zmsrqLjThjpnR9ryl2quTm+HmuiejsGMWGIXKkypdLYPnvcHfH2clWgU71VJxWrz6Kk7LjIGz6mFoj45ZZ7F/j1tjXMh8lrYBlKdXjzlDcs2hs9J9uAcxKWjRXmy8uKC4Zu7MfVK0kcDfvtAfcknenRgwhZFKpSHy6H8fIl0WnHPbUSN5/Q1Iik8kaaC0MSbR8KV46vhEevQdPoexX7CjpSjZkFAKSF/2kuDXyGszLz2hNOkG0i1Bmkxhjc63/AQlyKizk30MJBfNPVE6y9qDEsdXmLMsouH8p70HyH/KoelyAki+UfdlKQNj17HoYGSinQkbb2iFWG9NDOWwrj8ZQuXTiNKTXJOrH8lT1+164EGjXe5+fzfUmAM0CLRMTR/Nq5zNVge9PF/VPNfU0dNVcoLmYP6DTU5Ozg0bsox1a8SgndxFR9bSNRzZnzPGJo6HKGcfbVaSUFQCTd6UbzTdcpLDTQquZwPFbddSoYjdsFuknPCE2Up6rk/e1dh9Kr8maE8FY8COnBu7B1WdPdyuWez7xPtshzAIwRekIOmG0omSlbxuXw0b9WtPAXRMTePgabDu8Brz0/4s0eoBCR6cvXiwKAX8DFI9vz4fnurNLd7hZIkCvAnT3Rw/tStsS+8rFUmG03iaQmJn3yXaiZw1MSHkRVqWtDZ8zSAkrqoYA7Q3uyXdJM6MqCXEbCfgXlgP4CA8gLr8tvwh4nXFmYSaaGlEMYChhVsP0TonsgyGc6ZHrF+kH2lDGSqxMNeB+QTNsNHgrERrhx66xOylsIZEwLCevnfmQp/CLz4McCt0FWzhnJQ2NAh811mOwb42i3XOjntktHT2tQMQQKBgdTnYjGYKw0B4141ueBNawGaZ3lLaXWT7YuGQaFKpXdzkmi5sOdjVRySkjVpA9YdEanSQ5684SjLZ3ButWNkxIp3eQy43k+xokhPvwjTVYpGkbbBGoCM8zIBDxeq22L9AkcNYXuzJay/Ng3TuXWWKAv0+8zKdCRtvaIVYb00M5bCuPxlCDIgVCjVCHXibqsuP7jKyRz3tr9nCZIX++YCAa+ZdXK0P2eg1tlJzeWg20zUgEjOknsIFkk2uBfL2UEjNxdllDOIS74Gr4BHbqTFOvFBa1jZlPbrfxuNY1q/JzSdcVG921e47Oz8rFDPuVE7Nfta2mDfQl7M0JTN7TieBYjdaAXPS9DOYOPsOVWUlO1Qxcetv5gwgI0gIVhpaXTI6AyC2nY4vLhfhUZWrbke6saGv+N+QcrAS/XqzNVO18ntbfMuelFiSnTFSirYBNyNbJ2ytOk5HqMHxvO7cDzMQ7E2zeJHj8RyvSBmvTq0jBdLBiIAh7eJ+x2JoEW/3CbrTbfOyZz+HFPsO7hsyTzKarDpDvwd6GlOKgX2SVl3STD4aLuXd0vNwVZqH6EiRrl8ahSzLwADcYMIUBDRweGY3lntmvCX21wKVtdeBGToTKRzDOARNfpGNbFBK0rwqPwK3uY4tiXzhmmyJlD6K2oWU4g9XYW82ABlk52MlOeQYd1hWHrawpGpbHCEc4iqs8N2Sdaa5B9qN4TYB3XNNti+rNItGg9Opasu5offCFFIbNZmjTc9ElK4MwnOW99CGm402Ma4/ek0lUHPkrM8UW6NCADIovC0kmrVUoxnS0HQxsfgWQIlkNPD9FUfO4iJf2f3iTgzt9hE2OgT2CjKwKp8HCjuhca5Fcs1SlDlhSAKeHMH9w2Uf/n5uQ6nB0WUWCNsRv9DN0MWfCxV7FNxUla2wcPIbUtYRNjoE9goysCqfBwo7oXGgCZFlqm78vtqCbeK28iXzjFct+48t0kc6bEiqP28KnYF8nAVnFQI2OIeQvKbIHAs/TXls263QlajdHUpMKZNk/ABKG/+qkW2dWQE9WmPCePOvdVmAaPMx2y7Ln3j27UVRPlIpniO6r6WP2dT4amfpa4DT9w8DktH0j39Za5KbBjqYT308EaX27xRu/q/NXcXhkXP9IDZyRSCcuZkxf6TZ4QKpHn5vzjouIacSPMTtaStpyFDvNGHT+xV6EYuBq5r/gCd6OhSbLDKqHzvcBCDBLM2OP4/ER2shv7GrL2IbswKXQY5SUIE1x9neH2r5Gx41P0bfOVpmlLtBNMREPlM4jT0OJjMuhD/OuG2h49QxeJqUKqCqrW8rAWbKIqF7DHxD1lz0zNm4jEfsS6/YLSlTp4r3c+FedDvaRiGSiLnGE87q5bEdwK7YbnVBYMX6bdCIsK8Q07QJkOycUMfmdCkqVe97RaCnlacHQag024eFnWHGFO/rx/tUvUZic2wBq6/x6j8AJ8D2lngn8X7aaAr9QVsnTJWYVks0ht34SYOMek/inCmMtDskSrO7+WTEfCuCKkip7VGz52JMq2vzzmmyKyo2qa8RhUccyXhym8WGx6ou++SiJqu6fMzswMG4TtX/jLRfX24T8aoYpZ3o93i9SxkQo0t3OQ20NH+4loBrWykwASGFqWOX/555HnoKjGuhc+6bMVFg/jS3pDJsXn+fMu7eidJavyZ6UZjh0A8KL5r7jzAXnWe6Ei5/4P6VpOUHYXKA5srEczFpHUP9RdV3IuiK76GPq6pj5M5LjKdwN5KBNXul0agOe2pIIScmsHKPMrb1M42sDloRQhnepNio8ARv0YD2Q9GJPOcBHU6ETHWYz2Iiyn9PijZR7YSp2p7yiQBNGqjWYGWu6LMlQIdYRCJ9pTRzxuU8rnzxxk8PQCD5pDMREC4ZdMoSXcmcVcHyMCmAUGmiTR+OrACrLpgydvtL+kMHUtZHvH4MaR7IxviHFAEQczvqJ6LUksi1EdOLMI/RsPcN+P5ExMr2xk176Psd/udjuh5SSYshfdCqfko9Nxazi7yYI5olGEE4KiXUqUkFd3qwkvHIVUIaP075QT2yXwVpsLTHaDxz6Fe3o0h4LkliO8gGWa/iqkD/Dnm8sry0jWVnP7CJ/71kgB1PZXwpga01rDfYaVTMVyxGSIyyvLSNZWc/sIn/vWSAHU9jSIjIhRkgpxT/KMv6iH8llWHJ1tj8/RTCF0Cl2f6WwTbFJYcMaFlnmMis2ALVONPs6UMvsO/POw5Ccr79sJzieWLMVaOVG4/e1VPTSAzY9H87OCJXex+iAOoW+KAnriBzAVBdFwyUqIenLJVsRH7Vv3NV73Mqrqn/pkzAXtkiUAXwpKmVzdbeNLlebokDkomssry0jWVnP7CJ/71kgB1PY3mTRmStSkHbxA/Ftcfhb334Boz1YuX4+ZnpBlRSwyTTE1uGLYfepZa0J9pTc8Y/GbE6zXua+fd3OYkk4CpY5hINVANGbGMD1YQlpco/r3A6v8H7sdO5K7SjZ8IT5JSLVspBFU3yyqjPcdVG9dyD/LpGxbW27QBo/8u2Vhpkm9LcMw3h8hip6CzB6TlpwT1T67XHkGz8Ua1C+SL/EEzeq9K98VTSW4FPyecFY7IUc40AXPmpqKIqta7ScjAYvD8hZH3d3U1U53/SocJHKDj4Zv1jbnFTsjodjV0fHeYOdt50PFWcOxXYaz8jggdl04BEFFUk0Spfv2zrdN255KFr1m4gUxy3Ki7yFAPhdKryCJ/hjTRJQcTDna6yPSfseCDtoRkmGv0yNdE0bi9c4pWPQgrVi0QjdzH25X0NnJAkl5YUikPllFZXhn2dQzLmMjKP2RK6LKRA5ApHgOXZWnGt0AmcfUyutw0GYRG9ewoKAYQ38JtKvRsdVIi6Fc4Myje2BbwuLot+l6YxxP2FekUkki98gbQq0ClpvbhZ2n5vc5qIZ1fvbSNteNHi2NsDW+hUXE8OYh3Ax9wAK6BhM0Dinxo6OVoz8alxq44ttqkiAR7G8HXzmuMNjLs+a9+QI9qe6DSbABQj7UFEhPcV1e/gPT/wR/s5oySSLv330tjrzwo7plLounc/sa7UeAxBerQUqy2Al41DawFLeK+ma+aOMbOeZ8dIBbGZjWRJ6jXZIeM5dkWoaY5cRRcCp09qFmmhl/cWsQV2/Kfq/Da2u38SfXrI1VK2eg7C2Ovk5SScslsRNQ0QgotC+4MCUREM89Re7IB9/iwWv+79qI3S/HnKfxruFvOWN4/wWHR69ocahGxO/1t9uZQsKL8Nh4mF+LAFYjhZ+R4IpBVteXy6fGlW8aQQ1szm/S9iIk+jYckkSnoViYZtm2vGsZVCIOcl0vrLHmZMVyi/GJ8T9l/iSQq+9NADmWSwRsW9jrKR2uywGs9BhFesbV4XJXEvxMMKjHpwhtZDQAFKKLfjU4lLuP1kG1Gz3fQgVG0CKgQrGxwyg9JNFx8lK0pdEOO+DaXzTrHoXxM0bIsfcLYCwK5llICKAk8ZMT6MtaHMv0y7evMjBZ/1YlvQ9ekL0f6+7hW7bGThEOy7x9Iyybbo9xU8kGQ0IwSysbH799eyfKnlZZXdU/nx4Wn1a1CPygK14KtiXTdFDQ2LgCOn2qoPZf7NtIFxdL6yaep+Cqq2uENopg0DzxTzHbqX6DmcP7PyejHNOVUg3wDF2Rwd3IkyYCqgZnN6ErW1V26oilFYyXFZ+v7EHE8B6MhLnxtLGkRZZ0+FFI6Kn+Xoe7LL+2ZaDo4/yynkVR7BFuSqhtKLvzjdbyYoTowim85c6Rq/RCXtwg9Rg4qSERGjjZyFcJQ/Q6aJbv0LpEyRn3qpp75uT3zcbTSRRTVjzvcuXIErgr1D/PugFmhOWe/2pB15jU40ie+3c89oyiaeIO/5skdwQPzg6/YHNV/1sVVgOKaW4I7QAkaSOtdVPm6H6wvlyXECANvhCMGelFAe1jWvdBMunVR8N2RFSAO8MkIJ6o8LvUozKDkMQBt5p/cWsQV2/Kfq/Da2u38SfXD52gKD6H8XVKFfmDHaoShMsry0jWVnP7CJ/71kgB1Pamb0qabT83D6qn/a3GlHyGxamZgRHaK16vmZEzanuTDOzG1aUpvECtRB8EMgapaQXLK8tI1lZz+wif+9ZIAdT26vFpga0ZRLWRP3jH0tyrNYA75eCTf9dIqjYGcAA1rsU0zeepdMZ8MJXd5+xbAaXA/uJfsGjPI7psQc8Jn+fm3MLk+NCEF8LsQ0OtglIXL+63FRvyG7nMcevH4i/XT0B1BXNPL6r8i6bnbe+QJKYMA93PdbBcDsGTVaLiJlYdEOTfjYbpLURCdlx9K/puEXW+\\\")\\n\\n\\n            if (v.videos != 1) {\\n                var rurl = purl + '?p=' + p[i].page;\\n            } else {\\n                var rurl = purl\\n            }\\n            var dc = $(rurl).lazyRule(() => {\\n                eval(\\\"var config =\\\" + fetch(\\\"hiker://files/rules/DuanNian/MyParse.json\\\"));\\n                eval(request(config.settings.cj));\\n                return aytmParse(input);\\n            });\\n            d.push({\\n                title: part,\\n                pic_url: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif',\\n                url: /*mode == 'X5' ? 'x5Rule://' + jx + rurl + '@' + lazy : (*/ mode == '直链' ? lazy1 : mode == '断插' ? dc : rurl + lazy,\\n                col_type: v.videos != 1 ? v.videos >= 5 ? 'text_5' : 'text_center_1' : 'avatar'\\n            });\\n\\n\\n        }\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n    if (getVar('reply_type') === '开启') {\\n        d.push({\\n            title: '<strong>' + '““评论区””' + (getVar('label') == '评论' ? '““ ⊙””' : '““ ⊕””') + '</strong>',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('label', getVar('label')=='评论'?'关闭':'评论');refreshPage();'toast://'+getVar('label','评论')\\\",\\n            col_type: 'text_2'\\n        });\\n\\n        d.push({\\n            title: '<strong>' + '““推荐区””' + (getVar('label') == '推荐' ? '““ ⊙””' : '““ ⊕””') + '</strong>',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('label', getVar('label')=='推荐'?'关闭':'推荐');refreshPage();'toast://'+getVar('label','推荐')\\\",\\n            col_type: 'text_2'\\n        });\\n\\n\\n        if (getVar(\\\"label\\\") == '评论') {\\n            var rely = JSON.parse(fetch('https://api.bilibili.com/x/v2/reply/main?oid=' + v.aid + '&type=1', {}));\\n            var counts = rely['data']['cursor']['all_count'];\\n            var replies = rely.data.replies;\\n            for (var x in replies) {\\n                var repliesx = replies[x];\\n                var message = replies[x].content.message;\\n                var member = replies[x].member;\\n                d.push({\\n                    title: member.uname,\\n                    img: member.avatar,\\n                    col_type: 'avatar'\\n                });\\n                d.push({\\n                    title: '<small><strong>' + message + '</strong></small>',\\n                    col_type: 'rich_text'\\n                });\\n                var reply = replies[x].replies;\\n                for (var z in reply) {\\n                    var mess = reply[z].content.message;\\n                    var mem = reply[z].member.uname;\\n                    d.push({\\n                        title: '<small>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + mem + ':' + mess + '</small>',\\n                        col_type: 'rich_text'\\n                    });\\n                }\\n            }\\n        }\\n\\n        if (getVar(\\\"label\\\") == '推荐') {\\n            for (var r in related) {\\n                d.push({\\n                    title: related[r].title,\\n                    img: related[r].pic,\\n                    desc: related[r].desc,\\n                    url: 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + related[r].bvid + '#immersiveTheme#',\\n                    col_type: 'movie_2'\\n                });\\n            }\\n        }\\n    }\\n} catch (e) {}\\n\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"页面-关注1\",\"path\":\"gz1\",\"rule\":\"js:\\nvar res = {};var d = [];\\nvar id = MY_URL.split('mid=')[1];\\nvar surl = MY_URL;\\nvar code = fetch(surl,{});\\nvar ym = JSON.parse('{\\\"my'+code.split('{\\\"my')[1].split('}};')[0]+'}}');\\n\\nvar ep = ym['list']['getFollowList-page-mid-'+id]['result'];\\nfor ( x in ep){\\n  var yurl = 'https://api.bilibili.com/x/space/arc/search？？mid='+ep[x].mid+'＆＆ps=30＆＆tid=0＆＆keyword=＆＆jsonp=jsonp＆＆pn=fypage＆＆order=pubdate';\\n    d.push({\\n       title:ep[x].uname,\\n       img:ep[x].face,\\n       url:'hiker://page/gz2?url='+yurl,\\n       col_type:'icon_round_4'\\n       });\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"页面-关注2\",\"path\":\"gz2\",\"rule\":\"js:\\nvar res = {};var d = [];\\nconst headColor=\\\"#358ccd\\\";\\nvar json = {};\\neval('json=' + fetch(MY_URL,{}));\\nfor (var i = 0; i < json.data.list.vlist.length; i++)\\n{\\n var r = {};\\n var j = json.data.list.vlist[i];\\n var t = Number(j.created)*1000;\\n \\n //时间戳转换方法\\n /*\\nfunction getLocalTime(nS) { \\n     var sss = new Date(parseInt(nS)).toLocaleString().substr(0,17);\\n     var YMD = sss.split('日')[0].replace('年','-').replace('月','-');\\n     return (YMD)\\n}\\n*/\\nfunction getLocalTime(nS) { \\nvar date = new Date(nS);\\nvar YY = date.getFullYear()+'-'; \\nvar MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1)+'-'; \\nvar DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()); \\nvar time = YY + MM + DD;\\nreturn time\\n}\\n//时间戳转换\\nvar time = getLocalTime(t);\\n\\nif (j.play>10000)\\n    var play = (j.play/10000).toFixed(1)+'万';\\nelse\\n    var play = j.play;\\n\\nvar pics = (j.pic.indexOf(':')!=-1)?j.pic:'https:' + j.pic;\\n\\n if (j.length!=\\\"00:00\\\"){\\n    d.push({\\n     pic_url : pics,\\n     url : 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + j.bvid+'#immersiveTheme#',\\n     title : j.title,\\n     col_type : 'movie_1_left_pic',\\n     desc : '时长：' + j.length + '  播放量：' + play + '  日期：' + time\\n    \\n    });\\n}\\n}\\nres.data = d;\\nsetResult(res)\"},{\"col_type\":\"movie_3\",\"name\":\"代码块-搜索一级\",\"path\":\"s\",\"rule\":\"try {\\n    var res = {};\\n    var d = [];\\n    var code = getResCode();\\n    var xs = JSON.parse(code.split('video\\\",\\\"data\\\":')[1].split('}]')[0] + '}]');\\n    //if(MY_URL.split('page=')[1]=='1&pagesize=20'){\\n    var page = MY_URL.split('page=')[1].split('&pagesize=')[0];\\n    try {\\n        var w =\\n            JSON.parse(fetch('https://api.bilibili.com/x/web-interface/search/type?keyword=' + MY_URL.split('keyword=')[1].split('&')[0] + '&page=' + page + '&search_type=bili_user&order=totalrank&pagesize=20', {})).data.result;\\n        for (ii = 0; ii < w.length && ii < 2; ii++) {\\n            d.push({\\n                title: 'up：' + w[ii].uname,\\n                img: 'https:' + w[ii].upic,\\n                desc: '关注：' + w[ii].fans,\\n                content: '视频数：' + w[ii].videos,\\n                url: 'hiker://page/ss?url=https://api.bilibili.com/x/space/arc/search？？mid=' + w[ii].mid + '＆＆ps=30＆＆tid=0＆＆keyword=＆＆jsonp=jsonp＆＆pn=fypage＆＆order=pubdate#' + w[ii].uname + '#',\\n            });\\n        }\\n    } catch (e) {\\n        d.push({\\n            title: '‘‘找不到你想要的啊，要不换个关键词？’’',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n    var fan = JSON.parse(code.split('media_bangumi\\\",\\\"data\\\":')[1].split('},{\\\"result_type')[0]);\\n    for (x in fan) {\\n        d.push({\\n            title: fan[x].title.replace(/<em class=\\\"keyword\\\">|<\\\\/em>/g, ''),\\n            img: fan[x].cover,\\n            desc: fan[x].desc,\\n            content: fan[x].cv.replace(/<em class=\\\"keyword\\\">|<\\\\/em>/g, ''),\\n            url: 'hiker://page/detail?url=' + fan[x].goto_url + '#immersiveTheme#',\\n            col_type: 'movie_1_left_pic'\\n        });\\n    }\\n    var fan2 = JSON.parse(code.split('media_ft\\\",\\\"data\\\":')[1].split('},{\\\"result_type')[0]);\\n    for (x in fan2) {\\n        d.push({\\n            title: fan2[x].title.replace(/<em class=\\\"keyword\\\">|<\\\\/em>/g, ''),\\n            img: fan2[x].cover,\\n            desc: fan2[x].desc,\\n            content: fan2[x].cv.replace(/<em class=\\\"keyword\\\">|<\\\\/em>/g, ''),\\n            url: 'hiker://page/detail?url=' + fan2[x].goto_url + '#immersiveTheme#',\\n            col_type: 'movie_1_left_pic'\\n        });\\n    }\\n    //}\\n\\n    for (x in xs) {\\n        d.push({\\n            title: xs[x].title.replace(/<em class=\\\"keyword\\\">|<\\\\/em>/g, ''),\\n            img: 'http:' + xs[x].pic,\\n            desc: xs[x].description,\\n            content: xs[x].author,\\n            url: 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + xs[x].bvid + '#immersiveTheme#',\\n            col_type: 'movie_1_left_pic'\\n        });\\n    }\\n\\n    res.data = d;\\n    setResult(res);\\n} catch (e) {\\n    var res = {};\\n    var d = [];\\n    var keyword = MY_URL.split('keyword=')[1].split('&page=')[0];\\n    var url = 'https://app.bilibili.com/x/v2/search/type?appkey=1d8b6e7d45233436&build=6270200&c_locale=zh_CN&channel=xiaomi&highlight=1&keyword=' + keyword + '&mobi_app=android&order=totalrank&platform=android&pn=1&ps=20&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.27.0%22%2C%22abtest%22%3A%22%22%7D&ts=1623076140&type=2&user_type=0&sign=5066216febb28a619812e88e5ff1a034';\\n    var code = JSON.parse(request(url, {}));\\n    var list = code.data.items;\\n    for (let x of list) {\\n        d.push({\\n            title: x.title,\\n            img: x.cover,\\n            desc: x.sign,\\n            url: 'hiker://page/ss?url=https://api.bilibili.com/x/space/arc/search?mid=' + x.param + '＆＆ps=30＆＆tid=0＆＆keyword=＆＆jsonp=jsonp＆＆pn=fypage＆＆order=pubdate#' + x.title + '#' + getVar('ua'),\\n            col_type: 'movie_1_left_pic'\\n        });\\n    }\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"页面-搜索二级\",\"path\":\"ss\",\"rule\":\"js:\\nvar json = {};\\neval('json=' + getResCode());\\nvar res = {};\\nvar d = [];\\nif (MY_URL.indexOf('pn=1&')!=-1){\\nd.push({\\ntitle:'““关注””',\\nurl:'hiker://empty#'+MY_URL.split('#')[1]+'&&'+MY_URL.split('mid=')[1].split('&')[0]+`@lazyRule=.js:input=input.split('#')[1];var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid='+input.split(\\\"&&\\\")[1]+'&jsonp=jsonp',{})).data.face;if(!getVar('lb2').includes(input.split('&&')[1].split('&&')[0])){var xr=getVar('lb2')+'\\\\\\\\n'+input+'##'+pic;writeFile(\\\"hiker://files/rules/js/up.js\\\",xr);'toast://关注成功'}else{'toast://年轻人，耗子尾汁'}`,\\ncol_type: 'text_center_1'\\n});\\n}\\n\\nfor (var i = 0; i < json.data.list.vlist.length; i++)\\n{\\n var r = {};\\n var j = json.data.list.vlist[i];\\n var t = Number(j.created)*1000;\\n \\n //时间戳转换方法\\nfunction getLocalTime(nS) { \\n     var sss = new Date(parseInt(nS)).toLocaleString().substr(0,17);\\n     var YMD = sss.split('日')[0].replace('年','-').replace('月','-');\\n     return (YMD)\\n}\\n\\n//时间戳转换\\nvar time = getLocalTime(t);\\n\\nif (j.play>10000)\\n    var play = (j.play/10000).toFixed(1)+'万';\\nelse\\n    var play = j.play;\\n\\nvar pics = (j.pic.indexOf(':')!=-1)?j.pic:'https:' + j.pic;\\n\\n r.pic_url = pics;\\n r.url = 'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid='+j.bvid+'#immersiveTheme#',\\n       \\n\\n r.title = j.title;\\n r.desc = '时长：' + j.length + '  播放量：' + play + '  日期：' + time;\\n if (j.length!=\\\"00:00\\\"){d.push(r)};\\n}\\nres.data = d;\\nsetResult(res)\"},{\"col_type\":\"movie_3\",\"name\":\"代码-预处理\",\"path\":\"ycl\",\"rule\":\"putVar2('ua',';get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 7.0；； wv lite baiduboxapp) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 T7/10.3 SearchCraft/2.6.2 (Baidu；； P1 7.0)}');\\n\\nputVar('key',fetch('hiker://files/rules/bili/key.txt'));\\n\\nputVar('X5',\\\"@lazyRule=.js:var jx = fetch('hiker://files/bili/up_jxcache.txt',{});refreshX5WebView(jx+input);'toast://播放中'\\\");\\n\\nif (!fetch('hiker://files/bili/多合一.txt')) {\\n   writeFile('hiker://files/bili/多合一.txt','UP主');\\n   }\\n\\nif (!fetch('hiker://files/bili/收藏.txt')) {\\n   writeFile('hiker://files/bili/收藏.txt','视频');\\n   }\\n\\nif (fetch(\\\"hiker://files/rules/js/up.js\\\", {})==''){\\n    if (fetch(\\\"hiker://files/bili/up.txt\\\", {})!=''){\\n    writeFile(\\\"hiker://files/rules/js/up.js\\\",fetch(\\\"hiker://files/bili/up.txt\\\", {}));\\n    }\\n    else{\\n      var pic = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid=103256880&jsonp=jsonp',{})).data.face;\\n      writeFile(\\\"hiker://files/rules/js/up.js\\\", \\\"北城&&103256880##\\\"+pic);\\n      }\\n}\\n\\nif (!fetch(\\\"hiker://files/bili/up_cache.txt\\\", {})) {\\n  writeFile(\\\"hiker://files/bili/up_cache.txt\\\", \\\"103256880\\\");\\n}\\n\\nputVar2('lb2',fetch(\\\"hiker://files/rules/js/up.js\\\",{}));\\n\\n/*\\nputVar(\\\"解析口\\\",`hiker://empty#noHistory#@rule=js:var d = [];d.push({desc: '200',url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/bili/upjx.html',col_type: 'x5_webview_single'});var titles = fetch(\\\"hiker://files/bili/upjx.txt\\\", {}).split(/\\\\\\\\n/);for(var i = 0; i < titles.length; i++){var t = titles[i].split(\\\"&&\\\");d.push({title:fetch(\\\"hiker://files/bili/up_jxcache.txt\\\",{}) == t[1] ? t[0] + \\\"‘‘（当前）’’\\\" : t[0],desc:t[1],url:t[1] + '@lazyRule=.js:putVar2(\\\"uid\\\",input);writeFile(\\\"hiker://files/bili/up_jxcache.txt\\\",input);back();\\\"toast://修改成功\\\"',col_type: 'text_1'});}setResult(d);`);\\n\\nif (!fetch(\\\"hiker://files/bili/upjx.txt\\\", {})) {\\n  writeFile(\\\"hiker://files/bili/upjx.txt\\\", \\\"全网VIP&&https://jxx.smys8.cn/index.php?url=\\\\n加速&&https://www.cuan.la/m3u8.php?url=\\\");\\n}\\n\\n\\nlet localHtml2 = fetch(\\\"hiker://files/bili/upjx.html\\\", {});\\nlet gitHtml2 = fetch(\\\"https://cdn.jsdelivr.net/gh/Zruiry/hikerview/html/jiexi.html\\\", {}).replace(/jiexi\\\\/jiexi/g,\\\"bili/upjx\\\");\\nif (!localHtml2) {\\n  writeFile(\\\"hiker://files/bili/upjx.html\\\", gitHtml2);\\n  var titles = fetch(\\\"hiker://files/bili/upjx.txt\\\", {});\\n  var t = titles.split(\\\"&&\\\")[1];\\n  writeFile(\\\"hiker://files/bili/up_jxcache.txt\\\",t);\\n}\\n*/\"},{\"col_type\":\"movie_3\",\"name\":\"代码-推荐\",\"path\":\"feed\",\"rule\":\"var url = 'https://app.bilibili.com/x/intl/feed/index?access_key=' + getVar(\\\"access_key\\\") + '&autoplay_card=2&build=6225300&c_locale=zh_CN&channel=master&column=2&device_name=&device_type=0&flush=8&fnval=464&fnver=0&force_host=0&fourk=1&guidance=0&https_url_req=0&mobi_app=android&network=wifi&platform=android&player_net=1&pull=false&qn=80&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.22.5%22%2C%22abtest%22%3A%22%22%7D';\\nvar list = JSON.parse(request(url, {})).data.items;\\nfor (let x of list) {\\n    var url = x.goto == \\\"bangumi\\\" ? \\\"hiker://page/detail?url=\\\" + x.uri.split(\\\"?\\\")[0] + '#immersiveTheme#' : \\\"hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=\\\" + x.param + \\\"＆＆bvid=\\\" + '#immersiveTheme#';\\n    d.push({\\n        title: x.goto == \\\"bangumi\\\" ? \\\"💰\\\" + x.title : x.title,\\n        desc: x.cover_left_1_content_description + \\\" \\\" + x.cover_left_2_content_description + \\\"  \\\" + x.cover_right_text,\\n        pic: x.cover + \\\"@Referer=https://www.bilibili.com/\\\",\\n        url: url,\\n        col_type: 'movie_2'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-新番\",\"path\":\"newbgm\",\"rule\":\"if (MY_URL.split('#')[1]=='1') {\\n\\n    let url = 'https://api.bilibili.com/pgc/app/timeline?access_key=&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=master&filter_type=0&mobi_app=android&night_mode=0&platform=android&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=1635952840&sign=6e4df4542d38eee2fabf212885b90c64';\\n    try {\\n        var source_code = JSON.parse(request(url, {}));\\n        var dateline = [{\\n            \\\"code\\\": source_code.result.data[4],\\n            \\\"name\\\": \\\"前日\\\",\\n            \\\"id\\\": \\\"0\\\"\\n        },{\\n            \\\"code\\\": source_code.result.data[5],\\n            \\\"name\\\": \\\"昨日\\\",\\n            \\\"id\\\": \\\"1\\\"\\n        }, {\\n            \\\"code\\\": source_code.result.data[6],\\n            \\\"name\\\": \\\"今日\\\",\\n            \\\"id\\\": \\\"2\\\"\\n        }, {\\n            \\\"code\\\": source_code.result.data[7],\\n            \\\"name\\\": \\\"明日\\\",\\n            \\\"id\\\": \\\"3\\\"\\n        },{\\n            \\\"code\\\": source_code.result.data[8],\\n            \\\"name\\\": \\\"后日\\\",\\n            \\\"id\\\": \\\"4\\\"\\n        }];\\n        if (!getVar('id')) {\\n            putVar('id', '2');\\n        }\\n        let id = getVar('id');\\n        d.push({\\n            title: id == '0' ? getHead('前日') : '前日',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('id', '0');refreshPage();'toast://success!'\\\",\\n            col_type: 'text_5'\\n        });\\n        d.push({\\n            title: id == '1' ? getHead('昨日') : '昨日',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('id', '1');refreshPage();'toast://success!'\\\",\\n            col_type: 'text_5'\\n        });\\n        d.push({\\n            title: id == '2' ? getHead('今日') : '今日',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('id', '2');refreshPage();'toast://success!'\\\",\\n            col_type: 'text_5'\\n        });\\n        d.push({\\n            title: id == '3' ? getHead('明日') : '明日',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('id', '3');refreshPage();'toast://success!'\\\",\\n            col_type: 'text_5'\\n        });\\n        d.push({\\n            title: id == '4' ? getHead('后日') : '后日',\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('id', '4');refreshPage();'toast://success!'\\\",\\n            col_type: 'text_5'\\n        });\\n        let list = dateline[id].code.episodes;\\n        for (let x of list) {\\n            let type = (x.published == '1' ? '已发布' : '未发布');\\n            log(type)\\n            d.push({\\n                title: x.title,\\n                desc: '‘‘' + type + '’’\\\\n' + x.pub_index + '\\\\n更新时间：' + getHead(x.pub_time),\\n                url: 'hiker://page/detail?url=' + x.url + '#immersiveTheme#',\\n                img: x.cover+Referer,\\n                col_type:'movie_1_vertical_pic'\\n            });\\n        }\\n    } catch (e) {\\n        d.push({\\n            title: getHead('链接炸了，等修复'),\\n            col_type: 'text_center_1'\\n        });\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-番剧索引\",\"path\":\"sy\",\"rule\":\"const { CategoriesHeader } = $.require(\\\"hiker://page/categories-header\\\")\\n\\n/**\\n * 获取分类数据源，可动态可静态，自己根据实际情况处理\\n * https://www.bilibili.com/anime/index/\\n */\\nlet mCategories = {}\\nlet catInVar = getVar(MY_RULE.url + \\\"#categories\\\", '')\\nif (getVar(MY_RULE.url + \\\"#categories\\\", '')) {\\n    mCategories = JSON.parse(catInVar)\\n} else {\\n    let catUrl = 'https://www.bilibili.com/anime/index/'\\n    let catSrc = request(catUrl)\\n    // log(catSrc)\\n    let catRegex = /window\\\\.__INITIAL_STATE__=(.*?);\\\\(function\\\\(\\\\)\\\\{/\\n    if (catRegex.test(catSrc)) {\\n        // log(RegExp.$1)\\n        let category = JSON.parse(RegExp.$1)\\n        let mFilters = category.filters;\\n        // log(mFilters)\\n        mFilters.map(filter => mCategories[filter.key] = filter.list)\\n        let orders = category.orders\\n        let mOrders = []\\n        orders.map(order => {\\n            let mOrder = {}\\n            mOrder.name = order.title\\n            mOrder.value = order.key\\n            mOrders.push(mOrder)\\n        })\\n        // log(mOrders)\\n        mCategories['order'] = mOrders\\n    }\\n    putVar(MY_RULE.url + \\\"#categories\\\", JSON.stringify(mCategories))\\n}\\nlet keys = Object.keys(mCategories)\\n// log(mCategories)\\n// log(keys)\\n/**\\n * 组合当前分类链接\\n */\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\ntrue_url = 'https://api.bilibili.com/pgc/season/index/result?'\\nfor (let it of keys) {\\n    let cat_url = getVar(MY_RULE.url + \\\"#\\\" + it, it === 'orders' ? '3' : '-1')\\n    true_url += (cat_url ? '&' + it + '=' + cat_url : '')\\n}\\n// let page = 1\\nconst page = MY_URL.split('#')[1]\\nif(page==1){\\n    \\n}\\ntrue_url = true_url +\\n    '&st=1&sort=0&season_type=1&pagesize=20&type=1' +\\n    '&page=' + page\\n// log(true_url)\\n\\nconst empty = \\\"hiker://empty\\\"\\n\\nCategoriesHeader\\n    .setSubCategoriesItemKey('name', 'value')\\n    .get(d, mCategories, page)\\n/**\\n * 获取当前分类页面源码\\n */\\ntry {\\n    var sylist = JSON.parse(request(true_url, {})).data.list;\\n\\n    /**\\n     * 列表数据源\\n     */\\n    for (let data of sylist) {\\n        d.push({\\n            title: data.title /*+ '/' + data.index_show*/ ,\\n            desc: data.order,\\n            img: data.cover+Referer,\\n            url: 'hiker://page/detail?url=' + data.link + '#immersiveTheme#',\\n            col_type: 'movie_3'\\n        });\\n    }\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-动态分类模块\",\"path\":\"categories-header\",\"rule\":\"js:\\n/**\\n * 使用说明：\\n * 1.提前建立好 分类所属类型和分类列表 的对应关系，即 get 函数中的 categories\\n * 2.设置子分类数据的 key，调用 setSubCategoriesItemKey(titleKey, urlKey)\\n * 3.然后调用 CategoriesHeader.get(layout, categories, page)\\n *\\n * 支持链式调用，一句话即可调用生成分类，即：\\n * CategoriesHeader\\n *    .setSubCategoriesItemKey(titleKey, urlKey)\\n *    .get(layout, categories, page)\\n *\\n * @type {{setSubCategoriesItemKey: CategoriesHeader.setSubCategoriesItemKey, get: CategoriesHeader.get, categoriesKey: {title: string, url: string}}}\\n */\\nlet CategoriesHeader = {\\n    categoriesKey: {\\n        sub_categories: '',\\n        title: '',\\n        url: '',\\n    },\\n    /**\\n     * 1.设置从分类列表中拿的子分类的数据 key，\\n     *   根据 key 拿到数据后，\\n     *   会自动赋值给 scroll_button 的 { title: item[titleKey], url: item[urlKey] }\\n     *\\n     * @param title_key title 的 key\\n     * @param url_key url 的 key\\n     */\\n    setSubCategoriesItemKey : (title_key, url_key) => {\\n        CategoriesHeader.categoriesKey.title = title_key\\n        CategoriesHeader.categoriesKey.url = url_key\\n        return CategoriesHeader;\\n    },\\n    setSubCategoriesKey: (sub_categories_key) => {\\n        CategoriesHeader.categoriesKey.sub_categories = sub_categories_key\\n        return CategoriesHeader;\\n    },\\n    /**\\n     * 2.获取分类头部\\n     *\\n     * @param layout 当前界面，即常用的 d.push 的 d\\n     * @param categories 分类所属类型和分类列表的对应关系表，\\n     *        如：\\n     *        {\\n     *           \\\"年份\\\": [{ \\\"name\\\": \\\"2021\\\", \\\"value\\\": \\\"2021\\\" }, { \\\"name\\\": \\\"2020\\\", \\\"value\\\": \\\"2020\\\" }...],\\n     *           \\\"排序\\\": [{ \\\"name\\\": \\\"热度\\\", \\\"value\\\": \\\"hot\\\" }, { \\\"name\\\": \\\"时间\\\", \\\"value\\\": \\\"time\\\" }...],\\n     *        }\\n     * @param page 页码\\n     * @param urlListener 额外处理 button 的 url，需要 return\\n     */\\n    get: (layout, categories, page, urlListener) => {\\n        // log(categories)\\n        // 分类所属类型的列表，如：[ \\\"年份\\\", \\\"排序\\\" ]\\n        let category_names = Object.keys(categories)\\n        let types = []\\n        // 根据对应关系表拿分类列表\\n        category_names.map(category_name => {\\n            // 这里会拿到 年份 排序... 其中一个\\n            types.push(categories[category_name]);\\n            // 这里下面对 types 的值进行处理\\n        })\\n        categories = types;\\n        let init_cate = []\\n\\n        for (let i = 0; i < 20; i++) {\\n            init_cate.push(\\\"0\\\")\\n        }\\n\\n        const cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\n        const cate_temp = JSON.parse(cate_temp_json)\\n\\n        if (parseInt(page) === 1) {\\n            /**\\n             * 遍历第 index 层分类\\n             */\\n            categories.forEach((category, index) => {\\n                let sub_category_name = category_names[index]\\n                let sub_categories_key = CategoriesHeader.categoriesKey.sub_categories\\n                let sub_categories = sub_categories_key ? category[sub_categories_key] : category;\\n                // log(category)\\n                /**\\n                 * 在第 index 层分类中遍历该层所有子分类\\n                 */\\n                sub_categories.forEach((item, key) => {\\n                    let title = item[CategoriesHeader.categoriesKey.title]\\n                    let url = escape(item[CategoriesHeader.categoriesKey.url])\\n                    if (urlListener) url = urlListener.onDeal(item, sub_category_name, url)\\n                    layout.push({\\n                        title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: #098AC1\\\">' + title + '</span></b>' : title,\\n                        url: $(url).lazyRule((params) => {\\n                            params.cate_temp[params.index] = params.key.toString()\\n\\n                            putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                            putVar(MY_RULE.url + \\\"#\\\" + params.sub_category_name, input)\\n                            refreshPage(true)\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            cate_temp: cate_temp,\\n                            index: index,\\n                            key: key,\\n                            page: page,\\n                            sub_category_name: sub_category_name\\n                        }),\\n                        col_type: 'scroll_button',\\n                    })\\n                })\\n                layout.push({\\n                    col_type: \\\"blank_block\\\"\\n                });\\n            })\\n        }\\n    }\\n}\\n$.exports.CategoriesHeader=CategoriesHeader\"},{\"col_type\":\"movie_3\",\"name\":\"我的收藏-视频\",\"path\":\"video\",\"rule\":\"var ts = new Date().getTime();\\nvar video_url = 'https://api.bilibili.com/x/v3/fav/folder/space?access_key=' + getVar('access_key') + '&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=master&mobi_app=android&platform=android&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts=' + ts + '&up_mid=' + getVar('starid') + '&sign=0a51b772f81dc7812cd66226a8325383';\\nvar list = JSON.parse(request(video_url)).data;\\nfor (var x of list) {\\n    d.push({\\n        title: x.name,\\n        img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif',\\n        url: \\\"hiker://empty#\\\"+x.id+\\\"@lazyRule=.js:putVar('change',getVar('change')==input.split('#')[1]?'0':input.split('#')[1]);refreshPage();'toast://已刷新'\\\",\\n        col_type: 'avatar'\\n    });\\n    if (getVar('change') == x.id) {\\n        var list2 = x.mediaListResponse.list;\\n        log(list2)\\n        for (var a in list2) {\\n            d.push({\\n                title: list2[a].title,\\n                img: list2[a].cover+Referer,\\n                url:'hiker://page/collection?url=https://api.bilibili.com/x/v3/fav/resource/ids？？access_key='+getVar('access_key')+'＆＆appkey=1d8b6e7d45233436＆＆build=6130400＆＆c_locale=zh_CN＆＆channel=master＆＆media_id='+list2[a].id+'＆＆mid='+getVar('starid')+'＆＆mobi_app=android＆＆platform=android＆＆s_locale=zh_CN＆＆statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D＆＆ts='+ts+'＆＆sign=7e0f1b92f3ef3828b19be66838915007',\\n               // desc: a['media_count'],\\n                col_type: 'movie_3'\\n            });\\n        }\\n\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"我的收藏-追番\",\"path\":\"fanju\",\"rule\":\"var ts = new Date().getTime();\\nvar video_url = 'https://api.bilibili.com/pgc/app/follow/v2/bangumi?access_key=' + getVar('access_key') + '&appkey=1d8b6e7d45233436&build=6091000&c_locale=zh_CN&channel=master&mobi_app=android&platform=android&pn=' + pagenum + '&ps=20&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.9.1%22%2C%22abtest%22%3A%22%22%7D&status=2&ts=' + ts + '&sign=1624f9598dca06eb129534e4765f9b1a';\\ntry {\\n    var list = JSON.parse(request(video_url)).result.follow_list;\\n    for (var x of list) {\\n        var 类型 = x.is_finish == 1 ? \\\"完结\\\" : \\\"连载\\\";\\n        var 标识 = x['season_type_name'] + \\\" | \\\" + x.badge;\\n        var desc = x.progress ? 标识 + \\\"\\\\n““\\\" + x.new_ep.index_show + \\\"””\\\\n\\\" + x.progress.index_show : 标识 + \\\"\\\\n““\\\" + x.new_ep.index_show + \\\"””\\\\n\\\";\\n        d.push({\\n            title: x.title + \\\"\\\\t\\\" + getHead(类型),\\n            img: x.new_ep.cover + Referer,\\n            desc: desc,\\n            url: \\\"hiker://page/detail?url=\\\" + x.url + '#immersiveTheme#',\\n            col_type: 'movie_1_vertical_pic'\\n        });\\n    }\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"我的收藏-追剧\",\"path\":\"dsj\",\"rule\":\"var ts = new Date().getTime();\\nvar video_url = 'https://api.bilibili.com/pgc/app/follow/v2/cinema?access_key=' + getVar('access_key') + '&appkey=1d8b6e7d45233436&build=6091000&c_locale=zh_CN&channel=master&mobi_app=android&platform=android&pn=' + pagenum + '&ps=20&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.9.1%22%2C%22abtest%22%3A%22%22%7D&status=2&ts=' + ts + '&sign=1624f9598dca06eb129534e4765f9b1a';\\ntry {\\n    var list = JSON.parse(request(video_url)).result.follow_list;\\n    for (var x of list) {\\n        var 类型 = x.is_finish == 1 ? \\\"完结\\\" : \\\"连载\\\";\\n        var 标识 = x['season_type_name'] + \\\" | \\\" + x.areas[0].name;\\n        var desc = x.progress ? 标识 + \\\"\\\\n““\\\" + x.new_ep.index_show + \\\"””\\\\n\\\" + x.progress.index_show : 标识 + \\\"\\\\n““\\\" + x.new_ep.index_show + \\\"””\\\\n\\\";\\n        d.push({\\n            title: x.title + \\\"\\\\t\\\" + getHead(类型),\\n            img: x.new_ep.cover + Referer,\\n            desc: desc,\\n            url: \\\"hiker://page/detail?url=\\\" + x.url + '#immersiveTheme#',\\n            col_type: 'movie_1_vertical_pic'\\n        });\\n    }\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"我的收藏-收藏\",\"path\":\"collection\",\"rule\":\"js:var res = {};var d = [];\\nvar ts = new Date().getTime();\\nvar code = JSON.parse(request(MY_URL)).data;\\nvar resources = '';\\nfor (var x of code){\\n    var resources = resources + x.id + ':' + x.type + ',';\\n}\\nvar resources = resources.slice(0,resources.length-1);\\nvar url = 'https://api.bilibili.com/x/v3/fav/resource/infos?access_key='+getVar('access_key')+'&appkey=1d8b6e7d45233436&build=6130400&c_locale=zh_CN&channel=maste&mid='+getVar('starid')+'&mobi_app=android&platform=android&resources='+resources+'&s_locale=zh_CN&statistics=%7B%22appId%22%3A1%2C%22platform%22%3A3%2C%22version%22%3A%226.13.0%22%2C%22abtest%22%3A%22%22%7D&ts='+ts+'&sign=7e0f1b92f3ef3828b19be66838915007';\\nvar list = JSON.parse(request(url,{})).data;\\nfor (var y of list ){\\nd.push({\\n    title:y.title,\\n    img:y.cover,\\n    desc:'播放量: '+y.cnt_info.play+'  弹幕: '+y.cnt_info.danmaku,\\n    url:'hiker://page/detail?url=https://api.bilibili.com/x/web-interface/view/detail？？aid=＆＆bvid=' + y.bvid +'#immersiveTheme#',\\n    col_type:'movie_3'\\n    });\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"代码-登录\",\"path\":\"login\",\"rule\":\"evalPrivateJS('Lle0naydszQ250IhOydRA1kJr0XnNa/rFlsjiEKZW7retZFeuHNJlPKWME4a9BcfB9B0hTawYM8v+hEwzF3RVN2sR/iH8NvyHY6uzKNgjMbJ85GLEg0JyjPItfGGRgwJFUVNL1ILeRNbae39XVroD7WKUKBPfv7Hwqj2HYFH5uQLpOVZvG4UcYOzAs7j8NiaPEUJMS424Bkbns1Nf6FIDXlfkNIIsWBHWRdO6mp73Vy2vu5hg1aG0AVek5+pQcqakxEM9cWGgCJC5mKpUiZSEtP92sKA9SK+/NHsqf13COtQRiix6gFhyFhLez7+GpuSbLH13k1FDUZkilY7OBP8yCZP+Ym41Yhi/yITx3ElLmgjiBexj0qTLjrKIXnx4DDXiipSw/YpUNdqtgUXHNi98a7cGtLE+95Aqk2DcV/H3OG5hpswSHC2+ilrRLP8+TyLTogrFUaJYMxOmrWwAjUM1FfLs/MSx601W/ueFDAmhO/ZZoUZwf3MYbhtkv+BxgyG/76WfDAQbGARJ94NajZ9pzzvcuXIErgr1D/PugFmhOWHk/MSdFDlBqMDpE8x95Yj6tL4wFsw2OaGOoe8MhsniFYEF8BqMPRed0z7cBC4RGxD5NgV1FKWHAPgZPYFKjgO9glNJv71ISgIo9SKRBEjKmE4cEvb/kJEOCEDLjBQrVsOT11OuZcZudCZEOTzmriGHdPfflKBrFsEh7ylUtPZYEcEpCy1Wh1e1YxNKZhbOuk02wtA7FfHNP0DqIZ83F8RFG38RY36fFI//zLpCMEM8UXhzljw5qoSPvzfheR1/GF3MjjFfszXZ3UCvcBg2wC1OkAVKp0uScGLmeq6QaEbQN2unz02ppFV7eK9H73yD1EElNKCQCkkmB6dxpqtkV6JhRsxigMceXn4dUGt+AtfkA2Kvyme5rkuppBceFvMfhIFsxYGR2UE9+ox6kflYBtPp55Q6ulIKydhrk5TATzM2iv9f9xqYpJIIBntIVIof3OanHJWrEtxQ2c1gcvOt/WbE/lkNdrQ33IOYrOFb2cbZ4M/lh5nVtzijvpYe0M6O5v+IoZMpOiVqse7yNiXhAHxE05ziiVcj9pizpWzIebzO4g+KkaqJrBS6yz5QXmiFcWVESIIIovYHeCKRDLgBojqJdTeIXaR/Ke49st03X2HRw2r0B0Mnif8tEPda1glcBLsTEZEW2hbkdtoEicIRFvki55x9HQtQT4zp2TWp3au7TIzwDitCUbbDOV1zFgSHh0873LlyBK4K9Q/z7oBZoTlh5PzEnRQ5QajA6RPMfeWI+rS+MBbMNjmhjqHvDIbJ4iBp+xXhjc+2rviDaAOyFC9ulvkxza+TW4Mat0hxtYDrIl+DpouejyIMTW8DsvXxPXCAQbmwGlDEAfOiyqtqLQ9Hf8gDXE35Q7ay0yABEej1qKWgrj/YnBbY/dYAOPSHpmlddFLJnKpApdMXvYBswrWF0CRRSb1s7CZRgMfOQzK6Iz6/tehasmOs7Ml9w/Hpn5nKh10+n0iGXMvx5II+SGpoLueCtRmJ7UVVCtDG6xevxYMm04sAGGGJaCDAhGH8icbhIE2b+oqDFEpmU0eY7RtG79hPhL+gXYOyYNUvJqejlbZ1/OdvL5nYy6m30Gwl3z7w5eslZCUA0kaRs5kmUOLvL0QQPD74fagAdqGsLHUGDWb4BzCLF2MYLHy+DsckK3FYJMw0U5qN7L700sVSalf6tK96dWqzn5eIrewf1iGo83Icwz9o81JmuKA1LpISS9098nwAx1qP1FzPcwIhTSVuR8+Aoo1p3Di0WLwNKQNOI8x75DmaE6BLPiDkaDLKJyc+bzX0hIC3sPb2+dfvlksCnK22cGhK25Fs9OFR3rF/VFVSRbDG7+7AqOkE24bokEUjd8nS5Hjqp3D/uk+0XzBy9222X6bJmJhwFlKz46TBVXezzm3dzQW7Ol+0Oqf/Ex2AY+rwP+M6xFRHUX/j2GcGa5mhbJUzRRBdO5IprU2Ns6HtSXC9IqcxW1Vl5bCObMG9+Hvvzu0sG7AWNguZJCsxkJXhhgwf2GB6FPu6+oFRz6D4A05ssDsLLVymZ5cgTbDcbeq19UmiYam3Pn7qWIcjuh9OsN4tiFTrrUEPZIRX9Xk0UGDYfabQ1pXfxM/+ySh8q7dwnVJ/g7luihGOeeNwHXAFAy4n3acPH2XBc/msx5XKgIreORMVY/cFb9Kcm3oWZzzK6+HSP85tkFKKm55hg8Mxwi5Ix9RQE/pGAx1csovSp3jRP0h62o6NhFktCDKWzjEUl9bma28fZyiY4dXBEsHBOpKvBzAA0lRkezTnEvvXs9Z55UrAa8ZhAFux6ZENw4cMTIuSkVfw+V/U/momltJ9vGPgiqb5nZl9Ku7d0ROV15J3QAsbhOxT6SgkIVuguVaTVRcj0HW+mMNYKbQynrNRAqKDeJquVxc9HlPM6L8qPnZIWbbHAfUfGbw0lRlwSuOpF7+A2WJLZ4XzSgHbcMXkulzPPDP9/caRIB8e2VkzEZSPnUiZApWP6wWusHuB39WAM78+NBi4Bp2mxWjLKHLWQMDeIXXhdxecK5qUUfYLgITih9DeFpgLNWcBLGQFbdSNkJ3NWpcG56DajDIuLUa8k00i94cJwAzMkJBxNJb5ehBRkVvWXosmtJBMdRf6NEbsV9u8vpZjNEogUknmltJ9vGPgiqb5nZl9Ku7d1ZqTPzopwZhh+itDpUb0Lr27c5wNAAEjrphOqfe0Nj39CNW0LH4Wxjf2lwlxMtOKR1HQL/CPw51yyYJ/LVrQz+if3iIBNU4nCgObuW5JULTvsQss2RneLCw6rphxgMsdawMEgZ9qCrCM7yTM0EylFxfjiIZKqbK10Bae2NoHD+GuoUKAQp5Su4AqXSfKLzmx4hWbmSiNV7mCB/rdw1ybsPvgAFcG85N53kNjzcPvbKLOOxHXHYVWClBmJprwJtHA6B1WZpGWRx5M/gDmsGzVRmVuBDvmSAZMwIeVr5bzDE86m0NqcmgTNepxwqB+yBBp5Kzd42EAQht2EK5T2zMxvgTzeS/z3K/q5lRHl1zK0J/sQwLx9z8lMVg9RBbAe/eb20VowzcqPde/qi0jHMwGcMaC9duyW56wlGOsnkbeyBQ/PfRSSrkUG/vcaCbTa4IT84ZztpNQRvbeUnIAoPkW/eZ6wOUia4Jsyaw99Wa8+E4LjDmZ0zRhnSHgUyC/yb9rZT2lE1S7JBIk7YZPXyA00a2LgKFG88YzV80hi+AVTwRZPk9wlO7gRS2NR/577nIxG0H22llFscmN1LhI91FD2VbVXbqiKUVjJcVn6/sQcTwwz7tvB6z9yMmrDlyCMvyUdwGI6ur9Eac4qW6EUz1xH2y5TI8AfhxxxOrAQZnERbTMICdfKGQGDJe/TdKRKQtgbpb5Mc2vk1uDGrdIcbWA6zDPu28HrP3IyasOXIIy/JRNdvsX6DlKdYwLnFUQj2t6HQHhtjkOli+tcOnRljAa32orfx79VOuviNq+mOqR1N+CGRF2bmKU1kpDArx4VzDdWJddEra+OkFnONEGz4YecwERZUd77+nnPL2MoCMmEDYcvXIs2EuZHdkTfn1iweogD01QfwqZHNF8HvlBWMU/f6EdzXKLqIgRK2ipAMFgKRvlRbasHPlRusSg0pRNVUCQR5ebNyxqFXhLc2+oedK8JEoLoMEQ5D3fJarYgd9jy6fOiBkG8C9IITB8mytyyswcKtwhy1/1WbHO7Cz/RdqVcyJ34A2q2Z3yui1Q5a1oPmO0NWLfnya4+sRNQrksiQ4HuO26GaZUR8kWzF1OxdduaPVxINMb658csXVuDGZ5MYpWdbckFW6eYPFiu+xSDC/eDzsXAH6FL3PV8OpDUPBmpTek2XXfeKdqU2pS9m7SCiCB5u2qbiKC2c9vBV24M6s8Ra4hmd+Paj4FTytv36SH1bLK8tI1lZz+wif+9ZIAdT22cr57jq+ypMPeN1y59Dqv7pshD+JTI8UgdS4QVlCwF17YrvJHPD42KFEbgQY++0j0dalyHYcgf58QyAl9+nnBJZVUVlIilQ6qEPsHzb6rMbV67YSqZHcLvfCTobRi4paBCEUxcyNLQvJSKcKpZAuf2+8K81zKyz3MdEcurtshnsxQA+ocDC2Oy58iyCK6dSjIrTPiFFQ80Bmpa2D3lscLVmY5IR4ok9tgdBeXI6XZ8u2k9KLJWd+Fqsf8YOQGxO6EH2cCKO2u0+3F/GOz6+/OrutLahqR2mkVGIdJKuXeYGsZnDBgeJgBJZ8rIHC0C0NWLLxijLLFJfzi0pzGIRHW4LAJAhO/fLpSL50RlrhMYvbQs4oZu1pe+79XT5RR88dlXs1r6D4sJHYh6+7x3kPQuMls9rc1nywzBdl35CIZxEw6cACjP8Y4dn6zwNYPnt9QmG2IV4Z4rMVwI5pZQimV4cB1Jyp/yK3vOcFepWba0iNL7xAhEGDts8I7hK/5NHSCzws67TSkJ8UHywGktSTJCT015ypQCaSnKmOOqUimxCahfS4e4f9XtfBlSlGWcZ+yyvLSNZWc/sIn/vWSAHU9jxsCP2pK8IpH8jRyaDxaiGFLxMmQxc5kDgg6vGdP6Ky24A2A0eBieXbgPfXyHs82R456922Jz0pVAGsjP443mxiE+o6Wv3Lndnm0+F/Q1Hkv74PdvImHDN4urGF8tEB+DlCFQ+lFSqh+bCPIvhzhe6Nxzq8Dh+iozunZIofIzrio1gcrBfB0QYdjXG0FTR7pdN54m2MpvEH0yftEo19nrvLK8tI1lZz+wif+9ZIAdT2tHV/CPSsKt7zwcytaGrLaao42D22sswTRLPaG/q6Gi7DjEhhwKlBxjjw7IMytII3NkM8cb+JtEyf8wFkTEFiFLUYimQ/hPXI93zrXk++vqogLru0taXgtlM17qtAfzGQu8yUdI4qqYzeJxXxf0NNZ2oBjeDr2DiwI9OXPUuBHbsL4c3/nw10Em2U6MFBUcrZj/DMaSFxVcZ7MoWl2on8Gm0VowzcqPde/qi0jHMwGcMf9z49egZRQzL7hKSUM5TPt37Amk379ccwpLtPTT23Bh7UhnkdG0GUoHvHsy99GxmQaR4nayO/rQFboqustSFLrO80/PtnH8EJcwQaQYZJzN1b9bD6RrJl6zQIomwMfYuu+m8FsO7zd4/cfr6hiOebHSKZmDPFd3XRJe/9CNnLGLYXJLrYvEvtFzwD8A3n3dhXWPimkAisF0R+7PhQ9VJLWcGh8tqKgoVoZ7kzBGuD7Sh9c+2Sr+SAGH6aHBT4Ft1eswUnb+fnJGhaHSC/SvozKCLmWNrPQ94aZuYyOOv0flPU9Pv9KOQUy+5UudlMvtql7BIJfo4Pih/lK8e1NG9JN0D9MLu2f7+UBBcgncB9EhucKQCJsRhPLgZpX/r+sLgnbS1HcBK56v7qNmPQYzlMLwgUFQF7AdewToe/YiuAbqcKcM1MwLfI4be/gnG4c8R4U9BP1Gl81Z5TLZfWfe1x6V8GzJI987VuK2Y710nlEsIUACp0DA+p3b6qw/bEUG0boLPzoNrITGtOIwEbuXiAjxkvhs/JAvwIG65v6oNSk7YxJZzFNo+j1fIaz0+FBjW5cWf+siOp3vYhkXWo5Sl6aC7nQr9DzhN70TOi9nBzHQRFlR3vv6ec8vYygIyYQNhy9cizYS5kd2RN+fWLB6iAdQ/DF7wyH99zIprINU4Nxevb6HyVJPk51XFB1SIgSIrrpz3Ej3J+VigpgEbhVZ6qsFl8An2UYpAl3xLy1ucBF2xBuqZKYbpJUtD9FwGeRkVyE1tGqjHtQYh/IMgqvfayLZBxiO+V3TC2VPFz2roCxxN8ILzyKCccxIY6EYsg2wLb1b9B+rWH4G8N/rgC9D0rXrnQKEbYp+lXXltwESQgPzrb5EoRPty9diblSBbxr4PwEl/GnxRlFZpYk8DyfFJduN8121X5mRWKU669muG3jI4LsXrhl6BVVMcXN9kaq9qzOr2vTf6Is5OzV+xgQNBDsMidsJ5/8+U+ZLXooktS7zB9DjyEnTQxWXOnhIw4k7Wzj6pm+ZI5W1N30QbVB+QfOIfFzkA8R3ksoDuIxfkg+sY6kPGs7McrSWE2w0WZZTciDomTNz/a/AARGaKLE/e4kg1r0pSEd5Lqfv2GPD0CVG+IIRsq95HMFrXDIff/w9bLK8tI1lZz+wif+9ZIAdT2x9Jcdx8/+EML6sF+RBhZOIizdnUCcvjLvE3dvjT2XBicdQFz71GSOegjg+HfysTa94p46Us/g+iuWHA2sdHuEGYSEnQl/1XkrGI1wOqLc4xW/TxfcJOSBY1fOI2WNAypKSJ3XLq1b4bHlq6BVxRl7ZGpXIA+4TjhjcNWD3hW0hQro0681tHtg7+bjwCsPkvMUz0G5kPZhm/yp1ZuayG8a+hnLAsvu/MlKnPYwrlTFPELPCzrtNKQnxQfLAaS1JMkRyCGvxaTkkQ/ifF7KdzVnxyQ2c88xQwGcJwb5iFwTIrLK8tI1lZz+wif+9ZIAdT2emWu4WD5JL9pYQys6uuTjpUny3GCBqtmlSF7WAqb/SDNNGzyNQ7fa8cz6o2BueH7nsewtLrWI8139kDY7buwIJlZPNrQO14nKC4FRdYTd6tGLRzdzpRQ3YSN1eboqLyDaiDtt2Eeo2SuONSXDKkDPUtDN/yEXhCQcgUN7oLJ0p9TTgsA4Im93RL/HXnEZvqueehEN0RguyiEk6xfqjtG//qrodfXYdZ2XevUA0e3Q1ODqusogZ69NPTwcMIIEB9OjlCdCXtDlGFiwYh9nsKaWYZ2hZz9paAA965yRCRT6FSOLxanRho2EslI/exdY3m6hnaFnP2loAD3rnJEJFPoVKSeV4Hc2K+PHpdmAU7lCi0nC8wS6LVpMSS12B4zm2Jiy//r3rFrCj89wCVM4rWMeHjGNEqIOkcAKIphTn8N+3tWrLuevJCW8uCPmRqNBIx3o5u9Agg2CoxBcbeKhSkgxcsry0jWVnP7CJ/71kgB1PZs8QX0w330Rbt+n+qfGOKgltTi9TUIE+nakOwBUwlGzGCovcjF/eseYfisT1kATZa5CBpREh+fnc3LetLh6lJzbRzCOU7hvYmfqCfQIEE2LK/wnuo7xKFM5xu7wdcbYl7LK8tI1lZz+wif+9ZIAdT2+iFwD087enS9Qmnc+6TtGwyqcszuz6j00BFIS/SbMVhnJAC+ZQWSoOYSszkenPYmkS9yFcPlFfjBZmhDidyKnssry0jWVnP7CJ/71kgB1PbGa2IL2v0JL+05yqpEk1RXRsPddqu9G/gZBwYtb02/64LJUc7mZtw5Kv/4U84of/Zwl4bpqF9az5NJrKKkF/xiyyvLSNZWc/sIn/vWSAHU9h+tl9Qxi87K2h+5/B9WHgzH7X1iy29OZCoMelXD+ClVyyvLSNZWc/sIn/vWSAHU9iESMOovMkB7avWagqdVAZXzc/gbpOlx0gsFjhPwn0uhLe12efa0moU5Z+xasdZL/GCj43tCVBTmFULrvTiygpaGdoWc/aWgAPeuckQkU+hUGhG7LjAMXhktEXburGQZnmctBLaT/3k8tNbHApVgKXjLK8tI1lZz+wif+9ZIAdT23lwKr6chBa0V0BztPzGuIzFXblPx9CPjiaWXHh/siMDLK8tI1lZz+wif+9ZIAdT2P4l02BuKBDE30kv9BbF3Sn/xI8zs49r8XIE2TnGTQXjLK8tI1lZz+wif+9ZIAdT2T9e6lPquATe/wxV3XTSTiUDNG5Ozmy1nzOMSr0Ibjs70+bfFx8h7YBg00AMs6ciKz4mnW7bruOHmC44nXkfswrl5ELh4EtZWSqrhfkapCoKif3iIBNU4nCgObuW5JULTw1AICZyACExn9w6W2iBVIq2UUcWF6N5dkEODGAIwIWp4YQB6wrS0bTwZL/XoGV9XsJw3rz/E24VzsAMYJ1jpKAxI12d70l/zACYCklU/dtRAgUnKfCCxwcLQq4KQqALdumxQwu+dNBBUoX4mPpDzhTnpUcNWeudlTfvdA6VafWFxy0GmLrhbeMqCOq6THp7VOZSVUDp56nnK8Oj0brrm9Ad3Hze4aitTsg2U/fcH+7z1rcEFQrwASuMEgFT/Dbg+0n0+ocGDXogzwsxAZDyaSubRsmtV05BQFTJ/BNvv/uf5kSY9i/97KU7IFmYxl8spwzkTrio4jARH6ZwTXpRlH96TZdd94p2pTalL2btIKIK5Wk74K5wH32SYTshVOf/iyyvLSNZWc/sIn/vWSAHU9sQsVJzm/pYAfNfVhXGRMJ6SoD2ofkH9J+ZSnLfDJE80j8nGWSjfGqnP8m3Q7scl8gdcEsVSDVxqQSxwaiRUwDBh5OTCl7DvoZqDwoixp0O5VqKvyx8WCUyOOffyOrAf55oeUKna5p2IAwctyh4IRnUn19QRxIda+Tx+nKfD4GRgEMP5K78fb/meoPkbAdHPUbCf6yB8yO4+96WmQMqrEiazKeyZtjbvlikbOeMP5fC8m7O1O/CBnhfnOrGYzHZwHkCqcwxAqrB9WkbLLyHMZvp5gGgrIoKGhFHD5bnf9fAzzpQy+w7887DkJyvv2wnOJ+KqlmZAoyHViH43Fz0XaA0RmmBbpHJfABcJl2pAkKoHVUcbd6x5CzRR8/OAtnqOvNtCzihm7Wl77v1dPlFHzx3LK8tI1lZz+wif+9ZIAdT2lhBF3H0Po9FEWCAx+v0nfgUsYWd2iwh89yAMr6aqRdwbMZfcaIPrfMGih8Q6RUSdGNt9r2aW+Q85qHFJti9AfWM+n+lsglw2ycWJm8HBBkFLmQ0WpsNgEAjdSj/+w8Bl1UUwhxnLkc/zsitKLRtrHCrNWRcP9VL3Td8HaUO6fSlqh36Rucfw8TQ1B1MWoupjhPR8OTz+CUkdyKPbE7Uj1UDph9kYaqXPMl1/6mpq02bLK8tI1lZz+wif+9ZIAdT2OPfZqfErPwt8fJloo3FHoZsHj3uNR0yOjISZQFXfhdWYgtUmb3XNIDHoHGxWnq5M6dR/hBBo5V4i+TLZvMUqeFJcR4ny1TDRd8tO3dBd906Rwn/BCqHKOO0GKMvxFA9v8fTm1MPfyrgNlswXAuZjyH9sq+50wlZhqoJMVlK1Uq+t1B8IKYeY2d3/w53tee9gS7tQIESKVLRRSMeycuLgooMHJHghLZdbyJp0Y++kEqq1rALvEKcfudOuS02a1O6E31A9YymQPyV+ogA5Ra7YMiLgQ60T0eoSk+cii4hPKJxe/4be/X32N8pIIBLHnGqTtjElnMU2j6PV8hrPT4UGNblxZ/6yI6ne9iGRdajlKXpoLudCv0POE3vRM6L2cHMdBEWVHe+/p5zy9jKAjJhA2HL1yLNhLmR3ZE359YsHqIAePyCNrDJ35dzUq8sr75k5p9sfsN9f6dzvxAoEgNzgwVzKPFlxWqwzUwazWydGCSWpDlHKgOILYHiLzZdfH5ptcl6PiCDbUgtxNrQPKNgXUBYApK4F/J9xZl9JPw1MrYI1k4Up7GMUaacXtz2ilDPF6TxPBbrSCyiMTvoFZyry6Q5m49vcVKgkROP/PB106zgqzVkXD/VS903fB2lDun0p2yOdEh/CwcuFY2NEUaDuIBogybCoASpGSv/dP/Na99aafB+3vA6xC7sg91gGRmxtlXNvYiCMmDDzCZhMfnf/qhx1f8vIODrjL5id6jxHrmhARcUOxD4j9/58WtJYvamtCzws67TSkJ8UHywGktSTJMpgZtizoAXN59hQ+U5ChIQ0UTjIpCChcAvWp9/CHyo4Rg9/iqiNLSBOW41pYvgGU7tH1iPuhex19bXM5o8E6WCjOynp7NgACV3+RAz4ral1hnaFnP2loAD3rnJEJFPoVC1QOCGDO/o1xXb68gGiHiBCssH7WkTsxTfPTqiuXG2NiWsuoNcP/8447TODwBwQhxa1f3RFL0qVylqGrbPeqfgwQX0TNuBq9D/NTHIyheTuwAoVYG8v4lMj7orvnunUwwgk6UX+3UUbLaAZ4KmtdR3hTsxKiiK4RriEp075EH52ldjRJb4ubI/QX+qdrTLxFwIdYeP/wiikNVOXPMCm7uHvrcIpvhqcVtVEX+G9aL8vPnzc+hHnxA708bD6LfJNga3FyHKiBR3Uf9n0DgHGN5X1hxGlQbm8UTL9LIBviD960V7JQvmqAh/k4pdgG9qw4UghOhjEy5DmCp+dv4RWOUOam5qd+KegkkESOG8kQQepzpQy+w7887DkJyvv2wnOJ8CJRl1EODM0QYzkzMtv8XHLK8tI1lZz+wif+9ZIAdT2CotroRPr9LAL1Kt+d7D3MdtxNasLTuJdDI+qNbb8PTtPut/tDqOPXi11yu4zV33nRY6Fj/ZR5oK8ow7kWmbs0+E8GOhhGjF5a7sb/QXw2QODqusogZ69NPTwcMIIEB9ODCWOKB+1vrFKTFh8fWoOBgLRJrE751k0SaDDlVN3isNJAOsfXjzGvoYzW2bapjGlqyjj6fyBU+5IwN8Fq4lBvgN8YI8VMd8bbwIjvJ5vKWASfAAEBy+LDVc6sXtcsPvWt3+sus9I22zK2Tj7hS6p6Msry0jWVnP7CJ/71kgB1Pbx/aLzSLQmtwO4WRoN22KYVJA3/XzSEgbgnegxqqNOBi3tdnn2tJqFOWfsWrHWS/zv7q2U0HAmSHcb+nttlsVLjMjRwjaOgAtRej3dEvSPVFw/i0aCK0xMQbLKhWbxtQCBklfFaYVFLPZZE0n3S/xj1BPTmFdaUGyZRZ26QDGhOMsry0jWVnP7CJ/71kgB1PYzLNIT67swhJ1TEnIALcUs+5JlwJu7mxTRU4WXAnBP13ge5gVjj1NaJ68wuaPiVh7Ad6UPWWgR6wLIPnTUftFj0p6VXSJPuTeawRRQ4c3crXeQmtCHCpUgXKVotcDdzWATTnOKJVyP2mLOlbMh5vM7+u4fL7M16z87SJEHTTTmm+K9NHNpmSmwJbhasZwdgx/Ad6UPWWgR6wLIPnTUftFjOIihF/C31gsK4EvtuusmUk89cckAP5ivmpyGRL66xKT3bBA/54lVOirVxrZQB/w7TS7l/Ee/2o1KEUL8p7Dto/c5snQJlCSUfDDDOuexmXjAObQgs37bLDyE74YKKbLRdwxJeEkCjDdwLvMuJGrsCOz2OtjAPIQTkjChNJyWCzSEdzXKLqIgRK2ipAMFgKRvlRbasHPlRusSg0pRNVUCQZ3XPgl3qTIlaMHobBQRnP011voh5y6DBMKC16lYND8UfmygclTYsZCedep7UloDqwcjHa6KH8W1WFZ9DXxP3WvYF0RDrYTb4joQmIVV/cJned3cP2Urvplr6LndTrkNqBYApK4F/J9xZl9JPw1MrYI1k4Up7GMUaacXtz2ilDPF6TxPBbrSCyiMTvoFZyry6Q5m49vcVKgkROP/PB106zgqzVkXD/VS903fB2lDun0p2yOdEh/CwcuFY2NEUaDuIOrz5smZuLvIXmWOpEXWiGoIliykpnHcmlZZHlJpVuvoUz0G5kPZhm/yp1ZuayG8a9qRorVXIt/ha94Kc2wfTcvLK8tI1lZz+wif+9ZIAdT2zuZhFqHVFRJUcj0O/eTGLl3BYLVPDUQaL9fHt35Sv6mFIi2EBV7lfkpjlSLRXQO9Czws67TSkJ8UHywGktSTJIHIaw3gXkqAo0ejwJXr22KrbYfJ9G5X89PmCHiypzGJAo03cI20wL2EwW3jTeY7b/YWYCplrNqMCEn8Gok4n6Wfb/mvc3uiSz2Sdm79UiXjJjfL305hU1b+BHjx2KrSCKgEVo/BGRYRt/utyktri6ZBeHBULang6ry+/dRV5N3EsDubJRX6IDZPzj8twQ6Scvkvn4cKC1QZ+TpMURrM/RThBMEETpTfqyO4ZMazVsbIeR04eLG2qZblGXrTv4UEaxT3JyhtNGZeShbg+Pd79/243zXbVfmZFYpTrr2a4beMZtyyg3yaTN9zuRir4LVzoltVduqIpRWMlxWfr+xBxPBRRhZAALeMUAgb5xUDz1SxstcYu6mrfEhPi8+jj+GdkKbiQm2Vyc7dJZVP8UOQ7Dvax98To3jxQADu9byYDiQudH+LlGbtrPPk1BG5stJ1S2p/nmRXZ4IOANLoEDn2zSBF3DMC6ds76jgv35b4yFTxyyvLSNZWc/sIn/vWSAHU9hQv3rswsBH5YnNBO+01/BnOlDL7DvzzsOQnK+/bCc4n4WExriS7DLCZduiEOJkXMvfynpEr1dM8pkO6w9zY+TstfgD4cQkpTIy5Y+GypSnHoDLinR0ifrSjwBRx8/cYnM6UMvsO/POw5Ccr79sJzidyS6lbvcdYyU8b8G6Haz2Sasvg5FeNVummceijoi8zDV1uHzlpJ9buUAbmLP1NweNeuqK6YVvp6vCeE4GhfHyHYKi9yMX96x5h+KxPWQBNlvTv34bJGwsh7cUYXy31wZTOlDL7DvzzsOQnK+/bCc4nicfnIrnymM+RhcVNfZuuu15RVyGa64KPm45QKAWeu0nhTBDQYwFFsH/9TZMRN2lbHt4Yh/cVEh3HoCYFj2AgMUob8Kn1KViDOsve8jmh68upUhmH6I7HeXi1YdTHUj6JhnaFnP2loAD3rnJEJFPoVKJfPwh2GkXD7FqF50GR9GbjwX8fbfjYwordkXs35DopA88+Yu4+SbzgzJKEwiJfq1oJS8CmehucOsLFrRTWmnqAzB8D08TYt4LolBKmOFDp1XVXSVqmaxpHkxzsoG97hs/9pwW5TlKDFuawF+3SPgth8bBlQx6jIaXeRoSYv4j7kjnhczq/BF2+pyfDwSAjSBjXN+A4k4F95IHX+ePEwFzuJtmTCLf9vTAxWE8ocS5eBPeO+sD4Qw/B2/1o7FBhByYstoD3jTb+sx8gY/c9Ivvr3KOjZgOSDzTufy8M7VXhPu2Z7PSNrL9/kmA6ys5v1tKm+jQawv3/QHX42J9y8hA2uLkFaNyO4XxCV0urTpiEWcGMMr+lOEJyd7+nNmKwj8ZDEV+zPmLHLlCHIBtMu4vLK8tI1lZz+wif+9ZIAdT2cvI7cONOUxvnn/he1IEPk6Yacj2re3hKsrmcI8+mO4jLK8tI1lZz+wif+9ZIAdT2VoT5PX7TnVoL33KeqrR7bqczF/F7hcE/04Hl0N1vIs2V8FZQ/uhcuSbsNjcxBQb/HnH96+vP/l/bH02Qv3tVhHQv9cFuqJUEasrTyzCXa0Ir1jkLF8/rhvjcq2jy6i15r6I17eifCiy+dYW6r6vQXWO9pYbO2sniXX2yTxVsokEyTLBg81UD/cCcSmfk6quwcGQtqzz9Sbq624oryQ6u2ZFYno5/+FqbhHRqvNpLewIEQsGkljkrSDCA5NZToac95E5Nzehwh8SCkyohKOhQa1fCZuHdvW9DeBqU8Xis1LvaEXTBw00GgdoKOOCSqqVWdvGhKrLIjya11yBp2LMtzOrs8o3/9knlxSVaERypWZdspAzMsEyjyzggITPjZTT+vkBMydwm0u65NLeSjeKIfex24TN0hun0HlWiHQIU+3Yx6Ypri1tDhwz383QphEyKFhw0hZg1r7lGv0npUopzQvuSZcCbu5sU0VOFlwJwT9d7pgoRnQhufFDByEd/jk0KM+F5+E6k9JVut5AqqqIjDqNTilkTcZch3z1+YnN3YsHbP+AjWHjVcYqHMPeM61uiqeQdqPBRUDAKqHyXzEoRyLJCGnn350uaIs8dxPxXcgo8R/4Q6iMpYTaVHIOpHJnWhJmIrx5H2bcLbfT5/QmMIMW5Lgous15y/AJrR0nVmeVcMJixUr8xB8wOaesqYadFyyvLSNZWc/sIn/vWSAHU9kOYoggul44zIZ61LroFgXKGdoWc/aWgAPeuckQkU+hUPbVc080akkhLXOr7cg8VEUvZbz0HX8hPFsabUD6r+a2MLl0FNyZ2EHYkV7zAB/WNAEZLq3auv+p7ObvX7s/pLlR4YgKVCROBVxlN8g3XWKn369N1jlosqRBdDMfJBBbDTzck883DYJ2NNdVQYjOqgsbKnlq8Y+Pj27d5wC+aZKS5C/7CeSu8frIgbginhf7Q+w218h9AtKTXCQilgeuRLI6ofJTdWtyHBCcaNr7X9hgprR+ZkREewQm0jimN7nC7yyvLSNZWc/sIn/vWSAHU9k8uZEUPrB2V1Lm8lOy3c83HIcRW4E16B7lcpLHqZaepDhkwoC/MauQLNo5iEW2eucejmfgaZNLG1lEQS9oGZBMDxhnQgq/jo7nJYxWGhpDFE6SshSNpkc+3ukXngadfiH9N80APXIXvu8qj+74cHLfOlDL7DvzzsOQnK+/bCc4nhA01ksNWPiLjkAb8UtKJq4iNOL+EDEz6rfYna6EDYD7nts/SOLN3S5xUQwFQR/+LTTp7RbugZ2+6bMqAyZqYe8sry0jWVnP7CJ/71kgB1Pb5rOaRwm1Hfgrlcg1ZEg3RUnnOhF0YYByUYXdBODk7pPMl6S1al9SrHfgymTOdIMbXJFbV72BQljwUK96GV3aQohMjk0/I+RKdi089DgoMbwA3+Vc//eHqh776YNeFhwkNq9AdDJ4n/LRD3WtYJXASt3ivC4u9QBTfb/vCmNJi/fzaes4oJAKuSc0Co+au6RZypx5D5jLNmXM3F8YZpg8yVgQXwGow9F53TPtwELhEbCdUJOg+3WvLXRkWcpZalg4K159aEM/vwYwCq34lxkSFhlKyTUg5RsXfRLpaMhm0eZSHduoDHNf4Z1oggZGzikoGop8c/zroWBoN/aVKmn8s4TyE+UBQezv1fLBeUyBGbH8JXA/5u218EZBBQtw3oqEv8yJ2DcVdKNxmztB8LmnH')\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面-登录\",\"path\":\"pwd-login\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar islogin = fetch('hiker://files/rules/bili/islogin.txt', {});\\nif (islogin === \\\"1\\\") {\\n    d.push({\\n        url: \\\"putVar('my_account',input);refreshPage();'toast://你的账号是' + input;\\\",\\n        col_type: 'input',\\n        title: '账号',\\n        extra: {\\n            onChange: \\\"putVar('my_account',input)\\\",\\n            type: 'textarea',\\n            height: 1,\\n            defaultValue: getVar('my_account')\\n        }\\n    });\\n\\n    d.push({\\n        url: \\\"putVar('my_password',input);refreshPage();'toast://你的密码是' + input\\\",\\n        col_type: 'input',\\n        title: '密码',\\n        extra: {\\n            onChange: \\\"putVar('my_password',input)\\\",\\n            type: 'textarea',\\n            height: 1,\\n            defaultValue: getVar('my_password')\\n        }\\n    })\\n    d.push({\\n        title: \\\"““大会员？(先点我)””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"不是大会员别点确认，否则后果自负\\\").confirm(() => {\\n            putVar(\\\"isvip\\\", \\\"1\\\");\\n            refreshPage();\\n            return \\\"toast://你选择了大会员。祝好运(✪▽✪)\\\"\\n        })\\n    });\\n    d.push({\\n        title: \\\"““登录(再点我)””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"确认登录？\\\").confirm(() => {\\n            putVar(\\\"logining\\\", \\\"1\\\");\\n            refreshPage();\\n            return \\\"toast://你选择了登录。祝好运(✪▽✪)\\\"\\n        })\\n    });\\n    if (getVar(\\\"logining\\\") === \\\"1\\\") {\\n        if (getVar('my_account') != '' && getVar('my_password') != '') {\\n            // TODO 吐佬说这里可以改成 $.require 用法          \\n            evalPrivateJS(\\\"dtd1P3dTEITonsgrNFfoBigi5ljaz0PeGmbmMjjr9H5nfvsnBw7JFp37cn3egqu0y/0wTW2oU7qtMwQIAiLhESVKBlKkRvW0pnPDdHl7PGwwDT5GM1vBsogb7YDpwmwV8rttad0O5YJBvpjX29hUBpSsiao7l3UebzxNAWYij7YwHWht0jVbh5SL7PXVo149fPSTuxl8A+vLUWi+2WxGrOZ+QvtrYIn28BqS8PS7zf0R0yr9hXzjbMOOX2COdVYKPdbGsxzklV5X2LLmKbPgEfQElCgMZpYune0I8OyI55HLK8tI1lZz+wif+9ZIAdT2dTQvCBb+iHjpR6K0Mr0dfc/jrTd/+nmsmWrkjituq8x2h7U3bZmaxkqYrxSoprLiZvnBkSvEoIiqUUOKimCy01f3tRfSQBeR5lgT5A/xqgd28aEqssiPJrXXIGnYsy3MLZRhSLw5kdSU3Y+dyCa6ZcIDxlOGeSFLmI0OCFbpZe9bY7nKUOai3+THsaFiEEqpd/6nUQF4TZRBgVqjYEFwWJyKAK6DAqoRvB2T0if2wUvOlDL7DvzzsOQnK+/bCc4nyZxdDfQXN6RqB+i6NgTbCjNd4TFX5fWBvHa5pHrTSZAhTW9wFA5wsADB95y+Jx2X9Qk4GLCGstgGcmHm96ap1uWq+K8vGEZEbEjkU52tMS5zz6gm7YhXf8eBYBmEaiLuMeU75Ge2qS6uOoj22ITEUcsry0jWVnP7CJ/71kgB1PYZNynXLl1tfoDY3HZgPakf6D+ADzQYqxqRKZCtlNIya9k8C4H7fbhLDXdWA3oV5yUOgaSXK1OM40FxNyNXpA/ZKS6gY3B1/V2+zpz+Q7Cmue5+qaO0XrDP15hjS4bxnWrOlDL7DvzzsOQnK+/bCc4nXxekuoTVURY7eh+dIF4QOaXmbNjYNkiqnAd85FrXKXoegJZC85B4JVqOWcueipNaHy/dwAhKpnK/5JO7Z6ya2ls2/JvPOCP91e6g4HO+YqEpLqBjcHX9Xb7OnP5DsKa5nprbkIP2knDXXqtMYGRdcigeIRz+OHmnKLm/+WCPa0618EqvMsGg9fpvtUo2/tm0RzYYi8kuFGopTyoikDwi3csry0jWVnP7CJ/71kgB1Pa1ADkvivkncEhPWP4wXCaTwwpZ0G6+YTvyp68thFdAL5xx9+nUa5jWmJUyyQ+r1UsD5sMqinY5b/eDUnxRKKBTzpQy+w7887DkJyvv2wnOJydHPM2ah78eAttSahVCEb/l3Zqi2hFkiZJ8gxPC0PY7/qt2N0n8lHD8+72KTUDIquX565CIQncDW5KfXUZLOnZbs6RTqR00LuPHAxPIHhiabjkNvSVQOzv3awerameSO8sry0jWVnP7CJ/71kgB1PbZfAA+7g+YdTNpeu9LRRooiFwV/9cu5HpEgZ2X6waWdooY1g5pCXKpMu/d7c3hdQfLK8tI1lZz+wif+9ZIAdT2Y96skBtNlvNAx6IGpzKN8eN0OJCm2IqsJJnHXJd1fryCMmECFEeaVbpuKG3V09wAC7SYi7j/bCB+DC11BSaZv8B3pQ9ZaBHrAsg+dNR+0WMtZjK4QlfzsMtgGqdnl/D+\\\")\\n        }\\n    }\\n} else if (islogin === \\\"2\\\") {\\n    d.push({\\n        title: \\\"““已登录！””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"确认重新登录？(请不要尝试多次登录，否则账号异常)\\\").confirm(() => {\\n            putVar(\\\"islogin\\\", \\\"1\\\");\\n            writeFile('hiker://files/rules/bili/islogin.txt', \\\"1\\\");\\n            refreshPage();\\n            return \\\"toast://你选择了登录。祝好运(✪▽✪)\\\"\\n        })\\n    });\\n} else if (islogin === \\\"3\\\") {\\n    d.push({\\n        title: \\\"““你需要去客户端改下密码才能登录！！！””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"确认登录？(请不要尝试多次登录，否则账号异常)\\\").confirm(() => {\\n            putVar(\\\"islogin\\\", \\\"1\\\");\\n            writeFile('hiker://files/rules/bili/islogin.txt', \\\"1\\\");\\n            refreshPage();\\n            return \\\"toast://你选择了登录。祝好运(✪▽✪)\\\"\\n        })\\n    });\\n} else {\\n    d.push({\\n        title: \\\"““点击进入登录页面””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"确认登录？(请不要尝试多次登录，否则账号异常)\\\").confirm(() => {\\n            putVar(\\\"islogin\\\", \\\"1\\\");\\n            writeFile('hiker://files/rules/bili/islogin.txt', \\\"1\\\");\\n            refreshPage();\\n            return \\\"toast://你选择了登录。祝好运(✪▽✪)\\\"\\n        })\\n    });\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"登录页面\",\"path\":\"newlogin\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nd.push({\\n    title: \\\"““方法一””\\\",\\n    url: 'hiker://empty@lazyRule=.js:putVar(\\\"l_id\\\",\\\"1\\\");refreshPage();\\\"toast://刷新成功\\\"',\\n    col_type: 'text_2'\\n});\\nd.push({\\n    title: \\\"““方法二””\\\",\\n    url: 'hiker://empty@lazyRule=.js:putVar(\\\"l_id\\\",\\\"2\\\");refreshPage();\\\"toast://刷新成功\\\"',\\n    col_type: 'text_2'\\n});\\nif (getVar(\\\"l_id\\\") == \\\"1\\\") {\\n    d.push({\\n        title: '操作指引 ①先点击下方第一步进去哔哩手机版网页登录账号 ②返回直接点第二步登录然后按提示登录 ““注:方法一不可用再采用方法二””',\\n        col_type: 'rich_text'\\n    });\\n    d.push({\\n        title: \\\"““1. 点我去网页登录后自动获取cookie””\\\",\\n        url: \\\"hiker://page/ck\\\",\\n        col_type: 'text_center_1'\\n    });\\n    d.push({\\n        title: \\\"““2. 再点我登录””\\\",\\n        url: \\\"hiker://page/weblogin\\\",\\n        col_type: 'text_center_1'\\n    });\\n}\\nif (getVar(\\\"l_id\\\") == \\\"2\\\") {\\n    d.push({\\n        title: \\\"操作指引 ①先点击下方第一步进去哔哩手机版网页登录账号 ②点击右下角设置→查看源码→原生界面 ③复制最上方输入框里的链接 ④返回首页把链接输入框内 ⑤点击第二步，按提示登录即可\\\",\\n        col_type: 'rich_text'\\n    });\\n    d.push({\\n        title: '保存',\\n        url: \\\"var ck = 'SESSDATA'+input.split('SESSDATA')[1].split('sid')[0].replace('；；','; ');writeFile('hiker://files/rules/bili/bilick.txt',ck.replace('；；','; '));refreshPage();'toast://您的cookie是:'+ck\\\",\\n        col_type: 'input',\\n        desc: '请输入链接'\\n    });\\n    d.push({\\n        title: \\\"““1. 点我去网页登录后手动获取cookie””\\\",\\n        url: \\\"https://m.bilibili.com/\\\",\\n        col_type: 'text_center_1'\\n    });\\n    d.push({\\n        title: \\\"““2. 点我登录””\\\",\\n        url: \\\"hiker://page/weblogin\\\",\\n        col_type: 'text_center_1'\\n    });\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"cookie获取\",\"path\":\"ck\",\"rule\":\"js:\\nsetResult([{\\n    col_type: \\\"x5_webview_single\\\",\\n    url: \\\"https://m.bilibili.com/\\\",\\n    desc: \\\"float&&100%\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            fba.log(document.cookie)\\n            fy_bridge_app.writeFile('hiker://files/rules/bili/bilick.txt', fy_bridge_app.getCookie('https://m.bilibili.com/'));\\n        })\\n    }\\n}])\"},{\"col_type\":\"movie_3\",\"name\":\"页面-web登录\",\"path\":\"weblogin\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar ck = fetch(\\\"hiker://files/rules/bili/bilick.txt\\\").replace(/；； /g,'; ');\\nlog(ck)\\nvar login_url = \\\"https://passport.bilibili.com/login/app/third?appkey=27eb53fc9058f8c3&api=http%3A%2F%2Flink.acg.tv%2Fforum.php&sign=67ec798004373253d60114caaad89a8c\\\";\\nvar location = JSON.parse(fetch(login_url, {\\n    headers: {\\n        \\\"user-agent\\\": \\\"Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36\\\",\\n        \\\"cookie\\\": ck\\n    },\\n    method: 'GET'\\n})).data['confirm_uri'];\\n//log(location);\\n\\nvar info = JSON.parse(fetch(location, {\\n    headers: {\\n        \\\"user-agent\\\": \\\"Mozilla/5.0 (Linux; Android 10; M2007J3SC Build/QKQ1.200419.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/83.0.4103.101 Mobile Safari/537.36\\\",\\n        \\\"cookie\\\": ck\\n    },\\n    method: 'GET',\\n    onlyHeaders: true,\\n    redirect: false\\n})).headers.location[0].split(\\\"?\\\")[1].split(\\\"&\\\");\\nputVar(\\\"mykey\\\",info[0].split(\\\"=\\\")[1]);\\nputVar(\\\"mymid\\\",info[1].split(\\\"=\\\")[1]);\\n    d.push({\\n        title: info[0],\\n        col_type: 'rich_text'\\n    });\\n    d.push({\\n        title: info[1],\\n        col_type: 'rich_text'\\n    });\\n    d.push({\\n        title: \\\"““大会员点我””\\\",\\n        col_type: \\\"text_2\\\",\\n        url: $(\\\"不是大会员别点确认，否则后果自负\\\").confirm(() => {\\n            writeFile(\\\"hiker://files/rules/bili/access_key.txt\\\",getVar(\\\"mykey\\\"));\\n            writeFile(\\\"hiker://files/rules/bili/key.txt\\\",getVar(\\\"mykey\\\"));\\n            writeFile(\\\"hiker://files/rules/bili/starid.txt\\\",getVar(\\\"mymid\\\"));\\n            //refreshPage();\\n            return \\\"toast://大会员登录成功\\\"\\n        })\\n    });\\n    d.push({\\n        title: \\\"““无会员点我””\\\",\\n        col_type: \\\"text_2\\\",\\n        url: $(\\\"点击登录\\\").confirm(() => {\\n            writeFile(\\\"hiker://files/rules/bili/access_key.txt\\\",getVar(\\\"mykey\\\"));\\n            writeFile(\\\"hiker://files/rules/bili/starid.txt\\\",getVar(\\\"mymid\\\"));\\n            //refreshPage();\\n            return \\\"toast://登录成功\\\"\\n        })\\n    });\\n    \\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"代码-直播\",\"path\":\"zb\",\"rule\":\"if (MY_URL.split('#')[1] == '1') {\\nvar zbc1 = 'all&2&3&6&1&5&9&10&11';\\nvar zbw1 = '全部&网游&手游&单机&娱乐&电台&虚拟主播&生活&学习';\\nvar zbc2 = '0&33';\\nvar zbw2 = '默认小分类&影音馆（生活）';\\nvar zbword1 = zbw1.split('&');\\nvar zbclass1 = zbc1.split('&');\\nvar zblab1 = getVar('zblab1', '全部');\\nvar zbkey1 = getVar('zbkey1', 'all');\\n\\nvar zbword2 = zbw2.split('&');\\nvar zbclass2 = zbc2.split('&');\\nvar zblab2 = getVar('zblab2', '默认小分类');\\nvar zbkey2 = getVar('zbkey2', '0');\\n\\n    /*for (var i in zbword1) {\\n        var a = zbword1[i];\\n        var b = zbclass1[i];\\n        var c = a + '&' + b;\\n        d.push({\\n            title: a == zblab1 ? getHead(a) : a,\\n            url: $(\\\"#noLoading#\\\").lazyRule((c) => {\\n                putVar(\\\"zblab1\\\", c.split('&')[0]);\\n                putVar(\\\"zbkey1\\\", c.split('&')[1]);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, c),\\n            col_type: 'flex_button'\\n        });\\n    }*/\\n    d.push({\\n        title: '搜索',\\n        url: \\\"putVar('zbk',input);refreshPage();'toast://正在搜索';\\\",\\n        col_type: 'input',\\n        desc: '你想看什么直播？'\\n    });\\n\\n    d.push({\\n        col_type: 'big_blank_block'\\n    });\\n\\n    for (var i in zbword1) {\\n        d.push({\\n            title: zbword1[i] == zblab1 ? getHead(zbword1[i]) : zbword1[i],\\n            url: $().lazyRule((name, key) => {\\n                putVar('zblab1', name);\\n                putVar('zbkey1', key);\\n                clearVar('zbk', input);\\n                refreshPage(true);\\n                return 'hiker://empty'\\n            }, zbword1[i], zbclass1[i]),\\n            col_type: 'scroll_button'\\n        });\\n    }\\n    d.push({\\n        col_type: 'blank_block'\\n    });\\n    for (var i in zbword2) {\\n        d.push({\\n            title: zbword2[i] == zblab2 ? getHead(zbword2[i]) : zbword2[i],\\n            url: $().lazyRule((name, key) => {\\n                putVar('zblab2', name);\\n                putVar('zbkey2', key);\\n                clearVar('zbk', input);\\n                refreshPage(true);\\n                return 'hiker://empty'\\n            }, zbword2[i], zbclass2[i]),\\n            col_type: 'scroll_button'\\n        });\\n    }\\n}\\nif (getVar('zbk') != '') {\\n    var zburl = \\\"https://search.bilibili.com/live?keyword=\\\" + getVar('zbk');\\n    log(zburl)\\n    var qz = \\\"https://search.bilibili.com\\\";\\n    var live = qz + parseDomForHtml(fetch(zburl, {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36\\\",\\n            \\\"Cookie\\\": \\\"_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix\\\"\\n        }\\n    }), 'body&&.headline-live&&a&&href');\\n    log(\\\"123:::\\\" + live)\\n    d.push({\\n        title: '主播',\\n        url: \\\"hiker://page/zb2?url=\\\"+live.replace(\\\"?\\\",\\\"？？\\\").replace(\\\"&\\\",\\\"＆＆\\\") + '＆＆page=fypage',\\n        desc: '共有' + parseDomForHtml(fetch(zburl, {\\n            headers: {\\n                \\\"User-Agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36\\\",\\n                \\\"Cookie\\\": \\\"_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix\\\"\\n            }\\n        }), 'body&&.flow-loader&&.headline-live&&.num-txt&&span&&Text').replace(\\\"\\\\(\\\", \\\"\\\").replace(\\\"\\\\)\\\", \\\"\\\") + '主播',\\n        col_type: 'text_center_1'\\n    });\\n    try {\\n        d.push({\\n            title: '直播中',\\n            url: \\\"hiker://page/zb2?url=\\\"+live.replace(\\\"?\\\",\\\"？？\\\").replace(\\\"&\\\",\\\"＆＆\\\").replace(\\\"search_type=live_user\\\", \\\"\\\") + 'page=fypage',\\n            desc: '共有' + parseDomForHtml(fetch(zburl, {\\n                headers: {\\n                    \\\"User-Agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36\\\",\\n                    \\\"Cookie\\\": \\\"_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix\\\"\\n                }\\n            }), 'body&&.headline-room&&.num-txt&&span&&Text').replace(\\\"\\\\(\\\", \\\"\\\").replace(\\\"\\\\)\\\", \\\"\\\") + '直播间',\\n            col_type: 'text_center_1'\\n        });\\n    } catch (e) {}\\n} else {\\n    var page = MY_URL.split('#')[1];\\n    var url = \\\"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=\\\" + zbkey1 + \\\"&cate_id=0&area_id=\\\" + zbkey2 + \\\"&page=\\\" + page + \\\"&page_size=30&tag_version=1\\\";\\n    var json = JSON.parse(request(url));\\n    for (var i = 0; i < json.data.list.length; i++) {\\n        var r = {};\\n        var j = json.data.list[i];\\n        r.pic_url = j.system_cover + Referer;\\n        r.url = 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=' + j.roomid + '&platform=h5&otype=json&quality=0' + `@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`;\\n        r.title = j.title;\\n        r.desc = 'UP🐷：' + j.uname;\\n        r.col_type = \\\"movie_2\\\";\\n        d.push(r);\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"页面-直播\",\"path\":\"zb2\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar Referer = \\\"@Referer=https://www.bilibili.com\\\";\\nif (MY_URL.indexOf(\\\"search_type=live_user\\\") != -1) {\\n    var live = parseDomForArray(fetch(MY_URL, {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36\\\",\\n            \\\"Cookie\\\": \\\"_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix\\\"\\n        }\\n    }), 'body&&.live-user-wrap&&li');\\n    for (var i in live) {\\n        d.push({\\n            title: parseDomForHtml(live[i], '.item-right&&P&&Text'),\\n            url: 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=' + parseDom(live[i], 'a&&href').split(\\\"live.bilibili.com/\\\")[1].split(\\\"?from\\\")[0] + '&platform=h5&otype=json&quality=0' + `@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`,\\n            //img: parseDomForHtml(live[i], '.lazy-img&&img&&src') + Referer,\\n            desc: parseDomForHtml(live[i], '.item-right&&.status&&Text'),\\n            col_type: 'pic_1'\\n        });\\n    }\\n} else {\\n    var live = parseDomForArray(fetch(MY_URL, {\\n        headers: {\\n            \\\"User-Agent\\\": \\\"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36\\\",\\n            \\\"Cookie\\\": \\\"_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix\\\"\\n        }\\n    }), 'body&&.live-room-wrap&&li');\\n    for (var i in live) {\\n        d.push({\\n            title: parseDomForHtml(live[i], 'p&&Text'),\\n            url: 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid=' + parseDom(live[i], 'a&&href').split(\\\"live.bilibili.com/\\\")[1].split(\\\"?from\\\")[0] + '&platform=h5&otype=json&quality=0' + `@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`,\\n            //img: parseDom(live[i], '.lazy-img&&img&&src') + Referer,\\n            desc: 'UP🐷：' + parseDomForHtml(live[i], '.uname&&span&&Text') + '·人气' + parseDomForHtml(live[i], '.live-num&&span&&Text'),\\n            col_type: 'pic_1'\\n        });\\n    }\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"API\",\"path\":\"api\",\"rule\":\"evalPrivateJS(\\\"L7AvJ41C++kllBMPG9JRTUzQvEjJXwRrfRiJmEBufUQA2HHWtQLRhAwqSMzMUdIArWuWFTN471Q7vukhXbPbeRwhdfiQM+fdtKG3NKhQzKdd7rSBwipY9t0mJ0qO9Dx3Mtf1dX3k1y/8WuoXPMQnCXXDMQ97hwezot52IOyKsG64Oq5aGFN5diqT1tm29Sp/GrtVJX8fyjoNq4TrpfxiHg8YHSBlAPDkElZj/tmj/aC7KRzIcnwtOoLjeB+Akiom/SZus/+1RrnYpymbtkJNrY72PzOtdYNL1jOoQ5/4YkT2ZYZplLmI0cVgW6KBSQjqJ1NIawQg0h4qRNW0aYMWDU3/FGjuc5DBSsh0W6mK8GE34SYlR4DgkmMRmyGvqyhcRyoFeDaHd7jIihdjcyVg4k/+dfqvw7frWZWuI1vc9YM=\\\")\"},{\"col_type\":\"movie_3\",\"name\":\"页面-一级（拓展）\",\"path\":\"newdetial\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar Referer = '@Referer=http://www.bilibili.com';\\nif (!fetch('hiker://files/rules/bili/setting.txt')) {\\n    writeFile('hiker://files/rules/bili/setting.txt', '开启,关闭');\\n}\\nvar s_type = fetch('hiker://files/rules/bili/setting.txt');\\nputVar('reply_type', s_type.split(',')[0]);\\nputVar('like_type', s_type.split(',')[1]);\\n//颜色\\nvar Colors = [\\\"4\\\", \\\"5\\\", \\\"0\\\", \\\"1\\\", \\\"A\\\", \\\"3\\\", \\\"8\\\", \\\"9\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"6\\\", \\\"7\\\", \\\"F\\\"];\\nvar Color = '#';\\nif (getVar('YS') == '随机') {\\n    for (var i = 0; i < 6; i++) {\\n        var num = Math.ceil((Math.random() * 15)) - 1;\\n        var Color = Color + Colors[num];\\n    }\\n} else {\\n    var Color = \\\"#FA7298\\\";\\n}\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nvar pagenum = MY_URL.split('#')[1];\\nvar rx = fetch('hiker://files/bili/多合一.txt', {});\\nvar wr = `@lazyRule=.js:writeFile(\\\"hiker://files/bili/多合一.txt\\\",input);refreshPage(false);\\\"toast://切换成功\\\"`;\\nvar s_tab = fetch('hiker://files/bili/收藏.txt', {});\\nvar sr = `@lazyRule=.js:writeFile(\\\"hiker://files/bili/收藏.txt\\\",input);refreshPage(false);\\\"toast://切换成功\\\"`;\\n\\nif (rx == '排行榜') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/phb\\\")).rule)\\n}\\n\\nif (rx == 'UP主') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/up\\\")).rule)\\n}\\n\\nif (rx == '时光机') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/sgj\\\")).rule)\\n}\\n\\nif (rx == '新番') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/newbgm\\\")).rule)\\n}\\n\\nif (rx == '索引') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/sy\\\")).rule)\\n}\\n\\nif (rx == '直播') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/zb\\\")).rule)\\n}\\n\\nif (rx == '更多') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/more\\\")).rule)\\n}\\n\\nif (rx == \\\"漫游\\\") {\\n    d.push({\\n        title: \\\"什么也没有诶\\\",\\n        url: \\\"toast://真的什么也没有\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n}\\nres.data = d;\\nsetResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"代码-更多\",\"path\":\"more\",\"rule\":\"if (MY_URL.split('#')[1] == '1') {\\n    var _type = fetch('hiker://files/bili/样式.txt', {});\\n    d.push({\\n        title: rx == '漫游' ? getHead(rx) : '漫游',\\n        url: '漫游' + wr,\\n        col_type: 'text_2'\\n    });\\n    d.push({\\n        title: getVar('YS') == '随机' ? getHead('随机') : getHead('骚粉'),\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('YS', getVar('YS')=='随机'?'骚粉':'随机');refreshPage();'toast://颜色--'+getVar('YS','随机')\\\",\\n        col_type: 'text_2'\\n    });\\n    d.push({\\n        title: _type==\\\"新版\\\"?getHead(\\\"新版\\\"):\\\"新版\\\",\\n        url: \\\"hiker://empty@lazyRule=.js:writeFile('hiker://files/bili/样式.txt','新版');refreshPage();back(true);'toast://切换成功';\\\",\\n        col_type: 'text_2'\\n    });\\n    d.push({\\n        title: _type==\\\"旧版\\\"?getHead(\\\"旧版\\\"):\\\"旧版\\\",\\n        url: \\\"hiker://empty@lazyRule=.js:writeFile('hiker://files/bili/样式.txt','旧版');refreshPage();back(true);'toast://切换成功';\\\",\\n        col_type: 'text_2'\\n    });\\n    if (rx != '时光机' && rx != '索引') {\\n        d.push({\\n            title: '自定UID',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/starid.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');clearVar('htm');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入UID\\\\n不知道怎么查？b站点开自己的信息，长按uid即可，请填入纯数字\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/starid.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            title: '点赞key',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/access_key.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入key(用于点赞投币)\\\\n不知道怎么抓？那就算了\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/access_key.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            title: '解析key',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/key.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入key(用于解析)\\\\n不知道怎么抓？那就算了\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/key.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            col_type: 'blank_block'\\n        });\\n\\n        d.push({\\n            title: '评论区: ““已' + getVar('reply_type'),\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('reply_type', getVar('reply_type')=='关闭'?'开启':'关闭');refreshPage();writeFile('hiker://files/rules/bili/setting.txt',getVar('reply_type')+','+getVar('like_type'));'toast://已'+getVar('reply_type');\\\",\\n            col_type: 'text_2'\\n        });\\n        d.push({\\n            title: '点赞&投币: ““已' + getVar('like_type'),\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('like_type', getVar('like_type')=='关闭'?'开启':'关闭');refreshPage();writeFile('hiker://files/rules/bili/setting.txt',getVar('reply_type')+','+getVar('like_type'));'toast://已'+getVar('like_type');\\\",\\n            col_type: 'text_2'\\n        });\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代码-一级2\",\"path\":\"common2\",\"rule\":\"var res = {};\\nvar d = [];\\nvar pagenum = MY_URL.split('#')[1];\\nvar Referer = '@Referer=http://www.bilibili.com';\\nif (!fetch('hiker://files/rules/bili/setting.txt')) {\\n    writeFile('hiker://files/rules/bili/setting.txt', '开启,关闭');\\n}\\nvar s_type = fetch('hiker://files/rules/bili/setting.txt');\\nputVar('reply_type', s_type.split(',')[0]);\\nputVar('like_type', s_type.split(',')[1]);\\n//颜色\\nvar Colors = [\\\"4\\\", \\\"5\\\", \\\"0\\\", \\\"1\\\", \\\"A\\\", \\\"3\\\", \\\"8\\\", \\\"9\\\", \\\"B\\\", \\\"C\\\", \\\"D\\\", \\\"E\\\", \\\"6\\\", \\\"7\\\", \\\"F\\\"];\\nvar Color = '#';\\nif (getVar('YS') == '随机') {\\n    for (var i = 0; i < 6; i++) {\\n        var num = Math.ceil((Math.random() * 15)) - 1;\\n        var Color = Color + Colors[num];\\n    }\\n} else {\\n    var Color = \\\"#FA7298\\\";\\n}\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\n\\nvar c1 = 'all&bangumi&guochan&douga&music&knowledge&tech&car&life&food&kichiku&fashion&cinephile&origin&rookie&game&ent&dance&movie&tv&documentary&animal&guochuang';\\n\\nvar w1 = '全部&番剧&国创&动画&音乐&知识&科技&汽车&生活&美食&鬼畜&时尚&影视&原创&新人&游戏&娱乐&舞蹈&电影&电视剧&纪录片&动物圈&国创相关';\\n\\nvar c2 = '22&212&71&182&138&28&33&185';\\n\\nvar w2 = '鬼畜&美食&综艺&影视&生活&音乐&番剧&电视剧';\\n\\nvar word1 = w1.split('&');\\nvar class1 = c1.split('&');\\nvar lab1 = getVar('lab1', '全部');\\nvar key1 = getVar('key1', 'all');\\n\\nvar word2 = w2.split('&');\\nvar class2 = c2.split('&');\\nvar lab2 = getVar('lab2', '鬼畜');\\nvar key2 = getVar('key2', '22');\\n\\nvar zbc1 = 'all&2&3&6&1&5&9&10&11';\\nvar zbw1 = '全部&网游&手游&单机&娱乐&电台&虚拟主播&生活&学习';\\nvar zbc2 = '0&33';\\nvar zbw2 = '默认小分类&影音馆（生活）';\\nvar zbword1 = zbw1.split('&');\\nvar zbclass1 = zbc1.split('&');\\nvar zblab1 = getVar('zblab1', '全部');\\nvar zbkey1 = getVar('zbkey1', 'all');\\n\\nvar zbword2 = zbw2.split('&');\\nvar zbclass2 = zbc2.split('&');\\nvar zblab2 = getVar('zblab2', '默认小分类');\\nvar zbkey2 = getVar('zbkey2', '0');\\n\\n\\n\\n//三合一\\nvar rx = fetch('hiker://files/bili/多合一.txt', {});\\nvar wr = `@lazyRule=.js:writeFile(\\\"hiker://files/bili/多合一.txt\\\",input);refreshPage(false);\\\"toast://切换成功\\\"`;\\nvar s_tab = fetch('hiker://files/bili/收藏.txt', {});\\nvar sr = `@lazyRule=.js:writeFile(\\\"hiker://files/bili/收藏.txt\\\",input);refreshPage(false);\\\"toast://切换成功\\\"`;\\n\\nif (MY_URL.split('#')[1] == '1') {\\n    //.replace('m.bilibili.com', 'www.bilibili.com').replace(/\\\\?/g, '？？').replace(/\\\\&/g, '＆＆')\\n    d.push({\\n        title: '解析',\\n        url: \\\"'hiker://page/detail?url='+'https://'+input.split('https://')[1]+'#immersiveTheme#'\\\",\\n        col_type: 'input',\\n        desc: '请输入网址或者b站复制的链接'\\n    });\\n\\n    d.push({\\n        title: rx == 'UP主' ? getHead('首页') : '首页',\\n        url: 'UP主' + wr,\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: rx == '排行榜' ? getHead(rx) : '排行榜',\\n        url: '排行榜' + wr,\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: rx == '新番' ? getHead(rx) : '新番',\\n        url: '新番' + wr,\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: rx == '直播' ? getHead(rx) : '直播',\\n        url: '直播' + wr,\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: rx == '更多' ? getHead(rx) : '更多',\\n        url: '更多' + wr,\\n        col_type: 'text_5'\\n    });\\n    /*\\n        if (rx == '收藏') {\\n            \\n            d.push({\\n                title: s_tab == '追番' ? getHead(s_tab) : '追番',\\n                url: '追番' + sr,\\n                col_type: 'text_3'\\n            });\\n            d.push({\\n                title: s_tab == '追剧' ? getHead(s_tab) : '追剧',\\n                url: '追剧' + sr,\\n                col_type: 'text_3'\\n            });\\n            \\n            if (s_tab == '追番') {\\n                eval(JSON.parse(fetch(\\\"hiker://page/fanju\\\")).rule)\\n            }\\n            if (s_tab == '追剧') {\\n                eval(JSON.parse(fetch(\\\"hiker://page/dsj\\\")).rule)\\n            }\\n        }\\n    */\\n}\\n\\nif (rx == '排行榜') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/phb\\\")).rule)\\n}\\n\\nif (rx == 'UP主') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/up\\\")).rule)\\n}\\n\\nif (rx == '时光机') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/sgj\\\")).rule)\\n}\\n\\nif (rx == '新番') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/newbgm\\\")).rule)\\n}\\n\\nif (rx == '索引') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/sy\\\")).rule)\\n}\\n\\nif (rx == '直播') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/zb\\\")).rule)\\n}\\n\\nif (rx == '更多') {\\n    eval(JSON.parse(fetch(\\\"hiker://page/more2\\\")).rule)\\n}\\n\\nif (rx == \\\"漫游\\\") {\\n    d.push({\\n        title: \\\"什么也没有诶\\\",\\n        url: \\\"toast://真的什么也没有\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n}\\n//三合一\\n\\nres.data = d;\\nsetResult(res)\"},{\"col_type\":\"movie_3\",\"name\":\"代码-更多2\",\"path\":\"more2\",\"rule\":\"if (MY_URL.split('#')[1] == '1') {\\n    var _type = fetch('hiker://files/bili/样式.txt', {});\\n    \\n    d.push({\\n        title: rx == '时光机' ? getHead(rx) : '时光🐥',\\n        url: '时光机' + wr,\\n        col_type: 'text_5'\\n    });\\n    /*\\n        d.push({\\n            title: '追番',\\n            url: 'hiker://collection?group=①追番',\\n            col_type: 'text_4'\\n        });\\n    */\\n    d.push({\\n        title: rx == '索引' ? getHead(rx) : '索引',\\n        url: '索引' + wr,\\n        col_type: 'text_5'\\n    });\\n    /*\\n        d.push({\\n            title: rx == '收藏' ? getHead(rx) : '收藏',\\n            url: '收藏' + wr,\\n            col_type: 'text_4'\\n        });\\n    */\\n    d.push({\\n        title: '登录',\\n        url: 'hiker://page/newlogin',\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: rx == '漫游' ? getHead(rx) : '漫游',\\n        url: '漫游' + wr,\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: getVar('YS') == '随机' ? getHead('随机') : getHead('骚粉'),\\n        url: \\\"hiker://empty@lazyRule=.js:putVar('YS', getVar('YS')=='随机'?'骚粉':'随机');refreshPage();'toast://颜色--'+getVar('YS','随机')\\\",\\n        col_type: 'text_5'\\n    });\\n    d.push({\\n        title: _type==\\\"新版\\\"?getHead(\\\"新版\\\"):\\\"新版\\\",\\n        url: \\\"hiker://empty@lazyRule=.js:writeFile('hiker://files/bili/样式.txt','新版');refreshPage();back(true);'toast://切换成功';\\\",\\n        col_type: 'text_2'\\n    });\\n    d.push({\\n        title: _type==\\\"旧版\\\"?getHead(\\\"旧版\\\"):\\\"旧版\\\",\\n        url: \\\"hiker://empty@lazyRule=.js:writeFile('hiker://files/bili/样式.txt','旧版');refreshPage();back(true);'toast://切换成功';\\\",\\n        col_type: 'text_2'\\n    });\\n    \\n    if (rx != '时光机' && rx != '索引') {\\n\\n        d.push({\\n            title: '自定UID',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/starid.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');clearVar('htm');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入UID\\\\n不知道怎么查？b站点开自己的信息，长按uid即可，请填入纯数字\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/starid.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            title: '点赞key',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/access_key.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入key(用于点赞投币)\\\\n不知道怎么抓？那就算了\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/access_key.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            title: '解析key',\\n            url: `input://{\\\"value\\\":\\\"\\\", \\\"js\\\": \\\"writeFile('hiker://files/rules/bili/key.txt',input);writeFile('hiker://files/bili/多合一.txt','UP主');refreshPage();'toast://你输入的是'+input\\\", \\\"hint\\\": \\\"请在下方输入key(用于解析)\\\\n不知道怎么抓？那就算了\\\"}`,\\n            desc: '‘‘已输入: ’’' + getHead(fetch('hiker://files/rules/bili/key.txt')),\\n            col_type: 'text_1'\\n        });\\n        d.push({\\n            col_type: 'blank_block'\\n        });\\n\\n        d.push({\\n            title: '评论区: ““已' + getVar('reply_type'),\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('reply_type', getVar('reply_type')=='关闭'?'开启':'关闭');refreshPage();writeFile('hiker://files/rules/bili/setting.txt',getVar('reply_type')+','+getVar('like_type'));'toast://已'+getVar('reply_type');\\\",\\n            col_type: 'text_2'\\n        });\\n        d.push({\\n            title: '点赞&投币: ““已' + getVar('like_type'),\\n            url: \\\"hiker://empty@lazyRule=.js:putVar('like_type', getVar('like_type')=='关闭'?'开启':'关闭');refreshPage();writeFile('hiker://files/rules/bili/setting.txt',getVar('reply_type')+','+getVar('like_type'));'toast://已'+getVar('like_type');\\\",\\n            col_type: 'text_2'\\n        });\\n    }\\n}\"}]","proxy":"","icon":"https://gitee.com/CherishRx/imagewarehouse/raw/master/image/13096725fe56ce9cf643a0e4cd0c159c.gif"},{"last_chapter_rule":"","title":"AI识片","author":"","version":48,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"终极大招，输入搜索地址生成规则\",\n    url: \"\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入要生成的规则合集名\",\n    pic_url: \"\",\n    extra: {        \n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"r1\", input);\n        }),\n        defaultValue: getMyVar(\"r1\",\"\")\n    }\n});\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"示例：\\n规则1@http://1.com?kw=%E4%BD\\n规则2@http://2.com?kw=%E4%BD\",\n    pic_url: \"\",\n    extra: {\n        type: \"textarea\",\n        height: 3,\n        highlight: true,\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"rule\", input);\n        }),\n        defaultValue: getMyVar(\"rule\", \"\")\n    }\n});\n\nd.push({\n    title: \"生成规则\",\n    url: $(\"#noLoading#\").lazyRule((rule1) => {\n        let rules = getMyVar(\"rule\", \"\");\n        let r1 = getMyVar(\"r1\", \"\");\n        rules = rules.split(\"\\n\")\n        .filter(it => it.includes(\"@\"))\n        .map(it=>{\n            let a = it.split(\"@\");\n            let r = decodeURIComponent(a[1]);\n            r = r.replace(new RegExp(\"[\\u4e00-\\u9fa5]+\", \"g\"), \"**\");\n            return a[0] + \"@\" + r;\n        })\n        .join(\"\\\\n\");\n        if (rules == \"\") {\n            return \"toast://请先在上面输入网站搜索地址合集\";\n        }\n        rule = JSON.parse(fetch(\"hiker://home@\" + rule1));\n        rule.find_rule = \"js:$.require('hiker://page/pro')\";\n        rule.url = \"hiker://empty##fypage\";\n        return \"海阔视界￥home_rule￥\" + JSON.stringify(rule)\n            .replace(\"{RULES}\", rules)\n            .replace(rule1, r1);\n    }, MY_RULE.title),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"来个示例\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        putMyVar(\"rule\", \"AppMovie@https://www.appmovie.cc/index.php/vod/search.html?wd=%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84&submit=\");\n        putMyVar(\"r1\", \"AI测试\");\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"以下为测试区域\",\n    url: \"\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nd.push({\n    title: \"走你\",\n    url: $.toString(() => {\n        return \"hiker://page/p?u=\" + base64Encode(input)\n    }),\n    col_type: \"input\",\n    desc: \"请输入选集网页地址\",\n    pic_url: \"\"\n});\n\n\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入网站搜索地址，要带搜索词\",\n    pic_url: \"\",\n    extra: {\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"r\", input);\n        }),\n        defaultValue: getMyVar(\"r\", \"\")\n    }\n});\n\n\nd.push({\n    title: \"搜索测试\",\n    url: $.toString(() => {\n        let r = getMyVar(\"r\", \"\");\n        if (r == \"\") {\n            return \"toast://请先在上面输入网站搜索地址\";\n        }\n        putMyVar(\"s\", input);\n        r = decodeURIComponent(r);\n        let surl = r.replace(new RegExp(\"[\\u4e00-\\u9fa5]+\", \"g\"), \"**\");\n        return \"hiker://page/s?key=\" + input + \"&u=\" + base64Encode(surl);\n    }),\n    col_type: \"input\",\n    desc: \"请输入关键词测试\",\n    pic_url: \"\",\n    extra: {\n        defaultValue: getMyVar(\"s\", \"\")\n    }\n});\n\nd.push({\n    title: \"来个示例\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        putMyVar(\"r\", \"https://www.appmovie.cc/index.php/vod/search.html?wd=%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84&submit=\");\n        putMyVar(\"s\", \"龙之家族\");\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);\n","search_url":"hiker://empty##**","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `{RULES}`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"吾爱破解𝔥","author":"Hood","version":4,"type":"other","url":"https://www.52pojie.cn/forum.php?mod=guide&view=fyclass&page=fypage","col_type":"text_1","class_name":"最新热门&最新精华&最新回复&最新发表","class_url":"hot&digest&new&newthread","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'body&&tbody[id]');\n\nfor(var i=1;i<list.length+1;i++){\nd.push({\ntitle: (i)+ '. ' +parseDomForHtml(list[i-1],'.xst&&Text'),\nurl:'x5://https://www.52pojie.cn/'+parseDomForHtml(list[i-1],'a&&href'),\ncol_type: 'text_1'});\n}\n\r\nres.data = d;\nsetHomeResult(res);","searchFind":"body&&.result;\nh3&&Text;\na&&href;\n*;\n.c-abstract&&Text;\n*","search_url":"http://zhannei.baidu.com/cse/site?q=**&p=fypage&cc=52pojie.cn","titleColor":"#fff20c00","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.52pojie.cn/favicon.ico"},{"last_chapter_rule":"js:\nfunction getDoubanRes(url) {\n    if (url.indexOf('apikey') === -1) {\n        url += (url.indexOf('?') === -1 ? '?' : '&') + \"apikey=0dad551ec0f84ed02907ff5c42e8ec70\"\n    }\n    let s = fetch(url, {\n        headers: {\n            \"User-Agent\": \"Rexxar-Core/0.1.3 api-client/1 com.douban.frodo/7.9.0.beta2(215) Android/25 product/TAS-AL00 vendor/HUAWEI model/TAS-AL00  rom/android  network/wifi  platform/mobile com.douban.frodo/7.9.0.beta2(215) Rexxar/1.2.151  platform/mobile 1.2.151\"\n        },\n        method: 'POST',\n        body: 'host=frodo.douban.com'\n    });\n    return JSON.parse(s);\n}\nlet type = getParam('type', ''),\n    id = getParam('id', ''),\n    title = getParam('title', '');\nlet res = getDoubanRes(\"https://frodo.douban.com/api/v2/\" + type + \"/\" + id);\nlet update = \"\";\nif (title == '') {\n    let length = res.vendors.length;\n    update += length > 0 ? '共' + length + '个片源' : '暂无片源';\n    if (length > 0) {\n        let e = res.vendors[0];\n        update += e.episodes_info ? \"|\" + e.episodes_info : \"\";\n    }\n} else {\n    for (let e of res.vendors) {\n        if (e.title == title) {\n            update += e.episodes_info ? e.episodes_info : \"\";\n            break;\n        }\n    }\n}\nsetResult(update);","title":"青豆","author":"Joker&&Reborn","version":11,"type":"video","url":"hiker://empty/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet forceUrgencyMode = 0\nif (forceUrgencyMode) {\n    let e = '当前为强制急救模式'\n    let rule = JSON.parse(request(\"hiker://page/urgencyMode\")).rule;\n    eval(rule)\n} else {\n    try {\n        eval(fetch(getVar(\"qdb_file\")));\n        home();\n    } catch (e) {\n        let rule = JSON.parse(request(\"hiker://page/urgencyMode\")).rule;\n        eval(rule)\n    }\n}","searchFind":"js:\ntry {\n    eval(fetch(getVar(\"qdb_file\")));\n    search();\n} catch (e) {\n    let rule = JSON.parse(request(\"hiker://page/urgencyMode\")).rule;\n    eval(rule)\n}","search_url":"hiker://empty/$page{fypage}/#/**","titleColor":"","group":"①推荐","detail_col_type":"movie_1_vertical_pic","detail_find_rule":"js:\ntry {\n    eval(fetch(getVar(\"qdb_file\")));\n    erji();\n} catch (e) {\n    let rule = JSON.parse(request(\"hiker://page/urgencyMode\")).rule;\n    eval(rule)\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"let file = \"hiker://files/rules/joker/qdb.js\";\nlet gitfile = 'https://gitcode.net/qq_41846756/hiker/-/raw/master/qdb.js';\nlet ver = getItem('newver','');\nif (!fetch(file) || ver < MY_RULE.version) {\n    writeFile(file, fetch(gitfile));\n    setItem('newver',String(MY_RULE.version));\n}\nputVar({\n    key: \"qdb_file\",\n    value: file\n});\ntry {\n    eval(fetch(file));\n    pre();\n} catch (e) {\n    let rule = JSON.parse(request(\"hiker://page/urgencyMode\")).rule;\n    eval(rule)\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"配置编辑界面\",\"path\":\"setting-editor\",\"rule\":\"js:\\neval(request(getVar('qdb_file')))\\nlet d = [];\\nlet configType = getVar(\\\"input_config_type\\\")\\nif (configType === '解析插件配置') {\\n    setPageTitle(\\\"编辑解析代码\\\")\\n    analysisModeEditPage(d)\\n} else if (configType === '影片详情页面配置') {\\n    setPageTitle(\\\"编辑影片详情页面代码\\\")\\n    detailViewModeEditPage(d)\\n} else {\\n    setError('错误的配置');\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"解除被封ip\",\"path\":\"releaseIP\",\"rule\":\"js:\\nlet id = getParam('id');\\nlet d = [];\\nd.push({\\n    title: '您已被封禁IP地址或触发了人机验证，请按照以下步骤处理(如不处理您将在一段时间内无法正常获取剧集列表)',\\n    url: 'hiker://empty',\\n    col_type: 'text_1'\\n});\\nd.push({\\n    title: '1.点击此处导入自动获取Cookie插件',\\n    url: $()\\n        .lazyRule(() => {\\n            let getDoubanCookie = \\\"(function(){if(window['location']['host']=='www.douban.com'){fy_bridge_app['writeFile']('hiker://files/cache/doubancookie.txt',fy_bridge_app['getCookie']('https://www.douban.com/'));}if(window['location']['host']=='m.douban.com'){fy_bridge_app['writeFile']('hiker://files/cache/doubancookie.txt',fy_bridge_app['getCookie']('https://m.douban.com/'));}}());\\\"\\n            if (!fileExist('hiker://files/cache/global_getDoubanCookie.js')) {\\n                writeFile('hiker://files/cache/global_getDoubanCookie.js', getDoubanCookie);\\n            };\\n            return 'rule://' + base64Encode('海阔视界，网页插件￥js_url￥global_getDoubanCookie@hiker://files/cache/global_getDoubanCookie.js');\\n        }),\\n    col_type: 'text_1'\\n});\\nd.push({\\n    title: '2.点击此处进入网页进行登录或人机验证，完成后返回此页面',\\n    url: 'https://movie.douban.com/subject/' + id + '/',\\n    col_type: 'text_1'\\n});\\nd.push({\\n    title: '3.完成登录或人机验证后返回影片详情页面重新进入',\\n    url: 'hiker://empty',\\n    col_type: 'text_1'\\n});\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"抢救页面\",\"path\":\"urgencyMode\",\"rule\":\"js:\\nlet d = [];\\nd.push({\\n    title: '很明显,出了一些小问题,建议重生',\\n    col_type: 'text_center_1'\\n})\\nd.push({\\n    title: '点我更新依赖',\\n    col_type: 'text_1',\\n    url: $('hiker://empty').lazyRule(() => {\\n        let file = \\\"hiker://files/rules/joker/qdb.js\\\";\\n        let gitfile = 'https://gitcode.net/qq_41846756/hiker/-/raw/master/qdb.js';\\n        let text = fetch(gitfile);\\n        writeFile(file, text);\\n        //back(true);\\n        return 'toast://依赖文件更新成功'\\n    })\\n})\\nd.push({\\n    title: '点我恢复默认设置',\\n    col_type: 'text_1',\\n    url: $(\\\"确定要恢复？\\\").confirm(() => {\\n        defaultConfigs = {\\n            starColor: \\\"#ffac2d\\\",\\n            chooseColor: \\\"#FA7298\\\",\\n            quickSearchConfigs: {\\n                order: []\\n            },\\n            detailsViewConfigs: {\\n                use: \\\"默认\\\",\\n                \\\"默认\\\": {\\n                    config: \\\"eval(fetch(getVar('qdb_file')));detailsView(type, id);\\\"\\n                }\\n            },\\n            analysisConfigs: {\\n                use: \\\"不解析\\\",\\n                \\\"不解析\\\": {\\n                    config: $.toString(() => {\\n                        return input;\\n                    }),\\n                    setting: $.toString(() => {\\n                        return \\\"toast://该插件无设置页面\\\";\\n                    })\\n                },\\n                \\\"断插\\\": {\\n                    config: $.toString(() => {\\n                        let file = \\\"hiker://files/rules/DuanNian/MyParse.json\\\";\\n                        let oldfile = \\\"hiker://files/cache/MyParseSet.json\\\";\\n                        if (fileExist(file)) {\\n                            eval('json=' + fetch(file));\\n                            let jsUrl = json.settings.cj;\\n                            eval(fetch(jsUrl));\\n                            return aytmParse(input);\\n                        } else if (fileExist(oldfile)) {\\n                            let jsUrl = JSON.parse(fetch(oldfile)).cj;\\n                            eval(fetch(jsUrl));\\n                            return aytmParse(input);\\n                        } else {\\n                            return 'toast://没找到断插配置文件';\\n                        }\\n                    }),\\n                    setting: $.toString(() => {\\n                        let file = \\\"hiker://files/rules/DuanNian/MyParse.json\\\";\\n                        let oldfile = \\\"hiker://files/cache/MyParseSet.json\\\";\\n                        if (fileExist(file)) {\\n                            eval('json=' + fetch(file));\\n                            let jsUrl = json.settings.cj;\\n                            eval(fetch(jsUrl));\\n                            return setUrl;\\n                        } else if (fileExist(oldfile)) {\\n                            let jsUrl = JSON.parse(fetch(oldfile)).cj;\\n                            eval(fetch(jsUrl));\\n                            return setUrl;\\n                        } else {\\n                            return \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置\\\";\\n                        }\\n                    })\\n                }\\n            }\\n        }\\n        writeFile(getVar('qdb_config'), JSON.stringify(defaultConfigs));\\n        refreshPage();\\n        return \\\"toast://已恢复默认设置\\\";\\n    })\\n})\\nd.push({\\n    title: '若重生不起作用,点我复制错误信息提交给开发者',\\n    col_type: 'text_1',\\n    url: 'copy://' + e.message\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"顺佬专用详情页\",\"path\":\"Sdetail\",\"rule\":\"js:\\nputVar('qdb_file', 'hiker://files/rules/joker/qdb.js');\\neval(fetch(getVar(\\\"qdb_file\\\")));\\npre();\\nlet type = getParam('type', ''),\\n    id = getParam('id', '');\\ndetailsView(type, id);\"}]","proxy":"","icon":"https://gitcode.net/qq_41846756/hiker/-/raw/master/img/青豆.png"},{"last_chapter_rule":"","title":"海壳=>嗅觉","author":"小棉袄🌞&永远の明日","version":2,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nfunction converter(title) {\n    eval(JSON.parse(fetch('hiker://page/convertFunc')).rule)\n    let rule = JSON.parse(fetch('hiker://home@' + title)),\n        pageList = JSON.parse(rule.pages)\n    pageList.push({\n        name: '海壳数据',\n        path: 'hiker_cs_data',\n        rule: JSON.stringify({\n            url: rule.url,\n            search_url: rule.search_url,\n            class_name: rule.class_name,\n            class_url: rule.class_url,\n            area_name: rule.area_name,\n            area_url: rule.area_url,\n            year_name: rule.year_name,\n            year_url: rule.year_url,\n            sort_name: rule.sort_name,\n            sort_url: rule.sort_url,\n            searchFind: rule.searchFind,\n            sdetail_find_rule: rule.sdetail_find_rule,\n            sdetail_col_type: rule.sdetail_col_type\n        })\n    })\n    let r = {\n            title: rule.title,\n            url: convertUrl(rule.url),\n            find_rule: convertRule(rule.find_rule),\n            col_type: rule.col_type,\n            // interceptor: ru.searchFind && ru.search_url,\n            detail_find_rule: rule.detail_find_rule,\n            detail_col_type: rule.detail_col_type,\n            ua: rule.ua,\n            preRule: rule.preRule,\n            pages: JSON.stringify(pageList),\n        },\n        clipboard = getItem('clipboard', '不使用'),\n        share = '海阔视界￥home_rule_v2￥base64://@@' + base64Encode(JSON.stringify(r))\n    if (clipboard != '不使用')\n        share = sharePaste(share, clipboard) + '\\n\\n小程序：' + title\n    return 'copy://' + share\n}\nsetResult([{\n    desc: '搜索小程序，点击生成分享口令',\n    col_type: 'input',\n    extra: {\n        id: 'searchBar',\n        onChange: $.toString((converter) => {\n            if (input) {\n                putMyVar('title', input)\n                input = input.toLowerCase()\n                let rules = JSON.parse(fetch('hiker://home'))\n                    .filter((v) => v.title && v.title.toLowerCase().includes(input) ||\n                        v.url && v.url.toLowerCase().includes(input))\n                    .map((v) => ({\n                        title: v.title,\n                        url: $('#noLoading#').lazyRule((converter, title) => {\n                            let his = storage0.getItem('history', []),\n                                i = his.indexOf(title)\n                            if (i > -1) his.splice(i, 1)\n                            his.unshift(title)\n                            if (his.length > 15) his.pop()\n                            storage0.setItem('history', his)\n                            return converter(title)\n                        }, converter, v.title),\n                        col_type: 'text_3',\n                        extra: {\n                            cls: 'list'\n                        }\n                    }))\n                deleteItemByCls('list')\n                addItemAfter('searchBar', rules)\n            } else {\n                clearMyVar('title')\n                deleteItemByCls('list')\n                addItemAfter('searchBar', storage0.getItem('history', []).map((v) => ({\n                    title: v,\n                    url: $('#noLoading#').lazyRule((converter, t) => converter(t), converter, v),\n                    col_type: 'text_3',\n                    extra: {\n                        cls: 'list'\n                    }\n                })))\n            }\n        }, converter),\n        titleVisible: false,\n        textSize: 13,\n        defaultValue: getMyVar('title', ''),\n    },\n}, {\n    col_type: 'big_big_blank_block'\n}, {\n    title: '清空历史',\n    url: $('确认清空历史记录').confirm(() => {\n        clearItem('history')\n        refreshPage(false)\n    }),\n    col_type: 'text_2',\n}, {\n    title: '云剪贴板: ' + getItem('clipboard', '不使用'),\n    url: $(['不使用'].concat(getPastes()), 1, '分享时使用云剪切板').select(() => {\n        setItem('clipboard', input)\n        refreshPage(false)\n    }),\n    col_type: 'text_2',\n}, {\n    title: `　　本规则会对原小程序添加一层外壳，将分类及搜索转换为首页内置，不再依赖海阔原生功能，从而兼容嗅觉浏览器。\n　　在海阔视界里面创建规则，解析规则对应嗅觉小程序的rule，链接对应url，名称对应title，ua对应ua，子页面对应子页面，二级对应详情页，预处理对应预处理，分类及搜索转至hiker_cs_data子页面，根据这个对应关系，可以快速在海阔视界编辑规则，然后转换后导入给嗅觉浏览器。\n!!! 注意 !!!\n　　转换后小程序会使用hiker_cs_data子页面，所以不要在原小程序中使用同路径的子页面。\n　　海阔视界和嗅觉浏览器都可以检测到新生成的口令，要谨慎导入海阔，会覆盖同名的原规则。\n　　部分小程序会有依赖小程序或文件，可能使导入嗅觉浏览器后无法使用，这种情况请自行解决。`,\n    col_type: 'long_text',\n    extra: {\n        textSize: 16\n    }\n}])","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"首页代码\",\"path\":\"indexCode\",\"rule\":\"js:\\n// 头部分类构造器\\nfunction hiker_ClassHeader(classArray) {\\n    this.arr = classArray.map(v => this.init(v))\\n    this.color = '#12b668'\\n    this.boundary = 'blank_block'\\n}\\nhiker_ClassHeader.prototype = {\\n    constructor: hiker_ClassHeader,\\n    load(el) {\\n        this.arr.forEach((v) => {\\n            let {\\n                id,\\n                class_name,\\n                class_url\\n            } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({\\n                        name: name,\\n                        url: url\\n                    })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((id, now) => {\\n                        putMyVar('$hikerClassHeader_' + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({\\n                col_type: this.boundary\\n            })\\n        })\\n    },\\n    init(classObject) {\\n        classObject.class_name = classObject.class_name.split('&')\\n        classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : {\\n            name: 'cannot find id: ' + id + ' in hikerClassHeader',\\n            url: ''\\n        })\\n        return JSON.parse(getMyVar('$hikerClassHeader_' + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 运行链接.js:\\nfunction hiker_runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) {\\n        return rule\\n    }\\n}\\n// 定义变量\\nconst hiker_RULE = JSON.parse(JSON.parse(fetch('hiker://page/hiker_cs_data')).rule),\\n    hiker_pageNum = parseInt(MY_URL.split('##')[2]),\\n    hiker_fyAll = hiker_RULE.url.includes('fyAll')\\nlet hiker_el = [],\\n    hiker_URL = hiker_RULE.url.split(';'),\\n    hikerHTML = '',\\n    hiker_classHeader = []\\n// 头部分类实例\\nif (hiker_RULE.class_name) hiker_classHeader.push({\\n    id: hiker_fyAll ? 'fyAll' : 'fyclass',\\n    class_name: hiker_RULE.class_name,\\n    class_url: hiker_RULE.class_url\\n})\\nif (hiker_RULE.area_name) hiker_classHeader.push({\\n    id: hiker_fyAll ? 'fyAll' : 'fyarea',\\n    class_name: hiker_RULE.area_name,\\n    class_url: hiker_RULE.area_url\\n})\\nif (hiker_RULE.year_name) hiker_classHeader.push({\\n    id: hiker_fyAll ? 'fyAll' : 'fyyear',\\n    class_name: hiker_RULE.year_name,\\n    class_url: hiker_RULE.year_url\\n})\\nif (hiker_RULE.sort_name) hiker_classHeader.push({\\n    id: hiker_fyAll ? 'fyAll' : 'fysort',\\n    class_name: hiker_RULE.sort_name,\\n    class_url: hiker_RULE.sort_url\\n})\\nhiker_classHeader = new hiker_ClassHeader(hiker_classHeader)\\n// 处理MY_URL\\nMY_URL = hiker_URL.shift()\\nMY_URL = hiker_classHeader.setUrl(hiker_fyAll ?\\n        MY_URL.replace(/fyAll/g, '$${fyAll}') :\\n        MY_URL.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    .replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g,\\n        (_, start, space) => parseInt(start || 0) + 1 + (hiker_pageNum - 1) * parseInt(space || 1))\\nMY_URL = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(MY_URL)\\nif (hiker_pageNum == 1 && MY_URL[2]) MY_URL[1] = MY_URL[2]\\nif (MY_URL[3] && !MY_URL[1].includes('.js:')) MY_URL[1] += MY_URL[3]\\nMY_URL = hiker_runCode(MY_URL[1])\\n// 处理MY_URL参数并获取HTML\\nhiker_URL = {\\n    method: hiker_URL[0] || 'get',\\n    headers: {\\n        'Content-Type': hiker_URL[1] ? 'text/plain;charst=' + hiker_URL[1] : null\\n    },\\n    headerStr: hiker_URL[2]\\n}\\nif (/^post$/i.test(hiker_URL.method)) {\\n    let [url, body] = MY_URL.split('?')\\n    MY_URL = url.replace(/\\\\？\\\\？/g, '?')\\n    if (body.startsWith('JsonBody=')) body = body.slice(9)\\n    hiker_URL.body = body\\n}\\nif (hiker_URL.headerStr) hiker_URL.headerStr.match(/{(.*)}/)[1]\\n    .split('&&').forEach((v) => {\\n        let [key, value] = v.split('@')\\n        hiker_URL.headers[key] = hiker_runCode(value)\\n    })\\ndelete hiker_URL.headerStr\\nif (!hiker_URL.headers['User-Agent']) {\\n    if (MY_RULE.ua == 'pc')\\n        hiker_URL.headers['User-Agent'] = PC_UA\\n    else if (MY_RULE.ua == 'mobile')\\n        hiker_URL.headers['User-Agent'] = MOBILE_UA\\n}\\nhikerHTML = fetch(MY_URL, hiker_URL)\\n// 劫持内置变量\\ngetResCode = () => hikerHTML\\nMY_RULE.class_url = hiker_classHeader.getClass(hiker_fyAll ? 'fyAll' : 'fyclass').url\\nMY_RULE.area_url = hiker_fyAll ? MY_RULE.class_url : hiker_classHeader.getClass('fyarea').url\\nMY_RULE.year_url = hiker_fyAll ? MY_RULE.class_url : hiker_classHeader.getClass('fyyear').url\\nMY_RULE.sort_url = hiker_fyAll ? MY_RULE.class_url : hiker_classHeader.getClass('fysort').url\\n// 生成头部分类及搜索功能\\nif (MY_PAGE == 1) {\\n    hiker_classHeader.load(hiker_el)\\n    if (hiker_RULE.search_url) hiker_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString(() => {\\n                let rule = JSON.parse(fetch('hiker://home')).find((v) => v.title == MY_RULE.title),\\n                    exRule = JSON.parse(JSON.parse(fetch('hiker://page/hiker_cs_data')).rule)\\n                if (rule.nextRule) {\\n                    rule.detail_find_rule = rule.nextRule\\n                    rule.detail_col_type = rule.nextColType\\n                }\\n                return JSON.stringify([Object.assign(rule, exRule)])\\n            }),\\n            defaultValue: getMyVar('hiker_searchKey', ''),\\n            onChange: \\\"putMyVar('hiker_searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 劫持setResult\\nsetResult = function(el, param1, param2, param3) {\\n    param1 = CALLBACK_KEY\\n    param2 = MY_RULE\\n    param3 = MY_TYPE\\n    if (Array.isArray(el.data)) el = el.data\\n    el = hiker_el.concat(el)\\n    method_setResult.invoke(javaContext, el, param1, param2, param3)\\n}\\nsetHomeResult = setResult\\nsetSearchResult = setResult; // 原代码\"},{\"col_type\":\"movie_3\",\"name\":\"转换函数\",\"path\":\"convertFunc\",\"rule\":\"function convertUrl(url) {\\n    url = url.split(';')\\n    let fypage = url[0].includes('fypage') ? 'fypage' : '1',\\n        domain = (/^(?:hiker:\\\\/\\\\/empty#*?)?(https?:\\\\/\\\\/.+?)(?:#|\\\\?|\\\\/|$)/i.exec(url[0]) || [, ''])[1]\\n    url[0] = 'hiker://empty##' + domain + '/##' + fypage\\n    return  url.join(';')\\n}\\nfunction convertRule(code) {\\n    const preCode = JSON.parse(fetch('hiker://page/indexCode')).rule\\n    if (code.startsWith('js:')) {\\n        code = preCode + code.slice(3)\\n    } else {\\n        code = preCode + 'let code=`' + code + '`;\\\\n' +\\n            `code = code.split(';')\\nsetResult(parseDomForArray(getResCode(), code.shift()).map((data) => {\\n    let [title, img, desc, url] = code.map((v, i) => {\\n        try {\\n            if (v == '*') return ''\\n            else v = (i == 1 || i == 3) ?\\n                parseDom(data, v) :\\n                parseDomForHtml(data, v)\\n            if (i != 3) v = hiker_runCode(v)\\n            return v\\n        } catch (e) { return '' }\\n    })\\n    return { title: title, url: url, desc: desc, img: img }\\n}))`\\n    }\\n    return code\\n}\\n\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/08/16/vwGvTO.png"},{"last_chapter_rule":"","title":"AI测试","author":"","version":44,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {       \\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    }\\n                }\\n            });\\n        }       \\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `AppMovie@https://www.appmovie.cc/index.php/vod/search.html?wd=**&submit=\\n追剧达人@http://zjdr.vip/vod/search/wd/**.html\\n疯狗影视@https://m.fenggoudy3.com/index.php?s=vod-search-name&wd=**\\n在线之家@https://zxzj.vip/vodsearch/-------------.html?wd=**&submit=`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"开天斧","author":"清白之年","version":17,"type":"other","url":"hiker://empty/#/$fy_all{fyAll}","col_type":"movie_1_vertical_pic","class_name":"涅槃管理&规则更新","class_url":"playHistory&update","area_name":"实时热影&实时热剧&  |  &热门电影&热播剧集&  |  &电影榜单&电视榜单","area_url":"rt_hot_movie&rt_hot_tv&seg&hot_movie&hot_tv&seg&ranking_movie_list&ranking_tv_list","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/*\n *Nirvana\n *Kaitian Axe\n */\n/* method start */\nfunction fetchSringToObject(url, headers) {\n    let file = fetch(url, headers || {});\n    if (file == 'null' || file == null || file == 'undefined' || file == undefined || file == '') file = [];\n    else file = JSON.parse(file);\n    return file;\n}\n/* method end */\n\n/* global start */\nlet domain = getVar(\"ktf_domain\");\nlet fyall_url = MY_URL.match(/\\$fy_all\\{([^\\}]+)\\}/)[1];\n/* global end */\n\n/* history start */\nfunction history() {\n    let newhistory = this.fetchSringToObject(\"hiker://files/nirvana/nirvana_new_history\");\n    let historyArr = [];\n    for (let key in newhistory) {\n        newhistory[key].forEach((e) => {\n            e.key = key;\n        });\n        historyArr = historyArr.concat(newhistory[key]);\n    }\n\n    let historyItems = [];\n    let noHistory = true;\n    if (historyArr.length <= 0) {\n        noHistory = true;\n        historyItems = [{\n            title: \"‘‘好像还没有历史播放记录呢，看个视频再回来看看。’’\",\n            col_type: \"text_1\",\n            desc: \"V10及之后的版本请先到记录管理合成新历史记录文件，点击进入记录管理\",\n            url: domain + \"/#/history/\",\n        }]\n    } else {\n        noHistory = false;\n        historyArr = historyArr.sort((a, b) => b.time - a.time);\n        historyItems = historyArr.map(data => ({\n            title: (data.isTop ? \"📌 \" : \"\") + data.title.replace(/[\\n\\r\\t]/g, \"\") + \"\\n\\n来源：\" + (data.source || \"未知来源\"),\n            url: data.isPlayUrl ? data.url + \"/#/mp4\" : domain + \"/#/\" + data.key + \"/\" + (data.type ? data.type + \"/\" : \"\") + data.id + \"/\" + base64Encode(JSON.stringify({\n                url: data.url,\n                text: data.text\n            })).replace(\"/\", \"%2f\"),\n            pic_url: data.img ? \"http://\" + data.img.split(\"//\")[1] + \"@Referer=\" + \"http://\" + data.img.split(\"//\")[1] : \"*\",\n            desc: \"点击恢复到播放\\t\" + data.text.replace(/[\\n\\r\\t]/g, \"\")\n        }));\n    }\n    let hikerHome = fetchSringToObject(\"hiker://home\");\n    let headerArr = [{\n            title: \"小虾\",\n            url: \"hiker://home@小虾\",\n            col_type: \"icon_round_small_4\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008222241.png\",\n            isUse: false\n        },\n        {\n            title: \"小橘\",\n            url: \"hiker://home@小橘\",\n            col_type: \"icon_round_small_4\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008222327.png\",\n            isUse: false\n        },\n        {\n            title: \"卡布奇洛\",\n            url: \"hiker://home@卡布奇洛\",\n            col_type: \"icon_round_small_4\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008222457.png\",\n            isUse: false\n        },\n        {\n            title: \"迪迦\",\n            url: \"hiker://home@迪迦\",\n            col_type: \"icon_round_small_4\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201024204247.png\",\n            isUse: false\n        },\n        {\n            title: \"玄奘\",\n            url: \"hiker://home@玄奘\",\n            col_type: \"icon_round_small_4\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201024203741.png\",\n            isUse: false\n        }\n    ];\n    headerArr.forEach(header => {\n        hikerHome.forEach(home => {\n            if (header.title == home.title)\n                header.isUse = true;\n        });\n    });\n    headerArr = headerArr.filter(header => header.isUse);\n    let historyGroup = [{\n            col_type: \"line_blank\",\n        },\n        {\n            title: `‘‘’’<strong>❀ 播放记录 ❀</strong>`,\n            col_type: \"text_center_1\",\n            url: \"toast://好家伙,啥都要点上一点\"\n        }\n    ];\n    if (!noHistory) historyGroup = historyGroup.concat([{\n            title: \"管理播放记录\",\n            url: domain + \"/#/history/\",\n            col_type: \"icon_2\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008221635.png\"\n        },\n        {\n            title: \"清空播放记录\",\n            url: `hiker://empty@lazyRule=.js:writeFile(\"hiker://files/nirvana/nirvana_new_history\",\"\");\"toast://清空成功,刷新就冇了\"`,\n            col_type: \"icon_2\",\n            img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008221550.png\"\n        }\n    ]);\n    setHomeResult({\n        data: headerArr.concat(historyGroup).concat(historyItems)\n    });\n}\n/* history end */\n\n/* update start */\n\n\nfunction update() {\n    function getUpdateStatus(name, version) {\n        let hikerHome = fetchSringToObject(\"hiker://home\");\n        let status = {\n            title: \"\",\n            sort: \"\",\n            localVersion: \"\"\n        };\n        let isHaveRule = hikerHome.some((data) => {\n            if (data.title == name) {\n                if (version > data.version) {\n                    status.title = `<strong><font color=\"#ff6464\">有更新</font></strong>`;\n                    status.sort = 3;\n                    status.localVersion = data.version;\n                } else if (version <= data.version) {\n                    status.title = `<strong><font color=\"#000\">没有更新</font></strong>`;\n                    status.sort = 1;\n                    status.localVersion = data.version;\n                }\n            }\n            return data.title == name;\n        });\n        if (!isHaveRule) {\n            status.title = `<strong><font color=\"#ff8264\">还没有导入规则</font></strong>`;\n            status.sort = 2;\n            status.localVersion = false;\n        }\n        return status;\n    }\n    let res = [];\n    try {\n        res = fetchSringToObject(\"https://hiker-box.pyt.ink/nirvana/nirvanaUpdate.json\");\n        if (res == 'null' || res == null || res == 'undefined' || res == undefined || res == '')\n            res = fetchSringToObject(\"https://raw.fastgit.org/Lingyan000/hiker-box/main/nirvana/nirvanaUpdate.json\");\n        if (res == 'null' || res == null || res == 'undefined' || res == undefined || res == '')\n            res = fetchSringToObject(\"https://gh-proxy.henryjiu.workers.dev/https://raw.githubusercontent.com/Lingyan000/hiker-box/main/nirvana/nirvanaUpdate.json\");\n        if (res == 'null' || res == null || res == 'undefined' || res == undefined || res == '')\n            res = fetchSringToObject(\"https://raw.githubusercontent.com/Lingyan000/hiker-box/main/nirvana/nirvanaUpdate.json\");\n    } catch (err) {\n        res = fetchSringToObject(\"https://gitee.com/qingbailingyan/impurity/raw/master/nirvanaUpdate.json\");\n    }\n    let updateAllData = res;\n    let hikerHome = fetchSringToObject(\"hiker://home\");\n    let items = [];\n    let pastIdArr = [];\n    updateAllData.forEach((updata, index) => {\n        pastIdArr.push(updata.clipboardID)\n        let status = getUpdateStatus(updata.name, updata.version);\n        items = items.concat([{\n                col_type: \"line_blank\",\n                sort: status.sort\n            }, {\n                title: `““””「` + updata.name + `」` + status.title,\n                col_type: \"text_1\",\n                desc: (status.localVersion ? (\"远程版本:V\" + updata.version + \"\\t 本地版本:V\" + status.localVersion) : \"\") + \"\\n\" + (updata.isLogin ? \"建议注册用户使用\" : \"\") + \"\\n点击直接导入\",\n                url: `hiker://empty@lazyRule=.js:let fetchSringToObject=(url,headers)=>{let file=fetch(url,headers||{});if(file=='null'||file==null||file=='undefined'||file==undefined||file=='')file=[];else file=JSON.parse(file);return file}let ruleObj=fetchSringToObject(\"https://pasteme.cn/_api/backend/` + updata.clipboardID + `,nirvana?json=true\");\"rule://\"+base64Encode(ruleObj.content);`,\n                sort: status.sort\n            }, {\n                title: updata.name + \"更新链接\",\n                col_type: \"icon_2\",\n                img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008221756.png\",\n                url: updata.updateUrl,\n                sort: status.sort\n            },\n            {\n                title: updata.name + \"更新日志\",\n                col_type: \"icon_2\",\n                img: \"https://cdn.jsdelivr.net/gh/Lingyan000/pic@master/img/20201008221832.png\",\n                url: `hiker://empty@rule=js:setHomeResult({data: [{title: '<p style=\"text-align: center;\"><strong>` + updata.name + `<font color=\"#f06868\"> V` + updata.version + `</font> 更新日志</strong></p><br/>` + updata.updateLog + `',col_type: \"rich_text\"}]});`,\n                sort: status.sort\n            }\n        ]);\n    });\n    if (items.length <= 0) items.push({\n        title: \"‘‘没有需要检查的规则’’\",\n        col_type: \"text_center_1\"\n    });\n    else {\n        items.push({\n            title: `‘‘’’<strong><font color=\"#ffaa64\">一键导入</font><strong>`,\n            col_type: \"text_1\",\n            sort: 4,\n            url: `hiker://empty@lazyRule=.js:let fetchSringToObject=(url,headers)=>{let file=fetch(url,headers||{});if(file=='null'||file==null||file=='undefined'||file==undefined||file=='')file=[];else file=JSON.parse(file);return file}let pastIdArr=` + JSON.stringify(pastIdArr) + `;let batchRule=pastIdArr.map(data=>{let ruleObj=fetchSringToObject(\"https://pasteme.cn/_api/backend/\"+data+\",nirvana?json=true\");return JSON.parse(ruleObj.content.match(/￥home_rule￥(.*)/)[1])})let ktfFile=JSON.stringify(batchRule);writeFile(\"hiker://files/nirvana/nirvana_ktfRule\",ktfFile);\"rule://\"+base64Encode(\"海阔视界，首页频道合集￥home_rule_url￥hiker://files/nirvana/nirvana_ktfRule\");`,\n            desc: `‘‘’’虽然导入快，但是注意不要删除了原规则哦！`\n        });\n        items.push({\n            title: `‘‘’’粘贴板访问密码：<strong><font color=\"#ffaa64\">nirvana</font></strong>`,\n            col_type: \"text_1\",\n            url: \"toast://点我干嘛啊,点更新链接去\",\n            desc: \"更新前不要忘了看看更新日志。\",\n            sort: 4\n        });\n    }\n    for (var i = 0; i < items.length; i++) {\n        items[i].oldIndex = i;\n    }\n    items = items.sort((a, b) => b.sort - a.sort || a.oldIndex - b.oldIndex);\n    setHomeResult({\n        data: items\n    });\n}\n/* upadte end */\n\n/* hot_movie start */\nfunction hotMovie() {\n    eval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.hotMovieList();\n}\n/* hot_movie end */\n\n/* hot_tv start */\nfunction hotTv() {\n    eval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.hotTvList();\n}\n/* hot_tv end */\n\nfunction rankingMovieList() {\n    eval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.rankingList(\"movie\");\n}\n\nfunction rankingTvList() {\n    eval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.rankingList(\"tv\");\n}\n\nswitch (fyall_url) {\n    case \"playHistory\":\n        history();\n        break;\n    case \"update\":\n        update();\n        break;\n    case \"hot_movie\":\n        hotMovie();\n        break;\n    case \"hot_tv\":\n        hotTv();\n        break;\n    case \"ranking_movie_list\":\n        rankingMovieList();\n        break;\n    case \"ranking_tv_list\":\n        rankingTvList();\n        break;\n  case \"rt_hot_movie\":\n\teval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.subjectCollectionList(\"movie_real_time_hotest\");\n\tbreak;\n\tcase \"rt_hot_tv\":\n\teval(fetch(getVar(\"hiker-utils\"), {}));\n    hikerUtil.load(\"home\");\n    hikerUtil.douban.subjectCollectionList(\"tv_real_time_hotest\");\n\tbreak;\n\t case \"seg\":\n        setHomeResult({\n            data: [{\n                title: \"‘‘这里不可以哦’’\",\n                col_type: \"text_center_1\"\n            }]\n        });\n        break;\n    default:\n        setHomeResult({\n            data: [{\n                title: \"‘‘不认识这个分组，换个分组看看吧。’’\",\n                col_type: \"text_center_1\"\n            }]\n        });\n        break;\n}","searchFind":"js:\n/*\n *Nirvana\n *Kaitian Axe\n */\n/* method start */\neval(fetch(getVar(\"hiker-utils\"), {}));\nhikerUtil.load(\"search\");\n\nfunction fetchSringToObject(url, headers) {\n    let file = fetch(url, headers || {});\n    if (file == 'null' || file == null || file == 'undefined' || file == undefined || file == '') file = [];\n    else file = JSON.parse(file);\n    return file;\n}\n/* method end */\nlet wd = MY_URL.split(\"/#/\")[1];\n/*\nlet pageObj = fetchSringToObject(\"https://frodo.douban.com/api/v2/search/movie?q=\" + wd, {\n    headers: {\n        \"User-Agent\": \"Rexxar-Core/0.1.3 api-client/1 com.douban.frodo/6.44.0(196)\"\n    }\n});\n*/\nlet pageObj = hikerUtil.douban.getDoubanResources(\"GET\", \"https://frodo.douban.com/api/v2/search/movie?q=\" + wd);\nif (pageObj != \"hiker request error\") {\n    let list = pageObj.items;\n    let items = list.map(data => ({\n        title: data.target.title,\n        url: \"hiker://empty/#/https://frodo.douban.com/api/v2/\" + data.target_type + \"/\" + data.target.id,\n        img: data.target.cover_url + \"@Referer=\" + data.target.cover_url,\n        desc: data.type_name,\n        content: data.target.card_subtitle\n    }));\n    setSearchResult({\n        data: items\n    });\n}","search_url":"hiker://empty/#/**","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\n/*\n *Nirvana\n *Kaitian Axe\n */\neval(fetch(getVar(\"hiker-utils\"), {}));\nhikerUtil.load(\"home\");\nlet url = MY_URL.split(\"/#/\")[1];\nhikerUtil.douban.detailsView(url);","ua":"mobile","preRule":"/* 域名 start */\nlet domain = \"http://pyt.ink\";\nputVar({\n  key: \"ktf_domain\",\n  value: domain\n});\n/* 域名 end */\n/* hiker-utils start */\nlet hikerUtils = \"https://cdn.jsdelivr.net/npm/hiker-utils/lib/publicTools.min.js\";\nputVar({\n  key: \"hiker-utils\",\n  value: hikerUtils\n});\n/* hiker-utils end */","pages":"[]","icon":""},{"last_chapter_rule":"","title":"我不是盐神啊","author":"Killer","version":0,"type":"other","url":"https://onehu.xyz/","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".row&&.s12;\n.card-title&&Text;\n;\n.card-content p&&Text.js:input.split(\" \")[1];\na&&href","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nd.push({\n\t\t title: parseDomForHtml(getResCode(), '#post-content&&Html'),\n    col_type:'rich_text',\n    extra: {\n        textSize: 16,\n        click: true\n    }\n});\nsetHomeResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://onehu.xyz/assets/img/user.png"},{"last_chapter_rule":"","title":"鱼塘","author":"小棉袄🌞","version":2,"type":"read","url":"hiker://empty##https://mo.fish/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://mo.fish/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString(() => {\n            if (input.startsWith(\"https://api.tophub.fun\")) {\n                return false;\n            }\n            return $.toString((url) => {\n                fy_bridge_app.open(JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://empty\",\n                    findRule: \"js:\" + $$$.toString((u) => {\n                        let js = $.toString(() => {\n                            try {\n                                if (document.title && document.title.length) {\n                                    let r = $$$().lazyRule((t) => {\n                                        setPageTitle(t);\n                                    }, document.title);\n                                    fy_bridge_app.parseLazyRule(r);\n                                }\n                            } catch (e) {\n                                fy_bridge_app.log(e.toString());\n                            }\n                        });\n                        setResult([{\n                            url: u,\n                            col_type: \"x5_webview_single\",\n                            extra: {\n                                canBack: true,\n                                js: js\n                            },\n                            desc: \"100%&&float\"\n                        }]);\n                    }, url)\n                }))\n            }, input)\n        })\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小游戏♢","author":"Joker","version":0,"type":"news","url":"http://www.wan1234.com/","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nlet html = getResCode();\nlet list = parseDomForArray(html, 'body&&.game');\nfor (let item of list) {\n    d.push({\n        title: parseDomForHtml(item, '.game_title&&Text'),\n        desc: parseDomForHtml(item, '.game_summer&&Text'),\n        img: parseDomForHtml(item, 'img&&src'),\n        url: $(parseDom(item, 'a&&href') + '/play/').rule(() => {\n            setResult([{\n                url: MY_URL,\n                col_type: 'x5_webview_single',\n                desc: '100%&&float'\n            }])\n        })\n    })\n}\nsetResult(d);","searchFind":"","search_url":"","titleColor":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.wan1234.com/favicon.ico"},{"last_chapter_rule":"","title":" 即时热榜","author":"小棉袄🌞","version":1,"type":"read","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://m.jsrank.cn/\";\nd.push({\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    title: \"\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString((my) => {\n            if (input.startsWith(my)) {\n                return false;\n            }\n            return $.toString((url) => {\n                fy_bridge_app.open(JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://empty\",\n                    findRule: \"js:\" + $$$.toString((u) => {\n                        let js = $.toString(() => {\n                            try {\n                                if (document.title && document.title.length) {\n                                    let r = $$$().lazyRule((t) => {\n                                        setPageTitle(t);\n                                    }, document.title);\n                                    fy_bridge_app.parseLazyRule(r);\n                                }\n                            } catch (e) {\n                                fy_bridge_app.log(e.toString());\n                            }\n                        });\n                        setResult([{\n                            url: u,\n                            col_type: \"x5_webview_single\",\n                            extra: {\n                                canBack: true,\n                                js: js\n                            },\n                            desc: \"100%&&float\"\n                        }]);\n                    }, url)\n                }))\n            }, input)\n        }, url)\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"TMDB热影","author":"","version":3,"type":"video","url":"https://www.themoviedb.org/discover/fyclass;get;utf-8;{Host@www.themoviedb.org}","col_type":"movie_1_vertical_pic","class_name":"电影&剧集","class_url":"movie&tv","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \"#media_results&&.card\");\nfor (let it of arr) {\n    try {\n        let u = pd(it, \"a&&href\");\n        let desc = pdfh(it, \".release_date&&Text\");\n        let t = pdfh(it, \"h2&&Text\");\n        desc = \"““””<br><br><small><font color=\\\"#666666\\\">\" + desc + \"</font></small>\";\n        d.push({\n            title: t + desc,\n            url: u,\n            col_type: \"\",\n            desc: pdfh(it, \".overview&&Text\"),\n            pic_url: pd(it, \"img&&src\") + \"@headers=\" + JSON.stringify({\n                Host: \"www.themoviedb.org\"\n            }),\n            extra: {\n                lineVisible: false,\n                pageTitle: t,\n                t: t\n            }\n        });\n        d.push({\n            col_type: \"line_blank\"\n        });\n    } catch (e) {\n\n    }\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nlet pic = pdfh(getResCode(), \".poster_wrapper&&Html\");\n//log(pic);\npic = pic.match(/url\\('(.*?)'/);\n//log(pic);\nd.push({\n    title: \"\",\n    url: MY_URL,\n    col_type: \"card_pic_1\",\n    desc: \"0\",\n    pic_url: MY_HOME + pic[1] + \"@headers=\" + JSON.stringify({\n        Host: \"www.themoviedb.org\"\n    })\n});\nd.push({\n    title: \"““””<big><strong>\" + pdfh(getResCode(), \".header&&.title&&h2&&Text\") + \"</strong></big>\",\n    url: \"hiker://search?s=\" + MY_PARAMS.t,\n    col_type: \"text_center_1\",\n    desc: \"用户评分：\" + pdfh(getResCode(), \".outer_ring&&.user_score_chart&&data-percent\"),\n    extra: {\n        lineVisible: false\n    }\n});\nd.push({\n    title: pdfh(getResCode(), \".header_info&&Html\"),\n    url: \"\",\n    col_type: \"rich_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"卡音","author":"旧巷陌人","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('hiker://page/Config.view')\ngetBaseParse()","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"Config.view\",\"rule\":\"const empty = 'hiker://empty'\\n\\nconst Color = (test) => {\\n    return '<font color=\\\"#FA7298\\\">' + test + '</front>';\\n}\\n\\nconst Strong = (test) => {\\n    return '<strong>' + test + '</strong>';\\n}\\n\\nconst Small = (test) => {\\n    return '<small>' + test + '</small>';\\n}\\n\\nconst Gray = (test) => {\\n    return \\\"<font color='gray'>\\\" + test + \\\"</font>\\\";\\n}\\n\\nconst Big = (test) => {\\n    return '<b><font color=#000>' + test + '</font></b>'\\n}\\n\\nconst Rich = (test) => {\\n    return \\\"‘‘’’\\\" + test;\\n}\\n\\nconst getSearchUrl = (kw, empty) => {\\n    let mem = storage0.getItem(\\\"卡音记录\\\", []);\\n    mem = mem.filter(it => it != kw);\\n    if (mem.length >= 10) {\\n        mem = mem.slice(1);\\n    }\\n    mem.push(kw);\\n    storage0.setItem(\\\"卡音记录\\\", mem);\\n    return empty;\\n};\\n\\nconst getConfirm = () => {\\n    confirm({\\n        title: \\\"清除记录\\\",\\n        content: \\\"确定好了吗？记录将会不复存在~\\\",\\n        confirm: () => {\\n            clearItem(\\\"卡音记录\\\");\\n            refreshPage();\\n            toast('清除成功~');\\n        }\\n    })\\n}\\n\\nconst getConfigUrl = (body) => {\\n    const path = 'http://www.janz.plus/api/v3250.php?' + body\\n    return JSON.parse(request(path))\\n}\\n\\nconst getBaseParse = () => {\\n    try {\\n        let iTag = storage0.getMyVar(\\\":iTag\\\", []);\\n        if (iTag.length == 0) {\\n            path = 'act=label&type=qq'\\n            iTag = getConfigUrl(path)\\n            storage0.putMyVar(\\\":iTag\\\", iTag);\\n        }\\n        const d = []\\n        const contlist = [];\\n        iTag.forEach((tabs, i) => {\\n            name = tabs.title\\n            d.push({\\n                title: getMyVar('分类', '0') == i ? Rich(Strong(Color(name))) : name,\\n                url: $('#noLoading#').lazyRule((empty, i) => {\\n                    putMyVar('分类', i);\\n                    refreshPage()\\n                    return empty;\\n                }, empty, i),\\n                col_type: 'scroll_button'\\n            });\\n            contlist[i] = [];\\n            conts = tabs.item;\\n            conts.forEach(item => {\\n                contlist[i].push({\\n                    title: item.name,\\n                    url: item.id\\n                });\\n            })\\n        })\\n        const index = getMyVar('分类', '0')\\n        d.push({\\n            col_type: 'blank_block'\\n        })\\n        contlist[index].forEach((contslist, i) => {\\n            d.push({\\n                title: getMyVar(index, '0') == i ? Rich(Strong(Color(contslist.title))) : contslist.title,\\n                url: $('#noLoading#').lazyRule((index, empty, i) => {\\n                    putMyVar(index, i);\\n                    refreshPage();\\n                    return empty;\\n                }, index, empty, i),\\n                col_type: 'scroll_button'\\n            });\\n        })\\n        d.push({\\n            title: \\\"请输入歌曲名称/关键词\\\",\\n            url: $(empty + '#noHistory##noRecordHistory#').rule(() => {\\n                setPageTitle('卡音·搜索')\\n                require('hiker://page/Config.view')\\n                const d = [];\\n                getSearchParse(d)\\n                setResult(d)\\n            }),\\n            col_type: \\\"icon_1_search\\\"\\n        })\\n        id = contlist[index][getMyVar(index, '0')].url\\n        body = 'act=detail&type=qq&id=' + id\\n        data = getConfigUrl(body)\\n        layoutParse(d, data)\\n        setResult(d)\\n    } catch (e) {\\n        setResult([{\\n            title: Rich(Gray(Small('~~~当前网络异常，请刷新重试~~~'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        }])\\n    }\\n}\\n\\nconst layoutParse = (d, data) => {\\n    data.forEach(item => {\\n        d.push({\\n            title: item.name,\\n            pic_url: item.pic,\\n            url: $(empty).rule((item) => {\\n                require('hiker://page/Config.view')\\n                body = 'act=playlist&type=' + item.type + '&id=' + item.id + '&sing=' + md5(md5(md5(item.id) + item.type) + \\\"8a83a3b87e3ee81821b53122ed36d8a4\\\")\\n                data = getConfigUrl(body)\\n                const d = []\\n                layoutsParse(d, data)\\n                setResult(d)\\n            }, item),\\n            col_type: 'card_pic_3'\\n        })\\n    })\\n}\\n\\nconst layoutsParse = (d, data) => {\\n    data.forEach(item => {\\n        d.push({\\n            title: item.title,\\n            desc: item.author + ' - ' + item.album,\\n            pic_url: item.pic,\\n            url: $(empty).lazyRule((item) => {\\n                require('hiker://page/Config.view')\\n\\n                function S(x) {\\n                    if (x != '' && x != 'false') {\\n                        return true\\n                    }\\n                    return false\\n                }\\n                x = item.hr\\n                s = S(x) ? 2000 : 999\\n                x = S(x) ? x : item.sq\\n                s = S(x) ? s : 320\\n                x = S(x) ? x : item.h\\n                s = S(x) ? s : 128\\n                x = S(x) ? x : item.l\\n                body = \\\"act=url&type=\\\" + item.type + \\\"&songid=\\\" + item.songid + \\\"&file=\\\" + s + \\\"&strmid=\\\" + item.strmid + \\\"&br=\\\" + x + \\\"&sing=\\\" + md5(md5(md5(md5(md5(item.songid) + item.strmid) + x) + item.type) + '8a83a3b87e3ee81821b53122ed36d8a4')\\n                data = getConfigUrl(body)\\n                return JSON.stringify({\\n                    urls: [data.url],\\n                    lyric: data.lysic\\n                })\\n            }, item),\\n            col_type: 'card_pic_3'\\n        })\\n    })\\n}\\n\\nconst getSearchParse = (d) => {\\n    if (!getMyVar('返回')) {\\n        confirm({\\n            title: \\\"返回记录\\\",\\n            content: \\\"当下次进入搜索页面时，将返回到搜索记录\\\",\\n            confirm: () => {\\n                putMyVar('返回', true);\\n                toast('emmm~');\\n            },\\n            cancel: () => {\\n                putMyVar('返回', false);\\n                toast('俺不要ヽ(≧Д≦)ノ~');\\n            }\\n        })\\n        java.lang.Thread.sleep(3000);\\n        toast('下次重启，将重新拉启弹窗')\\n    }\\n    if (getMyVar('返回') == 'true') {\\n        addListener('onClose', () => {\\n            clearMyVar('关键词')\\n        })\\n    }\\n    标签 = [\\\"通道一 => 云\\\", \\\"通道二 => 腾\\\", \\\"通道三 => 蜗\\\"];\\n    d.push({\\n        title: Rich(Big('🎲' + getMyVar('标签', 标签[0]))),\\n        url: $(标签, 1, '🏷切换').select((empty) => {\\n            putMyVar('标签', input);\\n            toast('切换至' + input);\\n            refreshPage();\\n            return empty\\n        }, empty),\\n        col_type: 'text_1',\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    d.push({\\n        title: '🔍',\\n        desc: \\\"搜你想要的......\\\",\\n        url: $.toString((getSearchUrl, empty) => {\\n            putMyVar('关键词', input);\\n            if (input != '') getSearchUrl(input);\\n            refreshPage();\\n            return empty;\\n        }, getSearchUrl, empty),\\n        col_type: 'input',\\n        extra: {\\n            defaultValue: getMyVar('关键词')\\n        }\\n    })\\n    if (getMyVar('关键词') == '') {\\n        let mem = storage0.getItem(\\\"卡音记录\\\", []);\\n        if (mem.length > 0) {\\n            d.push({\\n                title: Rich(Big('📝 搜索历史')),\\n                url: $(\\\"#noLoading#\\\").lazyRule((empty, getConfirm) => {\\n                    getConfirm()\\n                    return empty;\\n                }, empty, getConfirm),\\n                col_type: 'text_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        } else {\\n            d.push({\\n                title: Rich(Small(Gray('～～～还没搜索呢～～～'))),\\n                url: empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n        for (let i = mem.length - 1; i >= 0; i--) {\\n            let it = mem[i];\\n            d.push({\\n                title: it,\\n                url: $(\\\"#noLoading#\\\").lazyRule((getSearchUrl, it, empty) => {\\n                    putMyVar('关键词', it);\\n                    getSearchUrl(it);\\n                    refreshPage();\\n                    return empty;\\n                }, getSearchUrl, it, empty),\\n                col_type: \\\"flex_button\\\"\\n            })\\n        }\\n    } else {\\n        switch (getMyVar('标签', 标签[0])) {\\n            case 标签[0]:\\n                type = 'netease';\\n                break;\\n            case 标签[1]:\\n                type = 'qq';\\n                break;\\n            case 标签[2]:\\n                type = 'kuwo';\\n                break;\\n        };\\n        body = 'act=search&type=' + type + '&query=' + getMyVar('关键词') + '&sing=' + md5(md5(getMyVar('关键词') + type) + '985f3fe44b5775695b0db1b3e96b031d')\\n        data = getConfigUrl(body)\\n        layoutsParse(d, data)\\n    }\\n}\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"聚搜","author":"LoyDgIk&道长&永远の明日","version":5,"type":"other","url":"hiker://empty##fypage","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet batchSearch_el = [],\n  batchSearch_page = parseInt(MY_URL.slice(15)),\n  batchSearch_kw = getVar('batchSearch-kw', ''),\n  batchSearch_config = JSON.parse(getVar('batchSearch-config')),\n  batchSearch_start = $.toString((mode, title) => {\n    if (mode == '内置') {\n      putVar('batchSearch-kw', input)\n      refreshPage()\n      return 'hiker://empty'\n    } else return 'hiker://search?s=' + input + '&rule=' + title\n  }, batchSearch_config.searchMode, MY_RULE.title)\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\nif (batchSearch_page == 1) {\n  batchSearch_el.push({\n    title: '搜索',\n    url: batchSearch_reConfig('if(input&&batchSearch_config.history.indexOf(input)==-1)batchSearch_config.history.push(input)') + ';' + batchSearch_start,\n    extra: { defaultValue: batchSearch_kw },\n    col_type: 'input'\n  }, {\n    title: '““””<span style=\"color:#409eff\"><b>策略设置</b></span>',\n    url: 'hiker://empty#策略设置',\n    col_type: 'scroll_button'\n  })\n  Object.keys(batchSearch_config.filters).forEach((v) => batchSearch_el.push({\n    title: (v == batchSearch_config.apply ? '““””<span style=\"color:#12b668\">' : '') + v,\n    url: v == batchSearch_config.apply ? 'hiker://empty' : '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((apply) => { batchSearch_config.apply = apply }, v)),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_el.push({ col_type: 'line_blank' })\n  if (!batchSearch_kw) {\n    batchSearch_el.push({\n      title: '““””<big><b>搜索历史</b></big> &nbsp 🗑',\n      url: 'confirm://要清空搜索历史吗?.js:' + batchSearch_reConfig('batchSearch_config.history=[]'),\n      col_type: 'text_1'\n    })\n    batchSearch_config.history.forEach((v) => {\n      batchSearch_el.push({\n        title: '““””<big>&nbsp &nbsp </big>' + v + '<big> &nbsp &nbsp</big>',\n        url: v + '#noLoading#@lazyRule=.js:' + batchSearch_start,\n        col_type: 'flex_button'\n      })\n    })\n  }\n}\n\nif (batchSearch_kw) {\n  eval(JSON.parse(fetch('hiker://page/searchLoad')).rule)\n  Array.prototype.push.apply(batchSearch_el, batchSearch_load().map((v) => {\n    if (v.content) v.desc += '\\n' + v.content\n    return v\n  }))\n}\n\nsetResult(batchSearch_el)\n//log(batchSearch_el)\n","searchFind":"js:\nlet batchSearch_el = [],\n  [_, batchSearch_page, batchSearch_kw] = MY_URL.split('##'),\n  batchSearch_config = JSON.parse(getVar('batchSearch-config'))\nbatchSearch_page = parseInt(batchSearch_page)\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\neval(JSON.parse(fetch('hiker://page/searchLoad')).rule)\nArray.prototype.push.apply(batchSearch_el, batchSearch_load())\n\nsetResult(batchSearch_el)\n","search_url":"hiker://empty##fypage##**","titleColor":"#148e8e","group":"①推荐","detail_col_type":"icon_2","detail_find_rule":"js:\nlet batchSearch_el = [],\n  batchSearch_config = JSON.parse(getVar('batchSearch-config')),\n  batchSearch_allGroup = JSON.parse(fetch('hiker://home')).map((v) => v.group).filter((v, i, arr) => arr.indexOf(v) == i),\n  batchSearch_anotherMode = { '内置': '原生', '原生': '内置' } [batchSearch_config.searchMode]\neval(JSON.parse(fetch('hiker://page/reConfig')).rule)\n\nbatchSearch_el.push({\n  title: '搜索线程: ' + batchSearch_config.threadCnt,\n  url: 'input://////线程数: 同时搜索的小程序数量.js:' +\n    batchSearch_reConfig('batchSearch_config.threadCnt=parseInt(input)'),\n  img: 'hiker://images/设置'\n}, {\n  title: '超时(毫秒): ' + batchSearch_config.responseTime,\n  url: 'input://////超时毫秒数: 搜索每个小程序时的最大访问时间.js:' +\n    batchSearch_reConfig('batchSearch_config.responseTime=parseInt(input)'),\n  img: 'hiker://images/历史'\n}, {\n  title: '搜索模式: ' + batchSearch_config.searchMode,\n  url: 'confirm://要切换搜索模式为' + batchSearch_anotherMode + '吗?\\n内置模式: 首页同屏显示搜索结果\\n原生模式: 调用视界搜索显示结果.js:' +\n    batchSearch_reConfig($.toString((mode) => { batchSearch_config.searchMode = mode }, batchSearch_anotherMode)),\n  img: 'hiker://images/云备份'\n}, {\n  title: '新增策略',\n  url: 'input://////给新策略起个名字吧.js:' +\n    batchSearch_reConfig('batchSearch_config.filters[input]={group:[],exclude: []}'),\n  img: 'hiker://images/书签'\n}, {\n  title: '““””<b>💾 &nbsp 应用并返回</b>',\n  url: $('#noLoading#').lazyRule(() => (back(true), 'hiker://empty')),\n  col_type: 'text_center_1'\n})\n\nfor (let batchSearch_filtersName in batchSearch_config.filters) {\n  let batchSearch_filtersGroup = batchSearch_config.filters[batchSearch_filtersName].group,\n    batchSearch_filtersExclude = batchSearch_config.filters[batchSearch_filtersName].exclude\n  batchSearch_el.push({ col_type: 'line_blank' }, {\n    title: '““””<b>' + batchSearch_filtersName + '</b> &nbsp 🗑',\n    url: 'confirm://要删除策略【' + batchSearch_filtersName + '】吗?.js:' +\n      batchSearch_reConfig($.toString((name) => { delete batchSearch_config.filters[name] }, batchSearch_filtersName)),\n    col_type: 'text_center_1'\n  }, { col_type: 'big_blank_block' }, { col_type: 'big_blank_block' }, {\n    title: '““””<span style=\"color:#409eff\">[⊗]<b></b></span>',\n    url: 'confirm://要清空策略【' + batchSearch_filtersName + '】包含的分组吗?.js:' +\n      batchSearch_reConfig($.toString((name) => { batchSearch_config.filters[name].group = [] }, batchSearch_filtersName)),\n    col_type: 'scroll_button'\n  }, {\n    title: '““””<span style=\"color:#409eff\">[⊙]<b>分组:</b></span>',\n    url: 'confirm://要全选策略【' + batchSearch_filtersName + '】包含的分组吗?.js:' +\n      batchSearch_reConfig($.toString((name, allGroup) => { batchSearch_config.filters[name].group = allGroup }, batchSearch_filtersName, batchSearch_allGroup)),\n    col_type: 'scroll_button'\n  })\n  let batchSearch_sortedGroup = batchSearch_allGroup.reduce((self, v) => {\n    let i = batchSearch_filtersGroup.indexOf(v)\n    if (i >= 0) self[0].push([i, v])\n    else self[1].push(v)\n    return self\n  }, [\n    [],\n    []\n  ])\n  batchSearch_sortedGroup[0].forEach((v) => batchSearch_el.push({\n    title: '““””<span style=\"color:#12b668\">' + (v[1] || '[无分组]'),\n    url: '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((name, locat) => { batchSearch_config.filters[name].group.splice(locat, 1) }, batchSearch_filtersName, v[0])),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_sortedGroup[1].forEach((v) => batchSearch_el.push({\n    title: v || '[无分组]',\n    url: '#noLoading#@lazyRule=.js:' +\n      batchSearch_reConfig($.toString((name, title) => { batchSearch_config.filters[name].group.push(title) }, batchSearch_filtersName, v)),\n    col_type: 'scroll_button'\n  }))\n  batchSearch_el.push({ col_type: 'line' }, { col_type: 'big_blank_block' }, { col_type: 'big_blank_block' }, {\n    title: '““””<span style=\"color:#409eff\">[⊕]<b>排除:</b></span>',\n    url: 'input://////要排除什么小程序?\\n可输入多个，每行一个.js:' +\n      batchSearch_reConfig($.toString((name) => { input.match(/^.*?$/gm).forEach((v) => batchSearch_config.filters[name].exclude.push(v)) }, batchSearch_filtersName)),\n    col_type: 'scroll_button'\n  })\n  batchSearch_filtersExclude.forEach((v, i) => batchSearch_el.push({\n    title: '““””<span style=\"color:#12b668\">' + v,\n    url: 'confirm://要取消排除小程序【' + v + '】吗?.js:' +\n      batchSearch_reConfig($.toString((name, locat) => { batchSearch_config.filters[name].exclude.splice(locat, 1) }, batchSearch_filtersName, i)),\n    col_type: 'scroll_button'\n  }))\n}\n\nsetResult(batchSearch_el)\n","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"// toDo\n// 策略编辑单开页面，更多链接兼容\n// ?二级页面没有预处理\n// fixed\n\n\nlet batchSearch_path = 'hiker://files/rules/BatchSearchConfig.json',\n  batchSearch_config = getVar('batchSearch-config') || fetch(batchSearch_path)\ntry { batchSearch_config = JSON.parse(batchSearch_config) } catch (e) { batchSearch_config = {} }\n\nif (!(batchSearch_config.threadCnt > 0)) batchSearch_config.threadCnt = 6\nif (!(batchSearch_config.responseTime > 0)) batchSearch_config.responseTime = 5000\nif (['内置', '原生'].indexOf(batchSearch_config.searchMode) == -1) batchSearch_config.searchMode = '内置'\nif (!Array.isArray(batchSearch_config.history)) batchSearch_config.history = []\nif (!Object.keys(batchSearch_config.filters || {}).length) batchSearch_config.filters = {\n  '全部': {\n    group: JSON.parse(fetch('hiker://home')).map((v) => v.group).filter((v, i, arr) => arr.indexOf(v) == i),\n    exclude: []\n  }\n}\nif (!(batchSearch_config.apply in batchSearch_config.filters)) batchSearch_config.apply = Object.keys(batchSearch_config.filters)[0]\n\nputVar('batchSearch-config', JSON.stringify(batchSearch_config))\nwriteFile(batchSearch_path, JSON.stringify(batchSearch_config))\n","pages":"[{\"name\":\"设置函数\",\"path\":\"reConfig\",\"rule\":\"function batchSearch_reConfig(code) {\\n  return $.toString((code) => {\\n    let batchSearch_config = JSON.parse(getVar('batchSearch-config'))\\n    new Function('batchSearch_config', code)(batchSearch_config)\\n    putVar('batchSearch-config', JSON.stringify(batchSearch_config))\\n    refreshPage(false)\\n    return 'hiker://empty'\\n  }, code)\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"搜索函数\",\"path\":\"searchLoad\",\"rule\":\"function batchSearch_load() {\\n  try {\\n    function batchSearch_runCode(batchSearch_rule) {\\n      if (batchSearch_rule.indexOf('.js:') >= 0) {\\n        try {\\n          var input = batchSearch_rule.split('.js:')[0]\\n          return eval(batchSearch_rule.split('.js:')[1])\\n        } catch (e) {\\n          return batchSearch_rule\\n        }\\n      } else {\\n        return batchSearch_rule\\n      }\\n    }\\n    // 搜索策略过滤\\n    let batchSearch_filtersGroup = batchSearch_config.filters[batchSearch_config.apply].group,\\n      batchSearch_filtersExclude = batchSearch_config.filters[batchSearch_config.apply].exclude,\\n      batchSearch_homeList = JSON.parse(fetch('hiker://home')).filter((item) =>\\n        item.searchFind && item.title != MY_RULE.title &&\\n        batchSearch_filtersGroup.find((v) => item.group == v) &&\\n        !batchSearch_filtersExclude.find((v) => item.title == v))\\n      .slice((batchSearch_page - 1) * batchSearch_config.threadCnt, batchSearch_page * batchSearch_config.threadCnt)\\n    if (!batchSearch_homeList.length) return []\\n    let batchSearch_res = [],\\n      batchSearch_ruleList = [],\\n      batchSearch_urlList = []\\n    batchSearch_homeList.forEach((item) => {\\n      try {\\n        // 缓存解析规则\\n        batchSearch_ruleList.push({\\n          title: item.title,\\n          searchFind: item.searchFind,\\n          sdetailFind: ['', '*'].indexOf(item.sdetail_find_rule) == -1 ? item.sdetail_find_rule : item.detail_find_rule,\\n          col_type: ['', '*'].indexOf(item.sdetail_find_rule) == -1 ? item.sdetail_col_type : item.detail_col_type,\\n          preRule: item.preRule,\\n          urlParam: (item.search_url.match(/;.*/) || [''])[0],\\n          ua: item.ua\\n        })\\n        // 搜索链接处理\\n        let searchUrl = item.search_url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        searchUrl[0] = searchUrl[0].replace(searchUrl[0].indexOf('%%') >= 0 ? /%%/g : /\\\\*\\\\*/g, encodeStr(batchSearch_kw, searchUrl[2]))\\n          .replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*\\\\d+@)?/g, (_, $1) => parseInt($1 || 0) + 1)\\n        let searchReq = { url: batchSearch_runCode(searchUrl[0]), options: { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: searchUrl[1], timeout: batchSearch_config.responseTime } }\\n        // post方法时转换参数\\n        if (/^post$/i.test(searchReq.options['method'])) {\\n          let [oriUrl, body] = searchReq.url.split('?')\\n          searchReq.url = oriUrl.replace('？？', '?')\\n          if (/^JsonBody=/.test(body)) body = body.slice(9)\\n          searchReq.options['body'] = body\\n        }\\n        if (searchUrl[2]) searchReq.options.headers['Content-Type'] = searchReq.options.headers['Content-Type'].slice(0, 19) + searchUrl[2]\\n        if (searchUrl[3]) searchUrl[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n          let headers = v.split('@')\\n          searchReq.options.headers[headers[0]] = batchSearch_runCode(headers[1])\\n        })\\n        // 添加全局UA\\n        if (!searchReq.options.headers['User-Agent']) {\\n          if (item.ua == 'pc')\\n            searchReq.options.headers['User-Agent'] = PC_UA\\n          else if (item.ua == 'mobile')\\n            searchReq.options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        batchSearch_urlList.push(searchReq)\\n      } catch (e) {\\n        batchSearch_urlList.push({ url: 'hiker://error/' + JSON.stringify(e) })\\n      }\\n    })\\n    // 获取搜索结果\\n    batchFetch(batchSearch_urlList).forEach((batchSearch_searchHtml, batchSearch_searchIndex) => {\\n      let batchSearch_itemRule = batchSearch_ruleList[batchSearch_searchIndex],\\n        batchSearch_itemUrl = batchSearch_urlList[batchSearch_searchIndex]\\n      MY_URL = batchSearch_itemUrl.url\\n      try {\\n        if (!batchSearch_searchHtml) {\\n          if (batchSearch_itemUrl.url.indexOf('hiker://error/') == 0)\\n            throw { message: '链接处理时出错:\\\\n' + JSON.parse(batchSearch_itemUrl.url.slice(14)).message }\\n          else if (batchSearch_itemUrl.url.indexOf('hiker://') != 0) throw { message: '无法访问，未获取到网页源代码' }\\n        }\\n\\n        function batchSearch_urlHandle(url, addRule) {\\n          // 子页面添加rule\\n          if (url.indexOf('hiker://page/') == 0) {\\n            [, url, params, mark] = /^(.*?)(?:\\\\?(.*?))?(#.*?)?$/.exec(url)\\n            return url + '?rule=' + batchSearch_itemRule.title + (params || '') + (mark ? '&' + mark : '')\\n          }\\n          // 添加二级规则\\n          if (addRule && !/@(?:r|lazyR)ule=/.test(url)) {\\n            if (batchSearch_itemRule.sdetailFind) {\\n              if (!/;get|;post/i.test(url))\\n                url += ';get;' + batchSearch_itemUrl.options.headers['Content-Type'].split('charst=')[1] +\\n                ';{' + Object.keys(batchSearch_itemUrl.options.headers)\\n                .filter((v) => v != 'Content-Type')\\n                .map((v) => v + '@' + batchSearch_itemUrl.options.headers[v].replace(/;/g, '；；'))\\n                .join('&&') + '}'\\n              batchSearch_itemRule.urlParam.replace(/^;post/i, ';get')\\n              url += '@rule=' + (batchSearch_itemRule.sdetailFind.indexOf('js:') == 0 ?\\n                batchSearch_itemRule.sdetailFind :\\n                batchSearch_itemRule.sdetailFind.replace('==>', ';' + batchSearch_itemRule.col_type + '==>')\\n              )\\n            } else url = 'web://' + url\\n          }\\n          // 二级页面预处理与错误处理\\n          if (url.indexOf('@rule=js:') > 0) url = url.replace('@rule=js:',\\n            '@rule=js:try{\\\\nbatchSearch_itemRule=' + $.stringify({ title: batchSearch_itemRule.title, col_type: batchSearch_itemRule.col_type }) +\\n            ';' + $.stringify(batchSearch_urlHandle) + ';' + $.stringify(batchSearch_reConfig) + ';' +\\n            $.toString(() => {\\n              fetch = (function(func) {\\n                return function(url, params) {\\n                  return func(batchSearch_urlHandle(url), params)\\n                }\\n              })(fetch)\\n              setResult = (function(func) {\\n                return function(el) {\\n                  if (!Array.isArray(el)) el = el.data\\n                  func(el.map((v) => {\\n                    v.url = v.url && batchSearch_urlHandle(v.url)\\n                    v.col_type = v.col_type || batchSearch_itemRule.col_type\\n                    return v\\n                  }))\\n                }\\n              })(setResult)\\n              setSearchResult = setResult\\n              setHomeResult = setResult\\n            }) + ';') + '\\\\n}catch(e){' + $.toString((title, batchSearch_reConfig) => {\\n            setResult([{\\n              title: '小程序【' + title + '】中，此二级页面不支持或者已失效，错误信息：\\\\n\\\\n' + e.message,\\n              col_type: 'long_text'\\n            }, { col_type: 'line' }, {\\n              title: '““””<span style=\\\"color:#409eff\\\">排除小程序</span>',\\n              url: 'confirm://要排除该小程序吗?.js:' +\\n                batchSearch_reConfig('batchSearch_config.filters[batchSearch_config.apply].exclude.push(\\\"' + title + '\\\")').replace('refreshPage(false)', '') + ';' +\\n                $.toString(() => writeFile('hiker://files/BatchSearchConfig.json', getVar('batchSearch-config'))) +\\n                ';\\\"toast://已排除小程序【' + title + '】\\\"',\\n              col_type: 'text_center_1'\\n            }])\\n          }, batchSearch_itemRule.title, batchSearch_reConfig) + '}'\\n          return url\\n        }\\n        if (batchSearch_itemRule.searchFind.indexOf('js:') == 0) {\\n          // js解析\\n          Array.prototype.push.apply(batchSearch_res, function() {\\n            let batchSearch_result = []\\n\\n            function getUrl() { return MY_URL }\\n            fetch = (function(func) {\\n              return function(url, params) {\\n                return func(batchSearch_urlHandle(url), params)\\n              }\\n            })(fetch)\\n            eval(batchSearch_itemRule.preRule)\\n\\n            function getResCode() { return batchSearch_searchHtml }\\n\\n            function setResult(el) {\\n              if (!Array.isArray(el)) el = el.data\\n              el.forEach((v) => {\\n                v.title = (batchSearch_config.searchMode == '内置' && !/^““|‘‘/.test(v.title) ? '““””' : '') + v.title\\n                v.url = batchSearch_urlHandle(v.url, true)\\n                v.desc = batchSearch_itemRule.title + (v.desc ? ' 🔹 ' + v.desc : '')\\n                v.col_type = 'movie_1_vertical_pic'\\n                batchSearch_result.push(v)\\n              })\\n            }\\n            setSearchResult = setResult\\n            setHomeResult = setResult\\n            eval(batchSearch_itemRule.searchFind.slice(3))\\n            return batchSearch_result\\n          }())\\n        } else {\\n          // 普通解析\\n          let find = batchSearch_itemRule.searchFind.split(';')\\n          parseDomForArray(batchSearch_searchHtml, find[0]).forEach((data) => {\\n            let [title, url, desc, content, img] = find.slice(1).map((v, i) =>\\n                batchSearch_runCode(v == '*' ? '' :\\n                  (i == 1 || i == 4 ? parseDom(data, v) :\\n                    parseDomForHtml(data, v)))),\\n              item = {\\n                title: (batchSearch_config.searchMode == '内置' && !/^““|‘‘/.test(title) ? '““””' : '') + title,\\n                url: batchSearch_urlHandle(url, true),\\n                desc: batchSearch_itemRule.title + (desc ? ' 🔹 ' + desc : ''),\\n                content: content,\\n                img: img,\\n                col_type: 'movie_1_vertical_pic'\\n              }\\n            if (item.title.indexOf(batchSearch_kw) >= 0 || item.desc.indexOf(batchSearch_kw) >= 0) batchSearch_res.push(item)\\n          })\\n        }\\n      } catch (e) {\\n        // 搜索结果错误处理\\n        batchSearch_res.push({\\n          title: '小程序【' + batchSearch_itemRule.title + '】不支持或者已失效，点击查看错误信息',\\n          url: 'confirm://' + e.message + '\\\\n\\\\n是否排除该小程序?.js:' +\\n            batchSearch_reConfig('batchSearch_config.filters[batchSearch_config.apply].exclude.push(\\\"' + batchSearch_itemRule.title + '\\\")').replace('refreshPage(false)', '') + ';' +\\n            $.toString(() => writeFile('hiker://files/BatchSearchConfig.json', getVar('batchSearch-config'))) +\\n            ';\\\"toast://已排除小程序【' + batchSearch_itemRule.title + '】\\\"',\\n          col_type: 'text_center_1'\\n        });\\n      }\\n    })\\n    return batchSearch_res\\n  } catch (e) {\\n    return [{\\n      title: '搜索时出现致命错误，点击查看解决办法\\\\n' + e,\\n      url: $('点击确定后结束搜索，将搜索线程调整为1，\\\\n重新搜索直到再次出现相同的报错，\\\\n然后就可以定位引起致命错误的小程序，手动将其排除').confirm(() => {\\n        putVar('batchSearch-kw', '')\\n        refreshPage()\\n      }),\\n      col_type: 'text_center_1'\\n    }]\\n  }\\n}\\n\"}]","proxy":"","icon":""},{"title":"机核","author":"","version":0,"url":"https://www.gcores.com/fyclass?page=fypage","col_type":"movie_2","class_name":"最近&游戏&二次元&书影音&生活&科技&设计与艺术","class_url":"latest&game&acg&media&lifestyle&tech&design_and_art","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.col-xl-3;h3&&Text;.original_imgArea&&style;.original_imgArea_desc&&Text;a&&href","searchFind":"","search_url":"https://www.gcores.com/search?keyword=**","titleColor":"#fff20c00","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"云上应用","author":"ᝰ","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.imcloudapp.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"斗鱼弹幕","author":"TyrantGenesis","version":1,"url":"https://m.douyu.com","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch(\"hiker://files/TyrantG/LIVE/douyu_danmu.js\"))\nbaseParse()","searchFind":"js:\neval(fetch(\"hiker://files/TyrantG/LIVE/douyu_danmu.js\"))\nsearchParse()","search_url":"https://m.douyu.com/api/search/anchor?limit=10&offset=fypage@-1@*10@&sk=**;POST","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\ndouyu_danmu()","pages":"[]","icon":""},{"last_chapter_rule":"","title":"青木倪壁纸","author":"小棉袄🌞","version":1,"type":"video","url":"hiker://empty##fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet cid = getMyVar(\"cid\", \"\");\nif (MY_PAGE == 1) {\n    d.push({\n        title: MY_RULE.title,\n        url: \"https://www.6qmn.com\",\n        col_type: \"avatar\",\n        desc: \"\",\n        pic_url: \"https://www.6qmn.com/usr/themes/Joe-master/assets/owo/aru/E884B8E7BAA2_2x.png\"\n    });\n\n    let cat = storage0.getMyVar(\"cat\", []);\n    if (cat.length == 0) {\n        let json = post(\"https://www.6qmn.com/index.php/joe/api\", {\n            headers: {\n                \"Referer\": \"https://www.6qmn.com/index.php/bizhi.html\",\n            },\n            body: {\n                routeType: \"wallpaper_type\"\n            }\n        });\n        json = JSON.parse(json);\n        cat = json.data;\n        storage0.putMyVar(\"cat\", cat);\n    }\n    if (cid == \"\") {\n        cid = cat[0].id;\n    }\n    for (let it of cat) {\n        d.push({\n            title: it.id == cid ? \"““\" + it.name + \"””\" : it.name,\n            url: $(\"#noLoading#\").lazyRule((id) => {\n                putMyVar(\"cid\", id);\n                refreshPage();\n                return \"hiker://empty\"\n            }, it.id),\n            col_type: \"flex_button\",\n            desc: \"\",\n            pic_url: \"\"\n        });\n    }\n\n}\nlet size = 48;\nlet json2 = post(\"https://www.6qmn.com/index.php/joe/api\", {\n    headers: {\n        \"Referer\": \"https://www.6qmn.com/index.php/bizhi.html\",\n    },\n    body: {\n        routeType: \"wallpaper_list\",\n        cid: cid,\n        start: size * (MY_PAGE - 1),\n        count: size\n    }\n});\njson2 = JSON.parse(json2).data;\n\nfunction takeElse(u, e) {\n    return u == null || u == \"\" ? e : u;\n}\nfor (let it of json2) {\n    d.push({\n        title: \"\",\n        url: it.url,\n        col_type: \"\",\n        desc: it.resolution,\n        //pic_url: it.url\n        pic_url: takeElse(it[\"img_1024_768\"], it.url_thumb)\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"JRKAN直播","author":"套壳网页，只需要改小程序链接##后面的内容即可","version":0,"type":"other","url":"hiker://empty##http://www.jrskan.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.jrskan.com/favicon.ico?ver=20190708.3"},{"last_chapter_rule":"","title":"即时热榜","author":"小棉袄🌞","version":1,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://m.jsrank.cn/\";\nd.push({\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    title: \"\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString((my) => {\n            if (input.startsWith(my)) {\n                return false;\n            }\n            return $.toString((url) => {\n                fy_bridge_app.open(JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://empty\",\n                    findRule: \"js:\" + $$$.toString((u) => {\n                        let js = $.toString(() => {\n                            try {\n                                if (document.title && document.title.length) {\n                                    let r = $$$().lazyRule((t) => {\n                                        setPageTitle(t);\n                                    }, document.title);\n                                    fy_bridge_app.parseLazyRule(r);\n                                }\n                            } catch (e) {\n                                fy_bridge_app.log(e.toString());\n                            }\n                        });\n                        setResult([{\n                            url: u,\n                            col_type: \"x5_webview_single\",\n                            extra: {\n                                canBack: true,\n                                js: js\n                            },\n                            desc: \"100%&&float\"\n                        }]);\n                    }, url)\n                }))\n            }, input)\n        }, url)\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"博客园","author":"小棉袄🌞","version":2,"url":"https://www.cnblogs.com/fyAll","col_type":"text_1","class_name":"首页&精华&候选&新闻","class_url":"&pick&candidate&news","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&article;.post-item-title&&Text;*;.post-item-summary&&Text;.post-item-title&&href","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://bkimg.cdn.bcebos.com/pic/242dd42a2834349b033bd3a07aa502ce36d3d53910cc?x-bce-process=image/format,f_auto"},{"last_chapter_rule":"","title":"HeapDump","author":"小棉袄🌞","version":9,"type":"other","url":"https://heapdump.cn/api/community/post/list?page=fypage&size=10&keyword=&isAdmin=false;get;UTF-8;{User-Agent@mobile}","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n   let a =[a];\n   //如果let a=[]; 那后面改顺搜(a)\n              require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(a)\n\nvar data = JSON.parse(getResCode()).data;\nsetResult(data.map(it=>({\n    title: it.title,\n    desc: it.summary,\n    pic: it.coverImage,\n    url: \"https://heapdump.cn/article/\" + it.seqId\n})))","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://heapdump.cn/favicon.ico?v=2"},{"last_chapter_rule":"","title":"思否","author":"小棉袄🌞","version":3,"url":"https://segmentfault.com/channel/fyAll","col_type":"text_1","class_name":"后端&前端&安卓&iOS","class_url":"backend&frontend&android&ios","area_name":"人工智能&小程序&区块链&安全","area_url":"ai&miniprogram&bc&netsec","sort_name":"","year_name":"行业&工具&程序员&SF官方","sort_url":"","year_url":"industry&toolkit&programmer&segmentfault","find_rule":".content-list-wrap&&.item-wrap;h5&&Text;*;.name&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"https://cdn.segmentfault.com/r-ce71be5c/favicon.ico"},{"title":"V电影","author":"发粪涂墙","version":0,"url":"https://www.vmovier.com/post/getbytab?tab=fyyear&page=fypage","col_type":"pic_1_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"最新推荐&热门排行&星级精选&随便看看","sort_url":"","year_url":"new&hot&stars&rand","find_rule":"js: \nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nvar html = json.data.match(/<li[\\s\\S]*?<\\/li>/g);\nfor (var i = 0; i < html.length; i++) {\n    var r = {};\n    var j = html[i];\n    r.title = parseDomForHtml(j,'a&&title');\n    r.desc = '评分：'+parseDomForHtml(j,'div,3&&Text')+'\\t\\t时长：' + parseDomForHtml(j,'span&&Text') + '\\n' + parseDomForHtml(j,'.index-intro&&Text');       \n  r.pic_url = parseDomForHtml(j,'img&&src');\n    r.url = 'https://www.vmovier.com/' + parseDomForHtml(j,'li&&data-id') + '@lazyRule=.js:try{JSON.parse(fetch(\"https://openapi-vtom.vmovier.com/v3/video/\" + fetch(input,{}).match(/vid = \"(.*?)\"/)[1]+\"?expand=resource&usage=xpc_web&appKey=61a2f329348b3bf77\",{})).data.resource.progressive[0].url}catch(e){input}';\n    if (r.title !== null && r.title !== undefined && r.title !== '')\nd.push(r);\n}\nres.data = d;\nsetHomeResult(res);","searchFind":".search-works-list&&li;img&&alt;a&&href;span&&Text;;img&&src","search_url":"https://www.vmovier.com/search/index/kw/**/p/fypage","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","icon":"#ff148e8e"},{"firstHeader":"class","title":"开眼视频","author":"小棉袄🌞","version":1,"url":"http://baobab.kaiyanapp.com:80/api/v5/index/tab/feed?udid=ecab2cc100f540e482c5f7db5542a33cc5a908bc&vc=591&vn=6.2.1&size=1080X2340&deviceModel=HLK-AL00&first_channel=eyepetizer_zhihuiyun_market&last_channel=eyepetizer_zhihuiyun_market&system_version_code=29","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","year_name":"","year_url":"","find_rule":"js: var s = getResCode(); var json={}; eval('json=' + s);\n\nvar next=json.nextPageUrl;\nvar s2 = fetch(next,{});\nvar j2={}; eval('j2=' + s2);\nfor(var i=0;i<j2.itemList.length;i++){\njson.itemList.push(j2.itemList[i]);\n}\n\nvar res={};var d=[];for(var i=0;i<json.itemList.length;i++){var j = json.itemList[i]; if(j.type!=\"followCard\")continue;var r = {};r.pic_url=j.data.content.data.cover.feed;r.title = j.data.content.data.title;r.desc=j.data.header.description;r.url='https://baobab.kaiyanapp.com/api/v1/video/' + j.data.header.id+'?f=web@lazyRule=.js:JSON.parse(fetch(input,{})).playUrl+\"&_t=.m3u8\"';d.push(r);}\nres.data = d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"①推荐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","icon":"#ff148e8e"},{"firstHeader":"class","last_chapter_rule":"","title":"艾迪.bc","author":"道长&北城","version":0,"url":"https://aidi.tv/show/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;;.lazyload&&data-original","search_url":"https://aidi.tv/vsearch/**----------fypage---.html","group":"①模板","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.pannel_head&&h2&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.content_detail,1&&.data&&Text',//一般主演，地区，影片评分等描述\n content:'.content_detail,1&&.desc&&Text',//内容简介，详情\n tabs:'body&&.player_infotip',//线路\n lists:'.content_playlist,#id&&li',//列表\n tab_id:'a&&href',//线路id，可不填\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","icon":""},{"last_chapter_rule":"","title":"饭团影视.spmb","author":"道长","version":7,"url":"https://ty.fantuan.tv/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.tag&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":"","search_url":"https://ty.fantuan.tv/vodsearch.html?wd=**&submit=","group":"①模板","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.text-muted,5&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.myui-content__thumb&&img&&data-original',//图片\n url:'.myui-vodlist__thumb&&a&&href',//可以是影片链接，或者图片也行\n desc:'.myui-content__detail&&Text',//一般主演，地区，影片评分等描述\n content:'.sketch&&Text',//内容简介，详情\n tabs:'.nav-tabs&&li',//线路\n lists:'.sort-list&&li',//列表\n tab_id:'a&&href',//线路id，可不填\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","icon":""},{"last_chapter_rule":"","title":"飘花.zxmb","author":"道长","version":10,"url":"https://www.gdlhx.com/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".vodlist&&li;a&&title;.lazyload&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nlet true_url = getMyVar('header.url', MY_URL)\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = true_url.replace('.html', '/page/' + page + '.html') //拼接页码\nvar html = 获取源码(true_url);\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet cates=[];\nlet 动态分类=加载动态分类();//1本地 2仓库 其它gitee\n动态分类.界面(cates)\n    .分类链接(true_url)\n    .选中的分类颜色('#1aad19')\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: '.top_nav',\n        子分类: 'body&&li:not(:matches(首页|留言))',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(\"/type/\", \"/show/\")\n            }\n        }\n    })\n    .添加分类定位({\n        一级分类: 'body&&.screen_list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    })\n    .开启内置折叠功能() // 必须\n    //.折叠按钮样式({ title: 当前折叠状态==\"1\"?\"∨\":\"Λ\" }) // 可选\n    .第几行开始折叠(1) // 可选\n    .折叠按钮样式({ 折叠按钮插入行: 1 })\n    .折叠(当前折叠状态)  // 必须\n    .开始打造分类();\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,-1&&Text\";\n一级(parStr,true);","search_url":"https://www.gdlhx.com/vod/search/page/fypage/wd/**.html","group":"①模板","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'body&&h2&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.data,1&&Text',\ncontent:'.content&&.content_desc&&span&&Text',\n tabs:'.play_source_tab,0&&a',\n lists:'#playlistbox,#id&&ul&&li',\n tab_id:'',\n 样式:'滚动'\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nlet 模板 = getApi('importUrl')+\"2505\";\nrequire(模板);\ninitConfig({\n  模板:模板,\n  样式:'滚动',//或者不填就是默认\n});\n引入动态分类()","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/104.svg"},{"last_chapter_rule":"","title":"1","author":"","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://mn2.bt8.top/xjj1/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"①测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"2","author":"","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://mn2.bt8.top/xjj2/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"①测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"3","author":"","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://mn2.bt8.top/001/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"①测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"哔呢哔呢.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.binibini.cc","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vdetail','/gbook');\n//一级书签('vdetail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.binibini.cc/vsearch/**----------fypage---.html","group":"①秒播","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.binibini.cc/template/conch/asset/img/bini/logo_black.png"},{"last_chapter_rule":"","title":"阿里云盘","author":"Joe","version":11,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/home\")","searchFind":"js:$.require(\"hiker://page/search\")","search_url":"hiker://empty?kw=**","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.extend({\n    text: [\"htm\", \"html\", \"xml\", \"java\", \"properties\", \"sql\", \"js\", \"md\", \"json\", \"conf\", \"ini\", \"vue\", \"php\", \"py\", \"bat\", \"gitignore\", \"yml\", \"go\", \"sh\", \"c\", \"cpp\", \"h\", \"hpp\", \"tsx\"],\n    audio: [\"mp3\", \"flac\", \"ogg\", \"m4a\", \"wav\", \"opus\"],\n    movie: [\"mp4\", \"mkv\", \"avi\", \"mov\", \"rmvb\", \"webm\", \"flv\", \"m4v\", \"m3u8\", \"ts\"],\n    img: [\"jpg\", \"png\", \"jpeg\", \"gif\", \"svg\", \"raw\"],\n    subtitle: [\"vtt\", \"srt\", \"ass\"]\n})","pages":"[{\"col_type\":\"text_1\",\"name\":\"主页\",\"path\":\"home\",\"rule\":\"js:\\nvar d = [];\\nif (!fileExist(\\\"hiker://files/rules/Joe/ali.json\\\")) {\\n    d.push({\\n        title: \\\"登陆以开启\\\",\\n        url: \\\"hiker://page/login\\\",\\n        col_type: \\\"text_center_1\\\"\\n    })\\n} else {\\n    function formatDate(time) {\\n        var date = new Date(time);\\n        var YY = date.getFullYear() + '-';\\n        var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\\n        var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());\\n        var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';\\n        var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';\\n        var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());\\n        return YY + MM + DD + \\\" \\\" + hh + mm + ss;\\n    }\\n    $.require(\\\"hiker://page/api\\\").refreshToken()\\n    let config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n    d.unshift({\\n        title: config.nick_name,\\n        img: config.avatar,\\n        url: $(\\\"确认退出登陆？\\\").confirm(() => {\\n            deleteFile(\\\"hiker://files/rules/Joe/ali.json\\\")\\n            refreshPage()\\n        }),\\n        col_type: \\\"avatar\\\"\\n    }, {\\n        desc: \\\"搜索我的文件或输入分享链接\\\",\\n        col_type: \\\"input\\\",\\n        url: \\\"'hiker://page/search?kw='+input\\\",\\n        extra: {\\n            titleVisible: false,\\n            onChange: \\\"putMyVar('kw',input)\\\"\\n        }\\n    })\\n    var paths = storage0.getMyVar(\\\"paths\\\", [{\\n        name: \\\"根目录\\\",\\n        id: \\\"root\\\"\\n    }])\\n    if (paths.length > 1) {\\n        d.push({\\n            title: \\\"<\\\",\\n            col_type: \\\"scroll_button\\\",\\n            url: $().lazyRule((paths) => {\\n                paths.pop()\\n                storage0.putMyVar(\\\"paths\\\", paths)\\n                refreshPage()\\n                return \\\"hiker://empty\\\"\\n            }, paths)\\n        })\\n    }\\n    paths.forEach((item, index) => {\\n        d.push({\\n            title: item.name,\\n            col_type: \\\"scroll_button\\\",\\n            url: $().lazyRule((item, paths, index) => {\\n                putMyVar(\\\"id\\\", item.id)\\n                storage0.putMyVar(\\\"paths\\\", paths.slice(0, index + 1))\\n                refreshPage()\\n                return \\\"hiker://empty\\\"\\n            }, item, paths, index)\\n        })\\n    })\\n    var list = $.require(\\\"hiker://page/api\\\").getFiles(paths[paths.length - 1].id).items\\n    d.push({\\n        title: \\\"TVbox推送:\\\" + getItem(\\\"tvb\\\", \\\"关\\\"),\\n        col_type: \\\"flex_button\\\",\\n        url: $(\\\"#noRecordHistory##noLoading#\\\").lazyRule(() => {\\n            var o = getItem(\\\"tvb\\\", \\\"关\\\")\\n            setItem(\\\"tvb\\\", (o == \\\"关\\\" ? \\\"开\\\" : \\\"关\\\"))\\n            refreshPage()\\n            return \\\"toast://切换成功\\\"\\n        })\\n    }, {\\n        title: \\\"聚云盘\\\",\\n        url: \\\"hiker://page/聚\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: \\\"切换样式\\\",\\n        url: $([\\\"movie_1_left_pic\\\", \\\"card_pic_3\\\", \\\"avatar\\\"]).select((l) => {\\n            setItem(\\\"style\\\", input)\\n            for (let i = 0; i < l; i++) {\\n                updateItem(i + \\\"\\\", {\\n                    col_type: input\\n                })\\n            }\\n            return \\\"toast://已切换\\\"\\n        }, list.length),\\n        col_type: \\\"text_2\\\"\\n    }, {\\n        title: \\\"排序:\\\" + (getMyVar(\\\"order\\\", \\\"name\\\") == \\\"name\\\" ? \\\"名称\\\" : \\\"时间\\\"),\\n        url: $(\\\"#noRecordHistory##noLoading#\\\").lazyRule(() => {\\n            var o = getMyVar(\\\"order\\\", \\\"name\\\")\\n            putMyVar(\\\"order\\\", (o == \\\"name\\\" ? \\\"updated_at\\\" : \\\"name\\\"))\\n            refreshPage()\\n            return \\\"toast://切换成功\\\"\\n        }),\\n        col_type: \\\"text_2\\\"\\n    }, {\\n        col_type: \\\"blank_block\\\"\\n    })\\n    list.forEach((item, i) => {\\n        let fileName = item.name\\n        let len = 40;\\n        let len2 = len / 2;\\n        if (fileName.length >= len) {\\n            fileName = fileName.substr(0, len2) + '...' + fileName.substr(fileName.length - len2);\\n        }\\n        d.push({\\n            title: fileName,\\n            img: (item.thumbnail ? item.thumbnail : (item.type == \\\"folder\\\" ? \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/文件夹.svg\\\" : $.require(\\\"hiker://page/api\\\").getIcon(item.name))),\\n            url: (item.type == \\\"folder\\\" ? $().lazyRule((paths, name, id) => {\\n                paths.push({\\n                    name: name,\\n                    id: id\\n                })\\n                storage0.putMyVar(\\\"paths\\\", paths)\\n                refreshPage()\\n                return \\\"hiker://empty\\\"\\n            }, paths, item.name, item.file_id) : $().lazyRule((id, name) => {\\n                return $.require(\\\"hiker://page/api\\\").chuli(id, name)\\n            }, item.file_id, item.name)),\\n            desc: formatDate(Date.parse(item.updated_at)),\\n            col_type: getItem(\\\"style\\\", \\\"movie_3\\\"),\\n            extra: {\\n                id: i + \\\"\\\"\\n            }\\n        })\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"登陆\",\"path\":\"login\",\"rule\":\"js:\\nvar d = [];\\nlet url = 'https://auth.aliyundrive.com/v2/oauth/authorize?login_type=custom&response_type=code&redirect_uri=https%3A%2F%2Fwww.aliyundrive.com%2Fsign%2Fcallback&client_id=25dzX3vbYqktVxyX&state=%7B%22origin%22%3A%22*%22%7D#/login'\\nvar js = $.toString(() => {\\n    const tokenFunction = function() {\\n        var token = JSON.parse(localStorage.getItem('token'))\\n        if (token && token.user_id) {\\n            let token_url = 'hiker://files/rules/Joe/ali.json';\\n            fy_bridge_app.writeFile(token_url, JSON.stringify(token))\\n            localStorage.clear();\\n            alert('TOKEN获取成功，请勿泄漏个人隐私!退出该页面后刷新重试！');\\n            fy_bridge_app.back();\\n            return;\\n        } else {\\n            token_timer();\\n        }\\n    }\\n    var token_timer = function() {\\n        setTimeout(tokenFunction, 300)\\n    };\\n    token_timer();\\n    tokenFunction();\\n})\\nd.push({\\n    url: url,\\n    col_type: 'x5_webview_single',\\n    desc: '100%&&float',\\n    extra: {\\n        canBack: true,\\n        js: js\\n    }\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"api\",\"path\":\"api\",\"rule\":\"var refreshToken = function() {\\n    var url = \\\"https://auth.aliyundrive.com/v2/account/token\\\"\\n    var config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n    var res = JSON.parse(post(url, {\\n        body: JSON.stringify({\\n            \\\"refresh_token\\\": config.refresh_token,\\n            \\\"grant_type\\\": \\\"refresh_token\\\"\\n        })\\n    }))\\n    config[\\\"refresh_token\\\"] = res.refresh_token\\n    config[\\\"access_token\\\"] = res.access_token\\n    writeFile(\\\"hiker://files/rules/Joe/ali.json\\\", JSON.stringify(config))\\n}\\nvar getFiles = function(id, did) {\\n    var url = \\\"https://api.aliyundrive.com/adrive/v3/file/list\\\"\\n    var config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n    var def = did ? did : config.default_drive_id\\n    let res = post(url, {\\n        body: JSON.stringify({\\n            \\\"drive_id\\\": def,\\n            \\\"parent_file_id\\\": id,\\n            \\\"limit\\\": 100,\\n            \\\"all\\\": true,\\n            \\\"url_expire_sec\\\": 1600,\\n            \\\"image_thumbnail_process\\\": \\\"image/resize,w_400/format,jpeg\\\",\\n            \\\"image_url_process\\\": \\\"image/resize,w_1920/format,jpeg\\\",\\n            \\\"video_thumbnail_process\\\": \\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\n            \\\"fields\\\": \\\"*\\\",\\n            \\\"order_by\\\": getMyVar(\\\"order\\\", \\\"name\\\"),\\n            \\\"order_direction\\\": \\\"ASC\\\"\\n        }),\\n        headers: {\\n            \\\"authorization\\\": config.access_token\\n        }\\n    })\\n    return JSON.parse(res)\\n}\\nvar chuli = function(id, name, did) {\\n    var config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n    var did = did ? did : config.default_drive_id\\n    let {\\n        getHzm,\\n        push\\n    } = $.require(\\\"hiker://page/api\\\")\\n    var Hzm = getHzm(name)\\n    if ($.movie.includes(Hzm)) {\\n        let durl = \\\"https://api.aliyundrive.com/v2/file/get_download_url\\\"\\n        let purl = \\\"https://api.aliyundrive.com/v2/file/get_video_preview_play_info\\\"\\n        var urls = []\\n        var names = [\\\"原画\\\"]\\n        let url = post(durl, {\\n            headers: {\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"expire_sec\\\": 115200,\\n                \\\"file_id\\\": id,\\n                \\\"drive_id\\\": did\\n            })\\n        })\\n        urls.push(JSON.parse(url).url + \\\"#isVideo=true#\\\")\\n        let pu = post(purl, {\\n            headers: {\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"drive_id\\\": did,\\n                \\\"category\\\": \\\"live_transcoding\\\",\\n                \\\"file_id\\\": id,\\n                \\\"template_id\\\": \\\"\\\"\\n            })\\n        })\\n        JSON.parse(pu).video_preview_play_info.live_transcoding_task_list.forEach(item => {\\n            urls.push(item.url + \\\"#isVideo=true#\\\")\\n            names.push(item.template_id)\\n        })\\n        if (getItem(\\\"tvb\\\", \\\"关\\\") == \\\"开\\\") {\\n            var u = []\\n            urls.forEach((item, i) => {\\n                u.push({\\n                    name: names[i],\\n                    url: item\\n                })\\n            })\\n            require(\\\"https://hikerfans.com/Joe/TVbox.js\\\")\\n            return 推送tvbox({\\n                name: name,\\n                vod: [{\\n                    name: \\\"阿里云盘\\\",\\n                    urls: u\\n                }]\\n            })\\n        }\\n        return JSON.stringify({\\n            urls: urls,\\n            names: names,\\n            headers: [{\\n                \\\"Referer\\\": \\\"https://www.aliyundrive.com/\\\"\\n            }]\\n        })\\n    } else {\\n        let durl = \\\"https://api.aliyundrive.com/v2/file/get_download_url\\\"\\n        let url = post(durl, {\\n            headers: {\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"expire_sec\\\": 115200,\\n                \\\"file_id\\\": id,\\n                \\\"drive_id\\\": did\\n            })\\n        })\\n        return JSON.parse(url).url\\n    }\\n}\\n$.exports.sharechuli = function(share_id, id, name, s) {\\n    var config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n    let {\\n        getHzm,\\n        push\\n    } = $.require(\\\"hiker://page/api\\\")\\n    var Hzm = getHzm(name)\\n    if ($.movie.includes(Hzm)) {\\n        log(\\\"是视频文件\\\")\\n        let durl = \\\"https://api.aliyundrive.com/v2/file/get_share_link_download_url\\\"\\n        let purl = \\\"https://api.aliyundrive.com/v2/file/get_share_link_video_preview_play_info\\\"\\n        var urls = []\\n        var names = [\\\"原画\\\"]\\n        let url = post(durl, {\\n            headers: {\\n                \\\"x-share-token\\\": s,\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"expire_sec\\\": 600,\\n                \\\"file_id\\\": id,\\n                \\\"share_id\\\": share_id\\n            })\\n        })\\n        urls.push(JSON.parse(url).url + \\\"#isVideo=true#\\\")\\n        let pu = post(purl, {\\n            headers: {\\n                \\\"x-share-token\\\": s,\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"share_id\\\": share_id,\\n                \\\"category\\\": \\\"live_transcoding\\\",\\n                \\\"file_id\\\": id,\\n                \\\"template_id\\\": \\\"\\\"\\n            })\\n        })\\n        JSON.parse(pu).video_preview_play_info.live_transcoding_task_list.forEach(item => {\\n            urls.push(item.url + \\\"#isVideo=true#\\\")\\n            names.push(item.template_id)\\n        })\\n        if (getItem(\\\"tvb\\\", \\\"关\\\") == \\\"开\\\") {\\n            var u = []\\n            urls.forEach((item, i) => {\\n                u.push({\\n                    name: names[i],\\n                    url: item\\n                })\\n            })\\n            require(\\\"https://hikerfans.com/Joe/TVbox.js\\\")\\n            return 推送tvbox({\\n                name: name,\\n                vod: [{\\n                    name: \\\"阿里云盘\\\",\\n                    urls: u\\n                }],\\n                extra: {\\n                    \\\"manual\\\": \\\"1\\\",\\n                    \\\"format\\\": \\\"redirect\\\"\\n                }\\n            })\\n        }\\n        return JSON.stringify({\\n            urls: urls,\\n            names: names,\\n            headers: [{\\n                \\\"Referer\\\": \\\"https://www.aliyundrive.com/\\\"\\n            }]\\n        })\\n    } else {\\n        let durl = \\\"https://api.aliyundrive.com/v2/file/get_share_link_download_url\\\"\\n        let url = post(durl, {\\n            headers: {\\n                \\\"x-share-token\\\": s,\\n                \\\"authorization\\\": config.access_token\\n            },\\n            body: JSON.stringify({\\n                \\\"expire_sec\\\": 600,\\n                \\\"file_id\\\": id,\\n                \\\"share_id\\\": share_id\\n            })\\n        })\\n        return JSON.parse(url).url\\n    }\\n}\\n$.exports.getIcon = function(fileName) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/api\\\")\\n    let root = \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/\\\";\\n    let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|css|doc|epub|exc|htm|xlsx'.split('|');\\n    let hzm = getHzm(fileName)\\n    if (files.includes(hzm)) {\\n        img = root + hzm + '.svg';\\n    } else {\\n        img = root + \\\"文件.svg\\\"\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\\n$.exports.refreshToken = refreshToken\\n$.exports.getFiles = getFiles\\n$.exports.chuli = chuli\"},{\"col_type\":\"movie_3\",\"name\":\"分享\",\"path\":\"share\",\"rule\":\"js:\\nvar d = [];\\n\\nfunction formatDate(time) {\\n    var date = new Date(time);\\n    var YY = date.getFullYear() + '-';\\n    var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\\n    var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());\\n    var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';\\n    var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';\\n    var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());\\n    return YY + MM + DD + \\\" \\\" + hh + mm + ss;\\n}\\nif (getParam(\\\"share_id\\\").startsWith(\\\"https://www.aliyundrive.com/s/\\\")) {\\n    var shareId = getParam(\\\"share_id\\\")\\n    var share_id = shareId.split('com/s/')[1].split(\\\"/\\\")[0]\\n    if (getItem(share_id, \\\"\\\") != \\\"\\\") {\\n        var password = getItem(share_id)\\n    } else if (getParam(\\\"pwd\\\")) {\\n        var password = getParam(\\\"pwd\\\")\\n    } else {\\n        var password = \\\"\\\"\\n    }\\n    var res = JSON.parse(post(\\\"https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous?share_id=\\\" + share_id, {\\n        body: JSON.stringify({\\n            \\\"share_id\\\": share_id\\n        })\\n    }))\\n    var sa = JSON.parse(post(\\\"https://api.aliyundrive.com/v2/share_link/get_share_token\\\", {\\n        body: JSON.stringify({\\n            \\\"share_pwd\\\": password,\\n            \\\"share_id\\\": share_id\\n        })\\n    }))\\n    if (sa.share_token) {\\n        var s = sa.share_token\\n        setPageTitle(res.share_name)\\n        var paths = storage0.getMyVar(share_id + \\\"paths\\\", [{\\n            name: \\\"根目录\\\",\\n            id: \\\"root\\\"\\n        }])\\n        if (paths.length > 1) {\\n            d.push({\\n                title: \\\"<\\\",\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((share_id, paths) => {\\n                    paths.pop()\\n                    storage0.putMyVar(share_id + \\\"paths\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, share_id, paths)\\n            })\\n        }\\n        paths.forEach((item, index) => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((share_id, item, paths, index) => {\\n                    putMyVar(\\\"id\\\", item.id)\\n                    storage0.putMyVar(share_id + \\\"paths\\\", paths.slice(0, index + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, share_id, item, paths, index)\\n            })\\n        })\\n        d.unshift({\\n            title: res.creator_name,\\n            img: res.avatar,\\n            col_type: \\\"avatar\\\"\\n        }, {\\n            title: \\\"““””<small>\\\" + formatDate(Date.parse(res.updated_at)) + \\\"</small>\\\",\\n            col_type: \\\"text_1\\\"\\n        }, {\\n            title: \\\"保存到我的网盘\\\",\\n            url: `smartdrive://share/browse?shareId=${share_id}&sharePwd=${password}`,\\n            col_type: \\\"text_center_1\\\"\\n        })\\n        var l = JSON.parse(post(\\\"https://api.aliyundrive.com/adrive/v3/file/list\\\", {\\n            headers: {\\n                \\\"x-share-token\\\": s\\n            },\\n            body: JSON.stringify({\\n                \\\"all\\\": true,\\n                \\\"share_id\\\": share_id,\\n                \\\"parent_file_id\\\": paths[paths.length - 1].id,\\n                \\\"limit\\\": 200,\\n                \\\"image_thumbnail_process\\\": \\\"image/resize,w_160/format,jpeg\\\",\\n                \\\"image_url_process\\\": \\\"image/resize,w_1920/format,jpeg\\\",\\n                \\\"video_thumbnail_process\\\": \\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\n                \\\"order_by\\\": getItem(\\\"order\\\", \\\"name\\\"),\\n                \\\"order_direction\\\": \\\"ASC\\\"\\n            })\\n        })).items\\n        d.push({\\n            title: \\\"切换样式\\\",\\n            url: $([\\\"movie_1_left_pic\\\", \\\"card_pic_3\\\", \\\"avatar\\\"]).select(() => {\\n                setItem(\\\"style\\\", input)\\n                refreshPage()\\n                return \\\"toast://已切换\\\"\\n            }),\\n            col_type: \\\"text_2\\\"\\n        }, {\\n            title: \\\"排序：\\\" + (getMyVar(\\\"order\\\", \\\"name\\\") == \\\"name\\\" ? \\\"名称\\\" : \\\"时间\\\"),\\n            url: $(\\\"#noRecordHistory##noLoading#\\\").lazyRule(() => {\\n                var o = getMyVar(\\\"order\\\", \\\"name\\\")\\n                putMyVar(\\\"order\\\", (o == \\\"name\\\" ? \\\"updated_at\\\" : \\\"name\\\"))\\n                refreshPage()\\n                return \\\"toast://切换成功\\\"\\n            }),\\n            col_type: \\\"text_2\\\"\\n        }, {\\n            col_type: \\\"blank_block\\\"\\n        })\\n        l.forEach((item, i) => {\\n            let fileName = item.name\\n            let len = 40;\\n            let len2 = len / 2;\\n            if (fileName.length >= len) {\\n                fileName = fileName.substr(0, len2) + '...' + fileName.substr(fileName.length - len2);\\n            }\\n            d.push({\\n                title: fileName,\\n                desc: formatDate(Date.parse(item.updated_at)),\\n                img: (item.thumbnail ? item.thumbnail : (item.type == \\\"folder\\\" ? \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/文件夹.svg\\\" : $.require(\\\"hiker://page/api\\\").getIcon(item.name))),\\n                url: (item.type == \\\"folder\\\" ? $().lazyRule((paths, name, id, share_id) => {\\n                    paths.push({\\n                        name: name,\\n                        id: id\\n                    })\\n                    storage0.putMyVar(share_id + \\\"paths\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, item.name, item.file_id, share_id) : $().lazyRule((share_id, id, name, s) => {\\n                    return $.require(\\\"hiker://page/api\\\").sharechuli(share_id, id, name, s)\\n                }, share_id, item.file_id, item.name, s)),\\n                col_type: getItem(\\\"style\\\", \\\"movie_3\\\"),\\n                extra: {\\n                    id: i + \\\"\\\"\\n                }\\n            })\\n        })\\n    } else if (sa.code == \\\"ShareLink.Cancelled\\\") {\\n        setResult([{\\n            title: \\\"来晚了，分享被取消了ಠ_ಠ\\\",\\n            col_type: \\\"text_center_1\\\"\\n        }])\\n    } else if (sa.code == \\\"ShareLink.Forbidden\\\") {\\n        setResult([{\\n            title: \\\"来晚了，分享被禁止了ಠ_ಠ\\\",\\n            col_type: \\\"text_center_1\\\"\\n        }])\\n    } else if (sa.code == \\\"ShareLink.Expired\\\") {\\n        setResult([{\\n            title: \\\"来晚了，分享过期了ಠ_ಠ\\\",\\n            col_type: \\\"text_center_1\\\"\\n        }])\\n    } else {\\n        setResult([{\\n            title: \\\"请输入提取码\\\",\\n            url: $(\\\"\\\").input((share_id) => {\\n                setItem(share_id, input)\\n                refreshPage()\\n            }, share_id),\\n            col_type: \\\"text_center_1\\\"\\n        }])\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    function formatDate(time) {\\n        var date = new Date(time);\\n        var YY = date.getFullYear() + '-';\\n        var MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';\\n        var DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate());\\n        var hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';\\n        var mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';\\n        var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds());\\n        return YY + MM + DD + \\\" \\\" + hh + mm + ss;\\n    }\\n    let kw = getParam(\\\"kw\\\")\\n    var links = kw.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g)\\n    if (links) {\\n        d.push({\\n            title: \\\"识别到链接\\\",\\n            url: \\\"toast://ヽ(*⌒∇⌒*)ﾉ\\\",\\n            col_type: \\\"text_center_1\\\"\\n        })\\n        links.forEach(item => {\\n            d.push({\\n                title: item,\\n                url: \\\"hiker://page/share?share_id=\\\" + item,\\n                col_type: \\\"text_1\\\"\\n            })\\n        })\\n        setResult(d)\\n    } else {\\n        var paths = storage0.getMyVar(\\\"paths\\\", [{\\n            name: \\\"根目录\\\",\\n            id: \\\"root\\\"\\n        }])\\n        let u = \\\"https://api.aliyundrive.com/adrive/v3/file/search\\\"\\n        var config = JSON.parse(fetch(\\\"hiker://files/rules/Joe/ali.json\\\"))\\n        var list = JSON.parse(post(u, {\\n            body: JSON.stringify({\\n                \\\"drive_id\\\": \\\"1933181\\\",\\n                \\\"limit\\\": 100,\\n                \\\"image_thumbnail_process\\\": \\\"image/resize,w_400/format,jpeg\\\",\\n                \\\"image_url_process\\\": \\\"image/resize,w_1920/format,jpeg\\\",\\n                \\\"video_thumbnail_process\\\": \\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\n                \\\"query\\\": `name match \\\\\\\"${kw}\\\\\\\"`,\\n                \\\"order_by\\\": \\\"name ASC\\\"\\n            }),\\n            headers: {\\n                \\\"authorization\\\": config.access_token\\n            }\\n        })).items\\n        list.forEach(item => {\\n            let fileName = item.name\\n            let len = 40;\\n            let len2 = len / 2;\\n            if (fileName.length >= len) {\\n                fileName = fileName.substr(0, len2) + '...' + fileName.substr(fileName.length - len2);\\n            }\\n            d.push({\\n                title: fileName,\\n                img: (item.thumbnail ? item.thumbnail : (item.type == \\\"folder\\\" ? \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/文件夹.svg\\\" : $.require(\\\"hiker://page/api\\\").getIcon(item.name))),\\n                url: (item.type == \\\"folder\\\" ? $().lazyRule((paths, name, id) => {\\n                    paths.push({\\n                        name: name,\\n                        id: id\\n                    })\\n                    storage0.putMyVar(\\\"paths\\\", paths)                    \\n                    return \\\"hiker://page/home\\\"\\n                }, paths, item.name, item.file_id) : $().lazyRule((id, name) => {\\n                    return $.require(\\\"hiker://page/api\\\").chuli(id, name)\\n                }, item.file_id, item.name)),\\n                desc: formatDate(Date.parse(item.updated_at)),\\n                col_type: \\\"avatar\\\"\\n            })\\n        })\\n    }\\n} catch (e) {}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"聚\",\"path\":\"聚\",\"rule\":\"js:\\nvar d = [];\\nvar urls = \\\"https://wpxz.org&https://yunpan1.com/&https://www.yunpanziyuan.com&https://bbs.aipans.com/&https://newxiaozhan.com/&https://u.gitcafe.net/&https://jihepan.com&https://www.panjd.com/&https://yunpan1.com/&https://aliwp.cn/&https://jike.info/category/2/%E8%AE%A8%E8%AE%BA%E5%8C%BA?lang=en-US&https://zhaoziyuan.la/&https://yiso.fun/&https://www.alipansou.com/&https://www.cuppaso.fun/&https://www.upyunso.com/&https://www.niceso.fun/&https://dalao.ru/w/&http://wanrenmi8.com/cn/index.html\\\"\\nlet names = \\\"网盘小站&云盘分享&云盘资源网&爱盼&小站&小纸条&鸡盒盘&盘基地登陆&云盘资源&网盘资源&JIKE&找资源&易搜&喵搜&卡帕&UP云搜&奈斯搜索&大佬&万人迷\\\"\\nnames.split(\\\"&\\\").forEach((item, i) => {\\n    d.push({\\n        title: item,\\n        url: $().lazyRule((i) => {\\n            putMyVar(\\\"index\\\", i + \\\"\\\")\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, i),\\n        col_type: \\\"scroll_button\\\"\\n    })\\n})\\nvar u = urls.split(\\\"&\\\")[parseInt(getMyVar(\\\"index\\\", \\\"0\\\"))]\\nd.push({\\n    col_type: \\\"x5_webview_single\\\",\\n    url: u,\\n    desc: \\\"auto&&list\\\",\\n    extra: {\\n        //canBack: true,\\n        urlInterceptor: $.toString(() => {\\n            if (input.startsWith('https://www.aliyundrive.com/s/')) {\\n                return $.toString((url) => {\\n                    fba.open(JSON.stringify({\\n                        rule: '阿里云盘',\\n                        url: 'hiker://page/share?rule=阿里云盘&share_id=' + url\\n                    }));\\n                }, input)\\n            }\\n        }),\\n        //disableX5: true\\n    }\\n})\\nsetResult(d);\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/31.png"},{"last_chapter_rule":"","title":"字幕库","author":"ZHJ","version":0,"type":"video","url":"https://zimuku.org/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\neval(JSON.parse(request('hiker://page/lazy')).rule)\n\nd.push({\n    title: '<h2 style=\"text-align: center;\"><br><font color=\"#5898B8\">字幕库</font></h2>',\n    col_type: \"rich_text\"\n});\n\n\n\nd.push({\n        title: \"🔍\",\n        url: \"input?'hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key='+encodeURIComponent(input):'toast://请输入内容'\",\n        desc: \"搜你想要...\",\n        col_type: \"input\"\n    });\n\n\nhtml=getResCode();\n\n\n\ntry {\n    //a =  pdfa(html,'.box&&.odd');\n    //b =  pdfa(html,'.box&&.even');\n\n   //data=a.concat(b)\n   data=pdfa(html,'.box&&tr,1:');\n\n    d.push({\n        title: \"<strong>🎈最新更新字幕：</strong>\",\n        col_type: \"rich_text\",\n    });\n   data.forEach(i => {\n\n备注列表 = pdfa(i,'body&&img');\n//log(备注列表)\n备注=[]\nfor (var j in 备注列表) {\n备注[j]=pdfh(备注列表[j],'img&&title')     \n\n}\nvar 备注 = 备注.filter(s => { return s && s.trim() });\n\n备注=备注.reverse().join(\"、\")\n\n标题=pdfh(i,'b&&Text')\n图片=pd(i,'img&&data-original')\n发布日期=i.match(/([0-9]{1,2}(天|小时|分钟)前|刚刚|[0-9]{1,2}月[0-9]{1,2}日|[0-9]{2}\\/[0-9]{1,2}\\/[0-9]{1,2})/)[0]\n\n\n        d.push({\n            title: 标题,\n       pic_url:图片,\n            desc:/\\.(srt|ssa|ass|sub)/m.test(标题)?\"✅  无需解压  \"+发布日期+\"\\n\"+备注:\"需要解压 \"+发布日期+\"\\n\"+备注,\n            col_type: \"movie_1_vertical_pic\",\n            url:pd(i,'a&&href')?pd(i,'a&&href')+\"#immersiveTheme#\":pd(i,'a,1&&href')+lazy,extra: {inheritTitle: false}\n        });\n    });\n    \n}catch(e){\n    log(e.toString())\n}\n\n\n\n\n\n\n\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nvar html = request(MY_URL);\n\nfunction stringToHex(str) {\n    var val = \"\";\n    for (var i = 0; i < str.length; i++) {\n        if (val == \"\") val = str.charCodeAt(i).toString(16);\n        else val += str.charCodeAt(i).toString(16);\n    }\n    return val;\n}\n\nif (html.includes('YunSuoAutoJump()')) {\n        request(MY_URL+\"&security_verify_data=3431322c393135\", {\n    headers: {\n        'Cookie': getCookie(MY_HOME)+';srcurl='+stringToHex(MY_URL),\n    }\n})\nhtml = request(MY_URL)\n}\n\ndata = pdfa(html, 'body&&.item.prel.clearfix');\n\n\ndata.forEach(i => {\n    //log(i)\n    标题 = pdfh(i, 'p,0&&Text') + pdfh(i, 'p,1&&Text')\n    图片 = pd(i, 'img&&data-original')\n\n\n    d.push({\n        title: 标题,\n        pic_url: 图片,\n        //desc:/rar|zip|7z/m.test(标题)?\"需要解压  \"+发布日期+\"\\n\"+备注:\"✅无需解压  \"+发布日期+\"\\n\"+备注,\n        col_type: \"avatar\",\n        url: pd(i, 'a&&href') ? pd(i, 'a&&href') : pd(i, 'a,1&&href') //+lazy\n    });\n\n});\nsetResult(d);","search_url":"hiker://empty##https://so.zimuku.org/search?q=**&vtk=&p=fypage","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"js:eval(JSON.parse(request('hiker://page/通用二级')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"//eval(JSON.parse(request('hiker://page/lazy')).rule)\\n\\n//①需要重点看一下域名是不是http\\n//②需要看一下请求链接的域名后缀\\n\\n\\nvar lazy = $('').lazyRule((MY_HOME) => {\\n\\n//定义正则\\n找解析正则=/https?:\\\\/\\\\/.*?(\\\\.|\\\\:).*?url=/\\n找域名正则=/https?:\\\\/\\\\/.*?(\\\\.|\\\\:).*?(?=\\\\/)/\\n\\n//找到数据可能需要修改\\n  网页源码=request(input)\\n  网站=input\\n  网站=\\\"https://zimuku.org\\\"+pdfh(网页源码,'#down1&&href')\\n  网页源码=request(网站)\\n  var 列表 = pdfa(网页源码,'.down&&a');\\n\\n        \\n线路名数组=[]\\n下载链接数组=[]\\nfor (var i in 列表) {\\n标题=pdfh(列表[i],'a&&Text')\\n//图片=pdfh(列表[i],'')\\n链接=\\\"https://zimuku.org\\\"+pdfh(列表[i],'a&&href')\\n//描述=pdfh(列表[i],'')\\n线路名数组[i]=标题\\n下载链接数组[i]=链接\\n}\\n\\n\\n\\n\\n\\n\\n \\n    let 数据 = {}\\n    j=0\\n    线路名数组.forEach(i => {\\n        数据[i] =下载链接数组[j] ;j++;\\n    })\\n    \\n    return $(线路名数组, 2, '请选择下载线路').select((数据,网站) => {\\n\\n        return $().lazyRule((数据,input,网站) => {\\nlog(数据[input])\\n\\n下载链接=request(数据[input],{\\n\\n              headers: {\\r\\n                    \\\"User-Agent\\\": MOBILE_UA,\\n                    \\\"Referer\\\": 网站\\n                     //\\\"Cookie\\\":cookie\\n                 },onlyHeaders:true\\n\\n})\\n\\n\\n下载链接=JSON.parse(下载链接).url\\nlog(下载链接)\\nreturn \\\"download://\\\"+下载链接+\\\";{Referer@\\\"+网站+\\\"}\\\"\\n\\n        }, 数据,input,网站)\\n\\n\\n    }, 数据,网站)\\n\\n\\n\\n\\n\\n    \\n},MY_HOME)\"},{\"col_type\":\"movie_3\",\"name\":\"通用二级\",\"path\":\"通用二级\",\"rule\":\"js:\\nvar d = [];\\n\\nif(MY_PARAMS.链接)MY_URL=MY_PARAMS.链接\\n\\nhtml=request(MY_URL);\\n\\neval(JSON.parse(request('hiker://page/lazy')).rule)\\n\\n片名=pdfh(html,'h1&&Text').replace(\\\" 字幕下载\\\",\\\"\\\")\\nsetPageTitle(片名)\\n又名=pdfh(html,'h4&&Text').replace(\\\" 中文字幕下载\\\",\\\"\\\")\\n\\n图片=pd(html,'.col-md-2&&img&&src')\\n\\nd.push({\\n            title: 片名+\\\"\\\\n\\\"+又名,\\n       pic_url:图片,\\n            //desc:/\\\\.(srt|ssa|ass|sub)/.test(标题)?\\\"✅  无需解压  \\\"+发布日期+\\\"\\\\n\\\"+备注:\\\"需要解压 \\\"+发布日期+\\\"\\\\n\\\"+备注,\\n            url:图片,\\n            col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\\n            \\n        });\\n   \\n\\n\\n\\n    //a =  pdfa(html,'.box&&.odd');\\n    //b =  pdfa(html,'.box&&.even');\\n\\n    //data=a.concat(b)\\n    data=pdfa(html,'.box&&tr,1:');\\ndata.forEach(i => {\\n\\n\\n备注列表 = pdfa(i,'body&&img');\\n//log(备注列表)\\n备注=[]\\nfor (var j in 备注列表) {\\n      备注[j]=pdfh(备注列表[j],'img&&title')     \\n\\n}\\nvar 备注 = 备注.filter(s => { return s && s.trim() });\\n\\n\\n\\n备注=备注.reverse().join(\\\"、\\\")\\n\\n标题=pdfh(i,'b&&Text')\\n发布日期=i.match(/([0-9]{1,2}(天|小时|分钟)前|[0-9]{1,2}月[0-9]{1,2}日|[0-9]{2}\\\\/[0-9]{1,2}\\\\/[0-9]{1,2})/)[0]\\n\\n        d.push({\\n            title: 标题,\\n            desc:/\\\\.(srt|ssa|ass|sub)$/m.test(标题)?\\\"✅  无需解压  \\\"+发布日期+\\\"\\\\n\\\"+备注:\\\"需要解压 \\\"+发布日期+\\\"\\\\n\\\"+备注,\\n            col_type: \\\"text_1\\\",\\n            url:pd(i,'a&&href')+lazy,\\n            //url:\\\"hiker://page/通用二级\\\",\\n            extra:{链接:pd(i,'a&&href')}\\n        });\\n    });\\n    \\n\\n\\n\\n\\n\\n\\n\\n\\n\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"云锁\",\"path\":\"云锁\",\"rule\":\"//方法\\nfunction stringToHex(str) {\\n    var val = \\\"\\\";\\n    for (var i = 0; i < str.length; i++) {\\n        if (val == \\\"\\\") val = str.charCodeAt(i).toString(16);\\n        else val += str.charCodeAt(i).toString(16);\\n    }\\n    return val;\\n}\\n\\nfunction get_cookie(url) {\\n    hex_string = stringToHex(url)\\n    cookie = {\\n        \\\"srcurl\\\": hex_string,\\n        \\\"path\\\": \\\"/\\\"\\n    }\\n    return cookie\\n}\\n\\nfunction getDomain(url) {\\n    var domain = url.replace(/((http|https):\\\\/\\\\/(www.)?(\\\\w+(\\\\.)?)+).+/gm, '$1');\\n    return domain\\n}\\n\\nfunction getLoc(html) {\\n    html.match(/self\\\\.location.*?\\\"(.*?)\\\"/gm)\\n    return RegExp.$1\\n}\\n\\n\\nfunction getYSHtmlRes(url) {\\n    let r = $.require(\\\"hiker://page/YunSuo\\\");\\n    var screen_date = \\\"1920,1080\\\"\\n    var html1 = fetch(url, {\\n        headers: {\\n            'ua': MOBILE_UA\\n        }\\n    })\\n    if (html1.includes('YunSuoAutoJump()')) {\\n        var url_2 = r.loc(html1) + r.st(screen_date)\\n        url_2 = r.host(url) + url_2\\n        var html2 = fetch(url_2, {\\n            headers: {\\n                'ua': MOBILE_UA\\n            }\\n        })\\n\\n        var cok = getCookie(url_2)\\n\\n        var html3 = fetch(url, {\\n            headers: {\\n                'User-Agent': MOBILE_UA,\\n                'Cookie': cok,\\n            }\\n        });\\n        return html3\\n    } else {\\n        return html1\\n    }\\n}\\n\\n\\n$.exports.st = stringToHex;\\n$.exports.host = getDomain;\\n$.exports.loc = getLoc;\\n$.exports.ys = getYSHtmlRes;\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"搜索\",\"rule\":\"js:\\nvar d = [];\\n找域名正则=/https?:\\\\/\\\\/.*?(\\\\.|\\\\:).*?(?=\\\\/)/\\neval(JSON.parse(request('hiker://page/lazy')).rule)\\n\\n\\n\\nif(getParam(\\\"key\\\")){\\n页数 = Number(getMyVar(\\\"page\\\", \\\"0\\\")) + MY_PAGE;\\n关键词 = getMyVar(\\\"key\\\", getParam(\\\"key\\\"));\\n}else{\\n\\n关键词=MY_URL.split(\\\"##\\\")[1]\\n页数=MY_URL.split(\\\"##\\\")[2]\\n\\n}\\n\\nMY_URL=\\\"https://so.zimuku.org/search?q=\\\"+关键词+\\\"&vtk=&p=\\\"+页数\\nlog(MY_URL)\\nMY_HOME=MY_URL.match(找域名正则)[0]\\n\\n\\n/*\\nlet y = $.require(\\\"hiker://page/云锁\\\");\\n\\nvar html = y.ys(MY_URL)*/\\n\\n\\n\\n\\n\\nvar html = request(MY_URL);\\n\\n\\nfunction stringToHex(str) {\\n    var val = \\\"\\\";\\n    for (var i = 0; i < str.length; i++) {\\n        if (val == \\\"\\\") val = str.charCodeAt(i).toString(16);\\n        else val += str.charCodeAt(i).toString(16);\\n    }\\n    return val;\\n}\\n\\nif (html.includes('YunSuoAutoJump()')) {\\n\\n        request(MY_URL+\\\"&security_verify_data=3431322c393135\\\", {\\n    headers: {\\n        'Cookie': getCookie(MY_HOME)+';srcurl='+stringToHex(MY_URL),\\n    }\\n})\\nhtml = request(MY_URL)\\n}\\n\\n\\n\\n\\n\\n\\n\\ntry {\\n    \\n   data=pdfa(html,'body&&.item.prel.clearfix');\\n   //log(data)\\n\\ndata.forEach(i => {\\n//log(i)\\n标题=pdfh(i,'p,0&&Text')+pdfh(i,'p,1&&Text')\\n图片=pd(i,'img&&data-original')\\n链接=pd(i,'a&&href')\\n\\nd.push({\\n            title: 标题,\\n            pic_url:图片,\\n            //desc:/rar|zip|7z/m.test(标题)?\\\"需要解压  \\\"+发布日期+\\\"\\\\n\\\"+备注:\\\"✅无需解压  \\\"+发布日期+\\\"\\\\n\\\"+备注,\\n            col_type: \\\"avatar\\\",\\n            url:\\\"hiker://page/通用二级?#immersiveTheme#\\\",\\n            extra:{链接:链接,inheritTitle: false}\\n        });\\n\\n  \\n    \\n\\n字幕列表 = pdfa(i,'body&&tr:not(:matches(点击查看))');\\n//log(字幕列表)\\nif(字幕列表.length<1)\\nd.push({\\n            title: \\\"没有字幕\\\",\\n            //pic_url:图片,\\n            desc:\\\"❌没有字幕\\\",\\n            col_type: \\\"text_1\\\",\\n            url:\\\"\\\"\\n        });\\n\\nelse\\nfor (var j in 字幕列表) {\\n      字幕名=pdfh(字幕列表[j],'b&&Text')  \\n      链接=\\\"https://zimuku.org\\\"+pdfh(字幕列表[j],'a&&href')\\n      备注=pdfh(字幕列表[j],'img&&aly')\\n\\nd.push({\\n            title: 字幕名,\\n            //pic_url:图片,\\n            desc:/\\\\.(srt|ssa|ass|sub)$/m.test(字幕名)?\\\"✅  无需解压\\\\n\\\"+备注:\\\"需要解压\\\\n\\\"+备注,\\n            col_type: \\\"text_1\\\",\\n            url:链接+lazy\\n        });\\n\\n\\n\\n}\\nd.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n\\n}); \\n}catch(e){\\n    log(e.toString())\\n}\\n\\n\\n\\n\\nsetResult(d);\"}]","proxy":"","icon":"https://s1.locimg.com/2022/12/07/1226ef77342ab.png"},{"last_chapter_rule":"","title":"点点字幕","author":"ZHJ","version":0,"type":"video","url":"https://www.ddzimu.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\n\nd.push({\n    title: '<h2 style=\"text-align: center;\"><br><font color=\"#5898B8\">点点字幕搜索</font></h2>',\n    col_type: \"rich_text\"\n});\n\n\n\nd.push({\n        title: \"🔍\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"搜你想要...\",\n        col_type: \"input\"\n    });\n\n\nhtml=getResCode();\ntry {\n    let data =  pdfa(html,'body&&.hot&&a');\n    \n    d.push({\n        title: \"<strong>🎈近期热门搜索：</strong>\",\n        col_type: \"rich_text\",\n    });\n   data.forEach(i => {\n        d.push({\n            title: pdfh(i,'a&&Text'),\n            col_type: \"flex_button\",\n            url:\"hiker://search?rule=\" + MY_RULE.title + \"&s=\"+pdfh(i,'a&&Text')\n        });\n    });\n    \n}catch(e){\n    log(e.toString())\n}\n\n\n\ntry {\n    let data =  pdfa(html,'body&&.newlist&&ul&&a');\n    \n    d.push({\n        title: \"<strong>🎈最新更新字幕：</strong>\",\n        col_type: \"rich_text\",\n    });\n   data.forEach(i => {\n        d.push({\n            title: pdfh(i,'a&&Text'),\n            col_type: \"flex_button\",\n            url:\"hiker://search?rule=\" + MY_RULE.title + \"&s=\"+pdfh(i,'a&&Text')\n        });\n    });\n    \n}catch(e){\n    log(e.toString())\n}\n\n\n\n\n\n\n\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nhtml=getResCode();\n\n\n\nvar 列表 = pdfa(html,'.list&&.pl:not(.btnfan)');\n\n        \n\nfor (var i in 列表) {\n标题=pdfh(列表[i],'h3&&Text')\n图片=pdfh(列表[i],'img&&src')\n链接=pd(列表[i],'a&&href')\n描述=pdfh(列表[i],'.aliases&&Text')\n\nd.push({\ntitle:标题,\npic_url:图片,\nurl:链接,\ndesc:描述,\ncol_type: \"movie_3\"\n});\n\n}\n\n\nsetResult(d);","search_url":"https://www.ddzimu.com/download/xslist.php?key=**&p=fypage","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nhtml=getResCode();\n\nvar 列表 = pdfa(html,'.list&&.pl:has(a)');\n\nif(列表.length<1){\n\nd.push({\ntitle:\"没有字幕\",\ncol_type: \"text_center_1\"\n});\n\n}else\nfor (var i in 列表) {\n标题=pdfh(列表[i],'a&&Text')\n//图片=pdfh(列表[i],'')\n链接=pdfh(列表[i],'a&&href')\n描述=pdfh(列表[i],'span&&Text')\n\nd.push({\ntitle:标题,\n//pic_url:图片,\nurl:\"download://\"+链接,\ndesc:/\\.(srt|ssa|ass|sub)$/m.test(标题)?\"✅无需解压\":\"需要解压\",\ncol_type: \"text_1\"\n});\n\n}\n\n\n\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://ae01.alicdn.com/kf/Ha1f9980880f34d488e93ef8d87bd01f6O.png"},{"last_chapter_rule":"","title":"奇妙搜索","author":"小棉袄🌞","version":8,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"http://www.magicalsearch.cn/main\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.startsWith(origin) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Pan搜","author":"","version":16,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://pansearch.long2ice.io/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\", \\n                \\\"pansearch.\\\",               \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\"google\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"YYeTs","author":"小棉袄🌞","version":1,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet ite = $.toString((rule) => {\n    function check() {\n        let nodes = document.querySelectorAll(\".list .more .btn\");\n        let list = [];\n        for (let node of nodes) {\n            if (node.innerText.includes('磁力')) {\n                let mag = node.getAttribute(\"data-address\")\n                if (mag && node.getAttribute(\"hiker\") == null) {\n                    console.log(mag);\n                    node.setAttribute(\"hiker\", \"ok\");\n                    list.push(node);\n                }\n            }\n        }\n        if (list.length != 0) {\n            let mag = list[0].getAttribute(\"data-address\");\n            console.log(mag);\n            fy_bridge_app.parseLazyRuleAsync($$$().lazyRule((mag) => {\n                confirm({\n                    title: \"温馨提示\",\n                    content: \"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮即可复制地址\",\n                    confirm: $.toString((mag) => {\n                        return mag;\n                    }, mag),\n                    cancel: $.toString((mag) => {\n                        return \"copy://\" + mag\n                    }, mag)\n                })\n            }, mag), $$$.toString(() => {\n\n            }));\n            setTimeout(check, 1000);\n            return\n        }\n        setTimeout(check, 300);\n    }\n    check();\n}, MY_RULE.title);\nd.push({\n    title: \"\",\n    url: \"https://m.yysub.net\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        js: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蓝奏云盘🐑","author":"🐑","version":10,"type":"other","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\neval(JSON.parse(request('hiker://page/classicHeader')).rule)\neval(JSON.parse(request('hiker://page/yemian')).rule)","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&.result&&.lanzou-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.lanzou-item-right-title&&Text'),\n        desc: pdfh(list[j], '.text-muted&&Text'),\n        content: pdfh(list[j], '.text-muted,1&&Text'),\n        url: $(pd(list[j], 'a&&href')).rule(() => {\n            var d = [];\n            eval(JSON.parse(request('hiker://page/lazy')).rule)\n            var html = getResCode();\n            var list = pdfa(html, 'body&&.url_adreess');\n            d.push({\n                title: \"<small>搜索内容来自蓝廋网页版。\\n若打不开链接或者提示分享已取消，请尝试其他的地址</small>\"\n            })\n\n            for (var j = 1; j < list.length; j++) {\n                var URL = pd(list[j], 'a&&href')\n                if (URL.indexOf(\"com/tp/\") == -1) {\n                    var URL = URL.replace(\"com/\", \"com/tp/\")\n                }\n\n                d.push({\n                    title: \"🔗  地址\" + j,          \n                    url: URL + lazy,\n                    col_type: \"text_1\",\n                })\n            }\n            setResult(d)\n        })\n    });\n}\nsetResult(d)","search_url":"https://www.6yit.com/disk-search?keyword=**","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"rich_text","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"shuju\",\"rule\":\"var tabs = {\\n    \\\"data\\\": [\\n/////////软件///////\\n        {\\n            \\\"group\\\": \\\"软件\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"海阔视界\\\",\\n                    \\\"url\\\": \\\"https://haikuo.lanzoux.com/u/GoldRiver\\\",\\n                    \\\"pwd\\\": \\\"\\\"//要有密码填pwd这\\n                },\\n                {\\n                    \\\"name\\\": \\\"yoyodadada\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoux.com/u/yoyodadada\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"无作为分享\\\",\\n                    \\\"url\\\": \\\"https://www.lanzoux.com/u/wuzuowei\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"德玛西亚统领\\\",\\n                    \\\"url\\\": \\\"https://dema666.lanzoui.com/b0e7y6p5c \\\",\\n                    \\\"pwd\\\": \\\"6666\\\"\\n                },{\\n                    \\\"name\\\": \\\"ADGUARD\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzouo.com/b0f19420h\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"MX player\\\",\\n                    \\\"url\\\": \\\"https://423down.lanzouq.com/b0f19eo3c\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"DieHeart.\\\",\\n                    \\\"url\\\": \\\"https://www.lanzouv.com/b05f9wyf\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }\\n            ]\\n        },\\n/////////游戏///////\\n        {\\n            \\\"group\\\": \\\"游戏\\\",\\n            \\\"options\\\": [\\n                {\\n                    \\\"name\\\": \\\"PJ安卓游戏\\\",\\n                    \\\"url\\\": \\\"https://pan.lanzou.com/b888887\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }\\n\\n            ]\\n        },\\n/////////阅读///////\\n        {\\n            \\\"group\\\": \\\"阅读\\\",\\n            \\\"options\\\": [{\\n                    \\\"name\\\": \\\"阅读3.0测试版\\\",\\n                    \\\"url\\\": \\\"https://kunfei.lanzouq.com/b0f810h4b\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n                {\\n                    \\\"name\\\": \\\"阅读3.0乌云替换净化\\\",\\n                    \\\"url\\\": \\\"https://wwi.lanzouq.com/b0bw8jwoh\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                },\\n               {\\n                    \\\"name\\\": \\\"阅读3.0破冰书源合集\\\",\\n                    \\\"url\\\": \\\"https://pobing.lanzouq.com/b0cxk0w8b\\\",\\n                    \\\"pwd\\\": \\\"59bV\\\"\\n                 },\\n            ]\\n        },\\n /////////kiwi///////\\n        {\\n            \\\"group\\\": \\\"kiwi\\\",\\n            \\\"options\\\": [\\n                {\\n                    \\\"name\\\": \\\"kiwi①\\\",\\n                    \\\"url\\\": \\\"https://canny.lanzoui.com/b015k5haj\\\",\\n                    \\\"pwd\\\": \\\"1234\\\"\\n                }, {\\n                    \\\"name\\\": \\\"kiwi\\\",\\n                    \\\"url\\\": \\\"https://coje-he.lanzouw.com/b00zdwqqd\\\",\\n                    \\\"pwd\\\": \\\"\\\"\\n                }\\n            ]\\n        }\\n////////////////\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"获取头部\",\"path\":\"classicHeader\",\"rule\":\"var d = []\\nif (MY_PAGE == '1') {\\n    eval(JSON.parse(request('hiker://page/ss')).rule)\\n}\\neval(JSON.parse(request('hiker://page/shuju')).rule)\\n\\nvar lists = tabs.data\\nfunction setTabs(lists, vari) {\\n    for (var i = 0; i < lists.length; i++) {\\n        d.push({\\n            title: getMyVar(vari, '0') == i ? '““' + '⏳ ' + lists[i].group + '””' : lists[i].group,\\n            url: $(\\\"hiker://empty\\\").lazyRule((vari, i) => {\\n                putMyVar(vari, i);\\n                putMyVar(\\\"tabsurl\\\", i);\\n                putMyVar('shsort', '1')\\n                putMyVar('sh', i)\\n                putMyVar(\\\"varil\\\", \\\"0\\\");\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, vari, i),\\n            col_type: 'scroll_button',\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    if (lists.length != '') {\\n        var list = lists[index].options;\\n        for (var j = 0; j < list.length; j++) {\\n            var titile = list[j].name\\n            var listsurl = list[j].url\\n            var listspwd = list[j].pwd\\n            d.push({\\n                title: getMyVar(\\\"varil\\\", '0') == j ? '““' + '⏳ ' + titile + '””' : titile,\\n                url: $(\\\"#noLoading#\\\").lazyRule((listsurl, listspwd, j) => {\\n                    putMyVar('shsort', '0')\\n                    putMyVar(\\\"varil\\\", j);\\n                    putMyVar(\\\"listsurl\\\", listsurl);\\n                    putMyVar(\\\"listspwd\\\", listspwd);\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, listsurl, listspwd, j),\\n                // col_type: 'scroll_button',\\n                col_type: 'flex_button',\\n            });\\n        }\\n    }\\n}\\n\\nif (MY_PAGE == '1') {\\n    setTabs(lists, MY_URL);\\n    d.push({\\n        col_type: 'line'\\n    })\\n    setLists(lists, getMyVar(MY_URL, '0'));\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\n\\n//URL\\nif (getMyVar('shsort') == \\\"1\\\") {\\n    var URL = lists[getMyVar('sh', \\\"0\\\")].options[0].url\\n    var pwd = lists[getMyVar('sh', \\\"0\\\")].options[0].pwd\\n} else {\\n    var URL = getMyVar(\\\"listsurl\\\", lists[0].options[0].url)\\n    var pwd = getMyVar(\\\"listspwd\\\", lists[0].options[0].pwd);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"cookie\",\"path\":\"cookie\",\"rule\":\"function getJson(url, pwd, trurl) {\\n    let html = request(url);\\n    try {\\n        var ico = html.match(/background:url\\\\((.*?)'/)[1];\\n    } catch (e) {}\\n    putMyVar(\\\"ico\\\", ico);\\n    putMyVar(\\\"html\\\", html);\\n    eval(html.match(/var pgs;([\\\\s\\\\S]*?pgs.+;)/)[1]);\\n    eval('var body =' + html.match(/data :([\\\\s\\\\S]*?\\\\})/)[1]);\\n    return JSON.parse(post(trurl + '/filemoreajax.php', {\\n        body: body\\n    })).text;\\n}\\nvar trurl = URL.match(/http.*?com/);\\nvar list = getJson(URL, pwd, trurl);\\n\\n//感谢墙佬代码\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"ss\",\"rule\":\"d.push({\\n    url: $.toString(() => {\\n      if (input.trim()) {\\n         if (/http|https/.test(input)) {\\n            var link = 'hiker://empty##fypage$$$' + input;\\n            return $(link).rule(() => {\\n                var d = []\\n                //var ssurl = MY_URL.split(\\\"$$$\\\")[1].match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n\\t\\t\\t\\tvar ssurl = MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n                var sspwd = MY_URL.split(\\\"密码:\\\")[1]\\n                putMyVar(\\\"listsurl\\\", ssurl);\\n                putMyVar(\\\"listspwd\\\", sspwd);\\n                var URL = getMyVar(\\\"listsurl\\\", \\\"\\\");\\n                var pwd = getMyVar(\\\"listspwd\\\", \\\"\\\");\\n                eval(JSON.parse(request('hiker://page/yemian')).rule)\\n            })\\n        }else{\\n       return \\\"hiker://search?rule=\\\" + MY_RULE.title + \\\"&s=\\\"+input\\n        \\n        }\\n        }\\n         else {\\n            return 'toast://请输入网盘链接';\\n        }\\n    }),\\n    title: '进入',\\n    desc: \\\"支持输入云盘分享链接\\\",\\n    col_type: \\\"input\\\"\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    try {\\n        var html = request(input);\\n        // log(input)\\n        var url = 'https://developer.lanzoug.com/file/' + html.match(/'(\\\\?.*?)'/)[1]\\n        // log(url)\\n        var jsurl = request(url, {\\n            redirect: false,\\n            withHeaders: true\\n        })\\n        log(jsurl);\\n        jsurl = JSON.parse(jsurl).headers.location[0]\\n        return \\\"download://\\\" + jsurl //1、建议使用第三方下载器\\n        // return jsurl   //2、建议内置下载器使用\\n    } catch (e) {\\n        log(\\\"转跳原站\\\")\\n        log(input)\\n        return input\\n    }\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"网盘\",\"path\":\"yemian\",\"rule\":\"setPageTitle('网盘')\\neval(JSON.parse(request('hiker://page/lazy')).rule)\\n\\n\\n\\ntry {\\n    eval(JSON.parse(request('hiker://page/cookie')).rule)\\n    if (MY_PAGE == '1') {\\n        try {\\n            var wlist = parseDomForArray(getMyVar(\\\"html\\\"), '#folder&&a');\\n            for (var j in wlist) {\\n                var url = 'hiker://empty#fypage$$$' + trurl + wlist[j].match(/href=\\\"(.*?)\\\"/)[1];\\n                d.push({\\n                    img: 'https://lanmeiguojiang.com/tubiao/more/37.png',\\n                    title: parseDomForHtml(wlist[j], '.filename&&Text').replace(/公众号.+/g, \\\"\\\"),\\n                    col_type: \\\"avatar\\\",\\n                    url: $(url).rule(() => {\\n                        //log(MY_URL)\\n                        var d = []\\n                        var ssurl = MY_URL.split(\\\"$$$\\\")[1].match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n                        var sspwd = MY_URL.split(\\\"密码:\\\")[1]\\n                        putMyVar(\\\"listsurl\\\", ssurl);\\n                        putMyVar(\\\"listspwd\\\", sspwd);\\n                        var URL = getMyVar(\\\"listsurl\\\", \\\"\\\");\\n                        var pwd = getMyVar(\\\"listspwd\\\", \\\"\\\");\\n                        eval(JSON.parse(request('hiker://page/yemian')).rule)\\n                    }),\\n                });\\n                d.push({\\n                    col_type: 'line'\\n                })\\n            }\\n        } catch (e) {}\\n        try {\\n            //if (URL == lists[0].options[0].url) {\\n            if (/haikuo/.test(URL)) {\\n                d.push({\\n                    title: \\\"<center>\\\" + '<span style=\\\"color: #FF4500\\\">公众号：新方圆小棉袄！<small>(点击复制)</small></span></center>',\\n                    url: 'copy://新方圆小棉袄.js:\\\"toast://已复制，请到微信关注小棉袄公众号\\\"',\\n                    col_type: \\\"avatar\\\",\\n                    img: \\\"http://pic.downcc.com/upload/2021-4/2021481415301369.png\\\"\\n                })\\n                d.push({\\n                    title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #FF4500\\\">重要更新内容见公众号：新方圆小棉袄！\\\\n别忘了点赞、在看、投币三连！</span></small></center>',\\n                    url: 'https://mp.weixin.qq.com/s/ukMZ4D6eRm-OCAR1G8PaoQ',\\n                    col_type: 'text_center_1'\\n                });\\n                for (var j = 0; j < 5; j++) {\\n                    d.push({\\n                        col_type: 'line'\\n                    })\\n                }\\n            }\\n        } catch (e) {}\\n    }\\n\\n\\n    for (var i in list) {\\n        if (list[i].id != undefined) {\\n            var url = trurl + '/tp/' + list[i].id\\n            if (list[i].ico != undefined) {\\n                var ico = getMyVar(\\\"ico\\\") + list[i].ico\\n            } else {\\n                var ico = \\\"https://lanmeiguojiang.com/tubiao/messy/71.svg\\\"\\n            }\\n            d.push({\\n                title: list[i].name_all,\\n                img: ico,\\n                url: url + lazy,\\n                col_type: \\\"avatar\\\",\\n            });\\n            d.push({\\n                title: list[i].time,\\n                //url:\\\"toast://发布于\\\"+list[i].time, \\n                url: url + lazy,\\n                //col_type: \\\"text_1\\\",\\n                col_type: \\\"avatar\\\",\\n                pic_url: \\\"#ffffff\\\"\\n\\n            });\\n            d.push({\\n                col_type: 'line'\\n            })\\n        }\\n    }\\n    if (list == \\\"no file\\\") {\\n        d.push({\\n            title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #999999\\\">～～～我是有底线的～～～</span></small></center>',\\n            url: 'toast://别点了，我真的有底线！',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n\\n    if (list == \\\"\\\") {\\n        d.push({\\n            title: \\\"““””<center>\\\" + '<span style=\\\"color: #FF4500\\\">没有获取到数据。！<small>(点击进原网页)</small></span></center>',\\n            //title: \\\"““””<center><small>\\\" + '<span style=\\\"color: #999999\\\">没有获取到数据。（点击进原网页）</span></small></center>',\\n            url: URL,\\n            col_type: 'text_center_1'\\n        });\\n\\n    }\\n} catch (e) {\\n    if (/lanzou/.test(MY_URL)) {\\n        var da = MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n        if (da.indexOf(\\\"com/tp/\\\") == -1) {\\n            var da = da.replace(\\\"com/\\\", \\\"com/tp/\\\")\\n        }\\n        d.push({\\n            title: \\\"🔗 \\\" + da,\\n            url: da + lazy,\\n            col_type: \\\"text_1\\\",\\n        });\\n    } else {\\n        d.push({\\n            title: \\\"没有获取到云盘信息，请确认网盘链接是否正确！\\\",\\n            url: 'toast://真的没有获取到~~',\\n            col_type: 'text_center_1'\\n        });\\n        if (/http|https/.test(MY_URL)) {\\n            var url = MY_URL.match(/(http|ftp|https):\\\\/\\\\/[\\\\w\\\\-_]+(\\\\.[\\\\w\\\\-_]+)+([\\\\w\\\\-\\\\.,@?^=%&:/~\\\\+#]*[\\\\w\\\\-\\\\@?^=%&/~\\\\+#])?/)[0]\\n        } else {\\n            var url = 'toast://好像不是个链接！'\\n        }\\n        d.push({\\n            title: \\\"点击网页查看。你输入的地址：\\\\n\\\" + MY_URL.split(\\\"$$$\\\")[1],\\n            url: url,\\n            col_type: 'text_1'\\n        });\\n        clearMyVar(\\\"listsurl\\\");\\n        clearMyVar(\\\"listspwd\\\");\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://img1.ali213.net/shouyou/cover/8/10257735.jpg"},{"last_chapter_rule":"","title":"酷音乐","author":"","version":0,"type":"video","url":"hiker://empty##","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//随机图API地址，设置为空不显示图片\nlet pic = \"https://api.ixiaowai.cn/api/api.php\";\n//必应：https://api.isoyu.com/bing_images.php\n//美女：https://api.btstu.cn/sjbz/api.php\n//是否随机图，0固定，1随机（5分钟内固定）\nlet random = 1;\nlet data = {\n    \"搜歌词\": \"https://www.kugeci.com/\",\n    \"MyFreeMP3\": \"http://tool.liumingye.cn/music/?page=searchPage\",\n    \"MUSICNET\": \"http://musicnet.cc/\",\n    \"铜钟\": \"https://tonzhon.com/\",\n    \"一起听歌\": \"http://music.alang.run/#/\",\n    \"Listen 1\": \"https://listen1.github.io/listen1/\",\n    \"LX Music\": \"https://lxmusic.toside.cn/\"\n};\nlet cn = Object.keys(data);\nlet cu = Object.values(data);\nlet d = [];\nlet arr = [];\nif (pic) {\n    arr.push({\n        title: \"\",\n        url: pic,\n        col_type: \"card_pic_1\",\n        desc: \"0\",\n        pic_url: random ? (pic + \"#_t=\" + Math.ceil(new Date().getTime() / 300000)) : pic\n    });\n    arr.push({\n        col_type: \"big_blank_block\"\n    });\n}\nfor (let i = 0; i < cn.length; i++) {\n    arr.push({\n        title: cn[i],\n        url: cu[i].startsWith(\"web://\") ? cu[i] : \"hiker://page/web\",\n        col_type: \"text_2\",\n        extra: {\n            u: cu[i]\n        }\n    });\n}\nsetResult(arr);","searchFind":"","search_url":"","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"网页\",\"path\":\"web\",\"rule\":\"js:\\nvar d = [];\\nsetResult([{\\n    col_type: \\\"x5_webview_single\\\",\\n    url: MY_PARAMS.u,\\n    desc: \\\"float&&100%\\\",\\n    extra: {\\n        canBack: true,        \\n    }\\n}])\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"萌番组(番磁)","author":"香雅情","version":0,"type":"video","url":"https://bangumi.moe/api/torrent/page/fypage;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10；； BKL-AL20 Build/HUAWEIBKL-AL20；； wv)&&Referer@https://bangumi.moe}","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = JSON.parse(getResCode());\nvar list = html.torrents;\nfor (let i = 0; i < list.length; i++) {\n    d.push({\n        title: list[i].title + ' 大小：' + list[i].size,\n        url: list[i].magnet,\n        col_type: \"text_1\",\n        desc: list[i].publish_time\n    });\n\n}\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = JSON.parse(getResCode());\nvar list = html.torrents;\nfor (let i = 0; i < list.length; i++) {\n    d.push({\n        title: list[i].title + ' 大小：' + list[i].size,\n        url: list[i].magnet,\n        col_type: \"text_1\",\n        desc: list[i].publish_time\n    });\n\n}\n\n\nsetSearchResult(d);","search_url":"https://bangumi.moe/api/v2/torrent/search?JsonBody={\"query\":\"**\",\"p\":fypage};post;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10；； BKL-AL20 Build/HUAWEIBKL-AL20；； wv)&&Referer@https://bangumi.moe/search/title}","group":"①网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蚂蚁4K Ⓕ","author":"随风","version":0,"type":"video","url":"hiker://empty##https://mayi4k.com/vod/show/id/20/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getMyVar(MY_RULE.url)){\ntrue_url = true_url.replace(/\\.html/,'/page/' + page + '.html')}\nvar html = request(true_url)\n\nconst 大类 = 'body&&.scroll-box'\nconst 拼接小类 = ''\nconst 分类子 = 'body&&a:not(:matches(重置))'\nconst 大类名 = 'a&&Text'\nconst 大类链 = 'a&&href'\nconst 小类名 = 'a&&Text'\nconst 小类链 = 'a&&href'\n\nconst 列表 = '.module-items&&.module-item'\nconst 片名 = 'a&&title'\nconst 更新 = '.module-item-text&&Text'\nconst 图片 = '.lazy&&data-src'\nconst 链接 = 'a&&href'\n\nrequire('hiker://page/yi?rule=');","searchFind":"js:\nvar d = [];\nlet list = pdfa(getResCode(), 'body&&.module-search-item');\nfor (let j in list) {\n    d.push({\n        title: pdfh(list[j], '.video-serial&&title'),\n        desc: pdfh(list[j], '.video-serial&&Text'),\n        img: pd(list[j], '.lazy&&data-src')+\"@Referer=\",\n        content: pdfh(list[j], '.video-info-items,0&&Text') + '\\n' + pdfh(list[j], '.video-info-items,1&&Text'),\n        url: pd(list[j], 'a&&href').replace('vodplay','voddetail')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"/vod/search/page/fypage/wd/**.html","group":"①网盘","detail_col_type":"text_3","detail_find_rule":"js:\nrequire('hiker://page/er?rule=');\n\n/*eval(JSON.parse(fetch('hiker://page/er')).rule);*/","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"yi\",\"path\":\"yi\",\"rule\":\"js:\\nvar d = [];\\n\\nconst Color = \\\"#19B89D\\\";\\nconst empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类).concat(pdfa(html, 拼接小类))\\n    } catch (e) {\\n    var categories = pdfa(html, 大类)\\n    }\\n\\n/*\\nconst category = ['<a href=\\\\\\\"/vodshow/1-----------.html\\\\\\\" >电影</a> <a href=\\\\\\\"/vodshow/2-----------.html\\\\\\\" >电视剧</a> <a href=\\\\\\\"/vodshow/4-----------.html\\\\\\\" >动漫</a> <a href=\\\\\\\"/vodshow/3-----------.html\\\\\\\" >综艺</a>'];\\n\\nconst categories =category.concat(pdfa(html, '.ec-casc-list&&div'))*/\\n\\n\\nlet init_cate = []\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n    }\\n\\nconst fold = getMyVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json =\\ngetMyVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); 顺搜(d);\\n  d.push({\\n      title: fold === '1' ? '““””<b><span style=\\\"color: #910113\\\">v</span></b>' : '““””<b><span style=\\\"color: ' + Color + '\\\">＜</span></b>',\\n      url: $('#noLoading#').lazyRule((fold) => {\\n          putMyVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n          refreshPage(false);\\n          return \\\"hiker://empty\\\"\\n          }, fold),\\n          col_type: 'scroll_button',\\n          })\\n          \\n  categories.forEach((category, index) => {\\n      let sub_categories = pdfa(category, 分类子);\\n      if (index === 0) {\\n          sub_categories.forEach((item, key) => {\\n      let title = pdfh(item, 大类名)\\n      d.push({\\n          title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + Color + '\\\">' + title + '</span></b>' : title,\\n          url: $(pd(item, 大类链) + '#noLoading#').lazyRule((params) => {\\n          let new_cate = []\\n          params.cate_temp.forEach((cate, index) => {\\n          new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n          })\\n          \\n          putMyVar(MY_RULE.title, JSON.stringify(new_cate))\\n          putMyVar(MY_RULE.url, input)\\n          refreshPage(true)\\n          return \\\"hiker://empty\\\"\\n          }, {\\n          cate_temp: cate_temp,\\n          key: key,\\n          page: page,\\n          }),\\n          col_type: 'scroll_button',\\n          })\\n          })\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n        });\\n        } else \\n        if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n        let title = pdfh(item, 小类名)\\n    d.push({\\n        title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + Color + '\\\">' + title + '</span></b>' : title,\\n        url: $(pd(item, 小类链) + '#noLoading#').lazyRule((params) => {\\n            params.cate_temp[params.index] = params.key.toString()\\n            \\n        putMyVar(MY_RULE.title, JSON.stringify(params.cate_temp))        \\n        putMyVar(MY_RULE.url, input)\\n        refreshPage(true)\\n        return \\\"hiker://empty\\\"\\n        }, {\\n        cate_temp: cate_temp,\\n        index: index,\\n        key: key,\\n        page: page,\\n        }),\\n        col_type: 'scroll_button',\\n        })\\n        })\\n  d.push({\\n      col_type: \\\"blank_block\\\"\\n      });\\n     }\\n    })\\n   }\\n\\nrequire('hiker://page/lazy?rule=')\\n    let list = pdfa(html, 列表);\\n    for (let j in list) {\\n\\n        let durl = pd(list[j], 链接);\\n    if (durl.match(/live|viv/)) {\\n        var pm = pdfh(list[j], '.cor4&&Text').replace(/up主：/, '')\\n        var gx = pdfh(list[j], '.list-tag&&Text')\\n        var url = durl + lazy3\\n        } else {\\n        var pm = pdfh(list[j], 片名)\\n        var gx = pdfh(list[j], 更新)\\n        var url = durl.replace('vodplay','voddetail') + '#immersiveTheme#'\\n        }\\n\\n  try {\\n    d.push({\\n        title: pm,\\n        desc: gx,\\n        img: pd(list[j], 图片)+ '@Referer=',\\n        url: url,\\n        col_type: 'movie_3_marquee'});\\n        }catch (e) {}\\n     }\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"er磁力\",\"path\":\"er\",\"rule\":\"js:\\nvar d = [];\\n\\nlet 列表 = 'body&&.sort-list'\\nlet 子列表 = '.module-row-one&&.module-row-info'\\nlet 选集名 = '.module-row-title&&Text'\\nlet 选集链 = '.btn-pc&&href'\\n\\nlet 片名 = 'h1&&Text'\\nlet 类型 = '.video-info-aux&&Text'\\nlet 导演 = '.video-info-items,0&&Text'\\nlet 主演 = '.video-info-items,1&&Text'\\nlet 更新 = '.video-info-items,2&&Text'\\nlet 状态 = '.video-info-items,2&&Text'\\nlet 图片 = '.lazyload&&data-src'\\nlet 简介 = '.vod_content&&Text'\\n\\nlet 推荐列表 = '.module-items&&.module-item'\\nlet 推荐名 = 'a&&title'\\nlet 推荐更 = '.module-item-text&&Text'\\nlet 推荐图 = '.lazy&&data-src'\\nlet 推荐链 = 'a&&href'\\n\\n\\n\\nlet html = getResCode();\\nlet Color = \\\"#f13b66a\\\";\\nlet Color1 = \\\"#098AC1\\\";\\nlet Color2 = \\\"#19B89D\\\";\\nlet Colorbs = function() {\\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \\n};\\n\\ntry {\\n    let conts = pdfa(html, 列表);\\n    var lists = [];\\n    for (let i in conts) {\\n        lists.push(pdfa(conts[i], 子列表))\\n    }\\n} catch (e) {};\\n\\ntry {\\n    var 名 = pdfh(html, 片名).replace(/电影|电视剧|纪录片|动漫|B站/g, '')\\n    var 类 = '类型：' + pdfh(html, 类型).replace(/\\\\/|分类：|电影|连续剧|动漫|类型：/g, '')\\n    var 导 = '导演：' + pdfh(html, 导演).replace(/\\\\/|导演：/g, ' ')\\n    var 主 = '主演：' + pdfh(html, 主演).replace(/\\\\/|主演：|演员：/g, ' ')\\n    var 更 = '更新：' + pdfh(html, 更新).replace(/\\\\/|更新：|更新:|状态：|状态:/g, ' ')\\n    var 状 = '状态：' + pdfh(html, 状态).replace(/\\\\/|状态：|状态:|更新：|更新:/g, ' ')\\n    var 图 = pd(html, 图片)\\n    var 介 = pdfh(html, 简介).replace(/　|展开|收起|详情：|[收起部分]|概要 :|©豆瓣/g, '')\\n} catch (e) {};\\n\\nlet titles = 导.substring(0, 16) + '\\\\n' + 主.substring(0, 16) + '\\\\n' + 更.substring(0, 16);\\nlet descs = '片名：' + 名 + '\\\\n' + 类 + '\\\\n' + '\\\\n' + 导 + '\\\\n' + 主 + '\\\\n' + '\\\\n' + 更 + '\\\\n' + 状 + '\\\\n' + '\\\\n' + '剧情简介：' + '\\\\n' + 介;\\n\\nd.push({\\n    title: '‘‘’’<b><font color=\\\"#b0e0e6\\\">' + titles + '</font></b>',\\n    desc: '‘‘’’<b><b><font color=\\\"#708090\\\">简介：</b>' + '<font color=\\\"#778899\\\">' + 介.substr(0, 40) + '...</font><small><font color=\\\"#996666\\\">查看详情</font></font></small></b>',\\n    pic_url: 图,\\n    url: $().rule((text) => {\\n        setResult([{\\n            title: text,\\n            col_type: 'long_text',\\n        }])\\n    }, descs),\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\nfor (let i = 0; i < 8; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\n\\nif (getMyVar('zf', 'f') == 'f') {\\n    var sx = '‘‘’’<font color=\\\"#33ccff\\\">排序</font>' + '<font color=\\\"#33ccff\\\">↡</font>' + '<font color=\\\"#ff4c00\\\">↟</font>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#33ccff\\\">排序</font>' + '<font color=\\\"#ff4c00\\\">↡</font>' + '<font color=\\\"#33ccff\\\">↟</font>';\\n}\\n\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color2 + '\\\">磁力链接' + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t共 ' + lists[index].length + ' 条' +\\n            \\\"</font></small>\\\" + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + sx,\\n        url: $('#noLoading#').lazyRule(() => {\\n            if (getMyVar('zf', 'f') == 'z') {\\n                putMyVar('zf', 'f');\\n            } else {\\n                putMyVar('zf', 'z');\\n            }\\n            refreshPage(true);\\n            return '#noHistory#hiker://empty'\\n        }),\\n        col_type: 'text_center_1'\\n    })\\n\\n    if (getMyVar('zf', 'f') == 'f') {\\n        var list = lists[index].reverse();\\n    } else {\\n        var list = lists[index];\\n    };\\n\\n    try {\\n        for (let j = 0; j < list.length; j++) {\\n            let jm = pdfh(list[j], 选集名).replace(/magnet.*/g, '');\\n            let urll = pdfh(list[j], 选集链);\\n            if (urll.match(/ed2k|Better/)) {\\n                var url = \\\"download://\\\" + urll\\n            } else {\\n                var url = urll.replace(/.*\\\\]|.*】|.*盘\\\\：|.*接：|提取码.*/g, '');\\n            }\\n            d.push({\\n                title: jm,\\n                url: url,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    id: url,\\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\\n                    jsLoadingInject: true\\n                }\\n            });\\n        }\\n    } catch (e) {\\n        d.push({\\n            title: '暂无片源',\\n            url: MY_URL,\\n            col_type: 'text_center_1'\\n        });\\n    }\\n};\\n\\nsetLists(lists, getMyVar(MY_URL, '0'));\\n\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\n\\nif (getMyVar('yn', 'no') == 'no') {\\n    var kg = '‘‘’’<font color=\\\"#33cccc\\\">相关影视推荐 ▴</font>';\\n} else {\\n    var kg = '‘‘’’<font color=\\\"#33cccc\\\">相关影视推荐 ▾</font>';\\n}\\n\\nd.push({\\n    title: kg,\\n    url: $('#noLoading#').lazyRule(() => {\\n        if (getMyVar('yn', 'no') == 'yes') {\\n            putMyVar('yn', 'no');\\n        } else {\\n            putMyVar('yn', 'yes');\\n        }\\n        refreshPage(true);\\n        return '#noHistory#hiker://empty'\\n    }),\\n    col_type: 'text_1'\\n})\\n\\nif (getMyVar('yn', 'no') == 'no') {\\n    d.push({\\n        title: '““””<small><font color=#20b2aa>数据资源收集于网络，海阔不提供任何资源！</font></small>',\\n        desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除，请勿传播！</font></small>',\\n        url: MY_URL,\\n        col_type: 'text_center_1'\\n    });\\n} else {\\n    var tui = pdfa(html, 推荐列表);\\n}\\n\\nfor (let i in tui) {\\n    try {\\n        d.push({\\n            title: pdfh(tui[i], 推荐名),\\n            desc: pdfh(tui[i], 推荐更),\\n            pic_url: pd(tui[i], 推荐图) + \\\"@Referer=\\\",\\n            url: $(pd(tui[i], 推荐链) + \\\"#immersiveTheme#\\\").rule(() => {\\n                require('hiker://page/er?rule=');\\n            }),\\n            col_type: 'movie_3_marquee'\\n        });\\n    } catch (e) {};\\n};\\n\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\n\\nlet conts = pdfa(html, 列表)[0];\\nlet list = pdfa(conts, 子列表);\\nlet title = pdfh(list[list.length - 1], 选集名);\\n\\nsetLastChapterRule('js:' + $.toString((title) => {\\n    setResult('更新：' + title);\\n}, title));\\n\\nsetResult(d);\\n\\n//by随风整合\\n//二级模板\"}]","proxy":"","icon":"https://mayi4k.com/upload/mxcms/20211230-1/7282c4e22bf7f378bdfd430aac30921a.png"},{"firstHeader":"class","last_chapter_rule":"","title":"IMAX影视","author":"道长","version":1,"type":"video","url":"hiker://empty##https://imaxw.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"①视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=IMAX影视"},{"last_chapter_rule":"","title":"AI搜书","author":"","version":48,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"float&&100%\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        canBack: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {       \\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }       \\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `🔥知搜🔥@https://zhiso.top/search/?q=**&recommend=None&filetype=None&page=2\\n🔥YouGit🔥@https://yougit.net/search/?q=**&Time_Name=None&CloudDrive_Name=None&FileType_Name=None&page=2\\n🔥淘客链🔥@https://www.toplinks.cc/s/?keyword=**\\n🔥搜书网🔥@https://www.soushu.vip/?operate-search-_E8_A5_BF_E6_B8_B8_E8_AE_B0-1.html\\n🔥FreeMbook🔥@https://freembook.com/\\n🔥v4搜索🔥@https://node2.v4.zhelper.net/search/**/\\n🔥Library Genesis①🔥@https://libgen.gs/index.php?req=**&columns[]=t&columns[]=a&columns[]=s&columns[]=y&columns[]=p&columns[]=i&objects[]=f&objects[]=e&objects[]=s&objects[]=a&objects[]=p&objects[]=w&topics[]=l&topics[]=c&topics[]=f&topics[]=a&topics[]=m&topics[]=r&topics[]=s&res=25&filesuns=all\\n🔥Library Genesis②🔥@https://libgen.rocks/index.php?req=**&columns[]=t&columns[]=a&columns[]=s&columns[]=y&columns[]=p&columns[]=i&objects[]=f&objects[]=e&objects[]=s&objects[]=a&objects[]=p&objects[]=w&topics[]=l&topics[]=c&topics[]=f&topics[]=a&topics[]=m&topics[]=r&topics[]=s&res=25&filesuns=all\\n🔥去中心化🔥@https://ebook2.lorefree.com/site/index?s=**\\n🔥鸠摩搜书🔥@https://www.jiumodiary.com/\\n🔥TheFuture🔥@https://bks.thefuture.top/result.php?q=**&from=fromsearchbox\\n🔥每日书单🔥@https://www.shudan.vip/search.php?keyword=**\\n🔥阅读链🔥（好像无用了）@https://cloud.yuedu.pro/#/searchResult\\n🔥偶书🔥（需要注册登录）@https://obook.cc/index.php?app=search&ac=s&kw=**\\n🔥知识库🔥@https://www.zhishikoo.com/?s=**\\n🔥三秋书屋🔥@https://www.sanqiu.mobi/?s=**\\n🔥风陵渡书屋🔥（需关注公众号）@http://www.eybook.com/index.php?s=book&c=search&keyword=**\\n🔥书乐里🔥@https://www.sulery.com/?s=**&submit=**\\n🔥爱悦读🔥@https://www.iyd.wang/?s=**\\n🔥Epubooks🔥@https://www.epubooks.top/search?q=**&m=1\\n🔥书单🔥@https://ebooklist.mobi/?s=**\\n🔥多读🔥@http://www.duodu.cc/plus/search.php?pagesize=20&q=**\\n🔥rejoice🔥@http://www.rejoiceblog.com/article/search/page/1/?type=&keyword=**\\n🔥读书小站🔥@https://ibooks.org.cn/?s=**\\n🔥雅书🔥@https://yabook.blog/e/search/result/?searchid=63\\n🔥书行天下🔥@https://www.sxpdf.com/?s=**\\n🔥书行万里🔥@https://www.gpdf.net/?s=**\\n🔥书堆阅读🔥@https://www.werebook.com/?s=**&submit=**\\n🔥资源书吧🔥@http://www.nziyuan.com/e/search/result/?searchid=224\\n🔥全索引🔥@http://www.ctfile.cn/?s=**\\n🔥敏学网🔥@http://www.minxue.net/batch.search.php\\n🔥古丽电子书🔥@https://www.guligirl.com/?s=**\\n🔥书舟搜索🔥@https://www.shuzhou.cc/?s=**\\n🔥书星网🔥@http://search.shuxing.cc/search.php?word=**&Submit=**&searchby=book\\n🔥owook🔥@https://www.owlook.com.cn/search?wd=**\\n🔥拨云搜书🔥@https://www.boyunso.com/search/?kw=**\\n🔥查书网🔥@http://www.chashu.cc/XiaoShuo/search.aspx\\n🔥云搜小说🔥@http://www.woyaoso.cn/index/index/search.html?name=**\\n🔥精校全本🔥@https://noveless.com/?s=**\\n🔥黑图网🔥@https://www.hts886.com/e/search/result/?searchid=13\\n🔥搬书匠🔥@http://www.banshujiang.cn/e_books/search/page/1?searchWords=**\\n🔥苦瓜书盘🔥@https://kgbook.com/e/search/index.php\\n🔥SoBooks🔥@https://sobooks.net/search/**\\n🔥书荒网🔥@https://www.15huang.com/e/search/result/?searchid=199629\\n🔥西边云🔥@http://www.xibianyun.com/book/search?kw=**\\n🔥顶点小说🔥@https://m.230book.net/s.php\\n🔥八一中文🔥@http://m.zwduxs.com/s.php\\n🔥电子书搜索🔥（只能点击进去用）@https://www.giffox.com\\n🔥小鲸鱼搜书🔥（只能点击进去用）@http://www.9871.org/?ref=adzhp.vip\\n🔥资源帝🔥（只能点进去用）@http://shu.ziyuandi.cn/\\n🔥熊猫搜书🔥（只能点进去用）@https://xmsoushu.com/#`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.toLowerCase().includes(key);\\n    }\\n    key = key.toLowerCase();\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hikchapter();","title":"香情影视","author":"香雅情","version":7,"type":"all","url":"hiker://files/rules/xyq/hikermovie.json","col_type":"icon_4_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hikhmrule();","searchFind":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hiksearch();","search_url":"hiker://empty$$$hiker://files/rules/xyq/hikermovie.json$$$**$$$fypage$$$","titleColor":"#fff20c00","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hikhmerj();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/rules/xyq/hikermovie.js'));hikseaerji();","ua":"mobile","preRule":"//设置更新间隔时间,单位为整数天。\nvar uptime = 2;\n\nfunction uprulefile() {\n    var rulejs = fetch('https://code.aliyun.com/lzk23559/CloudRule/raw/master/hikermovie.js', {});\n    if (rulejs.search(/lazyRule/) == -1) {\n        rulejs = fetch('https://codeberg.org/lzk23559/cloudrule/raw/branch/master/hikermovie.js', {});\n    }\n    if (rulejs.search(/lazyRule/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/hikermovie.js\", rulejs);\n    }\n    var rulejson = fetch('https://code.aliyun.com/lzk23559/CloudRule/raw/master/hikermovie.json', {});\n    if (rulejson.search(/\\\"vodhref\\\"/) == -1) {\n        rulejson = fetch('https://codeberg.org/lzk23559/cloudrule/raw/branch/master/hikermovie.json', {});\n    }\n    if (rulejson.search(/\\\"vodhref\\\"/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/hikermovie.json\", rulejson);\n    }\n    if (rulejs.search(/lazyRule/) != -1 && rulejson.search(/\\\"vodhref\\\"/) != -1) {\n        writeFile(\"hiker://files/rules/xyq/hikerupdate.txt\", new Date() + '');\n        confirm({title:'提示', content:'自动更新完成'});\n    } else {\n        confirm({title:'提示', content:'自动更新失败'});\n    }\n}\n\n\n\n//检测是否有写入时间与规则的js插件文件\nif (fileExist(\"hiker://files/rules/xyq/hikerupdate.txt\") && fileExist(\"hiker://files/rules/xyq/hikermovie.js\") && fileExist(\"hiker://files/rules/xyq/hikermovie.json\")) {\n    //计算时间间隔\n    var start = new Date(fetch(\"hiker://files/rules/xyq/hikerupdate.txt\", {}));\n    var nowt = new Date();\n    var D_T = nowt.getTime() - start.getTime();\n    var D_D = D_T / (1000 * 3600 * 24);\n    var tdif = parseInt(D_D) + '';\n    //log(tdif);\n    //默认间隔超过设置天数就取一次云端文件\n    if (tdif >= uptime || tdif < 0) {\n        uprulefile();\n    }\n} else {\n    //如果少一个文件就自动取云端文件\n    uprulefile();\n}\n\n\n\n//执行需要预处理的站点\nvar lac = fetch('hiker://files/rules/xyq/hikermovie.js');\n//log(lac.length);\nif (lac.search(/lazyRule/) != -1) {\n    eval(lac);\n    hikerpre();\n} else {\n    //如果本地文件不对将尝试自修复\n    uprulefile();\n    setError('规则修复完成，如有问题请反馈。')\n}","pages":"[]","proxy":"","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png"},{"last_chapter_rule":"","title":"聚漫🔮","author":"小棉袄🌞&永远の明日&团子&Hi&梦海&菜鸡&dy2020","version":221116107,"type":"all","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = {\n        'all': '优质',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '另类',\n        'news': '无搜索',\n        'tool': '可下载',\n        'other': '抽风'\n    }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar',\n        extra: {\n            version: MY_RULE.version\n        }\n    }, {\n        desc: '0',\n        url: 'hiker://page/Main.view?rule=本地资源管理',\n        img: 'hiker://images/home_pic4',\n        col_type: 'card_pic_1'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是聚漫的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push({\n    img: 'https://lanmeiguojiang.com/tubiao/ke/1.png',\n    title: '收藏',\n    url: \"hiker://collection?group=聚漫🔮\",\n    col_type: \"icon_2\"\n}, {\n    img: 'https://lanmeiguojiang.com/tubiao/ke/137.png',\n    title: '历史',\n    url: \"hiker://history\",\n    col_type: \"icon_2\"\n})\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\n\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\nif (getItem(\"read_policy\") !== \"1\") {\n    el.push({\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\n        url: $('#noHistory#').lazyRule(() => {\n            setItem(\"read_policy\", \"1\")\n            refreshPage(false)\n            return \"toast://你已同意该协议\"\n        }),\n        col_type: 'text_center_1'\n    })\n}\n\nif (getItem(\"data\") !== \"1\") {\n    url = getMyVar('remoteUrl')\n    el.push({\n        title: '““””<small><font color=#871f78>点击获取漫画源</font></small>',\n        url: $('#noHistory#').lazyRule((url) => {\n            setItem(\"data\", \"1\")\n            requireDownload('https://agit.ai/DreamOvO/JuMan/raw/branch/master/JM', url)\n            back(false)\n            refreshPage(true)\n            return \"toast://数据已获取\"\n        }, url),\n        col_type: 'text_center_1'\n    })\n}\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files//rules/Tz/JM')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，没事别点）',\\n        url: $(\\\"清除缓存，立即更新\\\").confirm((url) => {\\n            //远程依赖索引文件代理地址列表\\n            let requirelist = ['https://raw.iqiq.io/', 'https://ghproxy.net/https://raw.githubusercontent.com/', 'https://ghproxy.com/https://raw.githubusercontent.com/', 'https://cdn.staticaly.com/gh/', 'https://github.jevons.vip/https://raw.githubusercontent.com/']\\n            for (let i = 0; i < requirelist.length; i++) {\\n                try { //远程依赖索引\\n                    let res = request(requirelist[i] + 'DreamOzO/JM/main/JM', {\\n                        withStatusCode: true\\n                    })\\n                    if (JSON.parse(res).statusCode == 200) {\\n                        if (fileExist(url)) {\\n                            deleteFile(url)\\n                            requireDownload(requirelist[i] + 'DreamOzO/JM/main/JM',url)\\n                            break\\n                        } else {\\n                            requireDownload(requirelist[i] + 'DreamOzO/JM/main/JM',url)\\n                            break\\n                        }\\n                    }\\n                } catch (e) {}\\n            }\\n            refreshPage(true)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\nel.push({\\n    title: \\\"更新&反馈\\\",\\n    url: \\\"hiker://page/Up#noRefresh##noRecordHistory##noHistory#\\\",\\n    extra: {\\n        version: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\"\\n    },\\n    col_type: \\\"text_center_1\\\"\\n});\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理*\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级[一]*\",\"path\":\"ejtool\",\"rule\":\"function cover(标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine) {\\r\\nvar 标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine;\\r\\n\\ttry {\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '‘‘’’<small><font color=\\\"#FA7298\\\">'+作者.slice(0,15)+\\\"&nbsp;\\\"+状态+'</font></small>'+'‘‘’’<small><font color=\\\"#B15BFF\\\">'+\\\"\\\\n\\\"+分类+'</font></small>'+'‘‘’’<small><font color=\\\"#FF359A\\\">'+\\\"\\\\n\\\"+章节+\\\"&nbsp;\\\"+更新+'</font></small>',\\r\\n\\t\\t\\tdesc:'‘‘’’<small>' +简介+ '</small>',\\r\\n\\t\\t\\tpic_url:  封面图片,\\r\\n\\t\\t\\turl: true_url,\\r\\n\\t\\t\\tcol_type: 'movie_1_vertical_pic_blur'\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line_blank',\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line',\\r\\n\\t\\t});\\r\\n\\t\\tif (hasLine) {\\r\\n\\t\\t\\titem.extra = {\\r\\n\\t\\t\\t\\tlineVisible: false\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\td.push(item);\\r\\n\\t} catch (e) {}\\r\\n}\\r\\nfunction chapter(title,pic_url,chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine,downloadlazy) {\\r\\n\\tvar list = chapterList;\\r\\n\\tvar original = [{\\r\\n\\t\\turl: MY_URL,\\r\\n\\t\\torder: defaultOrder\\r\\n\\t}];\\r\\n\\t!fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\r\\n\\tvar log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\r\\n\\tfor (var i in log) {\\r\\n\\t\\tif (log[i].url == MY_URL) {\\r\\n\\t\\t\\tvar now = i;\\r\\n\\t\\t\\tvar order = log[i].order;\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\tvar now = '';\\r\\n\\t\\t\\tvar order = defaultOrder;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tlet orderItem = {\\r\\n\\t\\ttitle: \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '章节排序⇅' + '</font></strong>',\\r\\n\\t\\turl: MY_URL + `@lazyRule=.js:var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));var now='` + now + `';if(now!=''){var now=parseInt(now);var order=log[now].order}else{var now=parseInt(log.length);var order=` + defaultOrder + `;log.push({url:input,order:order});}if(log[now].order){log[now].order=0;}else{log[now].order=1;};writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(log));refreshPage();'hiker://empty'`,\\r\\n\\t\\tcol_type: 'text_2'\\r\\n\\t}\\r\\n\\tif (hasLine) {\\r\\n\\t\\torderItem.title = \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '集数排序⇅' + '</font></strong>';\\r\\n\\t\\torderItem.col_type = \\\"text_2\\\"\\r\\n\\t}\\r\\n\\tlet chapterLists = list.map((item)=>({\\r\\n\\t\\ttitle: pdfh(item,\\\"a&&Text\\\"),\\r\\n\\t\\turl: pd(item,\\\"a&&href\\\"),\\r\\n\\t}));\\r\\nd.push({\\r\\n\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"下载漫画\\\" + '</front></strong>',\\r\\n\\turl: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\r\\n\\tcol_type: \\\"text_2\\\",\\r\\n\\textra: {\\r\\n\\t\\tchapterList: chapterLists,\\r\\n\\t\\tinfo:{\\r\\n\\t\\t\\tbookName: title,\\r\\n\\t\\t\\truleName: MY_RULE.title,\\r\\n\\t\\t\\tbookTopPic: pic_url,\\r\\n\\t\\t\\tparseCode: downloadlazy\\r\\n\\t\\t},\\r\\n\\t\\tdefaultView:\\\"1\\\"\\r\\n\\t}\\r\\n});\\r\\n\\td.push({\\r\\n\\t\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"本地书架\\\" + '</front></strong>',\\r\\n\\t\\turl: \\\"hiker://page/Main.view?rule=本地资源管理\\\",\\r\\n\\t\\tcol_type: \\\"text_2\\\",\\r\\n\\t});  \\r\\n\\td.push(orderItem);\\r\\n\\td.push({col_type: 'line'});\\t\\r\\n\\tvar list = order ? list : list.reverse();\\n\\tif(!list||list==\\\"\\\"){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '此漫画已下架!!',\\r\\n\\t\\t\\tcol_type: 'text_center_1',\\r\\n\\t\\t});\\r\\n\\t}\\r\\n\\tfor (var i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: pdfh(list[i], chapterTitle),\\r\\n\\t\\t\\t\\turl: pd(list[i], chapterUrl) + lazy,\\r\\n\\t\\t\\t\\tcol_type: 'text_2',\\r\\n\\t\\t\\t});\\r\\n\\t\\t}catch (e) {}\\r\\n\\t}\\r\\n}\\r\\n\\r\\nfunction line(lineList, lineTitleRule, varKey) {\\r\\n\\tlet list = lineList\\r\\n\\tvarKey = varKey == null ? (MY_RULE.url + '#line-index'): varKey;\\r\\n\\taddListener('onClose', $.toString((keyList) => {\\r\\n\\t\\tfor (let i in keyList) {clearVar(keyList[i])}\\r\\n\\t}, [varKey, MY_RULE.title + '#line-title']))\\r\\n\\tlet line0Title = '';\\r\\n\\ttry {\\r\\n\\t\\tline0Title = pdfh(list[0], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t} catch (e) {}\\r\\n\\tlog(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\r\\n\\tfor (let i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\tlet lineTitle = pdfh(list[i], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: getMyVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle+\\\"\\\":lineTitle+\\\"‘‘:切换\\\",\\r\\n\\t\\t\\t\\turl: $().lazyRule((varKey, lineIndex, lineTitle) => {\\r\\n\\t\\t\\t\\t\\tputMyVar(varKey, lineIndex.toString());\\r\\n\\t\\t\\t\\t\\tputMyVar((MY_RULE.title + '#line-title'), lineTitle);\\r\\n\\t\\t\\t\\t\\tlog(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')));\\r\\n\\t\\t\\t\\t\\trefreshPage();\\r\\n\\t\\t\\t\\t\\treturn \\\"toast://已切换至\\\" + lineTitle;\\r\\n\\t\\t\\t\\t}, varKey, i, lineTitle),\\r\\n\\t\\t\\t\\tcol_type: 'text_2',\\r\\n\\t\\t\\t});\\r\\n\\t\\t} catch (e) {}\\r\\n\\t}\\r\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级[二]*\",\"path\":\"comicFunctionFile.js\",\"rule\":\"function cover(coverTitle, coverTitle1, coverTitle2, coverTitle3, coverDesc, coverPic, coverUrl, hasLine) {\\n    try {\\n        const Color = \\\"#19B89D\\\";\\n        var des_desc = pdfh(html, coverDesc).replace('简　　介：', '').replace('漫画简介：', '');\\n        d.push({\\n            title: '‘‘’’<><font color=\\\"#FA7298\\\">' + pdfh(html, coverTitle) + '\\\\n' + '‘‘’’<><font color=\\\"#734338\\\">' + pdfh(html, coverTitle1) + '\\\\n',\\n            desc: '‘‘’’<><font color=\\\"#954A45\\\">' + pdfh(html, coverTitle2) + '\\\\n' + '‘‘’’<><font color=\\\"#954A45\\\">' + pdfh(html, coverTitle3),\\n            pic_url: pd(html, coverPic)||coverPic,\\n            url: 'hiker://search?s='+MY_PARAMS.ytitle+'&rule=聚漫🔮',\\n            col_type: 'movie_1_vertical_pic_blur'\\n        });\\n        d.push({\\n            col_type: 'line'\\n        });\\n        //var jj = getMyVar(\\\"jjs\\\", \\\"收起\\\");\\n        //var jjurl = 'hiker://empty@lazyRule=.js:getMyVar(\\\"jjs\\\") == \\\"收起\\\"?putMyVar(\\\"jjs\\\",\\\"展开\\\"):putMyVar(\\\"jjs\\\",\\\"收起\\\");\\\"hiker://empty\\\"';\\n        d.push({\\n            title: '简介 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>',\\n            img: \\\"https://lanmeiguojiang.com/tubiao/more/197.png\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((jjid, decid, des_desc) => {\\n                if (getMyVar(\\\"jjs\\\", \\\"收起\\\") == \\\"收起\\\") {\\n                    putMyVar(\\\"jjs\\\", \\\"展开\\\");\\n\\n                    updateItem({\\n                        extra: {\\n                            id: jjid\\n                        },\\n                        title: '简介 <small><small><span style=\\\"color:#19B89D\\\">收起></span></small></small>'\\n                    })\\n\\n                    updateItem({\\n                        extra: {\\n                            textSize: 14,\\n                            lineSpacing: 3,\\n                            id: decid\\n                        },\\n                        title: '<span style=\\\"color:#808080\\\">' + des_desc + '...</span>'\\n                    })\\n                    return \\\"hiker://empty\\\"\\n                } else {\\n                    putMyVar(\\\"jjs\\\", \\\"收起\\\");\\n\\n                    updateItem({\\n                        extra: {\\n                            id: jjid\\n                        },\\n                        title: '简介 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>'\\n                    })\\n\\n                    updateItem({\\n                        extra: {\\n                            textSize: 14,\\n                            lineSpacing: 3,\\n                            id: decid\\n                        },\\n                        title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 30) + '...</span>'\\n                    })\\n                    return \\\"hiker://empty\\\"\\n                }\\n\\n            }, MY_RULE + \\\"_jjid\\\", MY_RULE + \\\"_decid\\\", des_desc),\\n            col_type: \\\"avatar\\\",\\n            extra: {\\n                id: MY_RULE + \\\"_jjid\\\"\\n            }\\n        });\\n\\n        d.push({\\n            title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 30) + '...</span>',\\n            col_type: \\\"rich_text\\\",\\n            extra: {\\n                textSize: 14,\\n                lineSpacing: 3,\\n                id: MY_RULE + \\\"_decid\\\"\\n            }\\n        });\\n        d.push({\\n            col_type: 'line'\\n        })\\n        d.push({\\n            col_type: 'line'\\n        })\\n    } catch (e) {}\\n}\\n\\nfunction down(Title, chapterPic, list, chapterTitle, chapterLine, downloadlazy) {\\n    try {\\n        let doList = list.map((item) => ({\\n            title: pdfh(item, chapterTitle),\\n            url: pd(item, chapterLine),\\n        }));\\n        d.push({\\n            title: '““””<b><span style=\\\"color: #1aad19\\\">下载漫画🔹</span></b>',\\n            url: \\\"hiker://page/download.view#noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\n            col_type: \\\"text_center_1\\\",\\n            extra: {\\n                chapterList: doList,\\n                info: {\\n                    bookName: pdfh(html, Title),\\n                    ruleName: MY_RULE.title,\\n                    bookTopPic: pd(html, chapterPic),\\n                    parseCode: downloadlazy\\n                },\\n                defaultView: \\\"1\\\"\\n            }\\n        });\\n        d.push({\\n            col_type: 'line'\\n        });\\n    } catch (e) {}\\n}\\n\\nfunction chapter(chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine) {\\n    var list = chapterList;\\n    var original = [{\\n        url: MY_URL,\\n        order: defaultOrder\\n    }];\\n    !fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\n    var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\n    for (var i in log) {\\n        if (log[i].url == MY_URL) {\\n            var now = i;\\n            var order = log[i].order;\\n            break;\\n        } else {\\n            var now = '';\\n            var order = defaultOrder;\\n        }\\n    }\\n    let orderItem = {\\n        title: \\\"““””\\\" + '<font color=\\\"#f37335\\\">' + '章节排序⇅' + '</font>',\\n        url: MY_URL + `@lazyRule=.js:var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));var now='` + now + `';if(now!=''){var now=parseInt(now);var order=log[now].order}else{var now=parseInt(log.length);var order=` + defaultOrder + `;log.push({url:input,order:order});}if(log[now].order){log[now].order=0;}else{log[now].order=1;};writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(log));refreshPage();'hiker://empty'`,\\n        col_type: 'text_center_1'\\n    }\\n    if (hasLine) {\\n        orderItem.title = \\\"““””\\\" + '<font color=\\\"#f37335\\\">' + '集数排序⇅' + '</font>';\\n        orderItem.col_type = \\\"text_center_1\\\"\\n    }\\n    d.push(orderItem);\\n    d.push({\\n        col_type: 'line'\\n    });\\n\\n    var list = order ? list : list.reverse();\\n    for (let i in list) {\\n        try {\\n            d.push({\\n                title: pdfh(list[i], chapterTitle),\\n                url: pd(list[i], chapterUrl) + lazy,\\n                col_type: pdfh(list[0], chapterTitle).length > 6 ? 'text_2' : 'text_3',\\n            });\\n        } catch (e) {}\\n    }\\n}\\n\\nfunction line(lineList, lineTitleRule, varKey) {\\n    let list = lineList\\n    varKey = varKey == null ? (MY_RULE.url + '#line-index') : varKey;\\n    addListener('onClose', $.toString((keyList) => {\\n        for (let i in keyList) {\\n            clearVar(keyList[i])\\n        }\\n\\n    }, [varKey, MY_RULE.title + '#line-title']))\\n    let line0Title = ''\\n    try {\\n        line0Title = pdfh(list[0], lineTitleRule);\\n    } catch (e) {}\\n    log(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\n    for (let i in list) {\\n        try {\\n            let lineTitle = pdfh(list[i], lineTitleRule);\\n            d.push({\\n                title: getMyVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle + \\\"\\\" : lineTitle + \\\"‘‘:切换\\\",\\n                url: $().lazyRule((varKey, lineIndex, lineTitle) => {\\n                    putMyVar(varKey, lineIndex.toString())\\n                    // log(MY_RULE.url)\\n                    putMyVar((MY_RULE.title + '#line-title'), lineTitle)\\n                    log(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\n                    refreshPage()\\n                    return \\\"toast://已切换至\\\" + lineTitle\\n                }, varKey, i, lineTitle),\\n                col_type: 'flex_button'\\n            });\\n        } catch (e) {}\\n    }\\n    d.push({\\n                col_type: 'line'\\n            });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析[包]*\",\"path\":\"bzjs\",\"rule\":\"var 漫画解析 = $.toString(() => {\\n    var id = true;\\n    var code = request(input)\\n    var pics = [];\\n    var to_Repeat = false;\\n\\n\\n    while (id) {\\n        pdfa(code, \\\".chapter-main&&amp-img\\\")\\n            .forEach(data => pics.push(pdfh(data, \\\"amp-img&&src\\\") + '@Referer=https://cn.webmota.com/'));\\n        var next_Page = pdfh(code, \\\".next_chapter,-1&&Html\\\")\\n        if (next_Page.includes('下一页')) {\\n            code = request(pdfh(next_Page, \\\"a&&href\\\"))\\n            to_Repeat = true;\\n        } else {\\n            id = false;\\n        }\\n    }\\n\\n    //去除重复图片\\n    if (to_Repeat) {\\n        for (let i = 0; i < pics.length; i++) {\\n            while (pics.indexOf(pics[i], i + 1) != -1) {\\n                pics.splice(pics.indexOf(pics[i], i + 1), 1)\\n            }\\n        }\\n    }\\n\\n    return \\\"pics://\\\" + pics.join(\\\"&&\\\");\\n})\\n\\nlet lazy = `@lazyRule=.js:` + 漫画解析;\"},{\"col_type\":\"movie_3\",\"name\":\"动态[二]*\",\"path\":\"dtfl\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\nif (typeof(拼接分类) != 'undefined' && 拼接分类 != '') {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} else {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getMyVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b>' + '∨'.fontcolor(\\\"#FF0000\\\") + '</b>' : '““””<b>' + '∧'.fontcolor(\\\"#1aad19\\\") + '</b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putMyVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putMyVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"动态[一]*\",\"path\":\"categories-header\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/categories-header.js\\n * 子页面链接 hiker://page/categories-header\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2705\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js\\n */\\n/**\\n * Object.assign 用法参考链接\\n *\\n * 1.https://www.daimajiaoliu.com/daima/47139a9e7100407\\n * 2.https://segmentfault.com/a/1190000011778875\\n * 3.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\\n */\\n// 利用 Symbol 实现私有变量和私有方法，外界不可访问（参考链接2）\\nconst symbolMap = {\\n    // checkParams: Symbol('checkParams'),\\n    mLayout: Symbol('mLayout'),\\n    true_url: Symbol('true_url'),\\n    mPage: Symbol('mPage'),\\n    src: Symbol('src'),\\n    ruleObjList: Symbol('ruleObjList'),\\n    mFold: Symbol('mFold'),\\n    mFoldInnerEnable: Symbol('mFoldInnerEnable'),\\n    mFoldIndex: Symbol('mFoldIndex'),\\n    mFoldLayout: Symbol('mFoldLayout'),\\n    mColor: Symbol('mColor'),\\n    mTag: Symbol('mTag'),\\n}\\n\\nfunction CategoriesHeader(color) {\\n    // 'use strict';\\n    // ...\\n    // this[symbolMap.listRule] = []\\n    // this[symbolMap.subListRule] = []\\n    this[symbolMap.mColor] = color || \\\"#FA7298\\\";\\n    this[symbolMap.ruleObjList] = []\\n    this.VARMAP = {\\n        CATEGORY: \\\"header.category\\\",\\n        URL: \\\"header.url\\\",\\n        FOLD: \\\"header.fold\\\",\\n    }\\n    this[symbolMap.mFoldLayout] = {\\n        injectIndex: 1\\n    }\\n    this[symbolMap.mFoldIndex] = 1\\n}\\n\\nObject.assign(CategoriesHeader.prototype, {\\n    // Override 构造方法，相当于 function.prototype.constructor = (...) => {...}，new function() 的时候会自动执行\\n    constructor: CategoriesHeader,\\n    // 定义私有方法\\n    VERSION: 202111301900,\\n    checkParams() {\\n        if (!this[symbolMap.mLayout]) {\\n            throw new Error(\\\"请调用 layout(d) 传入当前界面\\\")\\n        }\\n        if (!this[symbolMap.true_url]) {\\n            throw new Error(\\\"请调用 trueUrl(url) 传入当前分类的链接\\\")\\n        }\\n        if (!this[symbolMap.mPage]) {\\n            throw new Error(\\\"请调用 page(mPage) 传入当前页数\\\")\\n        }\\n        if (this[symbolMap.ruleObjList].length < 1) {\\n            throw new Error(\\\"请调用相关方法传入定位规则\\\")\\n        }\\n        if (!this[symbolMap.mFold]) {\\n            this[symbolMap.mFold] = '0'\\n        }\\n    },\\n    layout(mLayout) {\\n        this[symbolMap.mLayout] = mLayout\\n        return this\\n    },\\n    trueUrl(url) {\\n        this[symbolMap.true_url] = url\\n        return this\\n    },\\n    page(mPage) {\\n        if (typeof (mPage) === 'string') {\\n            mPage = parseInt(mPage)\\n        }\\n        this[symbolMap.mPage] = mPage\\n        return this\\n    },\\n    html(mSrc) {\\n        this[symbolMap.src] = mSrc\\n        return this\\n    },\\n    list(rule) {\\n        if (this[symbolMap.ruleObjList].length > 0) {\\n            throw new Error(\\\"list(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        this[symbolMap.ruleObjList] = [{}]\\n        this[symbolMap.ruleObjList][0].listRule = rule\\n        this[symbolMap.ruleObjList][0]['一级分类'] = rule\\n        return this\\n    },\\n    subList(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"subList(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].subListRule = rule\\n        this[symbolMap.ruleObjList][0]['子分类'] = rule\\n        return this\\n    },\\n    title(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"title(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].titleRule = rule\\n        this[symbolMap.ruleObjList][0]['分类标题'] = this[symbolMap.ruleObjList][0].titleRule\\n        return this\\n    },\\n    url(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"url(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].urlRule = rule\\n        this[symbolMap.ruleObjList][0]['分类链接'] = this[symbolMap.ruleObjList][0].urlRule\\n        return this\\n    },\\n    /**\\n     * 是否开启折叠功能\\n     *\\n     * @param enabled true 表示开启，false 表示禁用\\n     * @returns {CategoriesHeader}\\n     */\\n    foldInner(enabled) {\\n        if (!(typeof (enabled) === 'boolean')) {\\n            throw new Error(\\\"请传入 true 或 false 表示开启或关闭折叠功能！\\\")\\n        }\\n        this[symbolMap.mFoldInnerEnable] = enabled\\n        return this\\n    },\\n    /**\\n     * 从第 index 行开始折叠\\n     *\\n     * @param index 开始折叠的行数\\n     * @returns {CategoriesHeader}\\n     */\\n    foldIndex(index) {\\n        if (!(typeof (index) === 'number')) {\\n            throw new Error(\\\"开始折叠行请传入数字！\\\")\\n        }\\n        if (index < 1) {\\n            throw new Error(\\\"开始折叠行请传入大于 0 的整数！\\\")\\n        }\\n        this[symbolMap.mFoldIndex] = index || 1;\\n        return this\\n    },\\n    /**\\n     * 折叠按钮的界面\\n     *\\n     * @param layout 与 d.push 结构一致，\\n     *        例：{ title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"scroll_button\\\" };\\n     *        参数采用可选覆盖模式，不写的参数则使用默认;\\n     *        比如传入 { col_type:\\\"text_1\\\" }，那最终结果就是 { title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"text_1\\\" }\\n     * @returns {CategoriesHeader}\\n     */\\n    foldLayout(layout) {\\n        if (typeof layout === 'object') {\\n            let keys = Object.keys(layout)\\n            let injectIndex = layout.injectIndex || layout['折叠按钮插入行']\\n            if (layout.title || layout.url || layout.col_type || injectIndex) {\\n                for (let i = 0; i < keys.length; i++) {\\n                    const key = keys[i]\\n                    this[symbolMap.mFoldLayout][key] = layout[key];\\n                }\\n            } else {\\n                throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n            }\\n            // injectIndex 折叠按钮插入第 injectIndex 行\\n            if (injectIndex) {\\n                if (!(typeof (injectIndex) === 'number')) {\\n                    throw new Error(\\\"折叠按钮插入行请传入数字！\\\")\\n                }\\n                if (injectIndex < 1) {\\n                    throw new Error(\\\"折叠按钮插入行请传入大于 0 的整数！\\\")\\n                }\\n                if (injectIndex > this[symbolMap.mFoldIndex]) {\\n                    throw new Error(\\\"折叠按钮插入行不得大于显示折叠行数！请调用 .foldIndex(index) 或 .第几行开始折叠(index) 传入正确的显示折叠行数\\\")\\n                }\\n                this[symbolMap.mFoldLayout].injectIndex = injectIndex || 1;\\n            }\\n        } else {\\n            throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n        }\\n        return this;\\n    },\\n    // 当前是否折叠\\n    fold(isFold) {\\n        if (typeof (isFold) === 'string') {\\n            isFold = isFold === '1'\\n        }\\n        if (isFold) {\\n            this[symbolMap.mFold] = '1';\\n        } else {\\n            this[symbolMap.mFold] = '0';\\n        }\\n        return this\\n    },\\n    color(mColor) {\\n        this[symbolMap.mColor] = mColor\\n        return this\\n    },\\n    tag(mTag) {\\n        this[symbolMap.mTag] = mTag\\n        return this\\n    },\\n    add(ruleObj) {\\n        // log($.stringify(ruleObj))\\n        if (ruleObj.constructor === Array) {\\n            this[symbolMap.ruleObjList] = this[symbolMap.ruleObjList].concat(ruleObj)\\n        } else {\\n            this[symbolMap.ruleObjList].push(ruleObj)\\n        }\\n        return this;\\n    },\\n    evalJSRule(item, jsRule) {\\n        let rule = jsRule.replace(\\\"@js:\\\", \\\"\\\")\\n        rule = rule.trim()\\n        // log($.stringify(rule))\\n        let input = item\\n        if (rule.startsWith(\\\"(\\\")) {\\n            eval('result = ' + rule)\\n        } else {\\n            /**\\n             * 还原成 $.toString(...) 的最终结果，达到最终处理方式跟上面的 if 一致的目的\\n             */\\n            eval('result = ' + '(() => {' + rule + '})()')\\n        }\\n        return (result || '')\\n    },\\n    getTitle(src, category) {\\n        let title = ''\\n        let titleRule = category.titleRule || 'a&&Text'\\n        if (titleRule.startsWith(\\\"@js:\\\")) {\\n            title = this.evalJSRule(src, titleRule)\\n        } else {\\n            title = parseDomForHtml(src, titleRule)\\n        }\\n        return title || \\\"\\\";\\n    },\\n    getUrl(src, category) {\\n        let url = ''\\n        let urlRule = category.urlRule || 'a&&href'\\n        if (typeof urlRule === 'object') {\\n            let mUrlRule = urlRule.rule || urlRule['解析规则'] || 'a&&href';\\n            if (mUrlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, mUrlRule);\\n            } else {\\n                let parse = parseDom;\\n                if (urlRule.parseOption) {\\n                    switch (urlRule.parseOption) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                } else if (urlRule[\\\"解析方法\\\"]) {\\n                    switch (urlRule[\\\"解析方法\\\"]) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                }\\n                url = parse(src, mUrlRule);\\n            }\\n            if (urlRule.dealUrl) {\\n                url = urlRule.dealUrl(url)\\n            } else if (urlRule['二次处理']) {\\n                url = urlRule['二次处理'](url)\\n            }\\n        } else {\\n            if (urlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, urlRule);\\n            } else {\\n                url = parseDom(src, urlRule);\\n            }\\n        }\\n        return url || \\\"\\\";\\n    },\\n    build() {\\n        // 检测是否传入需要的参数\\n        this.checkParams()\\n        // 每一个分类的唯一标识\\n        let mTag = this[symbolMap.mTag] || \\\"\\\"\\n        //翻页 需要根据实际替换\\n        const html = this[symbolMap.src] || request(this[symbolMap.true_url])\\n        const empty = \\\"hiker://empty\\\"\\n        //获取列表\\n        const categories = []\\n        this[symbolMap.ruleObjList].map(ruleObj => {\\n            let list = []\\n            let listRule = ruleObj.listRule || ruleObj[\\\"一级分类\\\"]\\n            if (listRule.startsWith(\\\"@js:\\\")) {\\n                // log($.stringify(listRule))\\n                list = this.evalJSRule(html, listRule)\\n            } else {\\n                list = parseDomForArray(html, listRule)\\n            }\\n            // log(list)\\n            list.map(category => {\\n                categories.push({\\n                    list: category,\\n                    subListRule: ruleObj.subListRule || ruleObj[\\\"子分类\\\"],\\n                    titleRule: ruleObj.titleRule || ruleObj[\\\"分类标题\\\"],\\n                    urlRule: ruleObj.urlRule || ruleObj[\\\"分类链接\\\"],\\n                });\\n            })\\n        })\\n\\n        // log($.stringify(categories))\\n\\n        let init_cate = []\\n        for (let i = 0; i < 20; i++) {\\n            init_cate.push(\\\"0\\\")\\n        }\\n\\n        const cate_temp_json = getMyVar(mTag + this.VARMAP.CATEGORY, JSON.stringify(init_cate))\\n        const cate_temp = JSON.parse(cate_temp_json)\\n\\n        if (this[symbolMap.mPage] === 1) {\\n\\n            categories.forEach((category, index) => {\\n\\n                // 折叠 UI\\n                if (this[symbolMap.mFoldInnerEnable] && this[symbolMap.mFoldLayout].injectIndex === (index+1)) {\\n                    let foldLayout = {\\n                        title: this[symbolMap.mFoldLayout].title || (this[symbolMap.mFold] === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>'),\\n                        url: this[symbolMap.mFoldLayout].url || $(\\\"hiker://empty#noHistory#\\\").lazyRule((params) => {\\n                            putMyVar(params.mTag + params.VARMAP.FOLD, getMyVar(params.mTag + params.VARMAP.FOLD, params.isFold) === '1' ? '0' : '1')\\n                            refreshPage(false);\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            mTag: mTag,\\n                            isFold: this[symbolMap.mFold],\\n                            VARMAP: this.VARMAP\\n                        }),\\n                        col_type: this[symbolMap.mFoldLayout].col_type || \\\"scroll_button\\\",\\n                    }\\n                    this[symbolMap.mLayout].push(foldLayout)\\n                }\\n\\n                //具体列表下的分类\\n                let sub_categories = [];\\n                if (category.subListRule.startsWith(\\\"@js:\\\")) {\\n                    sub_categories = this.evalJSRule(category.list, category.subListRule)\\n                } else {\\n                    sub_categories = parseDomForArray(category.list, category.subListRule);\\n                }\\n                if (index < (this[symbolMap.mFoldIndex] || 1)) {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                let new_cate = []\\n                                if (params.index === 0) {\\n                                    params.cate_temp.forEach((cate, index) => {\\n                                        new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                                    });\\n                                } else {\\n                                    params.cate_temp[params.index] = params.key.toString()\\n                                }\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.index === 0 ? new_cate : params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                } else if (this[symbolMap.mFold] === '0') {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                params.cate_temp[params.index] = params.key.toString()\\n\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                }\\n            });\\n        }\\n    },\\n\\n    界面(layout) {\\n        return this.layout(layout)\\n    },\\n    分类链接(trueUrl) {\\n        return this.trueUrl(trueUrl);\\n    },\\n    页码(page) {\\n        return this.page(page);\\n    },\\n    源码(html) {\\n        return this.html(html);\\n    },\\n    定位一级分类(list) {\\n        return this.list(list);\\n    },\\n    定位子分类(subList) {\\n        return this.subList(subList);\\n    },\\n    定位分类标题(title) {\\n        return this.title(title);\\n    },\\n    定位分类链接(url) {\\n        return this.url(url);\\n    },\\n    开启内置折叠功能() {\\n        return this.foldInner(true);\\n    },\\n    关闭内置折叠功能() {\\n        return this.foldInner(false);\\n    },\\n    第几行开始折叠(index) {\\n        return this.foldIndex(index);\\n    },\\n    折叠按钮样式(layout) {\\n        return this.foldLayout(layout)\\n    },\\n    折叠(fold) {\\n        return this.fold(fold);\\n    },\\n    选中的分类颜色(color) {\\n        return this.color(color);\\n    },\\n    唯一标识(mTag) {\\n        return this.tag(mTag)\\n    },\\n    添加分类定位(ruleObj) {\\n        return this.add(ruleObj);\\n    },\\n    开始打造分类() {\\n        return this.build();\\n    },\\n\\n})\\n$.exports = new CategoriesHeader();\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理[二]*\",\"path\":\"url-processor\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+).html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*.html',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---.html)/, this.params.page + '$1')\\n                    .replace(/(---\\\\d+.html)/, this.params.page + '$1'); // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\\n\"},{\"col_type\":\"movie_3\",\"name\":\"一级*\",\"path\":\"yjtool\",\"rule\":\"function convert1(str) {\\n    let c = str.split(\\\";\\\")\\n    return {\\n        列表: c[0],\\n        标题: c[1],\\n        图片: c[2],\\n        描述: c[3],\\n        链接: c[4]\\n    }\\n}\\n\\nfunction merge(source, target) {\\n    let keys = Object.keys(source)\\n    for (let i in keys) {\\n        target[keys[i]] = source[keys[i]]\\n    }\\n}\\n\\nfunction 一级(obj) {\\n    var d = [];\\n    if ($.type(obj) == \\\"string\\\") {\\n        obj = convert1(obj)\\n    }\\n    if (obj.规则) {\\n        let c = convert1(obj.规则)\\n        merge(c, obj)\\n    }\\n    let arr = pdfa(getResCode(), obj.列表);\\n       if (obj.列表处理 != null) {\\n            arr = obj.链接处理(arr)\\n        }\\n    for (let it of arr) {\\n        let url = pd(it, obj.链接)\\n        if (obj.链接处理 != null) {\\n            url = obj.链接处理(url)\\n        }\\n        let title = pdfh(it, obj.标题)\\n        if (obj.标题处理 != null) {\\n            title = obj.标题处理(title)\\n        }\\n        let pic = pd(it, obj.图片)\\n        if (obj.图片处理 != null) {\\n            pic = obj.图片处理(pic)\\n        }\\n        d.push({\\n            title: obj.标题 ? pdfh(it, obj.标题) : \\\"\\\",\\n            url: url+'#autoCache#',\\n            col_type: \\\"\\\",\\n            desc: obj.描述 ? pdfh(it, obj.描述) : \\\"\\\",\\n            pic_url: pic,\\n            extra: {\\n                ytitle: title,\\n                ypic: pic,\\n                yurl: url.replace('hiker://empty##','')\\n            }\\n        });\\n\\n    }\\n    setResult(d);\\n}\\nvar tool = {\\n    一级: 一级\\n}\\n$.exports = tool\"},{\"col_type\":\"movie_3\",\"name\":\"一级[二]*\",\"path\":\"yiji\",\"rule\":\"function 一级() {};\\r\\nObject.assign(一级.prototype, {\\r\\n\\tconstructor: 一级,\\r\\n\\ttest() {},\\r\\n\\t获取源码(url, header) {return fetch(true_url, {headers: header || {'User-Agent': PC_UA}}) },// 默认统一使用MOBILE_UA\\r\\n\\t搜索框架(page) {\\r\\n\\t\\tif (page == '1') {\\n/*\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: \\\"搜索本规则\\\",\\r\\n\\t\\t\\t\\turl: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\r\\n\\t\\t\\t\\tdesc: \\\" \\\",\\r\\n\\t\\t\\t\\tcol_type: \\\"input\\\"\\r\\n\\t\\t\\t});\\n*/\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t获取链接(page, regex) {\\r\\n\\t\\tlet true_url = getMyVar('header.url', MY_URL);\\r\\n\\t\\t//let 链接处理工具 = requireCache(config.链接处理工具依赖)\\r\\n\\t\\t//let 链接处理工具 = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2849')\\r\\n\\t\\t//let 链接处理工具 = $.require('hiker://page/url-processor')\\r\\n\\t\\tlet 链接处理工具 = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2849')\\r\\n\\t\\ttrue_url = 链接处理工具\\r\\n\\t\\t\\t.链接(true_url)\\r\\n\\t\\t\\t.页码(page)\\r\\n\\t\\t\\t.插入新处理规则(regex || [])\\r\\n\\t\\t\\t.获取处理结果();\\r\\n\\t\\treturn true_url;\\r\\n\\t},\\r\\n\\t打造分类(ruleList) {\\r\\n\\t\\t//  let htmlCategories = requireCache(config.动态分类依赖)\\r\\n\\t\\t//let htmlCategories = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2705')\\r\\n\\t\\tif (!ruleList) {\\r\\n\\t\\t\\tlet 分类定位 = [{\\r\\n\\t\\t\\t\\t\\t一级分类: 一级定位A,\\r\\n\\t\\t\\t\\t\\t子分类: 统一定位B || 一级定位B,\\r\\n\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 一级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t}]\\r\\n\\t\\t\\tif (二级定位A && (统一定位B || 二级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 二级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 二级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 二级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tif (三级定位A && (统一定位B || 三级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 三级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 三级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 三级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tif (四级定位A && (统一定位B || 四级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 四级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 四级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 四级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\truleList = 分类定位;\\r\\n\\t\\t}\\r\\n\\t\\t// '0' 为默认不折叠，'1' 为默认折叠\\r\\n\\t\\tconst 当前折叠状态 = getMyVar('header.fold', '0')\\r\\n\\t\\t// 引入动态分类依赖\\r\\n\\t\\tlet htmlCategories = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2705')\\r\\n\\t\\tvar getRangeColors = function() {\\r\\n\\t\\t\\treturn '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\\r\\n\\t\\t} // 随机选中的分类颜色\\r\\n\\t\\tvar colour;\\r\\n\\t\\tif (分类颜色 !== '') {\\r\\n\\t\\t\\tcolour = 分类颜色\\r\\n\\t\\t} else {\\r\\n\\t\\t\\tcolour = getRangeColors()\\r\\n\\t\\t}\\r\\n\\t\\thtmlCategories.界面(d)\\r\\n\\t\\t\\t//.分类链接(true_url)\\r\\n\\t\\t\\t.源码(html)\\r\\n\\t\\t\\t.页码(page)\\r\\n\\t\\t\\t.添加分类定位(ruleList)\\r\\n\\t\\t\\t.开启内置折叠功能() // 必须\\r\\n\\t\\t\\t.折叠(当前折叠状态) // 必须\\r\\n\\t\\t\\t.折叠按钮样式({\\r\\n\\t\\t\\t\\ttitle: 当前折叠状态 == \\\"1\\\" ? \\\"““””<big><b><font color='#5959AB'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\"\\r\\n\\t\\t\\t}) // 可选\\r\\n\\t\\t\\t// .第几行开始折叠(2) // 可选\\r\\n\\t\\t\\t// .折叠按钮样式({ 折叠按钮插入行: 2 })  // 可选，但必须先调用 .第几行开始折叠(index)，然后再传入 { 折叠按钮插入行: index }\\r\\n\\t\\t\\t.选中的分类颜色(colour)\\r\\n\\t\\t\\t.开始打造分类();\\r\\n\\t},\\r\\n\\r\\n\\t生成片单(d,html) {\\r\\n\\r\\n\\t\\tvar 列表\\r\\n\\t\\tvar 标题\\r\\n\\t\\tvar 描述\\r\\n\\t\\tvar 图片\\r\\n\\t\\tvar 链接\\r\\n\\r\\n\\t\\tif (框架类型 === 'myui-vodlist') {\\r\\n\\t\\t\\t列表 = '.myui-vodlist&&li';\\r\\n\\t\\t\\t标题 = 'h4&&Text';\\r\\n\\t\\t\\t描述 = '.pic-tag||.pic-text&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·myui-vodlist')\\r\\n\\t\\t} else if (框架类型 === '#data_list') {\\r\\n\\t\\t\\t列表 = '#data_list&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'em&&Text';\\r\\n\\t\\t\\t图片 = 'img&&data-srcl';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·data_list')\\r\\n\\t\\t} else if (框架类型 === 'fed-list-title') {\\r\\n\\t\\t\\t列表 = '.fed-list-info&&li';\\r\\n\\t\\t\\t标题 = '.fed-list-title&&Text';\\r\\n\\t\\t\\t描述 = '.fed-text-center&&Text';\\r\\n\\t\\t\\t图片 = 'a&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·.fed-list-info')\\r\\n\\t\\t} else if (框架类型 === 'item') {\\r\\n\\t\\t\\t列表 = 'body&&.item';\\r\\n\\t\\t\\t标题 = 'img&&alt';\\r\\n\\t\\t\\t描述 = 'p&&Text';\\r\\n\\t\\t\\t图片 = 'img&&srcl';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'module-items') {\\r\\n\\t\\t\\t列表 = '.module-items&&.module-item';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = '.module-item-text&&Text';\\r\\n\\t\\t\\t图片 = 'img||.lazy&&data-src';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'pack-ykpack') {\\r\\n\\t\\t\\t列表 = 'body&&.pack-ykpack';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'span,-1&&Text';\\r\\n\\t\\t\\t图片 = '.eclazy&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'stui-vodlist') {\\r\\n\\t\\t\\t列表 = '.stui-vodlist&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = '.pic-text&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload||a&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'vodlist') {\\r\\n\\t\\t\\t列表 = '.vodlist&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'a&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === '测试') {\\r\\n\\t\\t\\t列表 = 'body&&a';\\r\\n\\t\\t\\t标题 = 'body&&a';\\r\\n\\t\\t\\t描述 = 'body&&a';\\r\\n\\t\\t\\t图片 = 'body&&a';\\r\\n\\t\\t\\t链接 = 'body&&a';\\r\\n\\t\\t} else if (框架类型 === '') {\\r\\n\\t\\t\\t列表 = 框架列表;\\r\\n\\t\\t\\t标题 = 框架标题;\\r\\n\\t\\t\\t描述 = 框架描述;\\r\\n\\t\\t\\t图片 = 框架图片;\\r\\n\\t\\t\\t链接 = 框架链接;\\r\\n\\t\\t}\\r\\n\\t\\tlet list = pdfa(html, 列表);\\r\\n\\t\\tfor (let k in list) {\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: pdfh(list[k], 标题),\\r\\n\\t\\t\\t\\tdesc: pdfh(list[k], 描述),\\r\\n\\t\\t\\t\\timg: pd(list[k], 图片) + '@Referer=',\\r\\n\\t\\t\\t\\turl: pd(list[k], 链接)+\\\"#immersiveTheme##autoCache#\\\",\\r\\n\\t\\t\\t});\\r\\n\\t\\t}\\r\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'big_big_blank_block',\\r\\n\\t\\t});\\r\\n\\t}\\r\\n})\\r\\n\\r\\n$.exports = new 一级();\\r\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"函数组件*\",\"path\":\"qs\",\"rule\":\"function 优化路线章节数据(多路线否, 源数据, 路线列表, 路线名, 选集总列表, 选集列表, 集名, 集url, 前缀, 标题, 图片) {\\n\\n    //当多路线否 选集总列表为空\\n    //最终返回 [{title: '路线名',list: [{title:'选集名',url:'选集url',...}],sjss:'下载资料'},....]\\n    //选集列表 第一项是css选择器，之后可以用$分割添加要删除章节名\\n\\n\\n    var 章节json = [];\\n    var 单路线章节 = '章节列表'\\n\\n    var 列表名 = [];\\n    if (!多路线否) {\\n\\n        列表名.push(单路线章节)\\n\\n    } else {\\n\\n        pdfa(源数据, 路线列表).forEach(function(data) {\\n            列表名.push(pdfh(data, 路线名))\\n        });\\n\\n    }\\n\\n    var 集数组 = [];\\n\\n\\nvar 排除章节 = [];\\nif(选集列表.includes('$')){\\n排除章节 = 选集列表.split('$')\\n选集列表 = 排除章节.shift()\\n}\\n\\n    if (!多路线否) {\\n        集数组.push(pdfa(源数据, 选集列表))\\n    } else {\\n        pdfa(源数据, 选集总列表).forEach(function(data) {\\n            集数组.push(pdfa(data, 选集列表))\\n        });\\n    }\\n\\n\\n    for (let i in 集数组) {\\n\\n        var doList = [];\\n\\n排除章节.forEach(function(data) {\\n    var 标识id = 集数组[i].findIndex(返回 => 返回.indexOf(data) != -1);\\n    if (标识id != -1) {\\n      集数组[i].splice(标识id, 1)\\n    };\\n  });\\n\\n        for (let it of 集数组[i]) {\\n            var doListurl = pdfh(it, 集url)\\n            doListurl = doListurl.includes(\\\"http\\\") ? doListurl : 前缀 + doListurl\\n            doList.push({\\n                title: pdfh(it, 集名),\\n                url: doListurl\\n            })\\n        }\\n\\n        var bookName = !多路线否 ? 标题 : 标题 + '-' + 列表名[i]\\n\\n        章节json.push({\\n            title: 列表名[i],\\n            list: doList,\\n            sjss: {\\n                chapterList: doList,\\n                info: {\\n                    bookName: bookName, //漫画名称,\\n                    ruleName: MY_RULE.title,\\n                    bookTopPic: 图片,\\n                    parseCode: 漫画解析,\\n                },\\n                defaultView: \\\"1\\\"\\n            }\\n        })\\n    }\\n    return 章节json\\n}\\n\\n\\nfunction 添加头部列表(d, 标题, 图片, 描述, 作者, 时间, 分类,页URL) {\\n\\n    标题 = !标题 ? '' : 标题 + '\\\\n'\\n    图片 = !图片 ? '' : 图片\\n    描述 = !描述 ? '' : 描述.replace(\\\"更新至：\\\", '')\\n\\n    作者 = !作者 ? '' : '\\\\n' + 作者\\n    时间 = !时间 ? '' : '\\\\n' + 时间\\n    分类 = !分类 ? '' : '\\\\n' + 分类\\n\\n\\n    var 头部title = ['‘‘’’<b>','</b> <small><font color=#FA7298>','</font>','</small>']\\n    var 头部desc = ['‘‘’’<font color=#f8ecc9>','</font>']\\n\\n\\n\\n    头部title = 头部title[0]+标题+头部title[1]+描述+头部title[2]+作者+头部title[3]\\n\\n    头部desc = 头部desc[0]+时间+分类+头部desc[1]\\n\\n    d.push({\\n        title: 头部title,\\n        desc: 头部desc,\\n        pic_url: 图片,\\n        url: 'hiker://search?s='+getParam('Name')+'&rule=聚漫🔮',\\n        col_type: 'movie_1_vertical_pic_blur'\\n    });\\n\\n}\\n\\n\\nfunction 添加简介(d, 数据源, 页URL, 图片) {\\n    //获取数据\\n    var 简介内容 = 数据源\\n    简介内容 = 简介内容.replace(\\\"简介：\\\", \\\"\\\").replace(\\\"介绍:\\\", \\\"\\\").replace(\\\"漫画\\\", \\\"\\\").replace(\\\"……\\\", \\\"\\\").replace(\\\"简介\\\", \\\"\\\")\\n\\n    var 简介内容收;\\n    if (简介内容.length > 45) {\\n        简介内容收 = 简介内容.substr(0, 45) + '...'\\n    } else {\\n        简介内容收 = 简介内容 + '...'\\n    }\\n\\n    //图标获取\\n    if (!图片) {\\n        图片 = 'https://lanmeiguojiang.com/tubiao/q/107.png'\\n    }\\n\\n    //页URL 获取\\n    if (!页URL) {\\n        页URL = MY_RULE.title\\n    }\\n\\n    //标题与简介样式\\n    var mztext = \\\"&nbsp;&nbsp;&nbsp;&nbsp;<small>简介</small><br>\\\"\\n    var bttitle = '<font color=\\\"#098AC1\\\">漫画简介  </font><small><small><font color=\\\"#f47983\\\">简介收></font></small></small>'\\n\\n    //展开与收缩操作\\n    var jj = getMyVar(页URL + \\\"简介收\\\", \\\"已收起\\\");\\n    var jjurl = $(\\\"#noLoading#\\\").lazyRule((简介内容, 简介内容收, 收, 收内容, 当前URL) => {\\n        var jsbl = 当前URL + \\\"简介收\\\";\\n        var jj = getMyVar(当前URL + \\\"简介收\\\", \\\"已收起\\\");\\n        jj = jj == \\\"已收起\\\" ? \\\"展开\\\" : \\\"已收起\\\";\\n        putMyVar(jsbl, jj)\\n        updateItem({\\n            extra: {\\n                id: 当前URL + \\\"_bt\\\"\\n            },\\n            title: 收.replace(\\\"简介收\\\", jj)\\n        })\\n\\n        updateItem({\\n            extra: {\\n                id: 当前URL + \\\"_mz\\\"\\n            },\\n            title: jj == \\\"已收起\\\" ? 收内容.replace(\\\"简介\\\", 简介内容收) : 收内容.replace(\\\"简介\\\", 简介内容)\\n        })\\n        return \\\"hiker://empty\\\"\\n    }, 简介内容, 简介内容收, bttitle, mztext, 页URL)\\n\\n\\n    //标题\\n    d.push({\\n        title: bttitle.replace(\\\"简介收\\\", jj),\\n        url: jjurl,\\n        col_type: \\\"avatar\\\",\\n        pic_url: 图片,\\n        extra: {\\n            id: 页URL + \\\"_bt\\\"\\n        }\\n    });\\n\\n    //简介\\n    d.push({\\n        title: jj == \\\"已收起\\\" ? mztext.replace(\\\"简介\\\", 简介内容收) : mztext.replace(\\\"简介\\\", 简介内容),\\n        col_type: \\\"rich_text\\\",\\n        extra: {\\n            id: 页URL + \\\"_mz\\\"\\n        }\\n    });\\n\\n}\\n\\nfunction 添加列表章节(d, 标题数据, 列表数据, 解析代码, 页URL, 图片) {\\n\\n\\n    //d与外界d，为同内存地址，不用返回\\n    //标题数据  即标题名字\\n    //列表数据必须是JSON  格式是[{title:'',url:'',},.....]  且url必须有前缀\\n\\n    //图标获取\\n    if (!图片) {\\n        图片 = 'https://lanmeiguojiang.com/tubiao/q/18.png'\\n    }\\n\\n    //页URL 获取\\n    if (!页URL) {\\n        页URL = MY_RULE.title\\n    }\\n\\n    //标题名\\n    var 标题名 = '<b>路线</b>  <small><small><font color=#f9906f>排序 ></font></small></small>'\\n\\n\\n    var 排序 = getMyVar(页URL + \\\"章节排序\\\", \\\"正序\\\");\\n    var 提示 = 排序 == '倒序' ? '正序' : '倒序';\\n\\n    var 排序url = $(\\\"#noLoading#\\\").lazyRule((标题名, 标题数据, 列表数据, 解析代码, 页URL) => {\\n        var 排序 = getMyVar(页URL + \\\"章节排序\\\", \\\"正序\\\");\\n        var 提示 = 排序 == '倒序' ? '正序' : '倒序';\\n        updateItem({\\n            extra: {\\n                id: 页URL + \\\"_排序\\\"\\n            },\\n            title: 标题名.replace('路线', 标题数据).replace('排序', 提示)\\n        })\\n\\n\\n        if (提示 == '倒序') {\\n            列表数据.reverse()\\n        }\\n        列表数据.forEach(function(data, ssid) {\\n            updateItem({\\n                title: data.title,\\n                url: data.url + 解析代码,\\n                extra: {\\n                    id: 页URL + \\\"_选集\\\" + ssid\\n                }\\n            });\\n        });\\n\\n\\n        putMyVar(页URL + \\\"章节排序\\\", 提示)\\n        return \\\"hiker://empty\\\"\\n    }, 标题名, 标题数据, 列表数据, 解析代码, 页URL)\\n\\n    d.push({\\n        title: 标题名.replace('路线', 标题数据).replace('排序', 排序),\\n        pic_url: 图片,\\n        url: 排序url,\\n        col_type: \\\"avatar\\\",\\n        extra: {\\n            id: 页URL + \\\"_排序\\\"\\n        }\\n    });\\n\\n    if (排序 == '倒序') {\\n        列表数据.reverse()\\n    }\\n\\n    列表数据.forEach(function(data, id) {\\n        d.push({\\n            title: data.title,\\n            url: data.url + 解析代码,\\n            col_type: \\\"text_2\\\",\\n            extra: {\\n                id: 页URL + \\\"_选集\\\" + id\\n            }\\n        });\\n    });\\n\\n}\\n\\n/*\\nfunction 添加防止网页(项url, UA) {\\n\\n    //上级跳转到当前页的链接必须是hiker://empty；不然一刷新还是会重复加载\\n    //UA ''或false或'手机' 默认是手机端 ; 电脑 'PC'\\n\\n    var 刷新重复 = MY_RULE.title + \\\"网页源码\\\"\\n    var pc链接 = 项url.replace(\\\"m.\\\", \\\"www.\\\")\\n    var 手机链接 = 项url.replace(\\\"www.\\\", \\\"m.\\\")\\n\\n    var code;\\n    if (getMyVar(刷新重复, \\\"false\\\") == \\\"false\\\") {\\n\\n        code = UA == 'PC' ? fetch(pc链接) : request(手机链接);\\n        putMyVar(刷新重复, getParam('url') + \\\"￥&￥\\\" + code)\\n\\n    } else {\\n\\n        var pm = getMyVar(刷新重复).split(\\\"￥&￥\\\")\\n        if (pm[0] == getParam('url')) {\\n            code = pm[1]\\n        } else {\\n            code = UA == 'PC' ? fetch(pc链接) : request(手机链接);\\n            putMyVar(刷新重复, getParam('url') + \\\"￥&￥\\\" + code)\\n        }\\n    }\\n    return code\\n}\\n*/\\n\\nfunction 添加选择路线(d, 路线数据, 页URL, 多路线否) {\\n\\n    //路线数据 格式[{title:'路线名'},....]\\n    //多路线否  false 则不启用选择路线；true 则启用\\n\\n    var 选择列表 = getItem(页URL + \\\"选择列表\\\", \\\"0\\\")\\n\\n    if (多路线否) {\\n\\n        var 路线选中 = '‘‘’’<font color=#098AC1>选中</font>'\\n\\n\\n        d.push({\\n            title: '‘‘’’📖<font color=\\\"#FA7298\\\"> 图源列表</font> ：',\\n            url: \\\"toast://点我干啥呢\\\",\\n            col_type: 'flex_button'\\n        });\\n\\n\\n        路线数据.forEach(function(data, id) {\\n\\n            var jjurl = $(\\\"#noLoading#\\\").lazyRule((页URL,id) => {\\n                setItem(页URL + '选择列表',id+'');\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\";\\n            },页URL,id);\\n\\n            var 标题名 = id == 选择列表 ? 路线选中.replace('选中', data.title) : data.title;\\n            d.push({\\n                title: 标题名,\\n                url: jjurl,\\n                col_type: 'flex_button',\\n                extra: {\\n                    id: 页URL + \\\"_路线\\\" + id\\n                }\\n            });\\n        });\\n\\n    }\\n    return 选择列表\\n}\\n\\n\\nfunction 添加选择下载(d, 路线数据, 多路线否) {\\n\\n    //路线数据 格式[{title:'路线名',sjss:'下载资料信息'},....]\\n    //多路线否  false 则只有①个下载 标题为 点击下载；true 则多个下载\\n\\nif(多路线否){\\n\\nd.push({\\n        title: '‘‘’’📥<font color=\\\"#f47983\\\"> 下载</font> ：',\\n        url: \\\"toast://点我干啥呢\\\",\\n        col_type: 'scroll_button'\\n    });\\n\\n}\\n\\n    路线数据.forEach(function(data, id) {\\n\\n        d.push({\\n            title: data.title.includes('章节列表') ? '点击下载' : data.title,\\n            url: 'hiker://page/download.view#noRecordHistory##noRefresh##noHistory#?rule=本地资源管理',\\n            col_type: 'scroll_button',\\n            extra: data.sjss\\n        });\\n    });\\n\\n    if (多路线否) {\\n        d.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"CSS选择器模版*\",\"path\":\"ejwb.js\",\"rule\":\"function 一级(列表, 标题, 图片, 集数, 链接, 访问头) {\\n    访问头 = !访问头 ? '' : 访问头\\n    var d = [];\\n    var code = getCode()\\n    pdfa(code, 列表).forEach(function(data) {\\n        d.push({\\n            title: pdfh(data, 标题),\\n            desc: pdfh(data, 集数),\\n            pic_url: pd(data, 图片)||图片 + \\\"@Referer=\\\" + 访问头,\\n            url: 'hiker://empty#immersiveTheme##autoCache#',\\n            col_type: \\\"movie_3\\\",\\nextra: {\\n            name: pdfh(data, 标题),\\n            url: pd(data, 链接),\\n            qz: MY_HOME\\n        }\\n        });\\n    });\\n    setResult(d);\\n}\\n\\n\\n\\nfunction 搜索(列表, 标题, 链接, 描述, 详情, 图片, 访问头) {\\n    var d = [];\\n    访问头 = !访问头 ? '' : 访问头\\n    pdfa(getResCode(), 列表).forEach(function(data) {\\n        d.push({\\n            title: pdfh(data, 标题),\\n            desc: pdfh(data, 描述),\\n            pic_url: pd(data, 图片) + \\\"@Referer=\\\" + 访问头,\\n            url: 'hiker://empty#immersiveTheme##autoCache#',\\n            content: pdfh(data, 详情),\\n\\nextra: {\\n            name: pdfh(data, 标题),\\n            url: pd(data, 链接),\\n            qz: MY_HOME\\n        }\\n        });\\n    });\\n    setResult(d);\\n}\\n\\n\\n\\n\\nfunction 最新(选择器, UA) {\\n    if (UA == \\\"PC\\\") {\\n        var code = fetch(getParam('url').replace(\\\"m.\\\", \\\"www.\\\"));\\n    } else {\\n        var code = request(getParam('url').replace(\\\"www.\\\", \\\"m.\\\"));\\n    }\\n    setResult(pdfh(code, 选择器))\\n}\\n\\n\\n\\neval(JSON.parse(request(\\\"hiker://page/qs?rule=聚漫🔮\\\")).rule)\\n\\nfunction 二级(头部列表, 标题, 图片, 描述, 访问头, 作者, 时间, 分类, 简介, 多路线否, 路线列表, 路线名, 选集总列表, 选集列表, 集名, 集url, 漫画解析,当前URL,当前页名,前缀,UA,防重载否) {\\n    var d = [];\\n\\n//头部列表  则默认使用 code 来作为头部列表数据\\n//多路线否  true 则使用多路线；false 则使用章路线\\n//UA  不填则使用手机端  'PC'则手机端\\n\\nif (当前页名) {\\n    setPageTitle(当前页名)\\n}\\n\\nif(防重载否){\\n//网页内容+防止重拉\\n    var code = 添加防止网页(当前URL, UA)\\n}else{\\n    var code = getCode()\\n}\\n    \\n\\n    //头部列表数据\\n    var 头部 = !头部列表 ? code : pdfa(code, 头部列表)[0];\\n    标题 = pdfh(头部, 标题)\\n    图片 = pdfh(头部, 图片)||图片\\n    if (图片) {\\n        图片 = 图片.includes('http') ? 图片 : 前缀 + 图片\\n        if (!访问头) {} else if (访问头.substr(0, 1) == '@') {\\n            图片 = 图片 + 访问头\\n        } else {\\n            图片 = 图片 + \\\"@Referer=\\\" + 访问头\\n        }\\n    }\\n    \\n\\n描述 = 描述.includes('$') ? 描述.split('$')[1] + pdfh(头部, 描述.split('$')[0]) : pdfh(头部, 描述)\\n\\n作者 = 作者.includes('$') ? 作者.split('$')[1] + pdfh(头部, 作者.split('$')[0]) : pdfh(头部, 作者)\\n    \\n时间 = 时间.includes('$') ? 时间.split('$')[1] + pdfh(头部, 时间.split('$')[0]) : pdfh(头部, 时间)\\n\\n分类 = 分类.includes('$') ? 分类.split('$')[1] + pdfh(头部, 分类.split('$')[0]) : pdfh(头部, 分类)\\n\\n    \\n    //头部列表\\n    添加头部列表(d, 标题, 图片, 描述, 作者, 时间, 分类,当前URL)\\n    \\n    //路线名与选集数据\\n    var 章节json = 优化路线章节数据(多路线否, code, 路线列表,路线名,选集总列表,选集列表,集名,集url,前缀,当前页名,图片)\\n\\n    //简介\\n    添加简介(d, pdfh(code, 简介), 当前URL, '')\\n\\n   //当没有章节内容，就不显示\\n    if (章节json.length > 0) {\\n\\n        //路线选择\\n        var 选择列表 = 添加选择路线(d, 章节json, 当前URL, 多路线否)\\n\\n        //选择下载\\n        添加选择下载(d, 章节json,多路线否)\\n\\n        //排序与选集\\n        var lazy = `@lazyRule=.js:` + 漫画解析;\\n        添加列表章节(d, 章节json[选择列表].title, 章节json[选择列表].list, lazy, 当前URL, '')\\n\\n        d.push({\\n            col_type: \\\"long_text\\\"\\n        });\\n    }\\n    setResult(d)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级列表*\",\"path\":\"ejlb\",\"rule\":\"var tabs = []\\nvar lists = []\\nvar arts = pdfa(html, 线路);\\narts.forEach((data, id) => {\\n    tabs.push(pdfh(data, 线路名))\\n})\\nvar conts = pdfa(html, 选集);\\nconts.forEach((data, id) => {\\n    lists.push(pdfa(data, 选集列表))\\n})\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"lists\\\");\\n}));\\nstorage0.putMyVar(\\\"lists\\\", lists);\\nvar list = lists[getMyVar(MY_URL, '0')];\\nvar 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\nvar 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\nvar 排序名 = '““””<b><span style=\\\"color:排序</span></b>'\\n\\nd.push({\\n    title: '““””<b><span style=\\\"color: ' + 排序 + '</span></b>',\\n    url: $(\\\"#noLoading#\\\").lazyRule((排序名, lazy) => {\\n        var lists = storage0.getMyVar(\\\"lists\\\");\\n        var 章节 = lists[getMyVar(MY_URL, '0')];\\n        var 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\n        var 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\n        updateItem({\\n            extra: {\\n                id: MY_URL + \\\"_排序\\\"\\n            },\\n            title: 排序名.replace('排序', 提示)\\n        })\\n        if (排序 == '#1aad19\\\">正序') {\\n            章节.reverse()\\n        }\\n        let cp = 章节.map((data, ssid) => {\\n            return {\\n                title: pdfh(data, 'a&&Text'),\\n                url: pd(data, 'a&&href') + lazy,\\n                col_type: 章节.length > 3 ? 'text_4' : 'text_2',\\n                extra: {\\n                    cls: MY_URL + \\\"_选集\\\"\\n                }\\n            };\\n        });\\n        deleteItemByCls(MY_URL + \\\"_选集\\\");\\n        addItemBefore(MY_URL + \\\"footer\\\", cp);\\n        putMyVar(MY_URL + \\\"章节排序\\\", 提示)\\n        return \\\"hiker://empty\\\"\\n    }, 排序名, lazy),\\n    col_type: 'flex_button',\\n    extra: {\\n        id: MY_URL + \\\"_排序\\\"\\n    }\\n})\\ntabs.forEach((data, id) => {\\n    d.push({\\n        title: getMyVar(MY_URL, '0') == id ? '““' + data + '””' : data,\\n        url: $(\\\"#noLoading#\\\").lazyRule((线路, lazy, id) => {\\n            var lists = storage0.getMyVar(\\\"lists\\\");\\n            var 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\n            var 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\n\\n            线路.forEach((data, xlid) => {\\n                updateItem({\\n                    title: id == xlid ? '““' + data + '””' : data,\\n                    extra: {\\n                        id: MY_URL + \\\"_线路\\\" + xlid\\n                    }\\n                });\\n            })\\n            putMyVar(MY_URL, id)\\n            var 章节 = lists[getMyVar(MY_URL, '0')];\\n            if (排序 == '#FF0000\\\">倒序') {\\n                章节.reverse()\\n            }\\n            let cp = 章节.map((data, ssid) => {\\n                return {\\n                    title: pdfh(data, 'a&&Text'),\\n                    url: pd(data, 'a&&href') + lazy,\\n                    col_type: 章节.length > 3 ? 'text_4' : 'text_2',\\n                    extra: {\\n                        cls: MY_URL + \\\"_选集\\\"\\n                    }\\n                };\\n            });\\n            deleteItemByCls(MY_URL + \\\"_选集\\\");\\n            addItemBefore(MY_URL + \\\"footer\\\", cp);\\n            return \\\"hiker://empty\\\"\\n        }, tabs, lazy, id),\\n        col_type: 'flex_button',\\n        extra: {\\n            id: MY_URL + \\\"_线路\\\" + id\\n        }\\n    });\\n})\\n\\nif (排序 == '#FF0000\\\">倒序') {\\n    list.reverse()\\n}\\nlist.forEach((data, id) => {\\n    d.push({\\n        title: pdfh(data, 'a&&Text'),\\n        url: pd(data, 'a&&href') + lazy,\\n        col_type: list.length > 3 ? 'text_4' : 'text_2',\\n        extra: {\\n            cls: MY_URL + \\\"_选集\\\"\\n        }\\n    });\\n})\\nlet newstip = list.length;\\nif (newstip) {\\n    setLastChapterRule('js:' + $.toString((newstip) => {\\n        setResult('更新至: 第' + newstip + \\\"集\\\");\\n    }, newstip));\\n}\\n\\nd.push({\\n    col_type: \\\"big_blank_block\\\",\\n    extra: {\\n        id: MY_URL + \\\"footer\\\"\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"爱米推类解析*\",\"path\":\"js\",\"rule\":\"var 漫画解析 = $.toString(() => {\\n            var url = input.replace('m','www');\\n            eval(pdfh(fetchPC(url), \\\"body&&script&&Html\\\"));\\n            var pics = [];\\n            if (chapterImages.length > 1) {\\n                chapterImages.forEach(img => {\\n                    pics.push(img+'@Referer='+url)\\n                })} else {\\n                    var html = request(input);\\n                    var list = pdfa(html, 'body&&.scroll-item');\\n                    var first = pdfa(html, 'body&&#image');\\n                    list = first.concat(list);\\n                    list.forEach(img => {\\n                            pics.push(pdfh(img, 'img&&data-src||src')+'@Referer='+input)\\n                    })\\n                }\\n                return \\\"pics://\\\" + pics.join(\\\"&&\\\")\\n            })\\n        var lazy = `@lazyRule=.js:` + 漫画解析;\"},{\"col_type\":\"movie_3\",\"name\":\"云口令*\",\"path\":\"import\",\"rule\":\"writeFile('hiker://files//rules/Tz/JM',fetch(input))\\n'toast://已从云口令获取聚漫源'\"},{\"col_type\":\"movie_3\",\"name\":\"更新详情*\",\"path\":\"Up\",\"rule\":\"js:\\nvar res = {};\\nvar items = [];\\nvar img = 'https://bing.img.run/1366x768.php';\\nitems.push({\\n    img: img,\\n    url: img + \\\"#.jpg\\\",\\n    desc: '0',\\n    col_type: 'card_pic_1'\\n});\\n\\nitems.push({\\n    title: \\\"““””<h4>【聚漫反馈收集】</h4>\\\" + '<span style=\\\"color: grey\\\">团子</span>',\\n    col_type: \\\"text_center_1\\\",\\n    url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#?rule=道长仓库Pro\\\",\\n    extra: {\\n        lver: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\",\\n        id: \\\"2847\\\"\\n    }\\n});\\n\\nif (getItem(\\\"read_policy\\\") !== \\\"1\\\") {\\n    items.push({\\n        title: '““””<small><font color=#871f78>本规则数据来源于网络，如您喜欢，请支持官方</font></small>',\\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\\n        url: $('#noHistory#').lazyRule(() => {\\n            setItem(\\\"read_policy\\\", \\\"1\\\")\\n            refreshPage(false)\\n            return \\\"toast://你已同意该协议\\\"\\n        }),\\n        col_type: 'text_center_1'\\n    })\\n}\\n\\nitems.push({\\n    title: \\\"使用说明\\\",\\n    url: \\\"hiker://page/Help#noHistory##noRecordHistory#\\\",\\n    col_type: \\\"text_2\\\"\\n});\\n\\nlet newVersion;\\nlet myVersion = MY_PARAMS.version;\\ntry {\\n    newVersion = JSON.parse(fetchPC(\\\"http://hiker.nokia.press/hikerule/dev/getbyid?id=2847\\\", {\\n        timeout: 1000\\n    })).result.ver;\\n} catch (e) {\\n    toast(\\\"道长仓库抽风了，本次未检测到新版信息\\\");\\n    newVersion = myVersion;\\n}\\nlet isUpdate = Number(newVersion) > Number(myVersion);\\nlet isVer = Number(newVersion) === Number(myVersion);\\nif (isUpdate) {\\n    log('有新版本:' + newVersion + ',当前:' + myVersion);\\n}\\nitems.push({\\n    title: isUpdate ? \\\"🆙新版本\\\" : \\\"规则发布页&反馈\\\",\\n    url: isUpdate ? \\\"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ6IGa5ryr8J+UruOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD0yODQ3\\\" : \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#?rule=道长仓库Pro\\\",\\n    col_type: \\\"text_2\\\",\\n    extra: {\\n        lver: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\",\\n        id: \\\"2847\\\"\\n    }\\n});\\nconst Color = \\\"#19B89D\\\";\\nvar des_desc = '<h1 style=\\\"text-align: center;\\\">🐾更新[1116]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①增加三图源PS：拉远程，更新海阔至7.22</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1113]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复包子部分漫画章节列表定位错误PS：拉远程</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1108]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫本地修复子页面动态分类bug，修复部分源（多多，CC）</br><br></<blockquote>' +\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[1102]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换聚漫本体，更换部分样式，修复部分源。可直接订阅仓库链接更新（PS：随缘更）</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[1005]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换聚漫本体，加入最新版缓存机制实现二次打开秒开，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0926]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换远程仓库，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0816]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫本体，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0809]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①删除失效源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0717]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①增加动态切换排序，PS：漫画吧<br>②搬模板Q动态分类&动态排序至聚漫｜PS：需更新聚漫</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0526]</h1><<blockquote><font color=\\\"red\\\">①修复包子选集错误&解析错误<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0527]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①新增若干图源<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0529]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①美化部分图源<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0530]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫模板<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0602]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复&美化好漫8<br>②美化八极｜PS：需清理缓存</br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0606]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新包子，尝试解决收藏问题，PS：需更新聚漫<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0608]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复鬼萝莉搜索<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0616]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①美化部分图源，PS：需清理缓存<br><br></<blockquote>'\\n\\nitems.push({\\n    title: '更新详情 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>',\\n    img: \\\"https://lanmeiguojiang.com/tubiao/more/197.png\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((jjid, decid, des_desc) => {\\n        if (getMyVar(\\\"jjs\\\", \\\"收起\\\") == \\\"收起\\\") {\\n            putMyVar(\\\"jjs\\\", \\\"展开\\\");\\n\\n            updateItem({\\n                extra: {\\n                    id: jjid\\n                },\\n                title: '更新详情 <small><small><span style=\\\"color:#19B89D\\\">收起></span></small></small>'\\n            })\\n\\n            updateItem({\\n                extra: {\\n                    textSize: 14,\\n                    lineSpacing: 3,\\n                    id: decid\\n                },\\n                title: '<span style=\\\"color:#808080\\\">' + des_desc + '</span>'\\n            })\\n            return \\\"hiker://empty\\\"\\n        } else {\\n            putMyVar(\\\"jjs\\\", \\\"收起\\\");\\n\\n            updateItem({\\n                extra: {\\n                    id: jjid\\n                },\\n                title: '更新详情<small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>'\\n            })\\n\\n            updateItem({\\n                extra: {\\n                    textSize: 14,\\n                    lineSpacing: 3,\\n                    id: decid\\n                },\\n                title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 150)\\n            })\\n            return \\\"hiker://empty\\\"\\n        }\\n\\n    }, MY_RULE + \\\"_jjid\\\", MY_RULE + \\\"_decid\\\", des_desc),\\n    col_type: \\\"avatar\\\",\\n    extra: {\\n        id: MY_RULE + \\\"_jjid\\\"\\n    }\\n});\\n\\nitems.push({\\n    title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 150),\\n    col_type: \\\"rich_text\\\",\\n    extra: {\\n        textSize: 14,\\n        lineSpacing: 3,\\n        id: MY_RULE + \\\"_decid\\\"\\n    }\\n});\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"使用帮助*\",\"path\":\"Help\",\"rule\":\"js:\\nvar res = {};\\nvar items = [];\\n\\nitems.push({\\n     img: 'https://s1.ax1x.com/2022/11/04/xLhgoR.jpg',\\n        desc: '0',\\n        col_type: 'pic_1_full'\\n});\\n\\nitems.push({\\n     img: 'https://s1.ax1x.com/2022/11/04/xLhcw9.jpg',\\n        desc: '0',\\n        col_type: 'pic_1_full'\\n});\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索*\",\"path\":\"search\",\"rule\":\"function convert1(str) {\\n    let c = str.split(\\\";\\\")\\n    return {\\n        列表: c[0],\\n        标题: c[1],\\n        链接: c[2],\\n        描述: c[3],\\n        详情: c[4],\\n        图片: c[5]\\n    }\\n}\\n\\nfunction merge(source, target) {\\n    let keys = Object.keys(source)\\n    for (let i in keys) {\\n        target[keys[i]] = source[keys[i]]\\n    }\\n}\\n\\nfunction 搜索(obj) {\\n    var d = [];\\n    if ($.type(obj) == \\\"string\\\") {\\n        obj = convert1(obj)\\n    }\\n    if (obj.规则) {\\n        let c = convert1(obj.规则)\\n        merge(c, obj)\\n    }\\n    let arr = pdfa(getResCode(), obj.列表);\\n       if (obj.列表处理 != null) {\\n            arr = obj.链接处理(arr)\\n        }\\n    for (let it of arr) {\\n        let url = pd(it, obj.链接)\\n        if (obj.链接处理 != null) {\\n            url = obj.链接处理(url)\\n        }\\n        let title = pdfh(it, obj.标题)\\n        if (obj.标题处理 != null) {\\n            title = obj.标题处理(title)\\n        }\\n        let pic = pd(it, obj.图片)\\n        if (obj.图片处理 != null) {\\n            pic = obj.图片处理(pic)\\n        }\\n        d.push({\\n            title: obj.标题 ? pdfh(it, obj.标题) : \\\"\\\",\\n            url: url+'#autoCache#',\\n            col_type: \\\"\\\",\\n            desc: obj.描述 ? pdfh(it, obj.描述) : \\\"\\\",\\n            content: obj.详情 ? pdfh(it, obj.详情) : \\\"\\\",\\n            pic_url: pic,\\n            extra: {\\n                ytitle: title,\\n                ypic: pic,\\n                yurl: url.replace('hiker://empty##','')\\n            }\\n        });\\n\\n    }\\n    setResult(d);\\n}\\nvar tool = {\\n    搜索: 搜索\\n}\\n$.exports = tool\"},{\"col_type\":\"movie_3\",\"name\":\"图片解密*\",\"path\":\"imgDES\",\"rule\":\"$.exports.imgDecrypt = function() {\\n    var javaImport = new JavaImporter();\\n    javaImport.importPackage(\\n        Packages.com.example.hikerview.utils,\\n        Packages.java.lang,\\n        Packages.java.security,\\n        Packages.java.util,\\n        Packages.java.io,\\n        Packages.java.text,\\n        Packages.javax.crypto,\\n        Packages.javax.crypto.spec\\n    );\\n    with(javaImport) {\\n        let bytes = FileUtil.toBytes(input);\\n        function decryptData(bArr) {\\n            var generateSecret = SecretKeyFactory.getInstance(\\\"desede\\\").generateSecret(new DESedeKeySpec(String('OW84U8Eerdb99rtsTXWSILDO').getBytes()));\\n            var cipher = Cipher.getInstance(\\\"desede/CBC/PKCS5Padding\\\");\\n            cipher.init(2, generateSecret, new IvParameterSpec(String('SK8bncVu').getBytes()));\\n            return cipher.doFinal(bArr);\\n        }\\n        //decryptData为解密方法\\n        bytes = decryptData(bytes);\\n        return FileUtil.toInputStream(bytes);\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"DES*\",\"path\":\"des\",\"rule\":\"var javaImport = new JavaImporter();\\njavaImport.importPackage(\\n    Packages.java.lang,\\n    Packages.java.security,\\n    Packages.java.util,\\n    Packages.java.io,\\n    Packages.java.text,\\n    Packages.javax.crypto,\\n    Packages.javax.crypto.spec\\n);\\nwith(javaImport) {\\n   function De(str) {\\n        var generateSecret = SecretKeyFactory.getInstance(\\\"desede\\\").generateSecret(new DESedeKeySpec(String('OW84U8Eerdb99rtsTXWSILDO').getBytes()));\\n        var instance = Cipher.getInstance(\\\"desede/CBC/PKCS5Padding\\\");\\n        instance.init(2, generateSecret, new IvParameterSpec(String('SK8bncVu').getBytes()));\\n        return String(instance.doFinal(_base64.decode(str, 2)));        \\n    }\\n}\\n\\n/*\\neval(getCryptoJS())\\nvar key = CryptoJS.enc.Utf8.parse('OW84U8Eerdb99rtsTXWSILDO')\\nvar iv = CryptoJS.enc.Utf8.parse('SK8bncVu')\\n\\nfunction De(data, encoding) {\\n    var decrypted = CryptoJS.TripleDES.decrypt(data, key, {\\n        iv: iv,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    });\\n    if (!encoding) {\\n        return decrypted.toString(CryptoJS.enc.Utf8);\\n    }\\n    return decrypted.toString(CryptoJS.enc.Base64);\\n};\\n*/\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/28.png"},{"last_chapter_rule":"","title":"轻合集.逐风者","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","titleColor":"#ff13b66a","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=510381049')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=510381049&s=640"},{"last_chapter_rule":"","title":"聚磁🔮","author":"Joe","version":106,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nel.push({\n    title: '““””<small><font color=#20b2aa>数据来源于对应的网站，软件和规则不提供任何内容！</font></small>',\n    desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除！</font></small>',\n    url: \"hiker://empty\",\n    col_type: 'text_center_1'\n});\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=5370&auth=ceb33c9e-418a-54f1-8299-31e6f2058616')\n// \n/*\n */","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', 'T')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((MY_PAGE == 1 || typeof MY_PAGE == 'undefined') &&\\n        (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].find((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].find((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].find((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://s1.328888.xyz/2022/07/29/FL3Bm.jpg"},{"last_chapter_rule":"","title":"轻合集.水淼","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=384625466')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=36835891&s=640"},{"last_chapter_rule":"","title":"轻合集.爱是用心","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=1302407216')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"last_chapter_rule":"","title":"用心资源网","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=4306');\n//putMyVar('remoteUrl', 'https://raw.codehub.cn/p/tv/d/TV/git/raw/master/yxzywc.json?token=WwrYIGv9yRVUke5xIQGiSVB0zMlHg1pR8u8ADSuxsO');\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"last_chapter_rule":"","title":"Q","author":"发粪涂墙","version":107,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=5009')\nif (request('hiker://home@模板·Q') == 'null') {\r\n    confirm({\r\n        title: '依赖检测',\r\n        content: '检测到缺少模板依赖,请导入!',\r\n        confirm: () => {\r\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\r\n        }\r\n    })\r\n}\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"hiker://images/icon4"},{"last_chapter_rule":"","title":"听合集","author":"小棉袄🌞&永远の明日","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://codeberg.org/Hood/Hiker/raw/branch/main/ting.json')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"https://pic.imgdb.cn/item/62ea0a5116f2c2beb1f3bc42.jpg"},{"last_chapter_rule":"","title":"AI茶杯","author":"","version":48,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let html = fetch(\\\"https://cupfox.app/s/\\\" + s);\\n    let text = pdfh(html, \\\"body&&#__NEXT_DATA__&&Html\\\");\\n    //log(text);\\n    let data = JSON.parse(text);\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of data.props.pageProps.resourceSearchResult.resources) {\\n        d.push({\\n            title: wrap(it.text, s),\\n            url: \\\"hiker://page/p?u=\\\" + base64Encode(it.url),\\n            col_type: \\\"text_1\\\",\\n            desc: it.website + \\\" \\\" + (it.tags || []).join(\\\" \\\"),\\n            pic_url: \\\"\\\",\\n            extra: {\\n                inheritTitle: false\\n            }\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\"茶杯狐\\\",\\n        url: \\\"web://https://cupfox.app\\\",\\n        col_type: \\\"flex_button\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI狗狗","author":"","version":48,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let u = \\\"https://www.dianyinggou.com/so/\\\" + s;\\n    let html = request(u);\\n    let data = pdfa(html, \\\"body&&.movies&&.each\\\");\\n    //log(text);  \\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of data) {\\n        let t = pdfh(it, \\\"a&&title\\\");\\n        let url = pd(it, \\\"a&&href\\\", u);\\n        d.push({\\n            title: wrap(t, s),\\n            url: \\\"webRule://\\\" + url + \\\"@\\\" + $.toString((rule, id, s) => {\\n                let list = document.querySelectorAll(\\\".movieZy a\\\");\\n                if (list && list.length > 0) {\\n                    let arr = []\\n                    for (let it of list) {\\n                        arr.push(it.outerHTML);\\n                    }\\n                    fy_bridge_app.log(arr.length + \\\"。\\\");\\n                    fy_bridge_app.parseLazyRule($$$().lazyRule((arr, rule, id, s) => {\\n                        try {\\n                            MY_URL = \\\"\\\";\\n                            let {\\n                                wrap\\n                            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                            let list = arr.map(it => {\\n                                let u = pd(it, \\\"a&&href\\\");\\n                                u = $(u).lazyRule((rule) => {\\n                                    let h = request(input, {\\n                                        redirect: false,\\n                                        withHeaders: true\\n                                    });\\n                                    log(h);\\n                                    h = JSON.parse(h).headers.location[0];\\n                                    return \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(h)\\n                                }, rule);\\n                                return {\\n                                    title: wrap(pdfh(it, \\\"li&&Text\\\"), s),\\n                                    url: u,\\n                                    desc: pdfh(it, \\\"li,1&&Text\\\"),\\n                                    col_type: \\\"text_1\\\",\\n                                    extra: {\\n                                        inheritTitle: false\\n                                    }\\n                                }\\n                            });\\n                            addItemAfter(id, list);\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, arr, rule, id, s));\\n                    return \\\"hiker://empty\\\"\\n                }\\n            }, MY_RULE.title, url, s),\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>二哈</font>\\\",\\n            pic_url: pd(it, \\\"img&&data-url\\\", u),\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\"二哈\\\",\\n        url: \\\"web://https://www.dianyinggou.com/\\\",\\n        col_type: \\\"flex_button\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"轻合集.晓","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","titleColor":"#ff13b66a","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=450384733')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"https://www.hualigs.cn/image/6107d579a6403.jpg"},{"last_chapter_rule":"","title":"轻合集.子丑寅卯","author":"轻合集生成器","version":95,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n// 当没有独立小程序首页时清除页面缓存\naddListener(\"onClose\", $.toString(() => {\n    if(parseInt(getMyVar('openedIndex', '0')) === 0){\n        JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n        deleteFile('_ruleHashCache')\n    }\n}));\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","titleColor":"#ff13b66a","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=2449105024');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n},{\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            writeFile('hiker://files/libs/' + url + '.js', JSON.stringify(rules))\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\nRULE = isIndex ?\\n    $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title) :\\n    Object.assign(JSON.parse(readFile(HASH)), RULE)\\n\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 缓存页面规则，避免每个extra重复携带，导致数据太大\\nlet MyRuleStr = JSON.stringify(MY_RULE),\\n    ruleHash = md5(MyRuleStr)\\nif (!fileExist(ruleHash)) {\\n    saveFile(ruleHash, MyRuleStr)\\n    // addListener可能被重写且在这里强退程序会导致缓存残留，缓存规则MD5，回首页再去删\\n    let _ruleHashCache = JSON.parse(readFile(\\\"_ruleHashCache\\\") || \\\"[]\\\")\\n    _ruleHashCache.push(ruleHash)\\n    saveFile(\\\"_ruleHashCache\\\", JSON.stringify(_ruleHashCache))\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = {};\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                HASH: ruleHash,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: { detail_find_rule: detailFindRule },\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: {},\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"https://i03piccdn.sogoucdn.com/ed5ffed305c1bbea"},{"last_chapter_rule":"","title":"轻合集·TyrantG","author":"小棉袄🌞&永远の明日","version":78,"type":"all","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon,\n            extra: { RULE: v }\n        }\n    if(newWindow) Object.assign(d.extra, { newWindow: true, windowId: getItem('myCollection') + d.title })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            setResult = function(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nmethod_setResult.invoke(javaContext, myCollection_el, CALLBACK_KEY, MY_RULE, MY_TYPE)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/data/rules.json')\n// \n// 包裹错误","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = 1\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet fypageFlag = MY_PARAMS.url.indexOf('fypage')\\nif (fypageFlag >= 0) pageNum = parseInt(/^\\\\d+/.exec(MY_URL.slice(fypageFlag)))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, pageNum),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            time = parseInt(readFile('updateTime')) || 0,\\n            now = new Date().getTime(),\\n            data = []\\n        if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                let remoteData = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    remoteData = JSON.parse(remoteData).rule\\n                data = JSON.parse(remoteData)\\n            } catch (e) {}\\n            if(data.length == 0) {\\n                data = JSON.parse(readFile('dataCache') || '[]')\\n                log('没有获取到更新数据')\\n            } else {\\n                data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n                saveFile('dataCache', JSON.stringify(data))\\n                saveFile('updateTime', now.toString())\\n                log('更新数据已写入本地')\\n            }\\n        } else {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_TYPE = 'search'\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img && !v.pic_url) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true),\\n    el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = readFile('searchThd') || '5',\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd) + '  ',\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/avatar.jpg"},{"last_chapter_rule":"","title":"轻合集.TyrantG","author":"轻合集生成器","version":100,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/data/rules.json');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/avatar.jpg"},{"last_chapter_rule":"","title":"轻合集.蓝莓♔","author":"轻合集生成器","version":95,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n// 当没有独立小程序首页时清除页面缓存\naddListener(\"onClose\", $.toString(() => {\n    if(parseInt(getMyVar('openedIndex', '0')) === 0){\n        JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n        deleteFile('_ruleHashCache')\n    }\n}));\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=2579949378');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n},{\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            writeFile('hiker://files/libs/' + url + '.js', JSON.stringify(rules))\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\nRULE = isIndex ?\\n    $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title) :\\n    Object.assign(JSON.parse(readFile(HASH)), RULE)\\n\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 缓存页面规则，避免每个extra重复携带，导致数据太大\\nlet MyRuleStr = JSON.stringify(MY_RULE),\\n    ruleHash = md5(MyRuleStr)\\nif (!fileExist(ruleHash)) {\\n    saveFile(ruleHash, MyRuleStr)\\n    // addListener可能被重写且在这里强退程序会导致缓存残留，缓存规则MD5，回首页再去删\\n    let _ruleHashCache = JSON.parse(readFile(\\\"_ruleHashCache\\\") || \\\"[]\\\")\\n    _ruleHashCache.push(ruleHash)\\n    saveFile(\\\"_ruleHashCache\\\", JSON.stringify(_ruleHashCache))\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = {};\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                HASH: ruleHash,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: { detail_find_rule: detailFindRule },\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: {},\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=2579949378&s=640"},{"last_chapter_rule":"","title":"轻合集.DM","author":"小棉袄🌞&永远の明日","version":92,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n    deleteFile('_ruleHashCache')\n}))\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = { '': '全部', 'all': '新番', 'video': '常用', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\nif (getItem(\"read_policy\") !== \"1\") {\n    el.push({\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\n        desc: '““””<small><font color=#f20c00>本规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t删了几个失效和劣质的</font></small>',\n        url: $('#noHistory#').lazyRule(() => {\n            setItem(\"read_policy\", \"1\")\n            refreshPage(false)\n            return \"toast://你已同意该协议\"\n        }),\n        col_type: 'text_center_1'\n    })\n}\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/###' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua) + '#noHistory##noRecordHistory#',\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl','https://docs.qq.com/doc/DQ3VBRXNzRHpYaGlO')\n// 调用腾讯文档，需Base64编码\n// 合集退出清缓存，在开启独立首页时合集触发退出导致无法刷新和下一页；页面内部退出清缓存，强退程序时导致缓存残留\n// #兼容链接中存在多个fypage","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if(input == '清除自定义数据'){\\n            deleteFile('customData')\\n        } else if(input == '启用合集自定义'){\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\nRULE = isIndex ?\\n    $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title) :\\n    Object.assign(JSON.parse(readFile(HASH)), RULE)\\n\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 缓存规则到本地 避免每个extra重复携带，导致数据太大\\nlet MyRuleStr = JSON.stringify(MY_RULE),\\n    ruleHash = md5(MyRuleStr)\\nif (!fileExist(ruleHash)) {\\n    saveFile(ruleHash, MyRuleStr)\\n    // addListener可能被重写，缓存规则MD5，回首页再去删\\n    let _ruleHashCache = JSON.parse(readFile(\\\"_ruleHashCache\\\") || \\\"[]\\\")\\n    _ruleHashCache.push(ruleHash)\\n    saveFile(\\\"_ruleHashCache\\\", JSON.stringify(_ruleHashCache))\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = {};\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                })(v.url),\\n                RULE: MY__RULE,\\n                HASH: ruleHash,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: { detail_find_rule: detailFindRule },\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: {},\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    //检查间隔，默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = []\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        var  html=fetch(getMyVar('remoteUrl'));\\nvar url=parseDomForHtml(html,'.melo-leaf&&Text');\\n\\n        try {\\n            let remoteData =base64Decode(url)\\n            if (url.startsWith('hiker://page/'))\\n                remoteData = JSON.parse(remoteData).rule\\n            data = JSON.parse(remoteData)\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(readFile('dataCache') || '[]')\\n    }\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3];log(url[1])\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, charset) {\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    urlParam[2] = urlParam[2] ? urlParam[2].match(/{(.*)}/)[1].split('&&') : []\\n    // 添加全局UA\\n    if (urlParam[2].findIndex((v) => v.startsWith('User-Agent@')) == -1) {\\n        if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"https://s2.app111222.com/logo.jpg"},{"last_chapter_rule":"","title":"轻合集.仰望星空","author":"轻合集生成器","version":92,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n    deleteFile('_ruleHashCache')\n}))\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/###' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua) + '#noHistory##noRecordHistory#',\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=1290597077')\n// \n// ","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if(input == '清除自定义数据'){\\n            deleteFile('customData')\\n        } else if(input == '启用合集自定义'){\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\nRULE = isIndex ?\\n    $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title) :\\n    Object.assign(JSON.parse(readFile(HASH)), RULE)\\n\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 缓存规则到本地 避免每个extra重复携带，导致数据太大\\nlet MyRuleStr = JSON.stringify(MY_RULE),\\n    ruleHash = md5(MyRuleStr)\\nif (!fileExist(ruleHash)) {\\n    saveFile(ruleHash, MyRuleStr)\\n    // addListener可能被重写，缓存规则MD5，回首页再去删\\n    let _ruleHashCache = JSON.parse(readFile(\\\"_ruleHashCache\\\") || \\\"[]\\\")\\n    _ruleHashCache.push(ruleHash)\\n    saveFile(\\\"_ruleHashCache\\\", JSON.stringify(_ruleHashCache))\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = {};\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                })(v.url),\\n                RULE: MY__RULE,\\n                HASH: ruleHash,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: { detail_find_rule: detailFindRule },\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: {},\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    //检查间隔，默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = []\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        let url = getMyVar('remoteUrl')\\n        try {\\n            let remoteData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                remoteData = JSON.parse(remoteData).rule\\n            data = JSON.parse(remoteData)\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(readFile('dataCache') || '[]')\\n    }\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, charset) {\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    urlParam[2] = urlParam[2] ? urlParam[2].match(/{(.*)}/)[1].split('&&') : []\\n    // 添加全局UA\\n    if (urlParam[2].findIndex((v) => v.startsWith('User-Agent@')) == -1) {\\n        if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=1290597077&s=640"},{"last_chapter_rule":"","title":"轻合集.帅√`人才","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=48597962')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=48597962&s=640"},{"last_chapter_rule":"","title":"一个轻合集","author":"Joker","version":9805,"type":"all","url":"hiker://empty","col_type":"icon_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n// 当没有独立小程序首页时清除页面缓存\naddListener(\"onClose\", $.toString(() => {\n    if(parseInt(getMyVar('openedIndex', '0')) === 0){\n        JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n        deleteFile('_ruleHashCache')\n    }\n}))\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    types = {'':'全部'};\n    Array.from(new Set(rules.map(e=>e.type))).forEach(t=>types[t]=t);\nfor (let k in types){\n    if (!k || rules.find((v) => v.type == k)){\n\t      let count = rules.filter(it => !k || it.type === k).length;\n        el.push({\n            title: '““””' + (k == typeShow ? (types[k]+count).bold().fontcolor('#12b668') : types[k]+count),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\t}\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', '一个影视')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule(() => {\\n            let url = getMyVar('remoteUrl')\\n            if(url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, /*{\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},*/ {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: RULE.pageList }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = [];\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        try {\\n            data = $.require(\\\"hiker://page/creator\\\");\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(fetch('hiker://files/libs/' + md5(url) + '.js') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            writeFile('hiker://files/libs/' + md5(url) + '.js', JSON.stringify(data));\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(fetch('hiker://files/libs/' + md5(url) + '.js') || '[]')\\n    }\\n    \\n    //data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"生成规则集\",\"path\":\"creator\",\"rule\":\"let appjson = $.require('hiker://page/appJson');\\n\\nfunction randomSort3(arr) {\\n    /*arr.sort(function() {\\n        return Math.random() - 0.5;\\n    });*/\\n    return arr;\\n}\\n\\nlet appconts = appjson.data,\\n    rules = [],\\n    types = { \\\"\\\": \\\"全部\\\" };\\nfor (let i = 0; i < appconts.length; i++) {\\n    let applist = randomSort3(appconts[i].list),\\n        apptype = appconts[i].title /* + applist.length*/ ;\\n    types[apptype] = apptype;\\n    if (apptype.includes(\\\"个人收集\\\")) continue;\\n    for (let j = 0; j < applist.length; j++) {\\n        let apptitle = applist[j].title,\\n            appicon = applist[j].img,\\n            appUrl = applist[j].url,\\n            home_url = \\\"\\\",\\n            find_rule = \\\"\\\",\\n            search_url = \\\"\\\",\\n            searchFind = \\\"\\\",\\n            pages = [],\\n            last_chapter_rule = \\\"\\\",\\n            appUa = \\\"\\\";\\n        //处理重名的\\n        let num = 1,\\n            temp = apptitle;\\n        while (rules.some(cur => cur.title == apptitle)) {\\n            num = num + 1;\\n            apptitle = temp + num;\\n        }\\n        //规则链接和搜索链接\\n        if (/神马|TV/.test(apptype)) {\\n            home_url = \\\"hiker://empty##\\\" + appUrl + \\\"?ac=list&page=fypage\\\";\\n            if (/19jx|293ys|zhaikanys|ji\\\\-ding\\\\-he|phoebe|yunbo\\\\.bxin|lanrentk|hetaoys|pxun|139\\\\.155|fkkdy|056158|aixixi|ruoxinew|feifan123|siqitv/.test(appUrl)) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + '?ac=list&page=fypage&zm=**';\\n            } else {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + '?ac=list&page=fypage&wd=**';\\n            }\\n        } else {\\n            if (appUrl.includes(\\\"api.php/app\\\")) {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"index_video?token=\\\";\\n            } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"index_video?token=\\\";\\n            } else {\\n                home_url = \\\"hiker://empty##\\\" + appUrl + \\\"/vodPhbAll\\\";\\n            }\\n\\n            if (appUrl.includes('api.php/app')) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + 'search?pg=fypage&token=&text=**';\\n            } else if (appUrl.includes('xgapp')) {\\n                search_url = \\\"hiker://empty##\\\" + appUrl + 'search?pg=fypage&text=**';\\n            } else {\\n                if (/iopenyun/.test(appUrl)) {\\n                    search_url = \\\"hiker://empty##\\\" + appUrl + '/list?page=fypage&limit=10&wd=**';\\n                } else {\\n                    search_url = \\\"hiker://empty##\\\" + appUrl + '?page=fypage&limit=10&wd=**';\\n                }\\n            }\\n        }\\n        //需要特殊处理的链接\\n        function changeUrl(url) {\\n            let newUrl = url;\\n            if (url.includes(\\\"omofun\\\")) {\\n                newUrl = url + \\\"&csrf=a%2BIKGLunJCZuad%2BxETLrZuBoqhluFCD0dH86E8IENvBzMfBLa6dB8RzoxxIvvBEMeJzJnUSt51FhlPBd4Kr5yhGXlyNvDkJyNMDgDZ1b%2FsjXAeMtj17XteM8puTY2PQnQwYOyj%2FHUCAVRZkrflsk87YG1VeSwnET8TprDD8t6ug%3D@signature=FED4A092D5BBBE18117A3B558EB6461A92A52CF7\\\";\\n            } else if (url.includes(\\\"xinluan\\\")) {\\n                newUrl = url + \\\"&csrf=SREQAPX8tFEKpV2dLDjLZhKk8IxJfDWhN%2BmksWJ%2FkdRVwgUh%2FQkTDZEoQASaAp7HzUix87T%2BPLkAIw6yH%2B6MrvaqJM9rJ5l2b85IQRbBbW%2BDbSYRO8bmTsKdLYDTVtRHhz5nylRWlGUidxHfVyLO9tZUiBk1Y2Awo%2Fzsa2tH2u8%3D@signature=FBC7088C677D297E6BBBC8584A93372DDE10FD96\\\";\\n            } else if (url.includes(\\\"sxbrd\\\")) {\\n                newUrl = url + \\\"&csrf=r2NDLtpS8Euqh%2F%2F8Y96ycOUOKS9ICzNYzyaw5C2UfEgoDFDHX%2Frqj%2BYcLWQzH5%2BR6moUOlwOAoJREtUa376ud74627UDzNQ1sRGdTD8kb36s1eTMemcn8d0i7WJ6k9ih5IP4Ad7fpa6%2F3Dst1joGncyr716dRHDMfcvrs3S29jI%3D@client_name=55WF55yL5b2x6KeG\\\";\\n            }\\n            return newUrl;\\n        }\\n        //请求UA\\n        if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\") || appUrl.includes(\\\"freekan\\\")) {\\n            appUa = \\\"Dart/2.14 (dart:io)\\\";\\n        } else if (/zsb|fkxs|xays|xcys|szys|dxys|ytys|qnys/.test(appUrl)) {\\n            appUa = \\\"Dart/2.15 (dart:io)\\\";\\n        } else if (appUrl.includes(\\\".vod\\\")) {\\n            appUa = \\\"okhttp/4.1.0\\\";\\n        } else {\\n            appUa = \\\"Dalvik/2.1.0\\\"; //TV\\n        }\\n        //首页规则、分类规则、二级规则和视频解析\\n        if (/神马|TV/.test(apptype)) {\\n            find_rule = \\\"js:\\\" + $.toString(function(appUrl, appUa) {\\n                let items = [];\\n                if (MY_PAGE == 1) {\\n                    try {\\n                        let typeJson = JSON.parse(fetch(appUrl + \\\"?ac=flitter\\\"), { headers: { \\\"User-Agent\\\": appUa } });\\n                        for (let key in typeJson) {\\n                            items.push({\\n                                title: key,\\n                                col_type: \\\"flex_button\\\",\\n                                url: $(\\\"hiker://empty##\\\" + appUrl + \\\"?ac=list&page=fypage&class=\\\" + key).rule((typeJson, appUa) => {\\n                                    addListener(\\\"onClose\\\", \\\"clearVar('filter')\\\");\\n                                    let items = [],\\n                                        keys = {},\\n                                        tykeys = [],\\n                                        filter = {},\\n                                        color = \\\"#FA7298\\\";\\n                                    for (let index in typeJson) {\\n                                        if (typeJson[index].values.length == 1) continue;\\n                                        let key = typeJson[index].field,\\n                                            filterName = \\\"全部\\\" + typeJson[index].name;\\n                                        tykeys.push(key);\\n                                        keys[\\\"f\\\" + key] = \\\"\\\";\\n                                        filter[\\\"f\\\" + key] = [filterName].concat(typeJson[index].values);\\n                                    }\\n                                    if (!getVar(\\\"filter\\\", \\\"\\\")) { putVar(\\\"filter\\\", JSON.stringify(keys)) }\\n                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                    if (MY_PAGE == 1) {\\n                                        for (let item in filter) {\\n                                            for (let index = 0; index < filter[item].length; index++) {\\n                                                items.push({\\n                                                    title: temp[item] == \\\"\\\" ? (index === 0 ? \\\"““””\\\" + filter[item][0].bold().fontcolor(color) : filter[item][index]) : (temp[item] == filter[item][index] ? \\\"““””\\\" + filter[item][index].bold().fontcolor(color) : filter[item][index]),\\n                                                    col_type: \\\"scroll_button\\\",\\n                                                    url: $().lazyRule((des, name) => {\\n                                                        let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                        temp[name] = des.indexOf(\\\"全部\\\") != -1 ? \\\"\\\" : des;\\n                                                        putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                        refreshPage(false);\\n                                                        return \\\"hiker://empty\\\"\\n                                                    }, filter[item][index], item)\\n                                                })\\n                                            }\\n                                            items.push({ col_type: \\\"blank_block\\\" })\\n                                        }\\n                                    }\\n                                    let url = MY_URL.split(\\\"##\\\")[1] + \\\"&\\\" + tykeys.map(cur => cur + \\\"=f\\\" + cur).join(\\\"&\\\");\\n                                    for (let item in temp) {\\n                                        url = url.replace(item, temp[item]);\\n                                    }\\n                                    let rescode = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                                    if (rescode.indexOf('检测中') != -1) {\\n                                        rescode = fetch(url + '&btwaf' + rescode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                                    }\\n                                    let html = JSON.parse(rescode);\\n                                    try {\\n                                        eval(JSON.parse(fetch('hiker://page/tvlistdata')).rule);\\n                                    } catch (e) {\\n                                        log(\\\"视频列表出错:\\\" + e.message);\\n                                    }\\n                                    setResult(items);\\n                                }, typeJson[key], appUa)\\n                            })\\n                        }\\n                    } catch (e) {\\n                        log(\\\"首页分类出错:\\\" + e.message);\\n                    }\\n                }\\n                try {\\n                    let url = MY_URL.split('##')[1],\\n                        html = JSON.parse(fetch(url));\\n                    eval(JSON.parse(fetch('hiker://page/tvlistdata')).rule);\\n                } catch (e) {\\n                    log(\\\"首页推荐出错:\\\" + e.message);\\n                }\\n                setResult(items);\\n            }, appUrl, appUa)\\n            let rule_tvlistdata = $.toString(function() {\\n                let list = html.data;\\n                for (let i = 0; i < list.length; i++) {\\n                    let { title, pic, nextlink, state } = list[i];\\n                    let url = nextlink.startsWith('http') ? nextlink : appUrl + '?ac=detail&ids=' + nextlink;\\n                    items.push({\\n                        title: title,\\n                        pic_url: pic + '@Referer=',\\n                        desc: state,\\n                        col_type: 'movie_3_marquee',\\n                        url: $(\\\"#immersiveTheme#hiker://empty##\\\" + url).rule(() => {\\n                            try {\\n                                eval(JSON.parse(fetch('hiker://page/tvmovlist')).rule);\\n                            } catch (e) {\\n                                log(\\\"影片详情出错:\\\" + e.message);\\n                                setResult([]);\\n                            }\\n                        })\\n                    });\\n                }\\n            });\\n            let rule_tvmovlist = $.toString(function(appUrl, appUa) {\\n                addListener(\\\"onClose\\\", $.toString((url) => {\\n                    clearVar('now');\\n                    clearVar(url);\\n                }, MY_URL));\\n                let items = [],\\n                    html = getVar(MY_URL, \\\"\\\");\\n                //domin = MY_URL.split(\\\"##\\\")[1].match(/([\\\\S]*?:\\\\/\\\\/[\\\\S]*?)\\\\//)[1];\\n                if (html == \\\"\\\") {\\n                    html = fetch(MY_URL.split(\\\"##\\\")[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                    putVar(MY_URL, html);\\n                }\\n                html = JSON.parse(html);\\n\\n                //简介\\n                let { title, pubtime, trunk, area, type, director, actor, img_url, intro } = html;\\n                items.push({\\n                    title: title + \\\"(\\\" + pubtime + \\\")\\\" + \\\"\\\\n\\\" + area.join(\\\"/\\\") + \\\"/\\\" + type.join(\\\"/\\\") + \\\"/\\\" + trunk,\\n                    desc: \\\"导演:\\\" + director.join(\\\",\\\") + \\\"\\\\n\\\" + \\\"主演:\\\" + actor.join(\\\",\\\"),\\n                    pic_url: img_url,\\n                    url: \\\"hiker://empty\\\",\\n                    col_type: 'movie_1_vertical_pic_blur'\\n                }, {\\n                    title: '剧情简介:',\\n                    desc: intro,\\n                    url: $('hiker://empty#noRecordHistory#').rule((desc) => {\\n                        setResult([{\\n                            title: desc,\\n                            col_type: 'long_text'\\n                        }]);\\n                    }, intro),\\n                    col_type: 'text_1'\\n                });\\n                //断插\\n                let dnen = getMyVar(\\\"dnen\\\", \\\"0\\\");\\n                items.push({\\n                    title: '断插:' + (dnen == '1' ? '““✅””' : '❎'),\\n                    url: $('').lazyRule((dnen) => {\\n                        if (dnen == '1') {\\n                            putMyVar(\\\"dnen\\\", \\\"0\\\");\\n                            refreshPage(false);\\n                            return 'toast://已禁用断插调用!';\\n                        } else {\\n                            putMyVar(\\\"dnen\\\", \\\"1\\\");\\n                            refreshPage(false);\\n                            return 'toast://已开启断插调用!'\\n                        }\\n                    }, dnen),\\n                    col_type: 'text_2'\\n                });\\n                items.push({\\n                    title: '线路配置',\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    //url:\\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#\\\",\\n                    col_type: 'text_2'\\n                });\\n                //线路列表\\n                let tabs = Object.keys(html.videolist);\\n                if (getVar(\\\"now\\\", \\\"\\\") == \\\"\\\") { putVar(\\\"now\\\", tabs[0]) }\\n                items.push({\\n                    title: \\\"““↓↑””\\\",\\n                    url: \\\"hiker://empty@lazyRule=.js:putVar('appmtvsort', getVar('appmtvsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功!'\\\",\\n                    col_type: 'scroll_button'\\n                });\\n                for (let i in tabs) {\\n                    items.push({\\n                        title: getVar(\\\"now\\\") == tabs[i] ? \\\"““””\\\" + tabs[i].bold().fontcolor(\\\"#FA7298\\\") : tabs[i],\\n                        url: \\\"hiker://empty@lazyRule=.js:putVar('now','\\\" + tabs[i] + \\\"');refreshPage(false);'toast://切换成功!'\\\",\\n                        col_type: 'scroll_button'\\n                    })\\n                }\\n                //视频列表\\n                let ptab = getVar(\\\"now\\\"),\\n                    list = html.videolist[ptab];\\n                log('当前线路:' + ptab);\\n                if (getVar('appmtvsort', '1') == '0') {\\n                    list.reverse();\\n                };\\n                for (let j = 0; j < list.length; j++) {\\n                    let srcurl = list[j].url;\\n                    if (/293jx1/.test(srcurl)) {\\n                        srcurl = srcurl.replace('293jx1', 'jx');\\n                    } else if (/8d8q|diliktv|haokanju1|cztv|fit\\\\:8|ppzhu/.test(appUrl)) {\\n                        srcurl = srcurl + '&app=10000&account=272775028&password=qq272775028';\\n                    }\\n                    let title = list[j].title;\\n                    //title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n                    items.push({\\n                        title: title,\\n                        col_type: \\\"text_4\\\",\\n                        url: eval(JSON.parse(fetch(\\\"hiker://page/lazyParse\\\")).rule)\\n                    });\\n                }\\n                setResult(items);\\n            }, appUrl, appUa);\\n            let lazyParse = $.toString(() => {\\n                let vlink = srcurl;\\n                if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                    vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                }\\n                let enDn = getMyVar(\\\"dnen\\\", \\\"0\\\"),\\n                    test1 = vlink.search(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) != -1,\\n                    test2 = vlink.search(/LT\\\\-|RongXingVR\\\\-|renrenmi\\\\-|xfy\\\\-|suoyo\\\\.cc|fen\\\\.laodi|ruifenglb|xueren\\\\-/) != -1;\\n                if ((test1 || test2) && enDn == '1') {\\n                    return $('hiker://empty').lazyRule((vlink) => {\\n                        log(\\\"调用断插解析,视频链接:\\\" + vlink);\\n                        eval(\\\"let config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(vlink);\\n                    }, vlink)\\n                } else {\\n                    return $(\\\"hiker://empty\\\").lazyRule((ptab, srcurl, appUrl) => {\\n                        log(\\\"使用默认解析,视频链接:\\\" + srcurl);\\n                        //动态解析代码开始\\n                        function changeVideoUrl(url) {\\n                            //改变特定地址的Referer\\n                            if (url.includes(\\\"wkfile\\\")) {\\n                                url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n                            } else if (ptab == 'bilibili') {\\n                                url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                            } else if (ptab == 'mgtv') {\\n                                url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                            } else if (url.includes(\\\"ojbk\\\")) {\\n                                url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n                            }\\n                            //返回视频链接\\n                            if (!url.includes(\\\"http\\\")) {\\n                                throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n                            } else {\\n                                if (/\\\\.m3u8/.test(url)) {\\n                                    return cacheM3u8(url);\\n                                } else {\\n                                    return url + '#isVideo=true#';\\n                                }\\n                            }\\n                        }\\n                        try {\\n                            if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(srcurl) && /http/.test(srcurl) && !/\\\\.html/.test(srcurl) && !/(url|v|vid)\\\\=/.test(srcurl)) {\\n                                if (!/fen\\\\.laodi|ruifenglb|suoyo\\\\.cc/.test(srcurl)) {\\n                                    log(\\\"检测到资源地址可能是视频链接\\\");\\n                                    return changeVideoUrl(srcurl);\\n                                }\\n                            }\\n                            //----分割线----//\\n                            let scode = JSON.parse(fetch(srcurl, {\\n                                headers: {\\n                                    \\\"User-Agent\\\": MOBILE_UA\\n                                },\\n                                redirect: false,\\n                                withStatusCode: true\\n                            }));\\n                            //返回重定向的链接 \\n                            if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                                let redurl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                                log('重定向:' + redurl);\\n                                if (!/(url|vid|v)\\\\=/.test(redurl)) {\\n                                    return changeVideoUrl(redurl);\\n                                }\\n                                /*else if (/\\\\=http/.test(redurl) && /\\\\.m3u8|\\\\.mp4|\\\\.flv/.test(redurl)) {\\n                                    purl = redurl.substring(redurl.indexOf('=http') + 1);\\n                                }*/\\n                                scode.body = fetch(redurl);\\n                            }\\n                            //开始嗅探\\n                            let html = scode.body;\\n                            if (/404 Not Found|备案后可继续访问/.test(html)) {\\n                                throw new Error(\\\"404了\\\");\\n                            } else if (/\\\\<body/.test(html)) {\\n                                return $([\\\"开始视频嗅探\\\", \\\"打开解析网页\\\", \\\"使用内置解析\\\"], 1, \\\"检测到解析为网页数据\\\").select((ptab, srcurl, appUrl) => {\\n                                    if (input == \\\"开始视频嗅探\\\") {\\n                                        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                                        return x5rule(srcurl, srcurl);\\n                                    } else if (input == \\\"打开解析网页\\\") {\\n                                        return \\\"web://\\\" + srcurl;\\n                                    } else if (input == \\\"使用内置解析\\\") {\\n                                        let vlink = srcurl;\\n                                        if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                                            vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                                        }\\n                                        log(\\\"使用内置解析,视频链接:\\\" + vlink);\\n                                        showLoading(\\\"正在进行解析...\\\");\\n                                        return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                                    }\\n                                }, ptab, srcurl, appUrl)\\n                            } else {\\n                                //log('尝试从json数据获取');\\n                                try {\\n                                    let purl = JSON.parse(html).url;\\n                                    return changeVideoUrl(purl);\\n                                } catch (e) {\\n                                    /*let purl = html.match(/[\\\\'\\\\\\\"]url[\\\\'\\\\\\\"]:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1].replace(/\\\\\\\\/g, '');\\n                                    return changeVideoUrl(purl);*/\\n                                    throw new Error('解析可能加密了');\\n                                }\\n                            }\\n                        } catch (e) {\\n                            log('未能成功获取视频地址:' + e.message);\\n                            let vlink = srcurl;\\n                            if (/(url|vid|v)\\\\=/.test(srcurl)) {\\n                                vlink = srcurl.substring(srcurl.search(/(url|vid|v)\\\\=/)).split('=')[1].split('&')[0];\\n                            }\\n                            log(\\\"尝试使用内置解析,视频链接:\\\" + vlink);\\n                            return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                        }\\n                        //动态解析代码结束\\n                    }, ptab, srcurl, appUrl);\\n                }\\n            });\\n            pages.push({\\n                name: \\\"TV列表\\\",\\n                path: \\\"tvlistdata\\\",\\n                rule: rule_tvlistdata\\n            }, {\\n                name: \\\"TV选集\\\",\\n                path: \\\"tvmovlist\\\",\\n                rule: rule_tvmovlist\\n            }, {\\n                name: \\\"视频解析\\\",\\n                path: \\\"lazyParse\\\",\\n                rule: lazyParse\\n            });\\n        } else {\\n            find_rule = \\\"js:\\\" + $.toString(function(changeUrl, appUrl, appUa) {\\n                let items = [];\\n                //获取分类内容\\n                try {\\n                    let typeJson = [];\\n                    if (appUrl.includes(\\\"api.php/app\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"nav?token=\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '&btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).list;\\n                    } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"nav?token=\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '&btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).data;\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        let typeUrl = changeUrl(appUrl + \\\"/types\\\");\\n                        let typcode = request(typeUrl, { headers: { \\\"User-Agent\\\": appUa } });\\n                        if (typcode.indexOf('检测中') != -1) {\\n                            typcode = fetch(typeUrl + '?btwaf' + typcode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                        }\\n                        typeJson = JSON.parse(typcode).data.list;\\n                    }\\n                    //获取分类列表\\n                    for (let i = 0; i < typeJson.length; i++) {\\n                        //分类视频地址\\n                        let tyurl = \\\"\\\",\\n                            typeArray = Object.keys(typeJson[i].type_extend).filter(cur => [\\\"class\\\", \\\"area\\\", \\\"lang\\\", \\\"year\\\"].includes(cur)),\\n                            typeUrl = typeArray.map(cur => cur + \\\"=f\\\" + cur).join(\\\"&\\\");\\n                        if (appUrl.includes('api.php/app')) {\\n                            tyurl = appUrl + 'video?tid=' + typeJson[i].type_id + '&page=fypage&token=&' + typeUrl;\\n                        } else if (appUrl.includes('xgapp')) {\\n                            tyurl = appUrl + 'video?tid=' + typeJson[i].type_id + '&page=fypage&' + typeUrl;\\n                        } else if (appUrl.includes(\\\".vod\\\")) {\\n                            if (/iopenyun/.test(appUrl)) {\\n                                tyurl = appUrl + '/list?type=' + typeJson[i].type_id + '&page=fypage&by=fby&limit=9&' + typeUrl;\\n                            } else {\\n                                tyurl = appUrl + '?type=' + typeJson[i].type_id + '&page=fypage&by=fby&limit=9&' + typeUrl;\\n                            }\\n                        }\\n                        //构建动态分类\\n                        items.push({\\n                            title: typeJson[i].type_name,\\n                            url: $(\\\"hiker://empty##\\\" + tyurl).rule((appUrl, type_extend, changeUrl, appUa) => {\\n                                addListener(\\\"onClose\\\", \\\"clearVar('filter')\\\");\\n                                let items = [];\\n                                if (MY_PAGE == 1) { //动态分类\\n                                    let keys = {},\\n                                        filter = {},\\n                                        filterNames = { class: \\\"类型\\\", area: \\\"地区\\\", lang: \\\"语言\\\", year: \\\"年份\\\", star: \\\"明星\\\", director: \\\"导演\\\", state: \\\"状态\\\", version: \\\"版本\\\" },\\n                                        defaultFilter = {\\n                                            fclass: [\\\"全部类型\\\", \\\"喜剧\\\", \\\"爱情\\\", \\\"恐怖\\\", \\\"动作\\\", \\\"科幻\\\", \\\"剧情\\\", \\\"战争\\\", \\\"警匪\\\", \\\"犯罪\\\", \\\"动画\\\", \\\"奇幻\\\", \\\"武侠\\\", \\\"冒险\\\", \\\"枪战\\\", \\\"悬疑\\\", \\\"惊悚\\\", \\\"经典\\\", \\\"青春\\\", \\\"文艺\\\", \\\"微电影\\\", \\\"古装\\\", \\\"历史\\\", \\\"运动\\\", \\\"农村\\\", \\\"儿童\\\", \\\"网络电影\\\"],\\n                                            farea: [\\\"全部地区\\\", \\\"内地\\\", \\\"香港\\\", \\\"台湾\\\", \\\"美国\\\", \\\"英国\\\", \\\"法国\\\", \\\"日本\\\", \\\"韩国\\\", \\\"德国\\\", \\\"泰国\\\", \\\"印度\\\", \\\"西班牙\\\", \\\"加拿大\\\", \\\"其他\\\"],\\n                                            fyear: [\\\"全部年份\\\", \\\"2022\\\", \\\"2021\\\", \\\"2020\\\", \\\"2019\\\", \\\"2018\\\", \\\"2017\\\", \\\"2016\\\", \\\"2015\\\", \\\"2014\\\", \\\"2013\\\", \\\"2012\\\", \\\"2011\\\", \\\"2010\\\", \\\"2009\\\", \\\"2008\\\", \\\"2007\\\", \\\"2006\\\", \\\"2005\\\", \\\"2004\\\", \\\"2003\\\", \\\"2002\\\", \\\"2001\\\", \\\"2000\\\"],\\n                                            flang: [\\\"全部语言\\\", \\\"国语\\\", \\\"英语\\\", \\\"粤语\\\", \\\"闽南语\\\", \\\"韩语\\\", \\\"日语\\\", \\\"法语\\\", \\\"德语\\\", \\\"其他\\\"]\\n                                        };\\n                                    for (let key in type_extend) {\\n                                        if (![\\\"class\\\", \\\"area\\\", \\\"lang\\\", \\\"year\\\"].includes(key)) continue;\\n                                        keys[\\\"f\\\" + key] = \\\"\\\";\\n                                        keys[\\\"fby\\\"] = \\\"\\\";\\n                                        let filterName = \\\"全部\\\" + filterNames[key];\\n                                        filter[\\\"f\\\" + key] = [filterName].concat(type_extend[key].split(\\\",\\\"));\\n                                        if (filter[\\\"f\\\" + key].length == 2) {\\n                                            filter[\\\"f\\\" + key] = defaultFilter[\\\"f\\\" + key]\\n                                        }\\n                                    }\\n                                    if (!getVar(\\\"filter\\\", \\\"\\\")) { putVar(\\\"filter\\\", JSON.stringify(keys)) }\\n                                    var temp = JSON.parse(getVar(\\\"filter\\\")),\\n                                        color = \\\"#FA7298\\\";\\n                                    for (let item in filter) {\\n                                        for (let index = 0; index < filter[item].length; index++) {\\n                                            items.push({\\n                                                title: temp[item] == \\\"\\\" ? (index === 0 ? \\\"““””\\\" + filter[item][0].bold().fontcolor(color) : filter[item][index]) : (temp[item] == filter[item][index] ? \\\"““””\\\" + filter[item][index].bold().fontcolor(color) : filter[item][index]),\\n                                                col_type: \\\"scroll_button\\\",\\n                                                url: $().lazyRule((des, name) => {\\n                                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                    temp[name] = des.indexOf(\\\"全部\\\") != -1 ? \\\"\\\" : des;\\n                                                    putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                    refreshPage(false);\\n                                                    return \\\"hiker://empty\\\"\\n                                                }, filter[item][index], item)\\n                                            })\\n                                        }\\n                                        items.push({ col_type: \\\"blank_block\\\" })\\n                                    }\\n                                    let by = { 默认顺序: \\\"\\\", 最新: \\\"time\\\", 最热: \\\"hits\\\", 评分: \\\"score\\\" };\\n                                    if (appUrl.indexOf('api.php/app') == -1 && appUrl.indexOf('xgapp') == -1) {\\n                                        for (let item in by) {\\n                                            items.push({\\n                                                title: temp[\\\"fby\\\"] == by[item] ? \\\"““””\\\" + item.bold().fontcolor(color) : item,\\n                                                col_type: \\\"scroll_button\\\",\\n                                                url: $().lazyRule((des) => {\\n                                                    let temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                                    temp[\\\"fby\\\"] = des;\\n                                                    putVar(\\\"filter\\\", JSON.stringify(temp));\\n                                                    refreshPage(false);\\n                                                    return \\\"hiker://empty\\\"\\n                                                }, by[item])\\n                                            })\\n                                        }\\n                                    }\\n                                } else {\\n                                    var temp = JSON.parse(getVar(\\\"filter\\\"));\\n                                }\\n                                let url = MY_URL.split(\\\"##\\\")[1];\\n                                for (let item in temp) {\\n                                    url = url.replace(item, temp[item]);\\n                                }\\n                                url = changeUrl(url);\\n                                let rescode = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                                if (rescode.indexOf('检测中') != -1) {\\n                                    rescode = fetch(url + '&btwaf' + rescode.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                                }\\n                                let html = JSON.parse(rescode);\\n                                try {\\n                                    eval(JSON.parse(fetch('hiker://page/applistdata', {})).rule);\\n                                } catch (e) {\\n                                    log(\\\"视频列表出错:\\\" + e.message);\\n                                }\\n                                setResult(items);\\n                            }, appUrl, typeJson[i].type_extend, changeUrl, appUa),\\n                            col_type: 'flex_button'\\n                        })\\n                    }\\n                } catch (e) {\\n                    log('首页分类出错:' + e.message);\\n                }\\n                //获取推荐视频列表\\n                try {\\n                    let url = MY_URL.split('##')[1];\\n                    url = changeUrl(url);\\n                    let html = request(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                    if (html.indexOf('检测中') != -1) {\\n                        html = fetch(url + '&btwaf' + html.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n                    }\\n                    html = JSON.parse(html);\\n                    eval(JSON.parse(fetch('hiker://page/appindexdata')).rule);\\n                } catch (e) {\\n                    log('首页推荐出错:' + e.message);\\n                }\\n                setResult(items);\\n            }, changeUrl, appUrl, appUa)\\n\\n            let rule_applistdata = $.toString(function() {\\n                let list = [];\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else if (appUrl.includes(\\\".vod\\\")) {\\n                    list = html.data.list;\\n                }\\n\\n                for (let i = 0; i < list.length; i++) {\\n                    let { vod_name, vod_pic, vod_id, vod_remarks } = list[i];\\n                    let link = \\\"\\\";\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        link = appUrl + 'video_detail?id=' + vod_id + '&token=';\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        let date = new Date();\\n                        link = appUrl + '/detail?vod_id=' + vod_id + '&rel_limit=10&key=' + (date.getMonth() + 1) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());\\n                    };\\n\\n                    if (/iopenyun/.test(appUrl)) {\\n                        link = appUrl + '/detailID?vod_id=' + vod_id + '&rel_limit=10';\\n                    }\\n\\n                    items.push({\\n                        title: vod_name,\\n                        pic_url: vod_pic + '@Referer=',\\n                        desc: vod_remarks,\\n                        col_type: 'movie_3_marquee',\\n                        url: $(\\\"#immersiveTheme#hiker://empty##\\\" + link).rule(() => {\\n                            try {\\n                                eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                            } catch (e) {\\n                                log(\\\"影片详情出错:\\\" + e.message);\\n                                setResult([]);\\n                            }\\n                        })\\n                    });\\n                }\\n            })\\n            let rule_appindexdata = $.toString(function() {\\n                let list = [];\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else if (appUrl.includes(\\\".vod\\\")) {\\n                    list = html.data.list;\\n                }\\n\\n                for (let i = 0; i < list.length; i++) {\\n                    let lists = [],\\n                        typename = \\\"\\\";\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        lists = list[i].vlist;\\n                        typename = list[i].type_name;\\n                    } else if (appUrl.includes(\\\".vod\\\")) {\\n                        lists = list[i].vod_list;\\n                        typename = list[i].vod_type_name;\\n\\n                    }\\n\\n                    items.push({\\n                        title: typename,\\n                        col_type: 'text_1',\\n                        url: \\\"hiker://empty\\\"\\n                    });\\n\\n                    for (let j = 0; j < lists.length; j++) {\\n                        let { vod_name, vod_pic, vod_id, vod_remarks } = lists[j];\\n                        let link = \\\"\\\";\\n                        if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                            link = appUrl + 'video_detail?id=' + vod_id + '&token=&key=';\\n                        } else if (appUrl.includes(\\\".vod\\\")) {\\n                            let date = new Date();\\n                            link = appUrl + '/detail?vod_id=' + vod_id + '&rel_limit=10&key=' + (date.getMonth() + 1) + (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());\\n                        };\\n\\n                        if (/iopenyun/.test(appUrl)) {\\n                            link = appUrl + '/detailID?vod_id=' + vod_id + '&rel_limit=10';\\n                        }\\n\\n                        items.push({\\n                            title: vod_name,\\n                            pic_url: vod_pic + '@Referer=',\\n                            desc: vod_remarks,\\n                            col_type: 'movie_3_marquee',\\n                            url: $(\\\"#immersiveTheme#hiker://empty##\\\" + link).rule(() => {\\n                                try {\\n                                    eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                                } catch (e) {\\n                                    log(\\\"影片详情出错:\\\" + e.message);\\n                                    setResult([]);\\n                                }\\n                            })\\n                        });\\n                    }\\n                }\\n            })\\n            let rule_appmovlist = $.toString(function(changeUrl, appUrl, appUa) {\\n                addListener(\\\"onClose\\\", $.toString((url) => {\\n                    clearVar('appnow');\\n                    clearVar(url);\\n                }, MY_URL));\\n                let items = [],\\n                    html = getVar(MY_URL, \\\"\\\"),\\n                    data = {};\\n                if (html == \\\"\\\") {\\n                    let url = MY_URL.split(\\\"##\\\")[1];\\n                    url = changeUrl(url);\\n                    html = fetch(url, { headers: { \\\"User-Agent\\\": appUa } });\\n                    putVar(MY_URL, html);\\n                }\\n                if (appUrl.includes(\\\"xgapp\\\")) {\\n                    data = JSON.parse(html).data.vod_info;\\n                } else {\\n                    data = JSON.parse(html).data;\\n                }\\n\\n                //简介\\n                let { vod_name, vod_pic, vod_content, vod_class, vod_remarks, vod_director, vod_actor, vod_area, vod_lang, vod_year } = data;\\n                items.push({\\n                    title: vod_name + '\\\\n' + vod_class + \\\",\\\" + vod_remarks + \\\"\\\\n\\\" + vod_area + \\\"/\\\" + vod_lang + \\\"/\\\" + vod_year,\\n                    desc: \\\"导演:\\\" + vod_director + \\\"\\\\n主演:\\\" + vod_actor,\\n                    pic_url: vod_pic,\\n                    url: \\\"hiker://empty\\\",\\n                    col_type: 'movie_1_vertical_pic_blur'\\n                }, {\\n                    title: '剧情简介:',\\n                    desc: vod_content,\\n                    url: $('hiker://empty#noRecordHistory#').rule((desc) => {\\n                        setResult([{\\n                            title: desc,\\n                            col_type: 'long_text'\\n                        }]);\\n                    }, vod_content),\\n                    col_type: 'text_1'\\n                });\\n                //断插\\n                let dnen = getMyVar(\\\"dnen\\\", \\\"0\\\");\\n                items.push({\\n                    title: '断插:' + (dnen == '1' ? '““✅””' : '❎'),\\n                    url: $('#noLoading#').lazyRule((dnen) => {\\n                        if (dnen == '1') {\\n                            putMyVar(\\\"dnen\\\", \\\"0\\\");\\n                            refreshPage(false);\\n                            return 'toast://已禁用断插调用!';\\n                        } else {\\n                            putMyVar(\\\"dnen\\\", \\\"1\\\");\\n                            refreshPage(false);\\n                            return 'toast://已开启断插调用!'\\n                        }\\n                    }, dnen),\\n                    col_type: 'text_2'\\n                });\\n                items.push({\\n                    title: '线路配置',\\n                    url: \\\"hiker://empty#noRecordHistory#@rule=js:this.d=[];require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');Route.setParse();setResult(d);\\\",\\n                    //url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#\\\",\\n                    col_type: 'text_2'\\n                });\\n                //线路列表\\n\\n                let conts = [],\\n                    tabs = [];\\n                if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                    conts = data.vod_url_with_player;\\n                } else {\\n                    conts = data.vod_play_list;\\n                }\\n                if (conts.length < 1) {\\n                    conts = data.vod_play_url.split('$$$');\\n                    tabs = data.vod_play_from.split('$$$');\\n                }\\n                //线路名称\\n                let ptab = \\\"\\\",\\n                    ptabname = \\\"\\\";\\n                if (getVar(\\\"appnow\\\", \\\"\\\") == \\\"\\\") { putVar(\\\"appnow\\\", \\\"0\\\") }\\n                for (let i = 0; i < conts.length; i++) {\\n                    let sptab = \\\"\\\",\\n                        tabname = \\\"\\\";\\n                    if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                        sptab = conts[i].code ? conts[i].code : tabs[i];\\n                        tabname = conts[i].name || sptab;\\n                    } else {\\n                        sptab = conts[i].from ? conts[i].from : tabs[i];\\n                        tabname = conts[i].player_info ? conts[i].player_info.show : sptab;\\n                    }\\n                    items.push({\\n                        title: getVar(\\\"appnow\\\") == i ? \\\"““””\\\" + tabname.bold().fontcolor(\\\"#FA7298\\\") : tabname,\\n                        url: \\\"hiker://empty#noLoading#@lazyRule=.js:putVar('appnow','\\\" + i + \\\"');refreshPage(false);'toast://切换成功!'\\\",\\n                        col_type: 'scroll_button'\\n                    })\\n                    if (getVar(\\\"appnow\\\") == i) {\\n                        ptab = sptab;\\n                        ptabname = tabname;\\n                    }\\n                }\\n                items.push({\\n                    title: \\\"““↓↑””\\\" + ptabname + \\\"-\\\" + ptab,\\n                    url: \\\"hiker://empty@lazyRule=.js:putVar('appmappsort', getVar('appmappsort','1')=='1'?'0':'1');refreshPage(false);'toast://切换成功!'\\\",\\n                    col_type: 'text_1',\\n                    extra: { lineVisible: false }\\n                });\\n                //链接列表\\n                let list = [],\\n                    index = getVar(\\\"appnow\\\");\\n                if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                    list = conts[index].url.split(\\\"#\\\");\\n                } else {\\n                    list = conts[index].urls ? conts[index].urls : conts[index].url.split(\\\"#\\\");\\n                };\\n                if (getVar('appmappsort', '1') == '0') {\\n                    list.reverse();\\n                }\\n                //解析接口\\n                let jiek = [];\\n                try {\\n                    if (appUrl.includes(\\\"api.php/app\\\") || appUrl.includes(\\\"xgapp\\\")) {\\n                        jiek.push(conts[index].parse_api || \\\"\\\");\\n                    } else {\\n                        jiek = (conts[index].player_info.parse2 || \\\"\\\").split(\\\",\\\").concat((conts[index].player_info.parse || \\\"\\\").split(\\\",\\\"));\\n                        jiek = jiek.map(cur => cur.replace(\\\"..\\\", \\\".\\\").replace('jsonbs', ''));\\n                    }\\n                } catch (e) {}\\n                jiek = jiek.filter(cur => !!cur);\\n                let jxUrl = jiek[0] || \\\"\\\";\\n                /*if (jxUrl.substring(0, 2) == '\\\\/\\\\/') {\\n                    jxUrl = 'https:' + jxUrl;\\n                }*/\\n                //打印接口\\n                log('\\\\n当前线路:' + ptab + '\\\\n解析列表:' + $.stringify(jiek));\\n                //视频列表\\n                for (let j = 0; j < list.length; j++) {\\n                    let vlink = \\\"\\\",\\n                        title = \\\"\\\";\\n                    if (list[j].url) {\\n                        vlink = list[j].url.replace(/#456#/g, 'http').replace(/#123#/g, '.').replace(/#789#/g, ':');\\n                        title = list[j].name;\\n                    } else {\\n                        vlink = list[j].split(\\\"$\\\")[1];\\n                        title = list[j].split(\\\"$\\\")[0];\\n                    }\\n                    //title = title.match(/(第|\\\\d|-)*(集|话|期)/g) ? title.replace(/第|集|话|期/g, '') : title;\\n                    items.push({\\n                        title: title,\\n                        col_type: \\\"text_4\\\",\\n                        url: eval(JSON.parse(fetch(\\\"hiker://page/lazyParse\\\")).rule)\\n                    });\\n                }\\n                setResult(items);\\n            }, changeUrl, appUrl, appUa);\\n\\n            let lazyParse = $.toString(function() {\\n                let enDn = getMyVar(\\\"dnen\\\", \\\"0\\\"),\\n                    test1 = vlink.search(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/) != -1,\\n                    test2 = vlink.search(/LT\\\\-|RongXingVR\\\\-|renrenmi\\\\-|xfy\\\\-|suoyo\\\\.cc|fen\\\\.laodi|ruifenglb|xueren\\\\-/) != -1;\\n                if ((test1 || test2) && enDn == '1') {\\n                    return $('hiker://empty').lazyRule((vlink) => {\\n                        log(\\\"\\\\n调用断插解析,视频链接:\\\" + vlink);\\n                        eval(\\\"let config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n                        eval(fetch(config.cj));\\n                        return aytmParse(vlink);\\n                    }, vlink)\\n                } else {\\n                    return $('hiker://empty').lazyRule((ptab, vlink, jxUrl, appUrl) => {\\n                        log(\\\"\\\\n使用默认解析,视频链接:\\\" + vlink);\\n                        //视频链接处理\\n                        function changeVideoUrl(url) {\\n                            //改变特定地址的Referer\\n                            if (url.includes(\\\"wkfile\\\")) {\\n                                url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n                            } else if (ptab == 'bilibili') {\\n                                url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                            } else if (ptab == 'mgtv') {\\n                                url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                            } else if (url.includes(\\\"ojbk\\\")) {\\n                                url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n                            }\\n                            //返回视频链接\\n                            if (!url.includes(\\\"http\\\")) {\\n                                throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n                            } else {\\n                                if (/\\\\.m3u8/.test(url)) {\\n                                    return cacheM3u8(url);\\n                                } else {\\n                                    return url + '#isVideo=true#';\\n                                }\\n                            }\\n                        }\\n                        //动态解析代码开始\\n                        try {\\n                            //处理视频样式的资源链接\\n                            if (/\\\\.m3u8|\\\\.mp4|obj\\\\/tos|netease\\\\.com/.test(vlink) && /http/.test(vlink) && !/\\\\.html/.test(vlink)) {\\n                                if (!/fen\\\\.laodi|ruifenglb|suoyo\\\\.cc/.test(vlink)) {\\n                                    log(\\\"检测到资源地址可能是视频链接\\\");\\n                                    return changeVideoUrl(vlink);\\n                                }\\n                            }\\n                            //无可用解析直接报错\\n                            if (!jxUrl || /x\\\\-n\\\\.cc/.test(jxUrl)) {\\n                                throw new Error(\\\"无可用解析\\\");\\n                            }\\n                            //使用解析\\n                            log(\\\"使用解析:\\\" + jxUrl);\\n                            let link = jxUrl + vlink,\\n                                scode = JSON.parse(fetch(link, {\\n                                    headers: {\\n                                        \\\"User-Agent\\\": \\\"Dart/2.13 (dart:io)\\\"\\n                                    },\\n                                    redirect: false,\\n                                    withStatusCode: true\\n                                }));\\n                            //返回重定向的链接 \\n                            if (scode.statusCode == '302' || scode.statusCode == '301') {\\n                                let redurl = scode.headers.location[0].replace(/\\\\\\\\/g, '');\\n                                log('重定向:' + redurl);\\n                                if (!/(url|vid|v)\\\\=/.test(redurl)) {\\n                                    return changeVideoUrl(redurl);\\n                                }\\n                                /*else if (/\\\\=http/.test(redurl) && /\\\\.m3u8|\\\\.mp4|\\\\.flv/.test(redurl)) {\\n                                    purl = redurl.substring(redurl.indexOf('=http') + 1);\\n                                }*/\\n                                scode.body = fetch(redurl);\\n                            }\\n                            //开始嗅探\\n                            let html = scode.body;\\n                            if (/404 Not Found|备案后可继续访问/.test(html)) {\\n                                throw new Error(\\\"404了\\\");\\n                            } else if (/\\\\<body/.test(html)) {\\n                                return $([\\\"开始视频嗅探\\\", \\\"打开解析网页\\\", \\\"使用内置解析\\\"], 1, \\\"检测到解析为网页数据\\\").select((link, ptab, vlink, appUrl) => {\\n                                    if (input == \\\"开始视频嗅探\\\") {\\n                                        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                                        return x5rule(link, link);\\n                                    } else if (input == \\\"打开解析网页\\\") {\\n                                        return \\\"web://\\\" + link;\\n                                    } else if (input == \\\"使用内置解析\\\") {\\n                                        log(\\\"使用内置解析\\\");\\n                                        showLoading(\\\"正在进行解析...\\\");\\n                                        return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                                    }\\n                                }, link, ptab, vlink, appUrl);\\n                            } else {\\n                                //log('尝试从json数据获取');\\n                                try {\\n                                    let purl = JSON.parse(html).url;\\n                                    return changeVideoUrl(purl);\\n                                } catch (e) {\\n                                    /*let purl = html.match(/[\\\\'\\\\\\\"]url[\\\\'\\\\\\\"]:.*?[\\\\'\\\\\\\"](.*?)[\\\\'\\\\\\\"]/)[1].replace(/\\\\\\\\/g, '');\\n                                    return changeVideoUrl(purl);*/\\n                                    throw new Error('解析可能加密了');\\n                                }\\n                            }\\n                        } catch (e) {\\n                            log('\\\\n未能成功获取视频地址:' + e.message + \\\"\\\\n尝试使用规则内置解析\\\");\\n                            return eval(JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule);\\n                        }\\n                        //动态解析代码结束\\n                    }, ptab, vlink, jxUrl, appUrl);\\n                }\\n            });\\n            pages.push({\\n                name: \\\"APP分类列表\\\",\\n                path: \\\"applistdata\\\",\\n                rule: rule_applistdata\\n            }, {\\n                name: \\\"APP首页列表\\\",\\n                path: \\\"appindexdata\\\",\\n                rule: rule_appindexdata\\n            }, {\\n                name: \\\"APP选集\\\",\\n                path: \\\"appmovlist\\\",\\n                rule: rule_appmovlist\\n            }, {\\n                name: \\\"视频解析\\\",\\n                path: \\\"lazyParse\\\",\\n                rule: lazyParse\\n            });\\n        }\\n\\n        let myParse = JSON.parse(fetch(\\\"hiker://page/myParse\\\")).rule;\\n        pages.push({\\n            name: \\\"内置解析\\\",\\n            path: \\\"myParse\\\",\\n            rule: myParse\\n        })\\n\\n        searchFind = \\\"js:\\\" + $.toString(function(changeUrl, apptype, appUrl, appUa) {\\n            let items = [],\\n                search_url = changeUrl(MY_URL.split('##')[1]),\\n                bhtml = \\\"\\\";\\n\\n            bhtml = fetch(search_url, { headers: { \\\"User-Agent\\\": appUa } });\\n\\n            try {\\n                bhtml = bhtml.startsWith('\\\\r\\\\n') ? bhtml.replace('\\\\r\\\\n', '') : bhtml;\\n            } catch (e) {}\\n\\n            if (/btwaf/.test(bhtml)) {\\n                bhtml = fetch(search_url + '&btwaf' + bhtml.match(/btwaf(.*?)\\\\\\\"/)[1], { headers: { \\\"User-Agent\\\": appUa } });\\n            }\\n\\n            let html = JSON.parse(bhtml),\\n                list = [];\\n            if (/神马|TV/.test(apptype)) {\\n                list = html.data;\\n            } else {\\n                if (appUrl.includes('api.php/app')) {\\n                    list = html.list;\\n                } else if (appUrl.includes('xgapp')) {\\n                    list = html.data;\\n                } else {\\n                    list = html.data.list;\\n                }\\n            }\\n\\n            for (let i = 0; i < list.length; i++) {\\n                if (/神马|TV/.test(apptype)) {\\n                    var { title, pic, nextlink: url, state: desc } = list[i];\\n                } else {\\n                    if (appUrl.includes('api.php/app') || appUrl.includes('xgapp')) {\\n                        var { vod_name: title, vod_pic: pic, vod_remarks: desc } = list[i],\\n                            url = appUrl + 'video_detail?id=' + list[i].vod_id + '&token=';\\n                    } else {\\n                        var { vod_name: title, vod_pic: pic, vod_remarks: desc } = list[i];\\n                        if (/iopenyun/.test(appUrl)) {\\n                            var url = appUrl + '/detailID?vod_id=' + list[i].vod_id + '&token=';\\n                        } else {\\n                            var url = appUrl + '/detail?vod_id=' + list[i].vod_id + '&token=';\\n                        }\\n                    }\\n                }\\n\\n                items.push({\\n                    title: title,\\n                    pic_url: pic + '@Referer=',\\n                    desc: desc,\\n                    col_type: 'movie_1_vertical_pic',\\n                    url: $(\\\"#immersiveTheme#hiker://empty##\\\" + url).rule((apptype) => {\\n                        if (/神马|TV/.test(apptype)) {\\n                            eval(JSON.parse(fetch('hiker://page/tvmovlist')).rule);\\n                        } else {\\n                            eval(JSON.parse(fetch('hiker://page/appmovlist')).rule);\\n                        }\\n                    }, apptype)\\n                });\\n            }\\n\\n            setResult(items);\\n        }, changeUrl, apptype, appUrl, appUa)\\n\\n        last_chapter_rule = \\\"js:\\\" + $.toString(function(apptype, appUrl, appUa) {\\n            let chp = [];\\n            try {\\n                let conts = [],\\n                    html = JSON.parse(fetch(MY_URL.split(\\\"##\\\")[1], { headers: { \\\"User-Agent\\\": appUa } }));\\n                if (/神马|TV/.test(apptype)) {\\n                    conts = Object.keys(html.videolist);\\n                } else if (appUrl.includes(\\\"api.php/app\\\")) {\\n                    conts = html.data.vod_url_with_player;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_play_url.split('$$$');\\n                    }\\n                } else if (appUrl.includes(\\\"xgapp\\\")) {\\n                    conts = html.data.vod_info.vod_url_with_player;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_info.vod_play_url.split('$$$');\\n                    }\\n                } else {\\n                    conts = html.data.vod_play_list;\\n                    if (conts.length < 1) {\\n                        conts = html.data.vod_play_url.split('$$$');\\n                    }\\n                }\\n\\n                let list = [];\\n                for (let i = 0; i < conts.length; i++) {\\n                    if (/神马|TV/.test(apptype)) {\\n                        list = html.videolist[conts[i]];\\n                    } else if (conts[i].urls) {\\n                        list = conts[i].urls;\\n                    } else if (conts[i].url) {\\n                        list = conts[i].url.split(\\\"#\\\");\\n                    } else {\\n                        list = conts[i].split(\\\"#\\\");\\n                    }\\n                    chp.push(list.length);\\n                }\\n            } catch (e) {}\\n            setResult('更新至:' + (Math.max.apply(Math, chp)));\\n        }, apptype, appUrl, appUa);\\n\\n        rules.push({\\n            title: apptitle,\\n            author: getMyVar('remoteUrl'),\\n            type: apptype,\\n            url: home_url,\\n            find_rule: find_rule,\\n            search_url: search_url,\\n            searchFind: searchFind,\\n            pages: JSON.stringify(pages),\\n            last_chapter_rule: last_chapter_rule,\\n            icon: appicon\\n        });\\n    }\\n}\\n/*$.exports = {\\n    rules: rules,\\n    types: types\\n}*/\\n$.exports = rules;\"},{\"col_type\":\"movie_3\",\"name\":\"内置数据\",\"path\":\"ResCode\",\"rule\":\"{\\n    \\\"data\\\": [{\\n        \\\"title\\\": \\\"APP\\\",\\n        \\\"list\\\": [{\\n            \\\"title\\\": \\\"HG影视\\\",\\n            \\\"url\\\": \\\"http://hgyx.vip/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/HGyingshi.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"小极影视\\\",\\n            \\\"url\\\": \\\"http://api.xiaoysw.com/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/xiaoysw.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"雪人资源\\\",\\n            \\\"url\\\": \\\"https://zy.qd234.cn/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/qd234.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"南府追剧\\\",\\n            \\\"url\\\": \\\"http://iapp.nfuxs.club/dnmb.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/nanfuzhuijumao.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"奈菲迷\\\",\\n            \\\"url\\\": \\\"https://app.netflixmi.com/api.php/tv.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/naifeimi.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"饭后电影\\\",\\n            \\\"url\\\": \\\"http://summ.vip/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/summ.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"侦探影视\\\",\\n            \\\"url\\\": \\\"http://ys.huangguay.com/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/zhentanys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"益达影院\\\",\\n            \\\"url\\\": \\\"http://luobu.yss6080.com/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/yss6080.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"初心影视\\\",\\n            \\\"url\\\": \\\"https://www.18mv.club/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/18mv.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"大熊影视\\\",\\n            \\\"url\\\": \\\"https://dxys2233.com/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/daxiongzhuiju.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"手指影视\\\",\\n            \\\"url\\\": \\\"http://szys3355.com/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/szys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"粉粉影视\\\",\\n            \\\"url\\\": \\\"http://huluxiaindex.huimaojia.com:30130/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/fenfenyingshi.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"飞捷影视\\\",\\n            \\\"url\\\": \\\"https://www.fj6080.com/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/fj6080.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"暖光影视\\\",\\n            \\\"url\\\": \\\"https://app.bl210.com/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/nuanguang.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"小蜻蜓影视\\\",\\n            \\\"url\\\": \\\"http://3ketv.com/mogai_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/xiaoqingting.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"1080P影视\\\",\\n            \\\"url\\\": \\\"https://1080p.tv/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/1080PTV.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"宅男影院\\\",\\n            \\\"url\\\": \\\"http://www.sexyy.top/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/znyy666.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"影视热剧\\\",\\n            \\\"url\\\": \\\"http://lb.26ys.cn/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/26ys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"片多儿影视\\\",\\n            \\\"url\\\": \\\"http://221.236.18.12:665/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/meinaikang.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"小草影院\\\",\\n            \\\"url\\\": \\\"http://ygapp.xcys63.com/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/xcys63.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"百讯视频\\\",\\n            \\\"url\\\": \\\"https://z.iopenyun.com:99/app_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/iopenyun.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"瑞丰资源\\\",\\n            \\\"url\\\": \\\"https://ts.yjhan.com:4433/ruifenglb_api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/ruifeng.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"独播社\\\",\\n            \\\"url\\\": \\\"http://35ys.cc/api.php/v1.vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/35ys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"苍蓝4K\\\",\\n            \\\"url\\\": \\\"https://vip.ruifenglb.com:4433/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/ruifeng.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"看365\\\",\\n            \\\"url\\\": \\\"https://www.kan365.xyz/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/kan365.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"007影视\\\",\\n            \\\"url\\\": \\\"https://www.007ts.cc/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/007ts.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"5060影院\\\",\\n            \\\"url\\\": \\\"https://app.linzhiyuan.xyz/xgapp.php/v1/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/linzhiyuan.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"星空影视\\\",\\n            \\\"url\\\": \\\"https://xkys.tv/xgapp.php/v1/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/xkys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"饭团影视\\\",\\n            \\\"url\\\": \\\"http://television.wkfile.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/fantuan.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"天空影视\\\",\\n            \\\"url\\\": \\\"https://www.tkys.tv/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/tkys.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"抹茶猪\\\",\\n            \\\"url\\\": \\\"https://www.mczdyw.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/mczdyw.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"追剧达人\\\",\\n            \\\"url\\\": \\\"http://vipmv.tv/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/zhuijudaren.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"迪迪影院\\\",\\n            \\\"url\\\": \\\"http://dd88.icu:6080/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/dd88.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"影视工场\\\",\\n            \\\"url\\\": \\\"https://www.ik4.cc/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/yingshigongchang.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"火箭影视\\\",\\n            \\\"url\\\": \\\"http://huojian.wchulian.com.cn/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/wcx.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"九合视频\\\",\\n            \\\"url\\\": \\\"https://ptygx.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/jiuheshipin.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"我爱电影\\\",\\n            \\\"url\\\": \\\"http://xg.5imv.net/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/5imv.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"琳琅影院\\\",\\n            \\\"url\\\": \\\"https://www.u23c.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/linlang.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"555电影\\\",\\n            \\\"url\\\": \\\"http://w7tv.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/o8tv.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"京广航影视\\\",\\n            \\\"url\\\": \\\"https://www.jingguanhang.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/jingguanghang.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"大鱼TV\\\",\\n            \\\"url\\\": \\\"https://www.dytv123.com/api.php/app/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/dytv.png\\\"\\n        }]\\n    }, {\\n        \\\"title\\\": \\\"TV\\\",\\n        \\\"list\\\": [{\\n            \\\"title\\\": \\\"大师兄TV\\\",\\n            \\\"url\\\": \\\"http://dsxtv.tv.ci/api.php/dsx/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/dashixiong.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"爱西西TV\\\",\\n            \\\"url\\\": \\\"http://tv.aixixi.vip/api.php/iptv/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/aixixi.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"冷月影视\\\",\\n            \\\"url\\\": \\\"https://tv.521x5.com/api.php/iptv/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/521x5.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"小极TV\\\",\\n            \\\"url\\\": \\\"http://api.8d8q.com/mmv/api.php/Chengcheng/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/8d8q.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"流星雨影视\\\",\\n            \\\"url\\\": \\\"http://phoebe.cf/api.php/iptv/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/liuxingyu.png\\\"\\n        }, {\\n            \\\"title\\\": \\\"聚多影视\\\",\\n            \\\"url\\\": \\\"http://jdyy.weetai.cn/api.php/iptv/vod/\\\",\\n            \\\"img\\\": \\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/juduo.png\\\"\\n        }]\\n    }]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"获取app列表\",\"path\":\"appJson\",\"rule\":\"let appfile = \\\"\\\";\\ntry {\\n    let arr = JSON.parse(fetch(\\\"https://egwang186.coding.net/p/egwang186/d/iptv/git/raw/master/js2.0/万物生-首页.txt\\\")).data,\\n        list = arr.find(e => e.title === \\\"APP类\\\").list,\\n        list1 = [],\\n        list2 = [];\\n    for (let item in list) {\\n        let a = list[item],\\n            url = a.url;\\n        if (url.includes('/vodPhbAll')/*url.includes(\\\".vod\\\")*/) {\\n            a.url = url.split(\\\"/vodPhbAll\\\")[0];\\n        } else if (url.includes(\\\"/vod/\\\") || url.includes(\\\"api.php/app\\\") || url.includes(\\\"xgapp\\\")) {\\n            a.url = url.match(/http.*\\\\//)[0];\\n        }\\n        if (url.includes(\\\".vod\\\") || url.includes(\\\"api.php/app\\\") || url.includes(\\\"xgapp\\\")) {\\n            list1.push(a);\\n        } else if (url.includes(\\\"/vod/\\\")) {\\n            list2.push(a);\\n        }\\n    }\\n    appfile = JSON.stringify({\\n        data: [{\\n            title: \\\"APP\\\",\\n            list: list1\\n        }, {\\n            title: \\\"TV\\\",\\n            list: list2\\n        }]\\n    })\\n} catch (e) {}\\n\\nlet appjson = {};\\nif (/egwang/.test(appfile)) {\\n    appjson = JSON.parse(appfile);\\n} else {\\n    log('使用内置数据');\\n    appjson = JSON.parse(JSON.parse(fetch(\\\"hiker://page/ResCode\\\", {})).rule);\\n}\\n\\n$.exports = appjson;\"},{\"col_type\":\"movie_3\",\"name\":\"内置数据2\",\"path\":\"myParse\",\"rule\":\"(() => {\\n    function changeVideoUrl(url) {\\n        //改变特定地址的Referer\\n        if (url.includes(\\\"wkfile\\\")) {\\n            url = url + ';{Referer@https://fantuan.wkfile.com/}';\\n        } else if (ptab == 'bilibili') {\\n            url = url + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n        } else if (ptab == 'mgtv') {\\n            url = url + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n        } else if (url.includes(\\\"ojbk\\\")) {\\n            url = url + ';{Referer@https://bak.ojbkjx.com/}';\\n        }\\n        //返回视频链接\\n        if (!url.includes(\\\"http\\\")) {\\n            throw new Error(\\\"链接不是以http开头(可能加密了)\\\");\\n        } else {\\n            if (/\\\\.m3u8/.test(url)) {\\n                return cacheM3u8(url);\\n            } else {\\n                return url + '#isVideo=true#';\\n            }\\n        }\\n    }\\n    //aes解密\\n    function De(data, token_key, token_iv) {\\n        eval(getCryptoJS());\\n        var key = CryptoJS.enc.Utf8.parse(token_key);\\n        var iv = CryptoJS.enc.Utf8.parse(token_iv);\\n        return CryptoJS.AES.decrypt(data, key, {\\n            iv: iv,\\n            mode: CryptoJS.mode.CBC,\\n            padding: CryptoJS.pad.Pkcs7\\n        }).toString(CryptoJS.enc.Utf8);\\n    };\\n    if (vlink.includes('m3u8.cache.suoyo.cc')) {\\n        let url = JSON.parse(fetch('https://jhpc.manduhu.com/duoduo/api.php', { body: 'url=' + vlink, method: 'POST' })).url;\\n        return changeVideoUrl(De(url, md5('rXjWvXl6'), 'NXbHoWJbpsEOin8b'));\\n    } else if (vlink.includes('ruifenglb')) {\\n        let url = JSON.parse(fetch('http://ts.yjhan.com:8090/api/?key=DSQFgXdmj9xkDyiXdr&url=' + vlink)).url;\\n        return changeVideoUrl(url);\\n        /*let html = fetch('https://tv.yjhan.com:4423/CL4K/?url=' + vlink),\\n            le_token = html.match(/le_token.*=.*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\".*:.*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"A42EAC0C2B408472\\\", le_token));*/\\n    } else if (vlink.includes(\\\"xueren-\\\")) {\\n        let html = fetch('https://diaoyong.qd234.cn/?url=' + vlink),\\n            le_token = html.match(/le_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, 'A42EAC0C2B408473', le_token));\\n    } else if (vlink.includes(\\\"netflixmom-\\\")) {\\n        let html = fetch('https://player.4kya.com/?url=' + vlink, { headers: { referer: 'https://netflix.mom' } }),\\n            le_token = html.match(/le_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, '333180B3EF0ED9D0', le_token));\\n    } else if (ptab.includes('nfuxs')) {\\n        let html = fetch('https://api.xkvideo.design/m3u8.php?url=' + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, 'zsdrf880203ghurd', bt_token));\\n    } else if (/qiyi|youku|qq.com|mgtv|bilibili|ixigua|migu|sohu|pptv|le|1905\\\\.com|fun\\\\.tv/.test(vlink)) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnmsb.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"LT-\\\")) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnmsb.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"renrenmi-\\\")) {\\n        let html = request(\\\"https://jxqd.tkys.tv/dnmsb.php?url=\\\" + vlink),\\n            bt_token = html.match(/bt_token\\\\s*=\\\\s*\\\"(.*)\\\"/)[1],\\n            url = html.match(/\\\"url\\\"\\\\s*:\\\\s*getVideoInfo\\\\(\\\"(.*)\\\"/)[1];\\n        return changeVideoUrl(De(url, \\\"7692AA70EEF92B42\\\", bt_token));\\n    } else if (vlink.includes(\\\"RongXingVR-\\\")) {\\n        let url = JSON.parse(request(\\\"https://vvip.funsline.cn:8866/api/?key=fK6x076k18LU34x02N&url=\\\" + vlink)).url;\\n        return changeVideoUrl(url);\\n    } else if (vlink.includes(\\\"xfy-\\\")) {\\n        let url = JSON.parse(request(\\\"https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url=\\\" + vlink)).url;\\n        return changeVideoUrl(url);\\n    } else if (vlink.includes(\\\"fen.laodi\\\")) {\\n        let html = fetch(\\\"https://play.tkys.tv/laodi.php/?url=\\\" + vlink),\\n            url = html.match(/vurl\\\\s*=\\\\s*'(.*)'/)[1];\\n        return changeVideoUrl(url);\\n    } else {\\n        return vlink;\\n    }\\n})();\"}]","icon":"https://lanmeiguojiang.com/tubiao/more/175.png"},{"last_chapter_rule":"","title":"轻合集.藍凋","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","titleColor":"#ff13b66a","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=1286098114')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1286098114&s=640"},{"last_chapter_rule":"","title":"轻合集.蓝莓","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=2579949378')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=2579949378&s=640"},{"firstHeader":"class","last_chapter_rule":"","title":"【简洁主页】","author":"感谢{很多[大佬]}&&🍀","version":50,"type":"other","url":"hiker://empty#fyALL","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\n\n//配置\nconst titles=[\n\"东边日出西边雨，斜风细雨不须归🍀\",\n\"长风破浪会有时，直挂云帆济沧海🍀\",\n\"东边日出西边雨，斜风细雨不须归🍀\",\n\"人生得意须尽欢，莫使金樽空对月🍀\",\n\"东边日出西边雨，斜风细雨不须归🍀\",\n\"书山有路勤为径，学海无涯苦作舟🍀\",\n\"东边日出西边雨，斜风细雨不须归🍀\",\n\"唯有长江水，无语南流泪🍀\",\n\"东边日出西边雨，斜风细雨不须归🍀\",\n\"莫愁前路无知己，天下谁人不识君🍀\"\n]\n\nconst title=titles[Math.floor((Math.random()*titles.length))];\n\nconst myRule1=\"虎扑@虎扑社区R||https://haikuoshijie.cn/user/1823\";\nconst myRule2=\"开天斧@开天斧||https://haikuoshijie.cn/user/3\";\nconst maxHomeCount=27;\nconst headColor=\"#358ccd\";\nconst rulesColor=\"#ffaa64\";\nconst logo=\"hiker://images/logo\";\n\n\n/*实时时钟(OK解析)'https://okjx.cc/?url=',*/\n/*http://1.117.152.239:39000/?url=https://new.iskcd.com/20220414/sIWQEVrM/index.m3u8🍀2022-02-02🍀修改*/\n\nconst shortcut_list=[\n\n    '收藏@@hiker://collection@@hiker://images/collection',\n    '书签@@hiker://bookmark@@hiker://images/bookmark',\n    '互传@@hiker://home@【互传文件】||https://snapdrop.fairysoft.net/@@hiker://images/video',\n   /* '互传1.0@@hiker://home@【互传文件】||https://drop.ioiox.com/@@hiker://images/video',*/\n    '仓库@@hiker://home@道长仓库Pro||https://haikuoshijie.cn/user/243@@https://lanmeiguojiang.com/tubiao/other/30.svg',\n\n\n\n    '棉库@@hiker://home@视界论坛RR||http://pan.haikuoshijie.com/@@http://pic.962.net/up/2021-4/20214251743144973.png',\n    \n    '视界|世界@@hiker://home@视界|世界||https://haikuoshijie.cn/user/243@@http://pic.962.net/up/2021-4/20214251743144973.png',\n    \n   \n];\n\nfunction addIcons(shortcut_list){\n    for(let i=0;i<shortcut_list.length;i++){\n        let k = shortcut_list[i].split(/\\s*@@\\s*/);\n        if (k.length < 2)continue;\n        d.push({\n           title: k[0],\n           url: k[1],\n           pic_url: k[2],\n           col_type: \"icon_small_4\"\n        });\n    }\n}\n\naddIcons(shortcut_list);\n\n\nd.push({\n    title:'🍀频道🍀',\n    url:'hiker://home',\n    col_type:\"text_4\"\n});\n\n\nd.push({\n    title:'🍀设置🍀',\n    url:'hiker://settingMore',\n    col_type:\"text_4\"\n});\n\n\n\nd.push({\n    title:'🍀升级到最新版🍀',\n    url:'https://www.lanzoux.com/u/GoldRiver',\n    col_type:\"icon_2\",\n    pic_url:\"http://q1.qlogo.cn/g?b=qq\"\n});\n\nd.push({\n    title:'🍀海阔常见问题🍀',\n    url:'https://haikuoshijie.cn/archives/fang-yuan-ying-shi-chang-jian-wen-ti',\n    col_type:\"icon_2\",\n    pic_url:\"hiker://images/bbs\"\n});\n\n\n  /*'直播@@hiker://home@【幂幂直播】||http://m.aikantv.org/@@hiker://images/video',*/\n\n//混搭\n\nfunction getHead(title){\n    return '‘‘’’<strong><font color=\"'+headColor+'\">'+title+'</front></strong>';\n}\n\n//收藏\nlet collection=fetch(\"hiker://collection\");\nif(collection == null || collection == \"\"){\n    collection = \"[]\";\n}\ncollection =JSON.parse(collection);\n\nlet colPicUrl=\"hiker://images/card_bg\";\nfor(let i=collection.length-1;i>=0;i--){\n    if(collection[i].picUrl!=null){\n        colPicUrl=collection[i].picUrl;\n        break;\n    }\n}\n\n\n\n//频道\nlet home=fetch(\"hiker://home\");\nif(home == null || home == \"\"){\n    home = \"[]\";\n}\nhome =JSON.parse(home);\n\n\n\n\n//捷径\nd.push({\n    title:getHead(\"🍀🍀🍀🍀🍀🍀OK解🍀🍀🍀🍀🍀🍀\"),\n    url:'https://okjx.cc/?url=',\n    col_type:\"text_center_1\"\n});\n\n\n//搜索框\n\nd.push({\n    title:\"🍀简·搜🍀·\"+title,\n    url:'hiker://search',\n    col_type:\"icon_1_search\",\n    pic_url:\"hiker://images/search\"\n});\n\n\n//首页\n\nd.push({\n    title:getHead(\"🍀🍀🍀🍀🍀🍀常*用🍀🍀🍀🍀🍀🍀\"),\n    url:'https://www.24kdh.com/',\n    col_type:\"text_center_1\"\n});\nvar homeStart=1;\n\nfor(let i=homeStart;i<home.length && i<(maxHomeCount+homeStart);i++){\n    let k = home[i];\n    d.push({\n       title:k.title ,\n       url: \"hiker://home@\"+k.title,\n       col_type: \"text_3\"\n    });\n}\n\n\nsetResult(d)","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bafybeifeuvm4pmvdj2l7a7ne6w4sa3a5xq56zsyntstefl45dtatf6snve.ipfs.cf-ipfs.com/"},{"last_chapter_rule":"","title":"道长dr合集","author":"轻合集生成器","version":103,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668'),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '全部',\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return '再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n} else rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=3863&auth=4a2cab6f-153d-5a06-bd65-fd1b076a9b22')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","proxy":"","icon":"https://z3.ax1x.com/2021/11/16/IWJhxf.png"},{"last_chapter_rule":"","title":"土拨鼠(推送)","author":"","version":20221211,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://www.tbsdy.com/m/index.html#/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\n    var d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\nlet tfpush = getItem('webpush', '0');\\nlet _web = $.toString((tfpush) => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n\\n            if (tfpush == '0') {\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            } else {\\n                let play = fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\"));\\n                return 'hiker://page/push?rule=XYQ推送&pushurl=' + encodeURIComponent(JSON.stringify({\\n                    \\\"name\\\": document.title,\\n                    \\\"url\\\": play\\n                }));\\n            }\\n        }\\n    }\\n}, tfpush);\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            //var urlx = \\\"video://\\\" + it.href;\\n            var urlx = tfpush == '0' ? 'video://' + it.href : 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\\n                \\\"name\\\": getPageTitle() + t,\\n                \\\"url\\\": it.href\\n            }));\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            ph: t + \\\"$\\\" + it.href,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    let rule = getParam(\\\"r\\\");\\n    d.splice(0, 0, {\\n        title: \\\"🔗\\\" + url,\\n        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n        col_type: \\\"text_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n\\n    //为线路加分割线\\n    let d2 = [];\\n    let mtab = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        mtab.push(d[i].ph);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                mtab.push('#');\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n    let playl = mtab.join('#').replace(/###/g, '$$$$$$');\\n\\n    let from = [];\\n    for (var j = 0; j < playl.split('$$$').length; j++) {\\n        from.push(\\\"播放列表\\\" + [j + 1]);\\n    }\\n    let push = JSON.stringify({\\n        \\\"name\\\": getPageTitle(),\\n        \\\"from\\\": from.join('$$$'),\\n        \\\"url\\\": playl.replace(/\\\\&/g, '＆＆')\\n    });\\n    // log(push);\\n\\n    d2.unshift({\\n        title: \\\"推送当前页列表到TVBox\\\",\\n        url: $(push).lazyRule(() => {\\n            return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\\n        }),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n\\n    d2.unshift({\\n        title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\\n        url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\\n\\n        col_type: 'scroll_button'\\n    });\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"酷搜","author":"","version":10,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://www.ressou.com/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    let rule = getParam(\\\"r\\\");\\n    d.splice(0, 0, {\\n        title: \\\"🔗\\\" + url,\\n        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n        col_type: \\\"text_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"轻合集.家娃","author":"轻合集生成器","version":107,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=41703636')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=41703636&s=640"},{"last_chapter_rule":"","title":"图片合集","author":"小棉袄🌞&永远の明日","version":107,"type":"picture","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://codeberg.org/senap/hiker/raw/branch/main/图片.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/erdi/226.png"},{"last_chapter_rule":"","title":"轻合集.枫林雨殇","author":"轻合集生成器","version":100,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=2938128745');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=2938128745&s=640"},{"last_chapter_rule":"","title":"阅读轻合集","author":"小棉袄🌞&永远の明日","version":96,"type":"read","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title,\n            url: urlParam.shift(),\n            class_name: v.class_name,\n            class_url: v.class_url,\n            area_name: v.area_name,\n            area_url: v.area_url,\n            year_name: v.year_name,\n            year_url: v.year_url,\n            sort_name: v.sort_name,\n            sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: {\n                    title: v.title\n                },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://page/data')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\n//log(\\\"start:\\\" + QING_TITLE)\\nlet dataRule = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nlet getRule = $.toString((QING_TITLE, title) => {\\n    //log(\\\"getRule:\\\" + QING_TITLE + \\\"====\\\" + title)\\n    return $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n}, QING_TITLE, RULE.title)\\nRULE = isIndex ? dataRule : Object.assign(dataRule, RULE)\\n//log(dataRule.pageList)\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList || JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\nfunction genRule() {\\n    let _a = Object.assign({}, MY_RULE);\\n    delete _a[\\\"pageList\\\"]\\n    delete _a[\\\"pages\\\"]\\n    return _a\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = genRule()\\n            MY__RULE.params = v.extra || {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule +  ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                let _a = genRule()\\n                _a.detail_find_rule = detailFindRule\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: _a,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: genRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"规则列表\",\"path\":\"data\",\"rule\":\"[{\\n        \\\"last_chapter_rule\\\": \\\"\\\",\\n        \\\"title\\\": \\\"七界小说\\\",\\n        \\\"author\\\": \\\"小棉袄🌞 && tee\\\",\\n        \\\"url\\\": \\\"https://m.7jie.com/shuku/fysort_fyclass_fyarea_fypage.html\\\",\\n        \\\"version\\\": 33,\\n        \\\"col_type\\\": \\\"movie_3\\\",\\n        \\\"class_name\\\": \\\"玄幻奇幻&武侠仙侠&都市生活&历史军事&游戏竞技&科幻未来&恐怖悬疑&二次元&经典网文&古代言情&现代言情&幻想奇缘&青春校园&网络情缘&科幻空间&鬼怪灵异&N次元&言情美文\\\",\\n        \\\"type\\\": \\\"read\\\",\\n        \\\"class_url\\\": \\\"1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18\\\",\\n        \\\"area_name\\\": \\\"全部&连载&完本\\\",\\n        \\\"area_url\\\": \\\"0&1&2\\\",\\n        \\\"sort_name\\\": \\\"默认&总点击&月点击&周点击&日点击&总推荐&月推荐&周推荐&日推荐&总收藏&字数&入库\\\",\\n        \\\"year_name\\\": \\\"\\\",\\n        \\\"sort_url\\\": \\\"0&allvisit&monthvisit&weekvisit&dayvisit&allvote&monthvote&weekvote&dayvote&goodnum&size&postdate\\\",\\n        \\\"year_url\\\": \\\"\\\",\\n        \\\"find_rule\\\": \\\"ul.list&&li;a,1&&Text;img&&src;a,2&&Text+'\\\\\\\\n'+.intro&&Text;a&&href.js:input.replace(\\\\\\\"xs/\\\\\\\",\\\\\\\"shu/\\\\\\\").replace(\\\\\\\".html\\\\\\\",\\\\\\\"\\\\\\\")\\\",\\n        \\\"search_url\\\": \\\"https://m.7jie.com/search.html?searchkey=**;post;utf-8\\\",\\n        \\\"group\\\": \\\"⑧阅读\\\",\\n        \\\"searchFind\\\": \\\"ul.list&&li;a,1&&Text;a&&href.js:input.replace(\\\\\\\"xs/\\\\\\\",\\\\\\\"shu/\\\\\\\").replace(\\\\\\\".html\\\\\\\",\\\\\\\"\\\\\\\");*;a,2&&Text+'\\\\\\\\n'+.intro&&Text;img&&src\\\",\\n        \\\"detail_col_type\\\": \\\"text_1\\\",\\n        \\\"detail_find_rule\\\": \\\"js:\\\\n$.require(\\\\\\\"hiker://page/chapter\\\\\\\")\\\",\\n        \\\"sdetail_col_type\\\": \\\"text_1\\\",\\n        \\\"sdetail_find_rule\\\": \\\"*\\\",\\n        \\\"ua\\\": \\\"mobile\\\",\\n        \\\"preRule\\\": \\\"\\\",\\n        \\\"pages\\\": \\\"[{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"目录\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"chapter\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"let cfg = {\\\\\\\\n    分页列表: \\\\\\\\\\\\\\\".pagelist&&option\\\\\\\\\\\\\\\",\\\\\\\\n    分页链接: \\\\\\\\\\\\\\\"option&&value\\\\\\\\\\\\\\\",\\\\\\\\n    分页请求头: {\\\\\\\\n        \\\\\\\\\\\\\\\"User-Agent\\\\\\\\\\\\\\\": MOBILE_UA,\\\\\\\\n    },\\\\\\\\n    一页章节数: 100,\\\\\\\\n    章节列表: \\\\\\\\\\\\\\\"ul.read&&li\\\\\\\\\\\\\\\",\\\\\\\\n    章节标题: \\\\\\\\\\\\\\\"a&&Text\\\\\\\\\\\\\\\",\\\\\\\\n    章节链接: \\\\\\\\\\\\\\\"a&&href\\\\\\\\\\\\\\\",\\\\\\\\n    缓存个数: 15\\\\\\\\n}\\\\\\\\n\\\\\\\\n\\\\\\\\nvar code = getResCode()\\\\\\\\nvar caches;\\\\\\\\n\\\\\\\\nfunction getCache() {\\\\\\\\n    let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n    caches = JSON.parse(c)\\\\\\\\n    let url = getUrl()\\\\\\\\n    addListener(\\\\\\\\\\\\\\\"onRefresh\\\\\\\\\\\\\\\", $.toString((url) => {\\\\\\\\n        let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n        c = JSON.parse(c)\\\\\\\\n        let che = {\\\\\\\\n            url: url,\\\\\\\\n            page: 0,\\\\\\\\n            chapters: []\\\\\\\\n        };\\\\\\\\n        for (let i = 0; i < c.length; i++) {\\\\\\\\n            if (c[i].url == che.url) {\\\\\\\\n                c[i] = che;\\\\\\\\n                log(\\\\\\\\\\\\\\\"clear:\\\\\\\\\\\\\\\" + url)\\\\\\\\n                saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n                break\\\\\\\\n            }\\\\\\\\n        }\\\\\\\\n    }, url))\\\\\\\\n    for (let it of caches) {\\\\\\\\n        if (it.url == url) {\\\\\\\\n            return it;\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    return {\\\\\\\\n        url: url,\\\\\\\\n        page: 0,\\\\\\\\n        chapters: []\\\\\\\\n    }\\\\\\\\n}\\\\\\\\n\\\\\\\\nfunction saveCache(che) {\\\\\\\\n    log(che.length)\\\\\\\\n    let c = caches\\\\\\\\n    if (c.length > cfg.缓存个数) {\\\\\\\\n        c.shift()\\\\\\\\n    }\\\\\\\\n    let exist = false\\\\\\\\n    for (let i = 0; i < c.length; i++) {\\\\\\\\n        if (c[i].url == che.url) {\\\\\\\\n            c[i] = che;\\\\\\\\n            exist = true;\\\\\\\\n            break\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    if (!exist) {\\\\\\\\n        c.push(che)\\\\\\\\n    }\\\\\\\\n    saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n}\\\\\\\\n\\\\\\\\nlet cache = getCache();\\\\\\\\n\\\\\\\\nlet mp = pdfa(code, cfg.分页列表)\\\\\\\\nlet page = mp.length;\\\\\\\\nlog(\\\\\\\\\\\\\\\"实际页数：\\\\\\\\\\\\\\\" + page)\\\\\\\\nlog(\\\\\\\\\\\\\\\"缓存页数：\\\\\\\\\\\\\\\" + cache.page)\\\\\\\\nif (page == cache.page) {\\\\\\\\n    //已完结，目录全部缓存了\\\\\\\\n    setResult(cache.chapters)\\\\\\\\n    return\\\\\\\\n}\\\\\\\\n//解析本地没有的缓存\\\\\\\\nlet urls = []\\\\\\\\nlet htmls = []\\\\\\\\n//log(mp)\\\\\\\\nfor (let i = cache.page; i < mp.length; i++) {\\\\\\\\n    if (i == 0) {\\\\\\\\n        htmls.push(code)\\\\\\\\n        continue\\\\\\\\n    }\\\\\\\\n    let it = mp[i];\\\\\\\\n    urls.push({\\\\\\\\n        url: pd(it, cfg.分页链接),\\\\\\\\n        options: {\\\\\\\\n            headers: cfg.分页请求头 || {}\\\\\\\\n        }\\\\\\\\n    })\\\\\\\\n}\\\\\\\\n//log(urls)\\\\\\\\nlet d = [].concat(cache.chapters)\\\\\\\\nhtmls = htmls.concat(batchFetch(urls))\\\\\\\\n//log(htmls)\\\\\\\\nfor (let it of htmls) {\\\\\\\\n    if (it == \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\") {\\\\\\\\n        break\\\\\\\\n    }\\\\\\\\n    let list = pdfa(it, cfg.章节列表)\\\\\\\\n    let temp = []\\\\\\\\n    for (let ii of list) {\\\\\\\\n        temp.push({\\\\\\\\n            title: pdfh(ii, cfg.章节标题).split(\\\\\\\\\\\\\\\" （\\\\\\\\\\\\\\\")[0].split(\\\\\\\\\\\\\\\"（\\\\\\\\\\\\\\\")[0],\\\\\\\\n            url: pd(ii, cfg.章节链接) + \\\\\\\\\\\\\\\"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\\\\\\\\\\\\\\\"\\\\\\\\n        })\\\\\\\\n    }\\\\\\\\n    //log(list.length)\\\\\\\\n    if (list.length == cfg.一页章节数) {\\\\\\\\n        //章节齐全的才放本地缓存\\\\\\\\n        cache.page = cache.page + 1\\\\\\\\n        cache.chapters = cache.chapters.concat(temp)\\\\\\\\n    }\\\\\\\\n    d = d.concat(temp)\\\\\\\\n}\\\\\\\\n\\\\\\\\nsaveCache(cache)\\\\\\\\nsetResult(d)\\\\\\\"},{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"正文\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"content\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"var d = [];\\\\\\\\nd.push({\\\\\\\\n    col_type: \\\\\\\\\\\\\\\"rich_text\\\\\\\\\\\\\\\",\\\\\\\\n    title: \\\\\\\\\\\\\\\"<big>\\\\\\\\\\\\\\\" + pdfh(getResCode(), \\\\\\\\\\\\\\\".headline&&Text\\\\\\\\\\\\\\\") + \\\\\\\\\\\\\\\"</big>\\\\\\\\\\\\\\\",\\\\\\\\n    extra: {\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nd.push({\\\\\\\\n    title: pdfh(getResCode(), \\\\\\\\\\\\\\\".content&&Html\\\\\\\\\\\\\\\"),\\\\\\\\n    col_type: 'rich_text',\\\\\\\\n    extra: {\\\\\\\\n        textSize: 18,\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nsetResult(d);\\\\\\\"}]\\\",\\n        \\\"icon\\\": \\\"\\\"\\n    },\\n    {\\n        \\\"last_chapter_rule\\\": \\\"\\\",\\n        \\\"title\\\": \\\"笔趣阁APP\\\",\\n        \\\"author\\\": \\\"\\\",\\n        \\\"url\\\": \\\"https://scxs.pysmei.com/top/man/top/fysort/fyyear/fypage.html\\\",\\n        \\\"version\\\": 24,\\n        \\\"col_type\\\": \\\"movie_3\\\",\\n        \\\"class_name\\\": \\\"\\\",\\n        \\\"type\\\": \\\"read\\\",\\n        \\\"class_url\\\": \\\"\\\",\\n        \\\"area_name\\\": \\\"\\\",\\n        \\\"area_url\\\": \\\"\\\",\\n        \\\"sort_name\\\": \\\"推荐&收藏&评分&完结&最热\\\",\\n        \\\"year_name\\\": \\\"周榜&月榜&总榜\\\",\\n        \\\"sort_url\\\": \\\"commend&collect&vote&over&hot\\\",\\n        \\\"year_url\\\": \\\"week&month&total\\\",\\n        \\\"find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nvar data = JSON.parse(getResCode());\\\\nfor (let it of data.data.BookList) {\\\\n    let id = it.Id;\\\\n    let cid = Math.floor(id/1000)+1;\\\\n    d.push({\\\\n        title: decodeURIComponent(it.Name),\\\\n        url: \\\\\\\"https://infosxs.pysmei.com/BookFiles/Html/\\\\\\\" + cid + \\\\\\\"/\\\\\\\" + id + \\\\\\\"/index.html\\\\\\\",\\\\n        col_type: \\\\\\\"movie_3\\\\\\\",\\\\n        desc: it.Author,\\\\n        pic_url: \\\\\\\"https://imgapixs.pysmei.com/BookFiles/BookImages/\\\\\\\" + it.Img\\\\n    });\\\\n}\\\\n\\\\nsetResult(d);\\\",\\n        \\\"search_url\\\": \\\"https://souxs.leeyegy.com/search.aspx?key=**&siteid=app2\\\",\\n        \\\"group\\\": \\\"⑧阅读\\\",\\n        \\\"searchFind\\\": \\\"js:\\\\nvar d = [];\\\\nvar data = JSON.parse(getResCode());\\\\nfor (let it of data.data) {\\\\n    let id = it.Id;\\\\n    let cid = Math.floor(id/1000)+1;\\\\n    d.push({\\\\n        title: it.Name,\\\\n        url: \\\\\\\"https://infosxs.pysmei.com/BookFiles/Html/\\\\\\\" + cid + \\\\\\\"/\\\\\\\" + id + \\\\\\\"/index.html\\\\\\\",\\\\n        col_type: \\\\\\\"movie_3\\\\\\\",\\\\n        desc: it.Author,\\\\n        content: it.Desc,\\\\n        pic_url: it.Img\\\\n    });\\\\n}\\\\n\\\\nsetResult(d);\\\",\\n        \\\"detail_col_type\\\": \\\"text_1\\\",\\n        \\\"detail_find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nlet sp = \\\\\\\"},]\\\\\\\"\\\\nlet code = getResCode().replace(new RegExp(sp, \\\\\\\"g\\\\\\\"), \\\\\\\"}]\\\\\\\")\\\\n//log(code)\\\\nvar data = JSON.parse(code);\\\\n//log(data.data.list)\\\\nvar bookid = data.data.id;\\\\nvar index = Math.floor(bookid / 1000) + 1;\\\\n\\\\nfor (let it of data.data.list[0].list) {\\\\n    let chapterid = it.id;\\\\n    let chapterurl = \\\\\\\"https://contentxs.pysmei.com/BookFiles/Html/\\\\\\\" + index + \\\\\\\"/\\\\\\\" + bookid + \\\\\\\"/\\\\\\\" + chapterid + \\\\\\\".html\\\\\\\"\\\\n    d.push({\\\\n        title: it.name,\\\\n        col_type: \\\\\\\"text_2\\\\\\\",\\\\n        desc: \\\\\\\"\\\\\\\",\\\\n        pic_url: \\\\\\\"\\\\\\\",\\\\n        url: $(chapterurl + \\\\\\\"#autoPage##readTheme#\\\\\\\").rule(() => {\\\\n            $.require(\\\\\\\"hiker://page/content\\\\\\\")\\\\n        })\\\\n    });\\\\n}\\\\nsetResult(d);\\\",\\n        \\\"sdetail_col_type\\\": \\\"text_1\\\",\\n        \\\"sdetail_find_rule\\\": \\\"*\\\",\\n        \\\"ua\\\": \\\"mobile\\\",\\n        \\\"preRule\\\": \\\"\\\",\\n        \\\"pages\\\": \\\"[{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"正文\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"content\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"var d = [];\\\\\\\\nvar data = JSON.parse(getResCode());\\\\\\\\n\\\\\\\\nd.push({\\\\\\\\n    col_type: \\\\\\\\\\\\\\\"rich_text\\\\\\\\\\\\\\\",\\\\\\\\n    title: \\\\\\\\\\\\\\\"<big>\\\\\\\\\\\\\\\" + data.data.cname + \\\\\\\\\\\\\\\"</big>\\\\\\\\\\\\\\\",\\\\\\\\n    extra: {\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nd.push({\\\\\\\\n    title: data.data.content.replace(new RegExp(\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\n\\\\\\\\\\\\\\\", \\\\\\\\\\\\\\\"g\\\\\\\\\\\\\\\"), \\\\\\\\\\\\\\\"<br>\\\\\\\\\\\\\\\").replace(new RegExp(\\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\\r\\\\\\\\\\\\\\\", \\\\\\\\\\\\\\\"g\\\\\\\\\\\\\\\"), \\\\\\\\\\\\\\\"<br>\\\\\\\\\\\\\\\").replace(new RegExp(\\\\\\\\\\\\\\\"<br><br>　　<br><br>\\\\\\\\\\\\\\\", \\\\\\\\\\\\\\\"g\\\\\\\\\\\\\\\"), \\\\\\\\\\\\\\\"<br><br>\\\\\\\\\\\\\\\"),\\\\\\\\n    col_type: 'rich_text',\\\\\\\\n    extra: {\\\\\\\\n        textSize: 18,\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nsetResult(d);\\\\\\\"}]\\\",\\n        \\\"icon\\\": \\\"\\\"\\n    },\\n    {\\n        \\\"last_chapter_rule\\\": \\\"\\\",\\n        \\\"title\\\": \\\"番茄小说\\\",\\n        \\\"author\\\": \\\"麻花疼\\\",\\n        \\\"url\\\": \\\"https://writer.muyewx.com/api/author/library/book_list/v0/?page_count=18&page_index=fypage@-1@&gender=0&category_id=fyclass&creation_status=-1&word_count=-1&sort=0\\\",\\n        \\\"version\\\": 25,\\n        \\\"col_type\\\": \\\"movie_3\\\",\\n        \\\"class_name\\\": \\\"全部&重生&穿越&悬疑&系统&盗墓&历史\\\",\\n        \\\"type\\\": \\\"read\\\",\\n        \\\"class_url\\\": \\\"-1&36&37&10&19&81&12\\\",\\n        \\\"area_name\\\": \\\"\\\",\\n        \\\"area_url\\\": \\\"\\\",\\n        \\\"sort_name\\\": \\\"\\\",\\n        \\\"year_name\\\": \\\"\\\",\\n        \\\"sort_url\\\": \\\"\\\",\\n        \\\"year_url\\\": \\\"\\\",\\n        \\\"find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nvar data = JSON.parse(getResCode());\\\\nfor (let it of data.data.book_list) {\\\\n    d.push({\\\\n        title: decodeURIComponent(it.book_name),\\\\n        url: config.api + \\\\\\\"/novel/book/directory/list/v1?book_id=\\\\\\\" + it.book_id + \\\\\\\"#immersiveTheme#\\\\\\\",\\\\n        col_type: \\\\\\\"movie_3\\\\\\\",\\\\n        desc: it.author,\\\\n        pic_url: config.封面域名 + it.thumb_uri\\\\n    });\\\\n}\\\\nsetResult(d);\\\",\\n        \\\"search_url\\\": \\\"https://novel.snssdk.com/api/novel/channel/homepage/search/search/v1/?aid=13&q=**\\\",\\n        \\\"group\\\": \\\"⑧阅读\\\",\\n        \\\"searchFind\\\": \\\"js:\\\\nvar d = [];\\\\nvar data = JSON.parse(getResCode());\\\\nvar list = data.data.ret_data;\\\\nfor (let it of list) {\\\\n    d.push({\\\\n        title: it.title.replace(/<em>/g, \\\\\\\"\\\\\\\").replace(/<\\\\\\\\/em>/g, \\\\\\\"\\\\\\\"),\\\\n        url: config.api + \\\\\\\"/novel/book/directory/list/v1?book_id=\\\\\\\" + it.book_id + \\\\\\\"#immersiveTheme#\\\\\\\",\\\\n        col_type: \\\\\\\"\\\\\\\",\\\\n        desc: it.author,\\\\n        pic_url: it.thumb_url\\\\n    });\\\\n}\\\\nsetResult(d);\\\",\\n        \\\"detail_col_type\\\": \\\"movie_1\\\",\\n        \\\"detail_find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nvar data = JSON.parse(getResCode());\\\\nvar book_info = data.data.book_info;\\\\nd.push({\\\\n    title: book_info.book_name,\\\\n    url: getUrl(),\\\\n    col_type: \\\\\\\"movie_1_vertical_pic_blur\\\\\\\",\\\\n    desc: \\\\\\\"作者：\\\\\\\" + book_info.author + \\\\\\\"\\\\\\\\n最新章节：\\\\\\\" + book_info.last_chapter_title + \\\\\\\"\\\\\\\\n分类标签：\\\\\\\" + book_info.complete_category,\\\\n    pic_url: book_info.thumb_url\\\\n});\\\\nd.push({\\\\n    title: '““””<small><font color=#871f78>数据来源于网络，如您喜欢，请支持官方</font></small>',\\\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\\\n    url: MY_URL,\\\\n    col_type: 'text_center_1'\\\\n});\\\\nvar list = data.data.item_list;\\\\nvar urls = []\\\\nfor (let i = 0; i < list.length; i++) {\\\\n    let index = Math.floor(i / 100)\\\\n    if (urls.length <= index) {\\\\n        urls.push([])\\\\n    }\\\\n    urls[index].push(list[i])\\\\n}\\\\n\\\\nvar ul = []\\\\nfor (let it of urls) {\\\\n    ul.push({\\\\n        url: config.api + \\\\\\\"/novel/book/directory/detail/v1/?item_ids=\\\\\\\" + it.join(\\\\\\\",\\\\\\\"),\\\\n        options: {\\\\n            header: {\\\\n                \\\\\\\"User-Agent\\\\\\\": MOBILE_UA\\\\n            }\\\\n        }\\\\n    })\\\\n}\\\\n\\\\n\\\\n\\\\nlet cfg = {\\\\n    一页章节数: 100,\\\\n    缓存个数: 15\\\\n}\\\\n\\\\nvar caches;\\\\n\\\\nfunction getCache() {\\\\n    let c = readFile(\\\\\\\"chapter.json\\\\\\\") || \\\\\\\"[]\\\\\\\";\\\\n    caches = JSON.parse(c)\\\\n    let url = getUrl()\\\\n    addListener(\\\\\\\"onRefresh\\\\\\\", $.toString((url) => {\\\\n        let c = readFile(\\\\\\\"chapter.json\\\\\\\") || \\\\\\\"[]\\\\\\\";\\\\n        c = JSON.parse(c)\\\\n        let che = {\\\\n            url: url,\\\\n            page: 0,\\\\n            chapters: []\\\\n        };\\\\n        for (let i = 0; i < c.length; i++) {\\\\n            if (c[i].url == che.url) {\\\\n                c[i] = che;\\\\n                log(\\\\\\\"clear:\\\\\\\" + url)\\\\n                saveFile(\\\\\\\"chapter.json\\\\\\\", JSON.stringify(c))\\\\n                break\\\\n            }\\\\n        }\\\\n    }, url))\\\\n    for (let it of caches) {\\\\n        if (it.url == url) {\\\\n            return it;\\\\n        }\\\\n    }\\\\n    return {\\\\n        url: url,\\\\n        page: 0,\\\\n        chapters: []\\\\n    }\\\\n}\\\\n\\\\nfunction saveCache(che) {\\\\n    log(che.length)\\\\n    let c = caches\\\\n    if (c.length > cfg.缓存个数) {\\\\n        c.shift()\\\\n    }\\\\n    let exist = false\\\\n    for (let i = 0; i < c.length; i++) {\\\\n        if (c[i].url == che.url) {\\\\n            c[i] = che;\\\\n            exist = true;\\\\n            break\\\\n        }\\\\n    }\\\\n    if (!exist) {\\\\n        c.push(che)\\\\n    }\\\\n    saveFile(\\\\\\\"chapter.json\\\\\\\", JSON.stringify(c))\\\\n}\\\\n\\\\nlet cache = getCache();\\\\n\\\\nlet page = ul.length;\\\\nlog(\\\\\\\"实际页数：\\\\\\\" + page)\\\\nlog(\\\\\\\"缓存页数：\\\\\\\" + cache.page)\\\\nif (page == cache.page) {\\\\n    //已完结，目录全部缓存了\\\\n    setResult(d.concat(cache.chapters))\\\\n} else {\\\\n    //解析本地没有的缓存\\\\n    let urls2 = []\\\\n    let htmls = []\\\\n    for (let i = cache.page; i < page; i++) {\\\\n        urls2.push(ul[i])\\\\n    }\\\\n    //log(urls)\\\\n    d = d.concat(cache.chapters)\\\\n    htmls = htmls.concat(batchFetch(urls2))\\\\n    //log(htmls)\\\\n    for (let it of htmls) {\\\\n        if (it == \\\\\\\"\\\\\\\") {\\\\n            break\\\\n        }\\\\n        let temp = []\\\\n        let cps = JSON.parse(it).data;\\\\n        for (let c of cps) {\\\\n            temp.push({\\\\n                title: c.title,\\\\n                col_type: \\\\\\\"text_2\\\\\\\",\\\\n                url: $(config.api + \\\\\\\"/novel/book/reader/full/v1/?item_id=\\\\\\\" + c.item_id + \\\\\\\"#autoPage##readTheme#\\\\\\\").rule(() => {\\\\n                    $.require(\\\\\\\"hiker://page/c\\\\\\\")\\\\n                })\\\\n            });\\\\n        }\\\\n        //log(list.length)\\\\n        if (cps.length == cfg.一页章节数) {\\\\n            //章节齐全的才放本地缓存\\\\n            cache.page = cache.page + 1\\\\n            cache.chapters = cache.chapters.concat(temp)\\\\n        }\\\\n        d = d.concat(temp)\\\\n    }\\\\n\\\\n    saveCache(cache)\\\\n    setResult(d);\\\\n}\\\",\\n        \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n        \\\"sdetail_find_rule\\\": \\\"*\\\",\\n        \\\"ua\\\": \\\"mobile\\\",\\n        \\\"preRule\\\": \\\"initConfig({\\\\n    api: \\\\\\\"https://novel.snssdk.com/api\\\\\\\",\\\\n    封面域名: \\\\\\\"http://p6-novel.byteimg.com/large/\\\\\\\"\\\\n});\\\",\\n        \\\"pages\\\": \\\"[{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"正文\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"c\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"js:\\\\\\\\nvar d = [];\\\\\\\\nvar data = JSON.parse(getResCode());\\\\\\\\nvar c = data.data.novel_data;\\\\\\\\nd.push({\\\\\\\\n    title: \\\\\\\\\\\\\\\"<big>\\\\\\\\\\\\\\\" + c.chapter_title + \\\\\\\\\\\\\\\"</big>\\\\\\\\\\\\\\\",\\\\\\\\n    url: \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\",\\\\\\\\n    col_type: \\\\\\\\\\\\\\\"rich_text\\\\\\\\\\\\\\\",\\\\\\\\n    desc: \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\",\\\\\\\\n    pic_url: \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\",\\\\\\\\n    extra: {\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\n\\\\\\\\nd.push({\\\\\\\\n    title: pdfh(data.data.content, \\\\\\\\\\\\\\\"article&&Html\\\\\\\\\\\\\\\"),\\\\\\\\n    col_type: \\\\\\\\\\\\\\\"rich_text\\\\\\\\\\\\\\\",\\\\\\\\n    extra: {\\\\\\\\n        textSize: 18,\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\n\\\\\\\\nsetResult(d);\\\\\\\"},{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"目录\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"chapter\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"let cfg = {\\\\\\\\n    分页列表: \\\\\\\\\\\\\\\".pagelist&&option\\\\\\\\\\\\\\\",\\\\\\\\n    分页链接: \\\\\\\\\\\\\\\"option&&value\\\\\\\\\\\\\\\",\\\\\\\\n    分页请求头: {\\\\\\\\n        \\\\\\\\\\\\\\\"User-Agent\\\\\\\\\\\\\\\": MOBILE_UA,\\\\\\\\n    },\\\\\\\\n    一页章节数: 100,\\\\\\\\n    章节列表: \\\\\\\\\\\\\\\"ul.read&&li\\\\\\\\\\\\\\\",\\\\\\\\n    章节标题: \\\\\\\\\\\\\\\"a&&Text\\\\\\\\\\\\\\\",\\\\\\\\n    章节链接: \\\\\\\\\\\\\\\"a&&href\\\\\\\\\\\\\\\",\\\\\\\\n    缓存个数: 15\\\\\\\\n}\\\\\\\\n\\\\\\\\n\\\\\\\\nvar code = getResCode()\\\\\\\\nvar caches;\\\\\\\\n\\\\\\\\nfunction getCache() {\\\\\\\\n    let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n    caches = JSON.parse(c)\\\\\\\\n    let url = getUrl()\\\\\\\\n    addListener(\\\\\\\\\\\\\\\"onRefresh\\\\\\\\\\\\\\\", $.toString((url) => {\\\\\\\\n        let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n        c = JSON.parse(c)\\\\\\\\n        let che = {\\\\\\\\n            url: url,\\\\\\\\n            page: 0,\\\\\\\\n            chapters: []\\\\\\\\n        };\\\\\\\\n        for (let i = 0; i < c.length; i++) {\\\\\\\\n            if (c[i].url == che.url) {\\\\\\\\n                c[i] = che;\\\\\\\\n                log(\\\\\\\\\\\\\\\"clear:\\\\\\\\\\\\\\\" + url)\\\\\\\\n                saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n                break\\\\\\\\n            }\\\\\\\\n        }\\\\\\\\n    }, url))\\\\\\\\n    for (let it of caches) {\\\\\\\\n        if (it.url == url) {\\\\\\\\n            return it;\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    return {\\\\\\\\n        url: url,\\\\\\\\n        page: 0,\\\\\\\\n        chapters: []\\\\\\\\n    }\\\\\\\\n}\\\\\\\\n\\\\\\\\nfunction saveCache(che) {\\\\\\\\n    log(che.length)\\\\\\\\n    let c = caches\\\\\\\\n    if (c.length > cfg.缓存个数) {\\\\\\\\n        c.shift()\\\\\\\\n    }\\\\\\\\n    let exist = false\\\\\\\\n    for (let i = 0; i < c.length; i++) {\\\\\\\\n        if (c[i].url == che.url) {\\\\\\\\n            c[i] = che;\\\\\\\\n            exist = true;\\\\\\\\n            break\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    if (!exist) {\\\\\\\\n        c.push(che)\\\\\\\\n    }\\\\\\\\n    saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n}\\\\\\\\n\\\\\\\\nlet cache = getCache();\\\\\\\\n\\\\\\\\nlet mp = pdfa(code, cfg.分页列表)\\\\\\\\nlet page = mp.length;\\\\\\\\nlog(\\\\\\\\\\\\\\\"实际页数：\\\\\\\\\\\\\\\" + page)\\\\\\\\nlog(\\\\\\\\\\\\\\\"缓存页数：\\\\\\\\\\\\\\\" + cache.page)\\\\\\\\nif (page == cache.page) {\\\\\\\\n    //已完结，目录全部缓存了\\\\\\\\n    setResult(cache.chapters)\\\\\\\\n    return\\\\\\\\n}\\\\\\\\n//解析本地没有的缓存\\\\\\\\nlet urls = []\\\\\\\\nlet htmls = []\\\\\\\\n//log(mp)\\\\\\\\nfor (let i = cache.page; i < mp.length; i++) {\\\\\\\\n    if (i == 0) {\\\\\\\\n        htmls.push(code)\\\\\\\\n        continue\\\\\\\\n    }\\\\\\\\n    let it = mp[i];\\\\\\\\n    urls.push({\\\\\\\\n        url: pd(it, cfg.分页链接),\\\\\\\\n        options: {\\\\\\\\n            headers: cfg.分页请求头 || {}\\\\\\\\n        }\\\\\\\\n    })\\\\\\\\n}\\\\\\\\n//log(urls)\\\\\\\\nlet d = [].concat(cache.chapters)\\\\\\\\nhtmls = htmls.concat(batchFetch(urls))\\\\\\\\n//log(htmls)\\\\\\\\nfor (let it of htmls) {\\\\\\\\n    if (it == \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\") {\\\\\\\\n        break\\\\\\\\n    }\\\\\\\\n    let list = pdfa(it, cfg.章节列表)\\\\\\\\n    let temp = []\\\\\\\\n    for (let ii of list) {\\\\\\\\n        temp.push({\\\\\\\\n            title: pdfh(ii, cfg.章节标题).split(\\\\\\\\\\\\\\\" （\\\\\\\\\\\\\\\")[0].split(\\\\\\\\\\\\\\\"（\\\\\\\\\\\\\\\")[0],\\\\\\\\n            url: pd(ii, cfg.章节链接) + \\\\\\\\\\\\\\\"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\\\\\\\\\\\\\\\"\\\\\\\\n        })\\\\\\\\n    }\\\\\\\\n    //log(list.length)\\\\\\\\n    if (list.length == cfg.一页章节数) {\\\\\\\\n        //章节齐全的才放本地缓存\\\\\\\\n        cache.page = cache.page + 1\\\\\\\\n        cache.chapters = cache.chapters.concat(temp)\\\\\\\\n    }\\\\\\\\n    d = d.concat(temp)\\\\\\\\n}\\\\\\\\n\\\\\\\\nsaveCache(cache)\\\\\\\\nsetResult(d)\\\\\\\"}]\\\",\\n        \\\"icon\\\": \\\"https://img0.baidu.com/it/u=3261019260,110575185&fm=117&fmt=auto&gp=0.jpg\\\"\\n    },\\n    {\\n        \\\"firstHeader\\\": \\\"class\\\",\\n        \\\"last_chapter_rule\\\": \\\"\\\",\\n        \\\"title\\\": \\\"顶点小说🅛\\\",\\n        \\\"author\\\": \\\"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！\\\",\\n        \\\"url\\\": \\\"https://m.top.la/list/fyAll_fypage.html;get;gbk\\\",\\n        \\\"version\\\": 58,\\n        \\\"col_type\\\": \\\"movie_3\\\",\\n        \\\"class_name\\\": \\\"玄幻小说&仙侠小说&都市小说&历史军事\\\",\\n        \\\"type\\\": \\\"read\\\",\\n        \\\"class_url\\\": \\\"1&2&3&4\\\",\\n        \\\"area_name\\\": \\\"网游小说&科幻小说&言情小说\\\",\\n        \\\"area_url\\\": \\\"5&6&7\\\",\\n        \\\"sort_name\\\": \\\"\\\",\\n        \\\"year_name\\\": \\\"\\\",\\n        \\\"sort_url\\\": \\\"\\\",\\n        \\\"year_url\\\": \\\"\\\",\\n        \\\"find_rule\\\": \\\".list&&.xbk:has(li);span&&Text;img&&src;*;a&&href.js:input+\\\\\\\"mulu/1/\\\\\\\"\\\",\\n        \\\"search_url\\\": \\\"https://m.top.la/s.php?submit=&type=articlename&s=**;post;gbk\\\",\\n        \\\"group\\\": \\\"⑧阅读\\\",\\n        \\\"searchFind\\\": \\\"js:\\\\nvar res = {};\\\\r\\\\nvar d = [];\\\\r\\\\ntry {\\\\r\\\\n    var list = parseDomForArray(getResCode(), '.slist&&li');\\\\r\\\\n    for (var j in list) {\\\\r\\\\n        d.push({\\\\r\\\\n            title: parseDomForHtml(list[j], 'a,1&&Text'),\\\\r\\\\n            desc: parseDomForHtml(list[j], 'a,-1&&Text'),\\\\r\\\\n            //pic_url: parseDom(list[j], 'img&&data-original'),       \\\\r\\\\n            url: parseDom(list[j], 'a,1&&href') + \\\\\\\"/mulu/1/\\\\\\\"\\\\r\\\\n        });\\\\r\\\\n    }\\\\r\\\\n} catch (e) {}\\\\r\\\\nres.data = d;\\\\r\\\\nsetHomeResult(res);\\\",\\n        \\\"detail_col_type\\\": \\\"text_1\\\",\\n        \\\"detail_find_rule\\\": \\\"js:\\\\n$.require(\\\\\\\"hiker://page/chapter\\\\\\\")\\\",\\n        \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n        \\\"sdetail_find_rule\\\": \\\"*\\\",\\n        \\\"ua\\\": \\\"mobile\\\",\\n        \\\"preRule\\\": \\\"\\\",\\n        \\\"pages\\\": \\\"[{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"正文\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"content\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"var d = [];\\\\\\\\nd.push({\\\\\\\\n    col_type: \\\\\\\\\\\\\\\"rich_text\\\\\\\\\\\\\\\",\\\\\\\\n    title: \\\\\\\\\\\\\\\"<big>\\\\\\\\\\\\\\\" + parseDomForHtml(getResCode(), \\\\\\\\\\\\\\\"#header&&.zhong&&Text\\\\\\\\\\\\\\\") + \\\\\\\\\\\\\\\"</big>\\\\\\\\\\\\\\\",\\\\\\\\n    extra: {\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nd.push({\\\\\\\\n    title: parseDomForHtml(getResCode(), \\\\\\\\\\\\\\\"#nr&&Html\\\\\\\\\\\\\\\"),\\\\\\\\n    col_type: 'rich_text',\\\\\\\\n    extra: {\\\\\\\\n        textSize: 18,\\\\\\\\n        click: true\\\\\\\\n    }\\\\\\\\n});\\\\\\\\nsetResult(d);\\\\\\\"},{\\\\\\\"col_type\\\\\\\":\\\\\\\"movie_3\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"目录解析\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"chapter\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"let cfg = {\\\\\\\\n    分页列表: \\\\\\\\\\\\\\\"body&&.showpage&&a:not(:contains(没有更多分页))\\\\\\\\\\\\\\\",\\\\\\\\n    分页链接: \\\\\\\\\\\\\\\"a&&href\\\\\\\\\\\\\\\",\\\\\\\\n    分页请求头: {\\\\\\\\n        \\\\\\\\\\\\\\\"User-Agent\\\\\\\\\\\\\\\": MOBILE_UA,\\\\\\\\n        \\\\\\\\\\\\\\\"Content-Type\\\\\\\\\\\\\\\": \\\\\\\\\\\\\\\"text/html; charset=GBK\\\\\\\\\\\\\\\"\\\\\\\\n    },\\\\\\\\n    一页章节数: 40,\\\\\\\\n    章节列表: \\\\\\\\\\\\\\\"body&&.lb&&li:not(:contains(本页章节列表结束！))\\\\\\\\\\\\\\\",\\\\\\\\n    章节标题: \\\\\\\\\\\\\\\"a&&Text\\\\\\\\\\\\\\\",\\\\\\\\n    章节链接: \\\\\\\\\\\\\\\"a&&href\\\\\\\\\\\\\\\",\\\\\\\\n    缓存个数: 15\\\\\\\\n}\\\\\\\\n\\\\\\\\n\\\\\\\\nvar code = getResCode()\\\\\\\\nvar caches;\\\\\\\\n\\\\\\\\nfunction getCache() {\\\\\\\\n    let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n    caches = JSON.parse(c)\\\\\\\\n    let url = getUrl()\\\\\\\\n    log(url)\\\\\\\\n    addListener(\\\\\\\\\\\\\\\"onRefresh\\\\\\\\\\\\\\\", $.toString((url) => {\\\\\\\\n        let c = readFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\") || \\\\\\\\\\\\\\\"[]\\\\\\\\\\\\\\\";\\\\\\\\n        c = JSON.parse(c)\\\\\\\\n        let che = {\\\\\\\\n            url: url,\\\\\\\\n            page: 0,\\\\\\\\n            chapters: []\\\\\\\\n        };\\\\\\\\n        for (let i = 0; i < c.length; i++) {\\\\\\\\n            if (c[i].url == che.url) {\\\\\\\\n                c[i] = che;\\\\\\\\n                log(\\\\\\\\\\\\\\\"clear:\\\\\\\\\\\\\\\" + url)\\\\\\\\n                saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n                break\\\\\\\\n            }\\\\\\\\n        }\\\\\\\\n    }, url))\\\\\\\\n    for (let it of caches) {\\\\\\\\n        if (it.url == url) {\\\\\\\\n            return it;\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    return {\\\\\\\\n        url: url,\\\\\\\\n        page: 0,\\\\\\\\n        chapters: []\\\\\\\\n    }\\\\\\\\n}\\\\\\\\n\\\\\\\\nfunction saveCache(che) {\\\\\\\\n    let c = caches\\\\\\\\n    if (c.length > cfg.缓存个数) {\\\\\\\\n        c.shift()\\\\\\\\n    }\\\\\\\\n    let exist = false\\\\\\\\n    for (let i = 0; i < c.length; i++) {\\\\\\\\n        if (c[i].url == che.url) {\\\\\\\\n            c[i] = che;\\\\\\\\n            exist = true;\\\\\\\\n            break\\\\\\\\n        }\\\\\\\\n    }\\\\\\\\n    if (!exist) {\\\\\\\\n        c.push(che)\\\\\\\\n    }\\\\\\\\n    saveFile(\\\\\\\\\\\\\\\"chapter.json\\\\\\\\\\\\\\\", JSON.stringify(c))\\\\\\\\n}\\\\\\\\n\\\\\\\\nlet cache = getCache();\\\\\\\\n\\\\\\\\nlet mp = pdfa(code, cfg.分页列表)\\\\\\\\nlet page = mp.length;\\\\\\\\nlog(\\\\\\\\\\\\\\\"实际页数：\\\\\\\\\\\\\\\" + page)\\\\\\\\nlog(\\\\\\\\\\\\\\\"缓存页数：\\\\\\\\\\\\\\\" + cache.page)\\\\\\\\nif (page == cache.page) {\\\\\\\\n    //已完结，目录全部缓存了\\\\\\\\n    setResult(cache.chapters)\\\\\\\\n    return\\\\\\\\n}\\\\\\\\n//解析本地没有的缓存\\\\\\\\nlet urls = []\\\\\\\\nlet htmls = []\\\\\\\\n//log(mp)\\\\\\\\nfor (let i = cache.page; i < mp.length; i++) {\\\\\\\\n    if (i == 0) {\\\\\\\\n        htmls.push(code)\\\\\\\\n        continue\\\\\\\\n    }\\\\\\\\n    let it = mp[i];\\\\\\\\n    urls.push({\\\\\\\\n        url: pd(it, cfg.分页链接),\\\\\\\\n        options: {\\\\\\\\n            headers: cfg.分页请求头 || {}\\\\\\\\n        }\\\\\\\\n    })\\\\\\\\n}\\\\\\\\n//log(urls)\\\\\\\\nlet d = [].concat(cache.chapters)\\\\\\\\nhtmls = htmls.concat(batchFetch(urls))\\\\\\\\n//log(htmls)\\\\\\\\nfor (let it of htmls) {\\\\\\\\n    if (it == \\\\\\\\\\\\\\\"\\\\\\\\\\\\\\\") {\\\\\\\\n        break\\\\\\\\n    }\\\\\\\\n    let list = pdfa(it, cfg.章节列表)\\\\\\\\n    let temp = []\\\\\\\\n    for (let ii of list) {\\\\\\\\n        temp.push({\\\\\\\\n            title: pdfh(ii, cfg.章节标题).split(\\\\\\\\\\\\\\\" （\\\\\\\\\\\\\\\")[0].split(\\\\\\\\\\\\\\\"（\\\\\\\\\\\\\\\")[0],\\\\\\\\n            url: pd(ii, cfg.章节链接) + \\\\\\\\\\\\\\\"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\\\\\\\\\\\\\\\"\\\\\\\\n        })\\\\\\\\n    }\\\\\\\\n    log(list.length)\\\\\\\\n    if (list.length == cfg.一页章节数) {\\\\\\\\n        //章节齐全的才放本地缓存\\\\\\\\n        cache.page = cache.page + 1\\\\\\\\n        cache.chapters = cache.chapters.concat(temp)\\\\\\\\n    }\\\\\\\\n    d = d.concat(temp)\\\\\\\\n}\\\\\\\\n\\\\\\\\nsaveCache(cache)\\\\\\\\nsetResult(d)\\\\\\\"},{\\\\\\\"col_type\\\\\\\":\\\\\\\"text_1\\\\\\\",\\\\\\\"name\\\\\\\":\\\\\\\"目录分页\\\\\\\",\\\\\\\"path\\\\\\\":\\\\\\\"cp\\\\\\\",\\\\\\\"rule\\\\\\\":\\\\\\\"js:\\\\\\\\n$.require(\\\\\\\\\\\\\\\"hiker://page/chapter\\\\\\\\\\\\\\\")\\\\\\\"}]\\\",\\n        \\\"icon\\\": \\\"\\\"\\n    }, {\\n        \\\"last_chapter_rule\\\": \\\"js:\\\\nvar html = getResCode();\\\\nvar conts = parseDomForArray(html, '.chapterlist,1&&ul')[0];\\\\nvar list=parseDomForArray(conts, 'body&&a');\\\\nvar title=parseDomForHtml(list[list.length-1],'Text');\\\\nsetResult(\\\\\\\"更新至: \\\\\\\"+title);\\\",\\n        \\\"title\\\": \\\"第一小说\\\",\\n        \\\"author\\\": \\\"大众\\\",\\n        \\\"url\\\": \\\"https://www.01xs.com/fyclass/\\\",\\n        \\\"version\\\": 7,\\n        \\\"col_type\\\": \\\"movie_1_vertical_pic\\\",\\n        \\\"class_name\\\": \\\"玄幻&仙侠&都市&历史&网游&科幻&同人&综合&青春&现代&古代&幻想&完本\\\",\\n        \\\"type\\\": \\\"read\\\",\\n        \\\"class_url\\\": \\\"fenlei1&fenlei2&fenlei3&fenlei4&fenlei5&fenlei6&fenlei7&fenlei8&fenlei9&fenlei10&fenlei11&fenlei12&qb\\\",\\n        \\\"area_name\\\": \\\"\\\",\\n        \\\"area_url\\\": \\\"\\\",\\n        \\\"sort_name\\\": \\\"\\\",\\n        \\\"year_name\\\": \\\"\\\",\\n        \\\"sort_url\\\": \\\"\\\",\\n        \\\"year_url\\\": \\\"\\\",\\n        \\\"find_rule\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\nvar list = parseDomForArray(getResCode(), '.listcon&&ul&&li');\\\\nfor (var i in list) {\\\\n    d.push({\\\\n        title: parseDomForHtml(list[i], 'img&&alt')+'\\\\\\\\n'+ parseDomForHtml(list[i], 'span,-1&&Text').split('/')[1],\\\\n        desc: parseDomForHtml(list[i], 'p,1&&Text'),\\\\n        pic_url: parseDom(list[i], 'img&&data-original'),\\\\n        url: parseDom(list[i], 'a&&href') + \\\\\\\"#immersiveTheme#\\\\\\\",\\\\n    })\\\\n}\\\\nres.data = d;\\\\nsetHomeResult(res);\\\",\\n        \\\"search_url\\\": \\\"https://www.01xs.com/search.php?keyword=**\\\",\\n        \\\"group\\\": \\\"⑧阅读\\\",\\n        \\\"searchFind\\\": \\\"js:\\\\nvar d = [];\\\\ntry {\\\\n    var list = parseDomForArray(getResCode(), '.jilu&&.banner&&ul');\\\\n    for (var j in list) {\\\\n        d.push({\\\\n            title: parseDomForHtml(list[j], 'li,1&&Text'),\\\\n            desc: '作者：'+parseDomForHtml(list[j], 'li,3&&Text'),\\\\n            content: parseDomForHtml(list[j], 'li,2&&Text'),\\\\n            url: parseDom(list[j], 'a&&href') + \\\\\\\"#immersiveTheme#\\\\\\\",\\\\n        });\\\\n    }\\\\n} catch (e) {}\\\\nsetResult(d);\\\",\\n        \\\"detail_col_type\\\": \\\"movie_1\\\",\\n        \\\"detail_find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nvar html = getResCode();\\\\n\\\\nvar conts = parseDomForArray(html, '.chapterlist,1&&ul');\\\\n\\\\nvar lists = [];\\\\nfor (var i in conts) {\\\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\\\n}\\\\n\\\\nvar des_desc = '简介：' + parseDomForHtml(html, '.articleinfo&&.p3&&Text').substring(0, 28) + '...查看详情';\\\\nd.push({\\\\n    title: '书名：' + parseDomForHtml(getResCode(), '.articleinfo&&img&&alt').replace(getUrl() + \\\\\\\"/\\\\\\\", \\\\\\\"\\\\\\\") + '\\\\\\\\n' + parseDomForHtml(getResCode(), '.articleinfo&&.author&&Text').replace(getUrl() + \\\\\\\"/\\\\\\\", \\\\\\\"\\\\\\\") + '\\\\\\\\t' + '\\\\\\\\t' + parseDomForHtml(getResCode(), '.articleinfo&&.p4&&Text').split('文章')[1].replace(getUrl() + \\\\\\\"/\\\\\\\", \\\\\\\"\\\\\\\") + '\\\\\\\\n' + parseDomForHtml(getResCode(), '.articleinfo&&.p4,2&&Text').replace(getUrl() + \\\\\\\"/\\\\\\\", \\\\\\\"\\\\\\\"),\\\\n    desc: des_desc,\\\\n    pic_url: parseDom(getResCode(), '.articleinfo&&img&&src'),\\\\n    url: 'hiker://empty#' + '　　' + parseDomForHtml(html, '.articleinfo&&.p3&&Text') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text',extra: {textSize: 20}});res.data = d; setHomeResult(res);`,\\\\n    col_type: 'movie_1_vertical_pic_blur'\\\\n});\\\\n\\\\nd.push({\\\\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\\\\\\\"color: #FF0000\\\\\\\">目录</span></b>' : '““””<b><span style=\\\\\\\"color: #1aad19\\\\\\\">目录</span></b>',\\\\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\\\n    col_type: 'text_center_1'\\\\n})\\\\n\\\\nfunction setLists(lists, index) {\\\\n    var list = lists[index];\\\\n    d.push({\\\\n        col_type: 'big_blank_block'\\\\n    });\\\\n    d.push({\\\\n        col_type: 'big_blank_block'\\\\n    });\\\\n    if (getVar('shsort') == '1') {\\\\n        for (var j = list.length - 1; j >= 0; j--) {\\\\n            var jm = parseDomForHtml(list[j], 'Text');\\\\n            d.push({\\\\n                title: jm,\\\\n                url: parseDom(list[j], 'a&&href') + \\\\\\\"#autoPage##readTheme#\\\\\\\" + `@rule=js:` + $.toString(() => {\\\\n                    let d = [];\\\\n                    var des_title = parseDomForHtml(getResCode(), '#c1&&h1&&Text');\\\\n                    d.push({\\\\n                        title: '<big>' + des_title + '</big>',\\\\n                        col_type: 'rich_text',\\\\n                        extra: {\\\\n                            click: true\\\\n                        }\\\\n                    });\\\\n                    let cont = parseDomForArray(getResCode(), '#content&&p');\\\\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\\\\\\\"<br><br>\\\\\\\");\\\\n                    d.push({\\\\n                        title: html,\\\\n                        col_type: \\\\\\\"rich_text\\\\\\\",\\\\n                        extra: {\\\\n                            textSize: 18,\\\\n                            click: true\\\\n                        }\\\\n                    });\\\\n                    setResult(d);\\\\n                }),\\\\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\\\\n            });\\\\n        }\\\\n    } else {\\\\n        for (var j = 0; j < list.length; j++) {\\\\n            var jm = parseDomForHtml(list[j], 'Text');\\\\n            d.push({\\\\n                title: jm,\\\\n                url: parseDom(list[j], 'a&&href') + \\\\\\\"#autoPage##readTheme#\\\\\\\" + `@rule=js:` + $.toString(() => {\\\\n                    let d = [];\\\\n                    var des_title = parseDomForHtml(getResCode(), '#c1&&h1&&Text');\\\\n                    d.push({\\\\n                        title: '<big>' + des_title + '</big>',\\\\n                        col_type: 'rich_text',\\\\n                        extra: {\\\\n                            click: true\\\\n                        }\\\\n                    });\\\\n                    let cont = parseDomForArray(getResCode(), '#content&&p');\\\\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\\\\\\\"<br><br>\\\\\\\");\\\\n                    d.push({\\\\n                        title: html,\\\\n                        col_type: \\\\\\\"rich_text\\\\\\\",\\\\n                        extra: {\\\\n                            textSize: 18,\\\\n                            click: true\\\\n                        }\\\\n                    });\\\\n                    setResult(d);\\\\n                }),\\\\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\\\\n            });\\\\n        }\\\\n    }\\\\n}\\\\nsetLists(lists, getVar(MY_URL, '0'));\\\\nd.push({\\\\n    title: '<br>',\\\\n    col_type: 'rich_text'\\\\n});\\\\nsetResult(d);\\\",\\n        \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n        \\\"sdetail_find_rule\\\": \\\"*\\\",\\n        \\\"ua\\\": \\\"pc\\\",\\n        \\\"preRule\\\": \\\"\\\",\\n        \\\"pages\\\": \\\"[]\\\",\\n        \\\"icon\\\": \\\"\\\"\\n    }\\n]\"}]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fdingyue.ws.126.net%2F2020%2F0424%2F89006fbdj00q99v2x001kc000u000mim.jpg&refer=http%3A%2F%2Fdingyue.ws.126.net&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1641041959&t=62d493b2f5e950984f04c1cebd2de7ca"},{"last_chapter_rule":"","title":"资源轻合集","author":"轻合集生成器","version":100,"type":"all","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'hiker://page/data');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"规则列表\",\"path\":\"data\",\"rule\":\"[{\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"吾爱破解𝔥\\\",\\n    \\\"author\\\": \\\"Hood\\\",\\n    \\\"url\\\": \\\"https://www.52pojie.cn/forum.php?mod=guide&view=fyclass&page=fypage;get;GBK\\\",\\n    \\\"version\\\": 4,\\n    \\\"col_type\\\": \\\"text_1\\\",\\n    \\\"class_name\\\": \\\"最新热门&最新精华&最新回复&最新发表\\\",\\n    \\\"class_url\\\": \\\"hot&digest&new&newthread\\\",\\n    \\\"area_name\\\": \\\"\\\",\\n    \\\"area_url\\\": \\\"\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\nvar html = getResCode();\\\\n\\\\n//列表\\\\nvar list = parseDomForArray(html,'body&&tbody[id]');\\\\n\\\\nfor(var i=1;i<list.length+1;i++){\\\\nd.push({\\\\ntitle: (i)+ '. ' +parseDomForHtml(list[i-1],'.xst&&Text'),\\\\nurl:'x5://https://www.52pojie.cn/'+parseDomForHtml(list[i-1],'a&&href'),\\\\ncol_type: 'text_1'});\\\\n}\\\\n\\\\r\\\\nres.data = d;\\\\nsetHomeResult(res);\\\",\\n    \\\"search_url\\\": \\\"http://zhannei.baidu.com/cse/site?q=**&p=fypage&cc=52pojie.cn\\\",\\n    \\\"group\\\": \\\"①推荐\\\",\\n    \\\"searchFind\\\": \\\"body&&.result;\\\\nh3&&Text;\\\\na&&href;\\\\n*;\\\\n.c-abstract&&Text;\\\\n*\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"\\\",\\n    \\\"ua\\\": \\\"pc\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"https://www.52pojie.cn/favicon.ico\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"423Down\\\",\\n    \\\"author\\\": \\\"香雅情\\\",\\n    \\\"url\\\": \\\"https://www.423down.com/fyAllpage/fypage;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36}\\\",\\n    \\\"version\\\": 1,\\n    \\\"col_type\\\": \\\"movie_1\\\",\\n    \\\"class_name\\\": \\\"首页&安卓软件\\\",\\n    \\\"type\\\": \\\"news\\\",\\n    \\\"class_url\\\": \\\"&apk/\\\",\\n    \\\"area_name\\\": \\\"原创软件&媒体播放&网页浏览&图形图像&聊天软件&办公软件&上传下载&实用软件&系统辅助&系统必备&安全软件&补丁相关&硬件相关&游戏软件\\\",\\n    \\\"area_url\\\": \\\"zd423/&multimedia/&browser/&image/&im/&work/&down/&safewore/&systemsoft/&systemplus/&security/&patch/&hardware/&game/\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\"js:\\\\nvar items = [];var html=getResCode();\\\\n//log(html);\\\\nvar list = parseDomForArray(html,'.archive-list&&li:not(:contains(优惠推荐))');\\\\n\\\\r\\\\n    for (var i = 0; i < list.length; i++) {\\\\r\\\\n        var title = parseDomForHtml(list[i], 'h2&&Text');\\\\n        var img = parseDom(list[i], 'img&&src');\\\\r\\\\n        var url = parseDom(list[i], 'a&&href');\\\\n        var desc = parseDomForHtml(list[i], '.item-meta&&Text');\\\\r\\\\n        items.push({\\\\r\\\\n            title: title,\\\\n            pic_url: img,\\\\r\\\\n            url: url,\\\\n            desc: desc\\\\r\\\\n        });\\\\r\\\\n    }\\\\n\\\\nsetHomeResult({data:items});\\\",\\n    \\\"search_url\\\": \\\"https://www.423down.com/page/fypage?s=**;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36}\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\".archive-list&&li;h2&&Text;a&&href;.item-category&&Text;.item-meta&&Text;img&&src\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"js:\\\\nvar d=[];\\\\nvar html=getResCode();\\\\nvar tabs=parseDomForHtml(html,'body&&.entry&&Html');\\\\n\\\\nd.push({\\\\n\\\\t\\\\t\\\\ttitle: tabs,\\\\n    desc:'',\\\\n    pic_url:'',\\\\n    url:'',\\\\n\\\\t\\\\tcol_type: 'rich_text'\\\\n});\\\\n\\\\nsetHomeResult({data:d});\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"auto\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"落尘之木ᴺᵐ\\\",\\n    \\\"author\\\": \\\"Namo\\\",\\n    \\\"url\\\": \\\"https://www.luochenzhimu.com/page/fypage\\\",\\n    \\\"version\\\": 1,\\n    \\\"col_type\\\": \\\"movie_1_left_pic\\\",\\n    \\\"class_name\\\": \\\"\\\",\\n    \\\"type\\\": \\\"other\\\",\\n    \\\"class_url\\\": \\\"\\\",\\n    \\\"area_name\\\": \\\"\\\",\\n    \\\"area_url\\\": \\\"\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\nvar list = parseDomForArray(getResCode(), '.content&&.excerpt');\\\\nfor (var i in list) {\\\\n    d.push({\\\\n        title: parseDomForHtml(list[i], 'h2&&Text'),\\\\n        desc: parseDomForHtml(list[i], '.meta&&Text'),\\\\n        pic_url: parseDom(list[i], 'img&&data-src') + \\\\\\\"@Referer=\\\\\\\",\\\\n        url: parseDom(list[i], 'a&&href'),\\\\n    })\\\\n}\\\\nres.data = d;\\\\nsetHomeResult(res);\\\",\\n    \\\"search_url\\\": \\\"https://www.luochenzhimu.com/?s=**\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\nvar list = parseDomForArray(getResCode(), 'body&&article');\\\\nfor (var i in list) {\\\\n    d.push({\\\\n        title: parseDomForHtml(list[i], 'h2&&Text'),\\\\n        desc: parseDomForHtml(list[i], '.note&&Text'),        \\\\n        url: parseDom(list[i], 'a&&href'),\\\\n    })\\\\n}\\\\nres.data = d;\\\\nsetHomeResult(res);\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"js:var res={};\\\\nvar d = [];\\\\nd.push({\\\\n    col_type: \\\\\\\"text_1\\\\\\\",\\\\n    title: \\\\\\\"““””<big>\\\\\\\" + parseDomForHtml(getResCode(), \\\\\\\"h1&&Text\\\\\\\") + \\\\\\\"</big>\\\\\\\",\\\\n});\\\\nd.push({\\\\n    title: parseDomForHtml(getResCode(), \\\\\\\".article-content&&Html\\\\\\\").split('push({});')[1],\\\\n    col_type: 'rich_text',\\\\n    extra: {\\\\n        textSize: 16,\\\\n        click: true\\\\n    }\\\\n});\\\\nsetResult(d);\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"pc\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"https://img.luochenzhimu.com/public/2020/01/home.png\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"分享者\\\",\\n    \\\"author\\\": \\\"小🔥星\\\",\\n    \\\"url\\\": \\\"https://sharerw.com/a/fyAll/fypage/\\\",\\n    \\\"version\\\": 9,\\n    \\\"col_type\\\": \\\"movie_1_vertical_pic\\\",\\n    \\\"class_name\\\": \\\"手机软件&车机软件&电脑软件&\\\",\\n    \\\"class_url\\\": \\\"ganhuo&qiche&jingyan&\\\",\\n    \\\"area_name\\\": \\\"盒子软件&TV资讯&精选TV\\\",\\n    \\\"area_url\\\": \\\"ziyuan&tvzx&jxtv\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\"body&&.article-list;img&&alt;img&&src;.time&&Text;a&&href\\\",\\n    \\\"search_url\\\": \\\"https://sharerw.com/search.php?q=**&page=fypage\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\"body&&.article-list;img&&alt;a&&href;.time&&Text;p,1&&Text;img&&src\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"js:var res={};var d=[];html=getResCode();text=parseDomForHtml(html,\\\\\\\".art-content&&Html\\\\\\\");d.push({title:text,col_type:'rich_text'});res.data=d;setHomeResult(res);\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"mobile\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"https://z3.ax1x.com/2021/11/05/ImzSvd.png\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"发现小软件\\\",\\n    \\\"author\\\": \\\"居然\\\",\\n    \\\"url\\\": \\\"https://www.x6g.com/html/23-fypage.html\\\",\\n    \\\"version\\\": 3,\\n    \\\"col_type\\\": \\\"movie_1_vertical_pic\\\",\\n    \\\"class_name\\\": \\\"\\\",\\n    \\\"class_url\\\": \\\"\\\",\\n    \\\"area_name\\\": \\\"\\\",\\n    \\\"area_url\\\": \\\"\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\".list-soft&&li;.list-info&&a&&Text;.layui-clear&&img&&src;.list-ca&&Text;.list-info&&a&&href\\\",\\n    \\\"search_url\\\": \\\"\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\"\\\",\\n    \\\"detail_col_type\\\": \\\"text_3\\\",\\n    \\\"detail_find_rule\\\": \\\"body&&.article-down;a&&Text;*;*;a&&data-url\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"\\\",\\n    \\\"ua\\\": \\\"mobile\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"VXAT\\\",\\n    \\\"author\\\": \\\"小🔥星\\\",\\n    \\\"url\\\": \\\"https://www.vxat.com/fyAll_fypage.html\\\",\\n    \\\"version\\\": 1,\\n    \\\"col_type\\\": \\\"movie_1_vertical_pic\\\",\\n    \\\"class_name\\\": \\\"软件下载&Windows&Android&电视软件&\\\",\\n    \\\"class_url\\\": \\\"RuanJianXiaZai&Windows&Android&TV&\\\",\\n    \\\"area_name\\\": \\\"优惠活动&网站源码&服务器&技术教程&\\\",\\n    \\\"area_url\\\": \\\"YouHuiHuoDong&WangZhanYuanMa&VPS&JiShuJiaoCheng&\\\",\\n    \\\"sort_name\\\": \\\"一级页面提示错误为没有下一页！\\\",\\n    \\\"year_name\\\": \\\"其他&游戏&网友分享&&\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"QiTa&YouXi&WangYouFenXiang&&\\\",\\n    \\\"find_rule\\\": \\\"body&&.post;a&&title;img&&src;.time&&Text;a&&href\\\",\\n    \\\"search_url\\\": \\\"https://www.vxat.com/search.php?q=**&page=fypage\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\"body&&.post;a&&title;a&&href;.time&&Text;.post&&Text;img&&src\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"js:var res={};var d=[];html=getResCode();text=parseDomForHtml(html,\\\\\\\".article-content&&Html\\\\\\\");d.push({title:text,col_type:'rich_text'});res.data=d;setHomeResult(res);\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"mobile\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"异星软件\\\",\\n    \\\"author\\\": \\\"香雅情\\\",\\n    \\\"url\\\": \\\"http://www.yxssp.com/fyclass/page/fypage\\\",\\n    \\\"version\\\": 1,\\n    \\\"col_type\\\": \\\"movie_1\\\",\\n    \\\"class_name\\\": \\\"Android&Windows\\\",\\n    \\\"class_url\\\": \\\"os/android&os/windows\\\",\\n    \\\"area_name\\\": \\\"\\\",\\n    \\\"area_url\\\": \\\"\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\".td-ss-main-content&&.td_module_wrap;h3&&Text;img&&src;.td-module-meta-info&&Text;a&&href\\\",\\n    \\\"search_url\\\": \\\"http://www.yxssp.com/page/fypage?s=**\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\".td-ss-main-content&&.td_module_wrap;h3&&Text;a&&href;;.td-module-meta-info&&Text;img&&src\\\",\\n    \\\"detail_col_type\\\": \\\"movie_1\\\",\\n    \\\"detail_find_rule\\\": \\\"js:\\\\nvar d=[];\\\\nvar html=getResCode();\\\\nvar tabs=parseDomForHtml(html,'body&&.td-post-content&&Html').replace(/\\\\\\\\<script[\\\\\\\\S\\\\\\\\s]*?<\\\\\\\\/script\\\\\\\\>/g,'');\\\\n\\\\nd.push({\\\\n\\\\t\\\\t\\\\ttitle: tabs,\\\\n    desc:'',\\\\n    pic_url:'',\\\\n    url:'',\\\\n\\\\t\\\\tcol_type: 'rich_text'\\\\n});\\\\n\\\\nsetHomeResult({data:d});\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"pc\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"\\\"\\n}, {\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"apk4all\\\",\\n    \\\"author\\\": \\\"tee\\\",\\n    \\\"url\\\": \\\"https://apk4all.com/android/genres/fyAll/page/fypage/\\\",\\n    \\\"version\\\": 8,\\n    \\\"col_type\\\": \\\"movie_1_left_pic\\\",\\n    \\\"class_name\\\": \\\"Art ＆＆ Design&Auto ＆＆ Vehicles&Books ＆＆ Reference&Business&Comics&Communication&Education&Entertainment&Finance&Health ＆＆ Fitness&House ＆＆ Home&Libraries ＆＆ Demo&Lifestyle&Maps ＆＆ Navigation&Medical&Music ＆＆ Audio&News ＆＆ Magazines&Parenting&Personalization&Photography&Productivity&Shopping&Social&Tools&Travel ＆＆ Local&Video Players ＆＆ Editors&Weather\\\",\\n    \\\"type\\\": \\\"tool\\\",\\n    \\\"class_url\\\": \\\"art-design/&auto-vehicles/&books-reference/&business-app/&comics-app/&communication-app/&education-mod-app/&entertainment-apps/&finance/&health-fitness/&house-home/&libraries-demo/&lifestyle-app/&maps-navigation/&medical-app/&music-audio/&news-magazines/&parenting/&personalization-mod-app/&photography/&productivity-app/&shopping-app/&social-app/&tools-mod-app/&travel-local-app/&video-players-editors/&weather-app/\\\",\\n    \\\"area_name\\\": \\\"Action&Adventure&Arcade&Board&Card&Casual&Educational&Music&Puzzle&Racing&Role Playing&Simulation&Sports&Strategy&Trivia&Word\\\",\\n    \\\"area_url\\\": \\\"action-games/&adventure-games/&arcade-games/&board-games/&card-games/&casual-games/&educational-games/&music-games/&puzzle-games/&racing-games/&role-playing-games/&simulation-apk-games/&sports-games/&strategy-games/&trivia-games/&word-games/\\\",\\n    \\\"sort_name\\\": \\\"\\\",\\n    \\\"year_name\\\": \\\"\\\",\\n    \\\"sort_url\\\": \\\"\\\",\\n    \\\"year_url\\\": \\\"\\\",\\n    \\\"find_rule\\\": \\\"main&&article;h3&&Text;img,1&&src;dd&&Text;a&&href.js:input+'#immersiveTheme#'\\\",\\n    \\\"search_url\\\": \\\"https://apk4all.com/search/**/page/fypage/\\\",\\n    \\\"group\\\": \\\"其它\\\",\\n    \\\"searchFind\\\": \\\"main&&article;h3&&Text;a&&href.js:input+'#immersiveTheme#';dd&&Text;*;img,1&&src\\\",\\n    \\\"detail_col_type\\\": \\\"rich_text\\\",\\n    \\\"detail_find_rule\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\nvar html = getResCode();\\\\nvar desc = pdfh(html, \\\\\\\".desc&&Text\\\\\\\") + \\\\\\\"\\\\\\\\n\\\\\\\" + pdfh(html, \\\\\\\"h2&&Text\\\\\\\") + \\\\\\\"   \\\\\\\\/   10\\\\\\\";\\\\n\\\\nvar dl = pd(html, \\\\\\\".dllinks,1&&a&&href\\\\\\\") + \\\\\\\"#immersiveTheme#\\\\\\\";\\\\n\\\\nd.push({ //标题、缩略图、简介\\\\n    title: \\\\\\\"““””<big>\\\\\\\" + pdfh(html, \\\\\\\"h1&&Text\\\\\\\") + \\\\\\\"</big>\\\\\\\",\\\\n    col_type: \\\\\\\"movie_1_vertical_pic_blur\\\\\\\",\\\\n    desc: desc,\\\\n    pic_url: pd(html, \\\\\\\"article&&img,1&&src\\\\\\\"),\\\\n    url: dl\\\\n});\\\\n\\\\nd.push({ //线条\\\\n    col_type: \\\\\\\"line_blank\\\\\\\",\\\\n});\\\\n\\\\nvar list = pdfa(html, \\\\\\\".app-desc&&p||li\\\\\\\");\\\\nfor (i of list) {\\\\n    d.push({\\\\n        title: pdfh(i, \\\\\\\"p||li&&Text\\\\\\\"),\\\\n        col_type: \\\\\\\"rich_text\\\\\\\",\\\\n        extra: {\\\\n            textSize: 13,\\\\n            click: true\\\\n        }\\\\n    });\\\\n};\\\\n\\\\nvar gallery = pdfa(html, \\\\\\\"#gallery-1&&a\\\\\\\");\\\\n\\\\nfor (let n of gallery) {\\\\n    d.push({\\\\n        title: pdfh(n, \\\\\\\"img,1&&title\\\\\\\"),\\\\n        col_type: \\\\\\\"pic_3_square\\\\\\\",\\\\n        pic_url: pd(n, \\\\\\\"img,1&&src\\\\\\\") + '@Referer=',\\\\n        url: pd(n, \\\\\\\"img,1&&src\\\\\\\") + '#autoPage##readTheme#'\\\\n    });\\\\n};\\\\n\\\\nd.push({ //线条\\\\n    col_type: \\\\\\\"line_blank\\\\\\\",\\\\n});\\\\n\\\\n//底部下载模块\\\\nd.push({\\\\n    col_type: 'text_center_1',\\\\n    title: \\\\\\\"““””<big>\\\\\\\" + '点此下载' + \\\\\\\"</big>\\\\\\\",\\\\n    url: dl\\\\n});\\\\n\\\\nd.push({ //线条\\\\n    col_type: \\\\\\\"line_blank\\\\\\\",\\\\n});\\\\n\\\\nres.data = d;\\\\nsetResult(res);\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"mobile\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\",\\n    \\\"icon\\\": \\\"https://apk4all.com/favicon.ico\\\"\\n}]\"}]","proxy":"","icon":"https://img2.baidu.com/it/u=2510781337,3881636015&fm=117&fmt=auto&gp=0.jpg"},{"last_chapter_rule":"","title":"轻合集.DR","author":"轻合集生成器","version":103,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = {\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n\n//抢救规则\nel.push({\n    title: \"⚙抢救⚙\",\n    url: $().lazyRule(() => {\n        confirm({\n            title: MY_RULE.title + \"提示\",\n            content: \"此功能可用在当前合集无法正常使用的情况，点击确定按钮将自动清除缓存，并更新DR模板和插件\",\n            confirm: $.toString(() => {\n                function clearRequire(name, that) {\n                    that.path = getPath(\"hiker://files/rules/files/\" + name + \"/require.json\");\n                    evalPrivateJS(\"IeolxpIYyFlsLbYm5cY5LudsuqUZ/r7w+qPp3lhcAz5gSDXKVBg3M4kFOPx6Nh58FdRrMc1We2hcOcGHmMDE2Bho0Wv/ymmQ5+uCKndhaswTAQPzzSeN1EDLBmJbJmee6KUQyYLJBzo0HKc3iiB9jPGqWDLohgarCebEMwmuxq1qQfRrUM7BZmiFgu0ILWOnSUKWwtA9zuH7AGM0zhoyBPC17NpOiIzBt8+xgVp0IaUtM3LMvAW9fX7co76mMCh8K9KpEpUVj2ID3j1Y5wTXIX9BOHMeUnJimwvOT1WK1dAt7RGQTgM93Y7f91ycC4FVKB4hHP44eacoub/5YI9rTsNRQgK9/EMIduPG4m+Aj/WAfqw8y+HXQ8vTJpsHuvu5TqnqkjiRA7D9/wXszx0owm3agBMs2H21zbDxvyiHhkxbVXbqiKUVjJcVn6/sQcTwPXgTKbogm5F8H1yeMQb9UkBhIAZRask2IzHk9AMOx5y80yRyq556ye+jsYze4UDKPqjeJIdhWIeS5cF3YCMstZ+FOBZvRA/Mem27xooKvotUrZ1J5uj5L+PdYuaH+OMsMJUE0D/DgD36zbC6DCYzvTu7RVLgu7n2KWRENGLLWkki6bieiD2PLzlyRfLXTxIblpRn1ZFnT25kEq0vi1HYfQ==\");\n                    log(list);\n                    if (list.length > 1) {\n                        for (let i = 0; i < list.length; i++) {\n                            deleteFile(\"file://\" + list[i].file);\n                        }\n                        toast(\"已清除\" + name + \"的\" + list.length + \"个依赖文件，回去刷新试试吧\");\n                    } else {\n                        toast(\"没有扫描到\" + name + \"的依赖文件\");\n                    }\n\n                }\n                clearRequire(MY_RULE.title, this);\n                let ru = $.toString(() => {\n                    toast(\"记得点击检测升级按钮！\");\n                    return \"海阔视界首页频道规则【DR模板】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=4549\"\n                });\n                confirm({\n                    title: MY_RULE.title + \"提示\",\n                    content: \"点击确定按钮导入最新版DR模板，然后点击DR模板中的**检测升级**按钮升级插件\",\n                    confirm: ru\n                });\n                return \"hiker://home@DR模板\";\n            })\n        });\n        return \"hiker://empty\"\n    }),\n    col_type: \"scroll_button\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668'),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '全部',\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return '再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n} else rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title,\n            url: urlParam.shift(),\n            class_name: v.class_name,\n            class_url: v.class_url,\n            area_name: v.area_name,\n            area_url: v.area_url,\n            year_name: v.year_name,\n            year_url: v.year_url,\n            sort_name: v.sort_name,\n            sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: {\n                    title: v.title\n                },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"let r = fetch(\"hiker://home@DR模板\");\nif (!r || r.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界首页频道规则【DR模板】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=4549\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖DR模板规则，点击下面的确定按钮导入',\n        confirm: ru,\n        cancel: ru\n    })\n}\n\nputMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=4561&auth=87a74430-cbe7-5369-8349-8100751ff4bd')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule2 = RULE.preRule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {           \\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"动漫合集","author":"轻合集生成器","version":76,"url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon||'https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU',\n            extra: { RULE: v }\n        }\n    if(newWindow) Object.assign(d.extra, { newWindow: true, windowId: getItem('myCollection') + d.title })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            function setResult(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nsetResult(myCollection_el)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'hiker://files/rules/Qingheji/Dm.json')\n// 包裹错误","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\nlog(MY_URL)\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, 1),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let min = 60 * 24 * 1,\\n            data = [],\\n            time = parseInt(readFile('updatetime')) || 0,\\n            now = new Date().getTime()\\n        if (now - time > 1000 * 60 * min) {\\n            log('更新了数据')\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                data = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    data = JSON.parse(data).rule\\n                data = JSON.parse(data)\\n            } catch (e) {\\n                data = []\\n            }\\n            data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updatetime', '' + now)\\n        } else {\\n            log('没有更新数据')\\n            data = JSON.parse(readFile('dataCache'))\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nlet el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updatetime')\\n            back(true)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = parseInt(readFile('searchThd') || '5'),\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd),\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'text_2'\\n}, {\\n    title: '🖥 独立首页: ' + (newWindow ? '是' : '否'),\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'text_2'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true)\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔄  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","icon":"https://s2.app111222.com/logo.jpg"},{"last_chapter_rule":"","title":"新闻合集","author":"小棉袄🌞&永远の明日","version":106,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://codeberg.org/senap/hiker/raw/branch/main/新闻.json')\n// \n/*\nhiker://files/rules/dzHouse/ruleCache/新闻.json\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', 'T')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].find((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].find((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].find((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"http://pic.downcc.com/upload/2021-11/202111494566329.png"},{"last_chapter_rule":"","title":"MV合集","author":"小棉袄🌞&永远の明日","version":76,"type":"other","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon,\n            extra: { RULE: v }\n        }\n    if(newWindow) Object.assign(d.extra, { newWindow: true, windowId: getItem('myCollection') + d.title })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            function setResult(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nsetResult(myCollection_el)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'https://cdn.jsdelivr.net/gh/qiusunshine/hiker-rules/rules/MV合集.json')\n// 包裹错误","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\nlog(MY_URL)\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, 1),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let min = 60 * 24 * 1,\\n            data = [],\\n            time = parseInt(readFile('updatetime')) || 0,\\n            now = new Date().getTime()\\n        if (now - time > 1000 * 60 * min) {\\n            log('更新了数据')\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                data = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    data = JSON.parse(data).rule\\n                data = JSON.parse(data)\\n            } catch (e) {\\n                data = []\\n            }\\n            data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updatetime', '' + now)\\n        } else {\\n            log('没有更新数据')\\n            data = JSON.parse(readFile('dataCache'))\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nlet el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updatetime')\\n            back(true)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = parseInt(readFile('searchThd') || '5'),\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd),\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'text_2'\\n}, {\\n    title: '🖥 独立首页: ' + (newWindow ? '是' : '否'),\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'text_2'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true)\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔄  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/music/23.svg"},{"last_chapter_rule":"","title":"轻合集.随风","author":"轻合集生成器","version":78,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon||'https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU',\n            extra: { RULE: v }\n        }\n    if(newWindow) Object.assign(d.extra, { newWindow: true, windowId: getItem('myCollection') + d.title })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            setResult = function(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nmethod_setResult.invoke(javaContext, myCollection_el, CALLBACK_KEY, MY_RULE, MY_TYPE)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=365094686')\n// \n// 包裹错误","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = 1\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet fypageFlag = MY_PARAMS.url.indexOf('fypage')\\nif (fypageFlag >= 0) pageNum = parseInt(/^\\\\d+/.exec(MY_URL.slice(fypageFlag)))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, pageNum),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            time = parseInt(readFile('updateTime')) || 0,\\n            now = new Date().getTime(),\\n            data = []\\n        if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                let remoteData = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    remoteData = JSON.parse(remoteData).rule\\n                data = JSON.parse(remoteData)\\n            } catch (e) {}\\n            if(data.length == 0) {\\n                data = JSON.parse(readFile('dataCache') || '[]')\\n                log('没有获取到更新数据')\\n            } else {\\n                data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n                saveFile('dataCache', JSON.stringify(data))\\n                saveFile('updateTime', now.toString())\\n                log('更新数据已写入本地')\\n            }\\n        } else {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_TYPE = 'search'\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img && !v.pic_url) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true),\\n    el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = readFile('searchThd') || '5',\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd) + '  ',\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=365094686&s=640"},{"last_chapter_rule":"","title":"轻晓集","author":"小棉袄🌞&永远の明日","version":97,"type":"all","url":"hiker://empty","col_type":"icon_round_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://gitee.com/xiao-zero/xiao/raw/master/js/share-home-rules.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule(() => {\\n            let url = getMyVar('remoteUrl')\\n            if(url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: RULE.pageList }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"https://www.hualigs.cn/image/6107d579a6403.jpg"},{"last_chapter_rule":"","title":"轻合集.道长","author":"轻合集生成器","version":96,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=434857005');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\n//log(\\\"start:\\\" + QING_TITLE)\\nlet dataRule = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nlet getRule = $.toString((QING_TITLE, title) => {\\n    //log(\\\"getRule:\\\" + QING_TITLE + \\\"====\\\" + title)\\n    return $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n}, QING_TITLE, RULE.title)\\nRULE = isIndex ? dataRule : Object.assign(dataRule, RULE)\\n//log(dataRule.pageList)\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList || JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\nfunction genRule() {\\n    let _a = Object.assign({}, MY_RULE);\\n    delete _a[\\\"pageList\\\"]\\n    delete _a[\\\"pages\\\"]\\n    return _a\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = genRule()\\n            MY__RULE.params = v.extra || {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule +  ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                let _a = genRule()\\n                _a.detail_find_rule = detailFindRule\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: _a,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: genRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try{\\n            remoteData = fetchCache(url, 24 * interval,{\\n                timeout:3000\\n            });\\n        }catch(e){}\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=434857005&s=640"},{"last_chapter_rule":"","title":"轻合集.香雅情","author":"轻合集生成器","version":103,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668'),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '全部',\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return '再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n} else rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=491978656')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","proxy":"","icon":"https://i.ibb.co/9wr8ztS/1593481539576.jpg"},{"last_chapter_rule":"","title":"轻合集.道长插件库","author":"轻合集生成器","version":96,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\nnewWindow = readFile('newWindow'),\ntypeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules);\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nif(disTabModify) {\n    types = {\n        '': '全部',\n        'all': '聚合',\n        'video': '视频',\n        'music': '音频',\n        'live': '直播',\n        'cartoon': '漫画',\n        'read': '阅读',\n        'picture': '图集',\n        'news': '资讯',\n        'tool': '工具',\n        'other': '其它'\n    };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else {\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el);","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n                let disTabModify = readFile('disTabModify');\n                if(disTabModify===''){\n                    saveFile('disTabModify', defaultDisTabModify+'');\n                    disTabModify = defaultDisTabModify;\n                }else if(/true|false/.test(disTabModify)){\n                    disTabModify = JSON.parse(disTabModify);\n                }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/dev/json_list?name=1178929055');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection');\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('基于远程仓库，不要频繁点击，增加仓库压力\\\\n若为本地文件，则不会进行缓存，本功能也无效').confirm(() => {\\n            deleteCache(getMyVar('remoteUrl'))\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\n//log(\\\"start:\\\" + QING_TITLE)\\nlet dataRule = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nlet getRule = $.toString((QING_TITLE, title) => {\\n    //log(\\\"getRule:\\\" + QING_TITLE + \\\"====\\\" + title)\\n    return $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n}, QING_TITLE, RULE.title)\\nRULE = isIndex ? dataRule : Object.assign(dataRule, RULE)\\n//log(dataRule.pageList)\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 计数已打开小程序，防止独立页面时轻合集出发关闭导致页面规则缓存清理\\n    let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n    putMyVar('openedIndex', String(openedIndex + 1))\\n    addListener = function(param0, param1, param2) {\\n        param2 = CALLBACK_KEY;\\n        if (param0 == 'onClose') param1 += ';' + $.toString(() => {\\n            let openedIndex = parseInt(getMyVar('openedIndex', '0'))\\n            putMyVar('openedIndex', String(openedIndex - 1))\\n        })\\n        method_addListener.invoke(javaContext, param0, param1, param2)\\n    }\\n    addListener('onClose', '')\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList || JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\nfunction genRule() {\\n    let _a = Object.assign({}, MY_RULE);\\n    delete _a[\\\"pageList\\\"]\\n    delete _a[\\\"pages\\\"]\\n    return _a\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = genRule()\\n            MY__RULE.params = v.extra || {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + getRule +  ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                let _a = genRule()\\n                _a.detail_find_rule = detailFindRule\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: _a,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n                    })(url),\\n                    RULE: genRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try{\\n            remoteData = fetchCache(url, 24 * interval,{\\n                timeout:3000\\n            });\\n        }catch(e){}\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","proxy":"","icon":"https://z3.ax1x.com/2021/08/05/fe9M6S.png"},{"last_chapter_rule":"","title":"酷狗 mv","author":"","version":48,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);\n","search_url":"hiker://empty##**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `酷狗 mv@https://www.kugou.com/mvweb/html/`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"轻合集.动漫合集","author":"轻合集生成器","version":87,"url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst MY_TITLE = getMyVar('myCollection')\nlet el = [{\n    title: ' ' + MY_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + MY_TITLE + '&#noRecordHistory#',\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input',\n    extra: {\n        rules: $.toString((MY_TITLE) => {\n            return JSON.stringify($.require('hiker://page/dataLoad?rule=' + MY_TITLE)())\n        }, MY_TITLE)\n    }\n}]\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + MY_TITLE)).rule)\nlet newWindow = readFile('newWindow')\n$.require('hiker://page/dataLoad?rule=' + MY_TITLE)().forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = /((?:https?|hiker):\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url)[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: /^https?:\\/\\//i.test(v.icon) ? v.icon + '@Referer=' + domain : (v.icon || 'hiker://images/icon1'),\n            extra: {\n                url: domain + '/###' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    MY_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + MY_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua) + '#noHistory##noRecordHistory#',\n                RULE: v,\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: MY_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nconst MY_TITLE = getMyVar('myCollection')\nlet el = []\nel.push({\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString((MY_TITLE) => {\n            return JSON.stringify($.require('hiker://page/dataLoad?rule=' + MY_TITLE)())\n        }, MY_TITLE)\n    }\n})\nsetResult(el)\n","search_url":"hiker://empty?keyword=**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=3106')\n// \n// 包裹错误\n// 私有MY_TICKET劫持","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst MY_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + MY_TITLE)(true),\\n    el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst MY_TITLE = getMyVar('myCollection')\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + MY_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + MY_TITLE)).rule)\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n\\nlet myCollection_el = [],\\n    { RULE, isIndex } = MY_PARAMS,\\n    urlTmp = RULE.url.split(';'),\\n    pageNum = 1\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + getMyVar('myCollection'))).rule)\\n    urlTmp[0] = tabHeader.setUrl(fyAll ? urlTmp[0].replace(/fyAll/g, '$${fyAll}') : urlTmp[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n}\\ntry { // 获取页数\\n    let fypageFlag = urlTmp[0].indexOf('fypage')\\n    if (fypageFlag >= 0) pageNum = parseInt(/^\\\\d+/.exec(MY_URL.slice(fypageFlag)))\\n} catch(e) {}\\n\\nif (isIndex) {\\n    if (pageNum == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((r) => {\\n                    return JSON.stringify([r])\\n                }, RULE)\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');')\\n                return v\\n            } else if (isIndex) {\\n                if(!MY_RULE.detail_find_rule || v.url.startsWith('hiker://') && !v.url.startsWith('hiker://empty#')) return v\\n            } else { return v }\\n            v.extra = {\\n                url: (function (url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, urlTmp[2])\\n                })(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + MY_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');')\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function (url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, urlTmp[2])\\n                    })(url),\\n                    RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + MY_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function (url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, urlTmp[2])\\n                    })(url),\\n                    RULE: MY_RULE,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + MY_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    //检查间隔，默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = []\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        let url = getMyVar('remoteUrl')\\n        try {\\n            let remoteData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                remoteData = JSON.parse(remoteData).rule\\n            data = JSON.parse(remoteData)\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            data = data.filter((v) => { return v.title != getMyVar('myCollection') && !v.author.includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(readFile('dataCache') || '[]')\\n    }\\n    // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if(showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    return rewriteData.concat(data)\\n}\\n\"},{\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + MY_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, MY_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + MY_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, charset) {\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    urlParam[2] = urlParam[2] ? urlParam[2].match(/{(.*)}/)[1].split('&&') : []\\n    // 添加全局UA\\n    if (urlParam[2].findIndex((v) => v.startsWith('User-Agent@')) == -1) {\\n        if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"http://q1.qlogo.cn/g?b=qq&nk=1079033364&s=640"},{"last_chapter_rule":"","title":"聚漫💠","author":"人民大众","version":211122,"url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    dataLoad\n} = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n}]\n\nif (getItem(\"read_policy\") !== \"1\") {\n    el.push({\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\n        desc: '““””<small><font color=#f20c00>本规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n        url: $('#noHistory#').lazyRule(() => {\n            setItem(\"read_policy\", \"1\")\n            refreshPage(false)\n            return \"toast://你已同意该协议\"\n        }),\n        col_type: 'text_center_1'\n    })\n}\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon || 'https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU',\n            extra: {\n                RULE: v\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: getItem('myCollection') + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar { dataLoad, runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet myCollection_el = [],\n    searchThd = parseInt(readFile('searchThd') || '5'),\n    keyword = getParam('keyword'),\n    pageNum = parseInt(getParam('page')),\n    RULES = dataLoad().filter((v) => v.search_url)\nif (searchThd == 0) {\n    myCollection_el.push({\n        title: ('⬇ 选择一个小程序查看' + keyword + '的搜索结果 ⬇').small(),\n        url: 'hiker://empty'\n    })\n    RULES.forEach((v) => myCollection_el.push({\n        title: v.title,\n        url: \"hiker://page/singleSearch?keyword=\" + keyword + \"&page=fypage\",\n        extra: { rule: getItem('myCollection'), RULE: v },\n    }))\n} else if (searchThd > 0) {\n    let searchCount = pageNum * searchThd,\n        searchTag = { title: '⬆ 已搜索了' + searchCount + '个小程序 ⬆\\n⬇ 下面还有' + RULES.slice(searchCount).length + '个小程序 ⬇' }\n    RULES = RULES.slice(searchCount - searchThd, searchCount)\n    if (!RULES.length) setResult([])\n\n    let URLS = RULES.map((RULE) => {\n        MY_RULE.ua = RULE.ua\n        let urlReq = urlParse(RULE.search_url, {}, 1, (url) => {\n            url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n        })\n        return { url: urlReq.MY_URL, options: urlReq.MY_URL_Options }\n    })\n    batchFetch(URLS).forEach((indexHtml, index) => {\n        // 处理MY_URL和MY_RULE\n        let RULE = RULES[index]\n        MY_URL = URLS[index].url\n        MY_RULE.ua = RULE.ua\n        MY_RULE.col_type = RULE.col_type\n        MY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\n        MY_RULE.find_rule = RULE.searchFind\n        MY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\n        MY_RULE.preRule = RULE.preRule\n        MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\n        MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n        MY_RULE.last_chapter_rule = RULE.last_chapter_rule\n        MY_RULE.params = {}\n        MY_RULE.url = MY_URL\n        MY_RULE.urlHeaders = URLS[index].options.headers\n\n        // 正文解析\n        eval(MY_RULE.preRule)\n        if (MY_RULE.find_rule.startsWith('js:')) {\n            function getUrl() {\n                return MY_URL\n            }\n\n            function getResCode() {\n                return indexHtml\n            }\n\n            setResult = function(el) {\n                if (Array.isArray(el.data)) el = el.data\n                Array.prototype.push.apply(myCollection_el, el.map((v) => {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    v.desc = RULE.title + ' ▪ ' + (v.desc || '')\n\n                    if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\n                        return v\n                    } else if (v.url.includes('@rule=')) {\n                        let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                        v.url = url\n                        MY__RULE.detail_find_rule = rule\n                        MY__RULE.detail_col_type = MY_RULE.col_type\n                    } else if (v.url.startsWith('hiker://page/')) {\n                        if (v.url.includes('rule=') || (v.extra || {}).rule)\n                            return v\n                        let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?(.*))?$/),\n                            subPage = MY_RULE.pageList.find((v) => v.path == path),\n                            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\n                        v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\n                        MY__RULE.detail_find_rule = subPage.rule\n                        MY__RULE.detail_col_type = subPage.col_type\n                        MY__RULE.params = v.extra || {}\n                    } else if (v.url.includes('@lazyRule=')) {\n                        v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                        return v\n                    } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\n                    v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\n                    v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                    if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\n\n                    return v\n                }))\n            }\n            setHomeResult = setResult\n            setSearchResult = setResult\n\n            try {\n                eval(MY_RULE.find_rule.slice(3))\n            } catch (e) {}\n        } else {\n            let findRule = MY_RULE.find_rule.split(';')\n            parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n                let [title, url, desc, content, img] = findRule.map((v, i) => {\n                        try {\n                            if (v == '*') return ''\n                            else v = (i == 1 || i == 4) ?\n                                parseDom(data, v) :\n                                parseDomForHtml(data, v)\n                            if (i != 1) v = runCode(v)\n                            return v\n                        } catch (e) { return '' }\n                    }),\n                    res = {\n                        title: title,\n                        url: url,\n                        desc: RULE.title + ' ▪ ' + desc,\n                        content: content,\n                        img: img\n                    }\n                if (res.url) {\n                    let MY__RULE = Object.assign({}, MY_RULE, { title: RULE.title })\n                    if (res.url.includes('@lazyRule=')) {\n                        res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY__RULE.pages, pageList: MY__RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\"' + MY_URL + '\";')\n                    } else if (MY_RULE.detail_find_rule) {\n                        res.extra = { url: url, RULE: MY__RULE, pageTitle: title }\n                        res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                        if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\n                    }\n                }\n                myCollection_el.push(res)\n            })\n        }\n    })\n    myCollection_el.push(searchTag)\n}\nmethod_setResult.invoke(javaContext, myCollection_el, CALLBACK_KEY, MY_RULE, MY_TYPE)\n","search_url":"hiker://empty?keyword=**&page=fypage","group":"①轻合集","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"text_3","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=2366')\n// \n// 包裹错误\n// clearItem(\"read_policy\")","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://page/singleSearch?keyword=\\\"+input+\\\"&page=fypage\\\"',\\n        extra: { rule: getItem('myCollection'), RULE: RULE },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.url, {}, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = 1\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet fypageFlag = MY_PARAMS.url.indexOf('fypage')\\nif (fypageFlag >= 0) pageNum = parseInt(/^\\\\d+/.exec(MY_URL.slice(fypageFlag)))\\nvar { MY_URL, MY_URL_Options } = urlParse(MY_PARAMS.url, RULE.urlHeaders, pageNum),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = { url: url, RULE: Object.assign({}, MY_RULE, { detail_find_rule: detailFindRule }) }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            time = parseInt(readFile('updateTime')) || 0,\\n            now = new Date().getTime(),\\n            data = []\\n        if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                let remoteData = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    remoteData = JSON.parse(remoteData).rule\\n                data = JSON.parse(remoteData)\\n            } catch (e) {}\\n            if(data.length == 0) {\\n                data = JSON.parse(readFile('dataCache') || '[]')\\n                log('没有获取到更新数据')\\n            } else {\\n                data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n                saveFile('dataCache', JSON.stringify(data))\\n                saveFile('updateTime', now.toString())\\n                log('更新数据已写入本地')\\n            }\\n        } else {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_TYPE = 'search'\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, MY_URL_Options } = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n}),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) setPageTitle('“' + keyword + '”的搜索结果')\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if(!v.img && !v.pic_url) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) { return v }\\n            v.extra = { url: v.url, RULE: MY__RULE, pageTitle: subTitle }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if(!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true),\\n    el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = readFile('searchThd') || '5',\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd) + '  ',\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","icon":"https://lanmeiguojiang.com/tubiao/q/13.png"},{"last_chapter_rule":"","title":"轻合集·Q","author":"小棉袄🌞&永远の明日","version":72,"url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet el = [{\n    title: '清除缓存,立即更新 <small>(基于远程仓库,不要频繁点击)',\n    url: $().lazyRule(() => {\n        clearItem('updatetime')\n        refreshPage(true)\n        return 'toast://已更新'\n    }),\n    img: 'hiker://images/icon1',\n    col_type: 'avatar'\n}]\nel.push({\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n})\nconst data = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection'))\nsetResult(el.concat(data.map((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1'\n    return {\n        title: v.title,\n        url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n        img: v.icon,\n        extra: { RULE: v }\n    }\n})))","searchFind":"js:\nlet myCollection_el = [],\n    searchMode = getVar('myCollection-searchMode', ''),\n    [_, pageNum, keyword] = MY_URL.split('##'),\n    RULE = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection')).filter((v) => v.search_url)\npageNum = parseInt(pageNum)\nif (!searchMode && pageNum > RULE.length) setResult([])\n\nlet searchCount = { title: '⬆ 已搜索了' + pageNum + '个小程序 ⬆\\n⬇ 下面还有' + (RULE.length - pageNum) + '个小程序 ⬇' }\nRULE = searchMode ? RULE.find((v) => v.title == searchMode) : RULE[pageNum - 1]\n// 处理MY_URL和MY_RULE\nMY_RULE.version = RULE.version\nMY_RULE.group = RULE.group\nMY_RULE.title = RULE.title\nMY_RULE.ua = RULE.ua\nMY_RULE.col_type = RULE.col_type\nMY_RULE.detail_col_type = RULE.sdetail_col_type\nMY_RULE.find_rule = RULE.searchFind\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\nMY_RULE.preRule = RULE.preRule\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\nMY_RULE.params = {}\n\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nvar { MY_URL, indexHtml } = urlParse(RULE.search_url, searchMode ? pageNum : 1, (url) => {\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n})\nMY_RULE.url = MY_URL\n// 正文解析\nif (pageNum == 1) eval(MY_RULE.preRule)\nif (MY_RULE.find_rule.startsWith('js:')) {\n    function getUrl() {\n        return MY_URL\n    }\n\n    function getResCode() {\n        return indexHtml\n    }\n\n    function setResult(el, param1, param2, param3) {\n        param1 = CALLBACK_KEY\n        param2 = MY_RULE\n        param3 = MY_TYPE\n        if (Array.isArray(el.data)) el = el.data\n        log(el)\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\n            let RULE = Object.assign({}, MY_RULE)\n\n            if (!v.url) {\n                return v\n            } else if (v.url.includes('@rule=')) {\n                let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                v.url = url\n                RULE.detail_find_rule = rule\n                RULE.detail_col_type = MY_RULE.col_type\n            } else if (v.url.startsWith('hiker://page/')) {\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\n                    return v\n                let path = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?.*)?$/)[1],\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\n                RULE.detail_find_rule = subPage.rule\n                RULE.detail_col_type = subPage.col_type\n                RULE.params = v.extra || {}\n            } else if (v.url.includes('@lazyRule=')) {\n                v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n                return v\n            } else if (!MY_RULE.detail_find_rule) { return v }\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title  }\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n            return v\n        }))\n        if (!searchMode) myCollection_el.push(searchCount)\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\n    }\n\n    function setHomeResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    function setSearchResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    eval(MY_RULE.find_rule.slice(3))\n} else {\n    let findRule = MY_RULE.find_rule.split(';')\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\n                try {\n                    if (v == '*') return ''\n                    else v = (i == 1 || i == 4) ?\n                        parseDom(data, v) :\n                        parseDomForHtml(data, v)\n                    if (i != 1) v = runCode(v)\n                    return v\n                } catch (e) {}\n            }),\n            res = {\n                title: title,\n                url: url,\n                desc: desc,\n                content: content,\n                img: img\n            }\n        if (res.url) {\n            if (res.url.includes('@lazyRule=')) {\n                res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n            } else if (MY_RULE.detail_find_rule) {\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\n            }\n        }\n        myCollection_el.push(res)\n        if (!searchMode) myCollection_el.push(searchCount)\n    })\n    setResult(myCollection_el)\n}\n","search_url":"hiker://empty##fypage##**","group":"①轻合集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\n// UA，==>，rule和lazyRule嵌套问题\n// 分组\n// 导入导出，删除，排序，简单编辑？？基于远程会自动更新","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&')\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input+\\\"&rule=' + getItem('myCollection') + '\\\"',\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, indexHtml } = urlParse(RULE.url, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n})\\nMY_RULE.url = MY_URL\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule) { return v }\\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nvar myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.url = MY_URL\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n// 解析正文\\nif(MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    const { runCode } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url && res.url.includes('@lazyRule='))\\n            res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"//真正获取数据的逻辑\\nfunction load() {\\n    let url = 'http://hiker.nokia.press/hikerule/rulelist.json?id=2040',\\n        d = []\\n    try {\\n        d = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            d = JSON.parse(d).rule\\n        d = JSON.parse(d)\\n    } catch (e) {log(e.message)\\n        d = []\\n    }\\n    return d.filter((v) => { return v.title != MY_RULE.title && v.author != '轻合集生成器' })\\n}\\n//检查间隔，默认一天\\nlet min = 60 * 24 * 1\\n\\nlet data = []\\nlet time = getItem('updatetime', '0')\\ntime = parseInt(time)\\nlet now = new Date().getTime()\\nif (now - time > 1000 * 60 * min) {\\n    log('更新了数据')\\n    setItem('updatetime', '' + now)\\n    data = load()\\n    saveFile('data.json', JSON.stringify(data))\\n} else {\\n    log('没有更新数据')\\n    data = JSON.parse(readFile('data.json'))\\n}\\n$.exports = data\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    runCode: function(rule) {log(rule)\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = options.headers['Content-Type'].slice(0, 19) + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], indexHtml: fetch(url[0], options) }\\n    }\\n}\\n\"}]","icon":"hiker://images/icon1"},{"firstHeader":"class","last_chapter_rule":"","title":"1080KK.MDr","author":"道长&Killer","version":1,"type":"video","url":"hiker://empty##http://1080kk.com/vodtype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.replace('hiker://empty##','');\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page=MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.nav-list',\n    子分类: 'ul&&li:not(:matches(首页|明星|资讯|敏感|直播))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n自动一级(null,html,cates);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索结果');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"②Dr一","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\nvar lazy =  '@lazyRule=.embed-responsive&&script&&Html.js:eval(input);unescape(player_aaaa.url)+\"#isVideo=true#\"';\n自动二级(lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='MOBILE_UA';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"不卡美剧.Dr","author":"道长&Killer","version":0,"type":"video","url":"hiker://empty##https://www.bkmeiju.com/file/listfyAll_fypage.html","col_type":"movie_3","class_name":"美剧&国产剧&港台剧&韩剧&综艺","class_url":"4&48&49&50&58","area_name":"魔幻/科幻&灵异/惊悚&都市/情感&犯罪/历史&动漫/卡通","area_url":"40&41&42&43&45","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet ui = ()=>{\nlet parStr=\".box-video-list&&li;a&&title;a&&data-original;.note&&Text;a&&href\";\nlet cates=打造动态分类([{}]);\n设置(cates);\n一级(parStr,true,cates,false,null);\n}\n混合(ui,\"/content/\",\"\");","searchFind":"js:\nrequire(config.模板);\nparStr=\".masonry&&li;a&&title;img&&src;.info_category&&Text;a&&href;.info_date&&Text\";\n一级(parStr,true,null,false,null);","search_url":"hiker://empty##https://www.520meiju.com/search.php?page=fypage&searchword=**&searchtype=","group":"②Dr一","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet p={\n\"tabs\": \"body&&.option||.text-uppercase\",\n\"lists\": \"body&&.playlist||.playlists,#id&&li\",\n线路处理:function(u){\n     return u.replace(\"点击展开列表\",\"\")\n }\n};\n二级(p);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='MOBILE_UA';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=不卡美剧"},{"last_chapter_rule":"","title":"蜗牛影视.DDr","author":"道长&Killer","version":0,"type":"video","url":"hiker://empty##https://www.weikeys.com/fenlei/2-fypage.html[firstPage=https://www.weikeys.com/fenlei/2.html]","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nlog(true_url);\nlet ui = ()=>{\nlet parStr=\".list&&li;img&&alt;img&&data-original;.rgba1&&Text;a&&href\";\nlet cates=打造动态分类([{\n         一级分类: 'body&&ul.nav_ul,1',\n        子分类: 'ul&&li',\n         分类链接: {\n            二次处理(url) {\n                return url.replace(\".html\",\"-\"+page+\".html\");\n            }\n        }\n    },{\n  一级分类: 'body&&.case&&.list_nav',\n    子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);\n}\n混合(ui,\"/vod/\",\"\");","searchFind":"js:\nrequire(config.模板);\nparStr=\".list&&li;img&&alt;img&&data-original;p,2&&Text;a&&href;.des&&Text\";\n一级(parStr,true,null,false,null);","search_url":"hiker://empty##/index.php?m=vod-search&wd=**","group":"②Dr二","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet p={\n\"tabs\": \".pt50&&.ptit:matches(播放地址)\",\n\"tab_text\": \"body--strong&&Text\",\n\"lists\": \".ulli&&.stab_list,#id&&li:not(:matches(免费))\"\n};\nvar lazy=`@lazyRule=.js:fetch(input).match(/url='(.*?)'</)[1]+\"#isVideo=true#\"`;\n二级(p,lazy);\n//自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='MOBILE_UA';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=蜗牛"},{"last_chapter_rule":"","title":"酷酷兔","author":"发粪涂墙","version":0,"type":"other","url":"http://121.4.190.96:9991/getsortdata_all_z.php?action=fyclass&page=fypage&year=fyyear&area=fyarea&class=fysort&dect=&id=","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"mov&tv&acg&zongyi","area_name":"地区&国产&香港&英国&美国&韩国&泰国&日本","area_url":"all&china&hk&england&american&korea&thailand&japan","sort_name":"类型&喜剧&悲剧&爱情&动作&枪战&犯罪&惊悚&恐怖&悬疑&动画&家庭&奇幻&魔幻&科幻&战争&青春&剧情","year_name":"年代&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&更早","sort_url":"0&1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17","year_url":"0&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2000","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\nvar list = html.match(/<li[\\s\\S]*?<\\/li/g);\r\nfor (var j = 0; j < list.length; j++) {\n  var url = parseDomForHtml(list[j],'a&&href');\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n      // desc: parseDomForHtml(list[j], '.name&&Text'),\r\n       pic_url: parseDom(list[j],'img&&src'),\n       url: url.indexOf('http')!=-1 ? url:'http://kukutu.tv'+url\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.length; i++) {\n    var r = {};\n    var j = json[i];\n    r.title = j.title;\n    r.url = 'http://kukutu.tv'+j.url;\n    r.desc = j.lianzaijs;\n    r.content = j.star;\n    r.img = j.thumb;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://testsea.diyiwl.wang/ssszz.php?top=10&q=**&dect=0","titleColor":"#fff20c00","group":"②Q","detail_col_type":"text_2","detail_find_rule":"js:\r\nvar d = [];\r\nvar html = getResCode();\nvar html2 = fetch(fetch(MY_URL+'1.html',{}).match(/t\" src=\"(.*?)\"/)[1],{});\r\nvar tabs = html2.match(/var lianzaijs[\\s\\S]*?ed=1/g);\nd.push({\r\n    title: '共有' + tabs.length + '条线路',\r\n    desc: parseDomForHtml(html, '.des2--b&&Text'),\r\n    pic_url: parseDom(html, '.lazy&&data-original'),\r\n    url: getUrl(),\r\n    col_type: 'pic_1'\r\n});\r\nfor (var i = 0; i < tabs.length; i++) {\n   var list = tabs[i].match(/\"[\\s\\S]*?\"/g);\r\n     d.push({\r\n        title:'线路'+(i+1),\r\n        col_type: 'text_1'\r\n     });\r\nfor (var j = 0; j < list.length; j++) {\n    var url = list[j].split('\"')[1].split(',')[0];\r\n    d.push({\r\n    title: unescape(list[j].split(',')[2].split('\"')[0]),\r\n    url: url.indexOf('html')>-1?url + `@lazyRule=.js:JSON.parse(fetch('https://1717.ntryjd.net/0526/api.php',{body:'url='+input,method:'POST'})).url`:url,\n    col_type: list.length >2?'text_3':'text_2'\r\n            });\r\n      }\r\n}\r\nsetResult(d);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"MaGeDN·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://loli.magedn.com/movie_bt/fyareafyyearfysortmovie_bt_series/fyclass/page/fypage/[firstPage=https://loli.magedn.com/movie_bt/fyareafyyearfysortmovie_bt_series/fyclass/];get;utf-8;{User-Agent@&&Mozilla/5.0 (Linux；；U；；Android 10；； zh-CN；； ELE-AL00 Build/HUAWEIELE-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 UCBrowser/12.8.6.1066 Mobile Safari/537.36Cookie@.js:getVar('magedn$cookie')}","col_type":"movie_3","class_name":"剧集&动漫&电影&体育&写真&短视频&纪录片&综艺&舞台&课程","class_url":"juji&dongman&dianying&tiyu&xiezhen&duanshipin&jilupian&zongyi&wutai&kecheng","area_name":"全部&中国&台湾&大陆&香港&丹麦&乌克兰&乌兹别克斯坦&以色列&俄罗斯&其他&冰岛&列支敦士登&加拿大&匈牙利&南非&卡塔尔&印度&印度尼西亚&哥伦比亚&土耳其&塞内加尔&塞尔维亚&墨西哥&奥地利&巴勒斯坦&巴西&德国&意大利&拉脱维亚&挪威&捷克&新加坡&新西兰&日本&智利&朝鲜&格鲁吉亚&比利时&法国&波兰&泰国&澳大利亚&澳大利亞 Australia&爱尔兰&瑞典&瑞士&白俄罗斯&立陶宛&罗马尼亚&美国&芬兰&英国&荷兰&菲律宾&葡萄牙&西德&西班牙&阿尔及利亚&阿根廷&韩国&马来西亚","area_url":"&movie_bt_cat/中国/&movie_bt_cat/taiwan/&movie_bt_cat/dalu/&movie_bt_cat/xianggang/&movie_bt_cat/丹麦/&movie_bt_cat/乌克兰/&movie_bt_cat/乌兹别克斯坦/&movie_bt_cat/以色列/&movie_bt_cat/eluosi/&movie_bt_cat/qita/&movie_bt_cat/冰岛/&movie_bt_cat/列支敦士登/&movie_bt_cat/jianada/&movie_bt_cat/匈牙利/&movie_bt_cat/南非/&movie_bt_cat/卡塔尔/&movie_bt_cat/yindu/&movie_bt_cat/印度尼西亚/&movie_bt_cat/哥伦比亚/&movie_bt_cat/土耳其/&movie_bt_cat/塞内加尔/&movie_bt_cat/塞尔维亚/&movie_bt_cat/墨西哥/&movie_bt_cat/aodili/&movie_bt_cat/巴勒斯坦/&movie_bt_cat/巴西/&movie_bt_cat/deguo/&movie_bt_cat/yidali/&movie_bt_cat/拉脱维亚/&movie_bt_cat/nuowei/&movie_bt_cat/jieke/&movie_bt_cat/新加坡/&movie_bt_cat/xinxilan/&movie_bt_cat/riben/&movie_bt_cat/智利/&movie_bt_cat/chaoxian/&movie_bt_cat/格鲁吉亚/&movie_bt_cat/bilishi/&movie_bt_cat/faguo/&movie_bt_cat/波兰/&movie_bt_cat/taiguo/&movie_bt_cat/aodaliya/&movie_bt_cat/澳大利亞-australia/&movie_bt_cat/爱尔兰/&movie_bt_cat/ruidian/&movie_bt_cat/瑞士/&movie_bt_cat/白俄罗斯/&movie_bt_cat/立陶宛/&movie_bt_cat/罗马尼亚/&movie_bt_cat/meiguo/&movie_bt_cat/fenlan/&movie_bt_cat/yingguo/&movie_bt_cat/helan/&movie_bt_cat/菲律宾/&movie_bt_cat/putaoya/&movie_bt_cat/西德/&movie_bt_cat/xibanya/&movie_bt_cat/阿尔及利亚/&movie_bt_cat/阿根廷/&movie_bt_cat/hanguo/&movie_bt_cat/malaixiya/","sort_name":"全部&1080P&2160P&3D&480P&4K&720P&蓝光","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"&movie_bt_view_cat/1080p/&movie_bt_view_cat/21060p/&movie_bt_view_cat/3d/&movie_bt_view_cat/480p/&movie_bt_view_cat/4k/&movie_bt_view_cat/720p/&movie_bt_view_cat/bdyuanpan/","year_url":"&year/2022/&year/2021/&year/2020/&year/2019/&year/2018/&year/2017/&year/2016/&year/2015/&year/2014/&year/2013/&year/2012/&year/2011/&year/2010/","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.bt_img&&li');\nfor (var j in list) {\n  var desc = parseDomForHtml(list[j], '.jidi||.rating||.inzhuy&&Text');\n var url = parseDom(list[j],'a&&href');\n  d.push({\n       title: parseDomForHtml(list[j], 'h3&&Text'),\n       desc: desc,\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\nurl:url+ '#immersiveTheme#'\n       //url: !/p/.test(desc)?url+ '#immersiveTheme#':'https://loli.magedn.com/v_play/'+base64Encode('mv_'+url.match(/movie\\/(.*?)\\./)[1]+'-nm_1')+'.html'+ `@lazyRule=.js:try{let html=fetch(input,{headers:{'User-Agent':MOBILE_UA,'Cookie':getVar('magedn$cookie')}}).match(/var.*?\\\\)\\\\);/)[0];eval(getCryptoJS());eval(html.replace(/md5\\\\./g,'CryptoJS.').replace('eval','var data ='));eval(data.substring(0,data.indexOf('notostr();')+10).replace('getBrowserInfo()','\"baidu\"').replace('if(ismob())',''));var U=eval(data.match(/url:(.*?),/)[1]);if(getVar('magedn$local')=='1'){cacheM3u8(U)}else U+'#.m3u8'}catch(e){\"\"}`\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"body&&li:has(img);h3&&Text;a&&href;.jidi||.zoom-icon &&Text;.inzhuy&&Text;.lazy&&data-original","search_url":"/page/fypage/?s=**","titleColor":"","group":"②Q","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nitems.push({\n    title: pdfh(html, '.moviedteail_list&&li&&Text').replace(/\\//g, '') + '\\n' + pdfh(html, '.moviedteail_list&&li,-3&&Text').replace(/\\//g, ' ').replace('  ', '').substring(0, 15) + '\\n' + pdfh(html, '.moviedteail_list&&li,-4&&Text').replace(/\\//g, ' ').replace('  ', '').substring(0, 15),\n    desc: pdfh(html, 'body&&.yp_context&&Text').replace('[收起部分]', '').replace('　', ''),\n    //图片\n    pic_url: pd(html, '.dyimg&&img&&src'),\n    url: pd(html, '.dyimg&&img&&src'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n/*\nitems.push({\n    title: pdfh(html, \".dytext&&ul&&li&&Text\"),\n    url: getUrl(),\n    pic_url: pd(html, \".dyimg&&img&&src\"),\n    desc: pdfh(html, \".yp_context&&p&&Text\"),\n    col_type: \"pic_1\"\n});\n*/\n\nitems.push({\n    col_type: \"rich_text\",\n    title: `<small>本地播放模式可使用默认播放器，但不能电视投屏；投屏模式可用x5或第三方播放器播放，可电视投屏。当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('magedn$local',getVar('magedn$local')=='1'?'0':'1');refreshPage();'toast://已切换模式';\">` + (getVar('magedn$local') == '1' ? \"本地模式\" : \"投屏模式\") + \"</a></small>\"\n});\nitems.push({\n    col_type: 'blank_block'\n});\n\nvar li = pdfa(html, '.paly_list_btn&&a');\n\nfor (var i = 0; i < li.length; i++) {\n    items.push({\n        title: pdfh(li[i], \"a&&Text\"),\n        col_type: li.length < 3 ? 'text_center_1' : 'text_3',\n        url: pd(li[i], \"a&&href\") + `@lazyRule=.js:try{let html=fetch(input,{headers:{'User-Agent':MOBILE_UA,'Cookie':getVar('magedn$cookie')}}).match(/var.*?\\\\)\\\\);/)[0];eval(getCryptoJS());eval(html.replace(/md5\\\\./g,'CryptoJS.').replace('eval','var data ='));eval(data.substring(0,data.indexOf('notostr();')+10).replace('getBrowserInfo()','\"baidu\"').replace('if(ismob())',''));var U=eval(data.match(/url:(.*?),/)[1]);if(getVar('magedn$local')=='1'){cacheM3u8(U)}else U+'#.m3u8';}catch(e){\"\";}`\n    });\n}\nvar conts = pdfa(html, 'body&&#dwonBT');\nitems.push({\n    title: '下载地址',\n    url: ``,\n    col_type: 'text_center_1'\n})\nfor (var i in conts) {\n\n    var list = pdfa(conts[i], 'div&&a')\n    for (var j in list) {\n        items.push({\n            title: pdfh(list[j], 'body--img&&Html').replace(/magnet:/g,'download://magnet:'),\n            url: \"download://\" + pd(list[j], 'a&&href'),\n            col_type: 'rich_text'\n        });\n    }\n}\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"if (!getVar('magedn$local')) {\n    //本地播放\n    putVar('magedn$local', '1');\n}\n/*\nif (!getVar('magedn$cookie')) {\n    var cookies = fetchCookie('https://loli.magedn.com/api/vs/session', {\n        headers: {\n            'User-Agent': PC_UA\n        },\n        body: 'username=账户&password=密码&email=&url=https%3A%2F%2Fwww.magedn.com%2F&invitecode=&linuser=',\n        method: 'POST'\n    });\n\n    putVar('magedn$cookie', cookies.match(/wordpress_logged_in.*?;/)[0]);\n}\n*/","pages":"[]","icon":"https://loli.magedn.com/wp-content/uploads/2021/08/61207828517f39.ico"},{"last_chapter_rule":".myui-content__detail&&p,1&&Text","title":"可乐·Q","author":"发粪涂墙","version":0,"url":"hiker://empty##https://cokemv.me/vodshow/5--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nvar d = d || []\nlet 一级 = $.require('hiker://page/yiji?rule=模板·Q')\n\nvar page = MY_URL.match(/-(\\d+)---.html/)[1];\nvar true_url = 一级.获取正确链接(page)\nlet headers = {\n    \"User-Agent\": PC_UA,\n    \"Cookie\": getVar('kele$cookie'),\n    \"Referer\": MY_URL\n};\nvar html = 一级.获取源码(true_url, headers)\nif (html.indexOf('检测中') != -1) {\n    html = request(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\\\"/)[1], {});\n}\n\n一级.打造分类([\n    // 定位四大金刚\n    {\n        一级分类: 'body&&.myui-header__menu',\n        子分类: 'ul&&li[class~=hidden-xs]:gt(0):lt(6)',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n    },\n    // 定位其他大分类，如地区、年份等\n    {\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    }\n])\n\nvar 列表 = '.myui-vodlist&&li';\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 图片 = 'a&&data-original';\nvar 链接 = 'a&&href';\n\n一级.生成片单(d, html)\n\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\nif (html.indexOf('验证') > -1) {\n    function getVCode2(img, headers) {\n        function ocr(hex) {\n            /*let hex = fetch(savePath, {\n                toHex: true\n            });*/\n            let ret = request('http://ocr.nokia.press/dz/api/ocr', {\n                headers: {\n                    'content-type': 'application/x-www-form-urlencoded',\n                },\n                body: 'hex=' + hex,\n                method: 'POST'\n            });\n            return ret\n        }\n        let hex = request(img, {\n            headers: JSON.parse(headers),\n            toHex: true\n        });\n        return ocr(hex);\n\n    }\n\n    let headers = {\n        \"User-Agent\": PC_UA,\n        \"Cookie\": getVar('kele$cookie'),\n        \"Referer\": MY_URL\n    };\n    let vcode = getVCode2('https://cokemv.me/verify/index.html ', JSON.stringify(headers));\n    html = fetch(MY_URL+'?&verify=' + JSON.parse(vcode).ret, {\n        headers: headers\n    });\n}\nlog(html)\r\nvar list = pdfa(html, '#searchList&&li');\r\nfor (var j in list) {\r\n    d.push({\r\n        title: pdfh(list[j], 'a&&title'),\r\n        desc: pdfh(list[j], '.pic-text&&Text'),\r\n        img: pd(list[j], 'a&&data-original'),\r\n        content: pdfh(list[j], '.detail--h4&&Text'),\r\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\r\n    })\r\n}\r\nsetResult(d)","search_url":"https://cokemv.me/vodsearch/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)&&Cookie@.js:getVar('kele$cookie')}}","titleColor":"#ff228be6","group":"②Q","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nif (getResCode().indexOf('检测中') != -1) {\n    html = request(MY_URL + '?btwaf' + html.match(/btwaf(.*?)\\\"/)[1], {});\n}\n\nvar Color = \"#f13b66a\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n//二级模板by发粪涂墙\nvar arts = parseDomForArray(html, '.nav&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.data,0&&Text').replace('地区：', '  ').replace('年份：', '  ') + '\\n' + parseDomForHtml(html, '.data,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.data,3&&Text').substring(0, 15),\n    desc: parseDomForHtml(html, '.data,1&&Text').substring(0, 21),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar desc = parseDomForHtml(html, '#desc&&.data&&Text').replace('[收起部分]', '').replace('　', '');\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 30) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nvar lazy = `@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    try {\n        for (var j in list) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            let url = parseDom(list[j], 'a&&href')\n            d.push({\n                title: jm,\n                url: url + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5',\n                extra: {\n                    id: url\n                }\n            });\n        }\n    } catch (e) {\n        d.push({\n            title: '没有选集哟，不信点图片去看看👀',\n            col_type: 'text_center_1'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if(!getVar('kele$cookie')){\nlet cookie = JSON.parse(fetchCookie('https://cokemv.me/verify/index.html', {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    }\n}));\nputVar('kele$cookie', cookie.join(';'));\n}","pages":"[]","icon":"https://cokemv.me/template/mytheme/statics/image/20201201/932acffd1.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"饭团·Q","author":"发粪涂墙","version":0,"url":"https://fantuan.tv/vodshow/fyarea/by/fysort/fyyear/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"类型&剧情&喜剧&古装&警匪&家庭&武侠&动作&爱情&科幻&魔幻&动画&悬疑&惊悚&恐怖&犯罪&同性&传记&历史&战争&西部&奇幻&冒险&灾难&微电影","area_url":"&class/剧情&class/喜剧&class/古装&class/警匪&class/家庭&class/武侠&class/动作&class/爱情&class/科幻&class/魔幻&class/动画&class/悬疑&class/惊悚&class/恐怖&class/犯罪&class/同性&class/传记&class/历史&class/战争&class/西部&class/奇幻&class/冒险&class/灾难&class/微电影","sort_name":"热门&更新&评分","year_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_url":"hits&time&score","year_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","find_rule":"js:\nvar d = [];\nvar list = pdfa(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","searchFind":"js:\nsetResult(JSON.parse(getResCode()).list.map(\n    data => ({\n        title: data.name,\n        url: 'https://fantuan.tv/voddetail/' + data.id + '.html#immersiveTheme#',\n        img: data.pic\n    })\n))","search_url":"https://fantuan.tv/index.php/ajax/suggest?mid=fypage&wd=**&limit=10","titleColor":"#fff20c00","group":"②Q","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'a&&Text').replace('备用线路→', '线路'))\n}\n\nvar conts = pdfa(html, '.tab-content&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'ul&&li'))\n}\n\nd.push({\n    title: pdfh(html, '.data&&Text').replace('地区：', '   ').replace('年份：', '   ') + '\\n' + pdfh(html, '.data,1&&Text').substring(0, 15) + '\\n' + pdfh(html, '.data,2&&Text').substring(0, 15),\n    desc: pdfh(html, '.data,3&&Text').substring(0, 25),\n    img: pd(html, '.lazyload&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar lazy = $(\"\").lazyRule(() => {\n    eval(pdfh(request(input), '.embed-responsive&&script&&Html'))\n    eval(getCryptoJS());\n    /*\n        var string = base64Decode(player_aaaa.url)\n        var key = 'ojbk666'\n        var len = key.length\n        code = ''\n        for (i = 0x0; i < string.length; i++) {\n            k = i % len;\n            code += String.fromCharCode(string.charCodeAt(i) ^ key.charCodeAt(k))\n        }\n        var url = base64Decode(code)\n    */\n    var url = decodeURIComponent(base64Decode(player_aaaa.url))\n    var html = request('https://ptwo.wkfile.com/m3u8.php?url=' + url, {\n        headers: {\n            'Referer': 'https://fantuan.tv/'\n        }\n    });\n    var bt_token = html.match(/bt_token = \"(.*?)\"/)[1]\n    var play = CryptoJS.AES.decrypt(html.match(/getVideoInfo\\(\"(.*?)\"/)[1], CryptoJS.enc.Utf8.parse('C04AD764B8CD4CE9'), {\n        'iv': CryptoJS.enc.Utf8.parse(bt_token)\n    }).toString(CryptoJS.enc.Utf8)\n    if (/mgtv/.test(play)) {\n        play += ';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';\n    } else {\n        //   play += ';{User-Agent@Mozilla/5.0 (Windows NT 10.0)&&Referer@https://fantuan.tv/}'\n        play = cacheM3u8(play, {\n            headers: {\n                'Referer': 'https://fantuan.tv/'\n            }\n        })\n    }\n    return play\n});\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://fantuan.tv/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"新闻","author":"Sin阿尔发","version":107,"type":"news","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"②①📰新闻","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/e22580cb320ab79bcb2a42fca7a1fcdf.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"http://pic.downcc.com/upload/2021-11/202111494566329.png"},{"last_chapter_rule":"","title":"漫画","author":"","version":230220108,"type":"cartoon","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = {\n        'all': '🍀优质',\n        'video': '🖥动漫',\n        'music': '💽音乐',\n        'live': '🎛直播',\n        'cartoon': '🔮漫画',\n        'read': '📙书',\n        'picture': '📚图片',\n        'news': '🚫无搜索',\n        'tool': '📥下载',\n        'other': '✈️'\n    }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 聚漫🔮设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar',\n        extra: {\n            version: MY_RULE.version\n        }\n    }, {\n        desc: '0',\n        url: 'hiker://page/Main.view?rule=本地资源管理',\n        img: 'hiker://images/card_bg',\n        col_type: 'card_pic_1'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是聚漫🔮的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow);\n                let yux=\"yux\"+Date.now();\n                let el = $.toString((QING_TITLE, yux) => {\n                    let {\n                        hijackEl\n                    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\n                        QING_TITLE:QING_TITLE,\n                        isIndex: $.hiker[yux],\n                        MY_RULE:MY_RULE\n                    })\n\n                    $.hiker.setResult = function(param0, param1, param2, param3) {\n                        param1 = CALLBACK_KEY\n                        param2 = MY_RULE\n                        param3 = MY_TYPE\n                        if (Array.isArray(param0.data)) param0 = param0.data\n                        param0 = param0.map(hijackEl);\n                        method_setResult.invoke(javaContext, param0, param1, param2, param3)\n                    }\n                    $.hiker.setHomeResult = setResult\n                    $.hiker.setSearchResult = setResult\n                }, QING_TITLE, yux);\n                rules = rules.map((v,i)=> {\n                    if (v.searchFind.startsWith('js:')) {\n                        v.searchFind = \"js:$.hiker.\"+yux+\"=\"+i+\";\" + el + \";\" + v.searchFind.slice(3);\n                    }\n                    return v;\n                });\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push({\n    img: 'https://lanmeiguojiang.com/tubiao/ke/1.png',\n    title: '收藏',\n    url: \"hiker://collection?group=聚漫🔮\",\n    col_type: \"icon_2\"\n}, {\n    img: 'https://lanmeiguojiang.com/tubiao/ke/137.png',\n    title: '历史',\n    url: \"hiker://history\",\n    col_type: \"icon_2\"\n})\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\n\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\nif (getItem(\"read_policy\") !== \"1\") {\n    el.push({\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\n        url: $('#noHistory#').lazyRule(() => {\n            setItem(\"read_policy\", \"1\")\n            refreshPage(false)\n            return \"toast://你已同意该协议\"\n        }),\n        col_type: 'text_center_1'\n    })\n}\n\nif (getItem(\"data\") !== \"1\") {\n    url = getMyVar('remoteUrl')\n    el.push({\n        title: '““””<small><font color=#871f78>点击获取漫画源</font></small>',\n        url: $('#noHistory#').lazyRule((url) => {\n            setItem(\"data\", \"1\")\n            requireDownload('https://agit.ai/DreamOvO/JuMan/raw/branch/master/JM', url)\n            back(false)\n            refreshPage(true)\n            return \"toast://数据已获取\"\n        }, url),\n        col_type: 'text_center_1'\n    })\n}\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始聚漫•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow);\n                let yux=\"yux\"+Date.now();\n                let el = $.toString((QING_TITLE, yux) => {\n                    let {\n                        hijackEl\n                    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\n                        QING_TITLE:QING_TITLE,\n                        isIndex: $.hiker[yux],\n                        MY_RULE:MY_RULE\n                    })\n\n                    $.hiker.setResult = function(param0, param1, param2, param3) {\n                        param1 = CALLBACK_KEY\n                        param2 = MY_RULE\n                        param3 = MY_TYPE\n                        if (Array.isArray(param0.data)) param0 = param0.data\n                        param0 = param0.map(hijackEl);\n                        method_setResult.invoke(javaContext, param0, param1, param2, param3)\n                    }\n                    $.hiker.setHomeResult = setResult\n                    $.hiker.setSearchResult = setResult\n                }, QING_TITLE, yux);\n                rules = rules.map((v,i)=> {\n                    if (v.searchFind.startsWith('js:')) {\n                        v.searchFind = \"js:$.hiker.\"+yux+\"=\"+i+\";\" + el + \";\" + v.searchFind.slice(3);\n                    }\n                    return v;\n                });\n                return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"②②漫画","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files//rules/Tz/JM')\nif (request('hiker://home@本地资源管理') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【本地资源管理】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3559\"\n        }\n    })\n}\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 聚漫🔮设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除旧源，立即获取新源 <small> （基于远程仓库，没事别点，可每月点一次更新）',\\n        url: $(\\\"清除缓存，立即更新\\\").confirm((url) => {\\n            //远程依赖索引文件代理地址列表\\n            let requirelist = ['https://raw.iqiq.io/', 'https://ghproxy.net/https://raw.githubusercontent.com/', 'https://ghproxy.com/https://raw.githubusercontent.com/', 'https://cdn.staticaly.com/gh/', 'https://github.jevons.vip/https://raw.githubusercontent.com/']\\n            for (let i = 0; i < requirelist.length; i++) {\\n                try { //远程依赖索引\\n                    let res = request(requirelist[i] + 'DreamOzO/JM/main/JM', {\\n                        withStatusCode: true\\n                    })\\n                    if (JSON.parse(res).statusCode == 200) {\\n                        if (fileExist(url)) {\\n                            deleteFile(url)\\n                            requireDownload(requirelist[i] + 'DreamOzO/JM/main/JM',url)\\n                            break\\n                        } else {\\n                            requireDownload(requirelist[i] + 'DreamOzO/JM/main/JM',url)\\n                            break\\n                        }\\n                    }\\n                } catch (e) {}\\n            }\\n            refreshPage(true)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：🈚️\\\\n'\\n        /*data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、')*/,\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\nel.push({\\n    title: \\\"更新&反馈\\\",\\n    url: \\\"hiker://page/Up#noRefresh##noRecordHistory##noHistory#\\\",\\n    extra: {\\n        version: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\"\\n    },\\n    col_type: \\\"text_center_1\\\"\\n});\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 聚漫🔮自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});/*\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})*/\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode === '导入海阔') {\\n    el.push({\\n        title:'搜索',\\n        desc:'输入小程序标题|地址进行搜索...',\\n        url:$.toString(()=>{\\n            refreshPage(false);\\n        }),\\n        col_type:'input',\\n        extra: {\\n            onChange: \\\"putMyVar('importSearchKey',input)\\\",\\n            titleVisible: true,\\n            defaultValue:getMyVar('importSearchKey','')\\n        },\\n    });\\n    el.push({\\n        title: '全部导入(非搜索过滤后结果)',\\n        url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n        col_type: 'text_center_1',\\n        extra: {lineVisible: false}\\n    });\\n}\\nvar datas = (disableCustom ? data : JSON.parse(readFile('customData') || '[]'));\\nlet sk = getMyVar('importSearchKey','');\\nif(editMode === '导入海阔'&&sk) {\\n    datas = datas.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n    data = data.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n}\\ndatas.forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]));\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是聚漫🔮的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('聚漫🔮生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理*\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级[一]*\",\"path\":\"ejtool\",\"rule\":\"function cover(标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine) {\\r\\nvar 标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine;\\r\\n\\ttry {\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '‘‘’’<small><font color=\\\"#FA7298\\\">'+作者.slice(0,15)+\\\"&nbsp;\\\"+状态+'</font></small>'+'‘‘’’<small><font color=\\\"#B15BFF\\\">'+\\\"\\\\n\\\"+分类+'</font></small>'+'‘‘’’<small><font color=\\\"#FF359A\\\">'+\\\"\\\\n\\\"+章节+\\\"&nbsp;\\\"+更新+'</font></small>',\\r\\n\\t\\t\\tdesc:'‘‘’’<small>' +简介+ '</small>',\\r\\n\\t\\t\\tpic_url:  封面图片,\\r\\n\\t\\t\\turl: true_url,\\r\\n\\t\\t\\tcol_type: 'movie_1_vertical_pic_blur'\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line_blank',\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line',\\r\\n\\t\\t});\\r\\n\\t\\tif (hasLine) {\\r\\n\\t\\t\\titem.extra = {\\r\\n\\t\\t\\t\\tlineVisible: false\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\td.push(item);\\r\\n\\t} catch (e) {}\\r\\n}\\r\\nfunction chapter(title,pic_url,chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine,downloadlazy) {\\r\\n\\tvar list = chapterList;\\r\\n\\tvar original = [{\\r\\n\\t\\turl: MY_URL,\\r\\n\\t\\torder: defaultOrder\\r\\n\\t}];\\r\\n\\t!fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\r\\n\\tvar log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\r\\n\\tfor (var i in log) {\\r\\n\\t\\tif (log[i].url == MY_URL) {\\r\\n\\t\\t\\tvar now = i;\\r\\n\\t\\t\\tvar order = log[i].order;\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\tvar now = '';\\r\\n\\t\\t\\tvar order = defaultOrder;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tlet orderItem = {\\r\\n\\t\\ttitle: \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '章节排序⇅' + '</font></strong>',\\r\\n\\t\\turl: MY_URL + `@lazyRule=.js:var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));var now='` + now + `';if(now!=''){var now=parseInt(now);var order=log[now].order}else{var now=parseInt(log.length);var order=` + defaultOrder + `;log.push({url:input,order:order});}if(log[now].order){log[now].order=0;}else{log[now].order=1;};writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(log));refreshPage();'hiker://empty'`,\\r\\n\\t\\tcol_type: 'text_2'\\r\\n\\t}\\r\\n\\tif (hasLine) {\\r\\n\\t\\torderItem.title = \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '集数排序⇅' + '</font></strong>';\\r\\n\\t\\torderItem.col_type = \\\"text_2\\\"\\r\\n\\t}\\r\\n\\tlet chapterLists = list.map((item)=>({\\r\\n\\t\\ttitle: pdfh(item,\\\"a&&Text\\\"),\\r\\n\\t\\turl: pd(item,\\\"a&&href\\\"),\\r\\n\\t}));\\r\\nd.push({\\r\\n\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"下载漫画\\\" + '</front></strong>',\\r\\n\\turl: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\r\\n\\tcol_type: \\\"text_2\\\",\\r\\n\\textra: {\\r\\n\\t\\tchapterList: chapterLists,\\r\\n\\t\\tinfo:{\\r\\n\\t\\t\\tbookName: title,\\r\\n\\t\\t\\truleName: MY_RULE.title,\\r\\n\\t\\t\\tbookTopPic: pic_url,\\r\\n\\t\\t\\tparseCode: downloadlazy\\r\\n\\t\\t},\\r\\n\\t\\tdefaultView:\\\"1\\\"\\r\\n\\t}\\r\\n});\\r\\n\\td.push({\\r\\n\\t\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"本地书架\\\" + '</front></strong>',\\r\\n\\t\\turl: \\\"hiker://page/Main.view?rule=本地资源管理\\\",\\r\\n\\t\\tcol_type: \\\"text_2\\\",\\r\\n\\t});  \\r\\n\\td.push(orderItem);\\r\\n\\td.push({col_type: 'line'});\\t\\r\\n\\tvar list = order ? list : list.reverse();\\n\\tif(!list||list==\\\"\\\"){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '此漫画已下架!!',\\r\\n\\t\\t\\tcol_type: 'text_center_1',\\r\\n\\t\\t});\\r\\n\\t}\\r\\n\\tfor (var i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: pdfh(list[i], chapterTitle),\\r\\n\\t\\t\\t\\turl: pd(list[i], chapterUrl) + lazy,\\r\\n\\t\\t\\t\\tcol_type: 'text_2',\\r\\n\\t\\t\\t});\\r\\n\\t\\t}catch (e) {}\\r\\n\\t}\\r\\n}\\r\\n\\r\\nfunction line(lineList, lineTitleRule, varKey) {\\r\\n\\tlet list = lineList\\r\\n\\tvarKey = varKey == null ? (MY_RULE.url + '#line-index'): varKey;\\r\\n\\taddListener('onClose', $.toString((keyList) => {\\r\\n\\t\\tfor (let i in keyList) {clearVar(keyList[i])}\\r\\n\\t}, [varKey, MY_RULE.title + '#line-title']))\\r\\n\\tlet line0Title = '';\\r\\n\\ttry {\\r\\n\\t\\tline0Title = pdfh(list[0], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t} catch (e) {}\\r\\n\\tlog(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\r\\n\\tfor (let i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\tlet lineTitle = pdfh(list[i], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: getMyVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle+\\\"\\\":lineTitle+\\\"‘‘:切换\\\",\\r\\n\\t\\t\\t\\turl: $().lazyRule((varKey, lineIndex, lineTitle) => {\\r\\n\\t\\t\\t\\t\\tputMyVar(varKey, lineIndex.toString());\\r\\n\\t\\t\\t\\t\\tputMyVar((MY_RULE.title + '#line-title'), lineTitle);\\r\\n\\t\\t\\t\\t\\tlog(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')));\\r\\n\\t\\t\\t\\t\\trefreshPage();\\r\\n\\t\\t\\t\\t\\treturn \\\"toast://已切换至\\\" + lineTitle;\\r\\n\\t\\t\\t\\t}, varKey, i, lineTitle),\\r\\n\\t\\t\\t\\tcol_type: 'text_2',\\r\\n\\t\\t\\t});\\r\\n\\t\\t} catch (e) {}\\r\\n\\t}\\r\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级[二]*\",\"path\":\"comicFunctionFile.js\",\"rule\":\"function cover(coverTitle, coverTitle1, coverTitle2, coverTitle3, coverDesc, coverPic, coverUrl, hasLine) {\\n    try {\\n        const Color = \\\"#19B89D\\\";\\n        var des_desc = pdfh(html, coverDesc).replace('简　　介：', '').replace('漫画简介：', '');\\n        d.push({\\n            title: '‘‘’’<><font color=\\\"#FA7298\\\">' + pdfh(html, coverTitle) + '\\\\n' + '‘‘’’<><font color=\\\"#734338\\\">' + pdfh(html, coverTitle1) + '\\\\n',\\n            desc: '‘‘’’<><font color=\\\"#954A45\\\">' + pdfh(html, coverTitle2) + '\\\\n' + '‘‘’’<><font color=\\\"#954A45\\\">' + pdfh(html, coverTitle3),\\n            pic_url: pd(html, coverPic)||coverPic,\\n            url: 'hiker://search?s='+MY_PARAMS.ytitle+'&rule=聚漫🔮',\\n            col_type: 'movie_1_vertical_pic_blur'\\n        });\\n        d.push({\\n            col_type: 'line'\\n        });\\n        //var jj = getMyVar(\\\"jjs\\\", \\\"收起\\\");\\n        //var jjurl = 'hiker://empty@lazyRule=.js:getMyVar(\\\"jjs\\\") == \\\"收起\\\"?putMyVar(\\\"jjs\\\",\\\"展开\\\"):putMyVar(\\\"jjs\\\",\\\"收起\\\");\\\"hiker://empty\\\"';\\n        d.push({\\n            title: '简介 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>',\\n            img: \\\"https://lanmeiguojiang.com/tubiao/more/197.png\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((jjid, decid, des_desc) => {\\n                if (getMyVar(\\\"jjs\\\", \\\"收起\\\") == \\\"收起\\\") {\\n                    putMyVar(\\\"jjs\\\", \\\"展开\\\");\\n\\n                    updateItem({\\n                        extra: {\\n                            id: jjid\\n                        },\\n                        title: '简介 <small><small><span style=\\\"color:#19B89D\\\">收起></span></small></small>'\\n                    })\\n\\n                    updateItem({\\n                        extra: {\\n                            textSize: 14,\\n                            lineSpacing: 3,\\n                            id: decid\\n                        },\\n                        title: '<span style=\\\"color:#808080\\\">' + des_desc + '...</span>'\\n                    })\\n                    return \\\"hiker://empty\\\"\\n                } else {\\n                    putMyVar(\\\"jjs\\\", \\\"收起\\\");\\n\\n                    updateItem({\\n                        extra: {\\n                            id: jjid\\n                        },\\n                        title: '简介 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>'\\n                    })\\n\\n                    updateItem({\\n                        extra: {\\n                            textSize: 14,\\n                            lineSpacing: 3,\\n                            id: decid\\n                        },\\n                        title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 30) + '...</span>'\\n                    })\\n                    return \\\"hiker://empty\\\"\\n                }\\n\\n            }, MY_RULE + \\\"_jjid\\\", MY_RULE + \\\"_decid\\\", des_desc),\\n            col_type: \\\"avatar\\\",\\n            extra: {\\n                id: MY_RULE + \\\"_jjid\\\"\\n            }\\n        });\\n\\n        d.push({\\n            title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 30) + '...</span>',\\n            col_type: \\\"rich_text\\\",\\n            extra: {\\n                textSize: 14,\\n                lineSpacing: 3,\\n                id: MY_RULE + \\\"_decid\\\"\\n            }\\n        });\\n        d.push({\\n            col_type: 'line'\\n        })\\n        d.push({\\n            col_type: 'line'\\n        })\\n    } catch (e) {}\\n}\\n\\nfunction down(Title, chapterPic, list, chapterTitle, chapterLine, downloadlazy) {\\n    try {\\n        let doList = list.map((item) => ({\\n            title: pdfh(item, chapterTitle),\\n            url: pd(item, chapterLine),\\n        }));\\n        d.push({\\n            title: '““””<b><span style=\\\"color: #1aad19\\\">下载漫画🔹</span></b>',\\n            url: \\\"hiker://page/download.view#noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\n            col_type: \\\"text_center_1\\\",\\n            extra: {\\n                chapterList: doList,\\n                info: {\\n                    bookName: pdfh(html, Title),\\n                    ruleName: MY_RULE.title,\\n                    bookTopPic: pd(html, chapterPic),\\n                    parseCode: downloadlazy\\n                },\\n                defaultView: \\\"1\\\"\\n            }\\n        });\\n        d.push({\\n            col_type: 'line'\\n        });\\n    } catch (e) {}\\n}\\n\\nfunction chapter(chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine) {\\n    var list = chapterList;\\n    var original = [{\\n        url: MY_URL,\\n        order: defaultOrder\\n    }];\\n    !fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\n    var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\n    for (var i in log) {\\n        if (log[i].url == MY_URL) {\\n            var now = i;\\n            var order = log[i].order;\\n            break;\\n        } else {\\n            var now = '';\\n            var order = defaultOrder;\\n        }\\n    }\\n    let orderItem = {\\n        title: \\\"““””\\\" + '<font color=\\\"#f37335\\\">' + '章节排序⇅' + '</font>',\\n        url: MY_URL + `@lazyRule=.js:var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));var now='` + now + `';if(now!=''){var now=parseInt(now);var order=log[now].order}else{var now=parseInt(log.length);var order=` + defaultOrder + `;log.push({url:input,order:order});}if(log[now].order){log[now].order=0;}else{log[now].order=1;};writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(log));refreshPage();'hiker://empty'`,\\n        col_type: 'text_center_1'\\n    }\\n    if (hasLine) {\\n        orderItem.title = \\\"““””\\\" + '<font color=\\\"#f37335\\\">' + '集数排序⇅' + '</font>';\\n        orderItem.col_type = \\\"text_center_1\\\"\\n    }\\n    d.push(orderItem);\\n    d.push({\\n        col_type: 'line'\\n    });\\n\\n    var list = order ? list : list.reverse();\\n    for (let i in list) {\\n        try {\\n            d.push({\\n                title: pdfh(list[i], chapterTitle),\\n                url: pd(list[i], chapterUrl) + lazy,\\n                col_type: 'text_2',\\n            });\\n        } catch (e) {}\\n    }\\n}\\n\\nfunction line(lineList, lineTitleRule, varKey) {\\n    let list = lineList\\n    varKey = varKey == null ? (MY_RULE.url + '#line-index') : varKey;\\n    addListener('onClose', $.toString((keyList) => {\\n        for (let i in keyList) {\\n            clearVar(keyList[i])\\n        }\\n\\n    }, [varKey, MY_RULE.title + '#line-title']))\\n    let line0Title = ''\\n    try {\\n        line0Title = pdfh(list[0], lineTitleRule);\\n    } catch (e) {}\\n    log(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\n    for (let i in list) {\\n        try {\\n            let lineTitle = pdfh(list[i], lineTitleRule);\\n            d.push({\\n                title: getMyVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle + \\\"\\\" : lineTitle + \\\"‘‘:切换\\\",\\n                url: $().lazyRule((varKey, lineIndex, lineTitle) => {\\n                    putMyVar(varKey, lineIndex.toString())\\n                    // log(MY_RULE.url)\\n                    putMyVar((MY_RULE.title + '#line-title'), lineTitle)\\n                    log(MY_RULE.title + getMyVar((MY_RULE.title + '#line-title')))\\n                    refreshPage()\\n                    return \\\"toast://已切换至\\\" + lineTitle\\n                }, varKey, i, lineTitle),\\n                col_type: 'flex_button'\\n            });\\n        } catch (e) {}\\n    }\\n    d.push({\\n                col_type: 'line'\\n            });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"动态[二]*\",\"path\":\"dtfl\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\nif (typeof(拼接分类) != 'undefined' && 拼接分类 != '') {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} else {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getMyVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b>' + '∨'.fontcolor(\\\"#FF0000\\\") + '</b>' : '““””<b>' + '∧'.fontcolor(\\\"#1aad19\\\") + '</b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putMyVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putMyVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"动态[一]*\",\"path\":\"categories-header\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/categories-header.js\\n * 子页面链接 hiker://page/categories-header\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2705\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js\\n */\\n/**\\n * Object.assign 用法参考链接\\n *\\n * 1.https://www.daimajiaoliu.com/daima/47139a9e7100407\\n * 2.https://segmentfault.com/a/1190000011778875\\n * 3.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\\n */\\n// 利用 Symbol 实现私有变量和私有方法，外界不可访问（参考链接2）\\nconst symbolMap = {\\n    // checkParams: Symbol('checkParams'),\\n    mLayout: Symbol('mLayout'),\\n    true_url: Symbol('true_url'),\\n    mPage: Symbol('mPage'),\\n    src: Symbol('src'),\\n    ruleObjList: Symbol('ruleObjList'),\\n    mFold: Symbol('mFold'),\\n    mFoldInnerEnable: Symbol('mFoldInnerEnable'),\\n    mFoldIndex: Symbol('mFoldIndex'),\\n    mFoldLayout: Symbol('mFoldLayout'),\\n    mColor: Symbol('mColor'),\\n    mTag: Symbol('mTag'),\\n}\\n\\nfunction CategoriesHeader(color) {\\n    // 'use strict';\\n    // ...\\n    // this[symbolMap.listRule] = []\\n    // this[symbolMap.subListRule] = []\\n    this[symbolMap.mColor] = color || \\\"#FA7298\\\";\\n    this[symbolMap.ruleObjList] = []\\n    this.VARMAP = {\\n        CATEGORY: \\\"header.category\\\",\\n        URL: \\\"header.url\\\",\\n        FOLD: \\\"header.fold\\\",\\n    }\\n    this[symbolMap.mFoldLayout] = {\\n        injectIndex: 1\\n    }\\n    this[symbolMap.mFoldIndex] = 1\\n}\\n\\nObject.assign(CategoriesHeader.prototype, {\\n    // Override 构造方法，相当于 function.prototype.constructor = (...) => {...}，new function() 的时候会自动执行\\n    constructor: CategoriesHeader,\\n    // 定义私有方法\\n    VERSION: 202111301900,\\n    checkParams() {\\n        if (!this[symbolMap.mLayout]) {\\n            throw new Error(\\\"请调用 layout(d) 传入当前界面\\\")\\n        }\\n        if (!this[symbolMap.true_url]) {\\n            throw new Error(\\\"请调用 trueUrl(url) 传入当前分类的链接\\\")\\n        }\\n        if (!this[symbolMap.mPage]) {\\n            throw new Error(\\\"请调用 page(mPage) 传入当前页数\\\")\\n        }\\n        if (this[symbolMap.ruleObjList].length < 1) {\\n            throw new Error(\\\"请调用相关方法传入定位规则\\\")\\n        }\\n        if (!this[symbolMap.mFold]) {\\n            this[symbolMap.mFold] = '0'\\n        }\\n    },\\n    layout(mLayout) {\\n        this[symbolMap.mLayout] = mLayout\\n        return this\\n    },\\n    trueUrl(url) {\\n        this[symbolMap.true_url] = url\\n        return this\\n    },\\n    page(mPage) {\\n        if (typeof (mPage) === 'string') {\\n            mPage = parseInt(mPage)\\n        }\\n        this[symbolMap.mPage] = mPage\\n        return this\\n    },\\n    html(mSrc) {\\n        this[symbolMap.src] = mSrc\\n        return this\\n    },\\n    list(rule) {\\n        if (this[symbolMap.ruleObjList].length > 0) {\\n            throw new Error(\\\"list(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        this[symbolMap.ruleObjList] = [{}]\\n        this[symbolMap.ruleObjList][0].listRule = rule\\n        this[symbolMap.ruleObjList][0]['一级分类'] = rule\\n        return this\\n    },\\n    subList(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"subList(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].subListRule = rule\\n        this[symbolMap.ruleObjList][0]['子分类'] = rule\\n        return this\\n    },\\n    title(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"title(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].titleRule = rule\\n        this[symbolMap.ruleObjList][0]['分类标题'] = this[symbolMap.ruleObjList][0].titleRule\\n        return this\\n    },\\n    url(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"url(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].urlRule = rule\\n        this[symbolMap.ruleObjList][0]['分类链接'] = this[symbolMap.ruleObjList][0].urlRule\\n        return this\\n    },\\n    /**\\n     * 是否开启折叠功能\\n     *\\n     * @param enabled true 表示开启，false 表示禁用\\n     * @returns {CategoriesHeader}\\n     */\\n    foldInner(enabled) {\\n        if (!(typeof (enabled) === 'boolean')) {\\n            throw new Error(\\\"请传入 true 或 false 表示开启或关闭折叠功能！\\\")\\n        }\\n        this[symbolMap.mFoldInnerEnable] = enabled\\n        return this\\n    },\\n    /**\\n     * 从第 index 行开始折叠\\n     *\\n     * @param index 开始折叠的行数\\n     * @returns {CategoriesHeader}\\n     */\\n    foldIndex(index) {\\n        if (!(typeof (index) === 'number')) {\\n            throw new Error(\\\"开始折叠行请传入数字！\\\")\\n        }\\n        if (index < 1) {\\n            throw new Error(\\\"开始折叠行请传入大于 0 的整数！\\\")\\n        }\\n        this[symbolMap.mFoldIndex] = index || 1;\\n        return this\\n    },\\n    /**\\n     * 折叠按钮的界面\\n     *\\n     * @param layout 与 d.push 结构一致，\\n     *        例：{ title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"scroll_button\\\" };\\n     *        参数采用可选覆盖模式，不写的参数则使用默认;\\n     *        比如传入 { col_type:\\\"text_1\\\" }，那最终结果就是 { title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"text_1\\\" }\\n     * @returns {CategoriesHeader}\\n     */\\n    foldLayout(layout) {\\n        if (typeof layout === 'object') {\\n            let keys = Object.keys(layout)\\n            let injectIndex = layout.injectIndex || layout['折叠按钮插入行']\\n            if (layout.title || layout.url || layout.col_type || injectIndex) {\\n                for (let i = 0; i < keys.length; i++) {\\n                    const key = keys[i]\\n                    this[symbolMap.mFoldLayout][key] = layout[key];\\n                }\\n            } else {\\n                throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n            }\\n            // injectIndex 折叠按钮插入第 injectIndex 行\\n            if (injectIndex) {\\n                if (!(typeof (injectIndex) === 'number')) {\\n                    throw new Error(\\\"折叠按钮插入行请传入数字！\\\")\\n                }\\n                if (injectIndex < 1) {\\n                    throw new Error(\\\"折叠按钮插入行请传入大于 0 的整数！\\\")\\n                }\\n                if (injectIndex > this[symbolMap.mFoldIndex]) {\\n                    throw new Error(\\\"折叠按钮插入行不得大于显示折叠行数！请调用 .foldIndex(index) 或 .第几行开始折叠(index) 传入正确的显示折叠行数\\\")\\n                }\\n                this[symbolMap.mFoldLayout].injectIndex = injectIndex || 1;\\n            }\\n        } else {\\n            throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n        }\\n        return this;\\n    },\\n    // 当前是否折叠\\n    fold(isFold) {\\n        if (typeof (isFold) === 'string') {\\n            isFold = isFold === '1'\\n        }\\n        if (isFold) {\\n            this[symbolMap.mFold] = '1';\\n        } else {\\n            this[symbolMap.mFold] = '0';\\n        }\\n        return this\\n    },\\n    color(mColor) {\\n        this[symbolMap.mColor] = mColor\\n        return this\\n    },\\n    tag(mTag) {\\n        this[symbolMap.mTag] = mTag\\n        return this\\n    },\\n    add(ruleObj) {\\n        // log($.stringify(ruleObj))\\n        if (ruleObj.constructor === Array) {\\n            this[symbolMap.ruleObjList] = this[symbolMap.ruleObjList].concat(ruleObj)\\n        } else {\\n            this[symbolMap.ruleObjList].push(ruleObj)\\n        }\\n        return this;\\n    },\\n    evalJSRule(item, jsRule) {\\n        let rule = jsRule.replace(\\\"@js:\\\", \\\"\\\")\\n        rule = rule.trim()\\n        // log($.stringify(rule))\\n        let input = item\\n        if (rule.startsWith(\\\"(\\\")) {\\n            eval('result = ' + rule)\\n        } else {\\n            /**\\n             * 还原成 $.toString(...) 的最终结果，达到最终处理方式跟上面的 if 一致的目的\\n             */\\n            eval('result = ' + '(() => {' + rule + '})()')\\n        }\\n        return (result || '')\\n    },\\n    getTitle(src, category) {\\n        let title = ''\\n        let titleRule = category.titleRule || 'a&&Text'\\n        if (titleRule.startsWith(\\\"@js:\\\")) {\\n            title = this.evalJSRule(src, titleRule)\\n        } else {\\n            title = parseDomForHtml(src, titleRule)\\n        }\\n        return title || \\\"\\\";\\n    },\\n    getUrl(src, category) {\\n        let url = ''\\n        let urlRule = category.urlRule || 'a&&href'\\n        if (typeof urlRule === 'object') {\\n            let mUrlRule = urlRule.rule || urlRule['解析规则'] || 'a&&href';\\n            if (mUrlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, mUrlRule);\\n            } else {\\n                let parse = parseDom;\\n                if (urlRule.parseOption) {\\n                    switch (urlRule.parseOption) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                } else if (urlRule[\\\"解析方法\\\"]) {\\n                    switch (urlRule[\\\"解析方法\\\"]) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                }\\n                url = parse(src, mUrlRule);\\n            }\\n            if (urlRule.dealUrl) {\\n                url = urlRule.dealUrl(url)\\n            } else if (urlRule['二次处理']) {\\n                url = urlRule['二次处理'](url)\\n            }\\n        } else {\\n            if (urlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, urlRule);\\n            } else {\\n                url = parseDom(src, urlRule);\\n            }\\n        }\\n        return url || \\\"\\\";\\n    },\\n    build() {\\n        // 检测是否传入需要的参数\\n        this.checkParams()\\n        // 每一个分类的唯一标识\\n        let mTag = this[symbolMap.mTag] || \\\"\\\"\\n        //翻页 需要根据实际替换\\n        const html = this[symbolMap.src] || request(this[symbolMap.true_url])\\n        const empty = \\\"hiker://empty\\\"\\n        //获取列表\\n        const categories = []\\n        this[symbolMap.ruleObjList].map(ruleObj => {\\n            let list = []\\n            let listRule = ruleObj.listRule || ruleObj[\\\"一级分类\\\"]\\n            if (listRule.startsWith(\\\"@js:\\\")) {\\n                // log($.stringify(listRule))\\n                list = this.evalJSRule(html, listRule)\\n            } else {\\n                list = parseDomForArray(html, listRule)\\n            }\\n            // log(list)\\n            list.map(category => {\\n                categories.push({\\n                    list: category,\\n                    subListRule: ruleObj.subListRule || ruleObj[\\\"子分类\\\"],\\n                    titleRule: ruleObj.titleRule || ruleObj[\\\"分类标题\\\"],\\n                    urlRule: ruleObj.urlRule || ruleObj[\\\"分类链接\\\"],\\n                });\\n            })\\n        })\\n\\n        // log($.stringify(categories))\\n\\n        let init_cate = []\\n        for (let i = 0; i < 20; i++) {\\n            init_cate.push(\\\"0\\\")\\n        }\\n\\n        const cate_temp_json = getMyVar(mTag + this.VARMAP.CATEGORY, JSON.stringify(init_cate))\\n        const cate_temp = JSON.parse(cate_temp_json)\\n\\n        if (this[symbolMap.mPage] === 1) {\\n\\n            categories.forEach((category, index) => {\\n\\n                // 折叠 UI\\n                if (this[symbolMap.mFoldInnerEnable] && this[symbolMap.mFoldLayout].injectIndex === (index+1)) {\\n                    let foldLayout = {\\n                        title: this[symbolMap.mFoldLayout].title || (this[symbolMap.mFold] === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>'),\\n                        url: this[symbolMap.mFoldLayout].url || $(\\\"hiker://empty#noHistory#\\\").lazyRule((params) => {\\n                            putMyVar(params.mTag + params.VARMAP.FOLD, getMyVar(params.mTag + params.VARMAP.FOLD, params.isFold) === '1' ? '0' : '1')\\n                            refreshPage(false);\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            mTag: mTag,\\n                            isFold: this[symbolMap.mFold],\\n                            VARMAP: this.VARMAP\\n                        }),\\n                        col_type: this[symbolMap.mFoldLayout].col_type || \\\"scroll_button\\\",\\n                    }\\n                    this[symbolMap.mLayout].push(foldLayout)\\n                }\\n\\n                //具体列表下的分类\\n                let sub_categories = [];\\n                if (category.subListRule.startsWith(\\\"@js:\\\")) {\\n                    sub_categories = this.evalJSRule(category.list, category.subListRule)\\n                } else {\\n                    sub_categories = parseDomForArray(category.list, category.subListRule);\\n                }\\n                if (index < (this[symbolMap.mFoldIndex] || 1)) {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                let new_cate = []\\n                                if (params.index === 0) {\\n                                    params.cate_temp.forEach((cate, index) => {\\n                                        new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                                    });\\n                                } else {\\n                                    params.cate_temp[params.index] = params.key.toString()\\n                                }\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.index === 0 ? new_cate : params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                } else if (this[symbolMap.mFold] === '0') {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                params.cate_temp[params.index] = params.key.toString()\\n\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                }\\n            });\\n        }\\n    },\\n\\n    界面(layout) {\\n        return this.layout(layout)\\n    },\\n    分类链接(trueUrl) {\\n        return this.trueUrl(trueUrl);\\n    },\\n    页码(page) {\\n        return this.page(page);\\n    },\\n    源码(html) {\\n        return this.html(html);\\n    },\\n    定位一级分类(list) {\\n        return this.list(list);\\n    },\\n    定位子分类(subList) {\\n        return this.subList(subList);\\n    },\\n    定位分类标题(title) {\\n        return this.title(title);\\n    },\\n    定位分类链接(url) {\\n        return this.url(url);\\n    },\\n    开启内置折叠功能() {\\n        return this.foldInner(true);\\n    },\\n    关闭内置折叠功能() {\\n        return this.foldInner(false);\\n    },\\n    第几行开始折叠(index) {\\n        return this.foldIndex(index);\\n    },\\n    折叠按钮样式(layout) {\\n        return this.foldLayout(layout)\\n    },\\n    折叠(fold) {\\n        return this.fold(fold);\\n    },\\n    选中的分类颜色(color) {\\n        return this.color(color);\\n    },\\n    唯一标识(mTag) {\\n        return this.tag(mTag)\\n    },\\n    添加分类定位(ruleObj) {\\n        return this.add(ruleObj);\\n    },\\n    开始打造分类() {\\n        return this.build();\\n    },\\n\\n})\\n$.exports = new CategoriesHeader();\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理[二]*\",\"path\":\"url-processor\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+).html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*.html',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---.html)/, this.params.page + '$1')\\n                    .replace(/(---\\\\d+.html)/, this.params.page + '$1'); // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\\n\"},{\"col_type\":\"movie_3\",\"name\":\"一级*\",\"path\":\"yjtool\",\"rule\":\"function convert1(str) {\\n    let c = str.split(\\\";\\\")\\n    return {\\n        列表: c[0],\\n        标题: c[1],\\n        图片: c[2],\\n        描述: c[3],\\n        链接: c[4]\\n    }\\n}\\n\\nfunction merge(source, target) {\\n    let keys = Object.keys(source)\\n    for (let i in keys) {\\n        target[keys[i]] = source[keys[i]]\\n    }\\n}\\n\\nfunction 一级(obj) {\\n    var d = [];\\n    if ($.type(obj) == \\\"string\\\") {\\n        obj = convert1(obj)\\n    }\\n    if (obj.规则) {\\n        let c = convert1(obj.规则)\\n        merge(c, obj)\\n    }\\n    let arr = pdfa(getResCode(), obj.列表);\\n       if (obj.列表处理 != null) {\\n            arr = obj.链接处理(arr)\\n        }\\n    for (let it of arr) {\\n        let url = pd(it, obj.链接)\\n        if (obj.链接处理 != null) {\\n            url = obj.链接处理(url)\\n        }\\n        let title = pdfh(it, obj.标题)\\n        if (obj.标题处理 != null) {\\n            title = obj.标题处理(title)\\n        }\\n        let pic = pd(it, obj.图片)\\n        if (obj.图片处理 != null) {\\n            pic = obj.图片处理(pic)\\n        }\\n        d.push({\\n            title: obj.标题 ? pdfh(it, obj.标题) : \\\"\\\",\\n            url: url+'#autoCache#',\\n            col_type: \\\"\\\",\\n            desc: obj.描述 ? pdfh(it, obj.描述) : \\\"\\\",\\n            pic_url: pic,\\n            extra: {\\n                ytitle: title,\\n                ypic: pic,\\n                yurl: url.replace('hiker://empty##','')\\n            }\\n        });\\n\\n    }\\n    setResult(d);\\n}\\nvar tool = {\\n    一级: 一级\\n}\\n$.exports = tool\"},{\"col_type\":\"movie_3\",\"name\":\"一级[二]*\",\"path\":\"yiji\",\"rule\":\"function 一级() {};\\r\\nObject.assign(一级.prototype, {\\r\\n\\tconstructor: 一级,\\r\\n\\ttest() {},\\r\\n\\t获取源码(url, header) {return fetch(true_url, {headers: header || {'User-Agent': PC_UA}}) },// 默认统一使用MOBILE_UA\\r\\n\\t搜索框架(page) {\\r\\n\\t\\tif (page == '1') {\\n/*\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: \\\"搜索本规则\\\",\\r\\n\\t\\t\\t\\turl: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\r\\n\\t\\t\\t\\tdesc: \\\" \\\",\\r\\n\\t\\t\\t\\tcol_type: \\\"input\\\"\\r\\n\\t\\t\\t});\\n*/\\r\\n\\t\\t}\\r\\n\\t},\\r\\n\\t获取链接(page, regex) {\\r\\n\\t\\tlet true_url = getMyVar('header.url', MY_URL);\\r\\n\\t\\t//let 链接处理工具 = requireCache(config.链接处理工具依赖)\\r\\n\\t\\t//let 链接处理工具 = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2849')\\r\\n\\t\\t//let 链接处理工具 = $.require('hiker://page/url-processor')\\r\\n\\t\\tlet 链接处理工具 = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2849')\\r\\n\\t\\ttrue_url = 链接处理工具\\r\\n\\t\\t\\t.链接(true_url)\\r\\n\\t\\t\\t.页码(page)\\r\\n\\t\\t\\t.插入新处理规则(regex || [])\\r\\n\\t\\t\\t.获取处理结果();\\r\\n\\t\\treturn true_url;\\r\\n\\t},\\r\\n\\t打造分类(ruleList) {\\r\\n\\t\\t//  let htmlCategories = requireCache(config.动态分类依赖)\\r\\n\\t\\t//let htmlCategories = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2705')\\r\\n\\t\\tif (!ruleList) {\\r\\n\\t\\t\\tlet 分类定位 = [{\\r\\n\\t\\t\\t\\t\\t一级分类: 一级定位A,\\r\\n\\t\\t\\t\\t\\t子分类: 统一定位B || 一级定位B,\\r\\n\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 一级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t}]\\r\\n\\t\\t\\tif (二级定位A && (统一定位B || 二级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 二级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 二级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 二级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tif (三级定位A && (统一定位B || 三级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 三级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 三级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 三级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\tif (四级定位A && (统一定位B || 四级定位B)) {\\r\\n\\t\\t\\t\\t分类定位.push({\\r\\n\\t\\t\\t\\t\\t\\t一级分类: 四级定位A,\\r\\n\\t\\t\\t\\t\\t\\t子分类: 统一定位B || 四级定位B,\\r\\n\\t\\t\\t\\t\\t\\t分类链接: {二次处理(url) {try {return 四级处理C(url)} catch (e) {return url}}}\\r\\n\\t\\t\\t\\t})\\r\\n\\t\\t\\t}\\r\\n\\t\\t\\truleList = 分类定位;\\r\\n\\t\\t}\\r\\n\\t\\t// '0' 为默认不折叠，'1' 为默认折叠\\r\\n\\t\\tconst 当前折叠状态 = getMyVar('header.fold', '0')\\r\\n\\t\\t// 引入动态分类依赖\\r\\n\\t\\tlet htmlCategories = requireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=2705')\\r\\n\\t\\tvar getRangeColors = function() {\\r\\n\\t\\t\\treturn '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\\r\\n\\t\\t} // 随机选中的分类颜色\\r\\n\\t\\tvar colour;\\r\\n\\t\\tif (分类颜色 !== '') {\\r\\n\\t\\t\\tcolour = 分类颜色\\r\\n\\t\\t} else {\\r\\n\\t\\t\\tcolour = getRangeColors()\\r\\n\\t\\t}\\r\\n\\t\\thtmlCategories.界面(d)\\r\\n\\t\\t\\t//.分类链接(true_url)\\r\\n\\t\\t\\t.源码(html)\\r\\n\\t\\t\\t.页码(page)\\r\\n\\t\\t\\t.添加分类定位(ruleList)\\r\\n\\t\\t\\t.开启内置折叠功能() // 必须\\r\\n\\t\\t\\t.折叠(当前折叠状态) // 必须\\r\\n\\t\\t\\t.折叠按钮样式({\\r\\n\\t\\t\\t\\ttitle: 当前折叠状态 == \\\"1\\\" ? \\\"““””<big><b><font color='#5959AB'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\"\\r\\n\\t\\t\\t}) // 可选\\r\\n\\t\\t\\t// .第几行开始折叠(2) // 可选\\r\\n\\t\\t\\t// .折叠按钮样式({ 折叠按钮插入行: 2 })  // 可选，但必须先调用 .第几行开始折叠(index)，然后再传入 { 折叠按钮插入行: index }\\r\\n\\t\\t\\t.选中的分类颜色(colour)\\r\\n\\t\\t\\t.开始打造分类();\\r\\n\\t},\\r\\n\\r\\n\\t生成片单(d,html) {\\r\\n\\r\\n\\t\\tvar 列表\\r\\n\\t\\tvar 标题\\r\\n\\t\\tvar 描述\\r\\n\\t\\tvar 图片\\r\\n\\t\\tvar 链接\\r\\n\\r\\n\\t\\tif (框架类型 === 'myui-vodlist') {\\r\\n\\t\\t\\t列表 = '.myui-vodlist&&li';\\r\\n\\t\\t\\t标题 = 'h4&&Text';\\r\\n\\t\\t\\t描述 = '.pic-tag||.pic-text&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·myui-vodlist')\\r\\n\\t\\t} else if (框架类型 === '#data_list') {\\r\\n\\t\\t\\t列表 = '#data_list&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'em&&Text';\\r\\n\\t\\t\\t图片 = 'img&&data-srcl';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·data_list')\\r\\n\\t\\t} else if (框架类型 === 'fed-list-title') {\\r\\n\\t\\t\\t列表 = '.fed-list-info&&li';\\r\\n\\t\\t\\t标题 = '.fed-list-title&&Text';\\r\\n\\t\\t\\t描述 = '.fed-text-center&&Text';\\r\\n\\t\\t\\t图片 = 'a&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t\\t//log('框架类型·.fed-list-info')\\r\\n\\t\\t} else if (框架类型 === 'item') {\\r\\n\\t\\t\\t列表 = 'body&&.item';\\r\\n\\t\\t\\t标题 = 'img&&alt';\\r\\n\\t\\t\\t描述 = 'p&&Text';\\r\\n\\t\\t\\t图片 = 'img&&srcl';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'module-items') {\\r\\n\\t\\t\\t列表 = '.module-items&&.module-item';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = '.module-item-text&&Text';\\r\\n\\t\\t\\t图片 = 'img||.lazy&&data-src';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'pack-ykpack') {\\r\\n\\t\\t\\t列表 = 'body&&.pack-ykpack';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'span,-1&&Text';\\r\\n\\t\\t\\t图片 = '.eclazy&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'stui-vodlist') {\\r\\n\\t\\t\\t列表 = '.stui-vodlist&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = '.pic-text&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload||a&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === 'vodlist') {\\r\\n\\t\\t\\t列表 = '.vodlist&&li';\\r\\n\\t\\t\\t标题 = 'a&&title';\\r\\n\\t\\t\\t描述 = 'a&&Text';\\r\\n\\t\\t\\t图片 = '.lazyload&&data-original';\\r\\n\\t\\t\\t链接 = 'a&&href';\\r\\n\\t\\t} else if (框架类型 === '测试') {\\r\\n\\t\\t\\t列表 = 'body&&a';\\r\\n\\t\\t\\t标题 = 'body&&a';\\r\\n\\t\\t\\t描述 = 'body&&a';\\r\\n\\t\\t\\t图片 = 'body&&a';\\r\\n\\t\\t\\t链接 = 'body&&a';\\r\\n\\t\\t} else if (框架类型 === '') {\\r\\n\\t\\t\\t列表 = 框架列表;\\r\\n\\t\\t\\t标题 = 框架标题;\\r\\n\\t\\t\\t描述 = 框架描述;\\r\\n\\t\\t\\t图片 = 框架图片;\\r\\n\\t\\t\\t链接 = 框架链接;\\r\\n\\t\\t}\\r\\n\\t\\tlet list = pdfa(html, 列表);\\r\\n\\t\\tfor (let k in list) {\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: pdfh(list[k], 标题),\\r\\n\\t\\t\\t\\tdesc: pdfh(list[k], 描述),\\r\\n\\t\\t\\t\\timg: pd(list[k], 图片) + '@Referer=',\\r\\n\\t\\t\\t\\turl: pd(list[k], 链接)+\\\"#immersiveTheme##autoCache#\\\",\\r\\n\\t\\t\\t});\\r\\n\\t\\t}\\r\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'big_big_blank_block',\\r\\n\\t\\t});\\r\\n\\t}\\r\\n})\\r\\n\\r\\n$.exports = new 一级();\\r\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"函数组件*\",\"path\":\"qs\",\"rule\":\"function 优化路线章节数据(多路线否, 源数据, 路线列表, 路线名, 选集总列表, 选集列表, 集名, 集url, 前缀, 标题, 图片) {\\n\\n    //当多路线否 选集总列表为空\\n    //最终返回 [{title: '路线名',list: [{title:'选集名',url:'选集url',...}],sjss:'下载资料'},....]\\n    //选集列表 第一项是css选择器，之后可以用$分割添加要删除章节名\\n\\n\\n    var 章节json = [];\\n    var 单路线章节 = '章节列表'\\n\\n    var 列表名 = [];\\n    if (!多路线否) {\\n\\n        列表名.push(单路线章节)\\n\\n    } else {\\n\\n        pdfa(源数据, 路线列表).forEach(function(data) {\\n            列表名.push(pdfh(data, 路线名))\\n        });\\n\\n    }\\n\\n    var 集数组 = [];\\n\\n\\nvar 排除章节 = [];\\nif(选集列表.includes('$')){\\n排除章节 = 选集列表.split('$')\\n选集列表 = 排除章节.shift()\\n}\\n\\n    if (!多路线否) {\\n        集数组.push(pdfa(源数据, 选集列表))\\n    } else {\\n        pdfa(源数据, 选集总列表).forEach(function(data) {\\n            集数组.push(pdfa(data, 选集列表))\\n        });\\n    }\\n\\n\\n    for (let i in 集数组) {\\n\\n        var doList = [];\\n\\n排除章节.forEach(function(data) {\\n    var 标识id = 集数组[i].findIndex(返回 => 返回.indexOf(data) != -1);\\n    if (标识id != -1) {\\n      集数组[i].splice(标识id, 1)\\n    };\\n  });\\n\\n        for (let it of 集数组[i]) {\\n            var doListurl = pdfh(it, 集url)\\n            doListurl = doListurl.includes(\\\"http\\\") ? doListurl : 前缀 + doListurl\\n            doList.push({\\n                title: pdfh(it, 集名),\\n                url: doListurl\\n            })\\n        }\\n\\n        var bookName = !多路线否 ? 标题 : 标题 + '-' + 列表名[i]\\n\\n        章节json.push({\\n            title: 列表名[i],\\n            list: doList,\\n            sjss: {\\n                chapterList: doList,\\n                info: {\\n                    bookName: bookName, //漫画名称,\\n                    ruleName: MY_RULE.title,\\n                    bookTopPic: 图片,\\n                    parseCode: downloadlazy,\\n                },\\n                defaultView: \\\"1\\\"\\n            }\\n        })\\n    }\\n    return 章节json\\n}\\n\\n\\nfunction 添加头部列表(d, 标题, 图片, 描述, 作者, 时间, 分类,页URL) {\\n\\n    标题 = !标题 ? '' : 标题 + '\\\\n'\\n    图片 = !图片 ? '' : 图片\\n    描述 = !描述 ? '' : 描述.replace(\\\"更新至：\\\", '')\\n\\n    作者 = !作者 ? '' : '\\\\n' + 作者\\n    时间 = !时间 ? '' : '\\\\n' + 时间\\n    分类 = !分类 ? '' : '\\\\n' + 分类\\n\\n\\n    var 头部title = ['‘‘’’<b>','</b> <small><font color=#FA7298>','</font>','</small>']\\n    var 头部desc = ['‘‘’’<font color=#f8ecc9>','</font>']\\n\\n\\n\\n    头部title = 头部title[0]+标题+头部title[1]+描述+头部title[2]+作者+头部title[3]\\n\\n    头部desc = 头部desc[0]+时间+分类+头部desc[1]\\n\\n    d.push({\\n        title: 头部title,\\n        desc: 头部desc,\\n        pic_url: 图片,\\n        url: 'hiker://search?s='+getParam('Name')+'&rule=聚漫🔮',\\n        col_type: 'movie_1_vertical_pic_blur'\\n    });\\n\\n}\\n\\n\\nfunction 添加简介(d, 数据源, 页URL, 图片) {\\n    //获取数据\\n    var 简介内容 = 数据源\\n    简介内容 = 简介内容.replace(\\\"简介：\\\", \\\"\\\").replace(\\\"介绍:\\\", \\\"\\\").replace(\\\"漫画\\\", \\\"\\\").replace(\\\"……\\\", \\\"\\\").replace(\\\"简介\\\", \\\"\\\")\\n\\n    var 简介内容收;\\n    if (简介内容.length > 45) {\\n        简介内容收 = 简介内容.substr(0, 45) + '...'\\n    } else {\\n        简介内容收 = 简介内容 + '...'\\n    }\\n\\n    //图标获取\\n    if (!图片) {\\n        图片 = 'https://lanmeiguojiang.com/tubiao/q/107.png'\\n    }\\n\\n    //页URL 获取\\n    if (!页URL) {\\n        页URL = MY_RULE.title\\n    }\\n\\n    //标题与简介样式\\n    var mztext = \\\"&nbsp;&nbsp;&nbsp;&nbsp;<small>简介</small><br>\\\"\\n    var bttitle = '<font color=\\\"#098AC1\\\">漫画简介  </font><small><small><font color=\\\"#f47983\\\">简介收></font></small></small>'\\n\\n    //展开与收缩操作\\n    var jj = getMyVar(页URL + \\\"简介收\\\", \\\"已收起\\\");\\n    var jjurl = $(\\\"#noLoading#\\\").lazyRule((简介内容, 简介内容收, 收, 收内容, 当前URL) => {\\n        var jsbl = 当前URL + \\\"简介收\\\";\\n        var jj = getMyVar(当前URL + \\\"简介收\\\", \\\"已收起\\\");\\n        jj = jj == \\\"已收起\\\" ? \\\"展开\\\" : \\\"已收起\\\";\\n        putMyVar(jsbl, jj)\\n        updateItem({\\n            extra: {\\n                id: 当前URL + \\\"_bt\\\"\\n            },\\n            title: 收.replace(\\\"简介收\\\", jj)\\n        })\\n\\n        updateItem({\\n            extra: {\\n                id: 当前URL + \\\"_mz\\\"\\n            },\\n            title: jj == \\\"已收起\\\" ? 收内容.replace(\\\"简介\\\", 简介内容收) : 收内容.replace(\\\"简介\\\", 简介内容)\\n        })\\n        return \\\"hiker://empty\\\"\\n    }, 简介内容, 简介内容收, bttitle, mztext, 页URL)\\n\\n\\n    //标题\\n    d.push({\\n        title: bttitle.replace(\\\"简介收\\\", jj),\\n        url: jjurl,\\n        col_type: \\\"avatar\\\",\\n        pic_url: 图片,\\n        extra: {\\n            id: 页URL + \\\"_bt\\\"\\n        }\\n    });\\n\\n    //简介\\n    d.push({\\n        title: jj == \\\"已收起\\\" ? mztext.replace(\\\"简介\\\", 简介内容收) : mztext.replace(\\\"简介\\\", 简介内容),\\n        col_type: \\\"rich_text\\\",\\n        extra: {\\n            id: 页URL + \\\"_mz\\\"\\n        }\\n    });\\n\\n}\\n\\nfunction 添加列表章节(d, 标题数据, 列表数据, 解析代码, 页URL, 图片) {\\n\\n\\n    //d与外界d，为同内存地址，不用返回\\n    //标题数据  即标题名字\\n    //列表数据必须是JSON  格式是[{title:'',url:'',},.....]  且url必须有前缀\\n\\n    //图标获取\\n    if (!图片) {\\n        图片 = 'https://lanmeiguojiang.com/tubiao/q/18.png'\\n    }\\n\\n    //页URL 获取\\n    if (!页URL) {\\n        页URL = MY_RULE.title\\n    }\\n\\n    //标题名\\n    var 标题名 = '<b>路线</b>  <small><small><font color=#f9906f>排序 ></font></small></small>'\\n\\n\\n    var 排序 = getMyVar(页URL + \\\"章节排序\\\", \\\"正序\\\");\\n    var 提示 = 排序 == '倒序' ? '正序' : '倒序';\\n\\n    var 排序url = $(\\\"#noLoading#\\\").lazyRule((标题名, 标题数据, 列表数据, 解析代码, 页URL) => {\\n        var 排序 = getMyVar(页URL + \\\"章节排序\\\", \\\"正序\\\");\\n        var 提示 = 排序 == '倒序' ? '正序' : '倒序';\\n        updateItem({\\n            extra: {\\n                id: 页URL + \\\"_排序\\\"\\n            },\\n            title: 标题名.replace('路线', 标题数据).replace('排序', 提示)\\n        })\\n\\n\\n        if (提示 == '倒序') {\\n            列表数据.reverse()\\n        }\\n        列表数据.forEach(function(data, ssid) {\\n            updateItem({\\n                title: data.title,\\n                url: data.url + 解析代码,\\n                extra: {\\n                    id: 页URL + \\\"_选集\\\" + ssid\\n                }\\n            });\\n        });\\n\\n\\n        putMyVar(页URL + \\\"章节排序\\\", 提示)\\n        return \\\"hiker://empty\\\"\\n    }, 标题名, 标题数据, 列表数据, 解析代码, 页URL)\\n\\n    d.push({\\n        title: 标题名.replace('路线', 标题数据).replace('排序', 排序),\\n        pic_url: 图片,\\n        url: 排序url,\\n        col_type: \\\"avatar\\\",\\n        extra: {\\n            id: 页URL + \\\"_排序\\\"\\n        }\\n    });\\n\\n    if (排序 == '倒序') {\\n        列表数据.reverse()\\n    }\\n\\n    列表数据.forEach(function(data, id) {\\n        d.push({\\n            title: data.title,\\n            url: data.url + 解析代码,\\n            col_type: \\\"text_2\\\",\\n            extra: {\\n                id: 页URL + \\\"_选集\\\" + id\\n            }\\n        });\\n    });\\n\\n}\\n\\n/*\\nfunction 添加防止网页(项url, UA) {\\n\\n    //上级跳转到当前页的链接必须是hiker://empty；不然一刷新还是会重复加载\\n    //UA ''或false或'手机' 默认是手机端 ; 电脑 'PC'\\n\\n    var 刷新重复 = MY_RULE.title + \\\"网页源码\\\"\\n    var pc链接 = 项url.replace(\\\"m.\\\", \\\"www.\\\")\\n    var 手机链接 = 项url.replace(\\\"www.\\\", \\\"m.\\\")\\n\\n    var code;\\n    if (getMyVar(刷新重复, \\\"false\\\") == \\\"false\\\") {\\n\\n        code = UA == 'PC' ? fetch(pc链接) : request(手机链接);\\n        putMyVar(刷新重复, getParam('url') + \\\"￥&￥\\\" + code)\\n\\n    } else {\\n\\n        var pm = getMyVar(刷新重复).split(\\\"￥&￥\\\")\\n        if (pm[0] == getParam('url')) {\\n            code = pm[1]\\n        } else {\\n            code = UA == 'PC' ? fetch(pc链接) : request(手机链接);\\n            putMyVar(刷新重复, getParam('url') + \\\"￥&￥\\\" + code)\\n        }\\n    }\\n    return code\\n}\\n*/\\n\\nfunction 添加选择路线(d, 路线数据, 页URL, 多路线否) {\\n\\n    //路线数据 格式[{title:'路线名'},....]\\n    //多路线否  false 则不启用选择路线；true 则启用\\n\\n    var 选择列表 = getItem(页URL + \\\"选择列表\\\", \\\"0\\\")\\n\\n    if (多路线否) {\\n\\n        var 路线选中 = '‘‘’’<font color=#098AC1>选中</font>'\\n\\n\\n        d.push({\\n            title: '‘‘’’📖<font color=\\\"#FA7298\\\"> 图源列表</font> ：',\\n            url: \\\"toast://点我干啥呢\\\",\\n            col_type: 'flex_button'\\n        });\\n\\n\\n        路线数据.forEach(function(data, id) {\\n\\n            var jjurl = $(\\\"#noLoading#\\\").lazyRule((页URL,id) => {\\n                setItem(页URL + '选择列表',id+'');\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\";\\n            },页URL,id);\\n\\n            var 标题名 = id == 选择列表 ? 路线选中.replace('选中', data.title) : data.title;\\n            d.push({\\n                title: 标题名,\\n                url: jjurl,\\n                col_type: 'flex_button',\\n                extra: {\\n                    id: 页URL + \\\"_路线\\\" + id\\n                }\\n            });\\n        });\\n\\n    }\\n    return 选择列表\\n}\\n\\n\\nfunction 添加选择下载(d, 路线数据, 多路线否) {\\n    d.push({\\n    title: '‘‘’’🗳<font color=\\\"#f47983\\\"> 书架</font> ',\\n    url: \\\"hiker://page/Bookrack.view?rule=本地资源管理&ruleName=\\\"+MY_RULE.title,\\n    col_type: 'scroll_button'\\n});\\n\\n    //路线数据 格式[{title:'路线名',sjss:'下载资料信息'},....]\\n    //多路线否  false 则只有①个下载 标题为 点击下载；true 则多个下载\\n\\nif(多路线否){\\n\\nd.push({\\n        title: '‘‘’’📥<font color=\\\"#f47983\\\"> 下载</font> ：',\\n        url: \\\"toast://点我干啥呢\\\",\\n        col_type: 'scroll_button'\\n    });\\n\\n}\\n\\n    路线数据.forEach(function(data, id) {\\n\\n        d.push({\\n            title: data.title.includes('章节列表') ? '点击下载' : data.title,\\n            url: 'hiker://page/download.view#noRecordHistory##noRefresh##noHistory#?rule=本地资源管理',\\n            col_type: 'scroll_button',\\n            extra: data.sjss\\n        });\\n    });\\n\\n    if (多路线否) {\\n        d.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"CSS选择器模版*\",\"path\":\"ejwb.js\",\"rule\":\"function 一级(列表, 标题, 图片, 集数, 链接, 访问头) {\\n    访问头 = !访问头 ? '' : 访问头\\n    var d = [];\\n    var code = getCode()\\n    pdfa(code, 列表).forEach(function(data) {\\n        d.push({\\n            title: pdfh(data, 标题),\\n            desc: pdfh(data, 集数),\\n            pic_url: pd(data, 图片)||图片 + \\\"@Referer=\\\" + 访问头,\\n            url: 'hiker://empty#immersiveTheme##autoCache#',\\n            col_type: \\\"movie_3\\\",\\nextra: {\\n            name: pdfh(data, 标题),\\n            url: pd(data, 链接),\\n            qz: MY_HOME\\n        }\\n        });\\n    });\\n    setResult(d);\\n}\\n\\n\\n\\nfunction 搜索(列表, 标题, 链接, 描述, 详情, 图片, 访问头) {\\n    var d = [];\\n    访问头 = !访问头 ? '' : 访问头\\n    pdfa(getResCode(), 列表).forEach(function(data) {\\n        d.push({\\n            title: pdfh(data, 标题),\\n            desc: pdfh(data, 描述),\\n            pic_url: pd(data, 图片) + \\\"@Referer=\\\" + 访问头,\\n            url: 'hiker://empty#immersiveTheme##autoCache#',\\n            content: pdfh(data, 详情),\\n\\nextra: {\\n            name: pdfh(data, 标题),\\n            url: pd(data, 链接),\\n            qz: MY_HOME\\n        }\\n        });\\n    });\\n    setResult(d);\\n}\\n\\n\\n\\n\\nfunction 最新(选择器, UA) {\\n    if (UA == \\\"PC\\\") {\\n        var code = fetch(getParam('url').replace(\\\"m.\\\", \\\"www.\\\"));\\n    } else {\\n        var code = request(getParam('url').replace(\\\"www.\\\", \\\"m.\\\"));\\n    }\\n    setResult(pdfh(code, 选择器))\\n}\\n\\n\\n\\neval(JSON.parse(request(\\\"hiker://page/qs?rule=聚漫🔮\\\")).rule)\\n\\nfunction 二级(头部列表, 标题, 图片, 描述, 访问头, 作者, 时间, 分类, 简介, 多路线否, 路线列表, 路线名, 选集总列表, 选集列表, 集名, 集url, downloadlazy,当前URL,当前页名,前缀,UA,防重载否) {\\n    var d = [];\\n\\n//头部列表  则默认使用 code 来作为头部列表数据\\n//多路线否  true 则使用多路线；false 则使用章路线\\n//UA  不填则使用手机端  'PC'则手机端\\n\\nif (当前页名) {\\n    setPageTitle(当前页名)\\n}\\n\\nif(防重载否){\\n//网页内容+防止重拉\\n    var code = 添加防止网页(当前URL, UA)\\n}else{\\n    var code = getCode()\\n}\\n    \\n\\n    //头部列表数据\\n    var 头部 = !头部列表 ? code : pdfa(code, 头部列表)[0];\\n    标题 = pdfh(头部, 标题)\\n    图片 = pdfh(头部, 图片)||图片\\n    if (图片) {\\n        图片 = 图片.includes('http') ? 图片 : 前缀 + 图片\\n        if (!访问头) {} else if (访问头.substr(0, 1) == '@') {\\n            图片 = 图片 + 访问头\\n        } else {\\n            图片 = 图片 + \\\"@Referer=\\\" + 访问头\\n        }\\n    }\\n    \\n\\n描述 = 描述.includes('$') ? 描述.split('$')[1] + pdfh(头部, 描述.split('$')[0]) : pdfh(头部, 描述)\\n\\n作者 = 作者.includes('$') ? 作者.split('$')[1] + pdfh(头部, 作者.split('$')[0]) : pdfh(头部, 作者)\\n    \\n时间 = 时间.includes('$') ? 时间.split('$')[1] + pdfh(头部, 时间.split('$')[0]) : pdfh(头部, 时间)\\n\\n分类 = 分类.includes('$') ? 分类.split('$')[1] + pdfh(头部, 分类.split('$')[0]) : pdfh(头部, 分类)\\n\\n    \\n    //头部列表\\n    添加头部列表(d, 标题, 图片, 描述, 作者, 时间, 分类,当前URL)\\n    \\n    //路线名与选集数据\\n    var 章节json = 优化路线章节数据(多路线否, code, 路线列表,路线名,选集总列表,选集列表,集名,集url,前缀,当前页名,图片)\\n\\n    //简介\\n    添加简介(d, pdfh(code, 简介), 当前URL, '')\\n\\n   //当没有章节内容，就不显示\\n    if (章节json.length > 0) {\\n\\n        //路线选择\\n        var 选择列表 = 添加选择路线(d, 章节json, 当前URL, 多路线否)\\n\\n        //选择下载\\n        添加选择下载(d, 章节json,多路线否)\\n\\n        //排序与选集\\n        添加列表章节(d, 章节json[选择列表].title, 章节json[选择列表].list, lazy, 当前URL, '')\\n\\n        d.push({\\n            col_type: \\\"long_text\\\"\\n        });\\n    }\\n    setResult(d)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级列表*\",\"path\":\"ejlb\",\"rule\":\"var tabs = []\\nvar lists = []\\nvar arts = pdfa(html, 线路);\\narts.forEach((data, id) => {\\n    tabs.push(pdfh(data, 线路名))\\n})\\nvar conts = pdfa(html, 选集);\\nconts.forEach((data, id) => {\\n    lists.push(pdfa(data, 选集列表))\\n})\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"lists\\\");\\n}));\\nstorage0.putMyVar(\\\"lists\\\", lists);\\nvar list = lists[getMyVar(MY_URL, '0')];\\nvar 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\nvar 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\nvar 排序名 = '““””<b><span style=\\\"color:排序</span></b>'\\n\\nd.push({\\n    title: '““””<b><span style=\\\"color: ' + 排序 + '</span></b>',\\n    url: $(\\\"#noLoading#\\\").lazyRule((排序名, lazy) => {\\n        var lists = storage0.getMyVar(\\\"lists\\\");\\n        var 章节 = lists[getMyVar(MY_URL, '0')];\\n        var 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\n        var 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\n        updateItem({\\n            extra: {\\n                id: MY_URL + \\\"_排序\\\"\\n            },\\n            title: 排序名.replace('排序', 提示)\\n        })\\n        if (排序 == '#1aad19\\\">正序') {\\n            章节.reverse()\\n        }\\n        let cp = 章节.map((data, ssid) => {\\n            return {\\n                title: pdfh(data, 'a&&Text'),\\n                url: pd(data, 'a&&href') + lazy,\\n                col_type: 'text_2',\\n                extra: {\\n                    cls: MY_URL + \\\"_选集\\\"\\n                }\\n            };\\n        });\\n        deleteItemByCls(MY_URL + \\\"_选集\\\");\\n        addItemBefore(MY_URL + \\\"footer\\\", cp);\\n        putMyVar(MY_URL + \\\"章节排序\\\", 提示)\\n        return \\\"hiker://empty\\\"\\n    }, 排序名, lazy),\\n    col_type: 'text_center_1',\\n    extra: {\\n        id: MY_URL + \\\"_排序\\\"\\n    }\\n})\\ntabs.forEach((data, id) => {\\n    d.push({\\n        title: getMyVar(MY_URL, '0') == id ? '““' + data + '””' : data,\\n        url: $(\\\"#noLoading#\\\").lazyRule((线路, lazy, id) => {\\n            var lists = storage0.getMyVar(\\\"lists\\\");\\n            var 排序 = getMyVar(MY_URL + \\\"章节排序\\\", '#1aad19\\\">正序');\\n            var 提示 = 排序 == '#FF0000\\\">倒序' ? '#1aad19\\\">正序' : '#FF0000\\\">倒序';\\n\\n            线路.forEach((data, xlid) => {\\n                updateItem({\\n                    title: id == xlid ? '““' + data + '””' : data,\\n                    extra: {\\n                        id: MY_URL + \\\"_线路\\\" + xlid\\n                    }\\n                });\\n            })\\n            putMyVar(MY_URL, id)\\n            var 章节 = lists[getMyVar(MY_URL, '0')];\\n            if (排序 == '#FF0000\\\">倒序') {\\n                章节.reverse()\\n            }\\n            let cp = 章节.map((data, ssid) => {\\n                return {\\n                    title: pdfh(data, 'a&&Text'),\\n                    url: pd(data, 'a&&href') + lazy,\\n                    col_type: 'text_2',\\n                    extra: {\\n                        cls: MY_URL + \\\"_选集\\\"\\n                    }\\n                };\\n            });\\n            deleteItemByCls(MY_URL + \\\"_选集\\\");\\n            addItemBefore(MY_URL + \\\"footer\\\", cp);\\n            return \\\"hiker://empty\\\"\\n        }, tabs, lazy, id),\\n        col_type: 'text_center_1',\\n        extra: {\\n            id: MY_URL + \\\"_线路\\\" + id\\n        }\\n    });\\n})\\n\\nif (排序 == '#FF0000\\\">倒序') {\\n    list.reverse()\\n}\\nlist.forEach((data, id) => {\\n    d.push({\\n        title: pdfh(data, 'a&&Text'),\\n        url: pd(data, 'a&&href') + lazy,\\n        col_type: 'text_2',\\n        extra: {\\n            cls: MY_URL + \\\"_选集\\\"\\n        }\\n    });\\n})\\nlet newstip = list.length;\\nif (newstip) {\\n    setLastChapterRule('js:' + $.toString((newstip) => {\\n        setResult('更新至: 第' + newstip + \\\"集\\\");\\n    }, newstip));\\n}\\n\\nd.push({\\n    col_type: \\\"big_blank_block\\\",\\n    extra: {\\n        id: MY_URL + \\\"footer\\\"\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n//@菜团 环境劫持劫持哪里加个这个-L佬\\nrequest = function(param0, param1, param2) {\\n    if (param0.includes(\\\"hiker://page/\\\")) {\\n        let rule = (param0.split(/\\\\?.*rule=/)[1] || \\\"\\\").split(\\\"&\\\")[0];\\n        let pageUrl = param0.split(\\\"hiker://page/\\\")[1].split(\\\"?\\\")[0];\\n        if (rule !== QING_TITLE) {\\n            let ruleCode;\\n            if (!rule || rule === RULE.title) {\\n                ruleCode = (RULE.pageList || (RULE.pageList = JSON.parse(RULE.pages))).find(v => v.path === pageUrl);\\n            }\\n            if(ruleCode){\\n                return JSON.stringify(ruleCode);\\n            }else{\\n                return \\\"\\\";\\n            }\\n        }\\n    }\\n    param2 = MY_RULE;\\n    var retStr = method_request.invoke(javaContext, param0, param1, param2);\\n    try {\\n        if (retStr instanceof java.io.InputStream) {\\n            return retStr;\\n        }\\n    } catch (e) {}\\n    return retStr == null ? retStr : retStr + \\\"\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"漫画解析*\",\"path\":\"js\",\"rule\":\"function 爱米推类(input) {\\n\\ttry{\\n        var url = input\\n        .replace('m.'||'mh.'||'wap.', 'www.')\\n        .replace('ikr.', 'icekr.');\\n        var html = request(url, {\\n    headers: {\\n        'User-Agent': PC_UA,\\n        'Referer': url\\n    }\\n})\\n    eval(pdfh(pdfa(html, 'body&&script:not([src]):not([type])')[0], 'script&&Html'));\\n    var pics = [];\\n    if (chapterImages.length > 0) {\\n        var host = request(input).match(/img src=\\\"(.*?)\\\\/image/)[1];\\n        chapterImages.forEach(img => {\\n            if (img.indexOf(\\\"http\\\") > -1) {\\n            pics.push(img + '@Referer=' + url)\\n            } else {\\n            pics.push(host + img + '@Referer=' + url)\\n            }\\n        })\\n    } else {\\n        var html = request(input);\\n        var pics = [];\\n        if(/k_total/.test(html)){\\n            var Page = pdfh(html, '#k_total&&Text');\\n            if(Page.length > 0){\\n                var host = html.match(/mip-img src=\\\"(.*?)image/)[1];\\n            for (var i = 0; i < Page; i++) {\\n        pics.push(host + 'image/view/' + input.match(/\\\\d+/)[0] + '/' + i + '.webp'+ '@Referer=')\\n            }\\n    } else {\\n        var res1 = {};\\n        var d1 = [];\\n        var jsHtml = fetch(input, {\\n            headers: {\\n                \\\"content-type\\\": \\\"UTF-8\\\",\\n                \\\"User-Agent\\\": \\\"Mobile\\\"\\n            },\\n            method: \\\"GET\\\"\\n        });\\n        var pics = [];\\n        for (var k = 1;; k++) {\\n            try {\\n                var jsHtml = fetch(input.split(\\\".html\\\")[0] + \\\"-\\\" + k + \\\".html\\\", {\\n                    headers: {\\n                        \\\"content-type\\\": \\\"UTF-8\\\",\\n                        \\\"User-Agent\\\": \\\"Mobile\\\"\\n                    },\\n                    method: \\\"GET\\\"\\n                });\\n                let page = pdfh(jsHtml, \\\"\\\");\\n                if (page && page.includes(\\\"/\\\")) {\\n                    page = parseInt(page.split(\\\"/\\\")[1]);\\n                    var jsUrl = parseDomForHtml(jsHtml, \\\".erPag&&mip-img||img&&src\\\")+ '@Referer=';\\n                    if (jsUrl.indexOf(\\\"png\\\") > -1) {\\n                        break\\n                    }\\n                    let urls = [];\\n                    for (let i = 2; i <= page; i++) {\\n                        urls.push({\\n                            url: input.split(\\\".html\\\")[0] + \\\"-\\\" + i + \\\".html\\\",\\n                            options: {\\n                                headers: {\\n                                    \\\"content-type\\\": \\\"UTF-8\\\",\\n                                    \\\"User-Agent\\\": \\\"Mobile\\\"\\n                                },\\n                                method: \\\"GET\\\"\\n                            }\\n                        })\\n                    }\\n                    let htmls = bf(urls);\\n                    for (let i = 0; i < htmls.length; i++) {\\n                        var jsUrl = parseDomForHtml(htmls[i], \\\".erPag&&mip-img||img&&src\\\")+ '@Referer=';\\n                        if (jsUrl.indexOf(\\\"png\\\") > -1) {\\n                            break\\n                        }\\n                    }\\n                    pics.push(jsUrl);\\n                }\\n                var jsUrl = parseDomForHtml(jsHtml, \\\".erPag&&mip-img||img&&src\\\")+ '@Referer=';\\n                if (jsUrl.indexOf(\\\"png\\\") > -1) {\\n                    break\\n                } else {\\n                    pics.push(jsUrl);\\n                }\\n            } catch (e) {\\n                break\\n            }\\n        }\\n    }\\n        } else {\\n            var list = pdfa(html, 'body&&.scroll-item||.image-content||#scroll-image');\\n        var first = pdfa(html, 'body&&#image');\\n        list = first.concat(list);\\n        list.forEach(img => {\\n            pics.push(pdfh(img, 'img&&data-src||src') + '@Referer=' + input)\\n        })\\n        }\\n    }\\n    } catch(e) {\\n        var html = request(input);\\n        var pics = [];\\n        var list = pdfa(html, 'body&&.scroll-item||.image-content||#scroll-image');\\n        var first = pdfa(html, 'body&&#image');\\n        list = first.concat(list);\\n        list.forEach(img => {\\n            pics.push(pdfh(img, 'img&&data-src||src') + '@Referer=' + input)\\n        })\\n    }\\n    return \\\"pics://\\\" + pics.join(\\\"&&\\\")\\n}\\n$.exports.jx=爱米推类;\\n\\nfunction 包子(input) {\\n    var id = true;\\n    var code = request(input)\\n    var pics = [];\\n    var to_Repeat = false;\\n\\n\\n    while (id) {\\n        pdfa(code, \\\".chapter-main&&amp-img\\\")\\n            .forEach(data => pics.push(pdfh(data, \\\"amp-img&&src\\\") + '@Referer=https://www.webmota.com/'));\\n        var next_Page = pdfh(code, \\\".next_chapter,-1&&Html\\\")\\n        if (next_Page.includes('下一页')) {\\n            code = request(pdfh(next_Page, \\\"a&&href\\\"))\\n            to_Repeat = true;\\n        } else {\\n            id = false;\\n        }\\n    }\\n\\n    //去除重复图片\\n    if (to_Repeat) {\\n        for (let i = 0; i < pics.length; i++) {\\n            while (pics.indexOf(pics[i], i + 1) != -1) {\\n                pics.splice(pics.indexOf(pics[i], i + 1), 1)\\n            }\\n        }\\n    }\\n\\n    return \\\"pics://\\\" + pics.join(\\\"&&\\\");\\n}\\n$.exports.bz=包子;\\n\\nfunction 古风(input) {\\n\\tvar html = fetchPC(input);\\n\\teval(pdfh(pdfa(html, 'body&&script:not([src]):not([type])')[0], 'script&&Html'));\\n\\tvar pics = [];\\n\\tfor (var i in chapterImages) {\\n\\t\\tpics.push('https://res.xiaoqinre.com/' + chapterPath + chapterImages[i] + '@Referer=https://www.123gf.com')\\n\\t\\t}\\n\\treturn \\\"pics://\\\" + pics.join(\\\"&&\\\")\\n}\\n$.exports.GF=古风;\\n\\nfunction 爱米(input) {\\n        var html = request(input);\\n        var pics = [];\\n        var list = pdfa(html, 'body&&.scroll-item||.image-content||#scroll-image');\\n        var first = pdfa(html, 'body&&#image');\\n        list = first.concat(list);\\n        list.forEach(img => {\\n            pics.push(pdfh(img, 'img&&data-src||src') + '@Referer=' + input)\\n        })\\n        return \\\"pics://\\\" + pics.join(\\\"&&\\\")\\n}\\n$.exports.IM=爱米;\"},{\"col_type\":\"movie_3\",\"name\":\"云口令*\",\"path\":\"import\",\"rule\":\"writeFile('hiker://files//rules/Tz/JM',fetch(input))\\n'toast://已从云口令获取聚漫🔮源'\"},{\"col_type\":\"movie_3\",\"name\":\"更新详情*\",\"path\":\"Up\",\"rule\":\"js:\\nvar res = {};\\nvar items = [];\\nvar img = 'https://bing.img.run/1366x768.php';\\nitems.push({\\n    img: img,\\n    url: img + \\\"#.jpg\\\",\\n    desc: '0',\\n    col_type: 'card_pic_1'\\n});\\n\\nitems.push({\\n    title: \\\"““””<h4>【聚漫🔮反馈收集】</h4>\\\" + '<span style=\\\"color: grey\\\">团子</span>',\\n    col_type: \\\"text_center_1\\\",\\n    url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#?rule=道长仓库Pro\\\",\\n    extra: {\\n        lver: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\",\\n        id: \\\"2847\\\"\\n    }\\n});\\n\\nif (getItem(\\\"read_policy\\\") !== \\\"1\\\") {\\n    items.push({\\n        title: '““””<small><font color=#871f78>本规则数据来源于网络，如您喜欢，请支持官方</font></small>',\\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\\n        url: $('#noHistory#').lazyRule(() => {\\n            setItem(\\\"read_policy\\\", \\\"1\\\")\\n            refreshPage(false)\\n            return \\\"toast://你已同意该协议\\\"\\n        }),\\n        col_type: 'text_center_1'\\n    })\\n}\\n\\nitems.push({\\n    title: '““””<b>使用说明</b>',\\n    url: \\\"hiker://page/Help#noHistory##noRecordHistory#\\\",\\n    col_type: \\\"text_2\\\"\\n});\\n\\nlet newVersion;\\nlet myVersion = MY_PARAMS.version;\\ntry {\\n    newVersion = JSON.parse(fetchPC(\\\"http://hiker.nokia.press/hikerule/dev/getbyid?id=2847\\\", {\\n        timeout: 1000\\n    })).result.ver;\\n} catch (e) {\\n    toast(\\\"道长仓库抽风了，本次未检测到新版信息\\\");\\n    newVersion = myVersion;\\n}\\nlet isUpdate = Number(newVersion) > Number(myVersion);\\nlet isVer = Number(newVersion) === Number(myVersion);\\nif (isUpdate) {\\n    log('有新版本:' + newVersion + ',当前:' + myVersion);\\n}\\nitems.push({\\n    title: isUpdate ? \\\"🆙新版本\\\" : \\\"规则发布页&反馈\\\",\\n    url: isUpdate ? \\\"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ6IGa5ryr8J+UruOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD0yODQ3\\\" : \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#?rule=道长仓库Pro\\\",\\n    col_type: \\\"text_2\\\",\\n    extra: {\\n        lver: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\",\\n        id: \\\"2847\\\"\\n    }\\n});\\nconst Color = \\\"#19B89D\\\";\\nvar des_desc = '<h1 style=\\\"text-align: center;\\\">🐾更新[230211]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①剔除无用源，修复部分失效源</br><br>②尝试优化页面加载速度（感谢L佬），拉远程，与旧规则不兼容，更新海阔至7.30</br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1230]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①剔除无用源，拉远程，更新海阔至7.27</br><br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1218]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①优化下载模式，需更新最新版本地资源管理，拉远程，更新海阔至7.26</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1126]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①增加APP图源：拉远程，更新海阔至7.23</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1116]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①增加三图源PS：拉远程，更新海阔至7.22</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1113]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复包子部分漫画章节列表定位错误PS：拉远程</br>②修复部分bug<br></<blockquote>' +\\n\\n'<h1 style=\\\"text-align: center;\\\">🐾更新[1108]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫🔮本地修复子页面动态分类bug，修复部分源（多多，CC）</br><br></<blockquote>' +\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[1102]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换聚漫🔮本体，更换部分样式，修复部分源。可直接订阅仓库链接更新（PS：随缘更）</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[1005]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换聚漫🔮本体，加入最新版缓存机制实现二次打开秒开，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0926]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更换远程仓库，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0816]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫🔮本体，修复部分源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0809]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①删除失效源</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0717]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①增加动态切换排序，PS：漫画吧<br>②搬模板Q动态分类&动态排序至聚漫🔮｜PS：需更新聚漫🔮</br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0526]</h1><<blockquote><font color=\\\"red\\\">①修复包子选集错误&解析错误<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0527]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①新增若干图源<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0529]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①美化部分图源<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0530]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新聚漫🔮模板<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0602]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复&美化好漫8<br>②美化八极｜PS：需清理缓存</br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0606]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①更新包子，尝试解决收藏问题，PS：需更新聚漫🔮<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0608]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①修复鬼萝莉搜索<br><br></<blockquote>' +\\n\\n    '<h1 style=\\\"text-align: center;\\\">🐾更新[0616]</h1>' +\\n    '<<blockquote><font color=\\\"red\\\">①美化部分图源，PS：需清理缓存<br><br></<blockquote>'\\n\\nitems.push({\\n    title: '更新详情 <small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>',\\n    img: \\\"https://lanmeiguojiang.com/tubiao/more/197.png\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((jjid, decid, des_desc) => {\\n        if (getMyVar(\\\"jjs\\\", \\\"收起\\\") == \\\"收起\\\") {\\n            putMyVar(\\\"jjs\\\", \\\"展开\\\");\\n\\n            updateItem({\\n                extra: {\\n                    id: jjid\\n                },\\n                title: '更新详情 <small><small><span style=\\\"color:#19B89D\\\">收起></span></small></small>'\\n            })\\n\\n            updateItem({\\n                extra: {\\n                    textSize: 14,\\n                    lineSpacing: 3,\\n                    id: decid\\n                },\\n                title: '<span style=\\\"color:#808080\\\">' + des_desc + '</span>'\\n            })\\n            return \\\"hiker://empty\\\"\\n        } else {\\n            putMyVar(\\\"jjs\\\", \\\"收起\\\");\\n\\n            updateItem({\\n                extra: {\\n                    id: jjid\\n                },\\n                title: '更新详情<small><small><span style=\\\"color:#19B89D\\\">展开></span></small></small>'\\n            })\\n\\n            updateItem({\\n                extra: {\\n                    textSize: 14,\\n                    lineSpacing: 3,\\n                    id: decid\\n                },\\n                title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 150)\\n            })\\n            return \\\"hiker://empty\\\"\\n        }\\n\\n    }, MY_RULE + \\\"_jjid\\\", MY_RULE + \\\"_decid\\\", des_desc),\\n    col_type: \\\"avatar\\\",\\n    extra: {\\n        id: MY_RULE + \\\"_jjid\\\"\\n    }\\n});\\n\\nitems.push({\\n    title: '<span style=\\\"color:#808080\\\">' + des_desc.substr(0, 150),\\n    col_type: \\\"rich_text\\\",\\n    extra: {\\n        textSize: 14,\\n        lineSpacing: 3,\\n        id: MY_RULE + \\\"_decid\\\"\\n    }\\n});\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"使用帮助*\",\"path\":\"Help\",\"rule\":\"js:\\nvar res = {};\\nvar items = [];\\n\\nitems.push({\\n    title:'二级页面标题双击优化，在顶部则双击到底部，否则双击回顶部',\\n    col_type: 'rich_text'\\n});\\n\\nitems.push({\\n    img: 'https://s1.ax1x.com/2022/11/04/xLhgoR.jpg',\\n    desc: '0',\\n    col_type: 'pic_1_full'\\n});\\n\\nitems.push({\\n    img: 'https://s1.ax1x.com/2022/11/04/xLhcw9.jpg',\\n    desc: '0',\\n    col_type: 'pic_1_full'\\n});\\n\\nres.data = items;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索*\",\"path\":\"search\",\"rule\":\"function convert1(str) {\\n    let c = str.split(\\\";\\\")\\n    return {\\n        列表: c[0],\\n        标题: c[1],\\n        链接: c[2],\\n        描述: c[3],\\n        详情: c[4],\\n        图片: c[5]\\n    }\\n}\\n\\nfunction merge(source, target) {\\n    let keys = Object.keys(source)\\n    for (let i in keys) {\\n        target[keys[i]] = source[keys[i]]\\n    }\\n}\\n\\nfunction 搜索(obj) {\\n    var d = [];\\n    if ($.type(obj) == \\\"string\\\") {\\n        obj = convert1(obj)\\n    }\\n    if (obj.规则) {\\n        let c = convert1(obj.规则)\\n        merge(c, obj)\\n    }\\n    let arr = pdfa(getResCode(), obj.列表);\\n       if (obj.列表处理 != null) {\\n            arr = obj.链接处理(arr)\\n        }\\n    for (let it of arr) {\\n        let url = pd(it, obj.链接)\\n        if (obj.链接处理 != null) {\\n            url = obj.链接处理(url)\\n        }\\n        let title = pdfh(it, obj.标题)\\n        if (obj.标题处理 != null) {\\n            title = obj.标题处理(title)\\n        }\\n        let pic = pd(it, obj.图片)\\n        if (obj.图片处理 != null) {\\n            pic = obj.图片处理(pic)\\n        }\\n        d.push({\\n            title: obj.标题 ? pdfh(it, obj.标题) : \\\"\\\",\\n            url: url+'#autoCache#',\\n            col_type: \\\"\\\",\\n            desc: obj.描述 ? pdfh(it, obj.描述) : \\\"\\\",\\n            content: obj.详情 ? pdfh(it, obj.详情) : \\\"\\\",\\n            pic_url: pic,\\n            extra: {\\n                ytitle: title,\\n                ypic: pic,\\n                yurl: url.replace('hiker://empty##','')\\n            }\\n        });\\n\\n    }\\n    setResult(d);\\n}\\nvar tool = {\\n    搜索: 搜索\\n}\\n$.exports = tool\"},{\"col_type\":\"movie_3\",\"name\":\"图片解密*\",\"path\":\"imgDES\",\"rule\":\"$.exports.imgDecrypt = function() {\\n    var javaImport = new JavaImporter();\\n    javaImport.importPackage(\\n        Packages.com.example.hikerview.utils,\\n        Packages.java.lang,\\n        Packages.java.security,\\n        Packages.java.util,\\n        Packages.java.io,\\n        Packages.java.text,\\n        Packages.javax.crypto,\\n        Packages.javax.crypto.spec\\n    );\\n    with(javaImport) {\\n        let bytes = FileUtil.toBytes(input);\\n        function decryptData(bArr) {\\n            var generateSecret = SecretKeyFactory.getInstance(\\\"desede\\\").generateSecret(new DESedeKeySpec(String('OW84U8Eerdb99rtsTXWSILDO').getBytes()));\\n            var cipher = Cipher.getInstance(\\\"desede/CBC/PKCS5Padding\\\");\\n            cipher.init(2, generateSecret, new IvParameterSpec(String('SK8bncVu').getBytes()));\\n            return cipher.doFinal(bArr);\\n        }\\n        //decryptData为解密方法\\n        bytes = decryptData(bytes);\\n        return FileUtil.toInputStream(bytes);\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"DES*\",\"path\":\"des\",\"rule\":\"var javaImport = new JavaImporter();\\njavaImport.importPackage(\\n    Packages.java.lang,\\n    Packages.java.security,\\n    Packages.java.util,\\n    Packages.java.io,\\n    Packages.java.text,\\n    Packages.javax.crypto,\\n    Packages.javax.crypto.spec\\n);\\nwith(javaImport) {\\n   function De(str) {\\n        var generateSecret = SecretKeyFactory.getInstance(\\\"desede\\\").generateSecret(new DESedeKeySpec(String('OW84U8Eerdb99rtsTXWSILDO').getBytes()));\\n        var instance = Cipher.getInstance(\\\"desede/CBC/PKCS5Padding\\\");\\n        instance.init(2, generateSecret, new IvParameterSpec(String('SK8bncVu').getBytes()));\\n        return String(instance.doFinal(_base64.decode(str, 2)));        \\n    }\\n}\\n\\n/*\\neval(getCryptoJS())\\nvar key = CryptoJS.enc.Utf8.parse('OW84U8Eerdb99rtsTXWSILDO')\\nvar iv = CryptoJS.enc.Utf8.parse('SK8bncVu')\\n\\nfunction De(data, encoding) {\\n    var decrypted = CryptoJS.TripleDES.decrypt(data, key, {\\n        iv: iv,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    });\\n    if (!encoding) {\\n        return decrypted.toString(CryptoJS.enc.Utf8);\\n    }\\n    return decrypted.toString(CryptoJS.enc.Base64);\\n};\\n*/\"},{\"col_type\":\"movie_3\",\"name\":\"漫蛙*\",\"path\":\"image\",\"rule\":\"js:\\nconst SoftReference = java.lang.ref.SoftReference;\\nconst Cipher = Cipher = javax.crypto.Cipher;\\nconst IvParameterSpec = javax.crypto.spec.IvParameterSpec;\\nconst SecretKeySpec = javax.crypto.spec.SecretKeySpec;\\nconst KEY = new java.lang.String(\\\"my2ecret782ecret\\\");\\nconst f2319IV = new java.lang.String(\\\"my2ecret782ecret\\\");\\nconst KEY_ALGORITHM = \\\"AES\\\";\\nconst AES_MODE = \\\"AES/CBC/PKCS7Padding\\\";\\n\\nfunction decryptData(file2Bytes) {\\n    try {\\n        let secretKeySpec = new SecretKeySpec(KEY.getBytes(), KEY_ALGORITHM);\\n        let ivParameterSpec = new IvParameterSpec(f2319IV.getBytes());\\n        let cipher = Cipher.getInstance(AES_MODE);\\n        cipher.init(2, secretKeySpec, ivParameterSpec);\\n        return cipher.doFinal(file2Bytes);\\n        return new SoftReference(cipher.doFinal(file2Bytes)).get();\\n    } catch (e) {\\n        //e.printStackTrace();\\n        log(e.toString());\\n        return null;\\n    }\\n}\\n\\n$.exports.imageDecrypt = function() {\\n    let javaImport = new JavaImporter();\\n    javaImport.importPackage(\\n        Packages.com.example.hikerview.utils\\n    );\\n    with(javaImport) {\\n        let bytes = FileUtil.toBytes(input);\\n        bytes = decryptData(bytes);\\n        return FileUtil.toInputStream(bytes);\\n    }\\n}\\n\"}]","proxy":"","icon":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMAAAADACAYAAABS3GwHAAAACXBIWXMAAAsSAAALEgHS3X78AAANp0lEQVR4nO2de3CU1RXAz7eP7CbksTEEN2CQd1BHidWKjWmNClRHg5nxVeyMY6eopdVi/7CdsdXRqX90xnaqIz6mIKRDMdqSEYmOFWm72mC17YzgoxXloVIIBGICkmST3WQ7J34ry5oN+95z7jm/mZ1dNMme7/H77rn3nu9+ViQSAUWRikOPvCIZFUARjQqgiEYFUESjAiiiUQEU0agAimhUAEU0KoAiGhVAEY0KoIhGBVBEowIoolEBFNGoAIpoVABFNCqAIhoVQBGNCqCIRgVQRKMCKKJRARTRqACKaFQARTQqgCIaFUARjQqgiMYlfQfkksefW7OkzhV5rDY0eqZ/IFxUFIpYxYcnXot1sNqCYbcVOVjiGt7ndnyyM2zd9aOblm/hvi+ooovjZpmt7at31gVHZvl7wy53X3b2bchnwcFKV3in17ln0XW31RHaXPaoAFmgbeOaZ64YCN00pSvsgFCOv8wN0F3jGv1Lifu5ZdcvvzkvG2gwKkAGvLFxddfXDw75s3WlTxVsGf7l9xxsuP62moIEYAAqQIpgXr8oMrJ5btewx9FPI6bRSQAf1RQNbbWcS7W/kBoqQArgFf/ifUE/lRM/HhThzVqvtggpoAIkweb2NX+/qivYWKhUJ1UwNXq5xtu59Lrl32QRcAFRASYA052l4fBLtXtDLIeL9810hze7XFdrWpQYFSABeNW/5tPBRqrpTrJgWvTi9GJtDRKgAozDvg1Phbhe9ROBrUHtd3/gphld4VABYsCU5/bDwVe45Pqpgn2D31V7v60p0QlUABuczFq2e3BZzieyCo0boG12cZtOon2BCmCXLyzaFZxn/MkfxQ2wdY73Qy2rUAHGxvYbPgj6CYSSd96Yr3MGosuhJZ/8CG477gMCoRQMsQJIP/mjSJdApAB68p+MZAnECaAn//hIlUCUAL/587onLvIM+WGmBeAjEBAxGnYH/TgcLGmbxYwC3f/KuhX3zh54whv/P3oBoD8C0AcA3REALH1gXv6QEW6A1lnF9916w/KHGG9F0ogQ4KcvrmtYWTe0bZo1kvwvoQy9tgx99mch8wSSZoxF3BR/7azRQEonPzLFApgS/Yf1xVu/3Vp025977ZbDMLAU5Iby0MsA4DRv607G+BbgmX+3HrjZ15/byR5D06jt8zzH6m+8vYJAKDnDaAF+ubX10ftm9P+4YAEYkEa1zTe7bshoAfZ/9FQk5dQn1zBLo7A/4L7zTotAKDnBWAFefWftwOKSwWICoSQH4TTK5HsJjBTg4ddan79nWn8LgVAyh0gaZWoqZKQAJFOfbFKANMrUVMg4ATa9va6vpWzA6JGLhOQ4jdo5p2io7jt3fGUukTNGCZBwtlc62UqjDJwlNkqAbf95eviSoqDe+J0MaaZR3dNdo1NuWWHMBJkxAhjV8S0kSaRRm88yZ5kVY0ohWmqGriUQBn8q8WUBnAEnSkDg5DTqW+HhRlM214hyaLz6z3WEjZ2sIQHWRtVZAF+zwHdBZGyfm7BZRqRAvbueiFSCrm6RT3rBgso5P2R/0WHfAjz9VusHevLnH9znuO+5bwd7Aa48LSh+bZtCYcK+Zy0A5qFGz/gSB/c9974AawEuOT28lEAYouE++sZWgMXtz/zsr0UhxyqHA7ZYFhwiEJNEcPQN77vguuls5wH8ta6f4zvO1/zTssZeuNDDvEgEFkQicHrhQxTD5VNHVgDASo7by7IFuHzD+nPrJveUxf/3qAyrHQ7AlgE/Hy1MiKLA8hNceIDjNrNsASr8ng0Axyf8GZQBUyN8YWuArUJdJAIyy0RzT73f2ggAU7nFzVKAObWD56by84dUhpxzlW+A5SrT7FKgK19oW1XhGkj796MyPOZwwJ8sC96xLBjKaoQywYkxjkOi7FqA6hrnLdn6WzstC3biB8saaxFwVgffPdn6AmE0VI9czW2LWQmAnd+GhcNf6fxmA5Uhcy5geC8GqxSodHLRKq9jOOffgzJsttOkDsuCDy0tNE0Gr12bRT/SE7BqASZXw8J8fl8QAHZYFuzAgxvTMszT56ol5IKK0FyioY0LmxYA059Zvs8KlpFEZfijZcGvtWVISL1r2MFpToBNC4DpD4EwxohtGXyWpbPPcdRVW2sBYD6poBLARoB8pz/JoqUYX4VTGsRGgEKmP8kyngwLBU64YRpEIIykYBHo1S89204gjJSIyoAjSasF1iWt2tb6DwJhnBIWLcBp1Y7FBMJIG4mlGHVlowsIhHFKWAjg9w3mZPKrEIwnwwIDJ9wuLAmyWJmbfAq06Lk/XJ9J7Q9lojI8bGBdEtYG4VKVBEKZEPItQNnkovsJhJFzTCzFmF9l3QcATxIIJSHkBaisjMwjEEZeGU+G8xjOPp9dGiI/GkxegKnlx0XXo0Vl2MKwFGM+g+FQ0gFi/p+P4jcOcCzF8NpL1hMIJSGkW4ASn/suAmGQY7wivYuIzj6f6bNWUu4HkBZgUql1FoEwSPOlDERLMaYXj04nEEZCSAtQUTZSSSAMNlCsS5rhDZF+YA9pAc4o7TPm+QX5Jl6G82wZ8j37TH3ZerKdYOwAEwjDCFCG1wtYl0S5I0xWAJfX2UQgDOOIXRUjXzKUea0lVPcj2RSjzOe8hkAYRhNfl7TQLtLL9sTL3PLIZVT3o+bYyhgoAy4EIG1VDLICVFWOTCMQhkiyXZd0zqThcqr7UVsAZUJiZVhg4KoYZAWYXDKgchIj3SViagkPhZI9ybQGiC6prpdEeSZMr7JKRsTLcB6zVTFIzgNc/vSaKwmEoaRIMO4BJbGPrrrj2fUkJzZJtgBOj/MbACECkSjpEl+K8WnIWw8AG6ntUPbPCVbogzLsHXD1UwxUBVBEowIoolEBFNGoAIpoVABFNCQFGB0Z3U8gDCWbhEcPUNyfVoRoYdNDe57U5xAZxC9mrSBZD6QpkCIasgIER4sIRKFkA8rHkqwARwZKwgTCULIA5WOpKZAiGrLl0O1v1W47cu6yS33Oz6HS+Xnaf8fnOJbR7/tdPVDsSH/V/hlukoMfeaWn10l2VI+sAFY41IvvfSNlY6/0mVrgLUkfrzUENe6etH8/U/kzvfj4XUfAaw1DOAzH0v4jOYasAK7B468BQAuBUApGMOKBvcOZCExD/podHWvhCgKBjAPZeQDEehN0LsAAIhcD2XuCSXeCiw/vHyQQhpIB1I8haQE8fd3ag2QO9WNIW4CjRwIEwlAygPoxJC2Au/9oK4EwlAygfgxJd4IRz5ae0HB5lS7fwpCiYz3hoSVVbsqRk58JLv3frvcIhKGkAYdjR14Ab0/XrwiEoaQBh2NHPgUCTYNYwiH9AS7FcJoG8YPLMWMhQMnhffq8YGZwOWYsUiCkrH137/Fps30EQlFOQen+3X2fXzebxSNu2dwPMKlrTzuBMJQk4HSs2LQAoJ1hFnDp/EZhdUdYxe53XiQQhjIB3I4RKwE8vYfvdg4NaIk0UfDY4DHiFDMrAfbde+Mnk9/dtpZAKMo44LHBY8Rp37DqA0TRvgAtJnXthZKDHx/vXnFZJveuFgSWJ1HVe2/c09XQ/FsCoYiiYs974Ok9BJ7ebqjY8y547c82zbCC7APhE8KyBUAq2t7vOjbzHD+BUIzCGeyH0gN7cShz7OSedGBP/Ik+Hi90BjpY3r/NNo0o//S/N/RPnfn6iKeE7P2mlMET2tvbDeUxV3I86V2DKT/J6CgAsOr4xsK2BUCmPPm35w+ff5nolSNOBebn0St59ATH9CWLfK8z0MH2xiXWAoCmQl8Sm5/jie61T/ocwzb1icJ+JKV87/sXB6v8uySMCsXm5077Sp5Efp4rcLjz1kJ8cTZh3wIg0x7edNOhi5a0mdIfiM3PXcH+k9IXImDe39QZ6NhOJaB0MUIAxL/q1TWHLlz8fQKhJE1sfu6NGV5kAOu8PxZjBADCnWLMz50xV/I85ee54iedgY5HuAYfj1ECIJXr397VN/f82fn+3mh+PsFEkQn8vjPQwT7vj8U4ASDHEkTz89iJImL5ea4w7uQHUwWALEgw3kQRk/w8Fxh58oPJAiBVa996+7OzF9ZP9DPxE0XM8/Nc8GhnoIPtTO+pMFoAiBkdOkUhlzI+xoz2JMJ4AZDGpuYmANiEAzIEwuEAjvO3dAY6jF+cWMRD8uwDianQDgLhUAf3Ub2Ekx+ktACxNDY14xj2SjoRkcLofH88xAkAJ1IizG3PJBAOBcbqeqRc9WMR+ZzgmJToQQLhFJoHJaU88YhsAWJpbGqeAQCYFl1LJ6q88ALeyNIZ6PhYwLYmRLwAUey06AEAuJRGRDkDHz/7gNQrfjwqQBy2CHcb2CLgFf8RPfFPRgVIgJ0a3W3f9MF1/uCo3dl/RHqqkwgVIAkam5pbbBG4tAp4tW/tDHRsIhALaVSAFGhsasbl2TFFarHfqQyj4jBmwJ7tDnQGOvoIxMQCFSADGpua6+3h1Cb7fUGevhpna7fbJ/12E25NLBQqQJaxO9Ez4l6QxujSa/b7x7Ev7cRmFxVAEY3ImWBFiaICKKJRARTRqACKaFQARTQqgCIaFUARjQqgiEYFUESjAiiiUQEU0agAimhUAEU0KoAiGhVAEY0KoIhGBVBEowIoolEBFNGoAIpoVABFNCqAIhoVQBGNCqCIRgVQRKMCKKJRARS5AMD/Ad7jzb66O/FbAAAAAElFTkSuQmCC"},{"last_chapter_rule":"","title":"书籍","author":"Quan","version":1,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"②③📚书籍","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/7642eebc482b280f987aa51b5b141575.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M978%20792h-76.4l16.6-5c17.6-5.3%2032.2-17.1%2040.9-33.4%208.8-16.2%2010.7-34.9%205.3-52.6L795.6%20139.6c-5.3-17.6-17.2-32.2-33.5-40.9-16.4-8.8-35.1-10.6-52.6-5.3l-101.2%2030.4c-17.6%205.3-32.2%2017.2-40.9%2033.5-1.6%202.9-2.9%205.9-4%209-4.8-33.5-33.6-59.3-68.4-59.3H134.2c-38.1%200-69.1%2031-69.1%2069.1V792h-19c-25.4%200-46%2020.6-46%2046v49.4c0%2025.4%2020.6%2046%2046%2046H978c25.4%200%2046-20.6%2046-46V838c0-25.4-20.6-46-46-46zM608%20179.1c2.9-5.4%207.8-9.4%2013.6-11.2l101.2-30.4c2.2-0.6%204.4-1%206.6-1%203.8%200%207.5%200.9%2010.9%202.8%205.4%202.9%209.4%207.8%2011.2%2013.6l168.8%20561.4c1.8%205.9%201.1%2012.1-1.8%2017.6-2.9%205.4-7.7%209.4-13.6%2011.1l-101.2%2030.4c-5.9%201.7-12.1%201.2-17.6-1.8-5.4-2.9-9.4-7.7-11.2-13.6L606.2%20196.6c-1.7-5.9-1.1-12.1%201.8-17.5z%20m122.9%20592.1c2.3%207.7%205.8%2014.7%2010.3%2020.8H564.1V216.4l166.8%20554.8zM518.1%20176v616H337.6V153H495c12.7%200%2023.1%2010.4%2023.1%2023z%20m-406.9%200c0-12.7%2010.3-23%2023-23h157.4v639H111.2V176z%20m866.7%20711.5H46.1V838H978l-0.1%2049.5z%22%20fill%3D%22%23FC6D41%22%20%2F%3E%3Cpath%20d%3D%22M233.2%20743.1h-72c-12.7%200-23-10.3-23-23s10.3-23%2023-23h72c12.7%200%2023%2010.3%2023%2023%200.1%2012.7-10.2%2023-23%2023z%20m231.2%200h-72c-12.7%200-23-10.3-23-23s10.3-23%2023-23h72c12.7%200%2023%2010.3%2023%2023%200.1%2012.7-10.2%2023-23%2023z%20m339.6%200c-9.5%200-18.4-5.9-21.7-15.4-4.2-12%202.1-25.1%2014.1-29.4l72-25.4c11.8-4.2%2025.1%202%2029.4%2014.1%204.2%2012-2.1%2025.1-14.1%2029.4l-72%2025.4c-2.6%200.9-5.2%201.3-7.7%201.3z%22%20fill%3D%22%23FC6D41%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"西瓜影视","author":"ᝰꫛꫀꪝ藍凋&&sm`回忆","version":4,"type":"video","url":"https://www.osqqq.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.osqqq.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.js:var js = request(input);var url = base64Decode(parseDomForHtml(js, '.fed-play-iframe&&data-play').slice(3));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){var rr=request('https://jiexi.moeamv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];cacheM3u8(rr)}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&ul&&li:not(:contains(永久导航：www.osqq.net(网址发布页))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,0&&Text');\n\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.fed-deta-images&&.fed-list-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-esan&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"TV酷","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.tvkuys.com/vodshow/fyclass--fyarea-fyyear--/by/fysort/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.videoul&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.videoul-title&&Text'),\n     desc:parseDomForHtml(list[j], '.pone&&Text'),\n     pic_url: parseDom(list[j], '.videoul-img&&lay-src')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.videoul&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.videoul-title&&Text'),\n     desc:parseDomForHtml(list[j], '.pone&&Text'),\n     pic_url: parseDom(list[j], '.videoul-img&&lay-src'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.tvkuys.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play-zu-ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play-ji-ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.vod-info-right&&p,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.vod-info-right&&p,0&&Text');\n\nvar 演员 = parseDomForHtml(html, '.vod-info-right&&p,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.vod-info-right&&p,2&&Text');\n\nvar 图片 = parseDom(html, 'img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.vod-info-text&&Text').replace('展开','');\n\nvar 图片链接 =MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 状态,\n    desc: 演员 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"B12-L","author":"ᝰꫛꫀꪝ藍凋","version":5,"type":"video","url":"https://www.b12s.cn/frim/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&电影解说","class_url":"index1&index2&index3&index4&index39","area_name":"类型&动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&剧情&记录片","area_url":"&index5&index10&index6&index7&index8&index9&index12&index11","sort_name":"","year_name":"类型&国产剧&香港剧&台湾剧&韩剧&日剧&欧美剧&泰剧&海外剧","sort_url":"","year_url":"&index13&index36&index33&index31&index30&index32&index34&index40","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.tabt3&&span');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.ulNumList');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, 'body&&.video-info-actor&&a,0&&Text');\n\nvar 类型 = parseDomForHtml(html, 'body&&.tag-link,0&&Text');\n\nvar 更新 = parseDomForHtml(html, 'body&&.video-info-items,3&&Text');\n\nvar 导演 = parseDomForHtml(html, 'body&&.video-info-actor&&a&&Text');\n\nvar 图片 = parseDom(html, 'img&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\nvar 图片链接 = getUrl();\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 类型,\n    desc: 更新 + '\\n' + 导演,\n    pic_url: 图片,\n    url: 图片链接,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.b12s.cn/include/vdimgck.php';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"天空影视","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://www.tkys.tv/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(\"555.url\", MY_URL)\nconst page = MY_URL.match(/-(.*?)\\.html/)[1]\ntrue_url = true_url.replace('---.html', page + '---.html')\nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, 'body&&.nav-list').concat(parseDomForArray(html, 'body&&.myui-screen__list:not(:contains(APP))'));\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(\"555.fold\", \"0\")\nconst cate_temp_json = getVar(\"555.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"555.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"555.category\", JSON.stringify(new_cate))\n                        putVar(\"555.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"555.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"555.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.tkys.tv/vodsearch/page/fypage/wd/**.html","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,5&&Text').replace('详情','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"北川","author":"ᝰꫛꫀꪝ藍凋&&sm`回忆","version":4,"type":"video","url":"https://www.bcwzg.com/vodshow/1--------%%fypage%%---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\n//自定义颜色\n  const Color=\"#40E0D0\";\n  \n  const a=MY_URL.replace(/%%/g, \"\");\n  let true_url = getVar(\"jh.url\", a)\n  const page=MY_URL.match(/%%(.*)%%/)[1];\n\n//setError(page);\n\n//翻页 需要根据实际替换\n  true_url = true_url.replace('---/', +page+'---/')  \n  const html = fetch(true_url)\n  const empty = \"hiker://empty\"\n//获取列表 \n  const categories = parseDomForArray(html, '#main&&.scroll-content:not(:contains(全部类型))')\n\n//setError(true_url);\n\n  let init_cate = []\n\n  for (let i = 0; i < 20; i ++) {\n    init_cate.push(\"0\")\n  }\n\n  // 取缓存\n  const fold = getVar(\"jh.fold\", \"0\")\n  const cate_temp_json = getVar(\"jh.category\", JSON.stringify(init_cate))\n  const cate_temp = JSON.parse(cate_temp_json)\n\n\n  if (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"jh.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'div&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库','')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"jh.category\", JSON.stringify(new_cate))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"jh.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n//一级页面\nlist = parseDomForArray(html, 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href') +\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://bcyingshi.ink/vodsearch/**----------fypage---/","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text');\n\nvar 地区 = parseDomForHtml(html, '.tag-link,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-main&&.video-info-items,6&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 状态 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 地区,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"VIDEO","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"http://www.91aiwo.com/search.php?page=fypage&searchtype=5&order=fysort&area=fyarea&year=fyyear&letter=&yuyan=&state=&money=&ver=&jq=&tid=fyclass","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"人气&时间&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hit&time&commend","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://www.91aiwo.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#f20c00","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);now`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"星空电影","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://www.xkdy222.com/index.php/vod/show/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&&1983&1982&1981&1980","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&&1983&1982&1981&1980","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.xkdy222.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff13b66a","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"追剧易","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"http://www.zhuiju1.cc/fyAll/page_fypage.html","col_type":"movie_3","class_name":"战争&动画&悬疑&犯罪&动作&喜剧&爱情&科幻&恐怖&奇幻&剧情&记录","class_url":"zhuizz&zhuidh&zhuixy&zhuifz&zhuidz&zhuixj&zhuiaq&zhuikh&zhuikb&zhuiqh&zhuijq&zhuijl","area_name":"日本&欧美&海外&国产&香港&台湾&韩国","area_url":"zhuirb&zhuiom&zhuihw&zhuigc&zhuixg&zhuitw&zhuihg","sort_name":"国产&日韩&欧美","year_name":"大陆&港台&日韩&欧美","sort_url":"zhuigm&zhuirhm&zhuiomm","year_url":"zhuidl&zhuigt&zhuirh&zhuioom","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.zhuiju1.cc/index.php?search-index-mid-5-keyword-**-page-fypage.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.fed-part-rows,1&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.fed-col-xs12,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.fed-col-xs12,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.fed-col-xs6.fed-col-md3,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-layout,1&&.fed-tabs-boxs&&.fed-tabs-item,1&&.fed-text-muted&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"琪琪","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://www.qqdy10.com/qqdy10vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.mo-cols-lg2');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.mo-situ-name&&Text'),\n     desc:parseDomForHtml(list[j], '.mo-situ-rema&&Text'),\n     pic_url: parseDom(list[j], '.mo-situ-pics&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info.mo-cols-rows');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h1&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span,2&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.qqdy10.com/qqdy10vodsearch/----------fypage---.html?wd=**","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mo-movs-btns');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-lays&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-lays&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.mo-cols-lays&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.mo-cols-lays&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.mo-situ-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-lhxl-24px&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"九零影院","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://90r.cc/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&jiju&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"人气&时间&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hits&time&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.mo-cols-lg2');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.mo-situ-name&&Text'),\n     desc:parseDomForHtml(list[j], '.mo-situ-rema&&Text'),\n     pic_url: parseDom(list[j], '.mo-situ-pics&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info.mo-cols-rows');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h1&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span,2&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://90r.cc/vodsearch/**----------fypage---/","titleColor":"#ffff7000","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mo-movs-btns');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-lays&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-lays&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.mo-cols-lays&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.mo-cols-lays&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.mo-situ-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-lhxl-24px&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"影客团","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://www.yingketuan.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(MY_URL + \"url\", MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1--------' + page + '---.html')\nconst html = fetch(true_url)\nconst empty = \"hiker://empty\"\n\n\n\nconst categories = parseDomForArray(html, 'body&&.scroll-content');\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL + \"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL + \"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∧</span></b>' : '““””<b><span style=\"color: #19B89D\">∨</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL + \"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a:not(:contains(首页)):not(:contains(直播))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #19B89D\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL + \"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color: #19B89D\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL + \"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nvar list = parseDomForArray(html, 'body&&.module-list&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a,1&&title'),\n        desc: parseDomForHtml(list[j], 'body&&.module-item-text&&Text'),\n        img: parseDom(list[j], '.lazy&&data-src').replace('http://', 'https://') + '@Referer=',\n        url: parseDom(list[j], 'a&&href').replace('play', 'detail').replace('/sid/1/nid/1.html', '.html') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src')+ '@Referer=',\n        });\r\n    }\nsetResult(d)","search_url":"https://www.yingketuan.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"鹰速","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://inzdrama.com/vodshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(MY_URL + \"url\", MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1--------' + page + '---.html')\nconst html = fetch(true_url)\nconst empty = \"hiker://empty\"\n\n\n\nconst categories = parseDomForArray(html, 'body&&.scroll-content');\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL + \"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL + \"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∧</span></b>' : '““””<b><span style=\"color: #19B89D\">∨</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL + \"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a:not(:contains(首页)):not(:contains(直播))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #19B89D\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL + \"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color: #19B89D\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL + \"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nvar list = parseDomForArray(html, 'body&&.module-list&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a,1&&title'),\n        desc: parseDomForHtml(list[j], 'body&&.module-item-text&&Text'),\n        img: parseDom(list[j], '.lazy&&data-src').replace('http://', 'https://') + '@Referer=',\n        url: parseDom(list[j], 'a&&href').replace('play', 'detail').replace('/sid/1/nid/1.html', '.html') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src')+ '@Referer=',\n        });\r\n    }\nsetResult(d)","search_url":"https://inzdrama.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"暖光影视","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://www.bl210.top/search.php?page=fypage&searchtype=5&order=fysort&tid=fyclass&area=&year=fyyear&letter=&yuyan=&state=&money=&ver=&jq=","col_type":"movie_3","class_name":"电视剧&电影&耽美&动漫&国产剧&港台剧&欧美剧&日韩剧&海外剧","class_url":"2&1&3&4&13&14&15&16&28","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"时间&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"time&hit&commend","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text&&Text'),\npic_url:parseDom(list[i],'a&&data-original'),\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",\ncol_type: 'movie_3'});\n  }catch(e){}\n}\n//道佬•模板\nres.data = d;\nsetHomeResult(res);","searchFind":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text&&Text'),\ncontent:parseDomForHtml(list[i],'.detail&&Text'),\npic_url:parseDom(list[i],'a&&data-original'),\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"\n});\n  }catch(e){}\n}\n//道佬•模板\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.bl210.top/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff228be6","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"1V影视","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"http://1vys.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"动作&喜剧&爱情&科幻&恐怖&剧情&战争&纪录","class_url":"6&7&8&9&10&11&12&25","area_name":"国产&港剧&台剧&日剧&韩剧&美剧&海外","area_url":"13&14&20&15&21&16&22","sort_name":"","year_name":"大陆&港台&日韩&动漫","sort_url":"","year_url":"31&34&35&26","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://1vys.com/search/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,4&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"腐剧TV","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"https://www.fuju.tv/vodshow/fyclass/area/fyarea/by/fysort/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"腐剧&电影&动漫&综艺","class_url":"Fuju&BLdianying&BLdongman&BLzongyi","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"人气&时间&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hits&time&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.fuju.tv/vodsearch.html?wd=**&submit=","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,4&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"1080电影网","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.1080kdy.com/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(\"znyy.url\", MY_URL)\nconst page = MY_URL.match(/page\\/(.*?)\\.html/)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, 'body&&.nav-list').concat(parseDomForArray(html, 'body&&.myui-screen__list:not(:contains(年份))'));\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(\"znyy.fold\", \"0\")\nconst cate_temp_json = getVar(\"znyy.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"znyy.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a:not(:contains(伦)):not(:contains(福利)):not(:contains(下载)):not(:contains(资讯)):not(:contains(解说)):not(:contains(专题))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"znyy.category\", JSON.stringify(new_cate))\n                        putVar(\"znyy.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"znyy.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"znyy.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.1080kdy.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy= `@lazyRule=.js:unescape(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,5&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"咱的电影网-L","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"http://www.zandedy.com/search.php?page=fypage&searchtype=5&order=fysort&tid=fyclass&area=&letter=&yuyan=&state=&money=&ver=&jq=&year=fyyear;get;utf-8;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&体育","class_url":"1&2&4&3&20","area_name":"","area_url":"","sort_name":"最新&人气&推荐","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&更早","sort_url":"time&hit&commend","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&more","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.index-area&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".index-area&&li;a&&title;a&&href.js:input+\"#immersiveTheme#\";.other&&Text;*;img&&data-original.js:input+'@Referer='","search_url":"http://www.zandedy.com/search.php?page=fypage&searchword=**&searchtype=;get;utf-8;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy='@lazyRule=.player&&script&&Html.js:eval(input);now'\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.playfrom');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#vlink_1');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '');\n\nvar 主演 = parseDomForHtml(html, '');\n\nvar 导演 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&#stab2&&p,0&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"最全电影","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.zuiquandy.com/vod/show/area/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       content: parseDomForHtml(list[j], '.detail--h4&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.zuiquandy.com/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,5&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"奇热影视","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.iuc.me/vodshow/fyclass--fysort------fypage---fyyear/","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&微电影","class_url":"1&2&3&4&26","area_name":"","area_url":"","sort_name":"人气&时间&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hits&time&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.iuc.me/vodsearch/**----------fypage---/","titleColor":"#ffff00ff","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,5&&Text').replace('详情','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"25影视-L","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"https://www.hanjucom.com/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&记录片","class_url":"1&2&3&4&21","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.hanjucom.com/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var url = unescape(player_aaaa.url);url.indexOf('html')>-1?JSON.parse(fetch('http://parse.tyun77.cn/973jiexi/api/api.php?pltfrom=1100&url='+url,{})).url:url`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:contains(剧情介绍)):not(:contains(猜你喜欢))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, 'h2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-content__desc&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"国语视频","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"http://gygysp.com/list/fyclass-pg-fypage-order--by--class-0-year-fyyear-letter--area--lang-.html","col_type":"movie_3","class_name":"译制片&电视剧&电影&记录&动漫&类型&国产剧&香港剧&台湾剧&韩剧&日剧&欧美剧&泰剧&海外剧&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","class_url":"19&2&1&3&4&&12&13&16&14&17&15&20&18&5&6&7&8&9&10&11","area_name":"","area_url":"","sort_name":"","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://gygysp.com/index.php?m=vod-search?wd=**&submit=;post","titleColor":"#ff673ab7","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=head&&script,-1&&Html.js:eval(input);url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&h3:not([src]):not(:contains(极速观看)):not(:contains(百度云盘)):not(:contains(迅雷))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"泰剧网","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"http://www.hjjk.cc/show/fyclass--fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"泰剧&电影&电视剧&动漫&综艺","class_url":"1&2&3&4&16","area_name":"","area_url":"","sort_name":"月排行&周排行&日排行&热剧推荐","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hits_month&hits_week&hits_day&time","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://www.hjjk.cc/search/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.myui-panel__head:not(:contains(猜你喜欢)):not(:contains(简介)):not(:contains(热播))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,4&&Text').replace('详情','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"泰剧","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"https://www.taijuu.com/list/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&动作&喜剧&爱情&科幻&恐怖&剧情&战争","class_url":"dianying&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","area_name":"电视剧&泰剧&国产&港剧&韩剧&美剧&台剧&日剧","area_url":"dianshiju&taiju&guochanju&xianggangju&hanguoju&oumeiju&taiwanju&ribenju","sort_name":"综艺&内地&港台&日韩&欧美","year_name":"动漫&电影&国产&日韩&欧美&海外","sort_url":"zongyi&neidizongyi&gangtaizongyi&rihanzongyi&oumeizongyi","year_url":"dongman&dongmandianying&guochandm&rihandm&oumeidm&haiwaidm","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.taijuu.com/vso/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&h3:not([src]):not(:contains(周榜单)):not(:contains(简介)):not(:contains(推荐)):not(:contains(月榜))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, 'img&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'p,5&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"碟调-L","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"https://m.xindiediao.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&泰国&德国&法国&英国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&日本&韩国&美国&泰国&德国&法国&英国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&1983&1982&1981&1980","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&1983&1982&1981&1980","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://m.xindiediao.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel_hd&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc.hidden-xs&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"苏鸦红","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"video","url":"http://www.suyahong.top/index.php/vod/show/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"body&&.mo-cols-sm3;.mo-situ-name&&Text;a&&data-original;.mo-situ-rema&&Text;a&&href.js:input +\"#immersiveTheme#\"","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info.mo-cols-rows');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h1&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span,2&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","search_url":"http://www.suyahong.top/index.php/vod/search/page/fypage/wd/**.html","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var js = request(input);var jsurl = base64Decode(parseDomForHtml(js, '.mo-play-load&&data-play').slice(3));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl+\"#isVideo=true#\"}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mo-movs-btns');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-lays&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-lays&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.mo-cols-lays&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.mo-cols-lays&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.mo-situ-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-lhxl-24px&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"720-L","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"https://www.720kp.cn/kanshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&哔哩","class_url":"dianying&lianxuju&zongyi&dongman&bilibili","area_name":"全部&内地&香港&台湾&日本&韩国&美国&泰国&英国&新加坡&其他","area_url":"&中国大陆&中国香港&中国台湾&日本&韩国&美国&泰国&英国&新加坡&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.list-a&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], 'a&&span,-1&&Text!更新'),\r\n       img: parseDom(list[j], '.lazy&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nfunction D(L, Label){\n    try{\n        return parseDomForHtml(L, Label);\n    }catch(e){return '';}\n};\nvar list = parseDomForArray(getResCode(), '.searchlilst&&li');\n//try{\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: D(L, 'a&&title'),\n            url: parseDom(L, 'a&&href'),\n            desc: D(L, 'a&&span,-1&&Text'),\n            content: D(L, '.detail&&p&&Text') + '｜' + D(L, '.detail&&p,1&&Text') + '\\n' + D(L, '.detail&&p,3&&Text'),\n            img: parseDom(L, 'a&&data-original'),\n        });\r\n    }\n//}catch(e){ }\nsetSearchResult({data: d});","search_url":"https://www.720kp.cn/kansearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy =\n`@lazyRule=#bofang_box&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(base64Decode(player_aaaa.url));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));ParseS.maoss(\"https://jx.720kp.cn/play/?url=\" + url, false, \"A42EAC0C2B408472\")}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 演员 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.ecshow&&Text');\n\nvar 图片链接 =MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 状态,\n    desc: 演员 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"哦哦-L","author":"ᝰꫛꫀꪝ藍凋","version":5,"type":"video","url":"https://m.oody5.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&泰国&德国&法国&英国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&日本&韩国&美国&泰国&德国&法国&英国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://m.oody5.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy='@lazyRule=.stui-player__video&&script&&Html.js:eval(input);;player_aaaa.url;';\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data&&Text');\n\nvar 导演 = parseDomForHtml(html, 'body&&.stui-content__detail&&p,4&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&.stui-content__detail&&p,5&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"二狗-L","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"https://m.2dog.tv/show/fyclass-fyarea-------fypage---fyyear/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"全部&内地&香港&台湾&日本&韩国&美国&泰国&英国&新加坡&其他","area_url":"&内地&香港&台湾&日本&韩国&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://m.2dog.tv/search/**----------fypage---/","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy='@lazyRule=.stui-player__video&&script&&Html.js:eval(input);;player_aaaa.url;';\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:contains(猜你喜欢)):not(:contains(热播榜))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"槿TV","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.oao0.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], 'a&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original'),//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"https://www.oao0.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#playlistbox');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('类型：','').replace('地区：','').replace('年份：','');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text').replace(' 展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 状态,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"firstHeader":"class","last_chapter_rule":"","title":"神马","author":"发粪涂墙&白","version":0,"type":"video","url":"hiker://empty##http://www.wwwgcard.com/vodshow/dianyingtiantang--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-item'\nconst 小类定位 = 'body&&a:not(:matches(首页|追剧周表|专题列表|今日更新|热搜榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nvar page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/iqiyi\\/(.*?)\\.html/, 'vodshow/$1-----------.html').replace('---.html', page+'---.html').replace(/(---\\d+\\.html)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img||.lazy&&data-original||src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":".module-items&&.module-card-item;strong&&Text;a&&href;.module-info-item-content,0&&Text;.module-info-item-content,1&&Text;img||.lazy&&data-original||src","search_url":"/vodsearch/**----------fypage---.html","titleColor":"","group":"②免嗅探","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://agit.ai/lzk23559/PublicRule/raw/branch/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\neval(JSON.parse(request('hiker://page/y-playList?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.wwwgcard.com/static/images/touxiang.png"},{"firstHeader":"class","last_chapter_rule":"","title":"爱迪","author":"小白","version":1,"type":"video","url":"https://aidi.tv/show/fyclass--------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"连续剧&电影&综艺&动漫","class_url":"lianxuju&dianying&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"https://aidi.tv/vsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/i[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), '.play_source&&Html').match(/playlist_notfull[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.js:var url=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;url.indexOf('http')==-1?request('https://aidi.tv/addons/dplayer/?url='+url,{}).match(/vodurl = '(.*?)'/)[1]:url+'#isVideo=true#'`\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"大师","author":"小白","version":1,"url":"https://dsys2021.com/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href').replace('vodplay','voddetail').split(/\\/1-/)[0],\n\n\r\n  });\n\n//https://dsys2021.com/vodplay/w1jhehqab/1-y13kt1h.html\n//https://dsys2021.com/voddetail/w1jhehqab.html\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {}; var d = [];\nvar html = getResCode();\n\n//影片信息\ntry{\n   var JJ = '简介：'+parseDomForHtml(html,'.myui-panel_bd&&.data&&Text');\n   var img = parseDomForHtml(html,'.lazyload&&src');\n   var so1 = 'hiker://search?s='+parseDomForHtml(html,'h1&&Text')+'&group=①影视';\n   d.push({\n       title: parseDomForHtml(html,'.myui-content__detail&&p,3&&Text')+'\\n'+parseDomForHtml(html,'.myui-content__detail&&p,4&&Text'),\n       desc: parseDomForHtml(html,'.myui-content__detail&&p,2&&Text'),\n       img: img,\nurl:getUrl(),\n      // url: img,\n       col_type: 'movie_1_vertical_pic'\n   });\n   d.push({\n       title: JJ.length > 56 ? JJ.replace(JJ, JJ.substring(0, 56) + '...‘‘’’<small><font color=\"blue\">查看详情</font></small>') : JJ,\n       url: 'hiker://empty#' + JJ + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n}catch(e){ }\n\n//线路和选集\ntry{\n   var conts = parseDomForArray(html, 'body&&.myui-content__list');\n   var dplayer = `@lazyRule=.js:var code=parseDom(fetch(input,{}),'.embed-responsive&&script&&Html');eval(code);var U=player_data.url;U`;\n\n   for (var i = 0; i < conts.length; i++) {\n        var list = parseDomForArray(conts[i], 'ul&&li');\n        var line = parseDomForHtml(html, 'li&&Text');\n      if (list != null) {\n         d.push({col_type: 'line_blank'});\n         d.push({\n             title: '‘‘'+line+'’’' + '\\t\\t' + (i + 1) + '／' + conts.length +'                       ',\n             url: so1,\n             col_type: 'text_1'\n         });\n         for (var j = 0; j  < list.length; j++) {\n              var jm = parseDomForHtml(list[j], 'a&&Text');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + dplayer,\n                col_type: jm.length >5 ? 'text_2' : 'text_3'\n            });\n         }\n      }\n   }\n   d.push({title: '<br>', col_type: 'rich_text'});\n}catch(e){ }\n\nres.data=d; setHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"乐途","author":"小白","version":0,"url":"https://www.letudy.com/pg/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&dsj&zongyi&dongman","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian","sort_name":"","year_name":"国产剧&香港剧&台湾剧&韩国剧&日本剧&欧美剧","sort_url":"","year_url":"gcj&xgj&twj&hgj&rbj&omj","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.index-area&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".index-area&&li;a&&title;a&&href;.other&&Text;.actor&&Text;.lazy&&data-original","search_url":"https://www.letudy.com/vodsearch**/page/fypage.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.ee&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazy&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"intro[\\s\\S]*?<\\/font/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"videourl[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.letudy.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.player&&script&&Html.js:eval(input);decodeURIComponent(base64Decode(player_aaaa.url))`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"白熊","author":"小白","version":0,"url":"https://www.woobm.cn/index.php/vod/show/area/fyarea/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href","searchFind":"body&&.fed-deta-info;h1&&Text;a&&href;.fed-list-remarks&&Text;.fed-part-esan&&Text;a&&data-original","search_url":"https://www.woobm.cn/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.fed-part-esan&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.fed-list-pics&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&.fed-drop-tops&&Html').match(/href=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), '.fed-drop-btms&&Html').match(/class=\\\"fed-part-rows\\\">[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.woobm.cn'+list[j].split('href=\"')[1].split('\"')[0]+ '@lazyRule=iframe&&data-play.js:url = base64Decode(input.slice(3))'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"九州","author":"小白","version":0,"url":"http://www.jiuzhou911.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.channel&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".sul&&li;a&&title;h4&&a&&href;p,0&&Text;p,-1&&Text;img&&data-original","search_url":"http://www.jiuzhou911.com/search.php?page=fypage&searchword=**","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.cdes1&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.img&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.row-l&&Html').match(/h2[\\s\\S]*?<\\/h2/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stab_list[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.jiuzhou911.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.playerall&&script&&Html.js:eval(input);now`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"千叶","author":"小白","version":2,"url":"http://www.qydy6.com/sx/fyclassfl/lx/nianffypageen-fyyear.html","col_type":"movie_3_marquee","class_name":"连续剧&电影&综艺&动漫","class_url":"lianxuju&dianying&zongyi&dongman","area_name":"","area_url":"","sort_name":"警告：视频顶部滚动的文字信息均属诈骗信息，请勿相信和打开，切记切记！！","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"http://www.qydy6.com/search/**----------fypage---.html","titleColor":"#ff148e8e","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"playlist_full[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.qydy6.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff148e8e"},{"title":"干饭","author":"戏太深&小白","version":0,"url":"https://www.ganfantv.com/show/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input.replace('detail','play').replace('.html','-1-1.html')","searchFind":".stui-vodlist&&li;h4&&Text;a&&href.js:input.replace('detail','play').replace('.html','-1-1.html');.pic-text&&Text;;.lazyload&&data-original","search_url":"https://www.ganfantv.com/search/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n\nd.push({\n    desc: '240&&float',\n    col_type: 'x5_webview_single'\n});\n\n//动态解析\ntry {\n    var lazy = `@lazyRule=body&&.embed-responsive&&script&&Html.js:eval(input);if(player_aaaa.url.indexOf('.html')==-1){player_aaaa.url}else{refreshX5WebView('https://vip.parwix.com:4433/player/?url='+player_aaaa.url);'toast://缓冲中……'}`;\n} catch(e) {}\n\n//线路列表\nvar tabs = parseDomForArray(html, '.play-tab&&li');\n\n//播放列表\nvar conts = parseDomForArray(html, 'body&&.stui-play__list');\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n\turl: getUrl(),\n\tcol_type: 'text_1'\n});\n\nfor (var i in tabs) {\n\n    //线路名称\n    try {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'li&&Text'),\n            col_type: 'long_text'\n        });\n    } catch(e) {}\n\n    //选集列表\n    var list = parseDomForArray(conts[i], 'ul&&li');\n\n    for (var j in list) {\n        //选集名称以及播放链接\n        try {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2 ? 'text_3': 'text_2'\n            });\n        } catch(e) {}\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"花语","author":"小白","version":0,"url":"http://www.uv798.com/show/fyclass/area/fyarea/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"http://www.uv798.com/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar desc = parseDomForHtml(html, '.sketch&&Text');\nd.push({\n    title: parseDomForHtml(html, '.data&&Text').replace(/ /g,'\\n'),\n    desc: parseDomForHtml(html,'.data,2&&Text'),\n    pic_url: parseDom(html, '.myui-content__thumb&&img&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n    if (desc.length > 60) {\n            desc = desc.replace(desc, desc.substring(0, 60) + \"......\");\n      }\n\nd.push({\n          title: desc,\n          col_type: 'long_text'\n});\n\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'a&&Text'),\n            col_type: 'long_text'\n        });\n  for (var j in list) {\n   d.push({\n     title: parseDomForHtml(list[j],'a&&Text'),\n     url: parseDom(list[j], 'a&&href') + `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_data.url`,\n       col_type: list.length >3?'text_3':'text_2'\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"极速","author":"小白","version":0,"url":"http://www.162fw.com/vodshow/fyclass-/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"dy&ds&zy&dm","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.tv-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.v-tips&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.item;img&&alt;a&&href;.v-tips&&Text;.p_intro&&Text;.item_pic&&img&&src","search_url":"http://www.162fw.com/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.txt_list&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.v-pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/apiname=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"play_num_list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.162fw.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.iplays&&script&&Html.js:eval(input)；；player_data.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"放放","author":"小白","version":0,"url":"http://www.ourxh.com/vodshow/fyclass--------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"连续剧&电影&综艺&动漫","class_url":"teleplay&movie&variety&anime","area_name":"","area_url":"","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&Text;p,-2&&Text;a&&data-original","search_url":"http://www.ourxh.com/vodsearch/**----------fypage---.html**","titleColor":"#ff148e8e","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.sketch&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.ourxh.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff148e8e"},{"firstHeader":"class","title":"泡泡","author":"小白","version":0,"url":"https://www.chinaqualitytest.com/ppys5show/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-1&&Text;img&&src","search_url":"https://www.chinaqualitytest.com/ppys5search/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '#desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.stui-vodlist__thumb&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.chinaqualitytest.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_data.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"E4","author":"小白","version":1,"url":"http://www.dusheys.com/so/fyclass-fyarea-------fypage---fyyear/","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&juji&zy&dm","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".col-ul-list&&li;img&&alt;img&&data-src;.qingxidu&&Text;a&&href","searchFind":".col-ul-list&&li;img&&alt;a&&href;.qingxidu&&Text;small&&Text;img&&data-src","search_url":"http://www.dusheys.com/vod/search/page/fypage/wd/**/","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.mv_content&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.ibox_img&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/pc_ico_2[\\s\\S]*?<span/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"bofang_tlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.dusheys.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=#iframe_box&&script,1&&Html.js:eval(input);player_data.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"pilipali","author":"小白","version":1,"url":"http://pilipali.cc/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.tv-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.v-tips&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.item;img&&alt;a&&href;.v-tips&&Text;.p_intro&&Text;img&&src","search_url":"http://pilipali.cc/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.infor_intro&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.v-pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"play_num_list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://pilipali.cc'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.iplays&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"66","author":"小白","version":0,"url":"https://www.6666ys.com/vodshow/fyclass-fyarea-------fypage---fyyear/","col_type":"movie_3_marquee","class_name":"连续剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"大陆&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.6666ys.com/vodsearch/**----------fypage---/","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.detail&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.6666ys.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.stui-player__video&&script&&Html.js:eval(input)；；player_x10d26.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"私人","author":"小白","version":0,"url":"http://www.aimm.im/vodshow/fyAll--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&dsj&zongyi&dongman","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片","area_url":"6&7&8&9&10&11","sort_name":"","year_name":"国产剧&香港剧&台湾剧&韩国剧&日本剧&欧美剧","sort_url":"","year_url":"13&14&24&15&25&16","find_rule":".vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"http://www.aimm.im/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), '.play_source&&Html').match(/playlist_full[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.aimm.im'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_data.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"星辰","author":"小白","version":1,"url":"http://www.pku-pe.org/search.php?page=fypage&searchtype=5&tid=fyAll","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片","area_url":"5&10&6&7&8&12","sort_name":"","year_name":"国产剧&香港剧&欧美剧&日韩剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"http://www.pku-pe.org/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.pku-pe.org'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var url=now;url.indexOf('m3u8')!=-1?url:url.split('/share')[0]+fetch(url,{}).match(/url: '(.*?)'/)[1]`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"慕楠","author":"小白","version":0,"url":"https://www.mnvod.tv/index.php/vod/show/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href","searchFind":"body&&.fed-deta-info;h1&&Text;a&&href;.fed-list-remarks&&Text;.fed-part-esan&&Text;a&&data-original","search_url":"https://www.mnvod.tv/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.fed-part-esan&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.fed-list-pics&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&.fed-drop-tops&&Html').match(/href=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), '.fed-drop-btms&&Html').match(/class=\\\"fed-part-rows\\\">[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.mnvod.tv'+list[j].split('href=\"')[1].split('\"')[0]+ '@lazyRule=iframe&&data-play.js:url = base64Decode(input.slice(3))'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"乌鱼","author":"小白","version":0,"url":"https://www.858guakao.com/list/fyclass-fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.858guakao.com/search/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.nav-tabs&&.item&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.858guakao.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_data.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"小草2","author":"小白","version":0,"url":"http://www.hzjzxh.org/show-fyclass--------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"http://www.hzjzxh.org/search-**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.myui-content__detail&&p,-1&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.nav-tabs&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.hzjzxh.org'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var jsurl = player_aaaa.url;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"人","author":"小白","version":0,"url":"http://www.ldssz.com/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"http://www.ldssz.com/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar desc = parseDomForHtml(html, '.desc&&Text');\nvar fftq ='';\nvar lazy = `@lazyRule=.stui-player__video&&script&&Html.js:eval(input);if(getVar('magedn$local')=='0'){putVar('fftq',player_aaaa.url);refreshPage();'toast://切换选集成功！'}else{player_aaaa.url}`;\nif(getVar('fftq')==''){\nd.push({\n    title: parseDomForHtml(html, '.data&&Text').replace('地区','\\n地区').replace('年份','\\n年份'),\n    desc: parseDomForHtml(html,'.data,2&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n}else{\n\nd.push({\n   url:getVar('fftq'),\n\t\tcol_type: 'x5_webview_single'\n});\nputVar('fftq','');\n}\nd.push({col_type:\"rich_text\",title:`<small>当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('magedn$local',getVar('magedn$local')=='1'?'0':'1');refreshPage();'toast://已切换模式';\">`+(getVar('magedn$local')=='1'?\"默认播放器\":\"X5播放器\")+\"</a></small>\"});\nd.push({col_type:'blank_block'});\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'a&&Text'),\n            col_type: 'long_text'\n        });\n  for (var j in list) {\n   d.push({\n     title: parseDomForHtml(list[j],'a&&Text'),\n     url: parseDom(list[j],'a&&href') + lazy,\n       col_type: list.length >2?'text_3':'text_2'\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"星辰2","author":"小白","version":0,"url":"http://www.qhddj.com.cn/xcyyshow/fyclass-fyarea-------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"内地&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"内地&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist&&li;a&&title;a&&href;.pic-text&&Text;;a&&data-original","search_url":"http://www.qhddj.com.cn/xcyysearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.qhddj.com.cn'+list[j].split('href=\"')[1].split('\"')[0]+ '@lazyRule=html&&.embed-responsive&&script&&Html.js:eval(input)；；var jsurl = player_aaaa.url;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"嘛哩","author":"小白","version":0,"url":"https://malimali.cc/vodshow/fyclass--------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"日韩动漫&国产动漫&欧美动漫","class_url":"10&9&11","area_name":"","area_url":"","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.listbox&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.score&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-echo'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".searchbox&&li;a&&title;a&&href;;;","search_url":"https://malimali.cc/vodsearch/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； MI 9 Build/RKQ1.200826.002；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.intro&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.thumb&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.column-lft&&Html').match(/strong[\\s\\S]*?<\\/strong/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"rec-list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://malimali.cc'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.player&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"999","author":"小白","version":0,"url":"https://www.9999ku.com/vodshow/fyclass/area/fyarea/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.list.length; i++)\n{\n var r = {};\n var j = json.list[i];\n r.pic_url ='https://www.9999ku.com/'+j.pic;\n r.url ='https://www.9999ku.com/90detail/' + j.id+'.html';\n r.title = j.name;\n //r.desc = '时长：' + j.vod_remarks + '  播放量：' + j.vod_remarks;\n d.push(r);\n}\nres.data = d;\nsetHomeResult(res)","search_url":"https://www.9999ku.com/index.php/ajax/suggest?mid=1&wd=**&limit=10&timestamp=1615135869380","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar desc = parseDomForHtml(html, '.desc&&Text');\nvar fftq ='';\nvar lazy = `@lazyRule=.myui-player__video&&script&&Html.js:eval(input);if(getVar('magedn$local')=='0'){putVar('fftq',player_aaaa.url);refreshPage();'toast://切换选集成功！'}else{player_aaaa.url}`;\nif(getVar('fftq')==''){\nd.push({\n    title: parseDomForHtml(html, '.data&&Text').replace('地区','\\n地区').replace('年份','\\n年份'),\n    desc: parseDomForHtml(html,'.data,2&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n}else{\n\nd.push({\n   url:getVar('fftq'),\n\t\tcol_type: 'x5_webview_single'\n});\nputVar('fftq','');\n}\nd.push({col_type:\"rich_text\",title:`<small>当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('magedn$local',getVar('magedn$local')=='1'?'0':'1');refreshPage();'toast://已切换模式';\">`+(getVar('magedn$local')=='1'?\"默认播放器\":\"X5播放器\")+\"</a></small>\"});\nd.push({col_type:'blank_block'});\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'a&&Text'),\n            col_type: 'long_text'\n        });\n  for (var j in list) {\n   d.push({\n     title: parseDomForHtml(list[j],'a&&Text'),\n     url: parseDom(list[j],'a&&href') + lazy,\n       col_type: list.length >2?'text_3':'text_2'\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"雪花","author":"小白","version":0,"url":"https://www.yeshi8.cn/index.php/vod/show/area/fyarea/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"连续剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.yeshi8.cn/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar desc = parseDomForHtml(html, '.sketch&&Text');\nvar fftq ='';\nvar lazy = `@lazyRule=.myui-player__video&&script&&Html.js:eval(input);if(getVar('magedn$local')=='0'){putVar('fftq',player_data.url);refreshPage();'toast://切换选集成功！'}else{player_data.url}`;\nif(getVar('fftq')==''){\nd.push({\n    title: parseDomForHtml(html, '.data&&Text').replace('地区','\\n地区').replace('年份','\\n年份'),\n    desc: parseDomForHtml(html,'.data,2&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n}else{\n\nd.push({\n   url:getVar('fftq'),\n\t\tcol_type: 'x5_webview_single'\n});\nputVar('fftq','');\n}\nd.push({col_type:\"rich_text\",title:`<small>当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('magedn$local',getVar('magedn$local')=='1'?'0':'1');refreshPage();'toast://已切换模式';\">`+(getVar('magedn$local')=='1'?\"默认播放器\":\"X5播放器\")+\"</a></small>\"});\nd.push({col_type:'blank_block'});\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'ul&&li');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'a&&Text'),\n            col_type: 'long_text'\n        });\n  for (var j in list) {\n   d.push({\n     title: parseDomForHtml(list[j],'a&&Text'),\n     url: parseDom(list[j],'a&&href') + lazy,\n       col_type: list.length >2?'text_3':'text_2'\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"11","author":"小白","version":0,"url":"https://www.dqyjzx.com/vtype-fyAll-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&港剧&日剧&美剧&韩剧","sort_url":"","year_url":"guochanju&gangju&riju&meiju&hanju","find_rule":".jq-ul&&li;\na&&title;img&&src;span&&Text;a&&href","searchFind":".jq-ul&&li;\na&&title;\na&&href;\nspan&&Text;\n;\nimg&&src","search_url":"https://www.dqyjzx.com/vsearch**----------fypage---.html","titleColor":"#fff20c00","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.jq-jieshao&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.dsj-pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h2[\\s\\S]*?<\\/h2/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"juji-con[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.dqyjzx.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=iframe&&src.js:input.split('=')[1]`\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#fff20c00"},{"firstHeader":"class","title":"热火","author":"小白","version":1,"url":"http://m.rehuo.net/RHS/area/fyarea/id/fyclass/page/fypage/year/fyyear/","col_type":"movie_3_marquee","class_name":"连续剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),\n            pic_url: parseDom(list[i], 'a&&data-original'),\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),\n            url: parseDom(list[i], 'a&&href')\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-1&&Text;a&&data-original","search_url":"http://m.rehuo.net/RHSO/page/fypage/wd/**/","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    desc: '240&&float',\n    col_type: 'x5_webview_single'\n});\n\n//动态解析\ntry {\n    var lazy = `@lazyRule=body&&.embed-responsive&&script&&Html.js:eval(input);if(player_aaaa.url.indexOf('.html')==-1){player_aaaa.url}else{refreshX5WebView(' http://m.199cn.cn/live_qjx/jx.html?url='+player_aaaa.url);'toast://缓冲中……'}`;\n} catch(e) {}\n\n//详情\ntry {\n    var Rule = MY_URL+`@rule=js:let res={};let d=[];let html=getResCode();let otherInfo=parseDomForArray(html,'.stui-content__detail&&p');for(let i=0;i<otherInfo.length-1;i++){if(i==0){let setInfo=parseDomForHtml(otherInfo[i],'p&&Text').match(/(分类：.*)(地区：.*)(年份：.*)/);for(let j=1;j<setInfo.length;j++){d.push({title:setInfo[j],col_type:'long_text'})}}else{d.push({title:parseDomForHtml(otherInfo[i],'p,1&&Text'),col_type:'long_text'})}}d.push({title:'简介：'+parseDomForHtml(html,'p,2&&Text').replace(/　/g,''),col_type:'long_text'});res.data=d;setResult(res);`;\n} catch(e) {}\n\n//简介\ntry {\n    var des_desc = parseDomForHtml(html, '.desc&&Text').replace(/　/g, '');\n} catch(e) {}\n\n//封面\ntry {\n    var des_pic = parseDom(html, '.lazyload&&data-original');\n} catch(e) {}\n\n//线路列表\nvar tabs = parseDomForArray(html, 'body&&.container,1&&.bottom-line');\n\n//播放列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: des_desc,\n    pic_url: des_pic,\n    url: Rule,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfor (var i in tabs) {\n\n    //线路名称\n    try {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'Text'),\n            col_type: 'long_text'\n        });\n    } catch(e) {}\n\n    //选集列表\n    var list = parseDomForArray(conts[i], 'ul&&li');\n\n    for (var j in list) {\n        //选集名称以及播放链接\n        try {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2 ? 'text_3': 'text_2'\n            });\n        } catch(e) {}\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"林祥","author":"小白","version":0,"url":"https://www.qqlinxiang.cn/index.php/vod/show/area/fyarea/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".mo-main-info&&.mo-cols-rows,2&&li;.mo-situ-name&&Text;a&&data-original;.mo-situ-rema&&Text;a&&href","searchFind":"body&&.mo-deta-info;h1&&Text;a&&href;.mo-situ-rema&&Text;li,-1&&Html;a&&data-original","search_url":"https://www.qqlinxiang.cn/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.mo-tabs-item&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.mo-situ-pics&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.mo-sort-head&&h2&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"mo-movs-item[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.qqlinxiang.cn'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.mo-play-load&&data-play.js:url = base64Decode(input.slice(3))`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"87","author":"小白","version":0,"url":"http://www.qianshihouse.com/fbs/fyclass--------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"http://www.qianshihouse.com/srh/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.stui-content__detail&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.qianshihouse.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.stui-player__video&&script&&Html.js:eval(input);player_data.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"木瓜2","author":"小白","version":1,"url":"https://www.zpdyw.com/index.php/vodtype/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){} \r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist&&li;a&&title;a&&href;;.pic-text&&Text;a&&data-original","search_url":"https://www.zpdyw.com/vod/s**/page/fypage.html","titleColor":"#003399","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.stui-content__desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.zpdyw.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var jsurl = player_data.url;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#003399"},{"firstHeader":"class","title":"彩云","author":"小白","version":0,"url":"https://www.cclsu.com/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.cclsu.com/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.myui-vodlist__bd&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.cclsu.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"高真","author":"小白&路遥&Mute","version":0,"url":"https://m.gqxz.com/fyAll/list_fypage.html","col_type":"movie_3_marquee","class_name":"电脑风景&手机风景&电脑美女&手机美女&电脑植物&手机植物&电脑汽车&手机汽车&电脑明星&手机明星&电脑动漫&手机动漫&电脑建筑&手机建筑&电脑动物&手机动物","class_url":"wallpaper/1&mobile/1&wallpaper/2&mobile/2&wallpaper/3&mobile/3&wallpaper/4&mobile/4&wallpaper/5&mobile/5&wallpaper/6&mobile/6&wallpaper/7&mobile/7&wallpaper/8&mobile/8","area_name":"清纯美女&性感美女&日本美女&车模宝贝&丝袜美腿&Cosplay","area_url":"beauty/1&beauty/2&beauty/3&beauty/4&beauty/5&beauty/6","sort_name":"","year_name":"内地女星&内地男星&港台女星&欧美男星&微信头像&男生头像&女生头像&情侣头像","sort_url":"","year_url":"star/1&star/2&star/3&star/4&portrait/1&portrait/2&portrait/3&portrait/4","find_rule":".item&&li;a&&title;img&&src;p&&Text;a&&a&&href.js:input.replace('.html','_fypage.html')","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"pic_1","detail_find_rule":"#endtext&&p:has(img);;img&&src;;img&&src","sdetail_col_type":"text_3","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"882","author":"小白","version":0,"url":"https://www.88kandy.com/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.88kandy.com/vodsearch/**----------fypage---.html","titleColor":"#ff148e8e","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/h3[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.88kandy.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.stui-player__video&&script&&Html.js:eval(input);player_aaaa.url`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff148e8e"},{"title":"good","author":"小白","version":0,"url":"https://www.gugooe.com/vodshow/fyclass/area/fyarea/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"连续剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".tv-list&&li;img&&alt;img&&data-src;.v-tips&&Text;a&&href","searchFind":"body&&.item;img&&alt;a&&href;.s_score&&Text;.p_intro&&Text;img&&src","search_url":"https://www.gugooe.com/vod/s**/page/fypage.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.li_intro&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.v-pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"play_num_list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.gugooe.com'+list[j].split('href=\"')[1].split('\"')[0]+ `@lazyRule=.iplays&&script&&Html.js:eval(input);var jsurl = player_data.url;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"金温","author":"小白","version":0,"url":"http://www.kinwin.net.cn/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n// 线路\nvar tabs = parseDom(getResCode(), 'body&&.play-tab&&Html').match(/li[\\s\\S]*?<\\/li>/g);\n// 集数\nvar conts = parseDom(getResCode(), 'body&&Html').match(/<ul class=\\\"stui-play__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n\turl: getUrl(),\n\tcol_type: 'text_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.kinwin.net.cn' + list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=.embed-responsive&&script&&Html.js:eval(input)；；player_data.url',\n\t\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"title":"私房","author":"小白","version":1,"url":"https://www.sifangdata.com/index.php/vod/show/area/fyarea/id/fyclassqqqqx/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"连续剧&电影&综艺&动漫","class_url":"b&x&j&s","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".tv-list&&li;a&&title;img&&data-src;.v-tips&&Text;a&&href","searchFind":"body&&.item;img&&alt;a&&href;.v-tips&&Text;.p_intro&&Text;img&&src","search_url":"https://www.sifangdata.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②免嗅探","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.li_intro&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.v-pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.play_source_tab&&Html').match(/a[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"play_num_list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.sifangdata.com'+list[j].split('href=\"')[1].split('\"')[0]+ `@lazyRule=.iplays&&script&&Html.js:eval(input);var url=player_aaaa.url;url.indexOf('m3u8')!=-1?url:url.split('/share')[0]+fetch(url,{}).match(/url: '(.*?)'/)[1]`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"last_chapter_rule":"","title":"音乐歌词.dz","author":"道长","version":5,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n// 通用发送post请求\nfunction req(url,data) {\n    let jst = [];\n    for(let i in data){jst.push(i+'='+data[i])}\n    jst = jst.join('&');\n    // log(jst);\n    let result = request(url, {\n        headers: {\n            // 'content-type': 'application/json',\n            'content-type': 'application/x-www-form-urlencoded',\n        },\n        // body: JSON.stringify(data),\n        body: jst,\n        method: 'POST'\n    });\n    // log('result:'+result);\n    return result;\n}\nfunction initLcr(url){\n    url=url||'https://www.lrcgeci.com/lrcdown/230964.html';\n    let p1 = 'hiker://files/cache/lrc.txt';\n    let p2 = 'hiker://files/cache/lrc.json';\n    let json = request(url);\n    // 不写本地的话只能split('\\r'),无法\\n\n    writeFile(p1,json);\n    json = fetch(p1);\n    let jsd = json.split('\\n');\n    let jst = json.split('\\n').map((it)=>{\n        if(it.split(']').length>1){\n            let tm = it.split(']')[0].split('[')[1];\n            let tmm = parseInt(tm.split(':')[0])*60;\n            let tms = parseInt(tm.split(':')[1].split('.')[0]);\n            tm = parseInt(tmm+tms)+'.'+tm.split(':')[1].split('.')[1];\n            return {\n                // text:it.split(']')[1].slice(0,-1),\n                text:it.split(']')[1],\n                time:parseFloat(tm),\n            }\n        }else {\n            return false\n        }\n    });\n    jst = jst.filter(it=>it.text);\n    log('歌词共计:'+jsd.length);\n    writeFile(p2,JSON.stringify(jst));\n    // log(JSON.stringify(jst));\n    log('已下载到lrc.json\\n'+p2)\n}\nif(!fetch('hiker://files/cache/lrc.json')){\n    initLcr();\n}\nlet d=[];\nd.push({\n    title:'播放音乐视频带歌词',\n    col_type:'text_1',\n    url:$().lazyRule(()=>{\n        const {isVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n        let play = 'aHR0cDovL2p4Lm5va2lhLnByZXNzL2FwaS95c2djP2tleT1kYW96aGFuZ3l5ZHMmdXJsPWh0dHBzOi8vd3d3LmJpbGliaWxpLmNvbS92aWRlby9CVjFnNTR5MVc3YkQv';\n        //play = JSON.parse(fetch(base64Decode(play))).url;\n        play=\"https://isure.stream.qqmusic.qq.com/M500003LVpSW1ZiTfc.mp3?guid=1417605362&vkey=50281068A3BD2392CB9C1B2193DB467E8F076408E4F478F3122273F2E8E9CDDFEBEDBDDF17A17B416C7AB6D08D9B11D98B6C8FF0700718C5&uin=&fromtag=66\";\n        let s = [];\n        s.push(isVideo(play));\n        let bofang = JSON.stringify({\n            'urls': s,\n            // 'urls': isVideo(play),\n            'danmu': \"hiker://files/cache/lrc.json\"\n        });\n        log(bofang);\n        return bofang;\n    })\n});\nd.push({\n    title:\"搜索\",\n    col_type:\"input\",\n    extra:{\n        defaultValue:getVar(\"ssk\",\"\"),\n        onChange:\"putVar('ssk',input)\"\n    },\n    url:$.toString((req,initLcr)=>{\n        let key=getVar(\"ssk\",\"\");\n        log(\"搜索关键字为:\"+key);\n        let data={\n            keyboard:key,\n            show:'title,newstext',\n            tempid:1,\n            tbname:'lrc',\n            mid:1,\n            dopost:'search'\n        };\n        // log(data);\n        let html = req('https://www.lrcgeci.com/e/search/',data);\n        html = pdfa(html,'.toplist&&li');\n        var initLcr = initLcr;\n        html = html.map((it)=>{\n            //log(it);\n            let title = pdfh(it,'a,0&&Text');\n            let author = pdfh(it,'.geshou&&Text');\n            let time = pdfh(it,'.time&&Text');\n            let lrc = pdfh(it,'.lrc&&a&&href');\n            if(!/^http/.test(lrc)){\n                lrc='https://www.lrcgeci.com'+lrc;\n            }\n            // log(it);\n            log(lrc);\n            return {\n                title:title,\n                desc:author+' '+time,\n                url:$(lrc).lazyRule((initLcr)=>{\n                    initLcr(input);\n                    return 'toast://已下载到lrc.json\\n'+input\n                },initLcr),\n                col_type: 'text_1'\n            }\n        });\n        putVar('sret',JSON.stringify(html));\n        refreshPage(true);\n        return 'toast://已获取搜索结果'\n    },req,initLcr)\n});\nif(getVar('sret','')){\n    d = d.concat(JSON.parse(getVar('sret')));\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/music/33.svg"},{"last_chapter_rule":"","title":"任务仓库","author":"道长","version":16,"type":"other","url":"hiker://empty#fypage#fyclass#fyarea","col_type":"movie_1_vertical_pic","class_name":"更新时间&ID&开发者&名称","class_url":"0&1&2&3","area_name":"逆序&正序","area_url":"0&1","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    const {\n        color,\n        small,\n        api,\n        getFile\n    } = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nlet res = {};\n\nfunction task_home(){\n    let items = [];\n    let houseFile = getFile||false;\n    if(!houseFile){\n        setItem('is_house_vip', 'false');\n    }\n    let house_data = houseFile();\n    let send_data = {\"params\": {\"data\":house_data}};\n    let page = MY_URL.split('#')[1];\n    let order = MY_URL.split('#')[2];\n    let sort = MY_URL.split('#')[3];\n    let url = api.host+'/hikerule/task/get?limit=5&page='+page+'&order='+order+'&sort='+sort;\n\n    log(url);\n    if(page+''===\"1\"){\n        items.push({\n            title:'🕹管理及发布任务',\n            col_type:'flex_button',\n            url:'hiker://page/publish_task#noHistory#',\n            extra: {\n                host:api.host,\n                house_data:house_data\n            }\n        });\n        items.push({\n            title:'🍵emoji',\n            col_type:'flex_button',\n            url:'hiker://page/emoji#noHistory#',\n            extra: {\n                host:api.host,\n                house_data:house_data\n            }\n        })\n    }\n    try {\n        // let result = req(url,send_data);\n        let back = fetch(url,{});\n        let result = JSON.parse(back);\n        if(result.status===0){\n            let tasks = result.result;\n            if(tasks.length===0){\n\n                items.push({\n                    title:'当前页数:'+small(getItem(\"mission.Page\",\"0\")),\n                    desc:'已经没有下一页啦,点我刷新',\n                    extra:{f:sort+order+getVar(\"mission.Pages\",\"\")},\n                    col_type:'text_center_1',\n                    url:$(\"#noLoading#\").lazyRule(() =>{\n                        putVar(\"mission.Pages\",(new Date()).getTime())\n                        refreshPage(true);\n                        return 'toast://已刷新'\n                    }),\n                })\n                return items\n            }\n            setItem(\"mission.Page\",page);\n            for(var task of tasks){\n                items.push({\n                    title:task.name,\n                    desc:'id:'+color(task.id,\"#ff13b66a\")+'\\n作者:'+task.dev_name+'\\n更新时间'+small(task.publish_time),\n                    col_type:'movie_1_vertical_pic',\n                    pic_url:'https://api.mtyqx.cn/api/random.php?t='+Math.random(),\n                    url:\"hiker://page/task_info#noHistory#\",\n                    extra:{url:api.host+'/hikerule/task/get_info/'+task.id+'?username='+house_data.username+'&password='+house_data.password},\n                })\n            }\n        }else{\n            setItem('is_house_vip', 'false');\n            items.push({\n                title:result.detail,\n                desc:result.result,\n                col_type:'text_1',\n                url:'toast://喵喵喵？'\n            })\n            log(result.detail);\n        }\n    }catch (e) {\n        items.push({\n            title:e.message+'',\n            col_type:'long_text',\n            url:'toast://喵喵喵？'\n        })\n        log(e.message);\n    }\n    return items\n}\nres.data = task_home()\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"long_text\",\"name\":\"测试执行云函数\",\"path\":\"test_run\",\"rule\":\"js:\\nlet {task,host} = MY_PARAMS;\\nconst {color, small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nconst {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/utils?rule=\\\"+MY_RULE.title);\\n// log('规则名:'+MY_RULE.title);\\nString.prototype.strip = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); }\\nsetPageTitle(\\\"执行「\\\"+task.name+\\\"」\\\");\\naddListener('onClose', $.toString(()=>{\\n    clearVar(\\\"task_box.test_result\\\");\\n    clearVar(\\\"task_box.func_name\\\");\\n    clearVar(\\\"task_box.test_params\\\");\\n}));\\nlet d = [];\\nd.push({\\n    title: \\\"函数说明:\\\",\\n    desc:small(task.note),\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"text_1\\\"\\n});\\nd.push({\\n    title: \\\"测试代码，点击复制\\\",\\n    desc:small('注意字符串参数必须双引号，不支持单引号\\\\n')+small(task.test_code),\\n    url: \\\"copy://\\\"+task.test_code,\\n    col_type: \\\"text_1\\\"\\n});\\nd.push({\\n    title: \\\"运行模式:\\\"+getVar('task_box.test_mode','call'),\\n    url: $(['call','run'],1).select(_ => {\\n        putVar('task_box.test_mode',input);\\n        if(input==='run'){\\n            clearVar(\\\"task_box.test_params\\\");\\n        }\\n        refreshPage(true);\\n        return \\\"toast://你选择了\\\"+input\\n    }),\\n    col_type: \\\"text_1\\\"\\n})\\nif(getVar('task_box.test_mode','call')==='call'){\\n    let match_func = ret = task.pycode.match(/.*?def.*?[\\\\S]\\\\(/g);\\n    let default_func = match_func&&match_func.length>0?match_func[0].split('def')[1].split('(')[0].strip():\\\"\\\";\\n    let default_parmas = task.test_code&&task.test_code.indexOf('=>')>-1?task.test_code.split('=>')[1].strip():task.test_code;\\n    if(getVar('task_box.test_mode')==='run'){\\n        default_parmas = '[]';\\n    }\\n    d.push({\\n        title: '函数名',\\n        desc: \\\"请输入欲调用的函数名\\\",\\n        extra: {\\n            onChange: \\\"putVar('task_box.func_name',input)\\\",\\n            titleVisible: true,\\n            defaultValue: getVar('task_box.func_name', '')||default_func||\\\"\\\"\\n        },\\n        url:$.toString(() => {\\n            var func_name = getVar('task_box.func_name');\\n            return 'toast://你输入的是:'+func_name;\\n        }),\\n        col_type: \\\"input\\\"\\n    })\\n\\n    d.push({\\n        desc: \\\"传参列表,[参数1,参数2,参数3,......]\\\",\\n        col_type: 'input',\\n        extra: {\\n            titleVisible: false,\\n            defaultValue: getVar('task_box.test_params', '')||default_parmas||\\\"[]\\\",\\n            type: \\\"textarea\\\",\\n            height:-1,\\n            onChange: 'putVar(\\\"task_box.test_params\\\",input)'\\n        }\\n    });\\n}\\nd.push({\\n    title: \\\"▶️执行\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: $(host+\\\"/hikerule/task/run/\\\"+task.id).lazyRule((task,taskReq) => {\\n        let call_params = [];\\n        String.prototype.strip = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); }\\n        let test_mode = getVar('task_box.test_mode','call'), func_name=getVar('task_box.func_name'),test_params=getVar('task_box.test_params');\\n        try {\\n            call_params = JSON.parse(test_params||'[]');\\n        }\\n        catch (e) {\\n            return \\\"toast://参数格式错误，必须为[]列表形式\\\\n\\\" + test_params;\\n        }\\n        if(func_name&&task.pycode.indexOf(func_name)===-1){\\n            return \\\"toast://调用函数\\\"+func_name+\\\"错误\\\\n\\\" + \\\"没找到代码包含此函数\\\";\\n        }\\n        let real_params = JSON.stringify(call_params).strip();\\n        if(!(real_params.startsWith('[')&&real_params.endsWith(']'))){\\n            return \\\"toast://参数格式错误，可不填或者必须[开头,]结束\\\\n\\\" + JSON.stringify(call_params);\\n        }\\n        let result = taskReq(input,{mode:test_mode,func:func_name,params:call_params});\\n        log(result);\\n        if (result.status !== 0) {\\n            putVar('task_box.test_result',result.detail);\\n            refreshPage(true);\\n            return \\\"toast://\\\" + result.detail;\\n        }\\n        putVar('task_box.test_result',result.result||\\\"None\\\");\\n        refreshPage(true);\\n        return \\\"toast://执行完毕,结果为:\\\"+ result.result;\\n    },task,taskReq)\\n});\\nd.push({\\n    title:'运行结果',\\n    col_type:'text_1',\\n    url:'hiker://empty'\\n});\\nd.push({\\n    title:getVar('task_box.test_result',''),\\n    col_type:'long_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具类函数\",\"path\":\"utils\",\"rule\":\"js:\\n    String.prototype.strip = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); };\\nfunction task_req(task_api,task) { // 通用发送仓库post调用任务请求\\n    const {getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let result = request(task_api, {\\n        headers: {\\n            'content-type': 'application/json'\\n        },\\n        body: JSON.stringify({\\n            \\\"params\\\": {\\n                \\\"data\\\": {\\n                    \\\"type\\\": task.mode||'run',\\n                    \\\"func\\\": task.func||'',\\n                    \\\"params\\\": task.params||[]\\n                },\\n                \\\"auth\\\": {\\n                    \\\"name\\\": house_data.username||\\\"\\\",\\n                    \\\"password\\\": house_data.password||\\\"\\\"\\n                }\\n            }\\n        }),\\n        method: 'POST'\\n    });\\n    return JSON.parse(result).result;\\n}\\n\\nfunction task_upload(task){ // 通用任务发布新增及修改功能\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let api_url = api.host+'/hikerule/task/add';\\n    let house_data = houseFile();\\n    let result = request(api_url, {\\n        headers: {\\n            'content-type': 'application/json'\\n        },\\n        body: JSON.stringify({\\n            \\\"params\\\": {\\n                \\\"data\\\": {\\n                    \\\"name\\\": task.name,\\n                    \\\"pycode\\\": task.pycode,\\n                    \\\"note\\\": task.note,\\n                    \\\"test_code\\\": task.test_code,\\n                },\\n                \\\"auth\\\": {\\n                    \\\"name\\\": house_data.username||\\\"\\\",\\n                    \\\"password\\\": house_data.password||\\\"\\\"\\n                }\\n            }\\n        }),\\n        method: 'POST'\\n    });\\n    return JSON.parse(result).result;\\n}\\n\\nfunction task_call(id,func,params){\\n    const {api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let task_api = api.host+'/hikerule/task/run/'+id;\\n    let task = {\\n        mode:'call',\\n        func:func,\\n        params:params||[]\\n    };\\n    return task_req(task_api,task);\\n}\\n\\nfunction task_rename(id,new_task_name){\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let task_api = api.host+'/hikerule/task/rename/'+id;\\n    task_api = task_api+'?name='+house_data.username+'&password='+house_data.password+'&task_name='+new_task_name;\\n    try {\\n        let result = JSON.parse(fetch(task_api,{}));\\n        if(result.status==0){\\n            return  result.detail\\n        }else{\\n            return result.result+''+result.detail\\n        }\\n    }catch (e) {\\n        log(e.message);\\n        return ''+e.message\\n    }\\n}\\n\\nfunction task_change_state(id){\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let task_api = api.host+'/hikerule/task/change_state/'+id;\\n    task_api = task_api+'?name='+house_data.username+'&password='+house_data.password;\\n    try {\\n        let result = JSON.parse(fetch(task_api,{}));\\n        if(result.status==0){\\n            return  result.detail\\n        }else{\\n            return result.result+''+result.detail\\n        }\\n    }catch (e) {\\n        log(e.message);\\n        return ''+e.message\\n    }\\n}\\n\\nfunction task_change_visible(id){\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let task_api = api.host+'/hikerule/task/change_visible/'+id;\\n    task_api = task_api+'?name='+house_data.username+'&password='+house_data.password;\\n    try {\\n        let result = JSON.parse(fetch(task_api,{}));\\n        if(result.status===0){\\n            return  result.detail\\n        }else{\\n            return result.result+''+result.detail\\n        }\\n    }catch (e) {\\n        log(e.message);\\n        return ''+e.message\\n    }\\n}\\n\\nfunction task_run(id){\\n    const {api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let task_api = api.host+'/hikerule/task/run/'+id;\\n    let task = {};\\n    return task_req(task_api,task);\\n}\\n\\n$.exports.taskCall = task_call;\\n$.exports.taskRun = task_run;\\n$.exports.taskReq = task_req;\\n$.exports.taskUpload = task_upload;\\n$.exports.taskRename = task_rename;\\n$.exports.taskChangeState = task_change_state;\\n$.exports.taskChangeVisible = task_change_visible;\"},{\"name\":\"任务管理发布\",\"path\":\"publish_task\",\"rule\":\"js:\\nlet {host,house_data} = MY_PARAMS;\\nsetPageTitle(\\\"任务管理「\\\"+house_data.username+\\\"」\\\");\\nlet d = [];\\nd.push({\\n    title:'🗒新建/更新✏',\\n    col_type:'flex_button',\\n    url:'hiker://page/new_task#noHistory#',\\n});\\n\\nlet url = host+'/hikerule/task/get_by_dev?name='+house_data.username+'&password='+house_data.password;\\ntry {\\n    let result = JSON.parse(fetch(url,{}));\\n    d.push({\\n        title:result.detail,\\n        col_type:'text_center_1',\\n        url:'hiker://empty',\\n    });\\n\\n    if(result.status===0){\\n        let tasks = result.result;\\n        for(var task of tasks){\\n            d.push({\\n                title:'🐉'+task.name+'(id:'+task.id+')',\\n                col_type:'text_2',\\n                url:'hiker://page/task_info#noHistory#',\\n                extra:{url:host+'/hikerule/task/get_info/'+task.id+'?name='+house_data.username+'&password='+house_data.password,\\n                can_update:true,can_delete:true,\\n                },\\n            });\\n        }\\n    }\\n}catch (e) {\\n    log(e.message);\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"任务详情\",\"path\":\"task_info\",\"rule\":\"js:\\n    const {color, small,api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet {url,can_update,can_delete} = MY_PARAMS;\\nlog(url);\\nfunction req(url,data) { // 通用发送仓库post请求\\n    let result = request(url, {\\n        headers: {\\n            'content-type': 'application/json'\\n        },\\n        body: JSON.stringify(data),\\n        method: 'POST'\\n    });\\n    return JSON.parse(result).result;\\n}\\nlet houseFile = getFile||false;\\nif(!houseFile){\\n    setItem('is_house_vip', 'false');\\n}\\nlet house_data = houseFile();\\n\\nlet res = {};\\nlet items = [];\\nlet back_code = fetch(url,{});\\nback_code = JSON.parse(back_code);\\nif(back_code.status===0){\\n    let task = back_code.result;\\n    let tips = can_delete?' (点击删除)':'';\\n    items.push(\\n        {\\n            title:task.name+tips,\\n            desc:'id:'+task.id+'  可视状态:'+task.visible+'\\\\n作者:'+task.dev_name+' 分享状态:'+task.state+'\\\\n更新时间'+task.publish_time,\\n            col_type:'movie_1_vertical_pic',\\n            pic_url:'https://api.mtyqx.cn/api/random.php?t='+Math.random(),\\n            url:!can_delete?'hiker://empty':$(\\\"确认删除?\\\").confirm((task,host,house_data)=>{\\n                let del_url = host+'/hikerule/task/delete/'+task.id+'?name='+house_data.username+'&password='+house_data.password;\\n                try {\\n                    let result = JSON.parse(fetch(del_url,{}));\\n                    if(result.status===0){\\n                        back(true);\\n                        return \\\"toast://\\\"+result.detail;\\n                    }\\n                }catch (e) {\\n                    return \\\"toast://出错了:\\\\n\\\"+e.message;\\n                }\\n\\n            },task,api.host,house_data),\\n        }\\n    );\\n    let ruleCode = \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/python/\\\"+task.name+\\\".py@\\\"+MY_URL+\\\"&debug=1\\\";\\n    let importUrl = 'rule://' + base64Encode(ruleCode);\\n\\n    items.push(\\n        {\\n            title:'📥导入',\\n            col_type: 'flex_button',\\n            url:importUrl\\n        }\\n    );\\n\\n    items.push(\\n        {\\n            title:'📝本地编辑',\\n            col_type: 'flex_button',\\n            url:$().lazyRule((task) => {\\n                return 'editFile://hiker://files/rules/dzHouse/python/'+task.name+'.py';\\n            },task)\\n        }\\n    );\\n\\n    items.push(\\n        {\\n            title:'▶️测试执行',\\n            col_type: 'flex_button',\\n            url:\\\"hiker://page/test_run#noHistory#\\\",\\n            extra: {\\n                task:task,\\n                host:api.host,\\n                house_data:house_data\\n            }\\n        }\\n    );\\n\\n    if(can_update){\\n        items.push(\\n            {\\n                title:'▶重发布',\\n                col_type: 'flex_button',\\n                url:'hiker://page/new_task#noHistory#',\\n                extra: {\\n                    task:task,\\n                    // host:api.host,\\n                    // house_data:house_data\\n                }\\n            }\\n        );\\n        items.push(\\n            {\\n                title:'🍇任务改名',\\n                col_type: 'flex_button',\\n                url:$(task.name, \\\"输入新的任务名称\\\").input((task) => {\\n                    return $(\\\"确认将\\\"+task.name+\\\"修改为:\\\"+input+' ?').confirm((input,task)=>{\\n                        // log(task.id);\\n                        const {taskRename} = $.require(\\\"hiker://page/utils?rule=\\\"+MY_RULE.title);\\n                        let result = taskRename(task.id,input);\\n                        refreshPage(true);\\n                        // back(true);\\n                        return \\\"toast://\\\"+result;\\n                    },input,task);\\n                },task),\\n            }\\n        );\\n\\n        items.push(\\n            {\\n                title:'🍰更改分享状态',\\n                col_type: 'flex_button',\\n                url:$().lazyRule((task) => {\\n                    const {taskChangeState} = $.require(\\\"hiker://page/utils?rule=\\\"+MY_RULE.title);\\n                    let result = taskChangeState(task.id);\\n                    refreshPage(true);\\n                    return 'toast://'+result;\\n                },task),\\n            }\\n        );\\n\\n        items.push(\\n            {\\n                title:task.visible?'👀可视':'👀不可视',\\n                col_type: 'flex_button',\\n                url:$().lazyRule((task) => {\\n                    const {taskChangeVisible} = $.require(\\\"hiker://page/utils?rule=\\\"+MY_RULE.title);\\n                    let result = taskChangeVisible(task.id);\\n                    refreshPage(true);\\n                    return 'toast://'+result;\\n                },task),\\n            }\\n        );\\n    }\\n\\n    items.push(\\n        {\\n            title:'备注',\\n            desc:small(task.note),\\n            col_type: 'text_1',\\n            url:'toast://'+task.note\\n        }\\n    );\\n\\n    items.push({\\n        title:'✍python代码:',\\n        col_type:'text_1',\\n        url:'hiker://empty'\\n    })\\n\\n    items.push(\\n        {\\n            title:task.pycode,\\n            col_type:'long_text'\\n        }\\n    );\\n}\\nres.data = items;\\nsetHomeResult(res);\"},{\"name\":\"新建任务\",\"path\":\"new_task\",\"rule\":\"js:\\n\\nconst {taskUpload} = $.require(\\\"hiker://page/utils?rule=\\\"+MY_RULE.title);\\nlet {task} = MY_PARAMS;\\nif(!task){\\n    task = {}\\n}else{\\n    if(!getVar('task_box.new_task_name')){\\n        putVar('task_box.new_task_name',task.name);\\n    }\\n    if(!getVar('task_box.new_task_note')){\\n        putVar('task_box.new_task_note',task.note);\\n    }\\n    if(!getVar('task_box.new_task_pycode')){\\n        putVar('task_box.new_task_pycode',task.pycode);\\n    }\\n    if(!getVar('task_box.new_task_test_code')){\\n        putVar('task_box.new_task_test_code',task.test_code);\\n    }\\n}\\nString.prototype.strip = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); }\\nsetPageTitle(\\\"新建任务\\\");\\naddListener('onClose', $.toString(()=>{\\n    // clearVar(\\\"task_box.new_task_name\\\");\\n    clearVar(\\\"task_box.new_task_note\\\");\\n    clearVar(\\\"task_box.new_task_pycode\\\");\\n    clearVar(\\\"task_box.new_task_test_code\\\");\\n}));\\nlet d = [];\\nd.push({\\n    title: '任务名称',\\n    desc: \\\"任务名称,如ikuuu签到\\\",\\n    extra: {\\n        onChange: \\\"putVar('task_box.new_task_name',input)\\\",\\n        titleVisible: true,\\n        defaultValue: getVar('task_box.new_task_name', '')||task.name||\\\"\\\"\\n    },\\n    url:$.toString(() => {\\n        let task_name = getVar('task_box.new_task_name');\\n        return 'toast://你输入的是:'+task_name;\\n    }),\\n    col_type: \\\"input\\\"\\n});\\nd.push({\\n    desc: \\\"备注\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('task_box.new_task_note', '')||task.note||\\\"\\\",\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        onChange: 'putVar(\\\"task_box.new_task_note\\\",input)'\\n    }\\n});\\nd.push({\\n    desc: \\\"测试代码\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('task_box.new_task_test_code', '')||task.test_code||\\\"\\\",\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        onChange: 'putVar(\\\"task_box.new_task_test_code\\\",input)'\\n    }\\n});\\nd.push({\\n    title:'py代码:📝本地编辑',\\n    col_type:'flex_button',\\n    url:$().lazyRule(() => {\\n        if(!getVar('task_box.new_task_name', '')){\\n            return 'toast://本地编辑必须先填写任务名称'\\n        }\\n        let filepath = 'hiker://files/rules/dzHouse/python/'+getVar('task_box.new_task_name', '')+'.py';\\n        if(!fileExist(filepath)){\\n            writeFile(filepath, '# python3\\\\n');\\n        }\\n        return 'editFile://'+filepath;\\n    })\\n});\\nd.push({\\n    title:'🔄刷新代码框',\\n    col_type:'flex_button',\\n    url:$().lazyRule(() => {\\n        if(!getVar('task_box.new_task_name', '')){\\n            return 'toast://刷新必须先填写任务名称'\\n        }\\n        let file_path = 'hiker://files/rules/dzHouse/python/'+getVar('task_box.new_task_name', '')+'.py';\\n        putVar('task_box.new_task_pycode',fetch(file_path));\\n        refreshPage(true);\\n        return 'toast://已刷新';\\n    })\\n});\\nd.push({\\n    title:'📲发布',\\n    col_type:'flex_button',\\n    url:$().lazyRule((taskUpload) => {\\n        if(!getVar('task_box.new_task_name', '')||!getVar('task_box.new_task_pycode', '')){\\n            return 'toast://发布任务必须保证任务名称及代码填写'\\n        }\\n        let task = {\\n            name:getVar('task_box.new_task_name', ''),\\n            pycode:getVar('task_box.new_task_pycode', ''),\\n            note:getVar('task_box.new_task_note', ''),\\n            test_code:getVar('task_box.new_task_test_code', ''),\\n        };\\n        let result = taskUpload(task);\\n        if(result.status===0){\\n            return 'toast://'+result.detail;\\n        }else{\\n            return 'toast://'+result.result+result.detail;\\n        }\\n    },taskUpload)\\n});\\n\\nd.push({\\n    desc: \\\"任务代码\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('task_box.new_task_pycode', '')||task.pycode||\\\"\\\",\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        onChange: 'putVar(\\\"task_box.new_task_pycode\\\",input)'\\n    }\\n});\\nsetResult(d);\"},{\"name\":\"emoji表情\",\"path\":\"emoji\",\"rule\":\"js:\\nlet d = [];\\nlet Data = [];\\nlet cate_urls = ['1','2'];\\nif(!getVar('now_emoji_url')){\\n    putVar('now_emoji_url','http://www.fhdq.net/emoji/8.html');\\n}\\nfor(var cate of cate_urls){\\n    Data.push({\\n        url: 'http://www.fhdq.net/emoji/list_'+cate+'.html',\\n        options: {\\n            headers: {\\n                \\\"User-Agent\\\": \\\"Dart/2.13 (dart:io)\\\"\\n            },\\n            timeout: 5000\\n        }\\n    });\\n}\\nvar bhtml = batchFetch(Data);\\nfor(var bth of bhtml){\\n    let emoji_cate = pdfa(bth,'.listbox&&li');\\n    // log(emoji_cate);\\n    for(let cate of emoji_cate){\\n        try {\\n            let title = pdfh(cate,'li&&Text');\\n            if(title.replace(/[\\\\s]/g,'').length>0){\\n                let url = 'http://www.fhdq.net'+pdfh(cate,'a&&href');\\n                let tips = getVar('now_emoji_url')===url?'✌':'';\\n                title = title.replace('emoji','')+tips;\\n                d.push(\\n                    {\\n                        title:title,\\n                        url:$().lazyRule((url,title) => {\\n                            putVar('now_emoji_url',url);\\n                            refreshPage(true);\\n                            return 'toast://当前emoji分类:'+title;\\n                        },url,title),\\n                        col_type:'scroll_button'\\n                    }\\n                );\\n            }\\n        }\\n        catch (e) {\\n\\n        }\\n    }\\n}\\n\\nlet html=fetch(getVar('now_emoji_url'));\\nlet emoji_list = pdfa(html,'.emojilistpc&&li');\\nfor(var emoji of emoji_list){\\n    let title = pdfh(emoji,'li&&Text');\\n    d.push({\\n        title:title,\\n        col_type:'flex_button',\\n        url:'copy://'+title\\n    });\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/168.png"},{"last_chapter_rule":"","title":"本地文件分享","author":"道长","version":5,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\nlet d=[];\\nd.push({\\n    title:'可将本地文件分享为海阔视界能导入的口令',\\n    col_type:'text_1',\\n    desc:'点击可来个栗子',\\n    url:$().lazyRule(()=>{\\n        putVar('house.share_file','/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/主页时钟天气.html');\\n        refreshPage(true);\\n        return 'toast://栗子已经给你了'\\n    })\\n});\\nd.push({\\n    title: '分享',\\n    desc: \\\"本地文件路径\\\",\\n    extra: {\\n        onChange: \\\"putVar('house.share_file',input)\\\",\\n        titleVisible: true,\\n        defaultValue:getVar('house.share_file')\\n    },\\n    url:$.toString(() => {\\n        // 定义字符串替换全部函数\\n        if(getVar('house.share_file')&&/hiker:\\\\/\\\\/|file:\\\\/\\\\/|\\\\/storage\\\\/|\\\\/sdcard\\\\//.test(getVar('house.share_file'))) {\\n            let file_path = getVar('house.share_file');\\n            if(file_path.startsWith('/storage/')||file_path.startsWith('/sdcard/')){\\n                file_path = 'file://'+file_path\\n            }\\n            if(!fetch(file_path)){\\n                return 'toast://你再确认下这个文件是否存在值或者是否在海阔视界的目录?'\\n            }\\n            let text = fetch(file_path);\\n            let new_name = file_path.split('/').reverse()[0];\\n            const {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/taskCall?rule=道长仓库Pro\\\");\\n            log('开始执行任务仓库获取文件外链');\\n            let result = taskCall(15,'uploadText',[new_name,text]);\\n            let short_url = file_path;\\n            log('返回状态码:'+result.status);\\n            if (result.status == 0) {\\n                short_url = result.result[0];\\n                log(short_url);\\n            }\\n            let import_bg = '海阔视界本地文件分享￥file_url￥'+file_path+'@';\\n            let import_code = short_url?import_bg+short_url:import_bg+base64Encode(text);\\n            let pastes = getPastes();\\n            let importUrl = sharePaste(import_code,pastes[2]);\\n            copy(importUrl);\\n            putVar(\\\"house.share_file_code\\\",importUrl+'\\\\n\\\\n本地文件:'+new_name);\\n            refreshPage(true);\\n            return 'toast://已生成本地文件'+new_name+'的分享口令'\\n        }else{\\n            return 'toast://你个憨批，本道不陪你玩了';\\n        }\\n    }),\\n    col_type: \\\"input\\\"\\n});\\nd.push({\\n    title:\\\"复制剪切板口令\\\",\\n    desc:\\\"生成后会自动复制,这里留个复制历史记录\\\",\\n    col_type:\\\"text_1\\\",\\n    url:$().lazyRule(()=>{\\n        copy(getVar(\\\"house.share_file_code\\\"));\\n        return \\\"hiker://empty\\\"\\n    })\\n});\\nd.push({\\n    title:getVar(\\\"house.share_file_code\\\"),\\n    col_type:\\\"long_text\\\"\\n});\\n\\nsetResult(d);\"}]","icon":""},{"last_chapter_rule":"","title":"冷眸软件","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.lmrjk.cn\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"道长工具箱","author":"道长","version":9,"type":"other","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet tools = [\n    {\n        key:'hiker://files/rules/dzHouse/html/分类生成器.html',\n        value:'https://erp.scwinbao.com/hikerule/rulelist.json?id=410',\n        title:'分类生成器',\n        pic:'https://static.easyicon.net/preview/112/1120144.gif'\n    },\n    {\n        key:'hiker://files/rules/dzHouse/html/静态文件下载器.html',\n        value:'https://erp.scwinbao.com/hikerule/rulelist.json?id=475',\n        title:'静态文件下载器',\n        pic:'https://static.easyicon.net/preview/126/1261980.gif'\n\n    },\n    {\n        key:'hiker://files/rules/dzHouse/html/有道云规则.html',\n        value:'https://erp.scwinbao.com/hikerule/rulelist.json?id=504',\n        title:'有道云规则导入',\n        pic:'https://note.youdao.com/favicon.ico'\n    }\n];\nd.push({\n    title: '““””<small>道长的视界工具箱</small>',\n    col_type: 'text_center_1',\n    desc: '““””<small>现有'+'<span style=\"color: #ff7000\"> '+tools.length+' </span>个小工具\\n一键更新所有静态页面</small>',\n    url: $(JSON.stringify(tools)).lazyRule(() =>{\n        let tools = JSON.parse(input);\n        let t = [];\n        let f = [];\n        for(var i=0;i<tools.length;i++){\n            let tool = tools[i];\n             try {\n                writeFile(tool.key,fetch(tool.value,{headers:{'Referer':'https://blog.csdn.net','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36'}}));\n                t.push(tool.title);\n            }catch (e) {\n                f.push(tool.title);\n            }\n        }\n        return \"toast://本此更新成功:\\n\"+t.join('&')+'\\n失败:'+(f.join('&')||'无');\n    })\n});\n\nfunction init_tools() {\n    for(tool of tools) {\n        try {\n            let car = fetch(tool.key);\n            if (!car) {\n                writeFile(tool.key, fetch(tool.value, {headers: {'Referer': 'https://blog.csdn.net', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36'}}));\n            }\n            let file = \"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/\"+tool.key.split('/')[tool.key.split('/').length-1];\n            d.push({\n                title:tool.title,\n                pic_url:tool.pic,\n                // desc:'分类生成器',\n                url:'hiker://empty@rule=js:setResult([{url:\"'+file+'\",desc:\"100%&&float\",col_type:\"x5_webview_single\"}])',\n            });\n        } catch (e) {}\n    }\n\n    try {\n        let cpath = 'hiker://files/rules/js/underscore-min.js';\n        let underscore = fetch(cpath);\n        if(!underscore){\n            writeFile(cpath,fetch('https://erp.scwinbao.com/hikerule/rulelist.json?id=502',{headers:{'Referer':'https://blog.csdn.net','User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36'}}));\n        }\n    }catch (e) {}\n}\n\ninit_tools();\n// 处理底部搜索框挡住卡片的问题\nd.push({\n    col_type: 'long_text'\n});\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"菜鸟教程𝔥","author":"Hood","version":1,"type":"other","url":"https://www.runoob.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//线路列表\nvar tabs = parseDomForArray(html, '.middle-column-home&&h2');\n\n//全部选集\nvar conts = parseDomForArray(html, '.middle-column-home&&.codelist-desktop');\n\nfor(var i in conts){\n\nif(i!=0) d.push({col_type: 'line_blank'});\n\n//线路名称\nd.push({\n    title: '““””<b>'+'<span style=\"color: #33CC99\">'+parseDomForHtml(tabs[i],'h2&&Text')+'</span></b>',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_center_1'});\n\n//单线路选集列表\nvar list = parseDomForArray(conts[i], 'div&&a');\n\n//选集名称\nfor(var j=0; j<list.length; j++){\n    d.push({\n        title: j + 1 + \".\" + parseDomForHtml(list[j],'h4&&Text').replace(/【|】|学习| /g,\"\"),\n        desc: parseDomForHtml(list[j],'strong&&Text'),\n        pic_url: parseDom(list[j],'img&&src'),\n        url: \"x5://\" + parseDom(list[j],'a&&href'),\n        col_type: 'text_1'});\n    }\n}\n\nfor(var b=0; b<5; b++){d.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.archive-list&&.archive-list-item');\n\nfor(var i in list){\n\nd.push({\n\ntitle: parseDomForHtml(list[i],'h2&&Text'),\ncontent:parseDomForHtml(list[i],'p&&Text'),\nurl: parseDom(list[i],'a&&href')\n\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.runoob.com/?s=**&page=fypage","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"网址伪装","author":"小棉袄🌞","version":1,"type":"tool","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//随机图API地址，设置为空不显示图片\nlet pic = \"https://api.isoyu.com/bing_images.php\";\n//二次元：https://api.ixiaowai.cn/api/api.php\n//美女：https://api.btstu.cn/sjbz/api.php\n//是否随机图，0固定，1随机（5分钟内固定）\nlet random = 1;\nlet urls = {\n    \"Looonger\": \"https://ooooooooooooooooooooooo.ooo/\",\n    \"转表情\": \"https://emojied.net/\"\n}\nlet arr = [];\nif (pic) {\n    arr.push({\n        title: \"\",\n        url: pic,\n        col_type: \"card_pic_1\",\n        desc: \"0\",\n        pic_url: random ? (pic + \"#_t=\" + Math.ceil(new Date().getTime() / 300000)) : pic\n    });\n    arr.push({\n        col_type: \"big_blank_block\"\n    });\n}\nfor (let it of Object.keys(urls)) {\n    arr.push({\n        title: it,\n        url: urls[it],\n        col_type: \"text_2\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n}\n\nsetResult(arr);","searchFind":"","search_url":"","group":"②工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\nlet u = decodeURIComponent(getParam(\\\"u\\\"));\\nlog(u);\\nlet a = u.split(\\\"pwd=\\\");\\nif (a.length > 1 && a[1]) {\\n    d.push({\\n        title: \\\"点击复制提取码：\\\" + a[1],\\n        url: \\\"copy://\\\" + a[1],\\n    });\\n}\\nd.push({\\n    title: \\\"链接嗅探中，请稍候\\\",\\n    url: u,\\n    col_type: \\\"\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        id: MY_RULE.title + \\\"@dd\\\"\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: u,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"1&&list\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: $.toString((id) => {\\n            if (input.startsWith(\\\"bdnetdisk\\\")) {\\n                log(input);\\n                return $.toString((id, u) => {\\n                    let lazy = $$$().lazyRule((id, u) => {\\n                        updateItem(id, {\\n                            title: \\\"点击保存到百度网盘\\\",\\n                            url: u\\n                        });\\n                    }, id, u);\\n                    fy_bridge_app.parseLazyRuleAsync(lazy, \\\"log(input)\\\");\\n                }, id, input);\\n            }\\n        }, MY_RULE.title + \\\"@dd\\\")\\n    }\\n});\\n\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"心理FM","author":"Killer","version":0,"type":"music","url":"http://m.xinli001.com/fm/list?flag=fypage","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"音频","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('通用解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\ntry{\nvar list = pdfa(html,'.content&&li');\nfor (var j in list) {\n  d.push({\n     title: pdfh(list[j], '.li-left-title&&Text'),\n     desc:pdfh(list[j], '.li-left-b&&Text'),\n     pic_url: parseDom(list[j], 'img&&src'),\n     url: parseDom(list[j], 'a&&href')+lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"②常用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"看大雪电影.K","author":"Killer","version":0,"type":"other","url":"http://www.kandaxue.com/a48-type/fyclass-fypage/","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"body&&.stui-vodlist&&li;h4&&Text;\na&&href;\n.pic-text&&Text;\n;\n.lazyload&&data-original;","search_url":"http://www.kandaxue.com/a48search/**----------fypage---/","titleColor":"#ff673ab7","group":"②影二","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html=getResCode();\r\n\n\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);decodeURIComponent(player_data.url)`;\n\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小狐·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://api.tv.sohu.com/v4/search/channel/sub.json?subId=fyAll&offset=fypage@-1@*12@&page_size=12","col_type":"movie_3","class_name":" 剧集 & 美剧 & 动漫 & 综艺 ","class_url":"16&18&39&32","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:     \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\nif(json.data.videos)\nfor (var i = 0; i < json.data.videos.length; i ++) {\nvar j=json.data.videos[i];\n\nd.push({\ntitle:j.album_name,\npic_url:j.hor_w8_pic,\ndesc:j.tip,\nurl:'https://s1.api.tv.itc.cn/v4/album/videos/'+j.aid+'.json?page=fypage&page_size=50&order=0&prevideo_rule=1&with_fee_video=3&with_trailer=2&with_prevideo=1&with_pgc_video=1'\n}); }\nres.data=d;setHomeResult(res);","searchFind":"js:var res={};var d=[];\nvar json = getResCode().split('jsonpx1617550242972_59_6')[1];\neval('json='+json)\nfor (var i = 0; i < json.data.items.length; i ++) {\nvar j=json.data.items[i];\nif(j.is_album==1&j.aid!==0&!j.whole_source){\nd.push({\ntitle:j.album_name,\nurl:'https://s1.api.tv.itc.cn/v4/album/videos/'+j.aid+'.json?page_size=50&page=fypage&order=0&prevideo_rule=1&with_fee_video=3&with_trailer=2&with_prevideo=1&with_pgc_video=1',\nimg:j.hor_high_pic,\ndesc:j.second_cate_name,\ncontent:j.main_actor\n}); }}\nres.data=d;setSearchResult(res);","search_url":"https://m.so.tv.sohu.com/search/new/keyword?callback=jsonpx1617550242972_59_6&all=0&key=**&page=fypage&page_size=30","titleColor":"#fff20c00","group":"②影搜","detail_col_type":"movie_2","detail_find_rule":"js:     \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\nif(json.data.videos)\nfor (var i = 0; i < json.data.videos.length; i ++) {\nvar j = json.data.videos[i];\nvar jso = JSON.parse(fetch('https://m.tv.sohu.com/phone_playinfo?vid='+j.vid+'&site=1&appid=tv',{}));\nvar urs=jso.data.url_html5;\nd.push({\ntitle:'第'+j.video_order+'集',\npic_url:j.hor_w8_pic,\ndesc:j.video_name,\nurl:urs+`@lazyRule=.js:JSON.parse(request('http://parse.tyun77.cn/973jiexi/api/api.php?pltfrom=1100&url='+input)).url`\n}); }\nres.data=d;setHomeResult(res);","sdetail_col_type":"movie_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://m.tv.sohu.com/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"77影视大全","author":"香雅情","version":2,"type":"other","url":"http://api.kunyu77.com/api.php/provide/searchFilter?type_id=fyclass&pagenum=fypage&pagesize=24&year=fyyear&area=fyarea;get;utf-8;{User-Agent@Dalvik/2.1.0}","col_type":"movie_3","class_name":"全部&电影&电视剧&综艺&动漫","class_url":"0&1&2&3&4","area_name":"全部&中国大陆&美国&日本&中国香港&中国台湾&韩国&欧洲&其他","area_url":"&中国大陆&美国&日本&中国香港&中国台湾&韩国&欧洲&泰国","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2015之前","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&lt|2015","find_rule":"js:\nvar json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.result.length; i++) {\r\n    var r = {};\r\n    var j = json.data.result[i];\r\n    r.title = j.title;\r\n    r.desc = j.msg;\r\n    r.pic_url = j.videoCover;\n    r.url = 'http://api.kunyu77.com/api.php/provide/videoPlaylist?ids='+j.id;\r\n    if (r.title !== null && r.title !== undefined && r.title !== '')\nd.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.length; i++) {\r\n    var r = {};\r\n    var j = json.data[i];\r\n    r.title = j.videoName;\n    r.url = 'http://api.kunyu77.com/api.php/provide/videoPlaylist?ids='+j.id;\r\n    r.desc = j.msg;\n    r.content = j.briefContext;\r\n    r.img = j.videoCover;\r\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\r\n}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"http://api.kunyu77.com/api.php/provide/searchVideo?searchName=**&pg=fypage;get;utf-8;{User-Agent@okhttp/3.12.0}","titleColor":"#ff13b66a","group":"②影搜","detail_col_type":"text_2","detail_find_rule":"js:\n//多线路设置，1为显示多线路，0为单线。\nvar mult='1';\n//动态解析代码\nvar lazy= `@lazyRule=.js:var src = input;if(src.indexOf('html')!=-1){var jx='http://parse.tyun77.cn/973jiexi/api/api.php?pltfrom=1100&url='+src;var play=JSON.parse(fetch(jx,{})).url;if(play.indexOf('jiexi')!=-1){JSON.parse(fetch(play, {headers:{\"User-Agent\":\"Lavf/57.83.100\"}, redirect:false, withHeaders:true})).headers.location[0];}else{play};}else{if(src.indexOf('GetDownUrl')!=-1){src+'；；{User-Agent@Lavf/57.83.100}';}else{src}}`;\n//规则解析开始\nvar json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.episodes.length; i++) {\r\n    var r = {};\r\n    var j = json.data.episodes[i];\r\n    r.title = j.episode+'';\n    r.url = j.playurl+lazy;\n    r.col_type = mult== '1' ? 'text_center_1' : 'text_2';\n    d.push(r);\nif(mult=='1'){\n    for (var i2 = 0; i2< j.playurls.length; i2++) {\n        var r2 = {};\n        var j2 = j.playurls[i2];\n        r2.title = j.episode+'-'+j2.playfrom;\n        r2.url = j2.playurl+lazy;\n        r2.col_type = 'text_2';\n        d.push(r2);\n    }\n}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"野马影视","author":"道长","version":1,"type":"video","url":"hiker://empty##http://v.yemays.tk/api.php/app#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"②影搜","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=野马影视"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'span&&Text');\nsetResult(\"更新至: \"+title);","title":"好看剧","author":"七&顺","version":20220328,"type":"other","url":"https://www.haokanju1.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nif (getVar(MY_RULE.group, \"0\") == 0) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n    顺搜(d)\n}\n\nconst Color = \"#19B89D\";\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\n//log(true_url)\nconst page = MY_PAGE\n//log(page)\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/---(\\d*)\\.html/, +page + '---$1.html');\n    log(true_url)\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, '#main&&.scroll-content')\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_RULE.group, \"0\")\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color:' + Color + '\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color:' + Color + '\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n\n//一级页面\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, 'body&&.module-list&&.module-search-item');\n\nfor (var i = 0; i < list.length; i++) {\n    var L = list[i];\n    d.push({\n        title: pdfh(list[i], 'img&&alt'),\n        url: pd(list[i], 'a,1&&href') + '#immersiveTheme#',\n        desc: pdfh(list[i], '.video-info&&a&&Text'),\n        content: pdfh(list[i], '.video-info-main&&.video-info-item,2&&Text'),\n        img: pd(list[i], 'img&&data-src'),\n    });\n}\nsetResult(d)","search_url":"https://www.haokanju1.cc/vodsearch/**----------fypage---.html","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"js:\n/*--变量名别动--*/\nconst Color = \"#19B89D\";\nvar html = getResCode();\n//标题\nvar title = pdfh(html, 'h1&&Text');\nvar title_big = title; //显示的白色大字\n//封面图 一定不要加Referer\nvar des_pic = pd(html, '.lazyload&&data-src');\n//剧情简介\nvar des_desc = pdfh(html, '.vod_content&&span&&Text').replace(/详情|介绍|简介/, '');\n//文字描述<br>换行\nvar des_text = pdfh(html, '.video-info-items,0&&Text').substring(0, 35) + '<br>' + pdfh(html,\n    '.video-info-items,1&&Text').substring(0, 35) + '<br>简介：' + des_desc;\n//线路名数组tabs\nvar arts = pdfa(html, 'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'span&&Text').replace('视频', '').replace('F7', '').replace('哔哩哔哩', 'bilibili').replace('爱奇艺', '奇艺').replace('奇艺', '爱奇艺'))\n}\n//log(tabs)\n//选集数组lists\nvar conts = pdfa(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\n//设置嗅探(免嗅/通免/断插) 自写免嗅变量lazy写到页面标识为lazy的子页面\nvar 嗅探 = '免嗅';\n//是否启用x5二级新样式,如不开x5二级，改原生头部，请关'距顶'\nvar x5样式 = '开';\nvar 距顶 = '开';\nvar 每页集数 = 50;\nvar 底部按钮 = '开';\nvar 线路样式 = 'icon_small_3';\n//线路样式建议icon_small_3/scroll_button/flex_button\n//按你得到的线路名添加，不然启用默认图标（技术支持:追剧君,图标支持:蓝莓）\nvar obj = {\n    \"腾讯\": \"https://lanmeiguojiang.com/tubiao/movie/131.svg\",\n    \"优酷\": \"https://lanmeiguojiang.com/tubiao/movie/128.svg\",\n    \"爱奇艺\": \"https://lanmeiguojiang.com/tubiao/movie/130.svg\",\n    \"芒果\": \"https://lanmeiguojiang.com/tubiao/movie/32.svg\",\n    \"咪咕\": \"https://lanmeiguojiang.com/tubiao/movie/134.svg\",\n    \"西瓜\": \"https://lanmeiguojiang.com/tubiao/movie/135.svg\",\n    \"搜狐\": \"https://lanmeiguojiang.com/tubiao/movie/129.svg\",\n    \"乐视\": \"https://lanmeiguojiang.com/tubiao/movie/58.svg\",\n    \"风行\": \"https://lanmeiguojiang.com/tubiao/movie/136.svg\",\n    \"PPTV\": \"https://lanmeiguojiang.com/tubiao/movie/133.svg\",\n    \"1905\": \"https://lanmeiguojiang.com/tubiao/movie/132.svg\",\n    \"bilibili\": \"https://lanmeiguojiang.com/tubiao/movie/20.svg\",\n    \"专线\": \"https://lanmeiguojiang.com/tubiao/movie/42.svg\",\n    \"专线2\": \"https://lanmeiguojiang.com/tubiao/movie/45.svg\",\n    \"专线3\": \"https://lanmeiguojiang.com/tubiao/movie/44.svg\",\n    \"独家\": \"https://lanmeiguojiang.com/tubiao/movie/43.svg\"\n};\n\n\n/* --特别图片处理(根据规则来改)--*/\nif (des_pic.indexOf('url=') > -1) des_pic = des_pic.split('url=')[1]\n//二级(x5&分页)封装_by顺_v2022.3.10\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4004');","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n    categoryGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',\n})","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl = unescape(base64Decode(jsurl));\\n    } else {\\n        jsurl\\n    };\\n    var from = player.from;\\n    if (jsurl.search(/\\\\.mp4|\\\\.m3u8/) > -1) {\\n        return jsurl;\\n    } else {\\n        eval(request(pd(fetch(input, ), '.player-wrapper&&script,1&&src')));\\n        var jx = MacPlayerConfig.player_list[from].parse;\\n        if (jx == '') {\\n            jx = \\\"https://jiexi.f7ys.com/jiexi.php?url=\\\";\\n        };\\n        log('\\\\n线路：' + from + '\\\\n' + '解析接口：' + jx);\\n        var parse = jx + jsurl;\\n        //log(parse);\\n\\n        var ref = \\\"https://www.haokanju1.cc\\\";\\n        var jhtml = \\\"\\\";\\n\\n        if (ref) {\\n            jhtml = request(parse, {\\n                headers: {\\n                    'Referer': ref\\n                }\\n            });\\n        } else {\\n            jhtml = request(parse);\\n        }\\n        eval(getCryptoJS());\\n        key = \\\"5DD024659736811C\\\";\\n        var le_token = jhtml.match(/_token = \\\\\\\"(.*?)\\\\\\\"/)[1];\\n        var _token_key = CryptoJS.enc.Utf8.parse(key);\\n        var _token_iv = CryptoJS.enc.Utf8.parse(le_token);\\n        var VideoInfo = jhtml.match(/getVideoInfo\\\\(\\\\\\\"(.*?)\\\\\\\"/)[1];\\n\\n        function v_decrypt(data, token_key, token_iv) {\\n            return CryptoJS.AES.decrypt(data, token_key, {\\n                iv: token_iv\\n            }).toString(CryptoJS.enc.Utf8);\\n        };\\n        var video = v_decrypt(VideoInfo, _token_key, _token_iv);\\n        if (/mgtv|sohu/.test(jsurl)) {\\n            return video + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n        } else if (/bili/.test(jsurl)) {\\n            return video + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n        } else {\\n            return video;\\n        }\\n    }\\n});\"}]","proxy":"","icon":"https://pp.myapp.com/ma_icon/0/icon_42262294_1647323454/96"},{"last_chapter_rule":"","title":"追剧喵","author":"顺&&彩","version":20221028,"type":"video","url":"hiker://empty##https://zjmiao.com/vod/show/id/fyclass/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); //顺搜h5版\n    顺搜(d)\n    //require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508'); //顺搜原生版\n    //搜索建议(d, '海报开')\n\n    var 分类 = {\n        '电影': 'https://lanmeiguojiang.com/tubiao/more/131.png',\n        '电视剧': 'https://lanmeiguojiang.com/tubiao/more/271.png',\n        '综艺': 'https://lanmeiguojiang.com/tubiao/more/86.png',\n        '动漫': 'https://lanmeiguojiang.com/tubiao/more/180.png'\n    };\n    /*\n    for (var i = 0; i < 4; i++) {\n        d.push({\n            title: Object.keys(分类)[i],\n            img: Object.values(分类)[i],\n            col_type: 'icon_4',\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar('分类', i + 1);\n                refreshPage();\n                return \"hiker://empty\";\n            }, i)\n        })\n    }\n    */\n\n//这首页动态刷新没卵用，就好看点\n    for (var x = 0; x < 4; x++) {\n        d.push({\n            title: Object.keys(分类)[x],\n            img: Object.values(分类)[x],\n            col_type: 'icon_4',\n            url: $(\"#noLoading#\").lazyRule((x) => {\n                putMyVar('分类', x + 1);\n\n                var fyclass = getMyVar('分类', '1');\n                var html = 'https://zjmiao.com/index.php/vod/show/id/' + (x + 1) + '/page/' + 1 + '/';\n\n                var list = fetch(html, {\n                    headers: {\n                        'User-Agent': PC_UA\n                    }\n                });\n                list = pdfa(list, 'body&&.pack-packcover');\n                let a = []\n                for (var y in list) {\n                    a.push({\n                        title: pdfh(list[y], 'a&&title'),\n                        desc: pdfh(list[y], '.pack-prb&&Text'),\n                        img: pd(list[y], '.bj&&data-original') + '@Referer=',\n                        url: pd(list[y], '.aplus-exp&&href') + '#gameTheme##noRefresh##autoCache#'\n                    });\n                    updateItem('列表'+y, {\n                        title: a[y].title,\n                        desc: a[y].desc,\n                        img: a[y].img,\n                        url: a[y].url,\n                        extra: {\n                            id: '列表'+y\n                        }\n                    })\n                }\n                return \"hiker://empty\";\n            }, x)\n        })\n    }\n\n\n}\n\n\n    var fyclass = getMyVar('分类', '1');\n    var html = 'https://zjmiao.com/index.php/vod/show/id/' + fyclass + '/page/' + MY_PAGE + '/';\n\n    var list = fetch(html, {\n        headers: {\n            'User-Agent': PC_UA\n        }\n    });\n    list = pdfa(list, 'body&&.pack-packcover');\n    for (var i in list) {\n        d.push({\n            title: pdfh(list[i], 'a&&title'),\n            desc: pdfh(list[i], '.pack-prb&&Text'),\n            img: pd(list[i], '.bj&&data-original') + '@Referer=',\n            url: pd(list[i], '.aplus-exp&&href') + '#gameTheme##noRefresh##autoCache#',\n            extra: {\n                id: '列表'+i\n            }\n        });\n    }\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = pdfa(getResCode(), 'body&&.search-list');\nfor (var j in list) {\n  d.push({\n       title: pdfh(list[j], 'h2&&Text'),\n       content: pdfh(list[j], '.deployment&&Text'),\n       desc: pdfh(list[j], 'span,-1&&Text'),\n       img: pd(list[j], '.lazy&&data-original'),\n       url: pd(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+ '#gameTheme##noRefresh##autoCache#'\n  });\n}\nsetResult(d)","search_url":"https://zjmiao.com/index.php/vod/search/page/fypage/wd/**/","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n/*--如要调用顺封，变量名别动，修改各项定位即可--*/\nconst Color = \"#19B89D\";\nvar html = getResCode();\n//标题\nvar title = pdfh(html, '.dt-info-box&&h2&&Text');\nvar title_big = title; //显示的白色大字\nvar des_pic = pd(html, '.lazy&&data-original');\n//剧情简介\nvar des_desc = pdfh(html, '.m-box&&Text').replace(/详情：|介绍|简介/, '');\n//文字描述<br>换行\nvar des_text = pdfh(html, 'span,1&&Text').substring(0, 35) + '<br>' + pdfh(html,\n    'span,2&&Text').substring(0, 35) + '<br>简介：' + des_desc;\n//线路名数组tabs\nvar arts = pdfa(html, 'body&&.play-source-tab&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'a&&Text').replace(/\\d+|\\(|\\)| /g, ''))\n}\n//选集数组lists\nvar conts = pdfa(html, 'body&&.content-playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'ul&&li'))\n}\n\n/* -- 设置嗅探(免嗅/通免/解析) 自写免嗅变量lazy写到页面标识为lazy的子页面 --*/\nvar 嗅探 = '解析';\n/* -- 如不开x5二级，改原生头部，请关'距顶' --*/\nvar x5样式 = '开';\nvar 距顶 = '开';\nvar 每页集数 = 40;\nvar 底部按钮 = '开';\nvar 线路样式 = 'flex_button';\n/* -- 线路样式建议scroll_button/flex_button --*/\n/* -- 顺封 --*/\n\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4004');\n/* 本地用 */\n//require('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/顺封.js');","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"lazy = $(\\\"\\\").lazyRule(() => {\\n    try {\\n        var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n        var jsurl = player.url;\\n        var api = \\\"https://play.videomiao.vip/API.php\\\";\\n        var parse = \\\"https://play.videomiao.vip/?url=\\\" + jsurl + \\\"&tm=\\\" + player.tm + \\\"&key=\\\" + player.key + \\\"&next=\\\" + input + \\\"&title=\\\";\\n        //log(parse);\\n        var ref = \\\"https://zjmiao.com/\\\"\\n        if (ref) {\\n            var jxHtml = request(parse, {\\n                headers: {\\n                    \\\"Referer\\\": ref\\n                }\\n            });\\n        } else {\\n            var jxHtml = request(parse);\\n        }\\n        eval(jxHtml.match(/var config = {[\\\\s\\\\S]*?}/)[0] + \\\"\\\");\\n        var key = config.key;\\n        var time = config.time;\\n        var json = JSON.parse(request(api, {\\n            headers: {\\n                \\\"User-Agent\\\": MOBILE_UA\\n            },\\n            body: \\\"url=\\\" + jsurl + \\\"&time=\\\" + time + \\\"&key=\\\" + key,\\n            method: \\\"POST\\\"\\n        }));\\n        var url = json.code == 200 ? json.url : \\\"404\\\";\\n        if (url == \\\"404\\\") {\\n            return \\\"toast://\\\\u89e3\\\\u6790\\\\u5931\\\\u8d25\\\\uff0c\\\\u8bf7\\\\u91cd\\\\u65b0\\\\u914d\\\\u7f6e\\\";\\n        }\\n        if (url.indexOf(\\\"bilibili\\\") > -1) {\\n            return url + \\\"#isVideo=true#\\\" + \\\";{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}\\\";\\n        } else if (url.indexOf(\\\"mgtv\\\") > -1) {\\n            return url + \\\"#isVideo=true#\\\" + \\\";{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}\\\";\\n        } else if (url.indexOf(\\\"ixigua\\\") > -1) {\\n            return url + \\\"#isVideo=true#\\\" + \\\"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n        } else {\\n            return /sohu/.test(url) ? url + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\" : url;\\n        }\\n    } catch (e) {\\n            requireCache('https://agit.ai/lzk23559/PublicRule/raw/branch/master/x5rule.js', 24);\\n            return x5rule(input, input);\\n    }\\n});\"}]","proxy":"","icon":"http://pic.2265.com/upload/2019-8/20198201538537506.png"},{"last_chapter_rule":"","title":"爱看电影(替换URL即可)","author":"ccc","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://www.ikandy.fun\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        floatVideo: true,\n        canBack: true       \n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/ys/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"哔哩ᵖ","author":"枫林雨殇","version":0,"type":"other","url":"https://api.bilibili.com/x/web-interface/dynamic/region?rid=fyAll&pn=fypage&ps=20","col_type":"movie_2","class_name":"动画&国创&音乐&舞蹈&游戏&知识&数码&娱乐&影视","class_url":"1&168&3&129&4&36&188&5&181","area_name":"汽车&生活&美食&动物&鬼畜&时尚","area_url":"223&160&211&217&119&155","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d=[];\nvar html=JSON.parse(getResCode());\nvar list=html.data.archives;\n\nfor(var i in list){\n  d.push({\n     title: list[i].title,\n    desc:list[i].tname,\n     img:list[i].pic,\n    url:'https://api.bilibili.com/x/player/playurl?cid='+list[i].cid+'&avid='+list[i].aid+'&platform=html5'+`@lazyRule=.js:var html = request(input,{});var json = JSON.parse(html);var urll=json.data.durl[0].url;urll`,\n \n})\n}\nsetResult(d)","searchFind":"js:var d=[];\nvar html=JSON.parse(getResCode());\nvar list=html.data.result;\n\nfor(var i in list){\n  d.push({\n     title:  unescape(list[i].title).replace(/<em/g,'').replace(/<\\/em>/g,'').replace(/class=\\\"keyword\\\"/g,'').replace(/>/g,\"\"),\n    desc:list[i].tag,\n     img:'https:'+list[i].pic,\n    url:'https://m.bilibili.com/video/'+list[i].bvid+`@lazyRule=.js:var url=request(input,{}).split('readyVideoUrl')[1].split(\"\\'\")[1].split(\"\\'\")[0];url`,\n \n})\n}\nsetResult(d)","search_url":"https://api.bilibili.com/x/web-interface/search/type?keyword=**&page=fypage&search_type=video&order=totalrank&pagesize=20","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"低端影视","author":"ccc","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://ddys.tv/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        floatVideo: true,\n        canBack: true       \n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/ys/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"霸王龙压制组","author":"小棉袄🌞","version":4,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title);\nd.push({\n    title: \"\",\n    url: \"https://t-rex.tzfile.com/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0]);\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule) {\\n    return $.toString((rule) => {\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/t-rex\\\\.tzfile\\\\.com\\\\/[0-9]*\\\\.html/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        }\\n    }, rule);\\n}\"}]","proxy":"","icon":"https://t-rex.tzfile.com/wp-content/uploads/2021/04/1618053769-0da581de73be3d8.png"},{"last_chapter_rule":"","title":"Mikan Project","author":"@LoyDgIk","version":3,"type":"other","url":"https://mikanani.me/","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet html = pdfh(getResCode(),\"#sk-mobile-container&&Html\");\n\nlet List1 = pdfa(html, \".m-home-week&&.m-home-week-item\");\n\nlet d = [],\n    i = 0;\nd.push({\n    col_type: \"input\",\n    url:\"input=input.trim();if(input)'hiker://page/search#noRefresh#?searchstr='+encodeURIComponent(input);\"\n});\nfor (let item of List1) {\n    d.push({\n        title: pdfh(item, \".monday&&Text\").fontcolor(\"#fffe9700\") + (i++ ? \"\" : \" (今天)\"),\n        col_type: \"rich_text\"\n    });\n    let ulList = pdfa(item, \".detail&&.m-week-square\");\n    for (let li of ulList) {\n        d.push({\n            title: pdfh(li, \".small-title&&Text\"),\n            col_type: \"movie_3\",\n            url: \"hiker://page/detail\",\n            //desc: pdfh(li, \"date-text&&Text\"),\n            pic_url: pd(li, \"img&&data-src\"),\n            extra: {\n                url: pd(li, \"a&&href\") + \"#immersiveTheme##noRefresh#\"\n            }\n        });\n    }\n    d.push({\n        col_type: \"line_blank\"\n    });\n}\n\nsetResult(d);","searchFind":"js:let key = getParam(\"searchstr\");\nlet html = request(\"https://mikanani.me/Home/Search?searchstr=\" + encodeURIComponent(key));\nlet list = pdfa(html, \".m-search-content&&.m-search-item\");\nlet d = [];\nfor (let item of list) {\n    let url= pdfh(item, \"a&&href\");\n    \n    d.push({\n        title: pdfh(item, \".text&&Text\"),\n        url: url,\n        col_type: \"text_1\",\n        desc: pdfh(item, \".date&&Text\")\n    });\n    \n}\nsetResult(d);","search_url":"hiker://empty?searchstr=**","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"详细\",\"path\":\"detail\",\"rule\":\"js:\\n\\nlet d = [];\\nlet html = pdfh(getResCode(),\\\"#sk-mobile-container&&Html\\\");\\nd.push({\\n    title: pdfh(html, \\\".title&&Text\\\"),\\n    desc: pdfa(html, \\\"section&&span\\\").map(span => pdfh(span, \\\"Text\\\")).join(\\\"\\\\n\\\"),\\n    pic_url: pd(html,\\\"img&&src\\\"),\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"movie_1_vertical_pic_blur\\\"\\n});\\nlet introduce = \\\"概况介绍\\\".big()+\\\"<br>\\\"+pdfh(html,\\\".info&&Text\\\");\\nd.push({\\n    title: introduce.slice(0,49)+(introduce.length<40?\\\"\\\":\\\" 更多详细>\\\".link(\\\"hiker://page/introduce#noRecordHistory##noHistory#\\\")),\\n    col_type:\\\"rich_text\\\",\\n    extra:{\\n        introduce:introduce,\\n    }\\n});\\nd.push({\\n    col_type:\\\"line_blank\\\"\\n});\\nd.push({\\n    title:\\\"字幕组列表\\\".big(),\\n    col_type:\\\"rich_text\\\",\\n});\\nd.push({\\n    col_type:\\\"line\\\"\\n});\\nlet subtitlegroup = pdfa(html,\\\"#subgroup-list&&.item\\\");\\nfor (let item of subtitlegroup){\\n    d.push({\\n        title: pdfh(item,\\\".title&&Text\\\"),\\n        desc: pdfh(item,\\\".remark&&Text\\\"),\\n        url: \\\"hiker://page/list\\\",\\n        col_type:\\\"text_1\\\",\\n        extra:{\\n            bangumiId: pdfh(item,\\\"i&&data-bangumiid\\\"),\\n            subtitleGroupId: pdfh(item,\\\"i&&data-subtitlegroupid\\\")\\n        }\\n    });\\n}\\nd.push({\\n    col_type:\\\"big_big_blank_block\\\"\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"列表\",\"path\":\"list\",\"rule\":\"js:\\nMY_PARAMS.take = 10000;\\nMY_HOME = \\\"https://mikanani.me\\\";\\nlet html = request(buildUrl(\\\"https://mikanani.me/Home/ExpandMobileEpisodeTable\\\", MY_PARAMS));\\nlet list = pdfa(html, \\\"body&&.m-bangumi-item\\\");\\nlet d = [];\\nfor (let item of list) {\\n    let url=MY_HOME + pdfh(item, \\\"a&&href\\\");\\n    d.push({\\n        url: \\\"magnet://\\\"+url.replace(\\\".torrent\\\",\\\"\\\"),\\n        pic_url:\\\"https://lanmeiguojiang.com/tubiao/movie/70.svg\\\",\\n        col_type:\\\"avatar\\\"\\n    });\\n    d.push({\\n        title: pdfh(item, \\\".text&&Text\\\"),\\n        url: url,\\n        col_type: \\\"text_1\\\",\\n        desc: pdfh(item, \\\".date&&Text\\\")\\n    });\\n    d.push({\\n        col_type:\\\"line\\\"\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"rich_text\",\"name\":\"介绍\",\"path\":\"introduce\",\"rule\":\"js:\\nsetPageTitle(\\\"详细介绍\\\");\\nsetResult([{\\n    title: MY_PARAMS.introduce\\n}]);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\nlet key = getParam(\\\"searchstr\\\");\\nsetPageTitle(\\\"搜索:「\\\"+decodeURIComponent(key)+\\\"」\\\");\\nlet html = request(\\\"https://mikanani.me/Home/Search?searchstr=\\\" + key);\\nlet list = pdfa(html, \\\".m-search-content&&.m-search-item\\\");\\nlet d = [];\\nfor (let item of list) {\\n    let url= pdfh(item, \\\"a&&href\\\");\\n    d.push({\\n        url: \\\"magnet://\\\"+url,\\n        pic_url:\\\"https://lanmeiguojiang.com/tubiao/movie/70.svg\\\",\\n        col_type:\\\"avatar\\\"\\n    });\\n    d.push({\\n        title: pdfh(item, \\\".text&&Text\\\"),\\n        url: url,\\n        col_type: \\\"text_1\\\",\\n        desc: pdfh(item, \\\".date&&Text\\\")\\n    });\\n    d.push({\\n        col_type:\\\"line\\\"\\n    });\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://mikanani.me/images/favicon.ico?v=2"},{"last_chapter_rule":"","title":"天天影视","author":"香雅情","version":0,"url":"https://www.lranc.com/ystv/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&纪录片&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&香港剧&台湾剧&韩国剧&日本剧&海外剧","class_url":"dydq&dsjdq&zydq&dmdq&jlpdq&dzpdq&xjpdq&aqpdq&khpdq&kbpdq&jqpdq&zzpdq&gcjdq&xgjdq&twjdq&hgjdq&rbjdq&hwjdq","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.stui-vodlist:has(.col-md-7)&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.pic-text||span&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n        var con = parseDomForHtml(list[i], '.detail--h2&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);\n","search_url":"https://www.lranc.com/sosou**/page/fypage.html","titleColor":"","group":"②影搜","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, 'body&&.playlist');\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".stui-content__thumb&&.lazyload&&data-original\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".stui-content__detail&&p,-1&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'pic_1'\n});\n\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'body&&li');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], \"h3&&Text\"),\n            col_type: 'text_1'\n        });\n        //setError(list[0]);\n\n        for (var j in list) {\n            d.push({\n                title: parseDomForHtml(list[j], \"a&&Text\"),\n                url: $(parseDom(list[j], \"a&&href\") + '#noPre#').lazyRule(() => {\n                    var html = request(input, {});\n                    var js = parseDomForHtml(html, \".embed-responsive&&script&&Html\").replace(/player_.*?={/, 'player_data={');\n                    eval(js);\n                    var fro = player_data.from;\n                    if (player_data.encrypt == '1') {\n                        var urll = unescape(player_data.url);\n                    } else if (player_data.encrypt == '2') {\n                        var urll = unescape(base64Decode(player_data.url));\n                    }\n                    var jvs = parseDom(html, \".embed-responsive&&script,1&&src\");\n                    eval(request(jvs, {}));\n                    var jiek = '';\n                    if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n                        jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n                    } else {\n                        return urll\n                    };\n\n                    //log(jiek);\n                    var link = jiek + urll;\n                    requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n                    return x5rule(link);\n                }),\n                extra: {\n                    id: parseDom(list[j], \"a&&href\")\n                },\n                col_type: 'text_3'\n            });\n        }\n\n    }\n}\n\n//二级模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"蚂蚁高清","author":"香雅情","version":2,"url":"https://m.mayigq.com/lists/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"31&32&33&34","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.mo-part-round,1&&.mo-cols-info;.mo-situ-name&&Text;.mo-situ-pics&&data-original;.mo-situ-rema&&Text;a&&href","searchFind":".mo-main-info&&.mo-deta-info;h1&&Text;a&&href;.mo-situ-rema&&Text;dd--h1&&Text;.mo-situ-pics&&data-original","search_url":"https://m.mayigq.com/search/**----------fypage---.html","titleColor":"","group":"②影搜","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, 'body&&.mo-sort-head&&.mo-movs-btns');\nvar conts = parseDomForArray(html, 'body&&.mo-main-info&&.mo-movs-item');\n//setError(conts.length);\n\n//var thumb = parseDom(html, \".mo-deta-info&&.mo-situ-pics&&data-original\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".mo-deta-info&&li,-1&&Text\"),\n    //pic_url:thumb,\n    //url:thumb,\n    col_type: 'pic_1'\n});\n\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'body&&a');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], \"a&&Text\"),\n            col_type: 'text_1'\n        });\n\n        for (var j in list) {\n            d.push({\n                title: parseDomForHtml(list[j], \"a&&Text\"),\n                url: $(parseDom(list[j], \"a&&href\")).lazyRule(() => {\n                    try{\n                    var html = request(input, {});\n                    var play = base64Decode(parseDomForHtml(html, \".mo-main-info&&.mo-play-load&&data-play\").slice(3));\n                    var jiex = parseDomForHtml(html, \".mo-main-info&&.mo-play-load&&data-parse\");\n                    if (/\\.m3u8|\\.mp4|obj\\/tos/.test(play) && /http/.test(play)) {\n                        return play;\n                    } else {\n                        var jxhtml = request(jiex + play, {\n                            headers: {\n                                \"Referer\": input\n                            }\n                        });\n                        var bdy = parseDomForHtml(jxhtml, '#player_swf&&lovevod');\n                        var pthtml = request('https://www.mayigq.com/vodzip/config/token.php', {\n                            headers: {\n                                'Content-Type': 'application/x-www-form-urlencoded',\n                                'Referer': 'https://www.mayigq.com',\n                                'X-Requested-With': 'XMLHttpRequest'\n                            },\n                            body: 'menudata=' + bdy,\n                            method: 'POST'\n                        });\n                        var link = 'https://www.mayigq.com/vodzip/' + pthtml.match(/var url = \\\"(.*?)\\\"/)[1];\n\n                        var play = JSON.parse(request(link, {\n                            headers: {\n                                'Referer': 'https://www.mayigq.com'\n                            },\n                            redirect: false,\n                            withHeaders: true\n                        })).headers.location[0];\n                        log(play);\n                        if(/gekai/.test(play)){                        \n                        return JSON.parse(request(play, {\n                            headers: {\n                                'Referer': 'https://www.mayigq.com'\n                            },\n                            redirect: false,\n                            withHeaders: true\n                        })).headers.location[0] + '#isVideo=true#';                            \n                        }else{return play + '#isVideo=true#';}\n                    }\n                    }catch(e){return input}\n                }),\n                col_type: 'text_3'\n            });\n        }\n\n    }\n}\n\n//mo-模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"title":"桔子TV_X5","author":"香雅情","version":0,"url":"https://www.juztv.com/vodshow/fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&其它片","area_url":"6&7&8&9&10&11&12&20","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其它剧","sort_url":"","year_url":"13&14&15&16&21","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.pic-text||span&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n        var con = parseDomForHtml(list[i], '.detail--h3&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);\n","search_url":"https://www.juztv.com/vodsearch/**----------fypage---/","titleColor":"","group":"②影搜","detail_col_type":"text_2","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nd.push({\n\t\t\ttitle: '',\n    desc:'240&&float',\n    url:'',\n\t\tcol_type: 'x5_webview_single'\n});\nrefreshX5WebView('');\nvar html=getResCode();\nvar tabs=parseDomForArray(html,'body&&.playlist');\nvar conts=parseDomForArray(html,'body&&.stui-content__playlist');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".stui-content__thumb&&.lazyload&&data-original\");\nd.push({\n\t\t\ttitle: '剧情简介：'+'    共'+conts.length+'条线路',\n    desc:parseDomForHtml(html, \".stui-content__detail&&p,-1&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nfor(var i in conts){\n  var list=parseDomForArray(conts[i],'body&&li');\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"h3&&Text\"),\n\t\t\tcol_type: 'text_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j in list){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:parseDom(list[j], \"a&&href\")+`@lazyRule=.js:var get =request(input,{});var js = parseDomForHtml(get,\".stui-player__video&&script&&Html\").replace(/player_.*?={/,'player_data={');eval(js);var fro=player_data.from;var urll=player_data.url;if(fro=='niux'){var jiexi=fetch('https://www.juztv.com/jx.php?id='+urll,{headers:{\"User-Agent\":PC_UA,\"Referer\":\"https://www.juztv.com/\"}});var re=fetch('https://www.juztv.com/'+jiexi.match(/var u=\\\"(.*?)\\\"/)[1],{});if(re=='error'){'toast://解析失败，该资源播放地址。';}else{re.match(/url: \\\"(.*?)\\\"/)[1]};}else{var jk=request('https://www.juztv.com/static/player/'+fro+'.js',{}).match(/src=\\\"(.*?)\\'/)[1];refreshX5WebView(jk+urll);'toast://切换选集成功，请等待加载播放框架。'}`,\n      col_type: 'text_2'\n\t\t\t});\n   }\n\n  }\n}\n\n//二级模板by香雅情\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"app影视.dz","author":"道长","version":10,"url":"hiker://empty#fyAll","col_type":"movie_3","class_name":"道长app&M点佬","class_url":"道长app.txt&m点佬.txt","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch(\"hiker://page/parseRule\")).rule);","searchFind":"js:\nlog(\"app影视搜索js:\\n\"+getVar(\"js_dir\"));\neval(fetch(getVar(\"js_dir\")));\napp_search();","search_url":"hiker://empty$$$**$$$fypage$$$","titleColor":"#ff673ab7","group":"②影搜","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch(getVar(\"js_dir\")));\napp_ej();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch(getVar(\"js_dir\")));\napp_search_ej();","ua":"mobile","preRule":"eval(JSON.parse(fetch(\"hiker://page/beforeRule\")).rule)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"处理m数据为采集格式\",\"path\":\"deal_data\",\"rule\":\"String.prototype.trim = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); }\\nfunction deal_path(path){\\n    let back = fetch(path,{});\\n    try {\\n        back = JSON.parse(back);\\n        let datas = back.data;\\n        let applists = '';\\n        log('tab数:'+datas.length);\\n        for(var i in datas){\\n            let data = datas[i];\\n            log('data:'+data);\\n            let tmp = '#'+data.title+'\\\\n';\\n            let tma = [];\\n            for(var j=0;j<data.list.length;j++){\\n                let app = data.list[j];\\n                let tm = [app.title,app.url,app.img].join(',')+'\\\\n'\\n                tma.push(tm);\\n            }\\n            tmp+=tma.join('');\\n            tmp+='#\\\\n';\\n            applists+=tmp;\\n        }\\n        return applists.trim()\\n\\n    }catch (e) {\\n        return back\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"预处理\",\"path\":\"beforeRule\",\"rule\":\"js:\\n//let myUrl=JSON.parse(getRule()).url;\\nconst base_path=\\\"hiker://files/rules/dzHouse/zyw/\\\";\\nconst house=\\\"http://hiker.nokia.press/hikerule/rulelist.json?id=\\\";\\nconst dz_zyw=\\\"http://hiker.nokia.press/hikerule/zyw_data/\\\";\\nconst dz_zyw_ver=\\\"http://hiker.nokia.press/hikerule/zyw_data_ver/\\\";\\nconst js_name=\\\"appmovie.js\\\";\\nconst txt_name=\\\"道长app.txt\\\";\\nputVar(\\\"base_dir\\\",base_path);\\nputVar(\\\"dz_zyw\\\",dz_zyw);\\nputVar(\\\"dz_zyw_ver\\\",dz_zyw_ver);\\nputVar(\\\"js_dir\\\",base_path+js_name);\\nputVar(\\\"txt_dir\\\",base_path+txt_name);\\nfiles={\\n    \\\"道长app.txt\\\":dz_zyw+\\\"5\\\",\\n   \\\"m点佬.txt\\\":\\\"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/APP影视列表\\\"\\n};\\nfiles[js_name]=house+\\\"1486\\\";\\nputVar(\\\"files\\\",files);\\nputVar(\\\"now_file\\\",\\\"道长app.txt\\\");\\n\\neval(JSON.parse(fetch(\\\"hiker://page/deal_data\\\")).rule);\\n//执行预处理\\n\\n\\nfor(var key in files){\\n    log(key+\\\">\\\"+files[key]);\\n    if(!fileExist(base_path+key)||!fetch(base_path+key)){\\n            try{ \\n            let filecode='';\\nif(key.indexOf('.txt')>-1){\\n   filecode=deal_path(files[key]); \\n}else{\\n    filecode=fetch(files[key]);\\n}\\nif(filecode){\\n    writeFile(base_path+key,filecode);\\n}\\n            } \\n            catch(e){\\n                log(e.message);\\n            }\\n    }\\n}\\neval(fetch(getVar(\\\"js_dir\\\")));\\nlog(\\\"APP影视预处理执行完毕\\\\n\\\"+getVar(\\\"js_dir\\\"));\\napppre();\"},{\"col_type\":\"movie_3\",\"name\":\"错误页\",\"path\":\"error\",\"rule\":\"js:\\nd=[];\\nd.push({\\n    title:\\\"规则或插件错误，请把插件删了再试吧\\\",\\n    col_type:\\\"text_center_1\\\",\\n    url:\\\"hiker://empty\\\"\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"解析规则\",\"path\":\"parseRule\",\"rule\":\"js:\\nputVar(\\\"now_file\\\",MY_URL.split(\\\"#\\\")[1]);\\neval(fetch(getVar(\\\"js_dir\\\")));\\ntry{\\napphm();\\nclearItem('error_num');\\n}catch(e){\\nlet files = JSON.parse(getVar('files'));\\nvar rulejs = fetch(files[getVar('js_dir').replace(getVar('base_dir'),\\\"\\\")], {});\\nlet error_num=parseInt(getItem('error_num',\\\"0\\\"))+1;\\n//log(\\\"重试次数:\\\"+error_num);\\nsetItem(\\\"error_num\\\",error_num+\\\"\\\");\\nif(error_num<3){\\n    writeFile(getVar('js_dir'), rulejs);\\n    refreshPage(true);\\n}else{\\nlet tips='规则或插件错误，请把插件删了再试吧';\\nconfirm({title:'错误提示', content:tips, confirm:$.toString(() => {\\r\\n            clearItem('error_num');\\r\\n            //refreshPage(true);\\r\\n        }), cancel:''});\\neval(JSON.parse(fetch(\\\"hiker://page/error\\\")).rule);\\n}\\n}\"}]","icon":"#ff673ab7"},{"last_chapter_rule":"","title":"聚合","author":"ᝰꫛꫀꪝ藍凋&sm`回忆 ","version":4,"type":"video","url":"https://jhystv.com/vodshow/1/page/%%fypage%%/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\n//自定义颜色\n  const Color=\"#40E0D0\";\n  \n  const a=MY_URL.replace(/%%/g, \"\");\n  let true_url = getVar(\"jh.url\", a)\n  const page=MY_URL.match(/%%(.*)%%/)[1];\n\n//setError(page);\n\n//翻页 需要根据实际替换\n  true_url = true_url.replace('---/', +page+'---/')  \n  const html = fetch(true_url)\n  const empty = \"hiker://empty\"\n//获取列表 \n  const categories = parseDomForArray(html, '#main&&.scroll-content:not(:contains(全部类型))')\n\n//setError(true_url);\n\n  let init_cate = []\n\n  for (let i = 0; i < 20; i ++) {\n    init_cate.push(\"0\")\n  }\n\n  // 取缓存\n  const fold = getVar(\"jh.fold\", \"0\")\n  const cate_temp_json = getVar(\"jh.category\", JSON.stringify(init_cate))\n  const cate_temp = JSON.parse(cate_temp_json)\n\n\n  if (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"jh.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'div&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库','')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"jh.category\", JSON.stringify(new_cate))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"jh.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"jh.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n//一级页面\nlist = parseDomForArray(html, 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href') +\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h3&&Text'),\r\n       desc: parseDomForHtml(list[j], '.video-serial&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-src')+\"@Referer=\",\r\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items,2&&Text'),\n       url: parseDom(list[j], 'h3&&a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://jhystv.com/vodsearch/page/fypage/wd/**/","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&span&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n})","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"酷吧电影(磁/下)","author":"香雅情","version":0,"type":"video","url":"hiker://empty##https://www.kuba222.com/fyAll-fypage.html[firstPage=hiker://empty##https://www.kuba222.com/fyAll.html]","col_type":"movie_3","class_name":"首页&电影&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&微电影","class_url":"首页&vodtypehtml/1&vodtypehtml/5&vodtypehtml/6&vodtypehtml/7&vodtypehtml/8&vodtypehtml/9&vodtypehtml/10&vodtypehtml/11&vodtypehtml/21","area_name":"电视剧&动漫&纪录片&最近更新","area_url":"vodtypehtml/31&vodtypehtml/4&vodtypehtml/16&new","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar myurl = 'https://www.kuba222.com';\nvar cnam = MY_URL.split('##')[1];\n//log(cnam);\nif (cnam.includes('首页')) {\n    var html = request(myurl, {});\n} else {\n    var html = request(MY_URL.split('##')[1], {});\n}\n//log(html);\ntry {\n    var conts = parseDomForArray(html, 'body&&.stui-vodlist');\n    for (var j = 0; j < conts.length; j++) {\n        var list = parseDomForArray(conts[j], 'body&&li');\n\n        for (var i = 0; i < list.length; i++) {\n            var title = parseDomForHtml(list[i], 'h4&&Text');\n            var img = parseDomForHtml(list[i], '.lazyload&&data-original');\n            if (img.substring(0, 4) == 'http') {\n                img = img;\n            } else {\n                img = myurl + img\n            }\n            var url = parseDomForHtml(list[i], 'a&&href');\n            var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n            items.push({\n                title: title,\n                pic_url: img + '@Referer=',\n                url: myurl + url,\n                desc: desc\n            });\n        }\n\n    }\n} catch (e) {}\n\nres.data = items;\nsetHomeResult(res);","searchFind":".stui-vodlist__media&&li;h3&&Text;a&&href;.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"https://www.kuba222.com/index.php?m=vod-search-pg-fypage-wd-**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, 'body&&.stui-pannel__head');\nvar conts = parseDomForArray(html, 'body&&.stui-overflow-list');\n\nvar thumb = parseDom(html, \".stui-content__thumb&&img&&data-original\");\nd.push({\n    title: '剧情简介：',\n    desc: parseDomForHtml(html, \".detail&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfunction echoDown(str, num) {\n    if (getMyVar('hfyssort', '1') == '0') {\n        var s = str.split(\"###\");\n    } else {\n        var s = str.split(\"###\").reverse();\n    }\n    for (let i = 0; i < s.length; i++) {\n        if (s[i] != '') {\n            var gurl = s[i].split(\"$\");\n            d.push({\n                title: s[i].includes('magnet:?xt=') ? ' ““' + gurl[0] + '””' : gurl[0],\n                url: gurl[1],\n                col_type: gurl[0].length >= 6 ? 'text_1' : 'text_3'\n            })\n        }\n    }\n}\n\n\nfor (var i in conts) {\n    d.push({\n        title: parseDomForHtml(tabs[i], \"h3&&Text\") + ' ““切换选集排序””',\n        url: \"hiker://empty@lazyRule=.js:putMyVar('hfyssort', getMyVar('hfyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n        col_type: 'text_center_1'\n    });\n    if (conts[i].includes('echoDown')) {\n        eval(parseDomForHtml(conts[i], 'script&&Html'));\n    }\n    if (getMyVar('hfyssort', '1') == '0') {\n        var list = parseDomForArray(conts[i], 'body&&li').reverse();\n    } else {\n        var list = parseDomForArray(conts[i], 'body&&li')\n    }\n    for (let j = 0; j < list.length; j++) {\n        d.push({\n            title: parseDomForHtml(list[j], 'label&&Text'),\n            url: parseDomForHtml(list[j], 'a&&href'),\n            desc: parseDomForHtml(list[j], 'a&&href'),\n            col_type: 'text_1'\n        })\n    }\n\n\n}\n\n\n\n//二级模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.kuba222.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"音范丝(磁)","author":"香雅情","version":0,"type":"video","url":"https://www.yinfans.me/topic/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"蓝光原盘&4K&电影&纪录片&演唱会&3D资源&预告片","class_url":"bluray-movie&4K&bluray-movie/movie&bluray-movie/documentry&bluray-movie/song&3dmovie&trailers","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#post_container&&li;h2&&Text;img&&src;.info&&Text;a&&href","searchFind":"#post_container&&li;h2&&Text;a&&href;;.info&&Text;img&&src","search_url":"https://www.yinfans.me/page/fypage?s=**","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '#cili&&a[href~=(magnet)]');\n//log(conts);\n\nvar content = parseDomForHtml(html, \"#post_content&&Html\");\nd.push({\n    title: content,\n    desc: '',\n    pic_url: '',\n    url: '',\n    col_type: 'rich_text'\n});\n\nfor (var i = 0; i < list.length; i++) {\n    d.unshift({\n        title: '““' + parseDomForHtml(list[i], \"a&&Text\") + '””',\n        url: parseDomForHtml(list[i], \"a&&href\"),\n        col_type: 'text_1'\n    });\n\n\n}\n\n//二级模板\nsetHomeResult({\n    data: d\n});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.yinfans.me/wp-content/themes/Loos2/images/favicon.ico"},{"last_chapter_rule":"","title":"好恐怖(磁/下)","author":"香雅情","version":0,"type":"video","url":"https://www.haokongbu1.com/fyAll/index_fypage.html[firstPage=https://www.haokongbu1.com/fyAll/]","col_type":"movie_3","class_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&剧情片&记录片&动画片&高清","class_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&zhanzhengpian&juqingpian&m_jlp&donghuapian&gaoqing","area_name":"国产剧&港剧&台剧&日剧&韩剧&美剧&泰剧&海外剧&微电影&冷门电影&冷门电视剧","area_url":"guochanju&gangju&taiwanju&riju&hanju&oumeiju&taiguoju&haiwaiju&weidianying&lmmovie&lmtv","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".channel-content&&li;img&&alt;img&&src;.listtype||.score&&Text;a&&href","searchFind":".search-content&&li;p&&Text;a&&href;.listtype||.score&&Text;;img&&src","search_url":"https://s.haokongbu1.com/e/search/?show=title,ftitle,actor&keyboard=**;post;utf-8","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//log(html);\n//var tabs = parseDomForArray(html, 'body&&.baiduyunaddres');\nvar conts = parseDomForArray(html, 'body&&.baiduyunaddres');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \"#movie-info&&img&&src\");\nd.push({\n    title: '剧情简介：',\n    desc: parseDomForHtml(html, \".introduction&&p&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n    if (getMyVar('qyyssort', '1') == '0') {\n        var list = parseDomForArray(conts[i], 'body&&ul&&li:not(:contains(在线观看))').reverse();   \n    } else {\n        var list = parseDomForArray(conts[i], 'body&&ul&&li:not(:contains(在线观看))');    \n    }\n    if (list != null) {\n        d.push({\n            title: '““' + '列表排序' + '””',\n            url: \"hiker://empty@lazyRule=.js:putMyVar('qyyssort', getMyVar('qyyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n            col_type: 'text_center_1'\n        });\n        //setError(list[0]);\n\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'body&&Text').replace('磁力', '““' + '磁力' + '””'),\n                url: parseDom(list[j], \"a&&href\"),\n                col_type: 'text_1'\n            });\n        }\n\n    }\n}\n\n//二级模板\nsetHomeResult({\n    data: d\n});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.haokongbu1.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\n// 播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list')[0];\n// 选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=\"\";\n// 过滤掉含番外和特别等字眼为最后一集的选集，避免有更新的选集无法被感知\nfor(let i = 1; i < list.length; i++) {\n    let index = list.length-i;\n    title = parseDomForHtml(list[index],'a&&Text');\n    if(title.search(/番外|特别/) == -1) break;\n}\n// 获取更新时间，确保有更新时能正常提示\nvar time = parseDomForHtml(html, \".myui-content__detail&&p,1&&Text\").replace(\"更新：\", \"\");\nsetResult(\"更新至: \" + title + \" | \" + time);","title":"31看","author":"晓","version":0,"url":"http://www.31kan.com/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-');get;utf-8;{User-Agent@Mobile}","col_type":"movie_3","class_name":"连续剧&电影&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&香港剧&韩国剧&欧美剧&日本剧&台湾剧","class_url":"2&1&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\n\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n        pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\r\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\r\n    });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        content: parseDomForHtml(list[j], 'p,0&&Text') + '\\n' + parseDomForHtml(list[j], 'p,1&&Text') + '\\n' + parseDomForHtml(list[j], 'p,2&&Text'),\n        img: parseDom(list[j], 'a&&data-original') + \"@Referer=\",\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://www.31kan.com/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html'));var jsurl=player_aaaa.url;var from=player_aaaa.from;var duoduo=\"https://player.duoduozy.com/ddplay/?url=\"+jsurl;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(from === 'duoduozy'){request(duoduo, {headers:{'Referer':'http://www.31kan.com/'}}).match(/urls = \"(.*?)\"/)[1]}else if(from === 'renrenmi'){var urll=request(\"https://rr.4kbuka.com/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('', ''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 简介 = parseDomForHtml(html, '.col-pd&&.sketch&&Text').replace('……', '。').replace('　', '').replace('展开全部', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: parseDomForHtml(html, '.myui-content__detail&&.data,2&&Text').substring(0, 19) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace('年份：', ' ').replace('地区：', ' ') + '\\n' + parseDomForHtml(html, '.myui-content__detail&&.data,3&&Text'),\n    desc: parseDomForHtml(html, '.myui-content__detail&&p,2&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 65) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'long_text'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级快捷键\",\"path\":\"erjiKJJ\",\"rule\":\"d.push({\\n    title: '影视圈',\\n    url: 'hiker://search?s=' + title + '&rule=影视圈',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '聚合圈',\\n    url: 'hiker://search?s=' + title + '&rule=聚合圈',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"一级快捷键\",\"path\":\"yijiKJJ\",\"rule\":\"d.push({\\n    title: 'B站',\\n    url: 'hiker://home@哔哩ℛ',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 聚合 ',\\n    url: 'hiker://home@资源网采集.xyq',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 影视 ',\\n    url: 'hiker://home@香情影视',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 搜狗 ',\\n    url: 'hiker://home@搜狗·Q',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 直播 ',\\n    url: 'hiker://home@直播',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 虎牙 ',\\n    url: 'hiker://home@虎牙',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 斗鱼 ',\\n    url: 'hiker://home@斗鱼',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 企鹅 ',\\n    url: 'hiker://home@企鹅',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' APP ',\\n    url: 'hiker://home@APP影视',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 仓库 ',\\n    url: 'hiker://home@道长仓库',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 论坛 ',\\n    url: 'hiker://home@视界论坛R',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 导入 ',\\n    url: 'hiker://home@合集导入',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 漫画 ',\\n    url: 'hiker://home@漫画',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 音乐 ',\\n    url: 'hiker://home@QQ音乐🎶',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 抖音 ',\\n    url: 'hiker://home@短视频·Q',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 阅读 ',\\n    url: 'hiker://home@稻草人书屋',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 榜单 ',\\n    url: 'hiker://home@开天榜单',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 虎娃 ',\\n    url: 'hiker://home@虎娃•R',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 厨娃 ',\\n    url: 'hiker://home@厨娃R',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' JRS ',\\n    url: 'hiker://home@JRS直播',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 杂志 ',\\n    url: 'hiker://home@杂志&报纸',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 知乎 ',\\n    url: 'hiker://home@知乎热搜',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 堆糖 ',\\n    url: 'hiker://home@堆糖',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 新浪 ',\\n    url: 'hiker://home@稻新浪图集',\\n    col_type: 'scroll_button',\\n});\\nd.push({\\n    title: ' 黑黑 ',\\n    url: 'hiker://home@黑黑影视',\\n    col_type: 'scroll_button',\\n});\\nconst shortcut = [\\n    '插件@@hiker://js@@hiker://images/collection',\\n    '收藏@@hiker://collection@@hiker://images/history',\\n    '备份@@hiker://webdav@@hiker://images/video',\\n    '书签@@hiker://bookmark@@hiker://images/bookmark'\\n];\\nshortcut.forEach(function(s) {\\n    let a = s.split(/\\\\s*@@\\\\s*/);\\n    d.push({\\n        title: a[0],\\n        url: a[1],\\n        pic_url: a[2],\\n        col_type: 'icon_small_4'\\n    });\\n});\\nd.push({\\n    col_type: 'line_blank'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\n\"}]","icon":"https://android-artworks.25pp.com/fs08/2021/09/10/2/2_5f35b91fdcef19ee56c3218d39960ee8_con_130x130.png"},{"last_chapter_rule":"","title":"飞捷","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://fj6080.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(MY_URL + \"url\", MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1--------' + page + '---.html')\nconst html = fetch(true_url)\nconst empty = \"hiker://empty\"\n\n\n\nconst categories = parseDomForArray(html, 'body&&.scroll-content');\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL + \"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL + \"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∧</span></b>' : '““””<b><span style=\"color: #19B89D\">∨</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL + \"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a:not(:contains(伦)):not(:contains(直播))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #19B89D\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL + \"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color: #19B89D\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL + \"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL + \"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nvar list = parseDomForArray(html, 'body&&.module-list&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a,1&&title'),\n        desc: parseDomForHtml(list[j], 'body&&.module-item-text&&Text'),\n        img: parseDom(list[j], '.lazy&&data-src').replace('http://', 'https://') + '@Referer=',\n        url: parseDom(list[j], 'a&&href').replace('play', 'detail').replace('/sid/1/nid/1.html', '.html') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src')+ '@Referer=',\n        });\r\n    }\nsetResult(d)","search_url":"https://fj6080.com/vodsearch/**----------fypage---.html","titleColor":"#ff673ab7","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"美剧TV","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://www.ttmjtv.com/search.php?page=fypage&searchtype=5&order=fysort&tid=fyclass&letter=&yuyan=&state=&money=&ver=&jq=&year=fyyear","col_type":"movie_3","class_name":"电影&美剧&综艺&动漫","class_url":"2&1&3&4","area_name":"","area_url":"","sort_name":"人气&时间&评分","year_name":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hit&time&commend","year_url":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.ttmjtv.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"虫虫","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"hiker://empty##https://300ys.xyz/vodshow/38--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\n\nconst 分类颜色 =  '#098AC1'\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 =''\nconst 小类定位 = 'body&&a:not(:contains(伦))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace('---.html',page+ '---.html/').replace(/(---\\d+.html)/,page+'$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = parseDomForArray(html, '.module-items&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://300ys.xyz/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"咪咪-L","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"https://www.mimidianying.com/frim/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"index1&index2&index3&index4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       content: parseDomForHtml(list[j], '.detail--h4&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.mimidianying.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff673ab7","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"小小影视-L","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"https://www.xxys5.com/list-select-id-fyclass-type--area-fyarea-year-fyyear-star--state--order-fysort-p-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&香港&台湾&日本&韩国&美国&泰国&法国&英国&德国&印度&欧洲&东南亚&其他","area_url":"&内地&香港&台湾&日本&韩国&美国&泰国&法国&英国&德国&印度&欧洲&东南亚&其他","sort_name":"人气&更新&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010-2000&90年代&更早","sort_url":"hits&addtime&gold","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010-2000&90年代&更早","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list-unstyled&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'img&&alt'),\n     desc:parseDomForHtml(list[j], '.continu&&Text'),\n     pic_url: parseDom(list[j], 'img&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list-unstyled&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'img&&alt'),\n     desc:parseDomForHtml(list[j], '.continu&&Text'),\n     pic_url: parseDom(list[j], 'img&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.zhuijukan.com/vod-search-wd-**-p-fypage.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.list-unstyled');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.dl-horizontal&&dt,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '');\n\nvar 更新 = parseDomForHtml(html, '');\n\nvar 状态 = parseDomForHtml(html, '.dl-horizontal&&Text');\n\nvar 图片 = parseDom(html, 'img&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.vod-content&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"92122-L","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.92122.org/playshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&日本&韩国&欧美&泰国&新加坡&海外","area_url":"&大陆&香港&台湾&日本&韩国&欧美&泰国&新加坡&海外","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.92122.org/search/**----------fypage---.html","titleColor":"#ff673ab7","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.fed-part-rows,1&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.fed-col-xs12,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.fed-col-xs12,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.fed-col-xs6.fed-col-md3,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-layout,1&&.fed-tabs-boxs&&.fed-tabs-item,1&&.fed-text-muted&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"94i-L","author":"ᝰꫛꫀꪝ藍凋","version":6,"type":"video","url":"https://94itv.net/choose-fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"movie&drama&variety&anime","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&泰国&德国&法国&英国&法国&其他","area_url":"&大陸&香港&台灣&日本&韓國&美國&泰國&德國&法國&英國&法國&其他","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://94itv.net/search-**----------fypage---.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"凌云","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"video","url":"https://www.lingyun.tv/list/fyclass-fyarea-fysort------fypage---fyyear.html;get;UTF-8;{User-Agent@Mozilla/5.0}","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"movie&tv&variety&cartoon","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.content-list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.bottom2&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.sr_lists');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.p0,1&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.lingyun.tv/search/wd/**/page/fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0}","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.py-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.player');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.main-ui-meta&&div,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.text-overflow&&Text');\n\nvar 更新 = parseDomForHtml(html, ' .main-ui-meta&&div,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.main-ui-meta&&div,-1&&Text');\n\nvar 图片 = parseDom(html, '.img&&img&&data-src')+'@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.movie-introduce&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"随行-L","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.suixintv.com/paging/fyclass/by/fysort/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"movie&teleplay&variety&comic","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.suixintv.com/so**/page/fypage.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel-box:has(.stui-content__playlist)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"村长-L","author":"ᝰꫛꫀꪝ藍凋","version":5,"type":"video","url":"https://www.cunzhangba.com/list/fyclass/area/fyarea/by/fysort/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.cunzhangba.com/vodsearch**/page/fypage.html","titleColor":"#ff673ab7","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel-box:has(.stui-content__playlist)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"嘟嘟","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"https://www.dudu2020.com/index.php?m=vod-list-id-fyclass-pg-fypage-order--by-fysort-class-0-year-fyyear-letter--area-fyarea-lang-.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.index-area&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.index-area&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.other&&Text'),\n       content: parseDomForHtml(list[j], '.actor&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.dudu2020.com/index.php?m=vod-search-pg-fypage-wd-**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.playfrom&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#vlink_1');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.ct-c&&span,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.ct-c&&dl&&dd,0&&span&&Text');\n\nvar 地区 = parseDomForHtml(html, '');\n\nvar 年份 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.ee&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"泰剧TV","author":"","version":2,"type":"video","url":"https://m.taijutv.vip/v_all/list-catid-fyclass-leixing-fyarea-videostate-fysort-year-fyyear-page-fypage.html","col_type":"movie_3","class_name":"泰剧&电影&综艺","class_url":"7&11&9","area_name":"全部&总裁&腐剧&虐心&爱情&喜剧&恐怖&剧情&古装&动作&校园","area_url":"&10&1&2&3&4&5&6&7&8&9","sort_name":"完结&连载&预告","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"2&1&3","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.m-list&&li');//列表\n\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'h3&&Text'),//标题\ndesc:parseDomForHtml(list[i],'*'),//描述\npic_url:parseDom(list[i],'.lazy&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original'),//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"https://m.taijutv.vip/index.php?c=so&module=video&keyword=**","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace('?skipl=1','')\n        }\n    }\n});\n\n\nvar arts=parseDomForArray(html,'.mod-head&&.mod-head-title');\nvar tabs = [];\nfor (var i in arts) {\ntabs.push(parseDomForHtml(arts[i],'span&&Text').replace('',''))\n}\nvar conts = parseDomForArray(html,'.albumSelect&&.clearfix');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i],'.clearfix&&li'))\n}\nconst xx=parseDomForArray(html,'.albumDetailMedia&&ul&&li');\nd.push({\npic:parseDom(html,'.albumDetailImg&&img&&src'),\ntitle:xx[0].replace('<li>','').replace('</li>','')+'\\n'+xx[1].replace('<li>','').replace('</li>','')+'\\n'+xx[2].replace('<li>','').replace('</li>','')+'\\n',\nurl: MY_URL,\ncol_type: 'movie_1_vertical_pic_blur'\n});d.push({\ntitle: '共有'+conts.length+'线路'+'☞勿信水印广告zzz⃤',\nurl: MY_URL,\ncol_type: 'text_1'\n});\nvar des_desc = parseDomForHtml(html, '.albumDetailIntroTxt&&data-content');\nd.push({\n          title: des_desc.length > 50 ? des_desc.replace(des_desc, des_desc.substring(0, 50) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n          url: 'hiker://empty#' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,     \n          col_type: 'text_1'\n});\n\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'flex_button'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'flex_button'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: 'flex_button'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type:'rich_text'});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#player_list')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"AuEte","author":"晓","version":0,"url":"https://auete.com/search.php?page=fypage&searchtype=5&order=fysort&tid=fyclass&year=fyyear&area=fyarea","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":".threadlist&&li;.title&&Text;img&&src;p&&Text;a&&href.js:input+\"#immersiveTheme#\"","searchFind":"body&&.list-unstyled;.text-danger&&Text;a&&href.js:input+\"#immersiveTheme#\";.text-grey&&Text;.text-danger&&Text+.ml-2&&Text;;","search_url":"https://auete.com/search.php?page=fypage&searchword=**","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\")&& urls[i].match(/\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nvar arts = parseDomForArray(html, 'body&&h2');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').match(/』(.*?)\\：/)[1])\n}\nvar conts = parseDomForArray(html, 'body&&#player_list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nd.push({\n    title: parseDomForHtml(html, 'p,4&&Text').replace('影片', '').substring(1, 22) + '\\n' + parseDomForHtml(html, 'p,5&&Text').substring(1, 20),\n\n    desc: parseDomForHtml(html, 'p,6&&Text').substring(1, 22) + '\\n' + parseDomForHtml(html, 'p,8&&Text').substring(1, 19),\n    pic_url: parseDom(html, '.cover&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nvar desc = '简介 : ' + parseDomForHtml(html, '.message&&p,-1&&Text').replace('　　', '').replace('[收起部分]', '').replace('简介：', '').substring(3, 71) + \"…详情\";\neval(fetch(\"hiker://files/rules/js/xiaoXL.js\"));","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"let localHtml = fetch('hiker://files/rules/js/xiaoXL.js');\nlet gitHtml = fetch('https://91io.cn/s/G2k6kCG/xiaoXL.js');\nif (!localHtml || localHtml != gitHtml) {\n  writeFile(\"hiker://files/rules/js/xiaoXL.js\", gitHtml); }","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2021/10/22/5/2_1c34fcddeb650eadbca457ed12c03fbc_con_130x130.png"},{"last_chapter_rule":"","title":"1080P","author":"鸠魁&晓","version":0,"url":"https://1080p.tv/vodshow/fyclass-fyarea--fysort-----fypage---fyyear/.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-');get;utf-8;{User-Agent@Mobile}","col_type":"movie_3","class_name":"连续剧&电影&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&香港剧&韩国剧&欧美剧&日本剧&台湾剧","class_url":"2&1&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21","area_name":"地区&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&泰国&其他","area_url":"&内地&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&泰国&其他","sort_name":"时间&人气&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.module-list&&.module-item');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.module-item-text&&Text'),\n     pic_url: parseDom(list[j], 'img&&data-src')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);\n","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://1080p.tv/vodsearch/**----------fypage---/;get;utf-8;{User-Agent@Mozilla 5.0}","group":"②影视","detail_col_type":"movie_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.player-wrapper&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));var jsurl=player_data.url;var from=player_data.from;var duoduo=\"https://player.duoduozy.com/ddplay/?url=\"+jsurl;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|le|pptv/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(from === 'renrenmi'){var urll=request(\"https://www.80k.tv/rr/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll}else if(from === 'rx'){eval(JSON.parse(fetch('hiker://page/globalParse?rule=道长仓库Pro', {})).rule);lazyParse(\"https://80k.tv/player/analysis.php?v=\"+jsurl,5000)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//导演名称的定位\nvar daoyan = parseDomForHtml(html, '.video-info-items&&Text').replace('/','').replace('/','').substring(0, 15);\n\n\n//演员名称的定位\nvar zhuyan = parseDomForHtml(html, '.video-info-items,1&&Text').replace('/','').substring(0, 18);\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\n//影片分类的定位\nvar fenlei = parseDomForHtml(html, '.tag-link,1&&a&&Text').replace('','分类： ').substring(0, 35);\n\nvar diqu = parseDomForHtml(html,'.tag-link,3&&Text');\n\nvar nianfen = parseDomForHtml(html,'.tag-link,2&&Text').replace('年代：','');\n\nvar 简介= parseDomForHtml(html, '.video-info-items,6&&Text');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar aa='hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#';\nputVar('aa',aa);\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n\ttitle:daoyan + '\\n' + zhuyan +'\\n'+ fenlei +'|'+ diqu +'|'+ nianfen,\n\tdesc:parseDomForHtml(html,'.video-info-items,2&&Text').substring(0, 50)+ '\\n' + parseDomForHtml(html, '.video-info-items,3&&Text').replace('备注：','状态: '),\n\npic_url: parseDom(html,'.lazyload&&data-src'),\n    url: getVar('aa'),\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(3, 65) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nd.push({\n    title: '影视圈',\n    url: 'hiker://search?s=' + title + '&rule=影视圈',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UplTJ.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚合圈',\n    url: 'hiker://search?s=' + title + '&rule=聚合圈',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UpQw4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&rule=',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5Up3k9.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UC4Wn.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    pic_url: \"https://z3.ax1x.com/2021/10/11/5ei2tA.gif\",\nurl: MY_URL,\n    col_type: 'pic_1_full'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href')  + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href')  + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2021/10/26/6/123_6379ac33291ee64cc642235fd03657ec_con_130x130.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"九州影视","author":"晓","version":0,"url":"http://www.unss.net/vodshow/fyclass-fyarea--fysort-----fypage---fyyear/.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-').replace('-up', 'up-')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&日韩剧&欧美剧","class_url":"1&2&3&4&15&16","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&更新&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&up&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&%E4%BC%A6%E7%90%86&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n        content: parseDomForHtml(list[j], 'p,2&&Text'),\r\n        img: parseDom(list[j], 'a&&data-original') + '@Referer=',\r\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\r\n    });\r\n}\r\nsetResult(d)","search_url":"http://www.unss.net/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar html = getResCode();\n\n\n//免嗅\nvar lazy = `@lazyRule=.js:var url=unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(/.html|bilibili/.test(url)){var input=url;` + lazy + `}else{url+'#isVideo=true#'}`;\n\nvar playList = [];\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&a');\n\n\nfor (var i in arts) {\n    playList.push({\n        name: parseDomForHtml(arts[i], 'Text'),\n        list: []\n    });\n}\nplayList[0].use = true;\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n\n\ntry {\n    //导演\n    var daoyan = parseDomForHtml(html, '.data,3&&Text').substring(3, 26);\n    //演员\n    var yanyuan = parseDomForHtml(html, '.data,2&&Text').substring(3, 45);\n    //状态\n    var time = parseDomForHtml(html, '.data,1&&Text').replace('状态：', '');\n} catch (e) {\n    var daoyan = yanyuan = time = \"未知\";\n}\nvar data = {\n    myhistory: {\n        url: MY_URL,\n        ruleName: MY_RULE.title\n    }, //固定\n    name: parseDomForHtml(html, 'h1&&Text'),\n    pic: parseDom(html, '.lazyload&&data-original'),\n    class: parseDomForHtml(html, '.branch&&Text'),\n    year: parseDomForHtml(html, '.data&&Text').replace('分类：', ' ').replace('地区：', ' ').replace('年份：', ' '),\n    area: parseDomForHtml(html, '.pic-text&&Text'),\n    info: [{\n            type: '导演：',\n            inf: daoyan\n        },\n        {\n            type: '演员：',\n            inf: yanyuan\n        },\n        {\n            type: '状态：',\n            inf: time\n        }\n    ],\n    desc: parseDomForHtml(html, '.data,-1&&Text'),\n    lazy: true,\n\n    plugin: $.toString(() => {\n        var config = fetch('hiker://files/cache/MyParseSet.json');\n        if (config == '' || !fetch(JSON.parse(config).cj)) {\n            var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n        } else {\n            var jsUrl = JSON.parse(config).cj;\n        }\n        eval(fetch(jsUrl));\n        var d = [];\n        setParse();\n        setResult(d);\n    })\n}\n\nfor (let i = 0; i < conts.length; i++) {\n    playList[i].list = parseDomForArray(conts[i], \"ul&&li\").map(item => {\n        return {\n            title: parseDomForHtml(item, \"a&&Text\"),\n            url: parseDom(item, 'a&&href') + lazy,\n        }\n    });\n}\n//setError(playList)\ndata.playList = playList;\nputVar('movieDetail', data);\nsetResult([{\n    desc: 'float&&100%',\n    url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/x5page/style_pro.html',\n    col_type: 'x5_webview_single'\n}]);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"var is_refresh=0;\n//＝1为每次打开小程序都下载页面文件，进二级点击海报图，更新动态文件。平常最好设为0\nis_refresh||!fileExist('hiker://files/rules/x5page/style_pro.html')?(writeFile('hiker://files/rules/x5page/style_pro.html',request('http://82.156.222.77/weisyr/style_pro.html'))):0;\nputVar('gengxin',is_refresh);","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2021/09/28/8/109_b2ee2e1556e6c2d3b70505fee86e4c09.gif"},{"last_chapter_rule":"","title":"饭团影视.dz","author":"道长","version":8,"url":"https://ty.fantuan.tv/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nconst {comParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nlet parStr=\"body&&.myui-vodlist__box;a&&title;a&&data-original.js:input+'@Referer=';a&&Text;a&&href.js:input+'#immersiveTheme#'\";\nlet jscode=comParse(parStr,true);\neval(jscode)","searchFind":"js:\r\nconst {comParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nlet parStr=\"#searchList&&li;.thumb&&a&&title;.thumb&&a&&data-original.js:input+'@Referer=';.detail&&p,1&&Text;.searchkey&&href.js:input+'#immersiveTheme#'\";\nlet jscode=comParse(parStr,true);\neval(jscode)","search_url":"https://ty.fantuan.tv/vodsearch.html?wd=**&submit=","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nlet d=[];\nlet html=getResCode();\nd.push({\n    title:pdfh(html,\".myui-content__thumb&&a&&title\"),\n    pic_url:pd(html,\".myui-content__thumb&&a&&img&&data-original\"),\n    url:pd(html,\".myui-content__thumb&&a&&href\"),\n    desc:pdfh(html,\".myui-content__detail&&Text\"),\n    col_type:\"movie_1_vertical_pic_blur\"\n});\nlet info=pdfh(html,\"#desc&&span.content&&Text\");\nfunction rechange(playUrl){\n    fba.log(\"开始改变链接\");\n    return playUrl\n}\nlet lazy=$(\"\").lazyRule((rechange)=>{\n    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n   return lazyParse(input,null,null,rechange);\n},rechange);\nd.push({\n    title:\"剧情简介\",\n    desc:info,\n    col_type:\"text_1\",\n    url:$().rule((info)=>{\n        let d=[];\n        d.push({\n            title:info,\n            col_type:\"long_text\"\n        },info);\n        setResult(d)\n    },info)\n});\nfunction reChange(link){\n        if (/cat\\.wkfile\\.com\\/m3u8/.test(link)){\n            link+=\";{Referer@https://fantuan.tv}\"\n        }\n        return link;\n }\nlet tabs=pdfa(html,\".tab-content&&a\");\n//log(tabs.length)\nd.push({\n    title:\"播放地址共计\"+tabs.length+\"条线路\",\n    col_type:\"text_1\",\n    url:\"hiker://\"\n});\nfor(let i in tabs){\n    d.push({\n        title:pdfh(tabs[i],\"a&&Text\"),\n        url:pd(tabs[i],\"a&&href\")+lazy,\n        col_type:tabs.length>10?\"flex_button\":\"text_2\",extra:{\n                    blockRules: ['baidu.*.png', '.jpg','.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']\n}\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/饭团影院.png"},{"last_chapter_rule":"","title":"F7影院","author":"","version":0,"url":"https://haokanju1.cc/index.php/vod/show/fyarea/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&||&国产剧&港台剧&欧美剧&日韩剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&16&||&13&14&15&39","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","area_url":"&/area/大陆&/area/美国&/area/香港&/area/韩国&/area/英国&/area/台湾&/area/日本&/area/法国&/area/意大利&/area/德国&/area/西班牙&/area/泰国&/area/其它","sort_name":"时间&人气&评分&喜剧&动作&爱情&惊悚&犯罪&冒险&科幻&悬疑&剧情&动画&武侠&战争&歌舞&奇幻&传记&警匪&历史&运动&伦 理&灾难&西部&魔幻&枪战&恐怖&记录","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"/by/time&/by/hits&/by/score&/class/喜剧&/class/动作&/class/爱情&/class/惊悚&/class/犯罪&/class/冒险&/class/科幻&/class/悬疑&/class/剧情&/class/动画&/class/武侠&/class/战争&/class/歌舞&/class/奇幻&/class/传记&/class/警匪&/class/历史&/class/运动&/class/伦 理&/class/灾难&/class/西部&/class/魔幻&/class/枪战&/class/恐怖&/class/记录","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://haokanju1.cc/index.php/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=decodeURIComponent(base64Decode(xx.url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&span&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://haokanju1.cc/mxstatic/picture/logo.png"},{"last_chapter_rule":"","title":"视觉影院","author":"","version":0,"url":"http://shijueyy.com/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\n\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\npic_url:parseDom(list[i],'.lazyload&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original'),//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"http://shijueyy.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#bofy&&h2');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('类型：','').replace('地区：','').replace('年份：','');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text').replace(' 展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 状态,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://shijueyy.com/template/ikan/img/favicon.png"},{"last_chapter_rule":"","title":"迷你库","author":"","version":1,"url":"http://www.miniku.cc/vodshow/fyclass-fyarea-fysort------fypage---fyyear/","col_type":"movie_3","class_name":"欧美&日韩&电影&剧集&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"20&21&1&2&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"http://www.miniku.cc/vodsearch/**----------fypage---/","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){var input=url;eval(fetch('hiker://files/cache/Parse_Dn.js'));aytmParse(input)}else if(from=='renrenmi'){var rr=request('https://sudu.renrenmi.cc:2021/ku/analysis.php?v='+url).match(/https.*?m3u8/)[0];cacheM3u8(rr)}else{url}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace('剧情： ','').replace('收起','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.miniku.cc/upload/mxcms/20211026-1/f829108856ade114cd56f0b11f626efd.png"},{"last_chapter_rule":"","title":"HG影视","author":"","version":1,"url":"http://cs.hgyx.vip/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"4k影视片&4k影视剧&4k动漫&综艺","class_url":"1&2&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","area_url":"&/area/大陆&/area/美国&/area/香港&/area/韩国&/area/英国&/area/台湾&/area/日本&/area/法国&/area/意大利&/area/德国&/area/西班牙&/area/泰国&/area/其它","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\n\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.xszxj&&Text'),//描述\npic_url:parseDom(list[i],'.lazyload&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href').replace('detail','play').replace('.html','/sid/1/nid/1.html')+\"#immersiveTheme#\",//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original'),//图片\nurl:parseDom(list[i],'a&&href').replace('detail','play').replace('.html','/sid/1/nid/1.html')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"http://cs.hgyx.vip/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=decodeURIComponent(base64Decode(xx.url));var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.player_detail&&h2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.play_text&&p&&Text');\n\nvar 主演 = parseDomForHtml(html, '.play_content&&p,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.play_content&&p&&Text');\n\nvar 图片 = parseDom(html, '.play_vlist&&.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.play_content&&p,-1&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://i.loli.net/2021/11/04/1RyVMrghf9itlIc.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"喵乐影视","author":"","version":2,"url":"http://www.miaoleys.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&奈菲专区&十月新番&动漫&综艺","class_url":"1&2&47&4&3&48","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"http://www.miaoletv.com/vodsearch/----------fypage---.html?wd=**","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|le/)){var input=url;eval(fetch('hiker://files/cache/Parse_Dn.js'));aytmParse(input)}else if(from=='renrenmi'){request('https://xl.miaoletv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1]}else{url}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace('超清线路一','爱奇艺').replace('超清线路二','腾讯').replace('超清线路三','优酷').replace('超清线路四','芒果').replace('超清线路五','乐视').replace('超清线路六','搜狐').replace('超清线路七','哔哩哔哩').replace('超清线路八','PPTV').replace('此线路广告勿信','kbm3u8').replace('喵乐云','人人迷'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text');\n\nvar 年代 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.zkjj_a&&Text').replace('[展开全部]','');\n\nvar 图片链接 =MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 年代 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://i.loli.net/2021/11/02/A1YoesEfpX46CiD.png"},{"last_chapter_rule":"","title":"极速云播","author":"","version":1,"url":"https://www.zxyb.cc/s/fyclass-fyarea--fysort-----fypage---2021.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-')","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分&喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&动画&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&古装&历史&运动&农村&儿童&网络电影","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score&喜剧&爱情&恐怖&动作&科幻&剧情&战争&警匪&犯罪&动画&奇幻&武侠&冒险&枪战&恐怖&悬疑&惊悚&经典&青春&文艺&微电影&古装&历史&运动&农村&儿童&网络电影","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.zxyb.cc/so/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var jsurl=player_aaaa.url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(jsurl.match(/renrenmi/)){var rr=request('https://zxyb.xyz/lg/analysis.php?v='+jsurl).match(/urls = \"(.*?)\"/)[1];cacheM3u8(rr)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('极速云[蓝光]','人人迷').replace('百度云','龙腾'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://i.loli.net/2021/11/02/rfqZM8NShUePikK.jpg"},{"last_chapter_rule":"","title":"爱影吧","author":"","version":2,"url":"http://www.ayinb.com/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&惊悚片&犯罪片&冒险片&悬疑片&武侠片&奇幻片&记录片&邵氏电影&b电影&||&国产剧&港台剧&日韩剧&欧美剧&泰剧","class_url":"1&2&3&4&||&6&7&8&9&10&11&12&20&21&22&23&24&25&26&29&30&||&13&14&15&16&28","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\n\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\npic_url:parseDom(list[i],'.lazyload&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original'),//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"http://www.ayinb.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputMyVar('_x5', $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\") &&  urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}));\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){showLoading('正在进行嗅探，请稍候');'x5Rule://'+input+'@'+getMyVar('_x5')}else if(from=='renrenmi'){var rr=request('http://www.ayinb.com/as/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];cacheM3u8(rr)}else if(from=='leduo'){request('https://api.leduotv.com/wp-api/glid.php?vid='+url+'&isDp=1').match(/url='(.*?)'/)[1]+\"#isVideo=true#\"}else{url}`;\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#playlistbox');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('类型：','').replace('地区：','').replace('年份：','');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text').replace(' 展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 状态,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://i.loli.net/2021/11/02/hDuP8iEgTvfBsr6.png"},{"last_chapter_rule":"","title":"U23c影院","author":"","version":0,"url":"https://www.u23c.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span&&Text'),\n     pic_url: parseDom(list[j], '.lazy&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title').replace('立刻播放',''),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], '.lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.u23c.com/vodsearch/**----------fypage---.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){var input=url;eval(fetch('hiker://files/cache/Parse_Dn.js'));aytmParse(input)}else if(from=='renrenmi'){eval(fetch('hiker://files/cache/Parse_Dn.js'));ParseS.defaultParse(\"https://jx.renrenmi.cc/?url=\"+url)}else{url}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '#playNumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playNumList');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.info-item,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.info-item,2&&Text');\n\nvar 年代 = parseDomForHtml(html, '.info-item&&Text');\n\nvar 状态 = parseDomForHtml(html, '.infor-item&&Text');\n\nvar 图片 = parseDom(html, '.detail-info&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.ju-blurb&&Text');\n\nvar 图片链接 =MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 年代 + '\\n' + 分类,\n    desc: 地区 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.u23c.com/template/datll_tpl_m031/assets/icon/favicon.ico"},{"last_chapter_rule":"","title":"嘿锋影视","author":"","version":0,"url":"https://www.hfys8.vip/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影片&连续剧&动漫剧&综艺剧","class_url":"20&21&22&23","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&奇幻片&悬疑片&动画片&惊悚片&古装片","area_url":"26&27&28&29&30&31&32&33&34&35&36&37&38","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&泰国剧&其他剧","sort_url":"","year_url":"39&40&41&42&43&44","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://www.hfys8.vip/' + j.pic;\n    r.url = 'https://www.hfys8.vip/vod/detail/id/' + j.id + '/' + \"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.hfys8.vip/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var jsurl=player_aaaa.url;var from=player_aaaa.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演 ,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.hfys8.vip/template/unioreo/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"零玖影视","author":"","version":1,"url":"https://09tv.top/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear/","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&li:has(.mo-situ-lazy)');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.mo-situ-name&&Text'),\r\n       desc: parseDomForHtml(list[j], '.mo-situ-rema&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original')+\"#immersiveTheme#\",\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info.mo-cols-rows');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h1&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span,2&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://09tv.top/index.php/vod/search/page/fypage/wd/**/","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var js = request(input);var jsurl = base64Decode(parseDomForHtml(js, '.mo-play-load&&data-play').slice(3));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl+\"#isVideo=true#\"}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mo-movs-btns');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-lays&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-lays&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.mo-cols-lays&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.mo-cols-lays&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.mo-situ-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-lhxl-24px&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://i.loli.net/2021/10/24/vcREwIiSCHF8dGm.jpg"},{"last_chapter_rule":"","title":"达达兔","author":"","version":1,"url":"https://www.osx3.com/s/fyclass-fyarea-fyyear/by/fysort/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&惊悚片&奇幻片&文艺片&悬疑片&纪录片&犯罪片&动画片&其他片&||&国产剧&港台剧&日韩剧&欧美剧&泰国剧","class_url":"movie&tv&zongyi&dongman&||&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&weidianying&fuli&xuanyipian&jilupian&fanzuipian&donghuapian&qitapian&||&guochanju&gangtaiju&rihanju&oumeiju&lunlipian","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://www.osx3.com' + j.pic;\n    r.url = 'https://www.osx3.com/v/' + j.id + '/' + \"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.osx3.com/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.js:var js = request(input);var url = base64Decode(parseDomForHtml(js, '.fed-play-iframe&&data-play').slice(3));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){var input=url;eval(fetch('hiker://files/cache/Parse_Dn.js'));aytmParse(input)}else if(url.match(/renrenmi/)){xx=request('https://jiexi.moeamv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8',fetch(xx, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+xx}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-tabs-item&&ul&&li:not(:contains(永久网址发布页：www.osx2.com(收藏不迷路)))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&li,1&&Text');\n\nvar 分类 = parseDomForHtml(html, '.fed-deta-content&&li,2&&Text');\n\nvar 更新 = parseDomForHtml(html, '.fed-deta-content&&li,5&&Text');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-esan&&Text').replace('简介：','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 分类 + '\\n' + 更新,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.osx3.com/upload/site/20210114-1/82f9ef7bd34028a1a5e8b9c9bdf07a58.png"},{"last_chapter_rule":"","title":"电影港","author":"sm`回忆","version":0,"url":"https://www.dy6g.com/dygtop/fyclass/fyarea/by/fysort/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&记录片&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&香港剧&台湾剧&日本剧&韩国剧&欧美剧&海外剧","class_url":"dygdy&dygdsj&/dygzy&dygdm&dygjlp&||&dygdzp&dygxjp&dygaqp&dygkhp&dygkbp&dygjqp&dygzzp&||&dyggcj&dygxgj&dygtwj&dygrbj&dyghgj&dygomj&dyghwj","area_name":"全部&大陆&香港&台湾&新加坡&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&俄罗斯&澳大利亚","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/新加坡&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/俄罗斯&/area/澳大利亚","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.dy6g.com/dygso**/page/fypage.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(base64Decode(player_aaaa.url));var from=player_aaaa.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|le/)){var input=url;eval(fetch('hiker://files/cache/Parse_Dn.js'));aytmParse(input)}else if(from=='renrenmi'){xx=request('https://api.anje.cn/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8',fetch(xx, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+xx}else if(from=='leduo'){request('https://api.leduotv.com/wp-api/glid.php?vid='+url+'&isDp=1').match(/url='(.*?)'/)[1]+\"#isVideo=true#\"}else{url+'#isVideo=true#'}`;\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('蓝光①线','腾讯').replace('蓝光极速','人人迷').replace('蓝光②线','爱奇艺').replace('蓝光③线','优酷').replace('蓝光④线','芒果').replace('蓝光⑤线','搜狐').replace('蓝光⑥线','哔哩哔哩').replace('备用①线','dbm3u8').replace('备用②线','tkm3u8').replace('备用③线','leduo'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('类型：','').replace('地区：','').replace('年份：','').replace('语言：','');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.dy6g.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"尘落电影网","author":"浮生短&逐风者","version":2021092805,"url":"http://v.90s.wang/whole/fyclass_fyarea__fyyear___0_fysort_fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)&&Cookie@.js:getVar('cookie')}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺&国产剧&港台剧&日韩剧&欧美剧&其他剧&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&动漫片&音乐片&犯罪片&悬疑片&冒险片&奇幻片&惊悚片&青春片&灾难片&古装片","class_url":"2~1&1&4&3&13&14&15&16&20&6&7&8&9&10&11&12&21&22&23&26&33&34&35&36&37&38&41&42","area_name":"地区&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"最新&最热&评分","year_name":"时间&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"time&hit&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.pic');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'img&&alt');\n        var img = parseDom(list[i], 'img&&src');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.sBottom||.pic-tag&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.picTxt&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'.sTit&&Text'),\ndesc:parseDomForHtml(list[i],'.sDes&&Text'),\ncontent:parseDomForHtml(list[i],'.txt&&Text'),\npic_url:parseDom(list[i],'img&&src'),\nurl:parseDom(list[i],'a&&href')\n});\n  }catch(e){}\n}\n//道佬•模板\nres.data = d;\nsetSearchResult(res);","search_url":"http://v.90s.wang/?c=search&wd=**&sort=addtime&order=desc&page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)&&Cookie@.js:getVar('cookie')}","titleColor":"#ff871f78","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#sec_subTab&&p');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#sec_subTab&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.sSource&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.sDes&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.sDes,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, 'img&&src');\n\nvar 简介 = parseDomForHtml(html, '.pIntroTxt&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//感谢：①大总管提供一级规则。②墙佬指导。","pages":"[]","icon":"http://v.90s.wang/favicon.ico"},{"last_chapter_rule":"","title":"喜欢看","author":"逐风者","version":2021101802,"url":"https://www.xhkan.com/vodshow/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪","area_url":"6&7&8&9&10&11&12&21","sort_name":"","year_name":"国产剧&港台剧&日韩剧&海外剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.xhkan.com/vodsearch/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p,3&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&data-original'),\n\turl: parseDom(html, 'img&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head:has(.more)');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.xhkan.com/favicon.ico"},{"last_chapter_rule":"","title":"LIBVIO","author":"逐风者","version":2021092906,"url":"https://www.libvio.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&日韩剧&欧美剧","class_url":"1&2&4&15&16","area_name":"","area_url":"","sort_name":"","year_name":"搜索有验证就不搞了","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.libvio.com/search/**----------fypage---.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p,5&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&data-original'),\n\turl: parseDom(html, 'img&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/97.svg"},{"last_chapter_rule":"","title":"5个G影院","author":"逐风者","version":2021111802,"url":"http://www.gggggyy.com/show/fyclass--fysort------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"按时间&按人气&按评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.gggggyy.com/search/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, 'body&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, 'body&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&p,4&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/\\d+.\\d/,'');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/156.png"},{"last_chapter_rule":"","title":"克拉TV","author":"逐风者","version":2021111802,"url":"https://m.kelatv.com/fyAll/index-fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"movie_3","class_name":"电影&电视剧&动漫","class_url":"dianying&dianshiju&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.video-list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.video-duration&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'div&&data-echo'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.detail-wrap');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'li&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'li,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'div&&data-echo'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://m.kelatv.com/search/**-fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.layui-tab-title');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.layui-tab-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.desc&&li,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.desc&&li,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.desc&&li,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.desc&&li,3&&Text');\n\nvar 图片 = parseDom(html, 'img,1&&src');\n\nvar 简介 = parseDomForHtml(html, '.detail-intro-txt&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:$(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:$(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://m.kelatv.com/favicon.ico"},{"last_chapter_rule":"","title":"西门影视","author":"逐风者","version":2021110502,"url":"https://ximenys.com/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"西门专线&电影&电视剧&综艺&动漫","class_url":"25&1&2&3&4","area_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","area_url":"13&14&15&16&23","sort_name":"悬疑片&奇幻片&惊悚片&纪录片","year_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","sort_url":"20&21&22&24","year_url":"6&7&8&9&10&11&12","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item-cover');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'img&&alt'),//【标题】\n       desc: parseDomForHtml(list[j], 'a,1&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.video-info-items,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&data-src'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://ximenys.com/index.php/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(from=='rx'){request('https://test.rongxingvr.com/test/?url='+jsurl).match(/urls = \"(.*?)\"/)[1]}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content:has(.tab-item)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-items,4&&Text').replace(/[收起部分]/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://ximenys.com//upload/dycms/20210804-1/0d2747872badd4b359bfbf0831782101.png"},{"last_chapter_rule":"","title":"糖果影视","author":"逐风者","version":2021100204,"url":"https://www.tgys.tv/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"国产剧&港台剧&日韩剧&欧美剧","area_url":"13&14&15&16","sort_name":"惊悚片&犯罪片&冒险片&悬疑片&动画片&武侠片&奇幻片&纪录片","year_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","sort_url":"20&21&22&23&24&25&26&27","year_url":"6&7&8&9&10&11&12","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.hidden_xs&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.tgys.tv/vodsearch/**----------fypage---.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, '#bofy&&.tab-play');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '#cText&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h2&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/17.svg"},{"last_chapter_rule":"","title":"外星人视频","author":"逐风者","version":2021111501,"url":"https://www.ettv8.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic_text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href').replace('detail','play').replace('.html','-1-1.html')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('detail','play').replace('.html','-1-1.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.ettv8.com/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//调用断插\nvar config = fetch('hiker://files/cache/MyParseSet.json');\n\nif(config == '' || !fetch(JSON.parse(config).cj)){\n\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n\n}else{\n\n    var jsUrl = JSON.parse(config).cj;\n\n} eval(fetch(jsUrl));\n\n//断插免嗅探\nvar lazy = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.play_content&&p&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.play_content&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '');\n\nvar 简介 = parseDomForHtml(html, '.play_content&&p,2&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h2&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"VIP电影院","author":"逐风者","version":2021111501,"url":"http://www.ceroti.cn/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"国产剧&港台剧&日韩剧&欧美剧","area_url":"13&14&15&16","sort_name":"动画片&纪录片","year_name":"动作片&喜剧片&爱情片&科幻片&恐惧片&剧情片&战争片","sort_url":"29&19","year_url":"6&7&8&9&10&11&12","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.hidden-mi&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.ceroti.cn/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel_hd:has(.pull-right)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.text-red&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&p,4&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/\\d+.+\\d/,'');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.ceroti.cn/favicon.ico"},{"last_chapter_rule":"","title":"爱西西影视","author":"逐风者","version":2021111401,"url":"https://aixixi.vip/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.mo-cols-lg2');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a,1&&Text'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.mo-situ-rema&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h1&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], '.mo-situ-rema&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.mo-lhxl-24px&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://aixixi.vip/index.php/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.mo-cols-lg10&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-md6,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-md6,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.mo-cols-md3,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.mo-cols-md3,2&&Text');\n\nvar 图片 = parseDom(html, '.mo-byxs-2by3&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-ptxs-0px&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://aixixi.vip/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"九亿看看","author":"逐风者","version":2021100604,"url":"https://www.9ekk.net/vodshow/fyclass--fyyear------fypage---fyarea.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&&国产剧&港台剧&日韩剧&欧美剧&海外剧","class_url":"dianying&lianxuju&zongyi&dongman&&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&&guochanju&gangtaiju&rihanju&oumeiju&haiwaiju","area_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","area_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_name":"遇到部分视频不能播放就换个规则。","year_name":"按时间&按人气&按评分","sort_url":"","year_url":"time&hits&score","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-pannel_bd&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.9ekk.net/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.detail-content&&Text').replace(/9亿看看.*/,'').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&data-original'),\n\turl: parseDom(html, 'img&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.nav&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://www.9ekk.net/favicon.ico"},{"last_chapter_rule":"","title":"淘剧影院G","author":"逐风者","version":2021111103,"url":"http://m.huigutongying.cn/lists/fyclass_fypage.html?order=fysort","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"按时间&按人气","year_name":"","sort_url":"time&hit","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.hidden-mi&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://m.huigutongying.cn/search.php?searchword=**;post;utf-8","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, 'body&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, 'body&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&p,4&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/113.svg"},{"last_chapter_rule":"","title":"ONE蓝光影院","author":"逐风者","version":2021110705,"url":"http://www.onedianshi.com/vod/show/by/time/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连接剧&综艺&动漫&哔哩","class_url":"1&2&3&4&40","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.pack-ykpack');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.qr&&Text')+' '+parseDomForHtml(list[j], '.pack-prb&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], '.eclazy&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.padd');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'p&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.eclazy&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.onedianshi.com/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(from=='rx'){request('https://test.rongxingvr.com/test/?url='+jsurl).match(/urls = \"(.*?)\"/)[1]}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '#tag&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.item-actor,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.item-type&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.item-actor&&Text');\n\nvar 状态 = parseDomForHtml(html, '.item-director&&Text');\n\nvar 图片 = parseDom(html, '.img-cover&&src');\n\nvar 简介 = parseDomForHtml(html, '#cText&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"http://www.onedianshi.com/template/DYXS2/static/picture/logo.png"},{"last_chapter_rule":"","title":"乐猪TV","author":"逐风者","version":2021101708,"url":"http://www.lezhutv.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&韩剧","class_url":"1&2&3&4&14","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.tbox_m&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.tbox_m&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], 'span&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.lezhutv.com/search-pg-fypage-wd-**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.tbox_js&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.item-lazy&&data-original'),\n\turl: parseDom(html, '.item-lazy&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h4&&Text').replace(/\\d+.*播放/,'');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.tbox_t:has(.icon-pin)');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(/(支持手机)/,''))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.list_block');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/1.svg"},{"last_chapter_rule":"","title":"星辰影院","author":"逐风者","version":2021092806,"url":"http://www.40yb.com/fyAll/indexfypage.html[firstPage=http://www.40yb.com/fyAll/index.html]","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&dianshiju&dongman&zongyi","area_name":"","area_url":"","sort_name":"用免嗅白名单播放","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.40yb.com/search.php?page=fypage&searchword=**=","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,3&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.detail-sketch&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: parseDom(html, '.lazyload&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head:has(.more)');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: $(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: $(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.40yb.com/favicon.ico"},{"last_chapter_rule":"","title":"利丽娅电影","author":"逐风者","version":2021101707,"url":"https://www.llyady.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"4K&哔哩哔哩&电影&电视剧&动漫","class_url":"20&21&1&2&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a,1&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'a,1&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.video-info-items,1&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&data-src'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.llyady.com/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\turl: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/122.svg"},{"last_chapter_rule":"","title":"九妹影视","author":"逐风者","version":2021101907,"url":"https://www.9mdyy.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.stui-vodlist__media&&li;a&&title;a&&href;pic-text&&Text;.hidden-mi&&Text;a&&data-original","search_url":"https://www.9mdyy.com/search/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,3&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,5&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.detail-sketch&&Text').replace('[收起部分]','').replace(/九妹.*已达/,''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: parseDom(html, '.lazyload&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.bottom-line');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/25.png"},{"last_chapter_rule":"","title":"米来影视","author":"逐风者","version":2021102503,"url":"https://www.qdytv.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"动画片&少儿片&纪录片","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"29&63&20","year_url":"13&14&15&16","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-tag&&Text')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text')+'  '+parseDomForHtml(list[i], '.pic-tag&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.qdytv.com/search**/page/fypage.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.myui-content__detail&&p,3&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.myui-content__detail&&p,5&&Text').replace('[收起部分]','').replace(/简介.*剧情/,'').replace(/【本视频.*网络】/,''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: parseDom(html, '.lazyload&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.nav&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/27.png"},{"last_chapter_rule":"","title":"1080看视界","author":"逐风者","version":2021100722,"url":"http://www.1080kan.cc/vodtype/fyAll-fypage/","col_type":"movie_3","class_name":"欧美剧&日韩剧&电影&电视剧&综艺&动漫&记录片","class_url":"29&30&1&2&3&4&31","area_name":"","area_url":"","sort_name":"触发防盗的视频直接点解下方链接进原网站观看。","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item-pic');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.module-item-pic');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], '.lazyload&&data-src'),//【图片】\n            desc: parseDomForHtml(list[i], ''),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.1080kan.cc/vodsearch/**----------fypage---/","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    function muteMe(elem) {\n        try {\n            elem.pause();\n        } catch (e) {}\n    }\n    var videos = document.querySelectorAll(\"video\"),\n        audios = document.querySelectorAll(\"audio\"),\n        v2 = document.querySelectorAll(\"embed\"),\n        v3 = document.querySelectorAll(\"#player\");\n    try {\n        [].forEach.call(videos, function(video) {\n            muteMe(video);\n        });\n    } catch (e) {}\n    try {\n        [].forEach.call(audios, function(audio) {\n            muteMe(audio);\n        });\n    } catch (e) {}\n    try {\n        [].forEach.call(v2, function(v) {\n            muteMe(v);\n        });\n    } catch (e) {}\n    try {\n        [].forEach.call(v3, function(v) {\n            muteMe(v);\n        });\n    } catch (e) {}\n    var urls = _getUrls()\n\n    function getHost(u) {\n        return u.split(\"//\")[1].split(\"/\")[0]\n    }\n\n    function getUa() {\n        let ua = navigator.userAgent\n        return ua.replace(/;/g, \"；；\")\n    }\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i] + ';{Accept@*/*&&X-Requested-With@com.example.hikerview&&Sec-Fetch-Site@cross-site&&Sec-Fetch-Mode@no-cors&&Sec-Fetch-Dest@script&&Origin@http://' + getHost(location.href) + '/&&User-Agent@' + getUa() + '}'\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n    title: parseDomForHtml(html, 'h1&&Text').replace(/\\//g, '') + '\\n' + parseDomForHtml(html, '').replace(/\\//g, ' ').replace('  ', '').substring(0, 15) + '\\n' + parseDomForHtml(html, '').replace(/\\//g, ' ').replace('  ', '').substring(0, 15),\n    desc: parseDomForHtml(html, '.video-info-content&&Text').replace('[收起部分]', '').replace('　', ''),\n    //图片\n    pic_url: parseDom(html, '.lazyload&&data-src'),\n    url: parseDom(html, '.lazyload&&data-src'),\n\n    col_type: 'movie_1_vertical_pic_blur'\n});\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html, '.module-tab-items&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nd.push({\n    col_type: \"big_blank_block\"\n});\nd.push({\n    col_type: \"big_blank_block\"\n});\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: '‘‘线路:’’',\n        col_type: 'scroll_button',\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n            url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n            col_type: 'scroll_button',\n        })\n    }\n\n\n    //正反序         \n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        // title: '‘‘选集’’',\n        title: '‘‘选集’’' + '' + sx,\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n\n    if (lists.length != '') {\n        var list = lists[index];\n        if (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g, ''),\n                    url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g, ''),\n                    url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2',\n                    extra: {\n                        blockRules: [\n                            \".jpg\",\n                            \".jpeg\",\n                            \".png\",\n                            \".mp4\",\n                            \".m3u8\"\n                        ]\n                    }\n                });\n            }\n        }\n\n    }\n    d.push({\n        title: '<br>',\n        col_type: 'rich_text'\n    });\n}\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/33.svg"},{"last_chapter_rule":"","title":"芒果电影","author":"逐风者","version":2021102204,"url":"https://www.mguomovie.com/v/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.module-search-item');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a,1&&title'),//【标题】\n            pic_url: parseDom(list[i], 'img&&data-src'),//【图片】\n            desc: parseDomForHtml(list[i], '.video-serial&&Text'),//【描述】\n            url: parseDom(list[i], 'a,1&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.mguomovie.com/search/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.vod_content&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\turl: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/32.svg"},{"last_chapter_rule":"","title":"YYCMS","author":"入戏太深&浮生短&逐风者","version":2021101502,"url":"https://www.xiaohaitv.com/fyAll_rankhot_____fypage_fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"movie&tv&dongman&zongyi","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href","searchFind":"body&&.fed-deta-info;h1&&Text;a&&href;.fed-text-center&&Text;.fed-deta-content--h1&&Text;a&&data-original","search_url":"https://www.xiaohaitv.com/searchqw-**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//通用免嗅\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\nvar arts = parseDomForArray(html, 'body&&.fed-play-btns');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.fed-drop-btns');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text'))\n}\n\nif(MY_URL.indexOf('/m/')!=-1){\n\nvar conts = parseDomForArray(html, 'body&&.fed-drop-btns');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&li'))\n}\nvar title = parseDomForHtml(html, 'body&&Text');\n}else{\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nvar title = parseDomForHtml(html, 'body&&Text');\n}\n\nd.push({\n title: parseDomForHtml(getResCode(), ' h1&&Text').replace('地区：','  ').replace('年份：','  ')+ '\\n'+parseDomForHtml(getResCode(), '.fed-deta-content&&li,1&&Text').substring(0, 18)+'\\n'+parseDomForHtml(getResCode(), '.fed-deta-content&&li,2&&Text'),\n    desc:parseDomForHtml(getResCode(), '.fed-deta-content&&li&&Text'),\n pic_url: parseDom(html, 'body&&.lazyload&&data-original'),\n url: MY_URL,\n col_type: 'movie_1_vertical_pic'\n});\n\nvar des_desc = parseDomForHtml(html, 'body&&.fed-part-esan&&Text');\n d.push({\n          title: des_desc.length > 50 ? des_desc.replace(des_desc, des_desc.substring(0, 50) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n          url: 'hiker://empty#' + parseDomForHtml(html,'body&&.fed-deta-content&&Html').split('/h1>')[1].replace(/;/g,'').replace(/<li/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,     \n          col_type: 'text_1'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        // title: '‘‘选集’’',\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/32.svg"},{"last_chapter_rule":"","title":"优酷影院","author":"戏太深&逐风者","version":2021101604,"url":"http://www.youku65.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&记录片&音乐片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&yinyuepian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&泰国剧&海外剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju&taiguoju&haiwaiju","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-text-center&&Text;a&&href","searchFind":"body&&.fed-deta-info;h1&&Text;a&&href;.fed-text-center&&Text;.fed-col-md10--h1&&Text;a&&data-original","search_url":"http://www.youku65.com/vodsearch/**----------fypage---.html","titleColor":"#ff871f78","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '.fed-deta-content&&li,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.fed-deta-content&&li,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.fed-deta-content&&li,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p,1&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.fed-lazy&&data-original'),\n\turl: parseDom(html, '.fed-lazy&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\nvar arts = parseDomForArray(html, 'body&&.fed-drop-btns');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.fed-drop-btns');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text'))\n}\n\nif(MY_URL.indexOf('/m/')!=-1){\n\nvar conts = parseDomForArray(html, 'body&&.fed-drop-btns');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&li'))\n}\nvar title = parseDomForHtml(html, 'body&&Text');\n}else{\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nvar title = parseDomForHtml(html, 'body&&Text');\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/26.svg"},{"last_chapter_rule":"","title":"星影相随","author":"逐风者","version":2021102403,"url":"https://www.rootthree.top/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item-cover');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], 'span,2&&Text')+' '+parseDomForHtml(list[j], 'span&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.module-search-item');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'h3&&Text'),//【标题】\n            pic_url: parseDom(list[i], 'img&&data-src'),//【图片】\n            desc: parseDomForHtml(list[i], 'a,1&&Text'),//【描述】\n            url: parseDom(list[i], 'a,1&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.rootthree.top/search/page/fypage/wd/**.html","titleColor":"#ff871f78","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.vod_content&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\turl: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/24.svg"},{"last_chapter_rule":"","title":"小易影视","author":"逐风者","version":2021102205,"url":"https://xy.irop.cn/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","area_url":"&/area/大陆&/area/美国&/area/香港&/area/韩国&/area/英国&/area/台湾&/area/日本&/area/法国&/area/意大利&/area/德国&/area/西班牙&/area/泰国&/area/其它","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href').replace('play','detail').replace('/sid/1/nid/1.html','.html')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href').replace('play','detail').replace('/sid/1/nid/1.html','.html')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://xy.irop.cn/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: '片名：'+parseDomForHtml(html, 'h1&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+'主演：'+parseDomForHtml(html, '.video-info-item,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc:'简介：'+ parseDomForHtml(html,'body&&p&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\turl: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/18.svg"},{"last_chapter_rule":"","title":"白夜影视","author":"逐风者","version":2021100504,"url":"https://www.baiyeys.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"20&21&22&23","area_name":"动作片&喜剧片&爱情片&科幻片&剧情片","area_url":"24&25&26&27&28","sort_name":"搜索用不了。","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&纪录片","sort_url":"","year_url":"36&37&38&39&40&44","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-tag&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data;\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].vod_continu,\npic_url:'https://www.baiyeys.com'+list[i].pic+\"@Referer=\",\nurl:'https://www.baiyeys.com'+list[i].url+'#immersiveTheme#',\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.baiyeys.com/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=1633392175735","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.myui-content__detail&&p,3&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.myui-content__detail&&p,5&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: parseDom(html, '.lazyload&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.nav&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(/白夜/,'').replace(/（推荐）/,''))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/15.svg"},{"last_chapter_rule":"","title":"嘟嘟电影网","author":"逐风者","version":2021101605,"url":"https://www.dudu2020.com/?m=vod-type-id-fyAll-pg-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片","area_url":"5&6&7&8&9&10","sort_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","year_name":"战争片&动画片&纪录片&悬疑片&惊悚片","sort_url":"12&13&14&15&17","year_url":"11&16&18&19&20","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.index-area&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.other&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.index-area&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], '.lazy&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.other&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.dudu2020.com/index.php?m=vod-search-pg-fypage-wd-**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '.ct-c&&span,6&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.ct-c&&span,7&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.ct-c&&span,8&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.ee&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazy&&data-original'),\n\turl: parseDom(html, '.lazy&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/首页.*片  »  /,'');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.playfrom&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.videourl');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/14.svg"},{"last_chapter_rule":"","title":"天天看","author":"逐风者","version":2021101104,"url":"https://www.ttky8.com/vod/show/by/fyarea/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"按更新&按人气&按豆瓣","area_url":"time&hits&douban_score","sort_name":"","year_name":"显示不全的地方将就用吧","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.v-pic');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.v-tips&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.item;a&&title;a&&href;.v-tips,1&&Text+.v-tips&&Text;.p_intro&&Text;img&&data-src","search_url":"https://www.ttky8.com/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode().replace(/<!-- /g,'').replace(/-->/g,'');\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, '').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.col-r&&img&&src'),\n\turl: parseDom(html, '.col-r&&img&&src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.fjcon');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.play-list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/13.svg"},{"last_chapter_rule":"","title":"4K电影网","author":"逐风者","version":2021091904,"url":"http://www.4k6.net/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"dianying&dianshiju&zongyi&dongman&||&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&||&guochanju&gangtaiju&rihanju&oumeiju","area_name":"全部&中国&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&中国&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"http://www.4k6.net/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n//调用断插\nvar config = fetch('hiker://files/cache/MyParseSet.json');\n\nif(config == '' || !fetch(JSON.parse(config).cj)){\n\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n\n}else{\n\n    var jsUrl = JSON.parse(config).cj;\n\n} eval(fetch(jsUrl));\n\n//断插免嗅探\nvar lazy = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.zkjj_a&&Text').replace(/最新.*完整版，/,'');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/11.svg"},{"last_chapter_rule":"","title":"快看APP","author":"逐风者","version":2021100103,"url":"https://www.suanzao.tv/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&纪录片&喜剧片&爱情片&科幻片","area_url":"6&20&7&8&9","sort_name":"偶有不能播放请更换小程序。","year_name":"恐怖片&剧情片&战争片&动画电影&电影解说","sort_url":"","year_url":"10&11&12&32&33","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.video-film-list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.red&&Text')+''+parseDomForHtml(list[j], '.video-duration&&Text'),//描述\r\n       pic_url: parseDom(list[j], 'div&&data-echo'),//图片\r\n       url: parseDom(list[j],'a&&href')//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.detail-search;a&&title;a&&href;li,0&&Text;li,2&&Text;div&&data-echo","search_url":"https://www.suanzao.tv/vod/search/page/fypage/wd/**.html","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&li,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&li,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&li,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.detail-intro-txt&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&src'),\n\turl: parseDom(html, 'img&&src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.swiper-wrapper&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.filmSelectWrap');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/9.svg"},{"last_chapter_rule":"","title":"cho酷吧电影院","author":"逐风者","version":2021092705,"url":"https://www.chok8.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&直播","class_url":"dianying&lianxuju&zongyi&dongman&zhibo","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&犯罪片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&fanzuipian","sort_name":"遇到部分视频不能播放就换个规则。","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju","find_rule":"body&&.col-md-7;.text-overflow&&Text;.lazyload&&data-original;.text-right&&Text;a&&href","searchFind":".stui-pannel_bd&&li;.title&&Text;a&&href;.lazyload&&Text;.margin-0&&Text;.lazyload&&data-original","search_url":"https://www.chok8.com/vodsearch/-------------.html?wd=**","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p,4&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&data-original'),\n\turl: parseDom(html, 'img&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.stui-pannel__head');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(/猜.*欢/,'❌').replace(/.*榜单/,'❌'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: $(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: $(parseDom(list[j], 'a&&href')).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/6.svg"},{"last_chapter_rule":"","title":"歪片星球.","author":"逐风者","version":2021100703,"url":"http://waipian1.com/show-fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&纪录片","class_url":"dianying&juji&zongyi&dongman&jilupian","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.top-line-dot');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://waipian1.com/search-**----------fypage---/","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&.detail-sketch&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: parseDom(html, '.lazyload&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.nav&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://waipian1.com//favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'span&&Text');\nsetResult(\"更新至: \"+title);","title":"蓝莓影视断♔","author":"蓝莓果酱UX","version":11,"url":"https://lanmeiguojiang.com/index.php/vod/show/by/fysort/fyarea/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&国创","class_url":"1&13&3&4&27","area_name":"全部&内地&香港&台湾&美国","area_url":"&/area/内地&/area/香港&/area/台湾&/area/美国","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&year/2021&year/2020&year/2019&year/2018","find_rule":"js:\nvar d = [];\n\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.module-items&&.module-item');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.module-item-caption&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyloaded&&data-src') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);\n","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://lanmeiguojiang.com/index.php/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//默认播放地址(需修改)\nvar lazy =\n`@lazyRule=.player-wrapper&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(player_aaaa.url);if(url.match(/.html/)){var input=url;`+lazy+`}else{url}`;\n\n//地区年份分类主演导演图片\n\nd.push({\n\ttitle: '分类：'+parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g,'')+'  '+parseDomForHtml(html, '.tag-link,2&&Text')+'  '+parseDomForHtml(html, '.tag-link,3&&Text').substring(0, 20)+ '\\n' + parseDomForHtml(html,'.video-info-items,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25)+'\\n'+parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25),\tdesc:  '简介:  '+parseDomForHtml(html,'.zkjj_a&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\nurl:setUrl,\n  \ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.module-tab-content&&.module-tab-item');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'div&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))//有可能改Text\n\n}\n//折叠需要用到的\nfunction setTabs(tabs, vari) {\n\nd.push({\n        col_type: 'line'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n\n\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '断插',\n    url: 'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/1.png"},{"last_chapter_rule":"","title":"速搜影院♔","author":"蓝莓果酱UX","version":3,"url":"https://www.susou.tv/vodshow-fyclass/fyarea/by/score/page/fypage/year/fyyear/","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&纪录片","class_url":"1&2&3&4&21","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"body&&.pack-ykpack;a&&title;.eclazy&&data-original.js:input+\"@Referer=\";.pack-prb&&Text;a&&href.js:input +\"#immersiveTheme#\"","searchFind":"body&&.ec-search&&li;a&&title;a&&href.js:input +\"#immersiveTheme#\";.pack-prb&&Text;.ecitem-desc&&Text;.eclazy&&data-original.js:input+\"@Referer=\"","search_url":"https://www.susou.tv/so/page/fypage/wd/**/","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar lazy =\n`@lazyRule=#bofang_box&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=unescape(player_aaaa.url);var from=player_aaaa.from;if(from=='zizhi'|from=='zizhi2'){/*'https://vip.susou.tv'+*/request('https://vip.susou.tv/player/?url='+url).match(/\"url\": \"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(from=='renrenmi'){request('https://vip.susou.tv/player/?url='+url).match(/\"url\": \"(.*?)\"/)[1]}else if(from=='susoutv'|from=='susoudm'|from=='socosdm'){request('https://vip.susou.tv/player/?url='+url).match(/\"url\": \"(.*?)\"/)[1]+\"#isVideo=true#\"}else{'https://vip.susou.tv'+url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('', ''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#playsx');\n\n//导演名称的定位\nvar daoyan = parseDomForHtml(html, 'body&&.s-top-right&&p,2&&Text').substring(0, 15);\n\n\n//演员名称的定位\nvar zhuyan = parseDomForHtml(html, '.s-top-right&&p,1&&Text').substring(0, 16);\n\n\n//影片分类的定位\nvar fenlei = parseDomForHtml(html, 'body&&.s-top-right&&p,7&&Text').replace('', '分类：').replace('类型：','').substring(0, 35);\n\nvar diqu = parseDomForHtml(html, 'body&&.s-top-right&&p,3&&a&&Text');\n\nvar nianfen = parseDomForHtml(html, 'body&&.s-top-right&&p,4&&a&&Text');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, 'body&&Text');\n\nd.push({\n    title: daoyan + '\\n' + zhuyan + '\\n' + fenlei  + nianfen  + diqu,\n    desc: parseDomForHtml(html, '.s-top-right&&p&&Text').substring(0, 50) + '\\n' + parseDomForHtml(html, 'body&&.s-top-right&&p,5&&Text'),\n    pic_url: parseDom(html, '.s-cover&&img&&src'),\n    url:getUrl(),\n\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line'\n    });\n    \nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/6.png"},{"firstHeader":"class","last_chapter_rule":"","title":"九州影视网♔","author":"蓝莓果酱UX","version":1,"url":"http://www.jiuzhou911.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.channel&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".sul&&li;a&&title;h4&&a&&href;p,0&&Text;p,-1&&Text;img&&data-original","search_url":"http://www.jiuzhou911.com/search.php?page=fypage&searchword=**","titleColor":"#ff228be6","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n//简介\nvar des_desc = parseDom(getResCode(), '.cdes1&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.img&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.row-l&&Html').match(/h2[\\s\\S]*?<\\/h2/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stab_list[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'text_center_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n      col_type: 'text_5',\n\t\t\t\turl: 'http://www.jiuzhou911.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.playerall&&script&&Html.js:eval(input);now`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/10.png"},{"last_chapter_rule":"","title":"畅视","author":"⁽⁽ଘ繁星点缀ଓ⁾⁾","version":0,"url":"http://app.reboju.net/api.php/app/video?pg=fypage&tid=fyclass&class=&area=fyarea&lang=&year=fyyear&token=","col_type":"movie_3","class_name":"新番动漫&国产动漫&欧美动漫&日本动漫&目录","class_url":"21&23&26&27&4","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&泰国&其它","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar html=getResCode();\nvar json=JSON.parse(html);\nvar res={};\nvar d=[];\nfor(var i=0;i<json.list.length;i++){\nvar j = json.list[i];\nvar r = {};\nr.title = j.vod_name;\nr.pic_url=j.vod_pic+'@Referer=';\nr.desc=j.vod_remarks;\nr.url='http://app.reboju.net/api.php/app/video_detail?id='+j.vod_id+'&token='+\"#immersiveTheme#\";\nd.push(r);\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar html=getResCode();\nvar json=JSON.parse(html);\nvar res={};\nvar d=[];\nfor(var i=0;i<json.list.length;i++){\nvar j = json.list[i];\nvar r = {};\nr.title = j.vod_name;\nr.pic_url=j.vod_pic;\nr.desc=j.vod_remarks;\nr.url='http://app.reboju.net/api.php/app/video_detail?id='+j.vod_id+'&token='+\"#immersiveTheme#\";\nd.push(r);\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://app.reboju.net/api.php/app/search?pg=fypage&text=**&token=","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json',{});\nif(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://code.aliyun.com/AI957/Hiker/raw/master/rules/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//标题图片简介\nd.push({\n            title:html.data.vod_name,\n            pic_url:html.data.vod_pic,\n            desc:html.data.vod_blurb,\n            content:html.vod_time_add,\n            url:setUrl,\n            col_type:'movie_1_vertical_pic_blur'\n        });\n\n//线路与选集代码开始\nvar tabs = html.data.vod_url_with_player;\nvar title = 'bd' + html.data.vod_name;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(title, '0') == i ? '““'+tabs[i].name + '””' : tabs[i].name,\n        url: `hiker://empty@lazyRule=.js:putVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n        col_type: 'scroll_button'\n    });\n}\n\n//开始处理选集显示\nvar list = tabs[getVar(title, '0')].url.split('#');\nfor (var j = 0; j < list.length; j++) {\n    d.push({\n        title: list[j].split('$')[0],\n        url: list[j].split('$')[1]+ `@lazyRule=.js:if(/.html|bilibili.com/.test(input)){`+lazy+`}else if(input.match(/share/)){input.split(\"\\/share\")[0]+fetch(input,{}).split(\\'main = \"\\')[1].split(\\'\"\\')[0]}else{input}`,\n            col_type: list.length > 2 ? 'text_3' : 'text_2'\n    });\n}\n\n//二级tab线路模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至：\"+title);","title":"糖果影视 Ⓕ","author":"随风","version":6,"url":"https://www.tgys.tv/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-').replace('-up', 'up-')","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&4&3&6&7&8&9&10&11&12&13&14&15&16","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"排序&最新&最热&评分&更新&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"&time&hits&score&up&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-original'),\r\n       content: parseDomForHtml(list[j], '.searchlist_titbox&&p,0&&Text'),\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.tgys.tv/vodsearch/**----------fypage---.html","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//免嗅\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.player_video&&script&&Html'));\n    var url = decodeURIComponent(player_aaaa.url);\n if (player_aaaa.from.search(/renrenmi/)>-1){var video = request('https://rr.4kbuka.com/analysis.php?v='+url).match(/htt.*?m3u8/)[0];\n} else\n    if (player_aaaa.from.search(/HY4K1/)>-1) {\n       var video = url\n    } else \n    if (player_aaaa.from.search(/duoduozy/)>-1) {var ddz= 'https://player.duoduozy.com/ddplay/?url='+url;\neval(parseDomForHtml(request(ddz, {header: {\"Referer\": input}}), \"body&&Html\").match(/var urls.*?;/)[0]);\n         video = urls;} else {\neval(fetch('https://www.tgys.tv/static/js/playerconfig.js'));\n        var jx = MacPlayerConfig.player_list[player_aaaa.from].parse;\n        if (jx == '') {\n            jx = MacPlayerConfig.parse\n        };\n        var play = jx + url;\nshowLoading(\"\\u5df2\\u5f00\\u542f\\u5f3a\\u529b\\u55c5\\u63a2\\uff0c\\u8bf7\\u7a0d\\u5019\");\n         var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) { \n                if (urls[i].match(/\\_mp4|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';} else if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}\n            }\n        })\n    }\n    return video\n});\n\n//线路\nvar arts = parseDomForArray(html, 'body&&#bofy&&.content&&section');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h2&&Text'))\n}\n\n//选集\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    //定位标题\n    title: '分类：'+parseDomForHtml(html, '.content_min&&li,0&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.content_min&&li,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.content_min&&li,3&&Text').replace('年代', '类型').substring(0, 20) + parseDomForHtml(html, '.content_min&&Text').substring(3, 20) + parseDomForHtml(html, '.content_min&&Text').substring(3, 20),\n    //定位描述\n    desc: parseDomForHtml(html, '.content_min&&li,4&&Text'),\n    //定位图片\n    pic_url: parseDom(html, '.content_thumb&&.lazyload&&data-original'),\n    url: parseDom(html, '.content_thumb&&.lazyload&&data-original'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//分割线\nvar title = parseDomForHtml(html, 'h2&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=优1080P',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\nfunction setTabs(tabs, vari) {\n        d.push({\n         title: '‘‘线路 :’’',\n            col_type: 'scroll_button',}) \n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]+'↓') : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>';}\n\nfunction setLists(lists, index) {\n    d.push({\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://img1.baidu.com/it/u=3326687858,4018017284&fm=253&fmt=auto&app=120&f=JPEG?w=192&h=192"},{"last_chapter_rule":"","title":"星月追剧 Ⓕ","author":"随风","version":4,"url":"http://xingyuezhuiju.com/index.php/vod/show/fyarea/fysort/id/fyclass/fyyear/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&动画&bilibili&片库","class_url":"1&2&4&3&30&32&35","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&area/大陆&area/香港&area/台湾&area/美国&area/法国&area/英国&area/日本&area/韩国&area/德国&area/泰国&area/印度&area/意大利&area/西班牙&area/加拿大&area/其他","sort_name":"排序&最新&最热&评分","year_name":"字母&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&0-9","sort_url":"&by/time&by/hits&by/score","year_url":"&letter/A&letter/B&letter/C&letter/D&letter/E&letter/F&letter/G&letter/H&letter/I&letter/J&letter/K&letter/L&letter/M&letter/N&letter/O&letter/P&letter/Q&letter/R&letter/S&letter/T&letter/U&letter/V&letter/W&letter/X&letter/Y&letter/Z&letter/0-9","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazy&&data-src')+\"@Referer=\",\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazy&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-serial&&Text'),\r\n       img: parseDom(list[j], '.lazy&&data-src')+\"@Referer=\",\r\n       content: parseDomForHtml(list[j], '.video-info-main&&div,3&&Text').replace(/\\//g,'').replace('：',':'),\n       url: parseDom(list[j], 'a&&href').replace('play','detail').replace('/sid/1/nid/1.html','.html')\r\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"http://xingyuezhuiju.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//免嗅\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.player-wrapper&&script&&Html'));\n    var url = decodeURIComponent(base64Decode(player_data.url));\n    if (player_data.from.search(/rx/)>-1){var video = request('https://nnys9.com/?url=' + url).match(/url\":\"(http.*?)\"/)[1];\n} else\n if (url.search(/m3u8|mp4/)>-1){var video = url\n} else {\neval(fetch('http://xingyuezhuiju.com/static/js/playerconfig.js'));\n        var jx = MacPlayerConfig.player_list[player_data.from].parse;\n        if (jx == '') {\n            jx = MacPlayerConfig.parse\n        };\n        var play = jx + url\nshowLoading(\"\\u5df2\\u5f00\\u542f\\u5f3a\\u529b\\u55c5\\u63a2\\uff0c\\u8bf7\\u7a0d\\u5019\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n         var urls = _getUrls()\n         for (var i in urls) { \n         if (urls[i].match(/mgtv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';} else \n         if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';} else                          if (urls[i].match(/\\_mp4|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i] }\n            }\n        })\n    }  \n    return video\n});\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//地区年份分类主演导演图片\nd.push({\n\ttitle: parseDomForHtml(html, '.tag-link&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.video-info-actor,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.video-info-actor,0&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.zkjj_a&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\turl: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur',\n     extra: {\n        gradient: true\n    }\n});\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n         url: 'toast://选择线路',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://img0.baidu.com/it/u=3809926162,2470520553&fm=26&fmt=auto"},{"last_chapter_rule":"","title":"影视工厂 Ⓕ","author":"随风","version":0,"url":"https://www.ysgc.cc/vodshow/fyclass--fysort---fyyear---fypage---fyarea.html","col_type":"movie_3","class_name":"电影&动漫&综艺&国产剧&港台剧&日韩剧&欧美剧&番剧&国创&动作片&喜剧片&爱情片&科幻片&恐怖片&悬疑片&剧情片&战争片&纪录片&动画片&海外剧","class_url":"1&4&3&13&14&15&16&26&27&6&7&8&9&10&28&11&12&24&25&20","area_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","area_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_name":"排序&时间&人气&评分","year_name":"字母&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&0-9","sort_url":"&time&hits&score","year_url":"&A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z&0-9","find_rule":"js:var res = {};var d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text&&Text'),\npic_url:parseDom(list[i],'.lazyload&&data-original')+\"@Referer=\",\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",\ncol_type: 'movie_3'});\n  }catch(e){}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'https://www.ysgc.cc' + list[i].pic,\nurl:'https://www.ysgc.cc/voddetail/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.ysgc.cc/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//免嗅\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.embed-responsive&&script&&Html'));\n    var url = decodeURIComponent(base64Decode(player_aaaa.url));    \n    if (player_aaaa.from.search(/duoduozy/)>-1) {var duo= 'https://player.duoduozy.com/ddplay/?url='+url;\neval(parseDomForHtml(request(duo, {header: {\"Referer\": input}}), \"body&&Html\").match(/var urls.*?;/)[0]);\n         video = urls} else\n    if (url.search(/mp4|obj|m3u8/)>-1) {\n        var video = url\n    } else {\neval(fetch('https://www.ysgc.cc/static/js/playerconfig.js'));\n        var jx = MacPlayerConfig.player_list[player_aaaa.from].parse;\n        if (jx == '') {\n            jx = MacPlayerConfig.parse\n        };\n        var play = jx + url\n        showLoading(\"\\u5df2\\u5f00\\u542f\\u5f3a\\u529b\\u55c5\\u63a2\\uff0c\\u8bf7\\u7a0d\\u5019\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) { \n                if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';} else if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}\n            }\n        })\n    }\n    return video\n});\n\n//线路\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ', ''))\n}\n\n//选集\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&li'))\n}\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace('年代', '类型').substring(0, 20) + parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(3, 20) + parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(3, 20),\n    //定位描述\n    desc: parseDomForHtml(html, '.myui-content__detail&&p,2&&Text'),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: parseDom(html, '.lazyload&&data-original'),\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n   var desc = parseDomForHtml(html, '.col-pd&&span,1&&Text').replace('……','。').replace('　','').replace('展开','').replace('收起','').replace('详情：','');\nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 50) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#'+ '\\n'  + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n          col_type: 'text_1'\n});\n    \nfor (let i = 0; i < line_model; i++){\n\n        d.push({\n            col_type: line_type_model\n        })\n  }\t \n\nfunction setTabs(tabs, vari) {\n        d.push({\n         title: '‘‘线路 :’’',\n         url:'选择线路',\n            col_type: 'scroll_button',}) \n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]+'↓') : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>';}\n\nfunction setLists(lists, index) {\n    d.push({\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://app.ysgc.xyz/skin/static/image/logo.png?v=2020070302"},{"last_chapter_rule":"","title":"高分电影 Ⓕ","author":"随风","version":0,"url":"https://www.gaofen1.com/s.php?key=fyclass_fyarea_fyyear_fysort&p=fypage","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺","class_url":"1&2&3&4","area_name":"分类&剧情&喜剧&爱情&动作&犯罪&惊悚&悬疑&动画&科幻&恐怖&家庭&奇幻&青春&冒险&搞笑&战争&古装&历史&真人秀","area_url":"&剧情&喜剧&爱情&动作&犯罪&惊悚&悬疑&动画&科幻&恐怖&家庭&奇幻&青春&冒险&搞笑&战争&古装&历史&真人秀","sort_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&00年&90年&80年&70年&其他","year_name":"地区&大陆&美国&日本&香港&韩国&英国&法国&台湾&泰国&加拿大&德国&印度&西班牙&俄罗斯&意大利&其他","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&00年&90年&80年&70年&其他","year_url":"&大陆&美国&日本&香港&韩国&英国&法国&台湾&泰国&加拿大&德国&印度&西班牙&俄罗斯&意大利&其他","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '#url&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&Text'),\r\n       desc: parseDomForHtml(list[j], 'i&&Text'),\r\n       img: 'https:'+base64Decode(parseDomForHtml(list[j], 'li&&p')),\r\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\n\n\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original'),\r\n       content: parseDomForHtml(list[j], '.detail&&p,3&&Text'),\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.laodiys.com/vodsearch/**----------fypage---.html","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n\n//线路列表名称\nvar arts = parseDomForArray(html,'.playlist&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.linkbox&&div');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//地区年份分类主演导演图片\nd.push({\n\ttitle: parseDomForHtml(html, '.infodetail&&p,2&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'.infodetail&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, '.infodetail&&p&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.jianjie&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: 'https:'+base64Decode(parseDomForHtml(html, '.t-img&&img&&p')),\n\turl: 'https:'+base64Decode(parseDomForHtml(html, '.t-img&&img&&p')),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"京广航影视app","author":"随风","version":0,"url":"https://www.jingguanghang.com/api.php/app/video?tid=fyclass&class=fyarea&area=fyyear&lang=&year=fysort&pg=fypage","col_type":"movie_3","class_name":"动漫&电影&连续剧&综艺","class_url":"4&1&2&3","area_name":"全部&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&微电影&警匪&战争&武侠&经典&古装&枪战&历史","area_url":"&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&微电影&警匪&战争&武侠&经典&古装&枪战&历史","sort_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"全部&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","find_rule":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.jingguanghang.com/api.php/app/video_detail?id='+list[i].vod_id+'#immersiveTheme#',\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;//列表\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,//标题\ndesc:list[i].vod_remarks,//描述\npic_url:list[i].vod_pic+\"@Referer=\",//图片\nurl:'https://www.jingguanghang.com/api.php/app/video_detail?id='+list[i].vod_id+'#immersiveTheme#',//链接\ncontent:list[i].vod_time_add,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.jingguanghang.com/api.php/app/search?pg=1&text=**","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    年代：'+html.data.vod_year+'\\n主演：'+html.data.vod_actor.substring(0, 10)+'\\n导演：'+html.data.vod_director.substring(0,10),\n          pic_url:html.data.vod_pic,\n          desc:'简介：'+html.data.vod_blurb,\n     col_type:'movie_1_vertical_pic_blur'\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_url_with_player;\nvar title = 'www' + html.data.vod_name;\n\n\n//处理线路显示\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n     for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(title, '0') == i ? '““' + tabs[i].name + '↓' + '””' : tabs[i].name,\n        url: `hiker://empty@lazyRule=.js:putVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n          col_type: 'scroll_button'\n                })\n            }\n            \n\n//分割线\n     d.push({\n    col_type: 'line_blank'\n})\nvar parse = /蓝光|腾讯视频|languang|qq/.test(tabs[getVar(title,'0')].name) ? tabs[getVar(title,'0')].parse_api : '';\n\n\n//开始处理选集显示\n      if (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n      d.push({ // title: '‘‘选集’’',\n         title: '‘‘选集’’' +''+ sx,\n      url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: url=$(parse + dz + '#noLoading#').lazyRule(() => {\n            furl = input;\n            if(furl.indexOf('url=') === -1) {\n                turl = furl\n            } else {\n                tstr = fetch(furl, {}); \n\nif(furl.indexOf('bilibili')>-1){turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}else if(furl.indexOf('gaotian')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.jingguanghang.com/&&User-Agent@Mozilla/5.0}';}\n   else if(furl.indexOf('mgtv')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else{turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')}\n                \n            };\n            return turl\n        }),\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n        title: jm,\n        url: $(parse + dz\n+'#noLoading#').lazyRule(() => {\n            furl = input;\n            if(furl.indexOf('url=') === -1) {\n                turl = furl\n            } else {\n                tstr = fetch(furl, {}); \n\nif(furl.indexOf('bilibili')>-1){turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}else if(furl.indexOf('gaotian')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.jingguanghang.com/&&User-Agent@Mozilla/5.0}';}\n   else if(furl.indexOf('mgtv')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else{turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')}\n                \n            };\n            return turl\n        }),\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\n//二级tab线路模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"播放呀app","author":"随风","version":2,"url":"https://www.bofangya.com/api.php/app/video?tid=fyclass&class=fyarea&area=fyyear&lang=&year=fysort&pg=fypage;get;utf-8;{User-Agent@okhttp/4.1.0}","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&微电影&警匪&战争&武侠&经典&古装&枪战&历史","area_url":"&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&微电影&警匪&战争&武侠&经典&古装&枪战&历史","sort_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"全部&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","find_rule":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.bofangya.com/api.php/app/video_detail?id='+list[i].vod_id+'#immersiveTheme#',\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;//列表\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,//标题\ndesc:list[i].vod_remarks,//描述\npic_url:list[i].vod_pic+\"@Referer=\",//图片\nurl:'https://www.bofangya.com/api.php/app/video_detail?id='+list[i].vod_id+'#immersiveTheme#',//链接\ncontent:list[i].vod_blurb,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.bofangya.com/api.php/app/search?text=**&pg=1;get;utf-8;{User-Agent@okhttp/4.1.0}","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nd.push({\n\t\t\ttitle: '',\n    desc:'320&&float',\n    url:'',\n    col_type: 'x5_webview_single'\n});\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    年代：'+html.data.vod_year+'\\n主演：'+html.data.vod_actor.substring(0, 10)+'\\n导演：'+html.data.vod_director.substring(0,10),\n          pic_url:html.data.vod_pic,\n          desc:'简介：'+html.data.vod_blurb,\n          url:html.data.vod_pic,\n     col_type:'movie_1_vertical_pic_blur'\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_url_with_player;\nvar title = 'www' + html.data.vod_name;\n\n\n//处理线路显示\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n     for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(title, '0') == i ? '““' + tabs[i].name + '↓' + '””' : tabs[i].name,\n        url: `hiker://empty@lazyRule=.js:putVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n          col_type: 'scroll_button'\n                })\n            }\n            \n\n//分割线\nvar parsew = /letv|qq|qiyi|mgtv|souhu|bilibili|youku|pptv/.test(tabs[getVar(title,'0')].code) ? tabs[getVar(title,'0')].parse_api : '';\n\n\n//开始处理选集显示\n      if (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n      d.push({ // title: '‘‘选集’’',\n         title: '‘‘选集’’' +''+ sx,\n      url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: $(parsew + dz + '#noLoading#').lazyRule(() => {\n            furl = input;\n            if(furl.indexOf('m3u8') > -1) {\n                turl = furl\n           }else {\n                tstr = fetch(furl, {}); if(furl.indexOf('bilibili')>-1){turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}else if(furl.indexOf('mgtv')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else{turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')}\n            };\n            return turl     }),\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n        title: jm,\n        url: $(parsew + dz\n+'#noLoading#').lazyRule(() => {\n            furl = input;\n            if(furl.indexOf('m3u8') > -1) {\n                turl = furl\n           }else {\n                tstr = fetch(furl, {}); if(furl.indexOf('bilibili')>-1){turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';}else if(furl.indexOf('mgtv')>-1){\nturl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else{turl=tstr.match(/[\\'\\\"]url[\\'\\\"]:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1].replace(/\\\\/g,'')}\n            };\n            return turl }),\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"真不卡ᴺᵐ","author":"Namo","version":0,"url":"https://www.zhenbuka3.com/vodshow/fyclass--fysort------fypage---/","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&无搜索","class_url":"1&2&3&4&无搜索","area_name":"","area_url":"","sort_name":"最新更新&最近热播","year_name":"","sort_url":"time&hits","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n// 子\nvar des_desc = parseDom(getResCode(), 'body&&.detail-sketch&&Text').replace(/https.*/,'');\n// 丑\nvar des_pic = parseDom(getResCode(), 'body&&.lazyload&&data-original');\n// 寅\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"stui-pannel__head bottom-line[\\s\\S]*?<\\/h3/g);\n// 卯\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: '线路'+(i+1),\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'x5Rule://' + parseDom(conts[i],'a&&href')+ '@' + _x5,\ncol_type: list.length>2?'text_3':'text_2'\n\n\t\t\t});\n\t\t}\n\t}\n}\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/10.svg"},{"last_chapter_rule":"","title":"爱看电影ᴺᵐ","author":"Namo","version":0,"url":"http://akdy2019.com/akshow/fyclass/by/fysort/page/fypage.html","col_type":"movie_3","class_name":"电影&国产剧&日剧&韩剧&美剧&国漫&日漫&综艺","class_url":"1&2&5&3&4&26&25&22","area_name":"","area_url":"","sort_name":"按时间&按人气&按评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.detail&&p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://akdy2019.com/aksearch/wd/**/page/fypage.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, 'body&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, 'body&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, 'body&&.text-collapse&&.data&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=A•APP',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/113.svg"},{"last_chapter_rule":"","title":"芭比影视ᴺᵐ","author":"Namo","version":4,"url":"https://www.8byy.com/l-fyclass-fypage--fysort-0-fyarea--0.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&香港&台湾&欧美&韩国&日本","area_url":"&大陆&香港&台湾&欧美&韩国&日本","sort_name":"按时间&按人气&按评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist&&li;a&&title;a&&href;.pic-text&&Text;;a&&data-original","search_url":"https://www.8byy.com/vod-search-pg-fypage-wd-**.html","titleColor":"00b0f8","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'').replace(/&from=.*/,'')\n        }\n    }\n});\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, '.stui-content__detail&&h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.detail-content&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.stui-content__thumb&&a&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.dropdown-menu&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"00b0f8"},{"last_chapter_rule":"","title":"剧好看ᴺᵐ","author":"","version":0,"url":"https://www.juhaokan.cc/vodshow/fyclass--fysort------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.pic-tag&&Text')+'-'+parseDomForHtml(list[j], '.pic-text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'a&&data-original') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"","search_url":"","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var url = unescape(base64Decode(player_aaaa.url));{url}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content&&span,1&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\nfor (var i = 0; i < tabs.length; i++) {\n        var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\nd.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'text_5'\n        })\n    }\nd.push({\n    col_type: 'line'\n})\nd.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'text_center_1'\n    })\n}\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', ''),\n            url: parseDom(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_5' : 'text_5'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/9.png"},{"last_chapter_rule":"","title":"米子影视ᴺᵐ","author":"Namo","version":1,"url":"https://www.mizi8.com/vodshow/fyclass--fysort------fypage---/","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text||.pic-tag&&Text'),\npic_url:parseDom(list[i],'.lazyload&&data-original'),\nurl:parseDom(list[i],'a&&href'),\ncol_type: 'movie_3'});\n  }catch(e){}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text&&Text'),\npic_url:parseDom(list[i],'.lazyload&&data-original'),\nurl:parseDom(list[i],'a&&href'),\ncontent:parseDomForHtml(list[i],'p,1&&Text')\n});\n  }catch(e){}\n}\n\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.mizi8.com/vodsearch/**----------fypage---/","titleColor":"#00b0f8","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n// 模块的间距\nlet line_model = 8;\n// 模块间距类型\nlet line_type_model = 'blank_block';\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var jx = 'https://kb.nmba.vip/a/jiexi.php?url=';var url = unescape(base64Decode(player_aaaa.url));if(url.indexOf('m3u8')!=-1){url}else{request(jx+url,{headers:{\"Referer\":\"https://www.mizi8.com\"}}).match(/\t\"url\":\"(.*?)\"/)[1]}`;\n\nvar arts = parseDomForArray(html,'body&&.nav-tabs&&a');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\nvar title = parseDomForHtml(html, 'h1&&Text');\n\n\nd.push({\n\ttitle: parseDomForHtml(html,'.data,3&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,2&&Text').substring(0, 15),\n\n\tdesc:parseDomForHtml(html,'.data,1&&Text').substring(0, 24),\n\tpic_url: parseDom(html, '.myui-content__thumb&&.lazyload&&data-original'),\n\turl: getUrl(),\n\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nvar desc = parseDomForHtml(html, 'body&&.sketch&&Text'); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 40) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\nfor (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n  }\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'scroll_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n\ntitle: '‘‘’’<font color=\"#003472\">选集</font></small>'+'‘‘’’<font color=\"#0aa344\"></font></small>',\n        \n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/32.svg"},{"last_chapter_rule":"","title":"爱迪影视ᴺᵐ","author":"Namo","version":1,"url":"https://aidi.tv/show/fyclass--fysort------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"按最新&按最热&按评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":".vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p&&text;a&&data-original","search_url":"https://aidi.tv/vsearch/**----------fypage---.html","titleColor":"00b0f8","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\nif(getVar(\"解析列表\")==\"开\")\n{setParse();}\n\n//影片介绍\nvar l1 = parseDomForHtml(html, '.data&&a&&Text');\n\nvar l2 = parseDomForHtml(html, '.data&&a,1&&Text');\n\nvar l3 = parseDomForHtml(html, '.data&&a,2&&Text');\n\nvar l4 = parseDomForHtml(html, '.star_tips&&Text');//评分\n\nvar l5 = parseDomForHtml(html, '.data,1&&Text');//更新\n\nvar l6 = parseDomForHtml(html, '.data,2&&Text');//主\n\nvar l7 = parseDomForHtml(html, '.data,3&&Text');//导\n\nvar des_pic = parseDom(html, '.lazyload&&data-original');//图\n\nvar des_desc = parseDomForHtml(html, '.desc&&Text');//简\n\n\n//线路\nvar tabs = parseDomForArray(html, 'body&&#NumTab&&a');\n//剧集\nvar conts = parseDomForArray(html, '.play_source&&.playlist_full')\n\nd.push({ \n    title: l4+'\\n'+'分类：' + l1 + ' | ' + l2 +' | '+l3+'\\n'+l6,\n    desc: l7+l5,\n    pic_url: des_pic,\n    url: des_pic,\n    col_type: 'movie_1_vertical_pic'\n});\n\nd.push({\n    title: '共有' + conts.length + '条线路',   \n    desc: des_desc,\n    col_type: 'text_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = parseDomForArray(conts[i],\"ul&&a\");\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: parseDomForHtml(tabs[i],\"Text\"),\n    url: set_switch,\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: parseDomForHtml(list[j],\"a&&Text\"),\n\t\t\t\turl: parseDom(list[j],'a&&href')+`@lazyRule=.player_video&&script&&Html.js:eval(input);var url = player_data.url;if(url.indexOf('html')>-1){var input=url;`+lazy+`}else{url}`,\n    col_type: list.length >3?'text_3':'text_2'\n\t\t\t});\n\t\t}\n\t}\n}\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://aidi.tv/template/movie/asset/img/ios_fav.png"},{"firstHeader":"class","last_chapter_rule":"","title":"多吉影音ᴺᵐ","author":"Namo","version":4,"url":"https://dogevod.com/genre/fyclass---fypage/by/fysort.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"movies&tvseries&tv_show&anime","area_name":"","area_url":"","sort_name":"周人气&月人气&按更新","year_name":"","sort_url":"hits_week&hits_month&time","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href').replace('ep','title')\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,1&&Text;a&&data-original","search_url":"https://dogevod.com/search/**----------fypage---.html","titleColor":"#00b0f8","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.sketch&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), '.nav-tabs&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://dogevod.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(from=='renrenmi'){request('https://xl.miaoletv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1]}else{url}`,\n\t\t\t});\n\t\t}\n\t}\n}\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/1.svg"},{"last_chapter_rule":"","title":"轻合集.Namo","author":"轻合集生成器","version":72,"url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet el = [{\n    title: '清除缓存,立即更新 <small>(基于远程仓库,不要频繁点击)',\n    url: $().lazyRule(() => {\n        clearItem('updatetime')\n        refreshPage(true)\n        return 'toast://已更新'\n    }),\n    img: 'hiker://images/icon1',\n    col_type: 'avatar'\n}]\nel.push({\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n})\nconst data = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection'))\nsetResult(el.concat(data.map((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1'\n    return {\n        title: v.title,\n        url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n        img: v.icon,\n        extra: { RULE: v }\n    }\n})))","searchFind":"js:\nlet myCollection_el = [],\n    searchMode = getVar('myCollection-searchMode', ''),\n    [_, pageNum, keyword] = MY_URL.split('##'),\n    RULE = $.require('hiker://page/dataLoad?rule=' + getItem('myCollection')).filter((v) => v.search_url)\npageNum = parseInt(pageNum)\nif (!searchMode && pageNum > RULE.length) setResult([])\n\nlet searchCount = { title: '⬆ 已搜索了' + pageNum + '个小程序 ⬆\\n⬇ 下面还有' + (RULE.length - pageNum) + '个小程序 ⬇' }\nRULE = searchMode ? RULE.find((v) => v.title == searchMode) : RULE[pageNum - 1]\n// 处理MY_URL和MY_RULE\nMY_RULE.version = RULE.version\nMY_RULE.group = RULE.group\nMY_RULE.title = RULE.title\nMY_RULE.ua = RULE.ua\nMY_RULE.col_type = RULE.col_type\nMY_RULE.detail_col_type = RULE.sdetail_col_type\nMY_RULE.find_rule = RULE.searchFind\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\nMY_RULE.preRule = RULE.preRule\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\nMY_RULE.params = {}\n\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nvar { MY_URL, indexHtml } = urlParse(RULE.search_url, searchMode ? pageNum : 1, (url) => {\n    url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, url[2]))\n})\nMY_RULE.url = MY_URL\n// 正文解析\nif (pageNum == 1) eval(MY_RULE.preRule)\nif (MY_RULE.find_rule.startsWith('js:')) {\n    function getUrl() {\n        return MY_URL\n    }\n\n    function getResCode() {\n        return indexHtml\n    }\n\n    function setResult(el, param1, param2, param3) {\n        param1 = CALLBACK_KEY\n        param2 = MY_RULE\n        param3 = MY_TYPE\n        if (Array.isArray(el.data)) el = el.data\n        log(el)\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\n            let RULE = Object.assign({}, MY_RULE)\n\n            if (!v.url) {\n                return v\n            } else if (v.url.includes('@lazyRule=')) {\n                v.url = v.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n                return v\n            } else if (v.url.includes('@rule=')) {\n                let [_, url, rule] = v.url.match(/^([\\s\\S]*?)@rule=([\\s\\S]*)$/)\n                v.url = url\n                RULE.detail_find_rule = rule\n                RULE.detail_col_type = MY_RULE.col_type\n            } else if (v.url.startsWith('hiker://page/')) {\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\n                    return v\n                let path = v.url.split('#')[0].match(/^hiker:\\/\\/page\\/(.+?)(?:\\?.*)?$/)[1],\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\n                RULE.detail_find_rule = subPage.rule\n                RULE.detail_col_type = subPage.col_type\n                RULE.params = v.extra || {}\n            } else if (!MY_RULE.detail_find_rule) { return v }\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title  }\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n            return v\n        }))\n        if (!searchMode) myCollection_el.push(searchCount)\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\n    }\n\n    function setHomeResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    function setSearchResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    eval(MY_RULE.find_rule.slice(3))\n} else {\n    let findRule = MY_RULE.find_rule.split(';')\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\n                try {\n                    if (v == '*') return ''\n                    else v = (i == 1 || i == 4) ?\n                        parseDom(data, v) :\n                        parseDomForHtml(data, v)\n                    if (i != 1) v = runCode(v)\n                    return v\n                } catch (e) {}\n            }),\n            res = {\n                title: title,\n                url: url,\n                desc: desc,\n                content: content,\n                img: img\n            }\n        if (res.url) {\n            if (res.url.includes('@lazyRule=')) {\n                res.url = res.url.replace('.js:', '.js:\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\n            } else if (MY_RULE.detail_find_rule) {\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\n            }\n        }\n        myCollection_el.push(res)\n        if (!searchMode) myCollection_el.push(searchCount)\n    })\n    setResult(myCollection_el)\n}\n","search_url":"hiker://empty##fypage##**","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&')\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title })\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input+\\\"&rule=' + getItem('myCollection') + '\\\"',\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar { MY_URL, indexHtml } = urlParse(RULE.url, pageNum, (url) => {\\n    url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    url[0] = tabHeader.setUrl(url[0])\\n})\\nMY_RULE.url = MY_URL\\n// 正文解析\\nif (pageNum == 1) eval(MY_RULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getUrl() {\\n        return MY_URL\\n    }\\n\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else if (!MY_RULE.detail_find_rule) { return v }\\n            v.extra = { url: v.url, RULE: RULE, pageTitle: v.title }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                res.extra = { url: url, RULE: MY_RULE, pageTitle: title  }\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nvar myCollection_el = []\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.version = RULE.version\\nMY_RULE.group = RULE.group\\nMY_RULE.title = RULE.title\\nMY_RULE.url = MY_URL\\nMY_RULE.ua = RULE.ua\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n// 解析正文\\nif(MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                RULE.detail_find_rule = rule\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let path = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    const { runCode } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {}\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url && res.url.includes('@lazyRule='))\\n            res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({ title: MY_RULE.title, pages: MY_RULE.pages, pageList: MY_RULE.pageList, find_rule: '', params: '' }) + ');')\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"//真正获取数据的逻辑\\nfunction load() {\\n    let url = 'http://hiker.nokia.press/hikerule/dev/json_list?name=254001940',\\n        d = []\\n    try {\\n        d = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            d = JSON.parse(d).rule\\n        d = JSON.parse(d)\\n    } catch (e) {\\n        d = []\\n    }\\n    return d.filter((v) => { return v.title != MY_RULE.title && v.author != '轻合集生成器' })\\n}\\n//检查间隔，默认一天\\nlet min = 60 * 24 * 1\\n\\nlet data = []\\nlet time = getItem('updatetime', '0')\\ntime = parseInt(time)\\nlet now = new Date().getTime()\\nif (now - time > 1000 * 60 * min) {\\n    log('更新了数据')\\n    setItem('updatetime', '' + now)\\n    data = load()\\n    saveFile('data.json', JSON.stringify(data))\\n} else {\\n    log('没有更新数据')\\n    data = JSON.parse(readFile('data.json'))\\n}\\n$.exports = data\\n\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    runCode: function(rule) {log(rule)\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = options.headers['Content-Type'].slice(0, 19) + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], indexHtml: fetch(url[0], options) }\\n    }\\n}\\n\"}]","icon":"https://z3.ax1x.com/2021/10/29/5Xer1U.png"},{"last_chapter_rule":"","title":"火鸟-L","author":"ᝰꫛꫀꪝ藍凋","version":0,"url":"http://huoniaoys.com/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"vodtype_1&vodtype_2&vodtype_3&vodtype_4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       content: parseDomForHtml(list[j], '.detail--h4&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\n       url: parseDom(list[j],'a&&href')\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"http://huoniaoys.com/vodsearch_**----------fypage---.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar conts = parseDomForArray(html,'.nav&&li'); //线路列表\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: parseDomForHtml(html, '.myui-content__detail&&Text'),    //简介\n\tpic_url: parseDom(html, '.myui-vodlist__thumb&&img&&data-original'), //图片\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nfor (var i in conts) {\n\tvar list = parseDomForArray(html,'body&&.myui-content__list&&li'); //选集列表\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle:  parseDomForHtml(conts[i], 'Text'), //线路名\n\t\t\tcol_type: 'long_text'\n\t\t});\n\t\tfor (var j in list) {\n\t\t\td.push({\n\t\t\t\ttitle: parseDomForHtml(list[j], 'a&&Text'), //选集名\n\t\t\t\turl: parseDom(list[j],'a&&href')+ `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));var jssp = player_data.url.split(\"\\/share\")[0];var json = fetch(player_data.url,{});player_data.url.indexOf(\"m3u8\")>-1?player_data.url:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\n       col_type: list.length >3?'text_3':'text_2'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://huoniaoys.com/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"深空","author":"ᝰꫛꫀꪝ藍凋","version":1,"url":"https://shenkong.xyz/index.php/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       content: parseDomForHtml(list[j], '.detail--h4&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://shenkong.xyz/index.php/vodsearch/**----------fypage---.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.data,4&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.nav-tabs&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://shenkong.xyz/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"清爽一夏","author":"ᝰꫛꫀꪝ藍凋","version":3,"url":"http://91kankanba.com/list/fyclass_fypage__fysort_0_0__fyarea_.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫&韩剧&美剧","class_url":"1&2&3&4&14&15","area_name":"地区&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":".row&&li;a&&title;.item-lazy&&data-echo;.item-num&&Text;a&&href.js:input +\"#immersiveTheme#\"","searchFind":".row&&li;a&&title;a&&href.js:input +\"#immersiveTheme#\";*;.item-des&&Text;.item-lazy&&data-echo","search_url":"http://91kankanba.com/search-pg-fypage-wd-**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=$(\"\",\".video-area&&script&&Html\").lazyRule(()=>{\n    let path=input.match(/view_path.*?'(.*?)'/)[1];\n    let md5=request(\"http://91kankanba.com/hls2/index.php?url=\"+path).match(/id=\"hdMd5\"value=\"(.*?)\"/)[1];\n    let playUrl=request(\"http://91kankanba.com/hls2/url.php\",{body:\"id=\"+path+\"&md5=\"+md5,method:\"POST\"});\n    return JSON.parse(playUrl).media.url;\n});\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.detail-intro-txt&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.hd&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '.numList');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/xu-le-0420/lele/raw/master/xbtc2244d1dcdc350c774799bd31e8c2dbda.jpg"},{"last_chapter_rule":"","title":"测试私有存储功能","author":"Reborn","version":2,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nd.push({\n    title: '当前值：'+getItem(\"test\") + '，点我测试更换',\n    col_type: \"text_1\",\n    url: $().lazyRule(()=>{\n        setItem(\"test\",\"666\")\n        refreshPage()\n        return \"toast://更换成功\"\n    })\n})\nd.push({\n    title: '点我重置',\n    col_type: \"text_1\",\n    url: $().lazyRule(()=>{\n        clearItem(\"test\")\n        refreshPage()\n        return \"toast://重置成功\"\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"陆伍Ⓓ","author":"//2021/","version":2,"url":"https://www.x65k.com/index.php?s=home-vod-type-id-fyclass-area-fyarea-order-fysort-picm-1-p-fypage","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&","class_url":"1&2&4&3&","area_name":"全部&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&俄罗斯&其它","area_url":"&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&俄罗斯&其它","sort_name":"时间&人气&评分","year_name":"","sort_url":"addtime&hits&gold","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n\nd.push({\n    url:\"'hiker://search?rule=陆伍Ⓓ&s='+input\",\n    title:'搜索',\n    col_type:\"input\",\n})\n\ntry{\nvar list = parseDomForArray(getResCode(), '.img-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.vtitle&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.img-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.news-tips&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.x65k.com/search/**.html","titleColor":"#ff871f78","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html'));var jsurl=decodeURIComponent(zanpiancms_player.url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(zanpiancms_player.from=='陆伍Ⓓ'){jsurl}else if(jsurl.match(/renrenmi/)){var urll=request(\"https://jiexi.moeamv.com/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll}else{jsurl}`\n\nvar arts = parseDomForArray(html,'.details-play-more&&.player-more-list&&a');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.play-list');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.col-xs-1,3&&Text').substring(0, 10)+ '\\n'+parseDomForHtml(html, '.col-xs-2,1&&Text').replace('上映时间：', ' ').substring(0, 12) +\nparseDomForHtml(html, '.col-xs-2,2&&Text').replace('国家/地区：', ' ').substring(0, 12)+ '\\n' + parseDomForHtml(html, '.col-md-1&&Text').substring(0, 18),\n    desc:parseDomForHtml(html, '.pb-xs-0&&Text'),\n    pic_url: parseDom(html, '.vod-detail-thumb&&img&&src'),\n   // url: fm,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\neval(JSON.parse(fetch('hiker://page/二级', {})).rule);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级\",\"path\":\"二级\",\"rule\":\"\\nfunction setTabs(tabs, vari) {\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n            d.push({\\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\nd.push({\\n            col_type: 'line'\\n        })        \\n    }\\n\\nfunction setLists(lists, index) {\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#228be6\\\"> ▼正序</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\"> △逆序</font></small>';\\n}\\n\\n        d.push({\\n          title:  '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n            col_type: 'text_center_1',extra: {lineVisible: false}\\n        })\\n        var list = lists[index];\\n\\nif (getVar('shsort') == '1') {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                title: parseDomForHtml(list[j], 'a&&Text'),\\n                url: parseDom(list[j], 'a&&href') + lazy,\\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\\n                });\\n            }\\n        } else {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                title: parseDomForHtml(list[j], 'a&&Text'),\\n                url: parseDom(list[j], 'a&&href') + lazy,\\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\\n                });\\n            }\\n        }\\n    }\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\n\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\n\\nd.push({title: '<br>', col_type: 'rich_text'});\\n\\nsetResult(d);\"}]","icon":"https://www.x65k.com/tpl/zanpiancms12/images/index.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"无限影视·Ⓓ","author":"//2021/Ⓓ","version":1,"url":"https://www.wxtv.net/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&5&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://www.wxtv.net' + j.pic;\n    r.url = 'https://www.wxtv.net/voddetail/' + j.id + '/'+\"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.wxtv.net/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html'));var jsurl=decodeURIComponent(player_aaaa.url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(player_aaaa.from=='无限影视·Ⓓ'){jsurl}else if(jsurl.match(/renrenmi/)){var urll=request(\"https://jiexi.moeamv.com/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll}else{jsurl}`\n\n//二级模板by发粪涂墙\nvar arts = parseDomForArray(html,'.nav-tabs&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 图片 =parseDom(html, '.lazyload&&data-original')\n\nvar 状态 = parseDomForHtml(html, '.data,0&&Text').replace('地区：','  ').replace('年份：','  ')\n\nvar 主演 =parseDomForHtml(html, '.data,2&&Text').substring(0, 15)\n\nvar 导演 =parseDomForHtml(html, '.data,3&&Text').substring(0, 15)\n\nvar 更新 =parseDomForHtml(html, '.data,1&&Text')\n\nvar 简介 =parseDomForHtml(html, '#desc&&.data&&Text').substring(0, 35)\n\n\nd.push({\n    title: '‘‘’’<small><font color=\"#f12711\">'+状态+'\\n'+导演+'\\n'+主演+'</font></small>',\n    desc: '‘‘’’<small><font color=\"#b92b27\">'+更新+'</font></small>'+'\\n'+'‘‘’’<font color=\"#00b09b\">'+简介+'</font></small>'+'‘‘’’<font color=\"#0aa344\">…详情</font></small>',\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\neval(fetch(\"hiker://files/rules/dlgw/js/DL.js\"));","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"let localHtml = fetch('hiker://files/rules/dlgw/js/DL.js');\nlet gitHtml = fetch('http://hiker.nokia.press/hikerule/rulelist.json?id=2338');\nif (!localHtml || localHtml != gitHtml) {\n  writeFile(\"hiker://files/rules/dlgw/js/DL.js\", gitHtml); }","pages":"[]","icon":"https://www.meiju56.com/img/favicon.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"段友Ⓓ","author":"//2021/","version":0,"url":"https://yunjuw.cn/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(MY_URL+\"url\", MY_URL)\nconst page = MY_URL.match(/-(.*?)\\.html/)[1]\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/,page+'$1')\nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, 'body&&.nav-list,0:4').concat(parseDomForArray(html, 'body&&.myui-screen__list:not(:contains(语言)):not(:contains(字母)):not(:contains(已选))'));\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL+\"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL+\"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL+\"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a:not(:contains(资讯))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL+\"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL+\"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\nd.push({\n    url:\"'hiker://search?rule=段友Ⓓ&s='+input\",\n    title:\"搜剧\",\n    col_type:\"input\"\n})\n}\nconst list = parseDomForArray(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        \n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\r\n\r\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], 'p,3&&Text'),\r\n        pic_url: parseDom(list[j], 'a&&data-original'),\r\n        content: parseDomForHtml(list[j], 'p,2&&Text'),\r\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\r\n    })\r\n}\r\nsetResult(d)","search_url":"https://yunjuw.cn/vodsearch/**----------fypage---.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    title: parseDomForHtml(html, '.data,0&&Text').replace('地区：', '  ').replace('年份：', '  ') + '\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.data,2&&Text'),\n    desc: parseDomForHtml(html, '.sketch&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar arts = parseDomForArray(html, '.nav-tabs&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n//var lazy= `@lazyRule=.js:var url = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(url.indexOf('html')!=-1){JSON.parse(request('https://json.m3u8.tv:7788/json.php?url='+url)).url+'#isVideo=true#'}else{url+'#isVideo=true#'}`;\n\nvar lazy=\n`@lazyRule=.js:unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)`\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j = 0; j < list.length; j++) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'),\n            url: parseDom(list[j], 'a&&href')+lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\ntry {\n    setTabs(tabs, MY_URL);\n    setLists(lists, getVar(MY_URL, '0'));\n} catch (e) {}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://yunjuw.cn/template/mytheme/statics/img/logo_min.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.video_list:has(a)')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"贝贝影院Ⓓ","author":"//2021/Ⓓ","version":0,"url":"https://www.beibei133.com/index.php/vod/show/by/fysort/class/%E5%8A%A8%E4%BD%9C/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&","class_url":"dianying&lianxuju&zongyi&dongman&","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.img-list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'i&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.show-list&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'h2&&Text'),//【标题】\n            pic_url: parseDom(list[i], 'img&&src'),//【图片】\n            desc: parseDomForHtml(list[i], 'dd,4&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href')+\"#immersiveTheme#\"\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.beibei133.com/index.php/vod/search/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//线路列表\nvar arts = parseDomForArray(html, 'body&&h2:not(:contains(超级福利))');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(/-永久免费.*/,'').replace(/.*贝贝影院-电影/,''))\n}\n//播放列表\nvar conts = parseDomForArray(html, 'body&&.video_list:has(a)');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n//封面\nd.push({\n    title: parseDomForHtml(html, 'dl,2&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, 'dl,1&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, '.nyzhuy&&Text').substring(0, 60),\n    desc: '简 介：' + parseDomForHtml(html, 'p&&Text'),\n    pic_url: parseDom(html, 'img&&src'),\n    url: parseDom(html, 'img&&src'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n//搜索，以下基本不需要修改。\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=C神话',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'#bofang_box&&script&&Html'));var url=player_data.url;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(JSON.parse(fetch('hiker://page/globalParse?rule=道长仓库Pro', {})).rule);lazyParse(\"http://tv.wandhi.com/go.html?url=\"+url,3000)}else{url}`;\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'text_5'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        // title: '‘‘选集’’',\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.beibei133.com/favicon.ico"},{"last_chapter_rule":"","title":"591追剧i","author":"ivnyoov","version":0,"url":"https://www.591zhuiju.com/index.php/vod/show/by/fyarea/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"SCCCCS&qCCCCS&ICCCCS&xCCCCS","area_name":"推荐&人气&时间","area_url":"score&hits&time","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".module-list&&.module-item;\na&&title;\n.lazyloaded&&data-src;\n.module-item-text&&Text;\na&&href","searchFind":".module-list&&.module-search-item;\na&&title;\na&&href;\n.video-serial&&Text;\n.video-info-items&&Text;\n.lazyload&&data-src","search_url":"https://www.591zhuiju.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ffff7000","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.js:var get =fetch(input,{});var js = parseDomForHtml(get,\".player-wrapper&&script&&Html\");eval(js.replace(/player_.*?={/,'player_data={'));var jsurl=player_data.url;if(jsurl.indexOf(\"html\")!=-1){'https://okjx.cc/?url='+jsurl}else{jsurl}`;\n\n\ntry{\nvar des_pic =parseDom(html, '.module-item-pic&&img&&data-src');\n}catch(e){\nvar des_pic ='';\n}\n\ntry{\nvar des_desc = parseDomForHtml(html, '.video-info-items,-1&&Text');\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\nvar arts = parseDomForArray(html,'.module-tab&&.tab-item');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.scroll-box');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i],'.scroll-content&&a'))\n}\n\nd.push({\ntitle:'共有'+arts.length+'条线路\\n如果无法正常显示，请点击此处访问原网页',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: MY_URL,\n col_type: 'movie_1_vertical_pic'\n});\n\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'flex_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘选集：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff7000"},{"title":"笨笨鸡影院i","author":"ivnyoov","version":0,"url":"http://m.benbenji.com/fyclass/index_____fyarea_fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺&微电影","class_url":"dy&dsj&dm&arts&wdy","area_name":"推荐&人气&时间","area_url":"gold&hits&addtime","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".box-video-list&&li;\nh5&&Text;\n.video-pic&&data-original;\n.note&&Text;\n.video-pic&&href","searchFind":"#content&&.details-info-min;\n.video-pic&&title;\n.video-pic&&href;\n.details-info&&.hidden-md&&Text;\n.details-content-default&&Text;\n.video-pic&&data-original","search_url":"http://m.benbenji.com/index.php?s=home-search-index-wd-**-p-fypage.html","titleColor":"#ffff7000","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n\n//简介\ntry{\nvar des_desc = parseDomForHtml(html, '.details-content-all&&Text');\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\n//图片\ntry{\nvar des_pic =parseDom(html, '.details-pic&&a&&style');\n}catch(e){\nvar des_pic ='';\n}\n\n//线路列表\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\n\nd.push({\ntitle:'共有'+tabs.length+'条线路\\n如果无法正常显示，请点击此处访问原网页',\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\nd.push({col_type:'line_blank'});\n\nfor(var i in tabs){\n\nd.push({\ntitle:parseDomForHtml(tabs[i],'a&&href').replace('#con_playlist','欧卡'),//线路名称\nurl:'',\ncol_type: 'long_text'});\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.playlist&&ul');\n\n//选集列表定位\nvar list=parseDomForArray(conts[i], 'ul&&li');\n\nfor(var j in list){\nd.push({\ntitle:parseDomForHtml(list[j],'a&&Text'),//选集名称\nurl:parseDom(list[j],'a&&href')+ `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var jssp = zanpiancms_player.url.split(\"\\/share\")[0];var json = fetch(zanpiancms_player.url,{});zanpiancms_player.url.indexOf(\"m3u8\")>-1?zanpiancms_player.url:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,//选集链接\ncol_type: list.length >3?'text_3':'text_2'\n    });\n  }\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ffff7000"},{"title":"纪录片天地","author":"ivnyoov","version":0,"url":"http://www.jlpcn.net/vodtypehtml/fyclass-fypage.html[firstPage=http://www.jlpcn.net/vodtypehtml/fyclass.html]","col_type":"movie_3","class_name":"科学探索&社会生活&生态地理&文化历史","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#videoData&&ul&&li;\nh2&&a&&title;\nh2&&img&&data-url;\n.r1&&Text;\nh2&&a&&href","searchFind":"body&&#results&&.result;\n.c-title&&Text;\n.c-title&&a&&href;\n.c-abstract&&Text;\n*;\n.c-image&&img&&src","search_url":"http://zhannei.baidu.com/cse/search?s=17160030153119369358&entry=1&q=**;get;UTF-8;","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n\nd.push({\ntitle:'如果无法正常显示，请点击此处访问原网页',\ndesc:parseDomForHtml(html, '.jjText&&.more&&Text'),\npic_url:parseDom(html, '.vodImg&&img&&data-url'),\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\nd.push({col_type:'line_blank'});\n\n\nd.push({\ntitle:parseDomForHtml(html, '.liketitle&&Text'),\ncol_type: 'long_text'});\n\n//选集列表定位\nvar list=parseDomForArray(html, 'body&&#down_list_1&&li');\n\nfor(var j in list){\nd.push({\ntitle:parseDomForHtml(list[j],'a&&Text'),//选集名称\nurl:parseDom(list[j],'a&&href'),//选集链接\ncol_type: 'text_2'\n    });\n  }\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":""},{"title":"4480影院i","author":"ivnyoov","version":0,"url":"https://www.4480ys.co/Flist/PmfyAll_fypage.html[firstPage=https://www.4480ys.co/Flist/PmfyAll.html]","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-pannel_bd&&li;\nh4&&Text;\nscript&&Html.js:input.split(\"nal=\\\\'\")[1].split(\"\\\\'\")[0];\n.pic-text&&Text;\na&&href","searchFind":".stui-pannel_bd&&li;\nh3&&Text;\na&&href.js:input.replace('Fplay/Pplay','Fvod/Pvod').replace('-0-0.html','.html');\n.pic-text&&Text;\n.margin-0&&Text;\na&&data-original","search_url":"https://www.4480ys.co/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ffff7000","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n\n//简介\ntry{\nvar des_desc = parseDomForHtml(html, '.detail-content&&Text');\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\n//图片\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n}catch(e){\nvar des_pic ='';\n}\n\nd.push({\ntitle:'如果无法正常显示，请点击此处访问原网页',\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\nd.push({col_type:'line_blank'});\n\n//选集列表\nvar conts = parseDomForArray(html, '.stui-content__playlist&&li');\n\n\nfor(var i in conts){\nd.push({\ntitle:parseDomForHtml(conts[i],'a&&Text'),//选集名称\nurl:parseDom(conts[i],'a&&href')+'@lazyRule=html&&.embed-responsive&&script&&Html.js:eval(input)；；now',//选集链接\ncol_type: 'text_3'});\n  }\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":"#ffff7000"},{"title":"91影院i","author":"ivnyoov","version":0,"url":"https://www.91cinema.cn/vshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".vodlist&&.pack-ykpack;\na&&title;\n.eclazy&&data-original;\n.pack-prb&&Text;\na&&href","searchFind":".ec-search&&li;\na&&title;\na&&href;\n.pack-prb&&Text;\n.ec-item&&Text;\n.eclazy&&data-original","search_url":"https://www.91cinema.com/vodsearch/**----------fypage---.html","titleColor":"#ffff7000","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=html&&#bofang_box&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));decodeURIComponent(base64Decode(player_data.url))`\n\ntry{\nvar des_pic =parseDom(html, '.vod-detail-bj&&src');\n}catch(e){\nvar des_pic ='';\n}\n\ntry{\nvar des_desc = parseDomForHtml(html, 'body&&.desc_txt&&Text');\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\nvar arts = parseDomForArray(html,'body&&.play_source_tab&&a');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('','i'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.playlist_notfull');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\ntitle:'共有'+arts.length+'条线路\\n如果无法正常显示，请点击此处访问原网页',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: MY_URL,\n col_type: 'movie_1_vertical_pic'\n});\n\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'flex_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘选集：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":"#ffff7000"},{"title":"阿然影视i","author":"ivnyoov","version":1,"url":"https://mv.91youquan.com/index.php/vod/show/by/fyarea/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"1&2&4&3","area_name":"推荐&人气&时间","area_url":"score&hits&time","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".myui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;a&&.pic-text&&Text;.hidden-xs,-2&&Text;a&&data-original","search_url":"https://mv.91youquan.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ffff7000","group":"②影视","detail_col_type":"text_center_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n\n//简介\ntry{\nvar des_desc = parseDomForHtml(html, '.myui-content__detail&&p,-2&&a&&onclick').replace(\"MyTheme.Layer.Text('剧情简介','\",\"剧情简介：\");\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\n//图片\ntry{\nvar des_pic =parseDom(html, '.lazyload&&data-original');\n}catch(e){\nvar des_pic ='';\n}\n\n//线路列表\nvar tabs = parseDomForArray(html, '.nav-tabs&&li');\n\nd.push({\ntitle:'共有'+tabs.length+'条线路\\n如果无法正常显示，请点击此处访问原网页',\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\nd.push({col_type:'line_blank'});\n\nfor(var i in tabs){\n\nd.push({\ntitle:parseDomForHtml(tabs[i],'Text'),//线路名称\nurl:'',\ncol_type: 'long_text'});\n\n//选集列表\nvar conts = parseDomForArray(html, '.myui-panel_bd&&ul');\n\n//选集列表定位\nvar list=parseDomForArray(conts[i], 'ul&&li');\n\nfor(var j in list){\nd.push({\ntitle:parseDomForHtml(list[j],'a&&Text'),//选集名称\nurl:parseDom(list[j],'a&&href')+`@lazyRule=html&&.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));var jssp = player_data.url.split(\"\\/share\")[0];var json = fetch(player_data.url,{});player_data.url.indexOf(\"m3u8\")>-1?player_data.url:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,//选集链接\ncol_type: list.length >3?'text_3':'text_2'\n    });\n  }\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_center_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ffff7000"},{"firstHeader":"class","last_chapter_rule":"js:\nvar html = getResCode();\n// 获取更新时间，确保有更新时能正常提示\nvar time = parseDomForHtml(html, \".v_info&&.desc&&Text\").replace(\"备注：\", \"\");\nsetResult(time);","title":"小呆瓜","author":"鸠魁","version":0,"url":"http://www.xdg678.com/?m=vod-type-id-fyAll-pg-fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"1&2&37&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&灾难片&纪录片&悬疑片","area_url":"5&6&7&8&9&10&11&24&27&35","sort_name":"","year_name":"国产剧&港台剧&韩剧&欧美剧&日韩剧&日剧&泰剧","sort_url":"","year_url":"12&13&16&15&14&17&18","find_rule":"js:\nvar items=[];\nvar list = parseDomForArray(getResCode(), 'body&&.item');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],''),//描述\npic_url:parseDom(list[i],'.lazy&&data-bg'),//图片\nurl:parseDom(list[i],'a&&href')+'#immersiveTheme#',//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar d = [];\nparseDomForArray(getResCode(), '.v_list&&.item').forEach(list => {\n  d.push({\n       title: parseDomForHtml(list, '.title&&Text'),\n       desc: parseDomForHtml(list, '.desc&&Text'),\n       content: parseDomForHtml(list, '.desc&p&Text').replace('','小棉袄就是帅,天下第一帅。'),\n       pic_url: parseDom(list, '.lazy&&data-bg'),\n       url: parseDom(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d)","search_url":"http://www.xdg678.com/index.php?m=vod-search-pg-fypage-wd-**.html","titleColor":"#ff871f78","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar Color=\"#f13b66a\";\nvar Color1=\"#098AC1\";\nfunction getHead(title){\n    return '‘‘’’<strong><font color=\"'+Color+'\">'+title+'</front></strong>';\n}\n\n// 模块的间距\nlet line_model = 8;\n// 模块间距类型\nlet line_type_model = 'blank_block';\n\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace('https://play.xdg333.com/dp.php?v=','')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.play_from&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('',''))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '#play_list&&.play_list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&li'))\n}\n\n\n//导演名称的定位\nvar daoyan = parseDomForHtml(html, '#intro&&p&&Text').substring(0, 15);\n\n\n//演员名称的定位\nvar zhuyan = parseDomForHtml(html, '#intro&&p,1&&Text').substring(0, 16);\n\n\n//影片分类的定位\nvar fenlei = parseDomForHtml(html, '.v_desc,0--span&&Text').replace('','分类：').replace('|','').substring(0, 25);\n\n\nvar title = parseDomForHtml(html, 'body&&Text');\n\nd.push({\n\ttitle:daoyan + '\\n' + zhuyan +'\\n'+ fenlei,\n\tdesc:parseDomForHtml(html,'.v_info&&.desc&&Text').substring(0, 50).replace('','状态：')+ '\\n' + parseDomForHtml(html, '.v_desc&&.desc&Text').replace('','提醒：此规则仅用于海阔群交流使用。'),\n\tpic_url:parseDom(html, 'img&&src'),\n\turl: MY_URL,\n\n\tcol_type: 'movie_1_vertical_pic_blur'\n});\n\nvar desc = parseDomForHtml(html, '#intro&&p,2&&Text').replace('……','。').replace('简介：','').replace('详情',''); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n       url: 'hiker://empty#'+ '\\n'  + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n          col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++){\n\n        d.push({\n            col_type: line_type_model\n        })\n  }\t \n\nfunction setTabs(tabs, vari) {\n        for (var i in tabs) {\n                var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n                d.push({\n                    title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n                    url: url,\n                    col_type: 'scroll_button'\n                })\n            }\n\n            d.push({\n                col_type: 'line_blank'\n            })\n}\n\n    function setLists(lists, index) {\n        d.push({        col_type: 'line_blank'    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>'  + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n          try{  for (var j = list.length - 1; j >= 0; j--) {  \n    \nd.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n               url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n\n});\n    }\n            \n        } else {\n         try{   for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第',''),\n\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n}}catch(e){\nd.push({\ntitle:'没有选集哟，不信点图片去看看👀',\ncol_type: 'text_center_1'\n});\n    }\n            \n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图标\",\"path\":\"myCollection_favicon\",\"rule\":\"http://www.xdg678.com/template/dm84/images/logo.png\"}]","icon":"https://z3.ax1x.com/2021/10/25/54kGxe.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n// 获取更新时间，确保有更新时能正常提示\nvar time = parseDomForHtml(html, \".video-info-items,3&&Text\").replace(\"备注：\", \"\");\nsetResult(time);","title":"1080P影视㉿","author":"鸠魁","version":1,"url":"https://1080p.tv/vodshow/fyclass-fyarea-fysort------fypage---fyyear/;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&泰国&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&泰国&其他","sort_name":"按时间&按人气&按评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.module-list&&.module-item');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.module-item-text&&Text'),\n     pic_url: parseDom(list[j], 'img&&data-src')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);\n","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://1080p.tv/vodsearch/**----------fypage---/;get;utf-8;{User-Agent@Mozilla 5.0}","titleColor":"#224E95","group":"②影视","detail_col_type":"movie_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy1=$(\"\").lazyRule(() => {\nlet playUrl = input;\nvar url=fetch(input);\nvar code=parseDomForHtml(url,'body&&.player-wrapper&&script&&Html');eval(code);\nvar urll=player_data.url;\nif(urll.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|letv|le|pptv|migu|m1905/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj)); return aytmParse(urll)}else\nif (!/^http/.test(urll)) {\nshowLoading(\"已开启强力嗅探，请稍候\")\nlet result=$(playUrl).x5Lazy(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n         if (!urls[i].match(/url=/)&&urls[i].match(/mp4|m3u8|obj/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isVideo=true#'\n        }\n     }\n   });\nreturn result\n}else{\r\nreturn  urll+'#isVideo=true#';}\n});\n\nvar lazy2=$(\"\").lazyRule(() => {\nshowLoading(\"已开启强力嗅探，请稍候\")\nlet playUrl = input\nlet result=$(playUrl).x5Lazy(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n         if (!urls[i].match(/url=/)&&urls[i].match(/mp4|m3u8|obj/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isVideo=true#'\n        }\n     }\n   });\n   return result\n   });\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//导演名称的定位\nvar daoyan = parseDomForHtml(html, '.video-info-items&&Text').replace('/','').replace('/','').substring(0, 15);\n\n\n//演员名称的定位\nvar zhuyan = parseDomForHtml(html, '.video-info-items,1&&Text').replace('/','').substring(0, 18);\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\n//影片分类的定位\nvar fenlei = parseDomForHtml(html, '.tag-link,1&&a&&Text').replace('','分类： ').substring(0, 35);\n\nvar diqu = parseDomForHtml(html,'.tag-link,3&&Text');\n\nvar nianfen = parseDomForHtml(html,'.tag-link,2&&Text').replace('年代：','');\n\nvar 简介= parseDomForHtml(html, '.video-info-items,6&&Text').replace('剧情：','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar aa='hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#';\nputVar('aa',aa);\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n\ttitle:daoyan + '\\n' + zhuyan +'\\n'+ fenlei +'|'+ diqu +'|'+ nianfen,\n\tdesc:parseDomForHtml(html,'.video-info-items,2&&Text').substring(0, 50)+ '\\n' + parseDomForHtml(html, '.video-info-items,3&&Text').replace('备注：','状态: '),\n\npic_url: parseDom(html,'.lazyload&&data-src'),\n    url: getVar('aa'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UplTJ.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UpQw4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚搜君',\n    url: 'hiker://search?s=' + title + '&rule=聚搜君Lite',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5Up3k9.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://z3.ax1x.com/2021/10/18/5UC4Wn.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    pic_url: \"https://z3.ax1x.com/2021/10/11/5ei2tA.gif\",\nurl: MY_URL,\n    col_type: 'pic_1_full'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['默认','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','默认');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','默认')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','默认')==='默认'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','默认')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href')  + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href')  + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/10/25/54kxJK.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&a')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"电影盒子S","author":"Senap","version":1,"url":"http://www.cerrd.com/films/fyclass_fypage.html?order=fysort","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4&","area_name":"","area_url":"","sort_name":"时间&热门","year_name":"","sort_url":"time&hit","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], 'span,1&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyload&&data-original') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);\n","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'a&&title'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.pic-text text-right&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], 'body&&Text') + '\\n' + parseDomForHtml(list[j], '') + '\\n' + parseDomForHtml(list[j], ''),\n        //定位图片\n        img: parseDom(list[j], '.lazyload&&data-original')+ \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://www.cerrd.com/search.php?searchword=**;post","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var url = parseDom(request(input),'iframe&&src');request(url,{headers:{'Referer':input}}).match(/http.*?m3u8/g)[0]`\n/*线路↓*/\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ', ''))\n}\n/*线路*/\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n/*选集*/\n\n\n//以下头框\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, 'h1&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, 'p&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, 'p,1&&Text').substring(0, 15),\n    //定位描述\n    desc: ' 更新于：' + parseDomForHtml(html, 'p,3&&Text').substring(0, 15),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//这里定位简介，\nvar des_desc = parseDomForHtml(html, '.desc&&Text').replace('地区：', '');\nif (des_desc.length > 50) {\n    des_desc = des_desc.replace(' 简 介：' + des_desc, des_desc.substring(0, 50) + \"......\");\n}\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\n\n\n/*   😜  这里是线路和选集，可以不用修改！！！*/\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.scjspaper.com%2Fxsefyzmb%2Fimages%2F20121018015323788.jpg&refer=http%3A%2F%2Fwww.scjspaper.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1637767758&t=2b10db2e2657c718217ebd1df470d57b"},{"last_chapter_rule":"","title":"大象影视 S","author":"Senap","version":0,"url":"https://www.daxiangtv.net/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&热门&评分&推荐","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&commend","year_url":"&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'body&&a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], 'body&&.pic-text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyload&&data-original') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'body&&a&&title'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], 'p,1&&Text') + '\\n' + parseDomForHtml(list[j], 'p&&Text') + '\\n' + parseDomForHtml(list[j], 'p,2&&Text'),\n        //定位图片\n        img: parseDom(list[j], '.lazyload&&data-original') + \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.daxiangtv.net/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n\nvar lazy = $(\"\").lazyRule(() => {\n    const {\n        lazyParse\n    } = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n    return lazyParse(input)\n});\n\n\n/*线路↓*/\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ', ''))\n}\n/*线路*/\n\n\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n/*选集*/\n\n\n//以下头框\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.data&&Text').substring(0, 30) + '\\n' + parseDomForHtml(html, '.data,2&&Text').substring(0, 30) + '\\n' + parseDomForHtml(html, '.data,3&&Text').substring(0, 15),\n    //定位描述\n    desc: ' 更新于：' + parseDomForHtml(html, '.data,1&&Text').substring(0, 30),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//这里定位简介，\nvar des_desc = parseDomForHtml(html, '.sketch&&Text').replace('地区：', '');\nif (des_desc.length > 50) {\n    des_desc = des_desc.replace(' 简 介：' + des_desc, des_desc.substring(0, 50) + \"......\");\n}\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\n\n\n/*   😜  这里是线路和选集，可以不用修改！！！*/\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://gimg0.baidu.com/gimg/src=http%3A%2F%2Fgdown.baidu.com%2Fimg%2F0%2F512_512%2F0760a5b50c391fa81ed2da44fb44df35.png&app=2008&size=b219,219&n=0&g=0n&sec=1635171792&t=36001bba1f1bab471d23f3c4eb5864c3"},{"last_chapter_rule":"","title":"蓝莓影视S","author":"Senap","version":1,"url":"https://lanmeiguojiang.com/index.php/vod/show/by/fysort/fyarea/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&3&4&6&7&8&9&10&11&12&13&14&15&16","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&热门&评分&推荐","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&commend","year_url":"&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.module-items&&.module-item');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.module-item-caption&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyloaded&&data-src') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);\n","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), '.module-items&&.module-search-item');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'img&&alt'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.video-info-items&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text') + '\\n' + parseDomForHtml(list[j], '.video-serial&&Text') + '\\n' + parseDomForHtml(list[j], '.video-info-items,1&&Text'),\n        //定位图片\n        img: parseDom(list[j], '.lazy&&data-src') + \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a,1&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://lanmeiguojiang.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff13b66a","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插调用\nvar config = fetch('hiker://files/cache/MyParseSet.json');\nif(config == '' || !fetch(JSON.parse(config).cj)){\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n}else{\n    var jsUrl = JSON.parse(config).cj;\n} eval(fetch(jsUrl));\n//搭配断插免嗅\nvar lazy = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n/*线路↓*/\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&span');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ', ''))\n}\n/*线路*/\n\n\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n/*选集*/\n\n\n//以下头框\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, 'body&&h1&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.video-info-aux&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.video-info-items,1&&Text\"').substring(0, 15),\n    //定位描述\n    desc: ' 更新于：' + parseDomForHtml(html, '.video-info-items,2&&Text').substring(0, 15),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-src') + '@Referer=',\n    url: setUrl,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//这里定位简介，\nvar des_desc = parseDomForHtml(html, '.video-info-content&&p&&Text').replace('地区：', '');\nif (des_desc.length > 50) {\n    des_desc = des_desc.replace(' 简 介：' + des_desc, des_desc.substring(0, 50) + \"......\");\n}\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\n\n\n/*   😜  这里是线路和选集，可以不用修改！！！*/\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp5.zbjimg.com%2Ftask%2F2012-02%2F10%2F1421127%2Flarge4f34949d0d850.jpg&refer=http%3A%2F%2Fp5.zbjimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1637067673&t=df2c2612f9ceffc62a48b6461abcc246"},{"last_chapter_rule":"","title":"没事影院修","author":"","version":0,"url":"https://m.9bbg.com/type/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://m.9bbg.com/search/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Redmi K20 Pro Build/RKQ1.200826.002；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/87.0.4280.141 Mobile Safari/537.36&&Cookie@PHPSESSID=7lqu8qbi8iug49djo83jb33sa5}","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            //fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"盘古视界","author":"野蛮人","version":0,"url":"http://www.v256.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.v256.com/index.php/vod/search/page/2/wd/**.html","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            //fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`;\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"不求人影视","author":"野蛮人","version":0,"url":"https://movie.bqrdh.com/vodshow/fyclass-fyarea--fyyear-----fypage---fysort.htm","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&动画片&纪录片","class_url":"SCCCCS&qCCCCS&xCCCCS&ICCCCS&MCCCCS&aCCCCS","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&%E5%A4%A7%E9%99%86&%E9%A6%99%E6%B8%AF&%E5%8F%B0%E6%B9%BE&%E7%BE%8E%E5%9B%BD&%E6%B3%95%E5%9B%BD&%E8%8B%B1%E5%9B%BD&%E6%97%A5%E6%9C%AC&%E9%9F%A9%E5%9B%BD&%E5%BE%B7%E5%9B%BD&%E6%B3%B0%E5%9B%BD&%E5%8D%B0%E5%BA%A6&%E6%84%8F%E5%A4%A7%E5%88%A9&%E8%A5%BF%E7%8F%AD%E7%89%99&%E5%8A%A0%E6%8B%BF%E5%A4%A7&%E5%85%B6%E4%BB%96","sort_name":"全部&2018&2017&2016&2015&2014&2013&2012&2011&2010","year_name":"","sort_url":"&2018&2017&2016&2015&2014&2013&2012&2011&2010","year_url":"","find_rule":".vodlist&&li;.vodlist_title&&Text;a&&data-original;.lazyload&&Text;a&&href","searchFind":".vodlist&&li;.vodlist_title&&Text;a&&href;.lazyload&&Text;.searchlist_titbox&&Text;a&&data-original","search_url":"https://movie.bqrdh.com/vodsearch/-------------.html?wd=**&submit=","titleColor":"#ff228be6","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nd.push({\n        desc: '240&&float',\n        col_type: 'x5_webview_single'\n    });\n\n    var config = fetch('hiker://files/cache/MyParseSet.json');\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n    if (config && fetch(JSON.parse(config).cj)) {\n        jsUrl = JSON.parse(config).cj;\n    } eval(fetch(jsUrl));\n    var 解析口 = `hiker://empty#noHistory#@rule=js:var d = [];d.push({desc: '200',url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/jiexi/jiexi.html',col_type: 'x5_webview_single'});var titles = fetch(\"hiker://files/jiexi/jiexi.txt\", {}).split(/\\\\n/);for(var i = 0; i < titles.length; i++){var t = titles[i].split(\"&&\");d.push({title:fetch(\"hiker://files/jx_cache.txt\",{}) == t[1] ? t[0] + \"‘‘（当前）’’\" : t[0],desc:t[1],url:t[1] + '@lazyRule=.js:writeFile(\"hiker://files/jx_cache.txt\",input);refreshPage();\"toast://修改成功\"',col_type: 'text_1'});}setResult(d)`;\n    putVar('解析口', 解析口);\n\nvar arts = parseDomForArray(html,'.scroller&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&#playlistbox');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar des_desc = parseDomForHtml(html, '.play_content&&p,2&&Text').replace(/.*◎简　　介/,'');\nd.push({\n\ttitle: '类型:'+parseDomForHtml(html, '.nstem&&a,2&&Text').replace('地区：','   ').replace('年份：','   ') + '\\n' +'地区:'+ parseDomForHtml(html,'.nstem&&a,1&&Text').substring(0, 15)+'\\n'+'年代:'+parseDomForHtml(html,'.nstem&&a&&Text').substring(0, 15),\n desc: parseDomForHtml(html,'.play_content&&p,1&&Text').substring(0, 25) + \"\\t\\t\\t点击修改解析口\",\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: (getVar('bfq') == '1' ? setUrl : getVar('解析口')),\n        col_type: 'movie_1_vertical_pic'\n    });\n    d.push({ col_type: \"rich_text\", title: `当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('bfq',getVar('bfq')=='1'?'0':'1');refreshPage();if(getVar('bfq')=='1'){refreshX5WebView('')}'toast://已切换模式';\">` + (getVar('bfq') == '1' ? \"断插模式\" : \"嗅探模式\") + \"</a>\" });\n    d.push({ col_type: 'blank_block' });\nvar lazy1 = `@lazyRule=.embed-responsive&&script&&Html.js:;eval(input);var jsUrl = decodeURIComponent(base64Decode(player_data.url));;var jx = fetch(\"hiker://files/jx_cache.txt\",{});if(jsUrl.match(/html/)){var input=jsUrl;`+lazy+`}else{jsUrl}`\nvar lazy2 = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input), '.embed-responsive&&script&&Html'));\n    var url = decodeURIComponent(base64Decode(player_data.url));\n    if (url.indexOf('m3u8') != -1) {\n        var video = url\n    } else {\n        var jx =  fetch('hiker://files/jx_cache.txt');\n        var play = jx + url\n        showLoading(\"国庆节快乐，请稍候\")\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (urls[i].match(/.mp3|.mp4|_mp4|.tc.qq|.m3u8/)!=null&&urls[i].match(/.js|.css|.ts|.html|.php|.gif|.jpg|.jpeg|.png|.ico|.svg|.txt/)==null) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    return video\n});\n\n if(getVar('bfq','1')=='1'){\nvar lazy=lazy1;\n}else{\nvar lazy=lazy2;\n}\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: tabs.length > 2 ? 'text_2' : 'text_2'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3' : 'text_2'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"小小.","author":"sm`回忆&野蛮人修","version":0,"url":"https://www.6949.cc/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&惊悚片&纪录片&||&国产剧&港台剧&海外剧&日韩剧&欧美剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&20&21&||&13&14&22&15&16","area_name":"全部&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\n\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\npic_url:parseDom(list[i],'.lazyload&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",//链接\ncol_type: 'movie_3'});\n  }catch(e){''}\n}\n//道佬•模板\nsetHomeResult({ data : items});","searchFind":"js:\nvar items=[];\n\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');//列表\nfor(var i in list){\ntry{\nitems.push({\ntitle:parseDomForHtml(list[i],'a&&title'),//标题\ndesc:parseDomForHtml(list[i],'.pic_text&&Text'),//描述\ncontent:parseDomForHtml(list[i],'p,-1&&Text'),//详情\npic_url:parseDom(list[i],'a&&data-original')+'@Referer=',//图片\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\"//链接\n});\n  }catch(e){''}\n}\n//道佬•模板\nsetSearchResult({ data : items});","search_url":"https://www.6949.cc/vodsearch/----------fypage---.html?wd=**","titleColor":"#f20c00","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n//免嗅\nvar lazy = `@lazyRule=.js:var jsurl =unescape(base64Decode( JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\nvar playList = [];\nvar arts = parseDomForArray(html, '#NumTab&&a');\n\n\nfor (var i in arts) {\n    playList.push({\n        name: parseDomForHtml(arts[i], 'Text'),\n        list: []\n    });\n}\nplayList[0].use = true;\nvar conts = parseDomForArray(html, 'body&&#playlistbox');\n\n/*一下为x5头部设置*/\n\ntry{\nvar daoyan=parseDomForHtml(html,'.detail_list&&li,8&&Text').substring(3, 26);  \nvar zhuyan=parseDomForHtml(html, '.detail_list&&li,7&&Text').substring(3, 45);\nvar time=parseDomForHtml(html,'.detail_list&&li,6&&Text').replace('状态：','');  \n}catch(e){\nvar daoyan=zhuyan=time;\n}\nvar data = {\n            name: parseDomForHtml(html, 'h2&&Text'),\n            pic:parseDom(html, '.lazyload&&data-original'),\n\t\t\tinfo: [\n\t\t\t\t{type: '导演：', inf: daoyan},\n\t\t\t\t{type: '演员：', inf: zhuyan},\n\t\t\t\t{type: '状态：',inf: time}\n\t\t\t],\n             class: parseDomForHtml(html,'.detail_list&&a,6&&Text'),\n\t\t           year: parseDomForHtml(html,'.detail_list&&a,4&&Text').replace('年代：','') ,\n\t\t           \tarea: parseDomForHtml(html, '.detail_list&&a,5&&Text'),\n\t\t\t           desc: parseDomForHtml(html, '.content_desc&&Text'),\n\t\t\tlazy:true,\n  plugin: $.toString(() => {\n        var config = fetch('hiker://files/cache/MyParseSet.json');\n        if (config == '' || !fetch(JSON.parse(config).cj)) {\n            var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n        } else {\n            var jsUrl = JSON.parse(config).cj;\n        }\n        eval(fetch(jsUrl));\n        var d = [];\n        setParse();\n        setResult(d);\n    })\n}\n/*一上为x5头部设置*/\n\n\n\nfor (let i = 0; i < conts.length; i++) {\n    playList[i].list = parseDomForArray(conts[i], \"ul&&li\").map(item => {\n        return {\n            title: parseDomForHtml(item, \"a&&Text\"),\n            url: parseDom(item, 'a&&href') + lazy,\n        }\n    });\n}\n//setError(playList)\ndata.playList = playList;\nputVar('movieDetail', data);\nsetResult([{\n    desc: '100%&&float',\n    url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/x5page/style_pro.html',\n    col_type: 'x5_webview_single'\n}]);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var is_refresh=1;\n//＝1为每次打开都拉取云端文件，进二级后随意滑动，返回待再进二级，正常载入后请调回0\nis_refresh||!fileExist('hiker://files/rules/x5page/style_pro.html')?(writeFile('hiker://files/rules/x5page/style_pro.html',request('http://82.156.222.77/weisyr/style_pro.html'))):0;\nputVar('gengxin',is_refresh);","pages":"[]","icon":"#f20c00"},{"last_chapter_rule":"","title":"极速TV","author":"老王","version":1,"url":"https://91suying.com/movie-list-id-fyclass-pg-fypage-order-desc-by-dayhits-class-0-year-2021-letter--area--lang-.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"","titleColor":"","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading(动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"8K","author":"","version":0,"url":"http://vip.8kvod.com:888/t/1-fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet true_url = getVar(\"YingYuan.url\", MY_URL)\nconst page = MY_URL.match(/-(.*?)\\//)[1]\ntrue_url = true_url.replace('---/', +page+'---/')  \nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, '.nav-list,0&&ul').concat(parseDomForArray(html, '.myui-panel_bd&&.myui-screen__list:not(:contains(字母))'));\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(\"YingYuan.fold\", \"0\")\nconst cate_temp_json = getVar(\"YingYuan.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"YingYuan.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a:not(:contains(专题)):not(:contains(资讯)):not(:contains(直播)):not(:contains(APP))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"YingYuan.category\", JSON.stringify(new_cate))\n                        putVar(\"YingYuan.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"YingYuan.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"YingYuan.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\n var html = getResCode();\n \n d = JSON.parse(html).list.map(\n     data => ({\n         title: data.name,\n         url: 'http://vip.8kvod.com:888/k/' + data.id + '.html#immersiveTheme#',\n         img: data.pic\n     })\n )\n setResult(d)","search_url":"http://vip.8kvod.com:888/index.php/ajax/suggest?mid=fypage&wd=**&limit=10","titleColor":"#ff228be6","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\n    var d = [];\n    var html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n\n    var arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n  \n  var tabs = [];\n    for (var i in arts) {\n        tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n    }\n   \n var conts = parseDomForArray(html, 'body&&.myui-content__list');\n \n   var lists = [];\n    for (var i in conts) {\n        lists.push(parseDomForArray(conts[i], 'ul&&li'))\n    }\n\n    d.push({\n\ttitle: '分类：' +parseDomForHtml(html, '.data,0&&Text').replace('分类：','').replace('地区：','').replace('年份：',' ').substring(0, 16)+ '\\n' + parseDomForHtml(html,'.data,1&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,2&&Text').substring(0, 15),\n\n\tdesc:parseDomForHtml(html,'.data,4&&Text').substring(0, 16),\n        pic_url: parseDom(html, '.lazyload&&data-original'),\n        url: setUrl,\n        col_type: 'movie_1_vertical_pic_blur'\n});\n var desc = parseDomForHtml(html, '.data.hidden-xs&&Text').replace('[收起部分]','').replace('　',''); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">' + desc.substr(0, 30) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:''+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\n\nvar lazy= `@lazyRule=iframe&&src.js:var jsurl=input.replace('http://m3u8.vod.fit:668/?url=','');if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n    function setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type:'text_2'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\n\n   function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\n\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"18600电影大全🐯","author":"入戏太深&逐风者","version":2021101405,"url":"https://www.18600.org/list/index.php?fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作&爱情&科幻&恐怖&战争&喜剧&微电影&剧情","area_url":"dongzuo&aiqing&kehuan&kongbu&zhanzheng&xiju&weidianying&juqing","sort_name":"原网站搜索关闭","year_name":"大陆剧&香港剧&台湾剧&日本剧&韩国剧&欧美剧&海外剧","sort_url":"","year_url":"dalu&xianggang&taiwan&riben&hanguo&oumei&haiwai","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.contBox&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.meta_tr&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".contBox&&li;title&&Text;a&&href;;;img&&src","search_url":"https://www.18600.org/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff871f78","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'.debox&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&src'),\n\turl: parseDom(html, 'img&&src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.tabC');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://www.18600.org/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"美剧虫·Q","author":"发粪涂墙","version":0,"url":"https://www.meijuchong.com/vodshow/fyclass--fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"欧美剧&海外剧&日韩剧&电影","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"热度&时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"up&time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:eval(JSON.parse(request('hiker://page/myui-vodlist?rule=模板·Q')).rule)","searchFind":"js:\r\neval(JSON.parse(request('hiker://page/myui-vodlist__media?rule=模板·Q')).rule)","search_url":"https://www.meijuchong.com/vodsearch/**----------fypage---.html","titleColor":"#fff20c00","group":"②影视","detail_col_type":"text_2","detail_find_rule":"js:\nvar lazy = `@lazyRule=.js:var url = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;!/mp4/.test(url)?url+';{Referer@https://www.meijuchong.com}#isVideo=true#':url`\neval(JSON.parse(request('hiker://page/nav-tabs?rule=模板·Q')).rule)","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"#fff20c00"},{"last_chapter_rule":"js:\nrequire(config.模板);\n准最新('ul.nav-tabs&&li;a&&href;.tab-content&&#id&&li');","title":"阿房影视.dr","author":"道长","version":5,"url":"hiker://empty##https://bwl87.com/type/1-fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;.lazyload&&title;.lazyload&&data-original;.lazyload&&Text;.lazyload&&href\";\nvar page = MY_URL.match(/-(.*?)\\//)[1];\n//true_url=获取正确链接();\nvar true_url = getMyVar('header.url', MY_URL);\ntrue_url = true_url.replace(/(.*)---\\//,'$1'+page+'---');\nlet cates=打造动态分类([{\n  一级分类: 'body&&ul.myui-header__menu',\n        子分类: 'body&&li.hidden-sm:gt(0):lt(5)',\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates,true);\n//log('源码及动态分类前奏耗时:'+(new Date().getTime()-t1)+'毫秒');\n一级(parStr,true,cates,false,html);","searchFind":"js:\n var json = JSON.parse(getResCode());\n var res = {};\n var d = [];\n\n for (var i = 0; i < json.list.length; i++) {\n     var j = json.list[i];\n     d.push({\n         title: j.name,\n         img: j.pic.indexOf('http') != -1 ? j.pic : 'https://www.bwl87.com' + j.pic,\n         url: 'https://bwl87.com/detail/' + j.id + '/' + '#immersiveTheme#'\n     });\n }\n\n res.data = d;\n setSearchResult(res);","search_url":"https://www.bwl87.com/index.php/ajax/suggest?mid=1&wd=**&limit=100&timestamp=.js:new Date().getTime()+''","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\n//引入晓插\nrc('https://gitee.com/xiao-zero/xiao/raw/master/js/xiao.js');\n//免嗅\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html'));var url=player_aaaa.url;var fr=player_aaaa.from;var input = url ;if(fr === 'xfyun'){` + TG + `}else{url}`;\n//道插覆盖\nrequire(config.模板);\nlet parse={\n title:'h1.title&&Text;.data,1&&Text;#rating&&.branch&&Text',\n img:'.myui-content__thumb&&a&&img&&data-original',\n url:'.myui-content__thumb&&a&&href',\n desc:'.data,2&&Text;.data,3&&Text',\n content:'#desc&&span.data&&Text',\n tabs:'ul.nav-tabs&&li',\n lists:'.tab-content&&#id&&li',\n tab_id:'a&&href'\n};\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nvar 模板 = getApi('importUrl')+\"2505\";\nrequire(模板);\n预处理()","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/饭团影院.png"},{"last_chapter_rule":"js:\nrequire(config.模板);\n准最新('ul.nav-tabs&&li;a&&href;.tab-content&&#id&&li');","title":"饭团影视.dr","author":"道长&墙佬","version":12,"url":"hiker://empty##https://ty.fantuan.tv/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?).html/)[2];\ntrue_url=获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&ul.myui-header__menu',\n        子分类: 'body&&li.hidden-sm:gt(0):lt(5)',\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"#searchList&&li;.thumb&&a&&title;.thumb&&a&&data-original;.detail&&p,1&&Text;.searchkey&&href.js:input+'#immersiveTheme#';p.hidden-xs&&Text\";\n一级(parStr,true);","search_url":"https://ty.fantuan.tv/vodsearch/page/fypage/wd/**.html","group":"②影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.title&&Text;.data,1&&Text;#rating&&.branch&&Text',\n img:'.myui-content__thumb&&a&&img&&data-original',\n url:'.myui-content__thumb&&a&&href',\n desc:'.data,2&&Text;.data,3&&Text',\n content:'#desc&&span.data&&Text',\n tabs:'ul.nav-tabs&&li',\n lists:'.tab-content&&#id&&li',\n tab_id:'a&&href'\n};\nvar lazy = $(\"\").lazyRule(() => {\n    eval(pdfh(request(input), '.embed-responsive&&script&&Html'));\n    eval(getCryptoJS());\n    var url = decodeURIComponent(base64Decode(player_aaaa.url));\n    var html = request('https://ptwo.wkfile.com/m3u8.php?url=' + url, {\n        headers: {\n            'Referer': 'https://fantuan.tv/'\n        }\n    });\n    var bt_token = html.match(/bt_token = \"(.*?)\"/)[1]\n    var play = CryptoJS.AES.decrypt(html.match(/getVideoInfo\\(\"(.*?)\"/)[1], CryptoJS.enc.Utf8.parse('C04AD764B8CD4CE9'), {\n        'iv': CryptoJS.enc.Utf8.parse(bt_token)\n    }).toString(CryptoJS.enc.Utf8);\n    if (/mgtv/.test(play)) {\n        play += ';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}';\n    } else {\n        play += ';{Referer@https://fantuan.tv}'\n    }\n    return play\n});\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nvar 模板 = getApi('importUrl')+\"2505\";\nrequire(模板);\n预处理()","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/饭团影院.png"},{"last_chapter_rule":"js:\nsetResult(\n  parseDomForArray(getResCode(), '.media&&h4&&button')\n    .slice(0, -1)\n    .map((v) => parseDomForHtml(v, 'Text'))\n    .join(' / ')\n)","title":"悟空美剧","author":"永远の明日","version":6,"type":"video","url":"https://www.hntwqc.net/list-select-id-fyclass-type--area-fyarea-year-fyyear-star--state--order-fysort-p-fypage.html","col_type":"movie_3_marquee","class_name":"科幻/魔幻&惊悚/灵异&都市/情感&犯罪/警匪&选秀/综艺&动漫/卡通","class_url":"1&2&3&4&5&6","area_name":"地区:&美国&英国&加拿大&澳大利亚&西班牙&葡萄牙&法国&德国&巴西&瑞典&意大利&墨西哥&丹麦&土耳其&俄罗斯","area_url":"&美国&英国&加拿大&澳大利亚&西班牙&葡萄牙&法国&德国&巴西&瑞典&意大利&墨西哥&丹麦&土耳其&俄罗斯","sort_name":"最新上映&最近热播&评分最高","year_name":"状态:&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010-2000&90年代&更早","sort_url":"addtime&hits&gold","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&20002010&19901999&18001980","find_rule":"ul.list-unstyled&&li;h2&&Text;img&&data-original;p&&Text;a&&href.js:input+'#immersiveTheme#'","searchFind":"ul.list-unstyled&&li;h2&&Text;a&&href.js:input+'#immersiveTheme#';*;p&&Text;img&&data-original","search_url":"/search/**.html","group":"②影视","detail_col_type":"text_3","detail_find_rule":"js:\r\nlet d = [], html = getResCode(), tabMode = getVar('wukongmeiju-tabMode', '0')\r\n// 简介\r\nlet title = parseDomForArray(html, '.media&&h4&&button').map((v) => parseDomForHtml(v, 'Text')),\r\n  desc = parseDomForHtml(html, '.media&&.vod-content&&Text'),\r\n  img = parseDomForHtml(html, '.media&&img&&data-original')\r\n// 选集\r\nlet tabs = [[], [], []]\r\nparseDomForArray(html, 'ul.nav-tabs&&ul.nav-tabs>li').slice(0, -1).forEach((v, i) => {\r\n  let tabName = parseDomForHtml(v, 'Text')\r\n  if (/网盘|百度|微云/.exec(tabName)) tabs[2][i] = tabName\r\n  else tabs[1][i] = tabName\r\n})\r\n// 列表\r\nlet lists = parseDomForArray(html, '.tab-content&&ul')\r\ntabs[0] = parseDomForArray(html, 'body&&.table-responsive')\r\n\r\nd.push({\r\n  title: title.join(' • '),\r\n  desc: desc,\r\n  img: img,\r\n  url: MY_URL,\r\n  col_type: 'movie_1_vertical_pic_blur'\r\n}, {\r\n  title: ['✅', '', ''][tabMode] + ' 磁链[' + Object.keys(tabs[0]).length + ']',\r\n  url: $('#noLoading#').lazyRule(() => (putVar('wukongmeiju-tabMode', '0'), refreshPage(), 'toast://已切换'))\r\n}, {\r\n  title: ['', '✅', ''][tabMode] + ' 云播[' + Object.keys(tabs[1]).length + ']',\r\n  url: $('#noLoading#').lazyRule(() => (putVar('wukongmeiju-tabMode', '1'), refreshPage(), 'toast://已切换'))\r\n}, {\r\n  title: ['', '', '✅'][tabMode] + ' 云盘[' + Object.keys(tabs[2]).length + ']',\r\n  url: $('#noLoading#').lazyRule(() => (putVar('wukongmeiju-tabMode', '2'), refreshPage(), 'toast://已切换'))\r\n})\r\n\r\ntabs[tabMode].forEach((v, i) => {\r\n  let list = []\r\n  if (tabMode == 0) {\r\n    list = parseDomForArray(v, 'tbody&&tr').filter((v) => ! /<tr>\\s*?<\\/tr>/.exec(v))\r\n    v = parseDomForHtml(v, 'thead&&th&&Text')\r\n  } else list = parseDomForArray(lists[i], 'ul&&li')\r\n  if (list.length) {\r\n    d.push({ col_type: 'line_blank' }, {\r\n      title: '““””<b><span style=\"color:#5cb85c\">' + v + '</span></b>',\r\n      url: 'hiker://empty',\r\n      col_type: 'text_center_1'\r\n    })\r\n    list.forEach((vv) => {\r\n      let url = parseDom(vv, 'a&&href'),\r\n        title = parseDomForHtml(vv, tabMode == 0 ? 'input&&data-name' : 'a&&Text'),\r\n        item = [{\r\n          title: title,\r\n          url: url + '#ignoreVideo=true#',\r\n          col_type: 'text_' + [title.length > 5 ? 1 : 3, 4, 2][tabMode]\r\n        }]\r\n      if (tabMode == 1)\r\n        item[0].url = $(url, '#cms_player&&Html').lazyRule(() => JSON.parse(/var cms_player = ({.*?})/.exec(input)[1]).url)\r\n      else if (tabMode == 2) {\r\n        let word = /【密码：(.*?)】/.exec(item[0].title) || []\r\n        item[0].title+='📋'\r\n        item[0].url = $(url).lazyRule((word) => {\r\n          copy(word)\r\n          return input\r\n        }, word[1])\r\n        if (v.indexOf('百度') >= 0) item.push({\r\n          title: '复制盘口令',\r\n          url: 'copy://' + url + ' 提取码: ' + word[1],\r\n          col_type: 'text_3'\r\n        })\r\n      }\r\n      Array.prototype.push.apply(d, item)\r\n    })\r\n  }\r\n})\r\nsetResult(d)","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://www.hntwqc.net/favicon.ico"},{"last_chapter_rule":"js:\nrequire(config.依赖);\nzuixin()","title":"瑞丰影视√","author":"帅√`人才","version":2,"type":"video","url":"hiker://empty##http://221.236.18.123:665/api.php/v1.vod##video?tid=fyclass&pg=fypage&page=fypage&limit=20&area=fyarea&lass=&year=fyyear##fysort","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","area_url":"&内地&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"https://vip.ruifenglb.com:4433/api.php/app/","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\nrequire(config.依赖);\nyiji()\n","searchFind":"js:\nlog(MY_URL)\nrequire(config.依赖);\nsousuo()","search_url":"hiker://empty##http://221.236.18.12:665/api.php/v1.vod##search?text=**&pg=fypage&page=fypage&limit=10","group":"②影视√","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.依赖);\nerji()\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://src48597962.coding.net/p/src/d/hk/git/raw/master/srcDyTmpl.js\",\n    是否APP: 1,\n    //指定UA:\n});\n//上面的代码不要随意修改，by.帅√`人才 影视模板","pages":"[]","icon":"https://www.ruifenglb.com/wp-content/uploads/2021/01/23003659642.ico"},{"last_chapter_rule":"js:require(config.依赖);\nvar 影片列表 = '.tab-content&&ul';\nvar 单个影片 = 'ul&&li';\nzuixin()","title":"万能影视√","author":"帅√`人才","version":3,"type":"video","url":"hiker://empty##https://wnvod.net/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:require(config.依赖);\nMY_URL = MY_URL.replace('hiker://empty##','');\n//影片列表定位，到每一个影片的标签\nvar 列表 = '.myui-vodlist&&li';\n//每一个影片的详情项定位\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 链接 = 'a&&href';\nvar 定位列表 = ([{\n    一级分类: 'body&&.myui-header__menu',\n    子分类: 'body&&li:not(:matches(首页|资讯|专题|短视频))',//:gt(0)\n},{\n    一级分类: 'body&&.myui-screen__list:not(:matches(字母))',\n    子分类: 'body&&li:lt(12):gt(0)',//:gt(0)\n}])\nyijidtfl()\n","searchFind":"js:require(config.依赖);\nvar 列表 = '.myui-panel_bd&&li';\nvar 标题 = 'h4&&Text';\nvar 描述 = '.pic-text&&Text';\nvar 内容 = '.detail--h4&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 链接 = 'a&&href';\nsousuo()\n","search_url":"https://wnvod.net/vodsearch/**----------fypage---.html","group":"②影视√","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\nvar 项目1 = '.myui-content__detail&&.data,2&&Text';\nvar 项目2 = '.myui-content__detail&&.data,3&&Text';\nvar 项目3 = '.myui-content__detail&&.data,1&&Text';\nvar 项目4 = '';\nvar 项目5 = '.myui-content__detail&&.data,0&&Text';\nvar 项目6 = '';\nvar 图片 = '.lazyload&&data-original';\nvar 简介 = '.text-collapse&&.data&&Text';\nvar 过虑 = '解析';\nvar 线路列表 = '.nav-tabs&&li';\nvar 单个线路 = 'a&&Text';\nvar 影片列表 = '.tab-content&&ul';\nvar 单个影片 = 'ul&&li';\n\nvar lazy = $(\"\").lazyRule(() => {\n    eval(pdfh(request(input), '.embed-responsive&&script&&Html'))\n    var url = player_data.url;\n    if (url.search(/\\.mp4|obj|\\.m3u8/)>-1&&url.search(/duoduozy/)==-1&&url.search(/ysgc\\.xyz/)==-1) {\n      return url;\n    } else {\n      eval(fetch('https://wnvod.net/static/js/playerconfig.js'));\n      var jx = MacPlayerConfig.player_list[player_data.from].parse;\n      require(config.依赖);\n      return SrcParseS.嗅探(jx+url);\n\t }\n});\n\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    依赖: \"https://src48597962.coding.net/p/src/d/hk/git/raw/master/srcDyTmpl.js\",\n    指定UA: PC_UA\n});\n//上面的代码不要随意修改，by.帅√`人才 影视模板！","pages":"[]","icon":"https://wnvod.net/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"js:require(config.依赖);\n//定位列表和集的标签\nvar 影片列表 = 'body&&.fed-play-item';\nvar 单个影片 = '.fed-part-rows,1&&li';\nzuixin()","title":"帅才影院√","author":"帅√`人才","version":5,"type":"other","url":"https://vip.jevons.vip/index.php/vod/show/id/fyAll/page/fypage.html;get;UTF-8;{Cookie@.js:getMyVar('jevonsvip$cookie')}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&动画片","area_url":"6&7&8&9&10&12&26","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:require(config.依赖);\n//影片列表定位，到每一个影片的标签\nvar 列表 = '.fed-list-info&&li';\n//每一个影片的详情项定位\nvar 标题 = '.fed-list-title&&Text';\nvar 描述 = '.fed-list-remarks&&Text';\nvar 图片 = '.fed-list-pics&&data-original';\nvar 链接 = 'a&&href';\n//下面调用模板执行\nyiji()\n\n","searchFind":"js:require(config.依赖);\n//影片列表定位，需可以定位到每一个影片的标签\nvar 列表 = '.fed-main-info&&dl';\n//每一个影片的详情项定位\nvar 标题 = 'h1&&a&&Text';\nvar 描述 = '.fed-list-remarks&&Text';\nvar 内容 = '.fed-part-esan&&Text';\nvar 图片 = '.fed-list-pics&&data-original';\nvar 链接 = 'h1&&a&&href';\n//调用模板执行\nsousuo()\n","search_url":"https://vip.jevons.vip/index.php/vod/search/page/fypage/wd/**.html;get;UTF-8;{Cookie@.js:getMyVar('jevonsvip$cookie')}","group":"②影视√","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\n//二级变量\nvar 项目1 = '.fed-deta-content&&ul&&li,0&&Text';//显示在影片详情右上第一行\nvar 项目2 = '.fed-deta-content&&ul&&li,2&&Text';//显示在影片详情右上第二行\nvar 项目3 = '.fed-deta-content&&ul&&li,3&&Text';//显示在影片详情右上第三行1\nvar 项目4 = '.fed-deta-content&&ul&&li,4&&Text';//显示在影片详情右上第三行2\nvar 项目5 = '.fed-deta-content&&ul&&li,5&&Text';//显示在影片详情右上第四行\nvar 项目6 = '';//显示在影片详情右上第五行\nvar 图片 = '.fed-deta-images&&.fed-list-pics&&data-original';\nvar 简介 = '.fed-part-esan&&Text';\nvar 过虑 = '简介：';//过虑字符以|隔开，支持通配符.*\nvar 线路列表 = '.fed-drop-tops&&ul&&li';//此标签定位到线路数组\nvar 单个线路 = 'a&&Text';//此标签定位到每一条线路的名称\nvar 影片列表 = 'body&&.fed-play-item';//此标签定位到所有播放地址数组\nvar 单个影片 = '.fed-part-rows,1&&li';//此标签定位到每一集的名称和地址\n\nif(!getVar('jevonsvip$cookie')){\nvar iscookie=``;\n}else{\nvar iscookie=`headers: {\"Cookie\": \"`+getMyVar('jevonsvip$cookie')+`\"}`;\n}\n//解析设置\nvar lazy=`@lazyRule=.js:var js = request(input, {`+iscookie+`});var jsUrl = base64Decode(parseDomForHtml(js, 'iframe&&data-play').slice(3));var jx = parseDomForHtml(js, 'iframe&&data-pars');if(jsUrl.match(/renrenmi/)){var urls=request(jx+jsUrl).match(/urls = \"(.*?)\"/)[1];cacheM3u8(urls)}else if(jsUrl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le/)){require(config.依赖);SrcParseS.官网(jsUrl)}else{jsUrl}`\n\n//调用模板执行\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://src48597962.coding.net/p/src/d/hk/git/raw/master/srcDyTmpl.js\",\n    更新间隔: 48\n});\n//上面的代码不要修改，by.帅√`人才 影视模板\n\nvar isok =fetch(\"https://vip.jevons.vip/isok.txt\");\nif(isok!=\"ok\"&&!getMyVar('jevonsvip$cookie')){\neval(fetch(\"http://vip.jevons.vip/aes.js\"));\n        var urls = pdfh(fetch(\"http://vip.jevons.vip\"), \"body&&script,1&&Html\");\n        eval(urls.replace(\"document.\", \"\").replace(\"location.\", \"\"));\n        var cook = cookie.split(\";\")[0];\n putMyVar('jevonsvip$cookie',cook);\n}\n\n\n","pages":"[]","icon":"https://i.ibb.co/ZhpTvS4/minilog.png"},{"last_chapter_rule":"","title":"车网","author":"子丑寅卯","version":9,"url":"https://www.xincheping.com/video/type/fyAll/pfypage.html","col_type":"movie_1_left_pic","class_name":"新车抢鲜评&最强对比&新车评let's购","class_url":"998&1024&1011","area_name":"新车大真探&购车我帮你&社论&原来是这样","area_url":"1027&1022&1033&1015","sort_name":"","year_name":"特别策划&新电报&趣拍TIME&自驾游记&往期视频","sort_url":"","year_url":"999&1034&1032&1025&1013","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\nvar  list  = parseDomForArray(html,  '.v_llbox&&li');\nfor  (var  j  =  0;  j  <  list.length;  j++)  {  \n    d.push({       \n        title:  parseDomForHtml(list[j],  'img&&alt'),\n               desc:'发布时间: '+'‘‘'+  parseDomForHtml(list[j],  'span,-1&&Text')+'’’',\n               pic_url:  parseDom(list[j],  'img&&src'),\n               url:   'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n          \n    });\n}\nres.data  =  d;\nsetHomeResult(res);","searchFind":"js:\r\n\r\nvar d=[];\r\n\nlet json=JSON.parse(getResCode()).data.pageList;\nfor(let i of json){\n    d.push({\n        pic_url:i.coverUrl,\n        title:i.title,\n       desc:i.pubTime, url:'https://m.xincheping.com'+i.uri\n    });\n}\nsetResult(d);","search_url":"https://m.xincheping.com/search-v2/search-video.do?JsonBody={\"query\":\"**\",\"pageNo\":fypage,\"pageSize\":20,\"orderBy\":\"2\",\"pubTimeRange\":\"\",\"channelPath\":\"\"};POST","titleColor":"#ff13b66a","group":"②搞笑","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n    d.push({       \n             title:'立即播放',\n               url:   'x5Rule://' + MY_URL+ '@' + _x5,\n          \n    });\n\nres.data  =  d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fhbimg.b0.upaiyun.com%2Fb00c47d54e3f863bff220a8f46c694b7cec59ad2254d8-8MPKmy_fw658&refer=http%3A%2F%2Fhbimg.b0.upaiyun.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1636970668&t=825198e6068c5e67a11983333e858674"},{"last_chapter_rule":"","title":"测试X5RuleReferer","author":"小棉袄🌞&Reborn","version":6,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nlet requestOption = {\n    referer: 'https://jx.daishudy.com/?url=https://v.qq.com/x/cover/mzc00200prv7r23/q0041j617a8.html',\n    url: 'https://jx.daishudy.com/?url=https://v.qq.com/x/cover/mzc00200prv7r23/q0041j617a8.html'\n}\nd.push({\n    title: \"开始测试\",\n    url: \"x5Rule://\" + requestOption.referer  + \"@\" + $.toString((url) => {\n        // 必须利用全局变量控制好跳转次数\n        if (window.count == null) {\n            window.count = 0;\n        }\n        // let referer = \"https://www.libvio.com\"\n        // fba.log('url: ' + location.href)\n        // fba.log('referer: ' + document.referrer)\n        if (window.count == 0 && document.querySelector('body').innerText.search(/未授权/) != -1) {\n            //真正嗅探的网址\n            fba.log(\"开始跳转\")\n            window.count++;\n            location.href = url\n        }\n        if (document.querySelector('body').innerText.search(/未授权/) === -1) {\n            fba.log('url: ' + location.href)\n            fba.log('referer: ' + document.referrer)\n            //真正开始嗅探\n            fba.log('开始嗅探')\n            fba.log(fba.getUrls());\n            return \"toast://小棉袄真6啊\"\n        }\n    }, requestOption.url),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        ua: PC_UA\n    }\n});\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"②测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"无极电影(磁力)","author":"Joe","version":0,"type":"video","url":"https://www.btwuji.com/html/gndy/fyAll_fypage.html;get;GBK","col_type":"text_1","class_name":"最新&综合","class_url":"dyzz/list_23&jddy/list_63","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry {\n    var list = parseDomForArray(getResCode(), '.co_content8&&tbody'); //列表\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'), //标题\n            desc: parseDomForHtml(list[j], 'font&&Text'), //描述\n            url: parseDom(list[j], 'a&&href')//链接\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":".co_content8&&tbody;a&&Text;a&&href;font&&Text;;;","search_url":"http://s.ygdy8.com/plus/so.php?keyword=**&searchtype=titlekeyword&pagesize=10&PageNo=fypage;get;GBK","group":"②磁力","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nfunction detail() {\n    let s = loadJavaClass(\"hiker://files/cache/bidi.dex\", \"com.rule.jianpian\", \"hiker://files/cache/libp2p.so\");\n    d.push({\n        title: '磁力云播列表(无声请用mx或reex播放)👇'.fontcolor(\"red\"),\n        col_type: 'rich_text'\n    });\n    \n    for (var i in conts) {\n        log(s.JPUrlDec(pdfh(conts[i], 'a&&href')))\n        d.push({\n            title: pdfh(conts[i], 'a&&Text'),\n            url: s.JPUrlDec(pdfh(conts[i], 'a&&href')) + \"#isVideo=true#\",\n            pic_url: 'https://lanmeiguojiang.com/tubiao/movie/81.svg',\n            col_type: 'avatar'\n        });\n    }\n    d.push({\n        img: pd(html,\n            'img&&src') + '@Referer=',\n        url: pd(html,\n            'img&&src') + '@Referer=',\n        col_type: 'pic_1_full'\n    })\n}\n\nfunction detailmovie() {\n    d.push({\n        title: '磁力云播列表(无声请用mx或reex播放)👇'.fontcolor(\"red\"),\n        col_type: 'rich_text'\n    });\n    for (var i in conts) {\n        d.push({\n            title: pdfh(conts[i], 'a&&Text'),\n            url: pdfh(conts[i], 'a&&href'),\n            pic_url: 'https://lanmeiguojiang.com/tubiao/movie/81.svg',\n            col_type: 'avatar'\n        });\n    }\n    d.push({\n        img: pd(html,\n            'img&&src') + '@Referer=',\n        url: pd(html,\n            'img&&src') + '@Referer=',\n        col_type: 'pic_1_full'\n    });\n    d.push({\n        title: html.match(/简　　介[\\s\\S]*(?=。)/g)[0],\n        col_type: \"rich_text\"\n    })\n}\nif (html.includes(\"tbody\")) {\n    var conts = pdfa(html, '#Zoom&&span&&tbody');\n    detail()\n} else {\n    var conts = pdfa(html, '#Zoom&&span');\n    detailmovie()\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"requireDownload('https://nick88.coding.net/p/moveres/d/res/git/raw/master/bidi.dex', 'hiker://files/cache/bidi.dex');\nrequireDownload('https://nick88.coding.net/p/moveres/d/res/git/raw/master/libp2p.so', 'hiker://files/cache/libp2p.so');\nlet s = loadJavaClass(\"hiker://files/cache/bidi.dex\", \"com.rule.jianpian\", \"hiker://files/cache/libp2p.so\");\nlet cache = getPath(\"hiker://files/cache\").replace(\"file://\", \"\");\ns.init(cache);","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"磁力宝","author":"Joe","version":0,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\nsetResult(d)","searchFind":"body&&.search-item;a&&Text;a&&href;span&&Text;span,1&&Text","search_url":"http://clb0.info/s/**_rel_fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10；； WGR-W09 Build/HUAWEIWGR-W09；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Safari/537.36&&Cookie@PHPSESSID=2bfcu0mcotgtecld0oq6t6j56a；； _ga=GA1.1.1225643091.1655795172；； Challenge=073df3489a6c769a978ab12162bda839；； _ga_T4FKQ9XFV8=GS1.1.1655795172.1.1.1655795311.0}","group":"②磁力","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nhtml = getResCode();\nmpage = pdfa(html, \"body&&#wall\");\nd.push({\n    title: pdfh(mpage[0], \".res-title&&Text\"),\n    col_type: \"text_center_1\"\n})\nd.push({\n    col_type: \"line_blank\"\n})\nd.push({\n    title: '““””<b><span style=\"color: red\">磁力链接列表</span></b>',\n    col_type: \"text_center_1\"\n})\nfor (var i in mpage) {\n    d.push({\n        title: pdfh(mpage[i], \"a,1&&Text\"),\n        url: pdfh(mpage[i], \".download&&href\"),\n        col_type: \"text_1\"\n    })\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"阳光电影(磁力)","author":"Joe","version":3,"type":"video","url":"https://dy.dytt8.net/html/gndy/fyAll_fypage.html;get;GBK","col_type":"text_1","class_name":"最新&综合","class_url":"dyzz/list_23&jddy/list_63","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar version = getAppVersion()\nif (version < 3126) {\n    toast(\"版本低于7.1，体验会差，推荐更新\")\n}\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\n\ntry {\n    var list = parseDomForArray(getResCode(), '.co_content8&&tbody'); //列表\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'), //标题\n            desc: parseDomForHtml(list[j], 'font&&Text'), //描述\n            url: parseDom(list[j], 'a&&href') //链接\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":".co_content8&&tbody;a&&Text;a&&href;font&&Text;;;","search_url":"http://s.ygdy8.com/plus/so.php?keyword=**&searchtype=titlekeyword&pagesize=20&PageNo=fypage;get;GBK","group":"②磁力","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nfunction detail() {\n    d.push({\n        title: '““ftp链接(请用mx或reex播放)””',\n        col_type: 'text_1'\n    });\n\n    for (var i in conts) {\n        d.push({\n            title: pdfh(conts[i], 'a&&Text'),\n            url: pdfh(conts[i], 'a&&href'),\n            pic_url: 'https://lanmeiguojiang.com/tubiao/movie/81.svg',\n            col_type: 'avatar'\n        });\n    }\n    d.push({\n        img: pd(html,\n            'img&&src') + '@Referer=',\n        url: pd(html,\n            'img&&src') + '@Referer=',\n        col_type: 'pic_1_full'\n    })\n    var detail = pdfa(html, '#Zoom&&span');\n    d.push({\n        title: pdfh(detail[0], \"p,1&&Text\"),\n        col_type: \"rich_text\"\n    })\n}\n\nfunction detailmovie() {\n    d.push({\n        title: '““播放列表(请用mx或reex播放)””',\n        col_type: 'text_1'\n    });\n    for (var i in conts) {\n        d.push({\n            title: pdfh(conts[i], 'a&&Text'),\n            url: pdfh(conts[i], 'a&&href'),\n            pic_url: 'https://lanmeiguojiang.com/tubiao/movie/81.svg',\n            col_type: 'avatar'\n        });\n    }\n    d.push({\n        img: pd(html,\n            'img&&src') + '@Referer=',\n        url: pd(html,\n            'img&&src') + '@Referer=',\n        col_type: 'pic_1_full'\n    });\n    d.push({\n        title: html.match(/◎年　　代[\\s\\S]*(?=。)/g)[0],\n        col_type: \"rich_text\"\n    })\n}\nif (html.includes(\"tbody\")) {\n    var conts = pdfa(html, '#Zoom&&span&&tbody');\n    detail()\n} else {\n    var conts = pdfa(html, '#Zoom&&span');\n    detailmovie()\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://dy.dytt8.net/images/logo.gif"},{"last_chapter_rule":"","title":"迅雷电影天堂.Joe","author":"Joe","version":0,"type":"video","url":"https://xunlei8.cc/fyclass-0-0-0-date-fypage-30.html","col_type":"movie_3","class_name":"电影&电视剧","class_url":"list&tv","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.bc3ba;a&&Text;img&&src;span&&Text;a&&href","searchFind":"body&&.b007;h2&&Text;a&&href;p&&Text;;img&&src","search_url":"https://xunlei8.cc/s/**.html","group":"②磁力","detail_col_type":"text_1","detail_find_rule":"js:\nvar d = [];\nlist = pdfa(getResCode(), \"body&&.baf6e960dd\")\nd.push({\n    title: \"列表\",\n    col_type: \"text_center_1\"\n})\nfor (var i in list) {\n    var url = pdfh(list[i], \"a&&href\")\n    if (url.includes(\"thunder://\")) {\n        d.push({\n            title: pdfh(list[i], \"a&&Text\"),\n            url: base64Decode(url.replace(\"thunder://\", \"\")).replace(\"AA\", \"\").replace(\"ZZ\", \"\")\n        })\n    } else {\n        d.push({\n            title: pdfh(list[i], \"a&&Text\"),\n            url: url\n        })\n    }\n}\nd.push({\n    col_type: \"line_blank\"\n})\nvar detail = pdfa(getResCode(), \".be998a&&p\")\nfor (var i in detail) {\n    d.push({\n        title: pdfh(detail[i], \"p&&Text\"),\n        col_type: \"rich_text\"\n    })\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://imgdb.cc/static/img/logo.png"},{"title":"预告片","author":"","version":0,"url":"https://www.yugaopian.cn/movlist/fyarea_fyclass_fyyear__fypage","col_type":"movie_3","class_name":"全部&剧情&喜剧&惊悚&爱情&动作&犯罪&冒险&悬疑&奇幻&科幻&恐怖&家庭&动画&纪录片&历史&传记&战争&同性&音乐&歌舞&西部&灾难&武侠&情涩","class_url":"&剧情&喜剧&惊悚&爱情&动作&犯罪&冒险&悬疑&奇幻&科幻&恐怖&家庭&动画&纪录片&历史&传记&战争&同性&音乐&歌舞&西部&灾难&武侠&情涩","area_name":"全部&美国&中国大陆&英国&法国&香港&台湾&日本&韩国&泰国&德国&加拿大&澳大利亚&西班牙&意大利&印度&比利时&俄罗斯&葡萄牙","area_url":"&美国&中国大陆&英国&法国&香港&台湾&日本&韩国&泰国&德国&加拿大&澳大利亚&西班牙&意大利&印度&比利时&俄罗斯&葡萄牙","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008","find_rule":".movlist,1&&li;.item-title&&Text;img&&src;.item-pubtime&&Text;a&&href.js:'http://m.yugaopian.cn/?view=movie&id='+input.replace('/movie/','')","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"②蓝光超清","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"One一个","author":"Killer","version":0,"type":"read","url":"http://m.wufazhuce.com/index","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.item-issue;.text-content-short&&Text;img&&src;.text-title&&Text;.text-title&&a&&href","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"②资讯","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d = [];\nd.push({\n\t\t title: parseDomForHtml(getResCode(), '.text-detail&&Html').split('评论内容')[0],\n    col_type:'rich_text'\n});\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"歪片星球.K","author":"Killer","version":0,"type":"video","url":"https://waipian5.com/show-fyclass-fyarea-fysort------fypage---fyyear/","col_type":"movie_3","class_name":"剧集&电影&综艺&动漫","class_url":"juji&dianying&zongyi&dongman","area_name":"中国大陆&中国香港&中国台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&俄罗斯&澳大利亚","area_url":"中国大陆&中国香港&中国台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&俄罗斯&澳大利亚","sort_name":"更新时间&最多播放&实时热门&近期热播&新片上线","year_name":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005","sort_url":"time&hits&hits_day&hits_week&year","year_url":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005","find_rule":".module-main,1&&a;a&&title;img&&data-src;.module-item-note&&Text;a&&href","searchFind":".module-card-items&&.module-card-item;.module-card-item-title&&Text;a&&href;.module-item-note&&Text;.module-info-item&&Text;img&&data-src","search_url":"/search-**----------fypage---/","group":"②超清","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.module-tab-items-box&&span');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.module-play-list');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry{\nd.push({\n    title: pdfh(html, '.module-info-items&&.module-info-item,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'').substring(0, 18),\n    desc: pdfh(html, ''),\n     img: pd(html, \n'.lazyload&&data-src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});}catch(e){}\n\n eval(JSON.parse(fetch('hiker://page/lazy2', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"视界嗅探\",\"path\":\"lazy2\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n        return \\\"video://\\\"+input\\n});\"}]","proxy":"","icon":"http://waipian5.com/statics/logo.png"},{"last_chapter_rule":"","title":"博看听书","author":"子丑寅卯","version":2,"type":"other","url":"https://api.bookan.com.cn/voice/book/list?instance_id=25304&page=fypage&category_id=fyAll&num=24","col_type":"movie_3","class_name":"少年读物&儿童文学&国学经典&文艺少年&育儿心经&心理哲学","class_url":"1305&1304&1320&1306&1309&1310","area_name":"青春励志&历史小说&故事会","area_url":"1307&1312&1303","sort_name":"","year_name":"音乐戏剧&相声评书","sort_url":"","year_url":"1317&1319","find_rule":"js:\r\n\r\nvar d=[];\r\n\nlet json=JSON.parse(getResCode()).data.list;\nfor(let i of json){\n    d.push({\n        pic_url:i.cover,\n        title:i.name,\n        url:'https://api.bookan.com.cn/voice/album/units?album_id='+i.id+'&page=fypage&num=20&order=1'\n    });\n}\nsetResult(d);","searchFind":"js:\r\n\r\nvar d=[];\r\n\nlet json=JSON.parse(getResCode()).data.list;\nfor(let i of json){\n    d.push({\n        pic_url:i.cover,\n        title:i.name,\n        url:'https://api.bookan.com.cn/voice/album/units?album_id='+i.id+'&page=fypage&num=20&order=1'\n    });\n}\nsetResult(d);","search_url":"https://es.bookan.com.cn/api/v3/voice/book?instanceId=25304&keyword=**&pageNum=fypage&limitNum=20","titleColor":"#ffff00ff","group":"②音频","detail_col_type":"text_1","detail_find_rule":"js:\r\n\r\nvar d=[];\r\n\nlet json=JSON.parse(getResCode()).data.list;\nfor(let i of json){\n    d.push({\n        title:i.title,\n        desc:'创建于'+i.created_at+'\\n'+'更新于'+i.updated_at+'▶️',\n        url:i.file\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.cxtuku.com%2F00%2F04%2F72%2Fb4189ce2315a.jpg&refer=http%3A%2F%2Fpic1.cxtuku.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1637387526&t=e14be9211e6257f56fb7a972ef9444dc"},{"last_chapter_rule":"","title":"TingFM","author":"小🔥星","version":6,"type":"music","url":"https://tingfm.com/region/fyAll","col_type":"text_center_1","class_name":"中央&cri&北京&天津&河北&山西&内蒙古&河南&湖北&湖南","class_url":"cnr&cri&bj&tj&hebei&shanxi&nmg&henan&hubei&hunan","area_name":"辽宁&吉林&黑龙江&上海&江苏&浙江&安徽&福建&江西&山东","area_url":"ln&jilin&hlj&sh&js&zj&ah&fj&jx&sd","sort_name":"陕西&甘肃&青海&宁夏&新疆&网络台","year_name":"广东&广西&海南&重庆&四川&贵州&云南&西藏","sort_url":"sx&gs&qh&nx&xj&web","year_url":"gd&gx&hainan&cq&sc&gz&yn&xz","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('通用解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\ntry{\nvar list = pdfa(html,'body&&.post-list');\nfor (var j in list) {\n  d.push({\n     title: pdfh(list[j], 'a&&Text'),\n     desc:pdfh(list[j], ''),\n     pic_url: parseDom(list[j], ''),\n     url: parseDom(list[j], 'a&&href')+lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"②音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/music/29.svg"},{"last_chapter_rule":"","title":"天天静听","author":"小🔥星","version":4,"type":"video","url":"http://speakel.com/songs/fyAll?page=fypage","col_type":"pic_1","class_name":"网络歌曲&经典老歌&伤感歌曲&新歌推荐&DJ舞曲","class_url":"wangluogequ&jingdianlaoge&shanggangequ&xingetuijian&djwuqu","area_name":"好听儿歌&轻音乐&英文歌曲&广场舞歌曲","area_url":"haoqingerge&qingyinyue&yingwengequ&guangchangwugequ","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.row&&a');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       pic_url: parseDom(list[j], 'img&&data-original')+ \"@Referer=\",\r\n       url: parseDom(list[j],'a&&href')\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"②音频","detail_col_type":"pic_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.row&&a');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       pic_url: parseDom(list[j], 'img&&data-original')+ \"@Referer=\",\n       url: parseDom(list[j],'a&&href')+\"#noRecordHistory#\"+ '@lazyRule=video&&src'\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"http://speakel.com/storage/images/music.png"},{"last_chapter_rule":"","title":"铜钟 - 在一处聆听所有音乐","author":"枫林雨殇","version":0,"type":"music","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://tonzhon.com/\",\n    desc: \"float&&100%\",\n    \n}])","searchFind":"js:\n var d = [];\n var list = JSON.parse(getResCode()).result.songs;\n for (var i in list) {\n     var j = list[i];\n     d.push({\n         title: j.name+'-『'+j.artists[0].name+\"』\",\n         img: j.artists[0].img1v1Url,\n         url: \"https://music.163.com/song/media/outer/url?id=\" + j.id + \".mp3\"\n     })\n }\n\nsetResult(d);","search_url":"https://apimusic.postudy.cn/search?offset=0&limit=30&keywords=**","group":"②音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/music/21.svg"},{"last_chapter_rule":"","title":"拾音人","author":"子丑寅卯","version":7,"type":"other","url":"http://www.shiyinren.com/fyAll/page/fypage","col_type":"icon_round_4","class_name":"歌手&MV&最新音乐","class_url":"singer&mv&song","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.nag&&.item');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: MY_URL.indexOf('song')>-1?parseDomForHtml(list[j], 'h4&&Text'):parseDomForHtml(list[j], 'img&&alt'),           \r\npic_url: parseDom(list[j], 'img&&data-original'),       \r\nurl: MY_URL.indexOf('mv')>-1?parseDom(list[j],'a&&href')+`@lazyRule=.js:'http://antiserver.kuwo.cn/anti.s?rid='+request(input).match(/MU.*url/)[0]+\"#isVideo=true#\"`:MY_URL.indexOf('song')>-1?parseDom(list[j],'a&&href')+`@lazyRule=.js:request(input).match(/http.*?\\\\.mp3/)[0]`:parseDom(list[j],'a&&href') +'#immersiveTheme#',\ncol_type: MY_URL.indexOf('song')>-1?'text_1':MY_URL.indexOf('mv')>-1?'avatar':'icon_round_4',\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: //var json = JSON.parse(getResCode());\nvar json = {};\r\neval('json=' + getResCode());\nvar res = {};\nvar list = json.abslist;\nvar items = list.map(data => ({\n    title: data.SONGNAME,\n    url:'http://antiserver.kuwo.cn/anti.s?type=convert_url&rid='+data.MUSICRID+'&format=mp3&response=url'+`@lazyRule=.js:request(input)`,\n    desc: data.ARTIST,\n    img: fetch('http://artistpicserver.kuwo.cn/pic.web?corp=kuwo&type=rid_pic&pictype=url&content=list&size=1000&rid=' + data.MUSICRID.replace('MUSIC_',''),{})\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"http://search.kuwo.cn/r.s?all=**&ft=music&itemset=web_2013&client=kt&pn=fypage@-1@*1@&rn=8&rformat=json&encoding=utf8","group":"②音频","detail_col_type":"movie_1_vertical_pic","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.nag&&.item');\n\nd.push({       \r\ntitle: parseDomForHtml(getResCode().replace(/\\/\\/imgcdn/g,'http://imgcdn'), '.author-info&&Html'),    \n//desc:pdfh(getResCode(),'.singer-thumb&&p&&Text'),       \r\n//pic_url: pd(getResCode(), '.singer-thumb&&img&&src'),       \ncol_type: 'rich_text',\nextra: {\n        textSize: 8,\n        click: true\n    }\n});\n\n\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h4&&Text'),           \r\npic_url: parseDom(getResCode(), '.singer-thumb&&img&&src'),       \r\nurl:parseDom(list[j],'a&&href')  +`@lazyRule=.js:request(input).match(/http.*?\\\\.mp3/)[0]`,\ncol_type: 'avatar'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://static.170mv.com/wp-content/themes/beetube/images/logo.png"},{"last_chapter_rule":"","title":"九酷音乐pc","author":"子丑寅卯","version":2,"type":"other","url":"https://www.9ku.com/fyAll.htm","col_type":"avatar","class_name":"抖音&热歌&新歌&&&&","class_url":"douyin/bang&music/t_m_hits&music/t_new&&&&","area_name":"老歌&80&70&90&粤语&闽南语&&&","area_url":"laoge/500shou&laoge/80&laoge/70&laoge/90&laoge/yueyu&laoge/minnanyu&&&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.mdBoxBd&&li');\nvar _x5 = $.toString(() => {\n    //fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)){\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isMusic=true#'\n        }\n    }\n});\n\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&Text'),            \r\n//pic_url:pdfh(request(parseDom(list[j],'a&&href')),'.t-i&&img&&src'),   \npic_url:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fgss0.baidu.com%2F-vo3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2Feac4b74543a982263a321aea8c82b9014b90eb08.jpg&refer=http%3A%2F%2Fgss0.baidu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638696961&t=ae5fb9bd8b4f42ebc659e12582ee3e5c',    \r\nurl: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.songList&&li');\n\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&Text'),            \r\n//pic_url:pdfh(request(parseDom(list[j],'a&&href')),'.t-i&&img&&src'),   \npic_url:'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fgss0.baidu.com%2F-vo3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fpic%2Fitem%2Feac4b74543a982263a321aea8c82b9014b90eb08.jpg&refer=http%3A%2F%2Fgss0.baidu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638696961&t=ae5fb9bd8b4f42ebc659e12582ee3e5c',    \r\nurl: parseDom(list[j], 'a&&href') \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://baidu.9ku.com/song/?key=**","group":"②音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar _x5 = $.toString(() => {\n    //fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)){\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isMusic=true#'\n        }\n    }\n});\n    d.push({       \n             title:'立即播放',\n               url: 'x5Rule://' + MY_URL+ '@' + _x5,\n          col_type:'text_center_1'\n    });\n\nres.data  =  d;\nsetHomeResult(res);","ua":"auto","preRule":"","pages":"[]","icon":"https://m.9ku.com/favicon.ico"},{"last_chapter_rule":"","title":"田园音乐网","author":"子丑寅卯","version":0,"type":"other","url":"http://www.tyqyyw.com/fyAll/page/fypage/","col_type":"movie_1_left_pic","class_name":"最新音乐&轻音乐&有声音乐&有声电台&音乐心情&专辑曲目&轻音乐MV&留言板&随机听音乐&FM电台","class_url":"&qingyinyue&yuansheng&diantai&shenghuo&wusun&mtv&about&random&fm","area_name":"3D音乐&伤感音乐&佛乐&八音盒&古风音乐&史上最优美的纯音乐&周杰伦&大自然音乐&小清新&庄重大气&异域风情&怀旧声音&悠扬的音乐&放松减压&新世纪&欢快愉悦&民谣&治愈系音乐&激情轻音&班得瑞&睡眠音乐&网络电台节目&胎教音乐&节奏&轻音乐MV&阳光音乐&静心音乐&魅惑电音","area_url":"tag/3d&tag/shanggan&tag/%e4%bd%9b%e4%b9%90&tag/bayinhe&tag/gufeng&tag/youmei&tag/%e5%91%a8%e6%9d%b0%e4%bc%a6&tag/daziran&tag/qingxin&tag/daqi&tag/yiyufengqing&tag/huaijiu&tag/youyang&tag/fangsong&tag/newage&tag/huankuai&tag/minyao&tag/zhiyu&tag/jiqing&tag/%e7%8f%ad%e5%be%97%e7%91%9e&tag/shuimian&tag/diantai&tag/taijiao&tag/%e8%8a%82%e5%a5%8f&tag/%e8%bd%bb%e9%9f%b3%e4%b9%90mv&tag/yangguang&tag/jingxin&tag/dianyin/","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '#post_container&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),       \r\ndesc: parseDomForHtml(list[j], '.entry_post&&Text'),       \r\npic_url: parseDom(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href') +`@lazyRule=.js:pdfh(request(input),'source&&src')`\r\n});\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '#post_container&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),       \r\ndesc: parseDomForHtml(list[j], '.entry_post&&Text'),       \r\npic_url: parseDom(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href') +`@lazyRule=.js:pdfh(request(input),'source&&src')`\r\n});\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://www.tyqyyw.com/page/fypage/?s=**","group":"②音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.tyqyyw.com/wp-content/uploads/2021/10/qq.jpg"},{"last_chapter_rule":"","title":"tik18","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://tiktok18.tv/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小姐姐视频","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.asys.vip/kuaishou//';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"广东电视","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://m.gdtv.cn/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"广州电视","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.gztv.com/tvfile/tv.html';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"360酷网","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.xewjc.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"激情四射","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.onezyz.xyz/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"爱情岛","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://vip.aqdz116.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"F搜AI","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://fsoufsou.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"必应AI","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://cn.bing.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"豌豆AI","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.wandou.pro/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"鸡盒盘","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://jihepan.top/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小纸条","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://u.gitcafe.net/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"丝袜","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://siwazyw.cc/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"美女套图网","author":"河边的海鸥","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://m.ck132.net/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"草榴社区","author":"","version":16,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://cl.8606x.xyz/index.php';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"黑料电影","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://dy18.fun/catalog?column=1&sort=1';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"9杀影院","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.9sha.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"3G壁纸","author":"","version":18,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://3gbizhi.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"老色专属表情包👿👿👿","author":"坦诚相待","version":20,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://yydstxt178.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"M搜AI","author":"","version":20,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://spot.murena.io/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                                \\\"spot.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"88影视","author":"","version":20,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://m.88hd.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"555","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.xawqxh.net/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"78模特","author":"","version":19,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://7kb.buzz/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"我的书架","author":"","version":19,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.wodeshujia.net/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"5G","author":"","version":19,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://5fp.buzz/h/%E5%A4%A7%E9%99%86/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"第一版主","author":"","version":19,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://yydstxt.cc/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"它仓","author":"","version":19,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://cthsck.cc/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI轻麦","author":"","version":50,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    //排除\\n    let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n    if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    let reg = /^[0-9]*$/;\\n    if (!reg.test(it)) {\\n        return -1;\\n    }\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    if (it > 1900 && it < 2100) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nlet _web = $.toString(() => {\\n    let urls = _getUrls();\\n    let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n    for (let k in urls) {\\n        if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[k]);\\n            return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n        }\\n    }\\n});\\n\\nlet web = getItem('web', '0') == \\\"1\\\";\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        if (web) {\\n            var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n            var extrax = {\\n                jsLoadingInject: true,\\n                id: it.href,\\n                blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n            };\\n        } else {\\n            var urlx = \\\"video://\\\" + it.href;\\n            var extrax = {\\n                id: it.href\\n            };\\n        }\\n        d.push({\\n            title: t,\\n            url: urlx,\\n            col_type: \\\"text_3\\\",\\n            extra: extrax\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    MY_URL = \\\"https://www.qimaitv.com/index.php?s=api&c=api&m=getplaylist&title=\\\" + s + \\\"&id=undefined&page=1\\\";\\n    let html = fetch(MY_URL, {\\n        headers: {\\n            \\\"X-Requested-With\\\": \\\"XMLHttpRequest\\\"\\n        }\\n    });\\n    let info = JSON.parse(html).info;\\n    let data = pdfa(info, \\\"body&&a\\\");\\n    //log(data);\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of data) {\\n        let t = pdfh(it, \\\"h4&&Text\\\");\\n        if (!t) {\\n            continue;\\n        }\\n        d.push({\\n            title: wrap(t, s),\\n            url: \\\"hiker://page/p?u=\\\" + base64Encode(pd(it, \\\"a&&href\\\")),\\n            col_type: \\\"text_1\\\",\\n            desc: (pdfa(it, \\\"a&&span\\\") || []).map(i => pdfh(i, \\\"Text\\\")).join(\\\" \\\"),\\n            pic_url: \\\"\\\",\\n            extra: {\\n                inheritTitle: false\\n            }\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: getItem('web', '0') == \\\"0\\\" ? \\\"视频嗅探\\\" : \\\"Web通免\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            if (getItem('web', '0') == \\\"0\\\") {\\n                setItem('web', '1')\\n            } else {\\n                setItem('web', '0')\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\"轻麦\\\",\\n        url: \\\"hiker://page/ysfx?r=\\\" + MY_RULE.title + \\\"##https://www.qimaitv.com/\\\",\\n        col_type: \\\"flex_button\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"广告拦截\",\"path\":\"ad\",\"rule\":\"海阔视界规则分享，当前分享的是：广告网址拦截￥ad_url_rule￥/ad/&&.gif&&.GIF&&/sh/to/\"},{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet ad = JSON.parse(fetch(\\\"hiker://page/ad\\\")).rule;\\nad = ad.split(\\\"￥\\\")[2];\\nlet blockRules = ad.split(\\\"&&\\\");\\nlog(blockRules);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: blockRules\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"萸","author":"","version":19,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://czhsck.cc/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"香仓","author":"","version":20,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://avhh.vip/xjzy/cn-guochanzipai.html';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"王仓库","author":"","version":20,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://ihhsck.cc/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"8k 电影","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.8kvod.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"91追剧","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.98ju.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"时光影院","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.shigys.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"球直播","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'http://www.zhibome.live/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"猫咪av","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.565b0d011b5c.com/index/home.html';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"③AI","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"GO影院","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"other","url":"http://www.aoob.top/index.php/vod/show/area/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.aoob.top/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff13b66a","group":"③X5","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nd.push({\n\t\t\ttitle: '',\n    desc:'320&&float',\n    url:'',\n    col_type: 'x5_webview_single'\n});\n\n//免嗅\nvar lazy = `@lazyRule=.js:var ht=parseDomForHtml(request(input,{}),'.embed-responsive&&script&&Html').replace(/player_.*?={/,'player_aaaa={');eval(ht);var url=decodeURIComponent(player_aaaa.url);if(url.search(/html/)>=0){var furl='https://okjx.cc/?url='+url;;refreshX5WebView(furl);'toast://切换X5播放！'}else{url}`\r\nvar html=fetch(parseDom(getResCode(), '.play-btn&&a&&href'),{});\r\n// 子\r\nvar des_desc = parseDomForHtml(getResCode(), 'head&&meta,1&&content');\r\n// 丑\r\nvar des_pic = parseDom(getResCode(), 'body&&.stui-content__thumb&&img&&data-original');\r\n// 寅\r\nvar tabs = parseDom(html, 'body&&.play-tab&&Html').match(/href=[\\s\\S]*?<\\/a/g);\r\n// 卯\r\nvar conts = parseDom(html, 'body&&.play-content&&Html').match(/class=\\\"stui-play__list[\\s\\S]*?<\\/ul>/g);\r\n\r\nd.push({\r\n\ttitle: '共有' + conts.length + '条线路',\r\n desc: des_desc.split(':')[1],\r\n\tpic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic'\r\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle:tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\turl:parseDom(list[j],'a&&href')+lazy,col_type: list.length >3?'text_3':'text_2'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TtSUKg.png"},{"last_chapter_rule":"","title":"教育","author":"Quan","version":1,"type":"tool","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"③①👨‍🎓教育","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/b0d12f863010a1c2fa08dade19871bc9.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M512.18944%20599.381333a153.472%20153.472%200%200%201-53.28-8.757333L308.274773%20532.576h-73.781333v90.389333a83.2%2083.2%200%200%200%2046.154667%2070.4l182.4%2079.392a132.928%20132.928%200%200%200%2092.384%200.106667l184.384-79.616a82.976%2082.976%200%200%200%2046.186666-70.293333v-90.389334h-81.429333l-133.493333%2056.277334a155.733333%20155.733333%200%200%201-58.88%2010.517333z%20m0%200%22%20fill%3D%22%231C87FF%22%20%2F%3E%3Cpath%20d%3D%22M104.744107%20414.602667l363.242666%20139.968a143.690667%20143.690667%200%200%200%2093.344-1.482667l346.890667-146.229333v215.733333l-21.429333%2071.466667h61.973333l-22.176-72.256V398.144h-0.618667c14.933333-10.325333%2011.488-23.210667-10.666666-31.136L562.386773%20241.429333a159.402667%20159.402667%200%200%200-94.528%200.832l-362.944%20136.533334c-26.026667%209.792-26.08%2025.834667-0.16%2035.818666z%20m0%200%22%20fill%3D%22%231C87FF%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"美食","author":"Quan","version":1,"type":"video","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"③②🍜美食","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/38f1f6a3fdcb39f00d3bb814609edbe3.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M232.254104%20787.756088a15.929994%2015.929994%200%200%201-15.929994-15.929994V737.930106a15.590994%2015.590994%200%200%201%202.032999-6.778997l50.841981-98.632964a15.929994%2015.929994%200%200%201%2022.029992-6.778997l128.121952%2070.839974a15.929994%2015.929994%200%201%201-15.591994%2028.131989l-114.223957-63.043977-41.350985%2080.669971v29.486989a15.929994%2015.929994%200%200%201-15.929994%2015.929994z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M135.99314%20691.834123a15.929994%2015.929994%200%200%201-15.929995-15.929994v-36.266986a15.929994%2015.929994%200%200%201%206.778998-13.218995l121.679955-84.057969a15.929994%2015.929994%200%200%201%2018.642993%200l113.206958%2081.34697h30.843988a15.929994%2015.929994%200%201%201%200%2031.859988H374.950051a16.269994%2016.269994%200%200%201-9.489997-3.049999l-108.123959-78.634971-106.766961%2074.228972v27.79299a15.929994%2015.929994%200%200%201-14.574994%2015.929994z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M411.216037%20602.014157h-25.41999a15.929994%2015.929994%200%200%201-11.185996-4.744999L272.927089%20495.586196l-69.483974-25.081991-101.682963%2024.064991a15.929994%2015.929994%200%200%201-7.456997-31.182988l106.089961-22.709992a15.929994%2015.929994%200%200%201%209.150996%200l76.601972%2027.45499a16.269994%2016.269994%200%200%201%205.761998%203.727999l99.309963%2097.954964h18.641993a15.929994%2015.929994%200%201%201%200%2032.199988z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M421.724034%20563.036171a15.929994%2015.929994%200%200%201-10.507997-3.728999l-91.175966-79.31297-33.893987-24.064991L156.330132%20388.140236a15.929994%2015.929994%200%200%201%2014.913994-28.470989l130.831952%2067.788974h2.033999l33.893988%2025.419991%2092.192965%2079.313971a15.929994%2015.929994%200%200%201-10.506996%2028.131989z%20m370.804862%20224.719917a15.929994%2015.929994%200%200%201-15.929994-15.929994v-29.488989l-41.351985-80.668971-113.545958%2062.704977a15.929994%2015.929994%200%200%201-15.591994-28.131989L734.229918%20625.400148a15.929994%2015.929994%200%200%201%2022.031991%206.779997l50.840981%2098.631964a15.590994%2015.590994%200%200%201%201.695%207.456997v33.893987a15.929994%2015.929994%200%200%201-16.269994%2015.591995z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M888.44986%20691.834123a15.929994%2015.929994%200%200%201-15.929994-15.929994v-27.79299l-105.411961-73.889972-108.12296%2078.295971a15.929994%2015.929994%200%200%201-9.489996%203.049999h-35.928987a15.929994%2015.929994%200%200%201%200-31.859988h30.843989l113.206958-81.34697a15.929994%2015.929994%200%200%201%2018.641993%200l119.986955%2084.396968a15.929994%2015.929994%200%200%201%206.778998%2013.218996v35.927986a15.929994%2015.929994%200%200%201-14.574995%2015.929994z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M638.986953%20602.014157h-25.419991a15.929994%2015.929994%200%200%201%200-32.199988h18.640993l99.309964-97.954964a16.269994%2016.269994%200%200%201%205.762997-3.727999l77.617972-27.45399a15.929994%2015.929994%200%200%201%209.151996%200l105.410961%2025.419991a15.929994%2015.929994%200%201%201-7.455997%2031.182988l-101.683962-24.064991-69.482975%2025.081991L649.154949%20599.980157a15.929994%2015.929994%200%200%201-10.167996%202.034z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M602.719966%20563.036171a15.929994%2015.929994%200%200%201-10.506996-28.132989l92.191966-79.312971%2033.894987-25.419991h2.034l130.831951-67.789974a15.929994%2015.929994%200%200%201%2014.913995%2028.471989L736.263917%20458.64021l-33.893988%2024.064991-91.514966%2078.973971a15.929994%2015.929994%200%200%201-8.134997%201.355999z%20m-404.699849-233.193913c-24.742991-17.285994-35.588987-44.401984-24.403991-60.331978%2010.845996-15.929994%2040.334985-14.913994%2065.077975%201.693999L451.212023%20420.340224c24.742991%2017.285994%2035.588987%2044.401984%2024.403991%2060.331978-11.184996%2015.929994-40.334985%2014.913994-65.077976-2.372999z%20m628.741766%200c24.742991-17.285994%2035.589987-44.401984%2024.403991-60.331978-11.184996-15.929994-40.333985-14.913994-65.076976%202.371999L573.569977%20421.018224c-24.742991%2017.285994-33.894987%2044.401984-24.403991%2060.331977%2011.184996%2015.929994%2040.333985%2014.912994%2065.076976-2.372999z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M337.326065%20190.536309c-24.742991%2090.836966-85.074968%20154.219943-131.509951%20141.339948s-65.754976-97.616964-40.672985-188.79293%2083.718969-154.557943%20131.509951-141.339948h2.372999l-38.300986%20140.323948a15.590994%2015.590994%200%200%200%200%2011.523996%2015.590994%2015.590994%200%200%200%209.489997%207.116997%2015.251994%2015.251994%200%200%200%2018.641993-10.845996L322.75207%2022.080372c27.79299%2033.555988%2033.893987%2098.971963%2014.573995%20168.455937z%20m349.79087%200c25.081991%2091.175966%2084.057969%20154.557943%20131.509951%20141.339948s66.094975-97.616964%2041.012985-188.79293S775.581902-11.474616%20726.77392%201.743379V2.760379l38.299986%20139.306948a15.251994%2015.251994%200%200%201-10.845996%2018.979993%2015.251994%2015.251994%200%200%201-18.641993-10.845996L701.69193%2022.420372c-27.45499%2033.216988-33.555988%2098.632963-14.574995%20168.116937zM632.207955%20657.940136c-5.422998-164.726939-38.978986-299.626889-83.719969-347.417871H477.310013c-44.739983%2047.790982-77.956971%20182.690932-83.718969%20347.417871z%20m-5.422998%20135.916949l-9.489996%2020.674993%204.744998%2053.21498-12.540995%2020.674992-4.406999%2046.435983L571.536978%201024H454.262021l-32.537987-89.141967-5.423998-46.435983-12.539996-20.674992%204.744998-53.21498-9.489996-20.674993%209.489996-55.925979-9.489996-23.047991%203.388999-21.014992%206.099997-35.927987h208.789923l5.762998%2035.927987%203.727998%2021.014992-9.489996%2023.047991%209.489996%2055.925979z%22%20fill%3D%22%23EE3C2E%22%20%2F%3E%3Cpath%20d%3D%22M364.780055%20979.598016A44.401984%2044.401984%200%200%200%20409.184038%201024h58.975978a44.401984%2044.401984%200%200%200%2044.401984-44.401984%2044.401984%2044.401984%200%200%200-44.401984-44.400983h-58.975978a44.401984%2044.401984%200%200%200-44.401983%2044.400983z%22%20fill%3D%22%23EE3C2E%22%20%2F%3E%3Cpath%20d%3D%22M512.9%20979.598016A44.739983%2044.739983%200%200%200%20557.299983%201024h58.976978a44.739983%2044.739983%200%200%200%2044.400984-44.401984%2044.401984%2044.401984%200%200%200-44.400984-44.400983H557.299983a44.739983%2044.739983%200%200%200-44.739983%2044.400983z%22%20fill%3D%22%23EE3C2E%22%20%2F%3E%3Cpath%20d%3D%22M548.488986%20310.522265L647.45995%2066.820355h-3.728999l-110.834959%20243.69991h15.591994z%20m-31.521988%200h10.506996l-3.389998-85.752968h-4.405999l-2.710999%2085.752968z%20m-39.995985%200L378.00005%2066.820355h3.727998l110.834959%20243.69991H476.970013z%20m31.521988%200h-10.506996l3.389999-85.752968h4.405998l2.710999%2085.752968z%22%20fill%3D%22%23D43C2E%22%20%2F%3E%3Cpath%20d%3D%22M526.117995%20357.635247a12.539995%2012.539995%200%201%200%2025.08199%200%2012.539995%2012.539995%200%201%200-25.08199%200zM474.260014%20357.635247a12.539995%2012.539995%200%201%200%2025.081991%200%2012.539995%2012.539995%200%201%200-25.081991%200z%22%20fill%3D%22%23333333%22%20%2F%3E%3Cpath%20d%3D%22M623.056959%20693.868123H402.404041l6.099997-35.927987h208.789923l5.762998%2035.927987z%20m3.727998%2099.988962h-227.769915l9.489996%2020.674993h208.789923l9.489996-20.674993z%20m0-78.97397h-227.769915l9.489996%2023.047991h208.789923l9.489996-23.047991z%20m-4.744998%20152.863943H403.76004l12.539996%2020.674992H609.499964l12.539995-20.674992z%22%20fill%3D%22%23E0A182%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"软件","author":"Quan","version":1,"type":"tool","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"③③📱软件","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/320c468ab182f180ddf70dba849261c0.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M934.4%20203.17184V398.4384c0%2062.60736-50.96448%20113.5616-113.57184%20113.5616H625.5616c-62.60736%200-113.5616-50.95424-113.5616-113.5616V203.1616c0-62.60736%2050.95424-113.5616%20113.5616-113.5616H820.8384c62.60736%200%20113.5616%2050.95424%20113.5616%20113.5616z%20m-337.92%20645.81632a57.31328%2057.31328%200%200%200%2057.26208%2057.2416h195.24608a57.31328%2057.31328%200%200%200%2057.2416-57.2416V653.74208a57.31328%2057.31328%200%200%200-57.2416-57.26208H653.74208a57.31328%2057.31328%200%200%200-57.26208%2057.26208v195.24608zM962.56%20653.74208v195.24608C962.56%20911.60576%20911.60576%20962.56%20848.98816%20962.56H653.74208c-62.6176%200-113.58208-50.95424-113.58208-113.57184V653.74208c0-62.6176%2050.96448-113.58208%20113.58208-113.58208h195.24608C911.60576%20540.16%20962.56%20591.12448%20962.56%20653.74208z%20m-450.56-28.16v195.24608c0%2062.60736-50.95424%20113.5616-113.57184%20113.5616H203.1616c-62.60736%200-113.5616-50.95424-113.5616-113.5616V625.5616c0-62.60736%2050.95424-113.5616%20113.5616-113.5616H398.4384C461.04576%20512%20512%20562.95424%20512%20625.5616zM117.76%20370.25792a57.32352%2057.32352%200%200%200%2057.25184%2057.26208H370.2784a57.32352%2057.32352%200%200%200%2057.2416-57.26208V175.0016a57.31328%2057.31328%200%200%200-57.2416-57.2416H175.0016a57.31328%2057.31328%200%200%200-57.2416%2057.2416V370.2784zM483.84%20175.0016V370.2784c0%2062.62784-50.96448%20113.5616-113.57184%20113.5616H175.0016C112.39424%20483.84%2061.44%20432.896%2061.44%20370.2784V175.0016C61.44%20112.39424%20112.39424%2061.44%20175.01184%2061.44h195.24608c62.6176%200%20113.58208%2050.95424%20113.58208%20113.57184z%22%20fill%3D%22%23179BFF%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"eFun","author":"小白","version":1,"type":"video","url":"https://www.pili5.cn/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3","class_name":"全部&电影&连续剧&综艺&动漫","class_url":"&1&2&3&4","area_name":"全部&大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"&大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".myui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.pili5.cn/vodsearch/-------------.html?wd=**","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.sketch&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.pili5.cn'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=.embed-responsive&&script&&Html.js:eval(input)；；player_aaaa.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"title":"哈喽","author":"佐手丶&小白","version":0,"url":"http://www.125hl.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-pannel_bd&&li;h3&&Text;a&&href;.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"http://www.125hl.com/vodsearch/**----------fypage---.html","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n// 子\nvar des_desc = parseDom(getResCode(), 'body&&.desc--span&&Text').replace(getUrl()+\"/\",\"\");\n// 丑\nvar des_pic = parseDom(getResCode(), 'body&&.stui-content__thumb&&img&&data-original');\n// 寅\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"stui-pannel__head bottom-line[\\s\\S]*?<\\/h3/g);\n// 卯\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\n\nd.push({\ntitle: '共有' + conts.length + '条线路',\ndesc: des_desc,\npic_url: des_pic,\nurl: getUrl(),\ncol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\nvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\nif (list != null) {\nd.push({\ntitle: tabs[i].split(\">\")[5].split(\"<\")[0],\ncol_type: 'text_1'\n});\nfor (var j = 0; j < list.length; j++) {\nd.push({\ntitle: list[j].split('>')[1].split('<')[0],\nurl: 'http://www.125hl.com' + list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=.stui-player__video&&script&&Html.js:eval(input);player_aaaa.url'\n});\n}\n}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#f20c00"},{"title":"第三","author":"小白","version":0,"url":"http://www.03sj.com/search.php?page=fypage&searchtype=5&tid=fyclass&year=fyyear&area=fyarea","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&香港&台湾&日本&韩国&欧美&泰国&其他","area_url":"大陆&香港&台湾&日本&韩国&欧美&泰国&其他","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.detail-sketch&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.stui-vodlist__thumb&&img&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&.container,1&&Html').match(/\"more[\\s\\S]*?<\\/h2/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.03sj.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);now.indexOf('m3u8')>-1?now:now.split('/share')[0]+fetch(now,{}).match(/main = \"(.*?)\"/)[1]`\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#f20c00"},{"last_chapter_rule":"","title":"童话","author":"小白","version":0,"type":"video","url":"https://m.tonghuacun.com/list/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作&喜剧&剧情&科幻&恐怖&爱情&战争&惊险&冒险","area_url":"5&6&7&8&9&10&11&12&28","sort_name":"","year_name":"内地&港剧&台剧&韩剧&美剧&日剧&海外剧","sort_url":"","year_url":"13&14&15&16&31&32&33","find_rule":".plist&&li;a&&title;a&&img&&src;.set&&Text;a&&href","searchFind":".plist&&li;a&&title;a&&href;.set&&Text;*;a&&img&&src","search_url":"https://m.tonghuacun.com/search.php?searchword=**","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.intro&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.pic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/class=\"c\"><[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"fjlist[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://m.tonghuacun.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&#player-box&&script&&Html.js:eval(input)；；now'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"bt4k","author":"小白","version":0,"url":"http://www.bt4kyy.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.name&&Text'),\r\n       desc: parseDomForHtml(list[j], '.rgba1&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&img&&src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.li_li;p,0&&Text;a&&href;p,1&&Text;.des&&Text;a&&img&&src","search_url":"http://www.bt4kyy.com/search1.php?page=fypage&searchword=**","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.des_xy&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.detail_img&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/ptit[\\s\\S]*?<\\/font/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stab_list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.bt4kyy.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.player&&script&&Html.js:eval(input)；；var jssp = now.split(\"\\/share\")[0];var json = fetch(now,{});now.indexOf(\"m3u8\")>-1?now:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#f20c00"},{"title":"青柠檬","author":"发粪涂墙&小白","version":0,"url":"https://www.qnmtv.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":".m-list&&li;a&&title;img&&data-original;.label&&Text;a&&href","searchFind":".m-list&&li;a&&title;a&&href;.label&&Text;.des&&Text;img&&data-original","search_url":"https://www.qnmtv.com/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.intro-desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazy&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"mod-inner-head[\\s\\S]*?<\\/div/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"juji-list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.qnmtv.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.playBox&&script&&Html.js:eval(input)；；decodeURIComponent(base64Decode(player_aaaa.url))'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"爱我","author":"小白","version":0,"url":"http://www.91aiwo.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&香港&台湾&日本&韩国&欧美&泰国&其他","area_url":"大陆&香港&台湾&日本&韩国&欧美&泰国&其他","sort_name":"","year_name":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.stui-vodlist__thumb&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&.nav-tabs&&Html').match(/\"#down[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://www.91aiwo.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);now.indexOf('m3u8')>-1?now:now.split('/share')[0]+fetch(now,{}).match(/main = \"(.*?)\"/)[1]`\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#f20c00"},{"title":"吾爱2","author":"小白","version":0,"url":"https://www.wuaidy.com/show/fyclass-fyarea-------fypage---fyyear.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； MI 9 Build/RKQ1.200826.002；； wv)","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"body&&.col-lg-8;a&&title;a&&data-original;.pic-text&&Text;a&&href","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://www.wuaidy.com/search/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； MI 9 Build/RKQ1.200826.002；； wv)","titleColor":"#ff228be6","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.sketch&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/data-toggle=[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.wuaidy.com'+list[j].split('href=\"')[1].split('\"')[0]+ '@lazyRule=.embed-responsive&&script&&Html.js:eval(input)；；player_data.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff228be6"},{"firstHeader":"class","title":"789","author":"小白","version":1,"url":"https://www.789dianying.com/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&剧情片&战争片","area_url":"6&7&8&9&10&11","sort_name":"","year_name":"国产剧&香港路&台湾剧","sort_url":"","year_url":"13&14&15","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".stui-vodlist&&li;a&&title;a&&href;.pic-text&&Text;*;.lazyload&&data-original","search_url":"https://www.789dianying.com/index.php/vod/search.html?wd=**","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.stui-content__desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"more[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[3].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://www.789dianying.com'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.embed-responsive&&script&&Html.js:eval(input)；；player_aaaa.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#f20c00"},{"title":"红枫","author":"小白","version":0,"url":"http://dy.yc028.top/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href","searchFind":"body&&.searchlist_item;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"http://dy.yc028.top/index.php/vod/search.html?wd=**","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.desc&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.vodlist_thumb&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&.play_source_tab&&Html').match(/\"iconfont[\\s\\S]*?<\\/a/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&.play_source&&Html').match(/\"playlist_full[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[2].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://dy.yc028.top'+list[j].split('href=\"')[1].split('\"')[0]+'@lazyRule=html&&.embed-responsive&&script&&Html.js:eval(input)；；player_data.url'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#f20c00"},{"firstHeader":"class","title":"电影首发","author":"小白","version":1,"url":"https://www.dysf.cc/vodshow/fyclass-fyarea-------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&动漫&综艺","class_url":"1&2&4&3","area_name":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","area_url":"大陆&香港&台湾&法国&美国&英国&日本&韩国&德国&泰国&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),\n            pic_url: parseDom(list[i], 'a&&data-original'),\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),\n            url: parseDom(list[i], 'a&&href')\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2--a--span&&Text!　　;.lazyload&&data-original.js:\"http://www.kanju77.com\"+input\n","search_url":"https://www.dysf.cc/vodsearch/**----------fypage---.html","titleColor":"#ff228be6","group":"③修规则","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    desc: '240&&float',\n    col_type: 'x5_webview_single'\n});\n\n//动态解析\ntry {\n    var lazy = `@lazyRule=body&&.embed-responsive&&script&&Html.js:eval(input);if(player_aaaa.url.indexOf('.html')==-1){player_aaaa.url}else{refreshX5WebView('https://vip.parwix.com:4433/player/?url='+player_aaaa.url);'toast://缓冲中……'}`;\n} catch(e) {}\n\n//详情\ntry {\n    var Rule = MY_URL+`@rule=js:let res={};let d=[];let html=getResCode();let otherInfo=parseDomForArray(html,'.myui-content__detail&&p');for(let i=0;i<otherInfo.length-1;i++){if(i==0){let setInfo=parseDomForHtml(otherInfo[i],'p&&Text').match(/(分类：.*)(地区：.*)(年份：.*)/);for(let j=1;j<setInfo.length;j++){d.push({title:setInfo[j],col_type:'long_text'})}}else{d.push({title:parseDomForHtml(otherInfo[i],'p&&Text'),col_type:'long_text'})}}d.push({title:'简介：'+parseDomForHtml(html,'body&&.data,-1&&Text').replace(/　/g,''),col_type:'long_text'});res.data=d;setResult(res);`;\n} catch(e) {}\n\n//简介\ntry {\n    var des_desc = parseDomForHtml(html, 'body &&.data,-1&&Text').replace(/　/g, '');\n} catch(e) {}\n\n//封面\ntry {\n    var des_pic = parseDom(html, 'body&&.lazyload&&data-original');\n} catch(e) {}\n\n//线路列表\nvar tabs = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//播放列表\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\n\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: des_desc,\n    pic_url: des_pic,\n    url: Rule,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfor (var i in tabs) {\n\n    //线路名称\n    try {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'li&&Text'),\n            col_type: 'long_text'\n        });\n    } catch(e) {}\n\n    //选集列表\n    var list = parseDomForArray(conts[i], 'ul&&li');\n\n    for (var j in list) {\n        //选集名称以及播放链接\n        try {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2 ? 'text_3': 'text_2'\n            });\n        } catch(e) {}\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ff228be6"},{"title":"速播","author":"小白","version":0,"url":"https://www.subofm.com/index.php/vod/show/area/fyarea/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"https://www.subofm.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#f20c00","group":"③修规则","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    desc: '240&&float',\n    col_type: 'x5_webview_single'\n});\n\n//动态解析\ntry {\n    var lazy = `@lazyRule=.player_video&&script&&Html.js:eval(input);if(player_aaaa.url.indexOf('.html')==-1){var jssp = player_aaaa.url.split(\"\\/share\")[0];var json = fetch(player_aaaa.url,{});player_aaaa.url.indexOf(\"m3u8\")>-1?player_aaaa.url:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]}else{refreshX5WebView('https://vip.parwix.com:4433/player/?url='+player_aaaa.url);'toast://缓冲中……'}`;\n} catch(e) {}\n\n//详情\ntry {\n    var Rule = MY_URL+`@rule=js:let res={};let d=[];let html=getResCode();let otherInfo=parseDomForArray(html,'.content_detail&&ul');for(let i=0;i<otherInfo.length-1;i++){if(i==0){let setInfo=parseDomForHtml(otherInfo[i],'.data&&Text').match(/(分类：.*)(地区：.*)(年份：.*)/);for(let j=1;j<setInfo.length;j++){d.push({title:setInfo[j],col_type:'long_text'})}}else{d.push({title:parseDomForHtml(otherInfo[i],'.data,1&&Text'),col_type:'long_text'})}}d.push({title:'简介：'+parseDomForHtml(html,'.data,-2&&Text').replace(/　/g,''),col_type:'long_text'});res.data=d;setResult(res);`;\n} catch(e) {}\n\n//简介\ntry {\n    var des_desc = parseDomForHtml(html, '.content_desc&&Text').replace(/　/g, '');\n} catch(e) {}\n\n//封面\ntry {\n    var des_pic = parseDom(html, '.lazyload&&data-original');\n} catch(e) {}\n\n//线路列表\nvar tabs = parseDomForArray(html, '.play_source_tab&&a');\n\n//播放列表\nvar conts = parseDom(getResCode(), '.container&&Html').match(/\"playlist_notfull[\\s\\S]*?<\\/ul>/g);;\n\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: des_desc,\n    pic_url: des_pic,\n    url: Rule,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfor (var i in tabs) {\n\n    //线路名称\n    try {\n        d.push({\n            title: parseDomForHtml(tabs[i], 'Text'),\n            col_type: 'long_text'\n        });\n    } catch(e) {}\n\n    //选集列表\n    var list = parseDomForArray(conts[i], 'ul&&li');\n\n    for (var j in list) {\n        //选集名称以及播放链接\n        try {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2 ? 'text_3': 'text_2'\n            });\n        } catch(e) {}\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#f20c00"},{"title":"哇有","author":"入戏太深&路遥&小白","version":0,"url":"https://m.wayoutv.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&2&3&4","area_name":"动作&喜剧&爱情&科幻&恐怖&剧情&战争&动画","area_url":"6&7&8&9&10&11&12&24","sort_name":"警告：与视频内容无关的文字信息均属诈骗信息，请勿相信和打开，切记切记！！！","year_name":"国剧&韩剧&日剧&港剧&台剧&泰剧&美剧&海外剧","sort_url":"","year_url":"13&15&21&14&20&22&16&23","find_rule":".vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;a&&data-original","search_url":"https://www.wayoutv.com/vodsearch/**----------fypage---.html","titleColor":"#f20c00","group":"③修规则","detail_col_type":"movie_1","detail_find_rule":"js:\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n\n//特别注意：视频顶部滚动的文字信息均属诈骗信息，请勿相信和打开，切记切记！！！\n\n\nvar res = {};\nvar d = [];\nvar html = getResCode(); \nvar tabs = parseDomForArray(html, '.play_source_tab&&a'); \nvar conts = parseDomForArray(html, 'body&&.playlist_notfull,1:');\nfor (var i = 0; i < conts.length; i++) { \n\tvar list = parseDomForArray(conts[i],\"ul&&a\"); \n\tif (list != null) { \n\t\td.push({ \n\t\t\ttitle: parseDomForHtml(tabs[i],\"Text\"), \n\t\t\tcol_type: 'text_1' \n\t\t}); \n\t\tfor (var j = 0; j < list.length; j++) { \n\t\t\td.push({ \n\t\t\t\ttitle: parseDomForHtml(list[j],\"Text\"), \n\t\t\t\turl: 'https://m.wayoutv.com' + parseDomForHtml(list[j],\"a&&href\")+'@lazyRule=.embed-responsive&&script&&Html.js:eval(input)；；decodeURIComponent(base64Decode(player_aaaa.url))',\ncol_type: list.length >3?'text_3':'text_2' \n\t\t\t}); \n\t\t} \n\t} \n} \nres.data = d; \nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#f20c00"},{"last_chapter_rule":"","title":"嗅觉转换器","author":"小棉袄🌞","version":7,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nd.push({\n    title: '',\n    desc: \"搜索规则\",\n    col_type: 'input',\n    extra: {\n        id: \"xj-s\",\n        onChange: $.toString(() => {\n            if (input != \"\") {\n                let s = fetch(\"hiker://home\");\n                let rules = JSON.parse(s);\n                rules = rules.filter(i => i.title && i.title.includes(input));\n                let list = rules.map(it => {\n                    return {\n                        title: it.title,\n                        url: $(\"#noLoading#\").lazyRule((t) => {\n                            let mem = storage0.getItem(\"d\", []);\n                            for (let i in mem) {\n                                if (t == mem[i]) {\n                                    delete mem[i];\n                                    break\n                                }\n                            }\n                            if (mem.length > 10) {\n                                delete mem[0];\n                            }\n                            mem.push(t);\n                            //log(mem);\n                            storage0.setItem(\"d\", mem);\n                            let ru = JSON.parse(fetch(\"hiker://home@\" + t));\n                            let r = {\n                                title: ru.title,\n                                url: ru.url,\n                                rule: ru.find_rule,\n                                interceptor: ru.searchFind == null || ru.searchFind == \"\" ? ru.search_url : \"\",\n                                ua: ru.ua,\n                                pages: ru.pages,\n                                col_type: ru.col_type\n                            }\n                            if (ru.detail_find_rule && ru.detail_find_rule.length > 0) {\n                                r.nextRule = ru.detail_find_rule;\n                                r.nextColType = ru.detail_col_type;\n                            }\n                            if (ru.preRule && ru.preRule.length > 0) {\n                                r.preRule = ru.preRule;\n                            }\n                            let txt = \"嗅觉浏览器￥mini-program￥\" + JSON.stringify(r);\n                            log(txt);\n                            let s1 = sharePaste(txt, \"云剪贴板6\");\n                            return \"copy://\" + s1 + \"\\n\\n嗅觉小程序：\" + r.title;\n                        }, it.title),\n                        col_type: \"text_3\",\n                        extra: {\n                            cls: \"xj-b\"\n                        }\n                    }\n                });\n                deleteItemByCls(\"xj-b\");\n                addItemAfter(\"xj-s\", list);\n            } else {\n\n            }\n        }),\n        titleVisible: false,\n        textSize: 13,\n        defaultValue: getMyVar('title', ''),\n    },\n});\n\nlet r = storage0.getItem(\"d\", []);\n//log(r);\nif (r.length > 0) {\n    for (let it of r) {\n        if (it == null) continue\n        d.push({\n            title: it,\n            url: $(\"#noLoading#\").lazyRule((t) => {\n                let ru = JSON.parse(fetch(\"hiker://home@\" + t));\n                let r = {\n                    title: ru.title,\n                    url: ru.url,\n                    rule: ru.find_rule,\n                    interceptor: ru.searchFind == null || ru.searchFind == \"\" ? ru.search_url : \"\",\n                    ua: ru.ua,\n                    pages: ru.pages,\n                    col_type: ru.col_type\n                }\n                if (ru.detail_find_rule && ru.detail_find_rule.length > 0) {\n                    r.nextRule = ru.detail_find_rule;\n                    r.nextColType = ru.detail_col_type;\n                }\n                if (ru.preRule && ru.preRule.length > 0) {\n                    r.preRule = ru.preRule;\n                }\n                let s1 = sharePaste(\"嗅觉浏览器￥mini-program￥\" + JSON.stringify(r), \"云剪贴板6\");\n                return \"copy://\" + s1 + \"\\n\\n嗅觉小程序：\" + r.title;\n            }, it),\n            col_type: \"text_3\",\n            extra: {\n                cls: \"xj-b\"\n            }\n        })\n    }\n\n}\n\n\nd.push({\n    title: \"使用说明：在海阔视界里面创建规则，解析规则对应嗅觉小程序的rule，链接对应url，名称对应title，搜索链接对应interceptor，ua对应ua，子页面对应子页面，二级对应详情页，预处理对应预处理，根据这个对应关系，可以快速在海阔视界编辑规则，然后转换导入给嗅觉浏览器\\n\" +\n        \"注意：因为嗅觉不支持分类、搜索等规则，因此不要转换不支持的规则，推荐在海阔视界维护规则，可以使用高亮模式\",\n    col_type: \"rich_text\",\n    extra: {\n        textSize: 16\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff01bfa5"},{"last_chapter_rule":"","title":"$扩展白嫖","author":"道长","version":9,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlog(getAppVersion());\nlog('当前根目录:'+$.getRoot());\n//$.setRoot('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/');\n//log($.getRoot());\nlog($.url('dr.js'));\nvar d=[];\r\n//https://hjdhnx.coding.net/api/user/hjdhnx/project/hiker/shared-depot/dr/git/blob/master/js/dr.js\nif(getAppVersion()>=3196){\n//log(typeof($.rc));\n$.rc('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/dr.js');\nd.push({\n    title:'测试lazyRule',\n    url:$().lazyRule(()=>{\n        $.rc('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/dr.js');\n       // log($.getRoot());\n        log($.url('dr.js'));\n        return $(JSON.stringify(version),'执行后的内容').input(()=>{\n            \n        })\n    }),\n    col_type:'text_1'\n});\nd.push({\n    title:JSON.stringify(version),\n    col_type:'long_text'\n});\nsetResult(d);\n}else{\n    setResult([{\n        title:'视界版本号3196以上可用，当前:'+getAppVersion()\n    }])\n}","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"rc('hiker://files/rules/js/$hiker.js',-1);\n//$.setRoot('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/');\n$.setRoot();","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"$预处理","author":"道长","version":1,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nlet libs=$.getLib();\nlog(libs);\nlog(config.lib.dr);\n$.rc(config.lib.dr);\nd.push({\n    title:'一种相对文件管理的预处理',\n    col_type:'text_1',\n});\nd.push({\n    title:JSON.stringify(version),\n    col_type:'long_text'\n})\nsetResult(d)","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"/*\nrc(\"hiker://files/rules/js/$hiker.js\", -1);\n//$.setRoot('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/');\n$.setRoot();\n$.setLib({\n  lsg: \"localStorage.js\", //本地储存\n  file: \"File.js\", //文件os\n  fileSelect: \"fileSelect.js\", //文件选择器\n  dt: \"categories-header.js\", //动态分类\n  dr: \"dr.js\", //dr模板依赖\n  drpre: \"预处理.js\", //dr模板预处理\n  drup: \"更新.js\", //dr模板自动更新\n  drmatch: \"自动模板匹配.js\", //dr模板自动模板匹配\n  drm: \"dr模板.js\", //dr模板小程序\n  cms: \"zyw.js\", //cms模板依赖\n  cmspre: \"资源网预处理.js\", //cms预处理\n  cmsm: \"cms.js\", //cms模板小程序\n  libcheck: \"依赖检测.js\", //dr检测依赖\n  ruleEditor: \"ruleEditor.js\", //写页源神器小程序\n  houseLazy: \"houseLazy.js\", //仓库通免\n  lazy: \"lazy.js\", //香免\n  sub: \"subscribe.js\", //道德经订阅\n  hikerUi: \"hikerUi.js\", //海阔组件依赖\n});\n*/\n$.require('hiker://page/libs?rule=道长仓库Pro')","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"CMS外挂","author":"道长","version":1,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nd.push({\n    title:'cms外挂-提取为聚影接口',\n    url:'hiker://empty' ,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: '来一个',\n    url:$.toString(()=>{\n    putMyVar('path','hiker://files/rules/dzHouse/ruleCache/用心资源.json');\n    refreshPage(false);\n}) ,\n    col_type: \"input\",\n    desc: \"输入cms合集数据路径\",\n    pic_url: \"\",\n    extra:{\n        defaultValue:getMyVar('path',''),\n        onChange:'putMyVar(\"path\",input)',\n        height:2,\n        type:'textarea'\n    }\n});\nd.push({\n    title:'打开编辑' ,\n    url:$('#noLoading#').lazyRule(()=>{\n        if(/^hiker:|^file:|^http/.test(getMyVar('path'))){\n        return 'editFile://'+getMyVar('path')\n        }else{\n            return 'toast://路径有误'\n        }\n    }),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title:'开始提取' ,\n    url: $().lazyRule(()=>{\n        let json=JSON.parse(fetch(getMyVar('path')));\n        let data=json.map((it)=>{\n            let url=it.url.match(/##(.*?)#/)[1];\n            let type='cms';\n            if(url.includes('.vod')){\n                type='v1'\n            }else if(url.includes('app.php')){\n                type='v2'\n            }else if(url.includes('/app')){\n                type='app'\n            }else if(/iptv|Chengcheng/.test(url)){\n                type='iptv'\n            }\n            let ua= (type == 'v1')?'Dart/2.13 (dart:io)':'MOBILE_UA';\n            return {\n                name:it.title,\n                url:url,\n                group:it.sort_url,\n                type:type,\n                ua:ua\n            }\n        });\n        //log(data);\n       let spath='hiker://files/rules/Src/Juying/jiekou转换.json'; writeFile(spath,JSON.stringify(data));\n        return 'toast://提取完毕，保存至:'+spath\n    }),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title:'查看提取结果' ,\n    url: 'editFile://hiker://files/rules/Src/Juying/jiekou转换.json',\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nsetResult(d)","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/36.svg"},{"last_chapter_rule":"","title":"写页源神器","author":"道长","version":3,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/ruleEditor.js');\ninitHome();","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/137.png"},{"last_chapter_rule":"","title":"批处理","author":"道长","version":11,"type":"tool","url":"hiker://empty","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"工具","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\nlet d=[];\\nconst {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet ver=MY_RULE.version;\\nlet tver=ver?',版本:'+color(ver,\\\"#ff7000\\\"):'';\\nd.push({\\n    title:'小程序批量修改工具by道长'+tver,\\n    col_type:'text_1',\\n    desc:'输入小程序名称进行模糊搜索\\\\n点击可来个栗子,比如.dr',\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        putMyVar('searchName','.dr');\\n        refreshPage(false);\\n        return 'toast://栗子已经给你了,请点击搜索吧'\\n    }),\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nlet tips=\\\"道长出品,核心逻辑基于任务仓库。刷新按钮会重置已选并刷新规则列表。导入按钮等同于视界原生本地导入,千万记得导入要选择保留原规则。\\\";\\nd.push({\\n    title:\\\"🍱菜单\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(tips).confirm(()=>{})\\n});\\nd.push({\\n    title:\\\"🔄刷新\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        initConfig({});\\n        refreshPage(false);\\n        return \\\"toast://已重新获取小程序，响应您的实时改动\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"♻清除\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"#noLoading\\\").lazyRule(()=>{\\n        clearItem(\\\"searchName\\\");\\n        clearMyVar('searchName');\\n        refreshPage(false);\\n        return \\\"toast://已清除搜索记录\\\"\\n    })\\n});\\nd.push({\\n    title:\\\"📝修改\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$().lazyRule(()=>{\\n        let sel = storage0.getMyVar('rule_selected', []);\\n        if(sel.length < 1){\\n            return 'toast://啥都没选，修改个鸡毛~'\\n        }\\n        let rule = sel[0];\\n        let allAttr = Object.keys(rule).filter((v) => (typeof(rule[v]) == 'string'));\\n        if(!allAttr.includes('type')){\\n            allAttr.unshift('type');\\n        }\\n        const {attrMap} = $.require(\\\"hiker://page/attr\\\");\\n        allAttr=allAttr.filter(it=>!['firstHeader','pages','url','title'].includes(it));\\n        allAttr=allAttr.map(it=>attrMap[it]||it);\\n        return $(allAttr,2,'请选择要修改的属性').select(()=>{\\n            const {attrMap2} = $.require(\\\"hiker://page/attr\\\");\\n            let sel = storage0.getMyVar('rule_selected', []);\\n            let rule = sel[0];\\n            return $(rule[attrMap2[input]||input]||'','将已选小程序的属性【'+input+'】修改为(支持function):').input((attr)=>{\\n                let sel = storage0.getMyVar('rule_selected', []);\\n                let sel_titles = sel.map(it=>it.title);\\n                let rules = config.rules;\\n                if(/^function/.test(input.trim())){\\n                    let js='var ff='+input.trim();\\n                    //log(js);\\n                    eval(js);// 定义功能 function(u){return u.replace('','')}\\n                }\\n                rules = rules.map((it)=>{\\n                    if(sel_titles.includes(it.title)){//被选择了\\n                        log(it.title+'属性'+attr+':'+it[attr]);\\n                        if(typeof(ff)=='function'){\\n                            it[attr]=ff(it[attr]);\\n                        }else{\\n                            it[attr]=input\\n                        }\\n                        return it\\n                    }else{\\n                        return it\\n                    }\\n                });\\n                initConfig({\\n                    rules:rules\\n                });\\n                refreshPage(false);\\n                return 'toast://已将选中项目属性【'+attr+'】值修改为:'+input\\n            },attrMap2[input])\\n        })\\n    })\\n});\\nd.push({\\n    title:'📥导入',\\n    col_type:\\\"scroll_button\\\",\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let sel = storage0.getMyVar('rule_selected', []);\\n        let sel_titles = sel.map(it=>it.title);\\n        let rules = config.rules.filter(it=>sel_titles.includes(it.title));\\n        if(rules.length<1){\\n            return 'toast://没有已选择项目，无法导入'\\n        }\\n        let ruleHead = '海阔视界首页频道规则【道长仓库Pro】￥home_rule_url￥';\\n        let rules_text = JSON.stringify(rules);\\n        let url = 'hiker://files/rules/dzHouse/json/批处理.json';\\n        writeFile(url,rules_text);\\n        return 'rule://'+base64Encode(ruleHead+url)\\n    })\\n});\\n/*\\nd.push({\\n    title:\\\"📥识别口令\\\",\\n    col_type:\\\"scroll_button\\\",\\n    url:$(\\\"{{clipboard}}\\\",\\\"自动识别剪切板内容或手动输入口令\\\").input(()=>{\\n        let importUrl = 'rule://' + base64Encode(input);\\n        return importUrl\\n        //return \\\"toast://你输入的口令为\\\"+input\\n    })\\n});\\n */\\nd.push({\\n    title: '搜索',\\n    desc: \\\"小程序模糊名称,不区分大小写,或 首页链接|搜索链接|一级|搜索一级|二级|搜索二级|预处理,区分大小写\\\",\\n    extra: {\\n        onChange: \\\"putMyVar('searchName',input)\\\",\\n        titleVisible: true,\\n        type: \\\"textarea\\\",\\n        height:2,\\n        defaultValue:getItem('searchName','')||getMyVar('searchName')\\n    },\\n    url:$.toString(() => {\\n        // 定义字符串替换全部函数\\n        if(!getMyVar('searchName'))\\n        {\\n            return \\\"toast://你还没有输入名称呢\\\\n要想清空搜索记录请点击上方清除按钮\\\"\\n        }\\n        setItem(\\\"searchName\\\",getMyVar('searchName'));\\n        clearMyVar(\\\"gp\\\");\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"input\\\",\\n});\\nfunction unique2(array){\\n    return Array.from(new Set(array));\\n}\\nfunction strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\\n\\nlet dl=[]; // 定义一个空数据列表用来装后面的数据\\n// 由于涉及批量修改，需要本地有完整的小程序缓存，只留标题是不行的,要不然批量修改的时候要一堆fetch hiker://home@小程序名称\\nlet rules=config.rules||JSON.parse(fetch(\\\"hiker://home\\\"));//获取海阔视界所有小程序\\nif(!config.rules){//最好还是缓存一下,要不然每次请求太耗时了;\\n    initConfig({\\n        rules:rules\\n    })\\n}\\nlet filterName=getItem('searchName','');// 搜索筛选名称\\nlet groups=rules.map(it=>it.group||\\\"无分组\\\");\\ngroups.unshift('全部');//把全部分组加上\\ngroups=unique2(groups);//获取所有规则的分组列表自动去重\\nlet nowGp = getMyVar(\\\"gp\\\",\\\"全部\\\");//获取当前分组\\nlet groupbtn=groups.map((it)=>{//渲染分组筛选按钮\\n    return {\\n        title:it===nowGp?color(it,\\\"#5FB878\\\"):it,\\n        col_type:\\\"scroll_button\\\",\\n        url:$('#noLoading#').lazyRule((it)=>{\\n            putMyVar(\\\"gp\\\",it);\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        },it)\\n    }\\n});\\nvar rule_filter = function (it){\\n    let has_title = it.title.toLowerCase().includes(filterName.toLowerCase());\\n    if(has_title){\\n        return true\\n    }\\n    for(let k of ['url','search_url','find_rule','searchFind','detail_find_rule','sdetail_find_rule','preRule']){\\n        if(it[k]&&it[k].includes(filterName)){\\n            return true\\n        }\\n    }\\n    return false\\n}\\nif(filterName){ // 搜索名称筛选\\n    rules=rules.filter(rule_filter);\\n}\\n// 分组筛选\\nif(nowGp===\\\"无分组\\\"){\\n    rules=rules.filter(it=>!it.group);\\n} else if(nowGp!==\\\"全部\\\"){\\n    rules=rules.filter(it=>it.group===nowGp);\\n}\\n// 是否选中筛选\\nlet data = storage0.getMyVar('rule_selected')||[];//获取已选择的规则\\nlet data_title = data.map(it=>it.title); // 获取已选择规则的名称\\nlet dx_filter = getItem('dx_filter','全部');\\n// 筛选过滤\\nif(dx_filter === '已选'){\\n    rules = rules.filter(it=>data_title.includes(it.title));\\n}else if(dx_filter=== '未选'){\\n    rules = rules.filter(it=>!data_title.includes(it.title));\\n}\\nstorage0.putMyVar('rules_tmp_text',rules);//设置缓存变量\\ndl=rules.map((it)=>{\\n    // let text = JSON.stringify(it);\\n    // text=base64Encode(text);\\n    storage0.putMyVar(it.title,it);//设置缓存变量\\n    return {\\n         title:(Array.isArray(data_title)&&data_title.includes(it.title))?color(it.title,'#12b668'):it.title,\\n       // title:(Array.isArray(data_title)&&data_title.includes(it.title))?'🟢'+it.title:it.title,\\n        // url:'toast://功能开发中',\\n        url:$('#noLoading#').lazyRule((title,color,dx_filter)=>{\\n            // let it = JSON.parse(base64Decode(text));\\n            let it = storage0.getMyVar(title);\\n            let data = storage0.getMyVar('rule_selected')||[];//获取已选择的规则\\n            let data_title = data.map(it=>it.title); // 获取已选择规则的名称\\n            let sel = false;\\n            let id = it.title; // 动态元素id\\n            let selCnt = 0;\\n            if(Array.isArray(data_title)){\\n                if(data_title.includes(id)){\\n                    // log('包含:'+id);\\n                    data.splice(data_title.indexOf(id),1);\\n                }else{\\n                    data.push(it);\\n                    sel = true;\\n                }\\n                selCnt = data.length;\\n                storage0.putMyVar('rule_selected', data)\\n            }else{\\n                sel = true;\\n                selCnt = 1;\\n                storage0.putMyVar('rule_selected', [it])\\n            }\\n            let newTitle = sel?color(id,'#12b668'):id;\\n            //let newTitle = sel?'🟢'+id:id;\\n            updateItem(id,{\\n                title:newTitle\\n            });\\n            updateItem('checked',{title: (dx_filter==='已选'?color('已选','#12b668'):'已选')+color(selCnt,'#ff7000')});\\n            return 'hiker://empty'\\n        },it.title,color,dx_filter),\\n        group:it.group,\\n        col_type:\\\"icon_4\\\",\\n        desc:\\\"作者:\\\"+it.author+\\\",版本:\\\"+it.version,\\n        pic_url:it.icon||\\\"https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU\\\",\\n        extra:{\\n            id:it.title\\n        }\\n    }\\n});\\nlet op=[]; // 操作|筛选数组\\nop.push({\\n    title:'全选',\\n    url:$('#noLoading#').lazyRule((color,dx_filter)=>{\\n        let rules = storage0.getMyVar('rules_tmp_text');\\n        storage0.putMyVar('rule_selected', rules);\\n        rules.forEach(it=>{\\n            let id = it.title;\\n            updateItem({title: color(id,'#12b668'), extra: {id: id}});\\n            //updateItem({title: '🟢'+it.title, extra: {id: id}});\\n        });\\n        updateItem('checked',{title: (dx_filter==='已选'?color('已选','#12b668'):'已选')+color(rules.length,'#ff7000')});\\n        return 'hiker://empty'\\n    },color,dx_filter),\\n    col_type:'scroll_button'\\n});\\nop.push({\\n    title:'全不选',\\n    url:$('#noLoading#').lazyRule((color,dx_filter)=>{\\n        // let rules = JSON.parse(getMyVar('rules_tmp_text'));\\n        let rules = storage0.getMyVar('rules_tmp_text');\\n        storage0.putMyVar('rule_selected', []);\\n        rules.forEach(it=>{\\n            let id = it.title;\\n            updateItem({title: id, extra: {id: id}});\\n        });\\n        updateItem('checked',{title: (dx_filter==='已选'?color('已选','#12b668'):'已选')+color(0,'#ff7000')});\\n        return 'hiker://empty'\\n    },color,dx_filter),\\n    col_type:'scroll_button'\\n});\\nop.push({\\n    title:'反选',\\n    url:$('#noLoading#').lazyRule((color,dx_filter)=>{\\n        let rules = storage0.getMyVar('rules_tmp_text');\\n        let oldSel = storage0.getMyVar('rule_selected', []);\\n        function getDifferentData(arrA, arrB) {\\n            return arrA.concat(arrB).filter(function (v, i, arr) {\\n                let arr_titles = arr.map(it=>it.title);\\n                // return arr.indexOf(v) === arr.lastIndexOf(v);\\n                return arr_titles.indexOf(v.title) === arr_titles.lastIndexOf(v.title);\\n            });\\n        }\\n        let newSel = getDifferentData(rules,oldSel);\\n        storage0.putMyVar('rule_selected', newSel);\\n        oldSel.forEach(it=>{\\n            let id = it.title;\\n            updateItem({title: id, extra: {id: id}});\\n        });\\n        newSel.forEach(it=>{\\n            let id = it.title;\\n            updateItem({title: color(id,'#12b668'), extra: {id: id}});\\n            //updateItem({title: '🟢'+it.title, extra: {id: id}});\\n        });\\n        updateItem('checked',{title: (dx_filter==='已选'?color('已选','#12b668'):'已选')+color(newSel.length,'#ff7000')});\\n        return 'hiker://empty'\\n    },color,dx_filter),\\n    col_type:'scroll_button'\\n});\\nop.push({\\n    title:'🗑️删除',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let sel = storage0.getMyVar('rule_selected', []);\\n        if(sel.length < 1){\\n            return 'toast://啥都没选，删除个鸡毛~'\\n        }\\n        return $('确认删除已选择的:'+sel[0].title+'等'+sel.length+'条规则?').confirm(()=>{\\n            let sel = storage0.getMyVar('rule_selected', []);\\n            let rules=config.rules||JSON.parse(fetch(\\\"hiker://home\\\"));//获取海阔视界所有小程序\\n            let sel_title = sel.map(it=>it.title); // 获取已选规则的标题\\n            // 执行删除逻辑\\n            rules = rules.filter(it=>!sel_title.includes(it.title)); // 筛选没有被删除的规则\\n            // 保存规则\\n            storage0.putMyVar('rule_selected', []);//删除完了清空选中项目\\n            refreshPage(false);\\n            return \\\"toast://已将〖\\\" + sel[0].title + \\\"〗等\\\"+sel.length+\\\"条规则删除\\\\n骗你的,视界没提供删除接口，删不了!\\\";\\n        })\\n    }),\\n    col_type:'scroll_button'\\n});\\nop.push({\\n    title:'📲分享',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let sel = storage0.getMyVar('rule_selected', []);\\n        if(sel.length < 1){\\n            return 'toast://啥都没选，分享个鸡毛~'\\n        }\\n        return $('确认分享已选择的:'+sel[0].title+'等'+sel.length+'条规则?').confirm(()=>{\\n            let sel = storage0.getMyVar('rule_selected', []);\\n            let rules=config.rules||JSON.parse(fetch(\\\"hiker://home\\\"));//获取海阔视界所有小程序\\n            let sel_title = sel.map(it=>it.title); // 获取已选规则的标题\\n            // 执行分享逻辑\\n            rules = rules.filter(it=>sel_title.includes(it.title)); // 筛选选中的规则\\n            // 保存规则\\n            // storage0.putMyVar('rule_selected', []);//分享完了清空选中项目，先不清空，留着吧\\n            let name = \\\"〖\\\"+sel_title[0]+'〗等'+sel_title.length+'个小程序';\\n            let import_code=\\\"海阔视界规则分享，当前分享的是：小程序，无根树，花正清，不断荤腥不戒淫￥home_rule_v2￥base64://@\\\"+name+\\\"@\\\"+base64Encode(JSON.stringify(rules));\\n            let pastes = getPastes();\\n            let url = sharePaste(import_code,pastes.slice(-1)[0]);\\n            let import_rule= url+\\\"\\\\n\\\\n小程序合集：\\\"+name;\\n            copy(import_rule);\\n            refreshPage(false);\\n            writeFile('hiker://files/rules/dzHouse/ruleCache/批处理.json',JSON.stringify(rules));\\n            return \\\"toast://已将\\\"+name+\\\"分享到剪切板口令!\\\\n并在道德经订阅目录生成了批处理.json文件\\\";\\n        })\\n    }),\\n    col_type:'scroll_button'\\n});\\nop.push({\\n    title:'筛选 '+color(rules.length,'#ff7000'),\\n    url:'toast://前面按钮是操作，后面按钮是筛选',\\n    col_type:'text_4'\\n});\\nop.push({\\n    title:dx_filter==='全部'?color('全部','#12b668'):'全部',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        setItem('dx_filter','全部');\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    }),\\n    col_type:'text_4'\\n});\\nop.push({\\n    title:(dx_filter==='已选'?color('已选','#12b668'):'已选')+color(data_title.length,'#ff7000'),\\n    url:$('#noLoading#').lazyRule(()=>{\\n        setItem('dx_filter','已选');\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    }),\\n    col_type:'text_4',\\n    extra:{\\n        id:'checked'\\n    }\\n});\\nop.push({\\n    title:dx_filter==='未选'?color('未选','#12b668'):'未选',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        setItem('dx_filter','未选');\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    }),\\n    col_type:'text_4'\\n});\\nop.push({\\n    col_type:\\\"blank_block\\\",\\n});\\nop = op.concat(groupbtn); // 连接分组滚动按钮\\ndl=op.concat(dl); // 操作筛选+ 分组筛选 + 元素点击按钮\\nd = d.concat(dl); // 连接上部分搜索等按钮\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"属性字典\",\"path\":\"attr\",\"rule\":\"js:\\nvar attrMap={\\nfirstHeader:'',\\nlast_chapter_rule:'最新章节解析',\\ntitle:'小程序名称',\\nauthor:'作者',\\ntype:'小程序类别',\\nurl:'小程序链接',\\ncol_type:'显示样式',\\nclass_name:'分类名称',\\nclass_url:'分类替换词',\\narea_name:'地区名称',\\narea_url:'地区替换词',\\nsort_name:'排序名称',\\nsort_url:'排序替换词',\\nyear_name:'年代名称',\\nyear_url:'年代替换词',\\nfind_rule:'解析规则',\\nsearchFind:'搜索解析规则',\\nsearch_url:'搜索链接',\\ngroup:'小程序分组',\\ndetail_col_type:'二级列表显示样式',\\ndetail_find_rule:'二级列表解析规则',\\nsdetail_col_type:'搜索二级列表显示样式',\\nsdetail_find_rule:'搜索二级列表解析规则',\\nua:'全局UA设备标志',\\npreRule:'JS预处理',\\npages:'子页面',\\nicon:'图标'\\n};\\n//键值对反转\\nfunction objReverse(obj){\\n    var keys = Object.keys(obj);\\n    var res = {};\\n    keys.forEach((val) => {\\n            res[obj[val]] = val;\\n    });\\n    return res\\n}\\n$.exports.attrMap=attrMap;\\n$.exports.attrMap2=objReverse(attrMap);\"}]","proxy":"","icon":"https://img.icons8.com/?format=png&id=113572&size=64"},{"last_chapter_rule":"","title":"魔断解析爬虫","author":"道长","version":4,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    let d=[];\nlet webUrl=\"http://www.yisiclub.cn/1725/.html\";\nd.push({\n    title:\"以下网站不定期更新解析，点击进入原网页\",\n    url:webUrl,\n    col_type:\"text_1\"\n});\nlet html=request(webUrl);\nlet jxs=pdfa(html,\".u-text-format&&p\");\nlet list=[];\nfor(let i in jxs){\n    try{\n        //log(jxs[i]);\n        let title=pdfh(jxs[i],'Text').split(\"—\")[0].split(\"http\")[0];\n        let url=pdfh(jxs[i],'a&&href');\n        if(title&&url&&!/html/.test(url)){\n            let it={\n                title:title,\n                url:url\n            };\n            //log(it);\n            list.push(it);\n        }\n    }catch(e){\n        log(e.message);\n    }\n}\nd.push({\n    title:\"共有:\"+list.length+\"个解析\",\n    url:$(\"导出到本地文件且复制到剪切板?\").confirm((list)=>{\n        let path=\"hiker://files/rules/DuanNian/MyParseOut_断插.txt\";\n        let listd=list.map(it=>it.title+','+it.url);\n        let outText=listd.join(\"\\n\");\n        writeFile(path,outText);\n        // copy(outText);\n        let pastes = getPastes();\n        let importUrl = sharePaste(base64Encode(outText),pastes[1]);\n        let importCode = '魔断解析导入口令¥¥'+importUrl;\n        copy(importCode);\n        return \"toast://已导出到本地路径:\"+path;\n    },list),\n    col_type:\"text_1\",\n    desc:\"点击单个解析可以单独复制解析名\\n点此可复制全部解析适用于魔断的导入格式\"\n});\nlet data=list.map((it)=>{\n    return {\n        title:it.title,\n        col_type:\"flex_button\",\n        url:$().lazyRule((it)=>{\n            copy('★'+it.title+'★'+it.url);\n            return \"toast://已复制链接:\"+it.url\n        },it)\n    }\n});\nd=d.concat(data);\n//log(list);\nsetResult(d);","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/3.png"},{"last_chapter_rule":"","title":"选择器语法.m","author":"道长","version":1,"type":"other","url":"hiker://empty##https://juejin.cn/post/6844904002103050254#11-id选择器","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n/** 无需下载APP，点返回即可。*/\nrequire(config.模板);\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n       // js:注入()\n    }\n}])","searchFind":"","search_url":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nvar 模板 = getApi('importUrl')+\"2505\";\nrequire(模板);\n预处理()","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/15.svg"},{"last_chapter_rule":"","title":"json分类生成","author":"香雅情","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nitems.push({\n    title: 'json数据',\n    url: 'hiker://empty',\n    col_type: 'text_1'\n});\n\nitems.push({\n    title: getVar('myjson', ''),\n    url: \"input://\" + getVar('myjson', '') + \".js:putVar('myjson',input);refreshPage()\",\n    col_type: 'icon_1_search'\n});\n\n\nitems.push({\n    title: '定位(list.type)',\n    url: 'hiker://empty',\n    col_type: 'text_1'\n});\nitems.push({\n    title: getVar('mytree', ''),\n    url: \"input://\" + getVar('mytree', '') + \".js:putVar('mytree',input);refreshPage()\",\n    col_type: 'icon_1_search'\n});\n\nitems.push({\n    title: '取值(type_name&&type_id)',\n    url: 'hiker://empty',\n    col_type: 'text_1'\n});\nitems.push({\n    title: getVar('myval', ''),\n    url: \"input://\" + getVar('myval', '') + \".js:putVar('myval',input);refreshPage()\",\n    col_type: 'icon_1_search'\n});\n//log(list);\nitems.push({\n    title: '生成',\n    url: $('').lazyRule(() => {\n        var tpjson = JSON.parse(getVar('myjson', '[]'));\n        var list = 'tpjson.' + getVar('mytree', '');\n        var spl = getVar('myval', '').split('&&');\n        var one = 'typec[j].' + spl[0];\n        var two = 'typec[j].' + spl[1];\n        //var tpjson = JSON.parse(json);\n        //log(tpjson);\n        var typec = eval(list);\n        //log(typec);\n        var typet = \"\",\n            typel = \"\";\n        for (var j = 0; j < typec.length; j++) {\n            typet += eval(one);\n            typel += eval(two);\n            if (j < typec.length - 1) {\n                typet += \"&\";\n                typel += \"&\";\n            }\n        }\n\n        putVar('jsontypet', typet);\n        putVar('jsontypel', typel);\n        refreshPage();\n        return 'hiker://empty'\n    }),\n    col_type: 'text_3'\n});\n\nitems.push({\n    title: \"复制名称\",\n    url: \"confirm://是否需要复制当前内容。.js:\" + $.toString(() => {\n        var jieguo = getVar('jsontypet', '');\n        if (jieguo == '') {\n            return 'toast://内容为空,复制失败。';\n        } else {\n            return 'copy://' + getVar('jsontypet')\n        }\n    }),\n    col_type: \"text_3\"\n});\n\nitems.push({\n    title: \"复制替换词\",\n    url: \"confirm://是否需要复制当前内容。.js:\" + $.toString(() => {\n        var jieguo = getVar('jsontypel', '');\n        if (jieguo == '') {\n            return 'toast://内容为空,复制失败。';\n        } else {\n            return 'copy://' + getVar('jsontypel')\n        }\n    }),\n    col_type: \"text_3\"\n});\n\nitems.push({\n    title: getVar(\"jsontypet\", \"\") + '<br>' + getVar(\"jsontypel\", \"\"),\n    col_type: 'rich_text'\n});\n\nres.data = items;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"","group":"③做规则用","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\neval('json=' + getResCode());\nlet newChapter = json.list[0].vod_remarks+\" \\t\\t更新时间:\"+json.list[0].vod_time;\n//log(newChapter)\nsetResult(newChapter);","title":"酷云APP","author":"","version":0,"type":"video","url":"http://api.kunyu77.com/api.php/provide/searchFilter?year=fyyear&category=fysort&area=fyarea&pagenum=fypage&type_id=fyclass&pagesize=24","col_type":"movie_3_marquee","class_name":"全部&电影&电视剧&综艺&动漫","class_url":"0&1&2&3&4","area_name":"全部&中国大陆&美国&日本&中国香港&中国台湾&韩国&欧洲&其他","area_url":"&中国大陆&美国&日本&中国香港&中国台湾&韩国&欧洲&其他","sort_name":"全部&剧情&动作&科幻&喜剧&战争&爱情&恐怖&伦   理","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2015之前","sort_url":"&剧情&动作&科幻&喜剧&战争&爱情&恐怖&伦 理","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&yearlt|2015","find_rule":"js: \nvar d = [];\nlet html = request(MY_URL, {\n    headers: {       \n        \"User-Agent\": \"Dalvik/2.1.0\"\n    },\n    method: \"GET\"\n});\nlet list = JSON.parse(html).data.result;\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n    title: list[i].title,\n    url: \"http://api.kunyu77.com/api.php/provide/videoDetail?ids=\"+list[i].id+\"#immersiveTheme#\",\n    desc: list[i].msg,\n    pic_url: list[i].videoCover+\"@Referer=\"\n});\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nlet html = request(MY_URL, {\n    headers: {       \n        \"User-Agent\": \"Dalvik/2.1.0\"\n    },\n    method: \"GET\"\n});\nlet list = JSON.parse(html).data;\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n    title: list[i].videoName,\n    url: \"http://api.kunyu77.com/api.php/provide/videoDetail?ids=\"+list[i].id+\"#immersiveTheme#\",\n    desc: list[i].msg,\n    pic_url: list[i].videoCover+\"@Referer=\",\n    content: list[i].briefContext\n});\n}\nsetResult(d);","search_url":"http://api.kunyu77.com/api.php/provide/searchVideo?pg=fypage&searchName=**","group":"③免嗅探","detail_col_type":"movie_1","detail_find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    clearMyVar(\"name\");\n    clearMyVar('vari');\n}))\nvar d = [];\nvar id = MY_URL.match(/ids=(\\d+)/)[1];\nlet html = request(MY_URL, {\n    headers: {\n        \"User-Agent\": \"Dalvik/2.1.0\"\n    },\n    method: \"GET\"\n});\nlet info = JSON.parse(html).data;\n//log(html)\nputMyVar('name', info.videoName);\nd.push({\n    title: \"地区: \" + info.area + \"\\n类型: \" + info.classifyName + \"\\n评分: \" + info.score,\n    url: info.videoCover,\n    col_type: \"movie_1_vertical_pic_blur\",\n    desc: \"导演: \" + info.director + \"\\n演员: \" + info.actor + \"\\n更新至: \" + info.msg,\n    pic_url: info.videoCover\n});\n\nlet contents = info.brief;\nd.push({\n    title: '‘‘’’<font color=\"#098AC1\">剧情简介</font>',\n    desc: '‘‘’’<font color=\"\">\\t\\t' + contents.substr(0, 70) + '</font>' + '<small><font color=\"red\">详情</font></small>',\n    col_type: 'text_1',\n    extra: {\n        //lineVisible: false\n    },\n    url: $().rule((text) => {\n        setResult([{\n            title: text,\n            col_type: 'long_text',\n        }])\n    }, contents)\n});\n\nlet playhtml = request(\"http://api.kunyu77.com/api.php/provide/videoPlaylist?ids=\" + id, {\n    headers: {\n        \"User-Agent\": \"Dalvik/2.1.0\"\n    },\n    method: \"GET\"\n});\n\nlet list = JSON.parse(playhtml).data.episodes;\nvar playlists = [];\nlist.forEach((it) => {\n    let playlist = it.playurls;\n    playlists.push(playlist);\n})\n//log(playlists[0][0].playfrom)\n//log(playlists)\n\n//利用ES6 Set去重\nfunction unique(arr) {\n    return Array.from(new Set(arr))\n}\n\n//递归分组\nfunction handleSameTypeList(list, name, resultList){\n  // 每一个类型的单独数组，注意此处不能return出每个sameTypeArr，\n  // 因为递归的返回值只返回最后一次的值\n  let sameTypeList = []\n  let propVal = ''\n  \n  if (list.length > 0) {\n    propVal = list[0][name]\n    //log(propVal)\n    let tempList = []\n    // 将含有相同的name属性值的对象push到此次遍历的list中，\n    // 将其他的对象放入到tempList中，下次遍历\n    list.forEach((item, key) => {\n      if (item[name] === propVal) {\n        sameTypeList.push(item)\n      } else {\n        tempList.push(item)\n      }\n    })\n    resultList.push(sameTypeList)\n    list = tempList\n    return handleSameTypeList(list, name, resultList)\n  } else {\n    return resultList\n  }\n}\n\n\nvar tabs = [];\nvar playlistu = [];\nvar playurls = [];\nfor (let i = 0; i < playlists.length; i++) {\n    for (let it of playlists[i]) {\n        let tab = it.playfrom;\n        tabs.push(tab);\n        tabs = unique(tabs);\n        playlistu.push({\n            title: it.title.replace(getMyVar('name',''),''),\n            playurl: it.playurl,\n            playfrom: it.playfrom\n        })\n    }\n    /*\n    playlists[i].forEach((it) => {\n        playlistu.push({\n            title: it.title,\n            playurl: it.playurl,\n            playfrom: it.playfrom\n        })\n    })\n    playurls.push(playlistu);\n*/\n}\n//log(playlistu)\nvar playurls = handleSameTypeList(playlistu, 'playfrom', [])\n\n//log(tabs)\n//log(playurls)\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//图标来自顺佬小程序\nvar icon_s = 'http://82.156.222.77/weisyr/icon/';\nif (getMyVar('顺序', '正序') == '正序') {\n    var avatar = icon_s + '正序.svg';\n    var ordtext = \"★正序↓\";\n} else {\n    var avatar = icon_s + '反序.svg';\n    var ordtext = \"☆逆序↑\";\n}\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"#f13b66a\">' + title + '</front></strong>';\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        d.push({\n            title: getMyVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: $('hiker://empty#noHistory##noLoading#').lazyRule((vari, i) => {\n                putMyVar(vari, i);\n                refreshPage(false);\n                return 'toast://切换成功!'\n            }, vari, i),\n            col_type: 'scroll_button'\n        })\n    }\n}\nfunction setJi(plist) {\n    for (var i = 0; i < plist.length; i++) {\n                var len = plist.length;\n                d.push({\n                    title: /集/.test(plist[i].title)?plist[i].title.replace('1080P',''):plist[i].title,\n                    url: plist[i].playurl + lazy,\n                    extra: {\n                        id: plist[i].playurl\n                    },\n                    col_type: len > 4 ? 'text_5' : len > 3 ? 'text_4' : len > 2 ? 'text_3' : 'text_2',\n                });\n            }\n}    \nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:#098AC1\"><small>播放列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + ordtext + '</small>',\n        url: $('#noLoading#').lazyRule(() => {\n            if (getMyVar('顺序', '正序') == '逆序') {\n                putMyVar('顺序', '正序');\n            } else {\n                putMyVar('顺序', '逆序');\n            }\n            refreshPage(true);\n            return 'toast://已切换顺序为:' + getMyVar('顺序', '正序')\n        }),\n        col_type: 'text_center_1'\n    })\n\n    var plist = lists[index];\n    //log(plist)\n    if (getMyVar('顺序', '正序') == '正序') {\n        try {\n            setJi(plist)\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        plist = plist.reverse();\n        try {\n            setJi(plist)\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, 'vari');\nsetLists(playurls, getMyVar('vari', '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"js:\\nvar lazy = $('').lazyRule(() => {\\n    if (/\\\\.m3u8|\\\\.mp4/.test(input)) {\\n        return input\\n    } else {\\n        let url = \\\"http://api.kunyu77.com/api.php/provide/parserUrl?url=\\\" + input;\\n        let html = request(url, {\\n            headers: {\\n                \\\"User-Agent\\\": \\\"Dalvik/2.1.0\\\"\\n            },\\n            method: \\\"GET\\\"\\n        });\\n        //log(html)\\n        let urll = JSON.parse(html).data.url;\\n        let playhtml = request(urll, {\\n            headers: {\\n                \\\"User-Agent\\\": \\\"Dalvik/2.1.0\\\"\\n            },\\n            method: \\\"GET\\\"\\n        });\\n        let playurl = JSON.parse(playhtml).url;\\n        return playurl + \\\"#isVideo=true#\\\"\\n    }\\n});\"}]","icon":""},{"title":"Q站","author":"香雅情","version":0,"url":"https://qkan8.com/index.php/vod/type/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"高清原碟&日漫&女频&劇場&漫画&国漫&美漫","class_url":"33&21&50&24&55&51&22","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-text-center&&Text;a&&href","searchFind":"body&&.fed-deta-info;h1&&Text;a&&href;.fed-list-remarks&&Text;.fed-part-esan--span&&Text;a&&data-original","search_url":"https://qkan8.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"③动漫","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar tabs = parseDomForArray(html, '.fed-tabs-item&&ul&&li');\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\n\nd.push({\n title: '共有' + conts.length + '条线路',\n desc: parseDomForHtml(html, '.fed-deta-content&&li,-1&&Text'),\n pic_url: parseDom(html, '.fed-list-pics&&data-original'),\n url: getUrl(),\n col_type: 'pic_1'\n});\n\nfor (var i in conts) {\n\tvar list = parseDomForArray(conts[i], 'body&&.fed-btns-info');\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i],'a&&Text'),\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j in list) {\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j],'a&&Text'),\n\t\t\t\turl: parseDom(list[j],'a&&href')+ `@lazyRule=.js:var get=fetch(input,{});var dplay=base64Decode(parseDomForHtml(get,'.fed-play-player&&iframe&&data-play').slice(3));var pars=parseDom(get,'.fed-play-player&&iframe&&data-pars');if(dplay.indexOf('http')!=-1){if(dplay.indexOf('html')!=-1){var html=fetch('https://www.cuan.la/m3u8.php?url='+dplay,{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":\"https://qkan8.com/\"}});eval(fetch('hiker://files/rules/xyq/token.js',{}));tkurl.indexOf('url=') > -1 ? tkurl.split('url=')[1] : tkurl;}else{dplay+'#isVideo=true#'};}else{var html=fetch(pars+dplay,{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":\"https://qkan8.com/\"}});if(html.indexOf('purl')!=-1){var kjjx=parseDomForHtml(html,'body&&Html').match(/var purl = \\'(.*?)\\'/)[1];var html=fetch('https://qkan8.com'+kjjx,{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":\"https://qkan8.com/\"}})};var vurl=html.indexOf('var vid')!=-1?html.match(/var vid=\\\"(.*?)\\\"/)[1]:html.match(/var url = \\'(.*?)\\'/)[1];vurl}`,\n\t\t\t\tcol_type: list.length >2?'text_3':'text_2'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":""},{"last_chapter_rule":"","title":"omofun动漫","author":"香雅情","version":0,"url":"https://omofun.com/index.php/vod/show/fyAll/page/fypage.html","col_type":"movie_3","class_name":"动漫&剧场版","class_url":"id/20&id/39","area_name":"热血&穿越&奇幻&战斗&搞笑&日常&科幻&萌系&治愈&校园&恋爱&魔法&冒险&机战&催泪&音乐","area_url":"class/%E7%83%AD%E8%A1%80/id/20&class/%E7%A9%BF%E8%B6%8A/id/20&class/%E5%A5%87%E5%B9%BB/id/20&class/%E6%88%98%E6%96%97/id/20&class/%E6%90%9E%E7%AC%91/id/20&class/%E6%97%A5%E5%B8%B8/id/20&class/%E7%A7%91%E5%B9%BB/id/20&class/%E8%90%8C%E7%B3%BB/id/20&class/%E6%B2%BB%E6%84%88/id/20&class/%E6%A0%A1%E5%9B%AD/id/20&class/%E6%81%8B%E7%88%B1/id/20&class/%E9%AD%94%E6%B3%95/id/20&class/%E5%86%92%E9%99%A9/id/20&class/%E6%9C%BA%E6%88%98/id/20&class/%E5%82%AC%E6%B3%AA/id/20&class/%E9%9F%B3%E4%B9%90/id/20","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;h4&&Text;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist__media&&li;h3&&Text;a&&href;.pic-text&&Text;.detail&&Text;.lazyload&&data-original","search_url":"https://omofun.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"③动漫","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    var html = fetch(input, {});\n    var js = parseDomForHtml(html, \".stui-player__video&&script&&Html\").replace(/player_.*?={/, 'player_data={');\n    eval(js);\n    //var urll = unescape(base64Decode(player_data.url));\n    var urll = player_data.url;\n    if (player_data.encrypt == '1') {\n        urll = unescape(player_data.url);\n    } else if (player_data.encrypt == '2') {\n        urll = unescape(base64decode(player_data.url));\n    }\n    if (/\\.m3u8|\\.mp4|obj\\/tos/.test(urll) && /http/.test(urll)) {\n        return urll + '#isVideo=true#';\n    }else{\n        return input      \n    }\n});\nvar html = getResCode();\nvar tabs = parseDomForArray(html, 'body&&.playlist');\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".stui-content__thumb&&img&&data-original\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".detail-content&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'pic_1'\n});\n\nfor (var i in conts) {\n    var list = parseDomForArray(conts[i], 'body&&a');\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], \"h3&&Text\"),\n            col_type: 'text_1'\n        });\n        //setError(list[0]);\n\n        for (var j in list) {\n            d.push({\n                title: parseDomForHtml(list[j], \"a&&Text\"),\n                url: parseDom(list[j], \"a&&href\") + lazy,\n                col_type: 'text_3'\n            });\n        }\n\n    }\n}\n\n//二级模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"嘀哩嘀哩8","author":"香雅情","version":0,"url":"http://m.dilidili8.com/fyclass/?page=fypage","col_type":"movie_3","class_name":"动漫大全&番剧&国漫&动画电影","class_url":"anime&drama&dongman&movie","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];var html=getResCode();\n\nvar list = parseDomForArray(html,'.excerpts&&.excerpt');\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'h2&&Text');\n        var img = parseDom(list[i], 'img&&data-src');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], 'span&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\nsetHomeResult({data:items});","searchFind":"js:\r\nvar items = [];var html = getResCode();\nvar list = parseDomForArray(html,'.excerpts&&.excerpt');\n//setError(list[1]);\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'h2&&Text');\n        var img = parseDom(list[i], 'img&&data-src');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], 'span&&Text');\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            content: desc\n        });\r\n    }\n\r\nsetSearchResult({data:items});","search_url":"http://m.dilidili8.com/public/api.php?app=video&do=search&q=**&page=fypage;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10；； BKL-AL20 Build/HUAWEIBKL-AL20；； wv)&&Referer@http://m.dilidili8.com/}","titleColor":"","group":"③动漫","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nd.push({\n    title: '',\n    desc: '255&&float',\n    url: '',\n    col_type: 'x5_webview_single'\n});\nrefreshX5WebView('');\nvar html = getResCode();\nvar tabs = parseDomForArray(html, 'body&&.nav-tabs&&li');\nvar conts = parseDomForArray(html, 'body&&.source-lst');\n\nvar thumb = parseDom(html, '.video-pic&&img&&src');\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, '.description&&Text'),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'pic_1'\n});\n d.push({col_type:'big_blank_block'});\nvar title = 'dildli' + parseDomForHtml(html, '.article-header&&h1&&Text');\n//处理线路显示\nfor (var i = 0; i < conts.length; i++) {\n    d.push({\n        title: (getVar(title, '0') == i ? '👇🏻' : '') + parseDomForHtml(tabs[i], 'body&&Text'),\n        url: `hiker://empty@lazyRule=.js:putVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n        col_type: 'scroll_button'\n    });\n}\n\n//分割线\nd.push({\n    title: '““切换选集排序””',\n    url: \"hiker://empty@lazyRule=.js:putVar('dldl8sort', getVar('dldl8sort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n    col_type: 'text_center_1'\n});\n\nvar plhtml = request(parseDom(conts[getVar(title, '0')], \"a&&href\"));\n\n//开始处理选集显示\nif (getVar('dldl8sort', '1') == '1') {\n    var list = parseDomForArray(plhtml, '.tab-content&&.source-lst-item').reverse();\n} else {\n    var list = parseDomForArray(plhtml, '.tab-content&&.source-lst-item')\n}\n\nfor (var j = 0; j < list.length; j++) {\n    d.push({\n        title: parseDomForHtml(list[j], \"a&&Text\"),\n        url: $(parseDom(list[j], \"a&&href\")).lazyRule(() => {\n            var html = request(input, {});\n            var scrt = parseDomForHtml(html, '.player-box&&script&&Html');\n            eval(scrt);\n            var play = $player.src;\n            if(play.search(/\\/share\\//)!=-1){\n                return 'x5WebView://'+play;\n            }else{\n                return play\n            }\n        }),\n        col_type: 'text_3'\n    });\n}\n\n//二级tab线路模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:\nsetResult(\n  (parseDomForHtml(getResCode(), 'h1.video-title&&Text')\n    .match(/【.*?】/g)||['【剧场版全集】']).join(' ')\n)","title":"D站","author":"永远の明日","version":2,"url":"https://www.5dm.app/video/fyclass/page/fypage?orderby=fysort;GET;UTF-8;{Referer@www.5dm.app&&User-Agent@.js:PC_UA}","col_type":"movie_3","class_name":"连载新番&完结番组&剧场 • OVA&未知时空","class_url":"bangumi&end&ova&beater","area_name":"","area_url":"","sort_name":"排序: 日期&收藏&标题&评论","year_name":"","sort_url":"date&title&view&commment","year_url":"","find_rule":"js:\r\nsetResult(parseDomForArray(getResCode(), 'body&&.video-item').map((v) => {\r\n  let [, title, desc] = parseDomForHtml(v, 'h3&&Text').match(/^(.*?)(【.*】)?$/),\r\n    item = {\r\n      title: title,\r\n      desc: desc || '',\r\n      content: parseDomForHtml(v, '.item-thumbnail&&Text') || 'D站珍藏',\r\n      img: parseDom(v, 'img&&data-original'),\r\n      url: parseDom(v, 'a&&href')\r\n    }\r\n  item.url += '?params=' + base64Encode(JSON.stringify({ desc: item.desc, content: item.content, img: item.img })) + '&#immersiveTheme#'\r\n  return item\r\n}))","searchFind":"js:\r\nsetResult(parseDomForArray(getResCode(), 'body&&.video-item').map((v) => {\r\n  let [, title, desc] = parseDomForHtml(v, 'h3&&Text').match(/^(.*?)(【.*】)?$/),\r\n    item = {\r\n      title: title,\r\n      desc: desc || '',\r\n      content: parseDomForHtml(v, '.item-thumbnail&&Text') || 'D站珍藏',\r\n      img: parseDom(v, 'img&&data-original'),\r\n      url: parseDom(v, 'a&&href')\r\n    }\r\n  item.url += '?params=' + base64Encode(JSON.stringify({ desc: item.desc, content: item.content, img: item.img })) + '&#immersiveTheme#'\r\n  return item\r\n}))","search_url":"https://www.5dm.app/page/fypage?s=**&cat=-1%2C4%2C3%2C11;GET;UTF-8;{Referer@www.5dm.app&&User-Agent@.js:PC_UA}","titleColor":"#ff00ff","group":"③动漫","detail_col_type":"text_3","detail_find_rule":"js:\r\nlet el = [], html = getResCode(), params = JSON.parse(base64Decode(getParam('params')))\r\n\r\n//简介\r\nlet desc = parseDomForHtml(html, '#content&&.item-content&&Text')\r\n//标签\r\nlet date = parseDomForHtml(html, '.item-date&&Text')\r\n//选集\r\nlet tabs = parseDomForArray(html, '#tm-share&&tbody&&tr')\r\nif (!tabs.length) tabs = ['<td> 5DM </td><a href=\"' + MY_URL + '\"> 第1话 </a>']\r\n\r\nel.push({\r\n  title: date + params.desc + '\\n' + params.content,\r\n  desc: desc,\r\n  url: MY_URL,\r\n  img: params.img,\r\n  col_type: 'movie_1_vertical_pic_blur'\r\n})\r\ntabs.forEach((v) => {\r\n  let list = v.match(/<a.*?<\\/a>/g)\r\n  if (list.length) {\r\n    el.push({\r\n      title: parseDomForHtml(v.match(/<td.*?<\\/td>/)[0], 'Text'),\r\n      col_type: 'text_center_1'\r\n    })\r\n    list.forEach((v) => {\r\n      el.push({\r\n        title: parseDomForHtml(v, 'Text'),\r\n        url: $(parseDom(v, 'a&&href')).lazyRule(() => {\r\n          let [_, mode, url] = /<div id=\"player-embed\">\\s?<(.*?) [^<>]*?src=\"(.*?)\".*?><\\/\\1>\\s?<\\/div>/.exec(fetch(input, { headers: { 'Referer': 'www.5dm.app', 'User-Agent': PC_UA } })) || []\r\n          if (!mode) return input\r\n          if (mode == 'iframe') return /\"url\": \"(.*?)\"/.exec(fetch('https://www.5dm.app/' + url, { headers: { 'Referer': input, 'User-Agent': PC_UA } }))[1]\r\n          else return url\r\n        })\r\n      })\r\n    })\r\n  }\r\n})\r\nsetResult(el)","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"try{\n  let host = 'https://www.5dm.app/', html = fetch(host)\n  if(parseDomForHtml(html,'title&&Text').indexOf('...')>=0){\n    let form = /<form.*?>/.exec(html)[0]\n    fetch(host + /action=\"(.*?)\"/.exec(form)[1], {method: 'POST', headers: {'User-Agent': PC_UA}})\n}\n}catch(e){ }","pages":"[]","icon":"#ff00ff"},{"last_chapter_rule":"","title":"追番猫","author":"⁽⁽ଘ繁星点缀ଓ⁾⁾","version":1,"url":"http://dm.496dy.cn:88/api.php/v1.vod?type=fyclass&class=&lang=&area=fyarea&year=fyyear&by=fysort&page=fypage&limit=9","col_type":"movie_3","class_name":"日本动漫&国产动漫&动漫&欧美动漫&其他类型","class_url":"1&2&3&4&31","area_name":"地区\n&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = JSON.parse(getResCode());\nvar list = html.data.list;\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = list[i].vod_name;\n        var img = list[i].vod_pic;\r\n        var url = list[i].vod_id;\n        var desc = list[i].vod_remarks;\n        items.push({\r\n            title: title,\n            pic_url: img+'@Referer=',\r\n            url: 'http://dm.496dy.cn:88/api.php/v1.vod/detail?vod_id='+url+'&token=\"#immersiveTheme#',\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = JSON.parse(getResCode());\nvar list = html.data.list;\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = list[i].vod_name;\n        var img = list[i].vod_pic;\r\n        var url = list[i].vod_id;\n        var content = list[i].vod_content;\n        var desc = list[i].vod_remarks;\r\n        items.push({\r\n            title: title,\n            pic_url: img+'@Referer=',\r\n            url: 'http://dm.496dy.cn:88/api.php/v1.vod/detail?vod_id='+url+'&token=+\"#immersiveTheme#\"',\n            content:content,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);\n","search_url":"http://dm.496dy.cn:88/api.php/v1.vod?page=fypage&limit=10&wd=**","titleColor":"#ff228be6","group":"③动漫","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\n\nvar html=JSON.parse(getResCode());\n\nvar tabs=html.data.vod_play_list;\n\n//标题图片简介\nd.push({\n            title:'地区：'+html.data.vod_area+'    年代：'+html.data.vod_year+'\\n主演：'+html.data.vod_actor.substring(0, 10)+'\\n导演：'+html.data.vod_director,\n            desc:html.data.vod_blurb.substring(0, 30),\n            pic_url:html.data.vod_pic+\"@Referer=\",\n            col_type:'movie_1_vertical_pic_blur'\n        });\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\nfor(var i = 0;i<tabs.length;i++){\n  var list =tabs[i].urls;\n\t\td.push({\n\t\t\ttitle:tabs[i].player_info.show,\n\t\t\tcol_type: 'text_1'\n\t\t});\n\n\t\tfor(var j = 0; j<list.length; j++){\n\t\t\td.push({\n\t\t\t\ttitle:list[j].name,\n      url:$(list[j].url).lazyRule(()=>{\nvar urll=input;\nlog(urll);\ntry{\nif(/\\.m3u8|\\.mp4/.test(urll)){\n return /url=/.test(urll)?urll.split('url=')[1]+'#isVideo=true#':urll+'#isVideo=true#';\n}else{\nfunction parseyi(urll){\nvar playurl=JSON.parse(fetch('https://json.m3u8.tv:7788/json.php?url='+urll,{}));\nlog(playurl);\n\nif(playurl.code=='200'){var vplay= playurl.url.substring(0,2)=='\\/\\/'?'https:'+playurl.url:playurl.url;if(/titan\\.mgtv\\.com/.test(vplay)){return vplay+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else if(/8old.cn|PGplay/.test(vplay)){return 'x5Play://'+vplay}else{return vplay}}else{return parsewu(urll)}\n}\n\nfunction parseer(urll){\nvar playturl=JSON.parse(fetch('https://json.m3u8.tv:7788/json.php?url='+urll,{}));\nlog(playturl);\nif(playturl.code=='200'){var vplay= playturl.url.substring(0,2)=='\\/\\/'?'https:'+playturl.url:playturl.url;if(/titan\\.mgtv\\.com/.test(vplay)){return vplay+';{Referer@https://www.mgtv.com/&&User-Agent@Mozilla/5.0}';}else if(/8old.cn|PGplay/.test(vplay)){return 'x5Play://'+vplay}else{return vplay};}else{return parseyi(urll)}\n}\n\nfunction parsewu(urll){\nreturn 'https://www.hzlff.cn/player/?url='+urll\n}\nfunction parsesan(urll){\nreturn 'https://www.8090.la/8090/?url='+urll\n}\nfunction parssi(urll){\nreturn 'http://123.1dior.cn/?url='+urll\n}\n\nreturn parseer(urll);\n}\n}catch(e){return urll}\n\n}),\n      col_type: 'flex_button'\n\t\t\t});\n   }\n}\n\n//二级模板\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"firstHeader":"class","last_chapter_rule":"","title":"动漫时空","author":"&斜风细雨不须归","version":3,"url":"hiker://bookmark","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n'哔咪动漫@@http://m.dodoge.me/vod/search/?wd= @@  http://api.btstu.cn/sjbz/?lx=dongman?glideCache=skip',\n\n'AGE动漫@@https://www.agefans.cc/@@https://z3.ax1x.com/2021/04/02/cemkqS.gif',\n\n'动漫岛@@http://www.dmd8.com/@@  http://api.btstu.cn/sjbz/?lx=m_dongman?glideCache=skip',\n\n\n\n\n'布米米动漫@@http://www.bumimi.top',\n'樱花动漫@@http://m.imomoe.jp/',\n'奇米奇米@@http://www.qimiqimi.co/',\n'妮可动漫1@@http://www.nicotv.me/',\n'妮可动漫2@@http://www.nicotv.club/',\n'欧派动漫@@https://www.opacg.com/',\n'讯播动漫@@https://dm.xbdm.net/',\n'怡萱动漫@@http://www.yxdm.tv/',\n'奇奇动漫@@http://www.qiqidongman.com/',\n'ACGn动漫@@http://www.acgn.wang/',\n'zero动漫@@https://m.zerolh.com/',\n'XXDm动漫@@http://m.xxdm5.com/',\n'密枯计划@@https://mikanani.me/',\n'动漫壁纸@@http://www.animetox.com/',\n\n'百年漫画@@https://m.bnmanhua.com/',\n'178漫画@@http://178mh.com',\n'漫画@@http://m.manhuatt.com/',\n'98漫画@@http://www.98mh.com',\n'517漫画@@http://www.517mh.net',\n'36漫画@@https://www.36mh.com',\n'叭嗒漫画@@http://acn.m.iqiyi.com/comic/home',\n'漫画人@@http://m.dm5.com',\n'522漫画@@http://www.love127.com',\n'星辰漫画@@http://m.xcmh.cc',\n'奇妙漫画@@https://www.qimiaomh.com',\n'4399漫画@@http://m.4399dmw.com/',\n'咚漫@@https://m.dongmanmanhua.cn/',\n'大魔兔漫画@@http://www.damotu.com/',\n'M漫画@@http://mangabz.com/',\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nfor (var i = 0; i < t.length && i < 3; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.desc = k[0];\n  r.url = k[1];\n  r.pic_url = k[2];\n  r.col_type = 'movie_3';\n  d.push(r);\n}\n\nfor (var i = 3; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  if (k.length < 2) continue;\n  var r = {};\n  r.title = k[0];\n  r.url = k[1];\n  r.col_type = 'text_3';\n  d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"③动漫","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"firstHeader":"class","last_chapter_rule":"","title":"维奇动漫","author":"道长&&Killer","version":1,"url":"https://www.uiviki.com/vod-fyarea-id-fyclass-fyyear-page-fypage.html","col_type":"movie_3","class_name":"分类:连载&日漫&国漫&预告","class_url":"1&2&3&4","area_name":"类型:全部&轻改&游改&漫改&原创&后宫&乙女&耽美&百合&萌系&搞笑&热血&催泪&机战&恋爱&伪娘&科幻&奇幻&推理&音乐&校园&偶像&异界&运动&少女&斗智&战斗&日常&魔法&装逼&治愈&战争&历史&猎奇&致郁&修仙&美食&卖肉&励志&职场&神魔&萝莉&御姐&武侠&穿越&冒险","area_url":"type&show-class-轻改&show-class-游改&show-class-漫改&show-class-原创&show-class-后宫&show-class-乙女&show-class-耽美&show-class-百合&show-class-萌系&show-class-搞笑&show-class-热血&show-class-催泪&show-class-机战&show-class-恋爱&show-class-伪娘&show-class-科幻&show-class-奇幻&show-class-推理&show-class-音乐&show-class-校园&show-class-偶像&show-class-异界&show-class-运动&show-class-少女&show-class-斗智&show-class-战斗&show-class-日常&show-class-魔法&show-class-装逼&show-class-治愈&show-class-战争&show-class-历史&show-class-猎奇&show-class-致郁&show-class-修仙&show-class-美食&show-class-卖肉&show-class-励志&show-class-职场&show-class-神魔&show-class-萝莉&show-class-御姐&show-class-武侠&show-class-穿越&show-class-冒险","sort_name":"","year_name":"年代:全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"","year_url":"&year-2021&year-2020&year-2019&year-2018&year-2017&year-2016&year-2015&year-2014&year-2013&year-2012&year-2011&year-2010&year-2009&year-2008&year-2007&year-2006&year-2005&year-2004","find_rule":".vodlist&&.imgtxt;h2&&Text;img&&data-echo;span&&Text;a&&href","searchFind":".vodlist&&.imgtxt;h2&&Text;a&&href;span&&Text;span,1&&Text;img&&data-echo","search_url":"https://www.uiviki.com/vod-search-wd-**.html","titleColor":"#ff871f78","group":"③动漫","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar html=getResCode();\nvar update=parseDomForHtml(html,'.infolist&&.info,2&&Text');\nvar score=parseDomForHtml(html,'#ratewords&&Text');\nvar list=parseDomForArray(html,'#playurl&&li');\n//setError(conts.length);\n\nd.push({\n\t  title: update+'\\n评分：'+score,\n    desc:parseDomForHtml(html,\".animeplot&&Text\"),\n    pic_url:parseDom(html, \"#imglazy&&data-echo\"),\n    url:MY_URL,\n\t col_type: 'movie_1_vertical_pic'\n});\n\nd.push({\n\t\t  title:parseDomForHtml(html,'.data&&.datainfo&&Text'),\n\t\t\tcol_type: 'text_1'\n});\n\nfor(var j = 0; j<list.length; j++){\n\t\td.push({\n\t\t title:parseDomForHtml(list[j], \"h5&&a&&Text\"),\n      url:parseDom(list[j], \"a&&href\") + `@lazyRule=.play-start&&script&&Html.js:eval(input);var url = decodeURIComponent(base64Decode(player_aaaa.url));url.startsWith('//')?'https:'+url:url.endsWith('html')?'https://www.uiviki.com/player/?url='+url:url`,\n       col_type: 'text_2'\n\t\t\t});\n }\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"#ff871f78"},{"firstHeader":"class","last_chapter_rule":"","title":"堆糖.dy","author":"dy2020","version":0,"type":"picture","url":"hiker://empty#https://www.duitang.com/category/?cat=celebrity&sub=%E4%BA%BA%E7%89%A9%E6%98%8E%E6%98%9F_%E7%BE%8E%E5%A5%B3#fypage","col_type":"pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\r\nvar key_n=[\"家居生活\",\"美食菜谱\",\"手工DIY\",\"时尚搭配\",\"美妆造型\",\"婚纱婚礼\",\"文字句子\",\"插画绘画\",\"影音书籍\",\"人物明星\",\"植物多肉\",\"生活百科\",\"搞笑萌宠\",\"人文艺术\",\"设计\",\"古风\",\"壁纸\",\"旅行\",\"头像\",\"摄影\",\"表情\",\"素材\",\"动图\"],key_u=[\"home\",\"food\",\"diy\",\"fashion\",\"beauty\",\"wedding\",\"quotes\",\"painting\",\"movie_music_books\",\"celebrity\",\"plant\",\"tips\",\"moe\",\"art\",\"design\",\"chinoiserie\",\"wallpaper\",\"travel\",\"avatar\",\"photography\",\"emoticon\",\"material\",\"gif\"];\r\nif(MY_PAGE==1){\r\n\tfor (var k in key_n) {\r\n\t\td.push({\r\n\t\t\ttitle: getVar('list_key_1_duitang')==key_n[k]?'‘‘’’<strong><font color= \"#FF00FF\">' + key_n[k] + '</front></strong>':'‘‘’’<font color= \"#098AC1\">' + key_n[k] + '</front>',\r\n\t\t\turl: key_n[k]+`@lazyRule=.js:putVar('list_key_1_duitang',input);putVar('list_key_duitang',input);refreshPage(false);\"hiker://empty\"`,\r\n\t\t\tcol_type:'flex_button',\r\n\t\t});\r\n\t}\r\n\td.push({col_type:'line',});\r\n\tvar u=\"https://www.duitang.com/category/?cat=\"+key_u[key_n.indexOf(getVar('list_key_1_duitang','古风'))];\r\n\tvar html=fetch(u,{headers:{\"User-Agent\":PC_UA}});\r\n\tvar list=pdfa(html,'.dt-cat-content&&a');\r\n\tfor (var list of list) {\r\n\t\td.push({\r\n\t\t\ttitle: decodeURI(getVar('list_key_duitang').split(\"_\")[1])==pdfh(list, 'a&&Text')?'‘‘’’<strong><font color= \"#FF00FF\">' + pdfh(list, 'a&&Text') + '</front></strong>':'‘‘’’<font color= \"#6698FF\">' + pdfh(list, 'a&&Text') + '</front>',\r\n\t\t\turl: pd(list,'a&&href')+`@lazyRule=.js:putVar('list_key_duitang',input.split(\"=\")[2]);refreshPage(false);\"hiker://empty\"`,\r\n\t\t\tcol_type:'flex_button',\r\n\t\t});\r\n\t}\r\n}\r\nvar page_start=(MY_PAGE-1)*100;\r\nvar url_tmp=\"https://www.duitang.com/napi/blog/list/by_filter_id/?start=\"+page_start+\"&include_fields=sender%2Calbum%2Clike_count%2Cmsg&limit=100&filter_id=\"+getVar('list_key_duitang','古风')+\"&path=\";\r\nurl_tmp = url_tmp.replace(/start=\\d+/,\"start=\"+page_start);\r\nvar html_tmp=fetch(url_tmp);\r\nvar json=JSON.parse(html_tmp).data.object_list;\r\nfor(var list of json){\r\n\td.push({\r\n\t\ttitle: list.album.name,\r\n\t\timg: list.photo.path.replace(/(\\.j.+)/,'.thumb.400_0$1'),\r\n\t\turl: \"pics://\"+list.photo.path,\r\n\t\tcol_type:'pic_3',\r\n\t});\r\n}\r\n\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nfor(var k=1;k<=20;k++){\r\n\td.push({\r\n\t\ttitle: getUrl().split(\"=\")[1].split(\"&\")[0]+\" 第\"+((MY_PAGE-1)*20+k)+\"页\",\r\n\t\turl: getUrl().replace(getUrl().split(\"start=\")[1].split(\"&\")[0],((MY_PAGE-1)*20+(k-1))*100),\r\n\t});\n}\r\nsetResult(d);","search_url":"https://www.duitang.com/napi/blog/list/by_search/?kw=**&type=feed&include_fields=top_comments%2Cis_root%2Csource_link%2Citem%2Cbuyable%2Croot_id%2Cstatus%2Clike_count%2Clike_id%2Csender%2Calbum%2Creply_count%2Cfavorite_blog_id&_type=&start=fypage@-1@*100@&limit=100","group":"③图集","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"pic_1_full","sdetail_find_rule":"js:\r\nvar d = [];\r\nvar html=fetch(getUrl());\r\nvar json=JSON.parse(html).data.object_list;\r\nfor(var list of json){\r\n\td.push({\r\n\t\ttitle: list.album.name,\r\n\t\timg: list.photo.path.replace(/(\\.j.+)/,'.thumb.400_0$1'),\r\n\t\turl: list.photo.path,\r\n\t\tcol_type:'movie_3',\r\n\t});\r\n}\r\nsetResult(d);","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"#ff00ff"},{"last_chapter_rule":"","title":"7itv.DT🐺","author":"家娃","version":20221227,"type":"video","url":"hiker://empty##https://www.7itv.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首|更|写真|APP|热|追|专|文|明|热|留|福))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n \nconst page = MY_PAGE\n\ntrue_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n \nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.module-item-note&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  log(MY_URL);\nvar list = parseDomForArray(html,'body&&.module-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc: parseDomForHtml(L, '.module-info-item,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.module-info-item,1&&Text').replace(/剧情：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.7itv.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        var playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        } else {   \n            var apiUrl = 'https://jx.quankan.app/api.php';\n            var apiHtml = request(apiUrl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n                },\n                body: \"url=\" + playUrl + \"&ac=jx\",\n                method: \"POST\"\n            });\n\n            var json = JSON.parse(apiHtml);\n            if (json.code == 200) {\n                playUrl = json.url;\n                return toUrl(playUrl);\n            } else {\n                return 'toast://' + json.msg;\n            }\n        }\n    } catch (e) {\n        //setError(e);\n        return 'video://' + input\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:contains(排序))');\n  \n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\n\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item:matches(集数：|备注：)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n    \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.7itv.com'+parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.module-info-introduction-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://www.7itv.com/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"素白白影视🐰","author":"家娃","version":2,"type":"video","url":"https://www.subaibai.com/fyAll/page/fypage[firstPage=https://www.subaibai.com/fyAll];get;utf-8;{User-Agent@Windows}","col_type":"movie_3","class_name":"全部&电影&电视剧&热门电影&动漫电影&高分电影","class_url":"movie_bt&new-movie&dianshiju&hot-month&movie_bt_series/dongmandy&gf","area_name":"动漫剧&动漫电影&国产剧&国产电影&日剧&日韩电影&欧美剧","area_url":"movie_bt_series/dongmanju&movie_bt_series/dongmandy&movie_bt_series/guochanju&movie_bt_series/guochandy&movie_bt_series/riju&movie_bt_series/rihandy&movie_bt_series/oumeiju","sort_name":"","year_name":"欧美电影&泰国电影&港剧&港台电影&纪录片&综艺&韩剧&香港经典电影","sort_url":"","year_url":"movie_bt_series/oumeidy&movie_bt_series/thaidy&movie_bt_series/gangju&movie_bt_series/gangtaidy&movie_bt_series/documentary&movie_bt_series/zongyi&movie_bt_series/hanju&movie_bt_series/xianggangdy","find_rule":".bt_img&&li;img&&alt;img&&data-original;.jidi||.qb&&Text;a&&href.js: input + \"#immersiveTheme#\"","searchFind":".search_list&&li;img&&alt;a&&href.js: input + \"#immersiveTheme#\";.qb||.nostag||.qr&&Text;.inzhuy&&Text;img&&data-original","search_url":"https://www.subaibai.com/grabble?q=**&f=_all&p=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","group":"③家娃","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//素白白免嗅by家娃\nvar lazy = $(\"\").lazyRule(() => {\n    eval(getCryptoJS());\n    \n    var playerHtml = request(input);\n    var dStr = playerHtml.match(/var d(.*?)\"/)[1];    \n    dStr = \"d\" + dStr.substring(0, dStr.length - 1);\n    //log(dStr);\n    var kStr = playerHtml.match(/var k(.*?)\"/)[1];\n    //log(kStr);\n    kStr = \"k\" + kStr.substring(0, kStr.length - 1);\n    var html2 = playerHtml.replace(dStr, '你大爷').replace(kStr, '你大妈');\n    //log(html2);\n    var mydata = html2.match(/你大爷=\"(.*?)\"/)[1];\n    var myKey = html2.match(/var 你大妈\\(\"(.*?)\"/)[1];\n\tvar myIv = html2.match(/var iv=md5.enc.Utf8.parse\\((.*?)\\)/)[1];\n    //log(mydata);\n    //log(myKey+\"*********\"+myIv);\n    myKey = CryptoJS.enc.Utf8.parse(myKey);\n    var iv = CryptoJS.enc.Utf8.parse(myIv); //1234567890983456\n    var decrypted = CryptoJS.AES.decrypt(mydata, myKey, {\n        iv: iv,\n        mode: CryptoJS.mode.CBC,\n        padding: CryptoJS.pad.Pkcs7\n    });\n    var funstr = decrypted.toString(CryptoJS.enc.Utf8);\n    funstr = funstr.replace(/'/g, '\"'); \n    //log(funstr);\n    var jsurl = funstr.match(/url: \"(.*?)\"/)[1];\n   // log(jsurl);\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    return video\n});\n\n\n\n//线路名列表的定位\nvar arts = parseDom(getResCode(), 'body&&Html').match(/<div class=\\\"mi_paly_box[\\s\\S]*?<\\/span>/g);\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDom(getResCode(), 'body&&Html').match(/class=\\\"paly_list_btn[\\s\\S]*?<\\/div>/g);\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.moviedteail_list&&li,4&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.moviedteail_list&&li,6&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.moviedteail_list&&li,3&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.moviedteail_list&&li,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.dyimg&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.yp_context&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"金曼TV.DT🐺","author":"家娃","version":20221226,"type":"video","url":"hiker://empty##https://jinmantv.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|写真|APP|热|追|专|文|明|热|留|福))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n \nconst page = MY_PAGE\n\ntrue_url = true_url.replace(/type/, \"show\").replace('.html', '/page/' + page + '.html')\n \nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.module-item-note&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  log(MY_URL);\nvar list = parseDomForArray(html,'body&&.module-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc: parseDomForHtml(L, '.module-info-item,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.module-info-item,1&&Text').replace(/剧情：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://jinmantv.com/index.php/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        var playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        } else {\n            var jxUrl = 'https://kanb.tv/kanbplay/?url=' + playUrl + '&next=//jinmantv.com' + '' + player_data.link_next;\n         // log(jxUrl)\n            var jxHtml = request(jxUrl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n                },\n                method: \"GET\",\n                timeout:10000\n            });\n          //log(jxHtml)\n            eval(jxHtml.match(/var config = {[\\s\\S]*?}/)[0]);\n            //log(config.url)\n            return toUrl(config.url);\n        }\n    } catch (e) {\n        //setError(e);\n        return 'video://' + input\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:contains(排序))');\n  \n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\n\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item:matches(片长：|备注：)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\nvar 简介 = parseDomForHtml(html, '.show-desc&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n    \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://jinmantv.com/upload/mxprocms/20221021-1/d6260486e8a16e01a0712455689bd34f.png"},{"last_chapter_rule":"","title":"土狗影院.D🐺","author":"家娃","version":20221124,"type":"video","url":"hiker://empty##https://v.qiau.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.conch-nav&&.hl-navswiper'\nconst 拼接分类 = 'body&&#conch-content&&.hl-filter-wrap:not(:matches(已选))'\nconst 小类定位 = 'body&&a:not(:matches(首页|角色|剧情|专题|留言|最新|排行|APP|重新))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n//log(true_url)\nconst page = MY_PAGE;\ntrue_url = true_url.replace(/type/, \"show\").replace('.html', '/page/' + page + '.html')\n//log('true_url-->'+true_url)\nvar html = request(true_url)\n //log(html)\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = parseDomForArray(html, 'body&&.hl-vod-list&&li'); //列表\nfor (var j in list) {\n    var img = pd(list[j], '.lazyload&&data-original')\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.remarks&&Text'), //描述\n        pic_url: parseDom(list[j], '.hl-lazy&&data-original') + '@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.hl-one-list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.hl-lc-1&&Text').replace(/\\//g, ' '),\n       content:parseDomForHtml(list[j], '.hl-lc-2&&Text').replace(/\\//g, ' '),\n       img: parseDom(list[j], '.hl-lazy&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://v.qiau.cn/index.php/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n \nvar lazy = $('').lazyRule(() => {\n    function btoa(str) {\n        return new Buffer.from(str).toString(\"base64\");\n    };\n\n    function atob(b64) {\n        eval(getCryptoJS());\n        return CryptoJS.enc.Base64.parse(b64).toString(CryptoJS.enc.Latin1)\n    };\n\n    function rc4(data, key, t) {\n        var pwd = key || 'ffsirllq';\n        var cipher = '';\n        var key = [];\n        var box = [];\n        var pwd_length = pwd.length;\n        if (t == 1) {\n            var data = atob(data);\n        } else {\n            var data = encodeURIComponent(data);\n        }\n\n        var data_length = data.length;\n\n        for (i = 0; i < 256; i++) {\n            key[i] = pwd[i % pwd_length].charCodeAt();\n            box[i] = i;\n        }\n        for (j = i = 0; i < 256; i++) {\n            j = (j + box[i] + key[i]) % 256;\n            tmp = box[i];\n            box[i] = box[j];\n            box[j] = tmp;\n        }\n        for (a = j = i = 0; i < data_length; i++) {\n            a = (a + 1) % 256;\n            j = (j + box[a]) % 256;\n            tmp = box[a];\n            box[a] = box[j];\n            box[j] = tmp;\n            k = box[((box[a] + box[j]) % 256)];\n            cipher += String.fromCharCode(data[i].charCodeAt() ^ k);\n        }\n        if (t == 1) {\n            return decodeURIComponent(cipher);\n        } else {\n            return btoa(cipher);\n        }\n    };\n\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return playUrl;\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        if (fro == 'liangzi') {\n            var reqHtml = fetch(playUrl, {});\n            playUrl = 'https://vip.lz-cdn3.com' + reqHtml.match(/main = \"(.*?)\"/)[1];\n            //log(playUrl);\n            return toUrl(playUrl);\n\n        } else {\n            var jxUrl = 'https://bfq.qiau.cn/player/analysis.php?v=' + playUrl;\n            var reqHtml = fetch(jxUrl);\n            eval(reqHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n            playUrl = rc4(config.url, '202205051426239465', 1);\n            //log(playUrl)\n            return toUrl(playUrl);\n        }\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.hl-from-list&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.hl-plays-list');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a:not(:matches(展开))'))\n}\n\nvar 导演 = parseDomForHtml(html, '.hl-full-box&&li:contains(导演：)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.hl-full-box&&li:contains(主演：)&&Text').replace(/\\//g, ' ');\n\nvar 更新 =  parseDomForHtml(html, '.hl-full-box&&li:contains(更新：)&&Text').replace(/\\//g, ' ');\n\nvar 状态 =  parseDomForHtml(html, '.hl-full-box&&li:contains(类型：)&&Text').replace(/\\//g, ' ');\n\nvar 图片 =  parseDom(html, '.hl-lazy&&data-original') + '@Referer=';\n\nvar 简介 =  parseDomForHtml(html, '.hl-full-box&&li:contains(简介：)&&Text').replace(/\\//g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n},\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n},\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)            \\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://v.qiau.cn/mxtheme/images/tb.png"},{"last_chapter_rule":"","title":"午夜影院.DT🐺","author":"家娃","version":20221208,"type":"video","url":"hiker://empty##https://www.rxwuye.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.filter-box&&.clearfix'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n \nconst page = MY_PAGE\n\ntrue_url = true_url.replace(/Type(\\/\\d+)\\.html/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n \nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.row&&.video-content-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.video-name&&Text'), //标题\n        desc: parseDomForHtml(list[j], '.text-center&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  log(MY_URL);\nvar list = parseDomForArray(html,'body&&.post-list');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc: parseDomForHtml(L, '.entry-summary&&p:contains(更新：)&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.entry-summary&&p:contains(剧情：)&&Text').replace(/剧情：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://www.rxwuye.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        var playUrl = player_data.url;\n\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        } else {\n            return 'video://' + input\n        }\n\n    } catch (e) {\n       // setError(e);\n        return 'video://' + input\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.playlist-tab&&.swiper-wrapper&&li');\n  \n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playlist');\n\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar 导演 = parseDomForHtml(html, '.detail-info-text&&p:contains(导演：)&&Text');\n\nvar 主演 = parseDomForHtml(html, '.detail-info-text&&p:contains(演员：)&&Text');\n\nvar 更新 = parseDomForHtml(html, '.detail-info-text&&p:contains(更新)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.detail-info-text&&p:contains(状态：)&&Text');\n\nvar 图片 = 'https://www.rxwuye.com'+parseDomForHtml(html, '.detail-post&&.feaimg&&.lazyload&&data-original')+'@Referer=';\n \nvar 简介 = parseDomForHtml(html, '.entry-content&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": 'https://www.rxwuye.com'+parseDomForHtml(html, '.detail-post&&.lazyload&&data-original'),\n    \"content\": parseDomForHtml(html, '.entry-content&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.rxwuye.com'+parseDomForHtml(html, '.detail-post&&.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.entry-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": 'https://www.rxwuye.com'+parseDomForHtml(html, '.detail-post&&.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.entry-content&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\nconst category = ['<a href=\\\\\\\"/vodshow/1-----------.html\\\\\\\" >电影</a> <a href=\\\\\\\"/vodshow/2-----------.html\\\\\\\" >电视剧</a><a href=\\\\\\\"/vodshow/3-----------.html\\\\\\\" >综艺</a> <a href=\\\\\\\"/vodshow/4-----------.html\\\\\\\" >动漫</a><a href=\\\\\\\"/vodshow/42-----------.html\\\\\\\" >短片</a>']\\n\\ntry {\\n    var categories = category.concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = category\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://www.rxwuye.com/template/a_0011/images/favicon.ico?v=20220914"},{"last_chapter_rule":"","title":"兄弟影视.DT🐺","author":"家娃","version":20221230,"type":"video","url":"hiker://empty##https://brovod.com/show/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-item-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今|写真|APP|专|热|求|发))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\//, 'show$1-----------/').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')\n}\n\n \nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        pic_url: pd(list[j], '.lazyload&&data-original')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-info-item,0&&Text').replace(/\\//g, ' '),\n       content:parseDomForHtml(list[j], '.module-info-item,1&&Text').replace(/\\//g, ' '),\n       img: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://brovod.com/search/**----------fypage---/","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function btoa(str) {\n        return new Buffer.from(str).toString(\"base64\");\n    };\n\n    function atob(b64) {\n        eval(getCryptoJS());\n        return CryptoJS.enc.Base64.parse(b64).toString(CryptoJS.enc.Latin1)\n    };\n\n    function rc4(data, key, t) {\n        var pwd = key || 'ffsirllq';\n        var cipher = '';\n        var key = [];\n        var box = [];\n        var pwd_length = pwd.length;\n        if (t == 1) {\n            var data = atob(data);\n        } else {\n            var data = encodeURIComponent(data);\n        }\n\n        var data_length = data.length;\n\n        for (i = 0; i < 256; i++) {\n            key[i] = pwd[i % pwd_length].charCodeAt();\n            box[i] = i;\n        }\n        for (j = i = 0; i < 256; i++) {\n            j = (j + box[i] + key[i]) % 256;\n            tmp = box[i];\n            box[i] = box[j];\n            box[j] = tmp;\n        }\n        for (a = j = i = 0; i < data_length; i++) {\n            a = (a + 1) % 256;\n            j = (j + box[a]) % 256;\n            tmp = box[a];\n            box[a] = box[j];\n            box[j] = tmp;\n            k = box[((box[a] + box[j]) % 256)];\n            cipher += String.fromCharCode(data[i].charCodeAt() ^ k);\n        }\n        if (t == 1) {\n            return decodeURIComponent(cipher);\n        } else {\n            return btoa(cipher);\n        }\n    };\n\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return playUrl;\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        var jvs = parseDom(html, \".player-box-main&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        }\n        if (jiek != '') {\n            if (jiek.substring(0, 4) == 'http') {\n                jiek = jiek;\n            } else if (jiek.substring(0, 2) == '\\/\\/') {\n                jiek = 'https:' + jiek;\n            } else {\n                jiek = \"https://brovod.com\" + jiek\n            }\n        }\n        var rcKey = '202205051426239465';\n        if (jiek.indexOf('xdys.vip') != -1) {\n            rcKey = '202202222226239222';\n        }\n        var jiexiRef = jiek + playUrl;\n        var jiexiPrefix = jiek.split('?')[0];\n        var jxUrl = jiexiPrefix + 'analysis.php?v=' + playUrl;\n        var jxHtml = request(jxUrl, {\n            headers: {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n                \"Referer\": jiexiRef\n            },\n            method: \"GET\"\n        });\n        eval(jxHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n        playUrl = rc4(config.url, rcKey, 1);\n       // log(playUrl)\n        return toUrl(playUrl);\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:contains(排序))');\n  \n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\n\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item:matches(片长：|备注：)&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\nvar 简介 = parseDomForHtml(html, '.show-desc&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n//处理推送TVBox start\nlet tfpush = getItem('webpush', '0');\nd.push({\n    title: (getItem('webpush', '0') == '1' ? '单集推送🟢' : '单集推送🔴'),\n    url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\n\n    col_type: 'scroll_button'\n});\nd.push({\n    title: '设置电视IP',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\nd.push({\n    title: getItem('hikertvboxset', ''),\n    //url: 'hiker://empty',\n    url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n    col_type: 'scroll_button'\n});\n\nvar playUrls = '';\nfor (var i = 0; i < lists.length; i++) {\n    var list = lists[i];\n    for (var j = 0; j < list.length; j++) {\n        if (j == list.length - 1) {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"$$$\";\n        } else {\n            playUrls += parseDomForHtml(list[j], 'a&&Text') + \"$\" + parseDom(list[j], 'a&&href') + \"#\";\n        }\n    }\n}\n\nplayUrls = playUrls.substring(0, playUrls.length - 3);\n//log(playUrls);\n\nlet push = JSON.stringify({\n    \"name\": getPageTitle(),\n    \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n    \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n    \"from\": tabs.join('$$$'),\n    \"url\": playUrls.replace(/\\&/g, '＆＆')\n});\n//log(push);\n\nd.push({\n    title: \"推送当前页列表到TVBox\",\n    url: $(push).lazyRule(() => {\n        return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\n    }),\n    col_type: \"scroll_button\"\n});\n\nd.push({\n        col_type: 'line_blank'\n    })\n    //处理推送TVBox end\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                if (tfpush == '0') {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href') + lazy,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                } else {\n                    var urlx = 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\n                        \"name\": getPageTitle() + parseDomForHtml(list[j], 'a&&Text'),\n                        \"pic\": parseDomForHtml(html, '.lazyload&&data-original'),\n                        \"content\": parseDomForHtml(html, '.show-desc&&Text'),\n                        \"url\": parseDom(list[j], 'a&&href')\n                    }));\n                    var extrax = {\n                        id: parseDom(list[j], 'a&&href')\n                    };\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: urlx,\n                        col_type: list.length > 4 ? 'text_5' : 'text_2',\n                        extra: extrax\n                    });\n                }\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"}]","proxy":"","icon":"https://xdys.gq/upload/site/20220802-1/de9a631da45ab47e638be8190bfa3b2f.png"},{"last_chapter_rule":"","title":"看看片","author":"家娃","version":1,"type":"video","url":"https://www.18ys.com/fyAll/indexfypage.html[firstPage=https://www.18ys.com/fyAll/index.html]","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dy&tv&Dman&zyyl","area_name":"动作片&剧情片&喜剧片&恐怖片&爱情片&战争片&纪录片&科幻片","area_url":"dz&jq&xiju&kbu&aq&zz&jilu&kh","sort_name":"","year_name":"日韩剧&内地剧&欧美剧&港台剧&东南亚剧","sort_url":"","year_url":"hanju&neidi&om&Tvb&dny","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text-right&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.stui-vodlist__media&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, '.detail&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.18ys.com/search.php?page=fypage&searchword=**","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        var playUrl = request(input).match(/now=\"(.*?)\"/)[1];\n        if (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            if (playUrl.indexOf('bilivideo') != -1) {\n                return playUrl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (playUrl.indexOf('titan.mgtv.com') != -1) {\n                return playUrl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else {\n                return playUrl;\n            }\n        } else {\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + input + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video\n        }\n    } catch (e) {\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    var item =parseDomForHtml(arts[i], 'h3&&Text');\n   if(item.indexOf('猜你喜欢') == -1 && item.indexOf('剧情介绍') == -1){\ntabs.push(item);\n}\n    \n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.pull-right,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.stui-content__detail&&.data,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.18ys.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"电视剧大全","author":"家娃","version":0,"type":"video","url":"https://www.021nba.com/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.index-area&&ul&&li');//列表\nfor (var j in list) {\n\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.other&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazy&&src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.index-area&&ul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.other&&Text'),\n            content: parseDomForHtml(L, '.lzbz&&Text'),\n            img: parseDom(L, '.lazy&&src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.021nba.com/index.php/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        //log(\"playUrl-->\" + playUrl);\n        if (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            if (playUrl.indexOf('bilivideo') != -1) {\n                return playUrl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (playUrl.indexOf('titan.mgtv.com') != -1) {\n                return playUrl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else {\n                return playUrl;\n            }\n        } else {\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + playUrl + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video\n        }\n    } catch (e) {\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.playfrom&&ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n \n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.videourl');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.ct-c&&dd,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.ct-c&&dt,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.ct-c&&dd,4&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.ct-c&&dd,1&&Text').replace(/\\//g, ' ')+' '+parseDomForHtml(html, '.ct-c&&dd,2&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazy&&src');\n\nvar 简介 = parseDomForHtml(html, 'head&&meta,6&&content').replace(/\\//g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"阿哥影院","author":"家娃","version":0,"type":"video","url":"https://agvip.vip/index.php/vod/cid/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&悬疑片&犯罪片&惊悚片&冒险片&纪录片&动画片&微影视&其他片","area_url":"5&6&7&8&9&10&11&12&13&14&15&16&17&18&19","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"20&21&22&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.videoul&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.videoul-title&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.videoul-tips1&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.videoul-img&&lay-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.videoul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.videoul-title&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.videoul-tips1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.videoul-title&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.videoul-img&&lay-src'),\n        });\n    }\nsetResult(d)","search_url":"https://agvip.vip/index.php/search.html?key=**&page=fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n     try {\n         var apiUrl = \"https://agvip.vip/index.php/ajax/vodurl\";\n         //var jid = input.split('\\/')[5].split('.')[0];\nvar jid = input.substring(input.lastIndexOf(\"\\/\")+1,input.lastIndexOf(\".\"));\n        // log(jid);\n         var json = JSON.parse(request(apiUrl, {\n             headers: {\n                 \"User-Agent\": MOBILE_UA//,\n                // \"Referer\": input\n             },\n             body: \"jid=\" + jid,\n             method: \"POST\"\n         }));\n         if (json.code == 1) {\n             var playurl = json.data.playurl;\n             if (playurl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playurl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                 if (playurl.indexOf('bilivideo') != -1) {\n                     return playurl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('titan.mgtv.com') != -1) {\n                     return playurl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('com/gzc') != -1) {\n                     return playurl + ';{Referer@https://www.laibahj.com}';\n                 } else {\n                     return playurl\n                 }\n             }\n         } else {\n             var play = input;\n             showLoading(\"网页嗅探中,请稍后...\");\n             var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                 var urls = _getUrls()\n                 for (var i in urls) {\n                     if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {                       \n                         return urls[i]\n                     }\n                 }\n             })\n         }\n     } catch (e) {\n         return 'toast://嗅探异常，请稍后重试。'\n     }\n\n });\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.play-zu-ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#play-ji-box&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.vod-info-right&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.vod-info-right&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.vod-info-right&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.vod-info-right&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.vod-info-pic&&img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.vod-info-text&&Text').replace(/简介：/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"逗趣影视","author":"家娃","version":0,"type":"video","url":"https://www.douqu.cc/lists/fyAll/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&悬疑片&犯罪片&惊悚片&冒险片&纪录片&动画片&微影视&其他片","area_url":"5&6&7&8&9&10&11&12&13&14&15&16&17&18&19","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"20&21&22&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.videoul&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.videoul-title&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.videoul-tips1&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.videoul-img&&lay-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.videoul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.videoul-title&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.videoul-tips1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.videoul-title&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.videoul-img&&lay-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.douqu.cc/search.html?key=**&page=fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n     try {\n         var apiUrl = \"https://www.douqu.cc/index.php/ajax/vodurl\";\n         var jid = input.split('\\/')[5].split('.')[0];\n         //log(jid);\n         var json = JSON.parse(request(apiUrl, {\n             headers: {\n                 \"User-Agent\": MOBILE_UA,\n                 \"Referer\": input\n             },\n             body: \"jid=\" + jid,\n             method: \"POST\"\n         }));\n         if (json.code == 1) {\n             var playurl = json.data.playurl;\n             if (playurl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playurl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                 if (playurl.indexOf('bilivideo') != -1) {\n                     return playurl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('titan.mgtv.com') != -1) {\n                     return playurl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('com/gzc') != -1) {\n                     return playurl + ';{Referer@https://www.laibahj.com}';\n                 } else {\n                     return playurl\n                 }\n             }\n         } else {\n             var play = input;\n             showLoading(\"网页嗅探中,请稍后...\");\n             var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                 var urls = _getUrls()\n                 for (var i in urls) {\n                     if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {                       \n                         return urls[i]\n                     }\n                 }\n             })\n         }\n     } catch (e) {\n         return 'toast://嗅探异常，请稍后重试。'\n     }\n\n });\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.play-zu-ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#play-ji-box&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.vod-info-right&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.vod-info-right&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.vod-info-right&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.vod-info-right&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.vod-info-pic&&img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.vod-info-text&&Text').replace(/简介：/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.douqu.cc/favicon.ico"},{"last_chapter_rule":"","title":"必搜影院","author":"家娃","version":0,"type":"video","url":"https://biso.cc/show/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&电影解说","class_url":"1&2&4&3&5","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影","area_url":"6&7&8&9&10&11&12&21&22","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"13&14&15&16&20","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.module-item-caption&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/剧情：/g,' '),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"https://biso.cc/search/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    var urll = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        urll = player_data.url;\n        if (player_data.encrypt == '1') {\n            urll = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            urll = unescape(base64Decode(player_data.url));\n        }; \n        if (urll.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urll.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            if (urll.indexOf('bilivideo') != -1) {\n                return urll + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (urll.indexOf('titan.mgtv.com') != -1) {\n                return urll + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else if (urll.indexOf('com/gzc') != -1) {\n                return urll + ';{Referer@https://www.laibahj.com}';\n            } else {\n                return urll;\n            }\n        } else {\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + jiexi + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('com/gzc') != -1) {\n                                return urls[i] + ';{Referer@https://www.laibahj.com}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video\n        }\n    } catch (e) {\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&.sqjj_a&&Text').replace(/[展开全部]/g, ' ').replace(/[收起部分]/g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://biso.cc/template/dianyingim/img/logo.png"},{"last_chapter_rule":"","title":"昌龙影视","author":"家娃","version":0,"type":"video","url":"https://www.xgchanglong.com/lists/fyAll/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&悬疑片&犯罪片&惊悚片&冒险片&纪录片&动画片&微影视&其他片","area_url":"5&6&7&8&9&10&11&12&13&14&15&16&17&18&19","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"20&21&22&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.videoul&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.videoul-title&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.videoul-tips1&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.videoul-img&&lay-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.videoul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.videoul-title&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.videoul-tips1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.videoul-title&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.videoul-img&&lay-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.xgchanglong.com/search.html?key=**&page=fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n     try {\n         var apiUrl = \"https://www.xgchanglong.com/index.php/ajax/vodurl\";\n         var jid = input.split('\\/')[5].split('.')[0];\n         //log(jid);\n         var json = JSON.parse(request(apiUrl, {\n             headers: {\n                 \"User-Agent\": MOBILE_UA,\n                 \"Referer\": input\n             },\n             body: \"jid=\" + jid,\n             method: \"POST\"\n         }));\n         if (json.code == 1) {\n             var playurl = json.data.playurl;\n             if (playurl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playurl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                 if (playurl.indexOf('bilivideo') != -1) {\n                     return playurl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('titan.mgtv.com') != -1) {\n                     return playurl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                 } else if (playurl.indexOf('com/gzc') != -1) {\n                     return playurl + ';{Referer@https://www.laibahj.com}';\n                 } else {\n                     return playurl\n                 }\n             }\n         } else {\n             var play = input;\n             showLoading(\"网页嗅探中,请稍后...\");\n             var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                 var urls = _getUrls()\n                 for (var i in urls) {\n                     if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {                       \n                         return urls[i]\n                     }\n                 }\n             })\n         }\n     } catch (e) {\n         return 'toast://嗅探异常，请稍后重试。'\n     }\n\n });\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.play-zu-ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#play-ji-box&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.vod-info-right&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.vod-info-right&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.vod-info-right&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.vod-info-right&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.vod-info-pic&&img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.vod-info-text&&Text').replace(/简介：/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"裤子影视","author":"家娃","version":0,"type":"video","url":"https://www.jkbxqy.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫","class_url":"1&2&4","area_name":"动作片&科幻片&爱情片&喜剧片&战争片&剧情片&惊悚片","area_url":"6&7&8&9&10&11&12","sort_name":"","year_name":"国产剧&日韩剧&欧美剧&TVB经典","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h4&&Text'),//标题\n       desc: '',//描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, '.thumb&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.jkbxqy.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.myui-content__detail&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&.data&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"聚合视频🐰","author":"家娃","version":1,"type":"video","url":"https://www.jhystv.com/vodshow/fyAll/page/fypage/","col_type":"movie_3","class_name":"电影片库&电视剧片库&综艺片库&动漫片库&音乐片库&B站片库&少儿片库&预告片库","class_url":"1&2&3&4&45&48&68&53","area_name":"动作片&爱情片&科幻片&恐怖片&喜剧片&悬疑片&战争片&微电影&犯罪片&剧情片&惊悚片&奇幻片&冒险片&动画电影&电影解说&记录片&灾难片&魔幻片&音乐片&青春片","area_url":"6&7&8&9&10&11&22&5&27&21&31&32&41&42&55&56&57&58&59&60","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰剧&其他剧","sort_url":"","year_url":"26&24&23&25&40&39&61","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-text')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-search-item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h3&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], '.video-info-main&&.video-info-items,1&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-src'),//【图片】\n       url: parseDom(list[j],'.video-info-header&&a&&href')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.jhystv.com/vodsearch/page/fypage/wd/**/","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\nif (jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)) {\n    var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');\n} else {\n    var jsFile = fetch(JSON.parse(jsUrl).cj);\n}\neval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js: var json = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var encrypt = json.encrypt; var jsurl ='';if(encrypt ==\"1\"){jsurl = unescape(json.url)}else{jsurl=unescape(base64Decode(json.url))}if(jsurl.match(/youku|mgtv|xigua|qq.com|qiyi|migu|bili|sohu|pptv|letv/)){var input=jsurl;` + lazy + `}else{jsurl}`;\n\n//通免\nvar lazy2 = $('').lazyRule(() => {\n    var urll = \"\";\n    //断插初始化调用\n    eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        urll = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            urll = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            urll = unescape(base64Decode(player_data.url));\n        };\n       // log(\"playUrl-->\"+urll);\n        if (urll.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urll.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n\n            if (urll.indexOf('bilivideo') != -1) {\n                return urll + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (urll.indexOf('titan.mgtv.com') != -1) {\n                return urll + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else if (urll.indexOf('com/gzc') != -1) {\n                return urll + ';{Referer@https://www.laibahj.com}';\n            } else {\n                return urll;\n            }\n        } else {\n            var jvs = parseDom(html, \".player-wrapper&&script,1&&src\");\n            eval(request(jvs, {}));\n            var jiek = '';\n            if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n                jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n            } else {\n                return urll\n            };\n            \n            var jiexi = jiek + urll;\n            log(jiexi);\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'webRule://' + jiexi + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('com/gzc') != -1) {\n                                return urls[i] + ';{Referer@https://www.laibahj.com}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    //return 'toast://嗅探失败，可能链接无法访问。'\n                    showLoading(\"原嗅探失败,断插解析中...\");\n                    return aytmParse(jsurl);\n                }\n            });\n            return video\n        }\n\n    } catch (e) {\n        showLoading(\"原站解析异常,断插解析中...\");\n        return aytmParse(urll);\n    }\n\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-main&&.video-info-items,6&&Text').replace(/\\//g, ' ').replace(/剧情：/g, ' ');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.jhystv.com/template/mxone/mxstatic/picture/logo.png"},{"last_chapter_rule":"","title":"看看猫影院","author":"家娃","version":0,"type":"video","url":"https://www.laibahj.com/vodshow/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动画片&犯罪片&惊悚片&奇幻片&武侠片&悬疑片&冒险片","area_url":"6&7&8&9&10&11&12&40&28&27&76&77&78&80&81","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&东南亚剧","sort_url":"","year_url":"13&14&15&16&22","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&.pack-ykpack');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.pack-prb&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.eclazy&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.ec-search&&.search-list');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.ec-item&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.ecitem-desc&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.eclazy&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.laibahj.com/vodsearch**/page/fypage.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\n    var d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    var urll = \"\";\n    //断插初始化调用\n    eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        urll = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            urll = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            urll = unescape(base64Decode(player_data.url));\n        };\n        var jvs = parseDom(html, \"#bofang_box&&script,1&&src\");\n\n        eval(request(jvs, {}));\n        var jiek = '';\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            return urll\n        };\n        //log(jiek);\n        var jiexi = jiek + urll;\n        showLoading(\"正在进行日志检索，请稍候...\");\n        var video = 'webRule://' + jiexi + '@' + $.toString(() => {\n            //fba.log(fba.getUrls());\n            var urls = _getUrls();\n            if (urls.length > 0) {\n                for (var i in urls) {\n                    if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('com/gzc') != -1) {\n                            return urls[i] + ';{Referer@https://www.laibahj.com}';\n                        } else {\n                            return urls[i]\n                        }\n                    }\n                }\n            } else {\n                fba.hideLoading();\n                //return 'toast://嗅探失败，可能链接无法访问。'\n                showLoading(\"原嗅探失败,断插解析中...\");\n                return aytmParse(jsurl);\n            }\n        });\n        return video\n    } catch (e) {\n        showLoading(\"原站解析异常,断插解析中...\");\n        return aytmParse(jsurl);\n    }\n\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#tag&&.swiper-wrapper&&a');\n//log(arts);\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    //log(arts[i]);\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(//g, ''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#tagContent&&.content_playlist');\n//log(conts);\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.s-top-info-detail&&p,2&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.s-top-info-detail&&p,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.s-top-info-detail&&p,3&&Text').replace(/\\//g, ' ') + ' ' + parseDomForHtml(html, '.s-top-info-detail&&p,5&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.s-top-info-detail&&p,7&&Text').replace(/\\//g, ' ') + ' ' + parseDomForHtml(html, '.s-top-info-detail&&p,4&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.s-cover&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.desc_txt&&span&&Text').replace(/\\//g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n//魔改断插调用代码\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\nd.push({\n    title: '断插设置',\n    url: setupPages(\"设置\"),\n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\",\n    col_type: 'icon_2_round'\n})\nd.push({\n    title: '断插编辑',\n    url: setupPages(\"编辑\"),\n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\",\n    col_type: 'icon_2_round'\n});\n\n\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"火鸟影视","author":"家娃","version":0,"type":"video","url":"http://www.jyh189.com/hnshow-fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&纪录片","class_url":"dianying&lianxuju&dongman&zongyi&jilupian","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"guochanju&gangtaiju&riranju&oumeiju&haiwaiju","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.detail&&h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"http://www.jyh189.com/hnsearch**/page/fypage.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    try {\n        var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n        //log(player);\n        var jsurl = player.url;\n        var from = player.from;\n        if (jsurl.search(/m3u8|mp4|flv/) > -1) {\n            return jsurl;\n        } else if (from.search(/dbyun/) > -1) {\n            var reqStr = request(jsurl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n                    \"Referer\": \"http://www.jyh189.com/\"\n                },\n                method: \"get\"\n            }).match(/main = \"(.*?)\"/)[1];\n            if (reqStr.search(/m3u8|mp4|flv/) > -1) {\n                var urlArray = jsurl.split(\"\\/\");\n                var playerUri = urlArray[0] + \"//\" + urlArray[2] + reqStr;\n                //log(playerUri);\n                return playerUri;\n            }\n        } else {\n            var play = input;\n            showLoading(\"网页嗅探中,请稍后...\");\n            var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                var urls = _getUrls()\n                for (var i in urls) {\n                    if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                        //fy_bridge_app.log(urls[i])\n                        return urls[i]\n                    }\n                }\n            })\n        }\n    } catch (e) {\n        return \"toast://解析失败,请稍后重试...\";\n    }\n\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.myui-content__detail&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '#desc&&.text-collapse&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.jyh189.com/template/reying//images/favicon.png"},{"last_chapter_rule":"","title":"CC视频","author":"家娃","version":0,"type":"video","url":"http://www.ccsp.cc/vodshow/fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&纪录片&奇幻片&其他","area_url":"6&7&8&9&10&11&12&20&21&42&43","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"13&14&15&16&23","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, '.video-info-header&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"http://www.ccsp.cc/vodsearch/**----------fypage---/","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n    var jsurl = player.url;\n\tvar from = player.from;\n    if (jsurl.search(/m3u8|mp4|flv/) > -1) {\n        return jsurl;\n    } else {\n\t\tif(from.search(/qiyi|qq|youku|sohu|bilibili|ltm3u8|mgtv/) > -1){\n\t\t\tvar apiUrl = \"https://jiexixx.ccsp.cc/dmplay/?url=\";\n\t\t}\n\t\tif(from.search(/renrenmi/) > -1){\n\t\t\tvar apiUrl = \"https://json.1920i.com/lgjk/?url=\";\n\t\t}\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    \n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.sqjj_a&&Text').replace(/[收起]/g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.ccsp.cc/mxstatic/picture/logo.png"},{"last_chapter_rule":"","title":"GTian影视","author":"家娃","version":0,"type":"video","url":"https://v.gtian.top/index.php/vod/cid/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&悬疑片&犯罪片&惊悚片&冒险片&纪录片&动画片","area_url":"5&6&7&8&9&10&11&12&13&14&15&16&17","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"20&21&22&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vod_list&&li');//列表\nfor (var j in list) {\n  //log(list[j])\n  d.push({\n       title: parseDomForHtml(list[j], '.name&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.state&&Text'),//双重描述\n       pic_url: parseDom(list[j], 'img&&lay-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.vod_list&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.name&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.state&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.actor&&Text').replace(/\\//g,' '),\n            img: parseDom(L, 'img&&lay-src'),\n        });\n    }\nsetResult(d)","search_url":"https://v.gtian.top/index.php/search.html?key=**&page=fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var jid = request(input).match(/data-jid=\"(.*?)\"/)[1];\n    var jsonStr = request(\"https://v.gtian.top/index.php/ajax/vodurl\", {\n        headers: {\n            \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n            \"Referer\": input\n        },\n        body: \"jid=\" + jid,\n        method: \"POST\"\n    })\n    var player = JSON.parse(jsonStr);\n    //log(player);\n    var jsurl = player.data.playurl;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        return jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    \n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.zu-box&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.ji-box&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.info&&p,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.info&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.info&&p,3&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.info&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.vod-info&&.pic&&img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.info&&.text&&Text').replace(/简介：/g,'');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://v.gtian.top/favicon.ico"},{"last_chapter_rule":"","title":"站帮影视","author":"家娃","version":1,"type":"video","url":"http://www.vipz8.cn/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&lianxuju&dongman&zongyi","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text_right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  \nvar list = parseDomForArray(html,'body&&.vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n\n if(parseDomForHtml(L, 'h4&&a&&title').indexOf('广告位')==-1){\n     d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.searchlist_titbox&&p,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.searchlist_titbox&&p,0&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n}\n        \n    }\nsetResult(d)","search_url":"http://www.vipz8.cn/index.php/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\n    var d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\nif (jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)) {\n    var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');\n} else {\n    var jsFile = fetch(JSON.parse(jsUrl).cj);\n}\neval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);jsurl =decodeURIComponent(base64Decode(jsurl));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;` + lazy + `}else{jsurl}`;\n\n//通免 \nvar lazy2 = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var deuri = decodeURIComponent(base64Decode(jsurl));\n        //log(deuri);\n        if (deuri.search(/m3u8|mp4/) > -1) {\n            return deuri;\n        } else if (player.from == \"xkyun\") {\n            var reqUrl = request(deuri, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA,\n                    \"Referer\": \"https://api.okjx.cc:3389/\"\n                },\n                method: \"GET\"\n            });\n            reqUrl = \"https://new.ha1916.com\" + reqUrl.match(/url\":\"(.*?)\"/)[1];\n            //log(reqUrl);\n            return reqUrl;\n        } else if (player.from == \"leduo\") {\n            var api = \"https://api.ldjx.cc/wp-api/ifrty.php?isDp=1&vid=\" + deuri;\n            var url1 = (fetch(api).match(/url1='(.*?)'/)[1]).replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\");\n            //log(base64Decode(url1));\n            var playerUri = base64Decode(url1);\n\n            return playerUri;\n        } else {\n            var play = input;\n            showLoading(\"网页嗅探中,请稍后...\");\n            var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                var urls = _getUrls()\n                for (var i in urls) {\n                    if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                        //fy_bridge_app.log(urls[i])\n                        return urls[i]\n                    }\n                }\n            })\n\n        }\n\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playlist_notfull');\nvar lists = [];\nfor (var i in conts) {\n    if (i > 0) {\n        lists.push(parseDomForArray(conts[i], 'body&&a'))\n    }\n\n}\n\nvar 导演 = parseDomForHtml(html, '.content_min&&ul&&.data,3&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.content_min&&ul&&.data,2&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.content_min&&ul&&.data,1&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.content_min&&ul&&.data,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&span&&Text');\n\n//标题\nvar title = ''; //parseDomForHtml(html, '.title-left&&h1&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n\\t\\t\\t\\t\\t\\t\\t' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n/*\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n*/\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插', '嗅探', '网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode', '断插');\n    return it === test_mode ? '👉' + it : it;\n});\nd.push({\n    title: '‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode', '断插') + '</front></strong>',\n    col_type: 'scroll_button',\n    url: $(sel_title, 3).select(() => {\n        input = input.replace(/👉/g, '');\n        setItem('dn.test_mode', input);\n        refreshPage(true);\n        return 'toast://已切换模式为:' + input\n    })\n});\nif (getItem('dn.test_mode', '断插认') === '断插') {\n    var lazy = lazy1\n} else if (getItem('dn.test_mode', '断插') === '嗅探') {\n    var lazy = lazy2\n} else {\n    var lazy = \"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    // log('选集有：'+list.length+' · 线路有：'+tabs.length)\n    // 将反序归正\n    try {\n        if (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0] > pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n    } catch (e) {}\n    if (tabs.length > 0 || list.length > 2) {\n        var icon_s = 'http://82.156.222.77/weisyr/icon/';\n        if (getMyVar('选集排序') == 1) {\n            var avatar = icon_s + '正序.svg'\n        } else {\n            var avatar = icon_s + '反序.svg'\n        }\n\n        d.push({\n            col_type: 'line_blank'\n        });\n\n        d.push({\n            title: '<font color=\"#778899\">当前线路</font></small>' + getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n                \"</font></small>\",\n            url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n            col_type: 'avatar',\n            img: avatar\n        })\n        d.push({\n            col_type: 'line'\n        });\n    }\n\n    for (let i = 0; i < 5; i++) {\n        d.push({\n            col_type: \"blank_block\"\n        })\n    }\n\n    function playLists() {\n        var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n        if (parseDomForHtml(list[j], 'a&&Text').indexOf('展开') == -1) {\n            if (list.length < 5) {\n                var col = 'text_2'\n            } else {\n                var col = jm.length > 5 ? 'text_3' : 'text_5'\n            }\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                extra: {\n                    id: parseDom(list[j], 'a&&href'),\n                    blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n                },\n                col_type: col\n            });\n        }\n\n    }\n    // 开始选集分区\n    addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区（list替换成你的选集数组）\n    var 选集数组 = list; //改\n    if (选集数组.length > 110) {\n        //设置每区选集数目\n        var page_number = 100;\n        let 底部换页 = '关闭';\n        var star = getMyVar('分集起', '1');\n        var end = getMyVar('分集终', JSON.stringify(page_number));\n        var total = Math.ceil(选集数组.length / page_number);\n        var catalogue = []\n        for (let i = 0; i < total; i++) {\n            catalogue += i * page_number + ',';\n            catalogue = catalogue.split(',');\n        }\n        for (let i = 0; i < 8; i++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n        for (var i = 0; i < catalogue.length - 1; i++) {\n            var total1 = parseInt(catalogue[i]) + 1;\n            var total2 = parseInt(catalogue[i + 1]);\n            if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n            d.push({\n                title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n                url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                    putMyVar('分集起', total1);\n                    putMyVar('分集终', total2);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, total1, total2),\n                col_type: 'scroll_button'\n            });\n        }\n        if (getMyVar('选集排序') == 1) {\n            for (var j = end - 1; j >= star - 1; j--) {\n                // 打印选集列表\n                playLists() //改\n            }\n        } else {\n            for (var j = star - 1; j < end; j++) {\n                // 打印选集列表\n                playLists() //改\n            }\n        }\n        //底部页码\n        d.push({\n            col_type: \"line\"\n        })\n        var yema = Math.ceil(end / page_number);\n        d.push({\n            title: \"““”” <small><small><font color='grey'>\" + yema + ' / ' + total + \"</font> </small></small>\",\n            col_type: \"text_center_1\",\n            extra: {\n                lineVisible: false\n            }\n        })\n        if (底部换页 == '开启') {\n            d.push({\n                title: '首页',\n                url: $(\"#noLoading#\").lazyRule((page_number) => {\n                    putMyVar('分集起', '1');\n                    putMyVar('分集终', page_number);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '上一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) - page_number;\n                    var e = parseInt(end) - page_number;\n                    if (end = 选集数组.length) var e = s + page_number - 1;\n                    if (s < 1) {\n                        var s = 1;\n                        var e = page_number;\n                    }\n                    if (s > 0) {\n                        putMyVar('分集起', s);\n                        putMyVar('分集终', e);\n                        //log(s + '-' + e)\n                        refreshPage(false);\n                    }\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '下一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) + page_number;\n                    var e = parseInt(end) + page_number;\n                    //log(s + '-' + e)\n                    if (e > 选集数组.length) {\n                        var s = (total - 1) * page_number + 1;\n                        var e = 选集数组.length;\n                    }\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', e);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '尾页',\n                url: $(\"#noLoading#\").lazyRule((page_number, total, 选集数组) => {\n                    var s = (total - 1) * page_number + 1;\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', 选集数组.length);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n        }\n    }\n\n    // 结束选集分区\n    else {\n        if (getMyVar('选集排序') == 1) {\n            for (var j = list.length - 1; j >= 0; j--) {\n                playLists()\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                playLists()\n            }\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.vipz8.cn/template/ec_TV/images/ico/favicon.ico"},{"last_chapter_rule":"","title":"嗖嗖影视","author":"家娃","version":1,"type":"video","url":"https://www.ssoys.com/vodtype/fyAll-fypage/","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&奇幻片","area_url":"6&7&8&9&10&11&12&34","sort_name":"","year_name":"国产剧&台湾剧&港剧&韩剧&美剧&日剧&泰剧&海外剧","sort_url":"","year_url":"13&14&22&15&16&21&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.fed-list-info&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.fed-list-title&&a&&Text'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.fed-list-remarks&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.fed-lazy&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n // log(html);\nvar list = parseDomForArray(html,'body&&.fed-part-layout&&.fed-deta-info');\n   //log(list);\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h1&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.fed-part-rows&&li,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.fed-part-esan&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.fed-lazy&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.ssoys.com/vodsearch**/page/fypage/","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = request(input).match(/data-play=\"(.*?)\"/)[1];\n    //log(\"*****\"+player.slice(3));\n    var jsurl = base64Decode(player.slice(3));\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.fed-drop-tops&&ul&&li');\n//log(arts);\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item&&.fed-part-rows');\n//log(conts);\nvar lists = [];\nfor (var i in conts) {\n    if(i>0){\n      lists.push(parseDomForArray(conts[i], 'body&&a'));\n    }\n}\n\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,0&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,2&&Text').replace(/\\//g,' ')+' '+parseDomForHtml(html, '.fed-deta-content&&ul&&li,3&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,4&&Text').replace(/\\//g,' ')+' '+parseDomForHtml(html, '.fed-deta-content&&ul&&li,5&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,6&&Text').replace(/简介：/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.ssoys.com/upload/site/20220110-1/d4c23ee3157492ede6a6d7a94b3a50db.png"},{"last_chapter_rule":"","title":"特别影视","author":"家娃","version":1,"type":"video","url":"http://www.tebie2.com/fyAll/indexfypage.html[firstPage=http://www.tebie2.com/fyAll/index.html]\n","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dy&dsj&dm&zy","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.index-tj&&ul&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.bz&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazy&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.index-tj&&ul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.bz&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.bz&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazy&&src'),\n        });\n    }\nsetResult(d)","search_url":"http://www.tebie2.com/search.php?page=fypage&searchword=**&searchtype=","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\n    var d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\nif (jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)) {\n    var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');\n} else {\n    var jsFile = fetch(JSON.parse(jsUrl).cj);\n}\neval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(request(input).match(/now=\"(.*?)\"/)[1]);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;` + lazy + `}else{jsurl}`;\n\n//通免 \nvar lazy2 = $(\"\").lazyRule(() => {\n    var player = request(input).match(/now=\"(.*?)\"/)[1];\n    //log(player);\n    var jsurl = player;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.tab1&&ul&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    if (parseDomForHtml(arts[i], 'strong&&Text') != \"\") {\n        tabs.push(parseDomForHtml(arts[i], 'strong&&Text'))\n    }\n\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.taba-down&&.urlli');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n \nvar 导演 = parseDomForHtml(html, '.info&&dl&&dd,2&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.info&&dl&&dd,3&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.info&&dl&&dd,5&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.info&&dl&&dd,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.pic&&img&&src');\n\nvar 简介 = pdfh(html, 'meta,9&&content');\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n\\t\\t\\t\\t\\t\\t\\t' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n/*\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n*/\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插', '嗅探', '网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode', '断插');\n    return it === test_mode ? '👉' + it : it;\n});\nd.push({\n    title: '‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode', '断插') + '</front></strong>',\n    col_type: 'scroll_button',\n    url: $(sel_title, 3).select(() => {\n        input = input.replace(/👉/g, '');\n        setItem('dn.test_mode', input);\n        refreshPage(true);\n        return 'toast://已切换模式为:' + input\n    })\n});\nif (getItem('dn.test_mode', '断插认') === '断插') {\n    var lazy = lazy1\n} else if (getItem('dn.test_mode', '断插') === '嗅探') {\n    var lazy = lazy2\n} else {\n    var lazy = \"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    // log('选集有：'+list.length+' · 线路有：'+tabs.length)\n    // 将反序归正\n    try {\n        if (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0] > pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n    } catch (e) {}\n    if (tabs.length > 0 || list.length > 2) {\n        var icon_s = 'http://82.156.222.77/weisyr/icon/';\n        if (getMyVar('选集排序') == 1) {\n            var avatar = icon_s + '正序.svg'\n        } else {\n            var avatar = icon_s + '反序.svg'\n        }\n\n        d.push({\n            col_type: 'line_blank'\n        });\n\n        d.push({\n                title: '<font color=\"#778899\">当前线路</font></small>' + getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n                    \"</font></small>\",\n                url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n                col_type: 'avatar',\n                img: avatar\n            })\n\n\n        d.push({\n            col_type: 'line'\n        });\n    }\n\n    for (let i = 0; i < 5; i++) {\n        d.push({\n            col_type: \"blank_block\"\n        })\n    }\n\n     function playLists() {\n        var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\t if (parseDomForHtml(list[j], 'a&&Text').indexOf('展开') == -1) {\n\t\t\t if (list.length < 5) {\n\t\t\t\t var col = 'text_2'\n\t\t\t } else {\n\t\t\t\t var col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t\t }\n\t\t\t d.push({\n\t\t\t\t title: jm,\n\t\t\t\t url: parseDom(list[j], 'a&&href') + lazy,\n\t\t\t\t extra: {\n\t\t\t\t\t id: parseDom(list[j], 'a&&href'),\n\t\t\t\t\t blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n\t\t\t\t },\n\t\t\t\t col_type: col\n\t\t\t });\n\t\t }\n        \n    }\n    // 开始选集分区\n    addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区（list替换成你的选集数组）\n    var 选集数组 = list; //改\n    if (选集数组.length > 110) {\n        //设置每区选集数目\n        var page_number = 100;\n        let 底部换页 = '关闭';\n        var star = getMyVar('分集起', '1');\n        var end = getMyVar('分集终', JSON.stringify(page_number));\n        var total = Math.ceil(选集数组.length / page_number);\n        var catalogue = []\n        for (let i = 0; i < total; i++) {\n            catalogue += i * page_number + ',';\n            catalogue = catalogue.split(',');\n        }\n        for (let i = 0; i < 8; i++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n        for (var i = 0; i < catalogue.length - 1; i++) {\n            var total1 = parseInt(catalogue[i]) + 1;\n            var total2 = parseInt(catalogue[i + 1]);\n            if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n            d.push({\n                title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n                url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                    putMyVar('分集起', total1);\n                    putMyVar('分集终', total2);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, total1, total2),\n                col_type: 'scroll_button'\n            });\n        }\n        if (getMyVar('选集排序') == 1) {\n            for (var j = end - 1; j >= star - 1; j--) {\n                // 打印选集列表\n                playLists() //改\n            }\n        } else {\n            for (var j = star - 1; j < end; j++) {\n                // 打印选集列表\n                playLists() //改\n            }\n        }\n        //底部页码\n        d.push({\n            col_type: \"line\"\n        })\n        var yema = Math.ceil(end / page_number);\n        d.push({\n            title: \"““”” <small><small><font color='grey'>\" + yema + ' / ' + total + \"</font> </small></small>\",\n            col_type: \"text_center_1\",\n            extra: {\n                lineVisible: false\n            }\n        })\n        if (底部换页 == '开启') {\n            d.push({\n                title: '首页',\n                url: $(\"#noLoading#\").lazyRule((page_number) => {\n                    putMyVar('分集起', '1');\n                    putMyVar('分集终', page_number);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '上一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) - page_number;\n                    var e = parseInt(end) - page_number;\n                    if (end = 选集数组.length) var e = s + page_number - 1;\n                    if (s < 1) {\n                        var s = 1;\n                        var e = page_number;\n                    }\n                    if (s > 0) {\n                        putMyVar('分集起', s);\n                        putMyVar('分集终', e);\n                        log(s + '-' + e)\n                        refreshPage(false);\n                    }\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '下一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) + page_number;\n                    var e = parseInt(end) + page_number;\n                    log(s + '-' + e)\n                    if (e > 选集数组.length) {\n                        var s = (total - 1) * page_number + 1;\n                        var e = 选集数组.length;\n                    }\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', e);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '尾页',\n                url: $(\"#noLoading#\").lazyRule((page_number, total, 选集数组) => {\n                    var s = (total - 1) * page_number + 1;\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', 选集数组.length);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n        }\n    }\n\n    // 结束选集分区\n    else {\n        if (getMyVar('选集排序') == 1) {\n            for (var j = list.length - 1; j >= 0; j--) {\n                playLists()\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                playLists()\n            }\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://www.tebie2.com/favicon.ico"},{"last_chapter_rule":"","title":"1080影视大全","author":"家娃","version":2,"type":"video","url":"https://www.ki65.com/dylb/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片","area_url":"6&7&8&9&10&11&12&20","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"13&14&15&16","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text_right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.searchlist_titbox&&p,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.searchlist_titbox&&p,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.ki65.com/dyss/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\nif (jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)) {\n    var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');\n} else {\n    var jsFile = fetch(JSON.parse(jsUrl).cj);\n}\neval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;` + lazy + `}else{jsurl}`;\n\n//通免 \nvar lazy2 = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    //log(player);\n    var jsurl = player.url;\n    var jsfrom = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else if (jsfrom.match(/youku|mgtv|ixigua|qq|qiyi|migu|bili|sohu|pptv|letv/)) {\n        var Time = (Math.floor(new Date().getTime() / 1000) * 1).toString();\n        var api = \"https://www.ki65.com/jx/api.php\";\n        var json = JSON.parse(request(api, {\n            headers: {\n                \"User-Agent\": MOBILE_UA,\n                \"Referer\": \"https://www.ki65.com/\"\n            },\n            body: \"url=\" + jsurl + \"&referer=&ref=0&time=\" + Time + \"&type=&other=\" + base64Encode(jsurl) + \"&ios=\",\n            method: \"POST\"\n        }));\n        //log(json);\n        if (json.code == 200) {\n            return json.url;\n        } else {\n            return 'toast://' + json.msg;\n        }\n    } else if (jsfrom == \"leduo\") {\n        var api = \"https://api.ldjx.cc/wp-api/ifrty.php?isDp=1&vid=\" + jsurl;\n        var url1 = (fetch(api).match(/url1='(.*?)'/)[1]).replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\");\n        return base64Decode(url1);\n    } else if (jsfrom == \"fanqie\") {\n        var api = \"https://jiexi.8b5q.cn/player/jx.php?url=\" + jsurl;\n        return request(api, {\n            headers: {\n                \"User-Agent\": MOBILE_UA,\n                \"Referer\": \"https://www.ki65.com/\"\n            },\n            method: \"GET\"\n        }).match(/url\": \"(.*?)\"/)[1];\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.playlist_full');\nvar lists = [];\nfor (var i in conts) {\n   if(i>0){\n     //  log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n    }\n   \n}\n\n//标题\nvar title = parseDomForHtml(html, '.content_detail&&h2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.content_min&&.data,3&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.content_min&&.data,2&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.content_min&&.data,1&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.content_min&&.data,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.full_text&&Text').replace(/\\//g, ' ').replace(/简介：/, '').replace('详情', '').replace('展开全部', '');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n\\t\\t\\t\\t\\t\\t\\t' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n/*\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n*/\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插', '嗅探', '网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode', '断插');\n    return it === test_mode ? '👉' + it : it;\n});\nd.push({\n    title: '‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode', '断插') + '</front></strong>',\n    col_type: 'scroll_button',\n    url: $(sel_title, 3).select(() => {\n        input = input.replace(/👉/g, '');\n        setItem('dn.test_mode', input);\n        refreshPage(true);\n        return 'toast://已切换模式为:' + input\n    })\n});\nif (getItem('dn.test_mode', '断插认') === '断插') {\n    var lazy = lazy1\n} else if (getItem('dn.test_mode', '断插') === '嗅探') {\n    var lazy = lazy2\n} else {\n    var lazy = \"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    // log('选集有：'+list.length+' · 线路有：'+tabs.length)\n    // 将反序归正\n    try {\n        if (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0] > pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n    } catch (e) {}\n    if (tabs.length > 0 || list.length > 2) {\n        var icon_s = 'http://82.156.222.77/weisyr/icon/';\n        if (getMyVar('选集排序') == 1) {\n            var avatar = icon_s + '正序.svg'\n        } else {\n            var avatar = icon_s + '反序.svg'\n        }\n\n        d.push({\n            col_type: 'line_blank'\n        });\n\n        d.push({\n            title: '<font color=\"#778899\">当前线路</font></small>' + getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n                \"</font></small>\",\n            url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n            col_type: 'avatar',\n            img: avatar\n        })\n        d.push({\n            col_type: 'line'\n        });\n    }\n\n    for (let i = 0; i < 5; i++) {\n        d.push({\n            col_type: \"blank_block\"\n        })\n    }\n\n    function playLists() {\n        var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n        if (list.length < 5) {\n            var col = 'text_2'\n        } else {\n            var col = jm.length > 5 ? 'text_3' : 'text_5'\n        }\n        d.push({\n            title: jm,\n            url: parseDom(list[j], 'a&&href') + lazy,\n            extra: {\n                id: parseDom(list[j], 'a&&href'),\n                blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n            },\n            col_type: col\n        });\n    }\n    // 开始选集分区\n    addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区（list替换成你的选集数组）\n    var 选集数组 = list; //改\n    if (选集数组.length > 110) {\n        //设置每区选集数目\n        var page_number = 100;\n        let 底部换页 = '关闭';\n        var star = getMyVar('分集起', '1');\n        var end = getMyVar('分集终', JSON.stringify(page_number));\n        var total = Math.ceil(选集数组.length / page_number);\n        var catalogue = []\n        for (let i = 0; i < total; i++) {\n            catalogue += i * page_number + ',';\n            catalogue = catalogue.split(',');\n        }\n        for (let i = 0; i < 8; i++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n        for (var i = 0; i < catalogue.length - 1; i++) {\n            var total1 = parseInt(catalogue[i]) + 1;\n            var total2 = parseInt(catalogue[i + 1]);\n            if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n            d.push({\n                title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n                url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                    putMyVar('分集起', total1);\n                    putMyVar('分集终', total2);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, total1, total2),\n                col_type: 'scroll_button'\n            });\n        }\n        if (getMyVar('选集排序') == 1) {\n            for (var j = end - 1; j >= star - 1; j--) {\n                // 打印选集列表\n                playLists() //改\n            }\n        } else {\n            for (var j = star - 1; j < end; j++) {\n                // 打印选集列表\n                playLists() //改\n            }\n        }\n        //底部页码\n        d.push({\n            col_type: \"line\"\n        })\n        var yema = Math.ceil(end / page_number);\n        d.push({\n            title: \"““”” <small><small><font color='grey'>\" + yema + ' / ' + total + \"</font> </small></small>\",\n            col_type: \"text_center_1\",\n            extra: {\n                lineVisible: false\n            }\n        })\n        if (底部换页 == '开启') {\n            d.push({\n                title: '首页',\n                url: $(\"#noLoading#\").lazyRule((page_number) => {\n                    putMyVar('分集起', '1');\n                    putMyVar('分集终', page_number);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '上一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) - page_number;\n                    var e = parseInt(end) - page_number;\n                    if (end = 选集数组.length) var e = s + page_number - 1;\n                    if (s < 1) {\n                        var s = 1;\n                        var e = page_number;\n                    }\n                    if (s > 0) {\n                        putMyVar('分集起', s);\n                        putMyVar('分集终', e);\n                        log(s + '-' + e)\n                        refreshPage(false);\n                    }\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '下一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) + page_number;\n                    var e = parseInt(end) + page_number;\n                    log(s + '-' + e)\n                    if (e > 选集数组.length) {\n                        var s = (total - 1) * page_number + 1;\n                        var e = 选集数组.length;\n                    }\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', e);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '尾页',\n                url: $(\"#noLoading#\").lazyRule((page_number, total, 选集数组) => {\n                    var s = (total - 1) * page_number + 1;\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', 选集数组.length);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n        }\n    }\n\n    // 结束选集分区\n    else {\n        if (getMyVar('选集排序') == 1) {\n            for (var j = list.length - 1; j >= 0; j--) {\n                playLists()\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                playLists()\n            }\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.ki65.com/template/conch/asset/img/favicon.png"},{"last_chapter_rule":"","title":"桃林影视","author":"家娃","version":0,"type":"other","url":"https://www.taolinys.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&纪录片&动画电影&悬疑片&冒险片&惊悚片&奇幻片&解说","area_url":"6&7&8&9&10&11&12&31&32&33&38&39&40&41&42","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰国剧","sort_url":"","year_url":"13&14&15&16&20&21","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h4&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text')+' '+parseDomForHtml(list[j], '.pic-tag-top&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.taolinys.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n\tvar jsurl = player.url;\n\tvar jsfrom = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } \t\n\telse if(jsfrom.match(/youku|mgtv|ixigua|qq|qiyi|migu|bili|sohu|pptv|letv/)){\n\t\tvar api = \"https://www.jx.ci/json.php\";\n        var json = JSON.parse(request(api, {\n            headers: {\n                \"User-Agent\": MOBILE_UA\n            },\n            body: \"url=\" + jsurl,\n            method: \"POST\"\n        }));\n       if(json.code == 200){\n             return json.url;\n       }else{\n            return 'toast://'+json.msg;\n       } \n\t}\n\telse if(jsfrom == \"leduo\"){\n\t\tvar api =\"https://api.ldjx.cc/wp-api/ifrty.php?isDp=1&vid=\"+jsurl;\n\t\tvar url1 = (fetch(api).match(/url1='(.*?)'/)[1]).replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\");\n\t\treturn base64Decode(url1);\n\t}\n\n\telse if(jsfrom == \"fanqie\"){\n\t\tvar api = \"https://jiexi.8b5q.cn/player/jx.php?url=\"+jsurl;\n        return request(api, {headers: {\"User-Agent\": MOBILE_UA, \"Referer\": \"https://www.linfengys.com/\"}, method: \"GET\"}).match(/url\": \"(.*?)\"/)[1];\n\t}\n\n\telse {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n  // log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,1&&Text').replace(/\\//g,' ');\nvar 状态 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,0&&Text').replace(/\\//g,' ');\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,4&&Text').replace(/\\//g,' ').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"长空影视🐰","author":"家娃","version":0,"type":"video","url":"https://www.changkongys.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&纪录片&动画电影&悬疑片&冒险片&惊悚片&奇幻片&解说","area_url":"6&7&8&9&10&11&12&31&32&33&38&39&40&41&42","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰国剧","sort_url":"","year_url":"13&14&15&16&20&21","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h4&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.text-right&&Text')+' '+parseDomForHtml(list[j], '.pic-tag-top&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.changkongys.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n\tvar jsurl = player.url;\n\tvar jsfrom = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } \t\n\telse if(jsfrom.match(/youku|mgtv|ixigua|qq|qiyi|migu|bili|sohu|pptv|letv/)){\n\t\tvar api = \"https://www.jx.ci/json.php\";\n        var json = JSON.parse(request(api, {\n            headers: {\n                \"User-Agent\": MOBILE_UA\n            },\n            body: \"url=\" + jsurl,\n            method: \"POST\"\n        }));\n       if(json.code == 200){\n             return json.url;\n       }else{\n            return 'toast://'+json.msg;\n       } \n\t}\n\telse if(jsfrom == \"leduo\"){\n\t\tvar api =\"https://api.ldjx.cc/wp-api/ifrty.php?isDp=1&vid=\"+jsurl;\n\t\tvar url1 = (fetch(api).match(/url1='(.*?)'/)[1]).replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\");\n\t\treturn base64Decode(url1);\n\t}\n\n\telse if(jsfrom == \"fanqie\"){\n\t\tvar api = \"https://jiexi.8b5q.cn/player/jx.php?url=\"+jsurl;\n        return request(api, {headers: {\"User-Agent\": MOBILE_UA, \"Referer\": \"https://www.linfengys.com/\"}, method: \"GET\"}).match(/url\": \"(.*?)\"/)[1];\n\t}\n\n\telse {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n   log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 主演 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 更新 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,4&&Text').replace(/\\//g,' ');\nvar 状态 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,0&&Text').replace(/\\//g,' ');\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 =parseDomForHtml(html, '.myui-content__detail:has(.data)&&.data,3&&Text').replace(/\\//g,' ').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.changkongys.com/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"影视大全","author":"家娃","version":0,"type":"video","url":"https://www.73ys.cc/show/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&记录片&微电影","area_url":"6&7&8&9&10&11&12&20&21","sort_name":"","year_name":"国产剧&香港剧&韩国剧&欧美剧&台湾剧&日本剧&海外剧","sort_url":"","year_url":"13&14&15&16&22&23&24","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text-right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, '.lazyload&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.73ys.cc/search/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.myui-content__detail&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&.data&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.73ys.cc/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"临风影视","author":"家娃","version":0,"type":"video","url":"https://www.linfengys.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&记录片&动画片&悬疑片&冒险片&惊悚片&奇幻片&解说","area_url":"6&7&8&9&10&11&12&31&32&33&38&39&40&41&42","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰剧","sort_url":"","year_url":"13&14&15&16&20&21","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.text-right&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.myui-vodlist__media&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.linfengys.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n\tvar jsurl = player.url;\n\tvar jsfrom = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } \t\n\telse if(jsfrom.match(/youku|mgtv|ixigua|qq|qiyi|migu|bili|sohu|pptv|letv/)){\n\t\tvar api = \"https://www.jx.ci/json.php\";\n        var json = JSON.parse(request(api, {\n            headers: {\n                \"User-Agent\": MOBILE_UA\n            },\n            body: \"url=\" + jsurl,\n            method: \"POST\"\n        }));\n       if(json.code == 200){\n             return json.url;\n       }else{\n            return 'toast://'+json.msg;\n       } \n\t\t\n\t}\n\telse if(jsfrom == \"leduo\"){\n\t\tvar api =\"https://api.ldjx.cc/wp-api/ifrty.php?isDp=1&vid=\"+jsurl;\n\t\tvar url1 = (fetch(api).match(/url1='(.*?)'/)[1]).replace(/RGlkLnBocD9WQ9WED92aWQ9WE1NVFU12awD92aWQ9WE1NVFU1TWQ9WE1NVFU1TWpaNrdt05/, \"\");\n\t\treturn base64Decode(url1);\n\t}\n\n\telse if(jsfrom == \"fanqie\"){\n\t\tvar api = \"https://jiexi.8b5q.cn/player/jx.php?url=\"+jsurl;\n        return request(api, {headers: {\"User-Agent\": MOBILE_UA, \"Referer\": \"https://www.linfengys.com/\"}, method: \"GET\"}).match(/url\": \"(.*?)\"/)[1];\n\t}\n\n\telse {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,0&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&span,1&&Text').replace(/\\//g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.linfengys.com/template/mytheme2/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"独孤宇影视","author":"家娃","version":0,"type":"video","url":"https://www.duguyu.cc/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&记录片&动画片","area_url":"6&7&8&9&10&11&12&20&21","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&泰剧","sort_url":"","year_url":"13&14&16&15&22","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, '.video-serial&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.duguyu.cc/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else if (jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)) {\n        var ref = \"https://www.duguyu.cc/jx/?url=\" + jsurl;\n        var jsurl2 = request(ref).replace(/'/g, '\"').match(/url: \"(.*?)\"/)[1];\n        //log(jsurl2);\n        if (jsurl2.search(/m3u8|mp4/) > -1) {\n            var video = jsurl2;\n        } else {\n            var play = input;\n            showLoading(\"网页嗅探中,请稍后...\");\n            var video = 'x5Rule://' + play + '@' + $.toString(() => {\n                var urls = _getUrls()\n                for (var i in urls) {\n                    if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                        //fy_bridge_app.log(urls[i])\n                        return urls[i]\n                    }\n                }\n            })\n        }\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = '';//parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.zkjj_a&&Text').replace(/\\//g,' ');\n\nvar 更新 ='';//  parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\n\nvar 状态 = '';// parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.sqjj_a&&Text').replace(/&nbsp;/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.duguyu.cc/template/dianyingim/img/logo.png"},{"last_chapter_rule":"","title":"蓝莓屋🐰","author":"家娃","version":0,"type":"video","url":"https://www.lanmeiwu.com/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&41&3","area_name":"动作片&奇幻片&犯罪片&古装片&纪录片&悬疑片&惊悚片&冒险片&武侠片","area_url":"25&24&26&27&28&29&30&31&32","sort_name":"","year_name":"国产剧&香港剧&台湾剧&日本剧&韩国剧&欧美剧&海外剧&泰国剧","sort_url":"","year_url":"13&20&21&16&15&14&23&22","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, '.video-info-header&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.lanmeiwu.com/index.php/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le|renrenmi/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(jsurl.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/rules/DuanNian/MyParse.json\"));eval(request(config.settings.cj));ParseS.maoss(\"https://jx.lanmeiwu.com/?url=\" + jsurl, false, \"A42EAC0C2B408472\")}else{jsurl}`;\n//通免\nvar lazy2 = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-main&&.video-info-items,6&&Text').replace(/\\//g, ' ');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n\\t\\t\\t\\t\\t\\t\\t' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n/*\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n*/\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插', '嗅探', '网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode', '断插');\n    return it === test_mode ? '👉' + it : it;\n});\nd.push({\n    title: '‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode', '断插') + '</front></strong>',\n    col_type: 'scroll_button',\n    url: $(sel_title, 3).select(() => {\n        input = input.replace(/👉/g, '');\n        setItem('dn.test_mode', input);\n        refreshPage(true);\n        return 'toast://已切换模式为:' + input\n    })\n});\nif (getItem('dn.test_mode', '断插认') === '断插') {\n    var lazy = lazy1\n} else if (getItem('dn.test_mode', '断插') === '嗅探') {\n    var lazy = lazy2\n} else {\n    var lazy = \"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    // log('选集有：'+list.length+' · 线路有：'+tabs.length)\n    // 将反序归正\n    try {\n        if (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0] > pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n    } catch (e) {}\n    if (tabs.length > 0 || list.length > 2) {\n        var icon_s = 'http://82.156.222.77/weisyr/icon/';\n        if (getMyVar('选集排序') == 1) {\n            var avatar = icon_s + '正序.svg'\n        } else {\n            var avatar = icon_s + '反序.svg'\n        }\n\n        d.push({\n            col_type: 'line_blank'\n        });\n\n        d.push({\n            title: '<font color=\"#778899\">当前线路</font></small>' + getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n                \"</font></small>\",\n            url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n            col_type: 'avatar',\n            img: avatar\n        })\n        d.push({\n            col_type: 'line'\n        });\n    }\n\n    for (let i = 0; i < 5; i++) {\n        d.push({\n            col_type: \"blank_block\"\n        })\n    }\n\n    function playLists() {\n        var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n        if (list.length < 5) {\n            var col = 'text_2'\n        } else {\n            var col = jm.length > 5 ? 'text_3' : 'text_5'\n        }\n        d.push({\n            title: jm,\n            url: parseDom(list[j], 'a&&href') + lazy,\n            extra: {\n                id: parseDom(list[j], 'a&&href'),\n                blockRules: ['.m4a', '.mp3', '.mp4', '.m3u8', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n            },\n            col_type: col\n        });\n    }\n    // 开始选集分区\n    addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区（list替换成你的选集数组）\n    var 选集数组 = list; //改\n    if (选集数组.length > 110) {\n        //设置每区选集数目\n        var page_number = 100;\n        let 底部换页 = '关闭';\n        var star = getMyVar('分集起', '1');\n        var end = getMyVar('分集终', JSON.stringify(page_number));\n        var total = Math.ceil(选集数组.length / page_number);\n        var catalogue = []\n        for (let i = 0; i < total; i++) {\n            catalogue += i * page_number + ',';\n            catalogue = catalogue.split(',');\n        }\n        for (let i = 0; i < 8; i++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n        for (var i = 0; i < catalogue.length - 1; i++) {\n            var total1 = parseInt(catalogue[i]) + 1;\n            var total2 = parseInt(catalogue[i + 1]);\n            if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n            d.push({\n                title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n                url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                    putMyVar('分集起', total1);\n                    putMyVar('分集终', total2);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, total1, total2),\n                col_type: 'scroll_button'\n            });\n        }\n        if (getMyVar('选集排序') == 1) {\n            for (var j = end - 1; j >= star - 1; j--) {\n                // 打印选集列表\n                playLists() //改\n            }\n        } else {\n            for (var j = star - 1; j < end; j++) {\n                // 打印选集列表\n                playLists() //改\n            }\n        }\n        //底部页码\n        d.push({\n            col_type: \"line\"\n        })\n        var yema = Math.ceil(end / page_number);\n        d.push({\n            title: \"““”” <small><small><font color='grey'>\" + yema + ' / ' + total + \"</font> </small></small>\",\n            col_type: \"text_center_1\",\n            extra: {\n                lineVisible: false\n            }\n        })\n        if (底部换页 == '开启') {\n            d.push({\n                title: '首页',\n                url: $(\"#noLoading#\").lazyRule((page_number) => {\n                    putMyVar('分集起', '1');\n                    putMyVar('分集终', page_number);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '上一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) - page_number;\n                    var e = parseInt(end) - page_number;\n                    if (end = 选集数组.length) var e = s + page_number - 1;\n                    if (s < 1) {\n                        var s = 1;\n                        var e = page_number;\n                    }\n                    if (s > 0) {\n                        putMyVar('分集起', s);\n                        putMyVar('分集终', e);\n                        log(s + '-' + e)\n                        refreshPage(false);\n                    }\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '下一页',\n                url: $(\"#noLoading#\").lazyRule((star, end, page_number, total, 选集数组) => {\n                    var s = parseInt(star) + page_number;\n                    var e = parseInt(end) + page_number;\n                    log(s + '-' + e)\n                    if (e > 选集数组.length) {\n                        var s = (total - 1) * page_number + 1;\n                        var e = 选集数组.length;\n                    }\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', e);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, star, end, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n            d.push({\n                title: '尾页',\n                url: $(\"#noLoading#\").lazyRule((page_number, total, 选集数组) => {\n                    var s = (total - 1) * page_number + 1;\n                    putMyVar('分集起', s);\n                    putMyVar('分集终', 选集数组.length);\n                    refreshPage(false);\n                    return 'hiker://empty'\n                }, page_number, total, 选集数组),\n                col_type: 'text_4'\n            });\n        }\n    }\n\n    // 结束选集分区\n    else {\n        if (getMyVar('选集排序') == 1) {\n            for (var j = list.length - 1; j >= 0; j--) {\n                playLists()\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                playLists()\n            }\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.lanmeiwu.com/upload/mxcms/20210922-1/43913d4566226a61aa06122e98d09cbe.png"},{"last_chapter_rule":"","title":"凤凰影视","author":"家娃","version":0,"type":"video","url":"https://v.fhys.top/index.php/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&lianxuju&dongman&zongyi","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#searchList&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n    // log(parseDom(L, '.detail&&p,4&&a&&href'))\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, '.detail&&p,4&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.detail&&p,3&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://v.fhys.top/index.php/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&.item&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&.tab-pane');\nvar lists = [];\nfor (var i in conts) {\n     var temp = parseDomForArray(conts[i], 'body&&a');\nlists.push(temp);\n    \n}\n//标题\nvar title = parseDomForHtml(html, '.myui-panel__head&&h3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.text-collapse&&p,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.text-collapse&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = ''; //parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text').replace(/\\//g,' ');\n\nvar 状态 = ''; //parseDomForHtml(html, '.text-muted&&Text').replace(/\\//g,' ');\n\nvar 图片 ='';// parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&.data&&Text').replace(/&nbsp;/g,' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n/*\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n*/\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://v.fhys.top/template/mytheme/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"麦豆TV","author":"家娃","version":0,"type":"video","url":"https://www.mdoutv.com/movie_bt_series/fyAll/page/fypage","col_type":"movie_3","class_name":"电影&剧集&动漫&综艺","class_url":"movie&tv&ac&zongyi","area_name":"国产剧&港台剧&欧美剧&韩剧&日剧&泰剧","area_url":"guocanju&gangtai&en&hanju&riju&taiju","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.bt_img&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.dytit&&Text'),//标题\n       desc: parseDomForHtml(list[j], '.qb&&Text')+' '+parseDomForHtml(list[j], '.jidi&&Text'),//双重描述\n       pic_url: parseDom(list[j], 'img&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.search_list&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.jidi&&Text'),\n            content: parseDomForHtml(L, '.inzhuy&&Text'),\n            img: parseDom(L, '.thumb&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.mdoutv.com/search/**/page/fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var req = request(input);\n    var refUrl = pdfh(req, \"body&&iframe&&src\");\n    var playerUrl = refUrl.split('=')[1];\n    log(\"playerUrl-->\" + playerUrl);\n    var reqApi = request(\"https://jxdp.mdoutv.com/analysis.php?v=\" + playerUrl, {\n        headers: {\n            \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n            \"Referer\": refUrl\n        }\n    });\n\n    var jsurl = reqApi.match(/urls = \"(.*?)\"/)[1];\n    if (jsurl.match(/\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F/)) {\n        var url = jsurl;\n        if (url.indexOf(\"bilibili\") > -1) {\n            return url + \"#isVideo=true#\" + \";{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}\";\n        } else {\n            if (url.indexOf(\"mgtv\") > -1) {\n                return url + \"#isVideo=true#\" + \";{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}\";\n            } else {\n                if (url.indexOf(\"ixigua\") > -1) {\n                    return url + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                } else {\n                    return /sohu/.test(url) ? url + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\" : url;\n                }\n            }\n        }\n\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    }\n\t//log(\"url-->\" + url);\n    return url;\n});\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.paly_list_btn');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.moviedteail_list&&li,3&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.moviedteail_list&&li,4&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.moviedteail_list&&li,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.moviedteail_list&&li,2&&Text');\n\nvar 图片 = parseDom(html, '.dyimg&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.yp_context&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看??',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看??',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"黑土影视","author":"家娃","version":0,"type":"video","url":"http://www.hdedu.cc/index.php?s=home-vod-type-id-fyAll-picm-1-p-fypage","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&微电影","class_url":"1&2&3&4&5","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&动画片&纪录片&奇幻片","area_url":"25&26&27&28&29&31&30&68&33&32&67","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰国剧&其他剧","sort_url":"","year_url":"17&18&20&19&21&24&66","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&#content&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'span,2&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&#content&&ul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h2&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.news-tips,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.vod-txt&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.hdedu.cc/search/?wd=**;post;utf-8","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/zanpiancms_player = (.*?);/)[1]);\n   //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#Tab&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.details-play-list&&ul');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.vod-detail-info&&ul&&li,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.vod-detail-info&&ul&&li,3&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.vod-detail-info&&ul&&li,9&&Text').replace(/\\//g,' ');\n\nvar 状态 =  parseDomForHtml(html, '.vod-detail-info&&ul&&li,6&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.vod-detail-thumb&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.detail-info&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"17追剧网","author":"家娃","version":0,"type":"video","url":"http://www.17i.org/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic_text&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.searchlist_titbox&&p,0&&Text'),\n            content: parseDomForHtml(L, '.searchlist_titbox&&p,2&&Text'),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"http://www.17i.org/vod/search/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;\n //log(player);\n    var jsurl = player;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//去除重复元素\nfunction RegRemove(arr) {\n    var str = [];\n    for (var i = 0, len = arr.length; i < len; i++) { //循环数组每一项\n        if (!RegExp(arr[i], \"g\").test(str.join(','))) //将新数组串成字符串，去匹配旧数组的每一项，如果匹配不到，说明还没有，就把它存进新数组，\n            str.push(arr[i]);\n    }\n    return str; //最后返回出新数组\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play_source&&ul');\nvar lists = [];\nfor (var i in conts) {\n  //log(parseDomForArray(conts[i], 'body&&a'));\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n//去除下重复的线路\nlists=RegRemove(lists);\n/*\n for (var i in lists) {\n  log(lists[i]);\n}\n*/\nvar 导演 = parseDomForHtml(html, '.content_min&&ul&&li,3&&Text').replace(/\\//g,' ');\n\nvar 主演 =  parseDomForHtml(html, '.content_min&&ul&&li,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.content_min&&ul&&li,0&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.content_min&&ul&&li,1&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"六把刀影院","author":"家娃","version":0,"type":"video","url":"https://www.6bd.net/show/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&dianshiju&dongman&zongyi","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&动漫片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&fanzuipian&dongmanpian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju&haiwaiju","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, '.video-serial&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.6bd.net/search/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n   //log(player);\n    var jsurl = player.url;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n   //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\n\nvar 状态 =  parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://image.6bd.net/picture/logo.png"},{"last_chapter_rule":"","title":"大陆剧网","author":"家娃","version":0,"type":"video","url":"https://www.daluju123.com/vodtypehtml/fyclass-fypage.html[firstPage=https://www.daluju123.com/vodtypehtml/fyAll.html]","col_type":"movie_3","class_name":"古装&军旅&穿越&都市","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.stui-vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.lazyload&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.pic-text&&Text'),\n            content: parseDomForHtml(L, '.lazyload&&title'),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.daluju123.com/index.php?m=vod-search-pg-fypage-wd-**.html[firstPage=\nhttps://www.daluju123.com/index.php?m=vod-search-wd-**.html]","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = request(input).match(/str = \"(.*?)\"/)[1];\n    var jsurl = player;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head');\n //log(arts);\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n   var temp = parseDomForHtml(arts[i], '.stui-pannel__head&&h3&&Text');\n    if(temp.indexOf('猜你喜欢') == -1 && temp.indexOf('剧情介绍') == -1){\n   tabs.push(parseDomForHtml(arts[i], '.stui-pannel__head&&h3&&Text'));\n}\n    \n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 =parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-vodlist__bd,1&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"来看点播","author":"家娃","version":0,"type":"video","url":"https://www.nkdyw.com/show/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\n \nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.module-item-cover&&.module-item-pic&&a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.video-class&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\n\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.detail&&h3&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  '';// parseDomForHtml(L, '.detail&&p,1&&Text'),\n            content: '';// parseDomForHtml(L, '.text-muted&&Text'),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.nkdyw.com/search/-------------.html?wd=**","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le|renrenmi/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(jsurl.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/rules/DuanNian/MyParse.json\"));eval(request(config.settings.cj));ParseS.maoss(\"https://jx5.mgtv.co/m3u8.php?url=\" + jsurl, false, \"950AC37D72BD80B6\")}else{jsurl}`;\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n //log(arts);\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n //log(parseDomForHtml(arts[i], 'span&&Text'));\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n   //log(parseDomForArray(conts[i], 'body&&a'));\n    lists.push(parseDomForArray(conts[i], 'body&&a'));\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = '导演：'+parseDomForHtml(html, 'body&&.video-info-items,0&&a&&Text').replace(/\\//g,' ');\n\nvar 主演 =  '主演：'+parseDomForHtml(html, 'body&&.video-info-items,1&&a&&Text').replace(/\\//g,' ');\n\nvar 更新 =  '年代：'+parseDomForHtml(html, 'body&&.video-info-items,2&&a&&Text').replace(/\\//g,' ');\n\nvar 状态 = '';// parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.zkjj_a&&Text').replace('[展开全部]','');\n\n\n//var 简介 = parseDomForHtml(html, '.myui-panel_bd:has(.data)&&.data&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"华亿视界","author":"家娃","version":0,"type":"video","url":"http://www.huaei.cn/lists/fyclass/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.videoul&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.videoul-title&&Text'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.videoul-tips1&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.videoul-img&&lay-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.youLike&&ul&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.videoul-title&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.videoul-tips1&&Text'),\n            content: parseDomForHtml(L, '.videoul-title&&Text'),\n            img: parseDom(L, '.videoul-img&&lay-src'),\n        });\n    }\nsetResult(d)","search_url":"http://www.huaei.cn/search.html?key=**&page=fypage","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//免嗅探处理\nvar lazy = $(\"\").lazyRule(() => {\n    //log(input); \n    var inputArr = input.split('/');\n    var jidLen = inputArr.length;\n    var jid = inputArr[jidLen - 1].split('.')[0]\n        //log(inputArr);\n        //log(jid);\n    var player = JSON.parse(request(\"http://www.huaei.cn/index.php/ajax/vodurl\", {\n        headers: {\n            \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n            \"Referer\": input\n        },\n        body: \"jid=\" + jid,\n        method: \"POST\"\n    }));\n    log(player);\n    var jsurl = player.data.playurl;\n    log(jsurl);\n    return jsurl;\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.play-zu-ul&&li');\n  //log(arts);\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play-ji-ul');\n  //log(conts);\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = '导演：'+parseDomForHtml(html, '.vod-info-right:has(p)&&p:has(a)&&a&&Text');\n\nvar 主演 = parseDomForHtml(html, '.info&&.actor&&Text');\n\nvar 更新 = \"\";//parseDomForHtml(html, '.txt&&span,2&&Text');\n\nvar 状态 = '分类：'+parseDomForHtml(html, '.vod-info&&.vod-info-right&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.vod-info-pic&&img&&lay-src');\n\nvar 简介 = parseDomForHtml(html, '.vod-info-text&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"唯品电影","author":"家娃","version":0,"type":"video","url":"http://www.vip800.cn/dylb/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.module-item-text&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n           // desc:  parseDomForHtml(L, '.module-items&&.module-search-item&&.video-info-item,3&&Text'),\n          //  content: parseDomForHtml(L, '.module-items&&.module-search-item&&.video-info-item,3&&Text'),\n            img: parseDom(L, '.lazyload&&data-src'),\n        });\n    }\nsetResult(d)","search_url":"http://www.vip800.cn/dyss/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = '';  //parseDomForHtml(html, '.txt&&span,0&&Text').replace(/\\//g,' ');\n\nvar 主演 ='';  // parseDomForHtml(html, '.txt&&span,1&&Text').replace(/\\//g,' ');\n\nvar 更新 ='';  // parseDomForHtml(html, '.txt&&span,2&&Text');\n\nvar 状态 ='';  //parseDomForHtml(html, '.txt&&span,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.sqjj_a&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"坛草电影","author":"家娃&&参考逐风者","version":0,"type":"video","url":"http://www.tc720.com/dylb/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.vodlist_sub&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text')+'  '+parseDomForHtml(list[j], '.vodlist_sub,0&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.vodlist_sub,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.tc720.com/dyss/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le|renrenmi/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(jsurl.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/rules/DuanNian/MyParse.json\"));eval(request(config.settings.cj));ParseS.maoss(\"https://jx5.mgtv.co/m3u8.php?url=\" + jsurl, false, \"950AC37D72BD80B6\")}else{jsurl}`;\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#NumTab&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.content_detail:has(.data)&&.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 =  parseDomForHtml(html, '.content_detail:has(.data)&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 =  parseDomForHtml(html, '.content_detail:has(.data)&&.data,0&&Text');\n\nvar 状态 = parseDomForHtml(html, '.content_detail:has(.data)&&.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"秋香影视","author":"家娃","version":0,"type":"video","url":"https://www.qiuxiangys.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-tag-top&&Text'),//双重描述\n       pic_url: parseDom(list[j], '.myui-vodlist__box&&a&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.myui-vodlist__media&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.detail&&h4&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.detail&&p,1&&Text'),\n            content: parseDomForHtml(L, '.text-muted&&Text'),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.qiuxiangys.com/vodsearch/**----------fypage---.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&.data,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&.data,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&.data,3&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"哈趣影院","author":"家娃","version":0,"type":"video","url":"https://www.haqu123.com/type/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.new-list&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.douban_score&&Text'),//双重描述\n       pic_url: parseDom(list[j], 'img&&data-original'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.search-list&&.item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h5&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.txt&&p,4&&Text'),\n            content: parseDomForHtml(L, '.txt&&p,5&&Text'),\n            img: parseDom(L, '.lazy-load-img&&src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.haqu123.com/index.php?m=vod-search-pg-fypage-wd-**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\n    var player = request(input).match(/url: '(.*?)'/)[1];\n    var jsurl = player;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.episodes-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.txt&&span,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.txt&&span,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.txt&&span,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.txt&&span,3&&Text');\n\nvar 图片 = parseDom(html, '.lazy-load-img&&src');\n\nvar 简介 = parseDomForHtml(html, '.content&&h4&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL, \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"视中心影院","author":"家娃","version":0,"type":"video","url":"https://mhz8.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&B站&少儿","class_url":"1&2&4&3&5&29","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-item');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),//描述\n       pic_url: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'h3&&a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g,' '),\n            img: parseDom(L, '.lazyload&&data-src')+'@Referer=',\n        });\n    }\nsetResult(d)","search_url":"https://mhz8.com/vodsearch/page/fypage/wd/**.html","group":"③家娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n\t\t//如果播放地址存在m3u8等扩展名直接返回\n\t\tif (playUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !playUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            if (playUrl.indexOf('bilivideo') != -1) {\n                return playUrl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (playUrl.indexOf('titan.mgtv.com') != -1) {\n                return playUrl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else if (playUrl.indexOf('com/gzc') != -1) {\n                return playUrl + ';{Referer@https://mhz8.com/}';\n            } else {\n                return playUrl;\n            }\n        }\n\t\t//获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \".player-wrapper&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            var jxkJSPath = \"https://mhz8.com/static/player/\" + fro + \".js\";\n            //log(\"jxkJSPath-->\" + jxkJSPath);\n            jiekHtml = request(jxkJSPath, {});\n            //log(\"jiekHtml-->\" + jiekHtml);\n            jiek = jiekHtml.match(/src=\"(.*?)'/)[1];\n        };\n        var jiexi = jiek + playUrl;\n        //log(\"jiexi-->\" + jiexi);\n\t\t//如果播放的时正版大站的话就直接x5嗅探吧\n\t\tif(fro.match(/qq|mgtv|pptv|letv|sohu|qiyi|youku|bilibili|m1905/)){\n\t\t\tshowLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + jiexi + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('com/gzc') != -1) {\n                                return urls[i] + ';{Referer@https://mhz8.com/}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video;\n\t\t}\n\t\t//请求配置文件里的解析接口并返回播放地址\n        var jxkHtml = request(jiexi, {}).replace('url\": \"', 'url\":\"');\n        //log(jxkHtml)\n        var jxkUrl = jxkHtml.match(/url\":\"(.*?)\"/)[1];\n        if (jxkUrl.match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !jxkUrl.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n            if (jxkUrl.indexOf('bilivideo') != -1) {\n                return jxkUrl + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n            } else if (jxkUrl.indexOf('titan.mgtv.com') != -1) {\n                return jxkUrl + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n            } else if (jxkUrl.indexOf('com/gzc') != -1) {\n                return jxkUrl + ';{Referer@https://mhz8.com/}';\n            } else {\n                return jxkUrl;\n            }\n        } else {\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + jiexi + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('com/gzc') != -1) {\n                                return urls[i] + ';{Referer@https://mhz8.com/}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video;\n        }\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module&&.module-tab-content&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module&&.scroll-content');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,0&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src')+'@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&span&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://mhz8.com/template/mxone/mxstatic/picture/logo.png"},{"last_chapter_rule":".myui-content__detail&&.hidden-sm&&.text-red&&Text","title":"段友-切片","author":"Killer","version":0,"type":"video","url":"https://yunjuw.cn/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"2&1&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"更新&热门&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'.myui-vodlist&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original')+'@Referer=doubanio.com';\r\n        var url = parseDom(list[i], 'a&&href').replace('play','detail').replace('/sid/1/nid/1','');\n        var desc = parseDomForHtml(list[i], '.pic-text||span&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n            content: parseDomForHtml(list[j], 'p,-2&&Text'),\n            img: parseDom(list[j], 'a&&data-original'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://yunjuw.cn/vodsearch/**----------fypage---.html","group":"③影一","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\nvar arts = parseDomForArray(html,'.nav&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n\ttitle: parseDomForHtml(html, '.data&&Text').replace('分类|','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.data,2&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,1&&Text').substring(0, 15),\n\tdesc:parseDomForHtml(html,'.data,3&&Text').substring(0, 16),\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: MY_URL,\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nvar des_desc = parseDomForHtml(html, '.data&&Text');\n d.push({\n          title: des_desc.length > 46 ? des_desc.replace(des_desc, des_desc.substring(0, 46) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n         url: 'hiker://empty#' + parseDomForHtml(html,'body&&.myui-content__detail&&Html').split('/h1>')[1].replace(/;/g,'').replace(/<p/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,      \n          col_type: 'text_1'\n});\n/*\nvar lazy= `@lazyRule=body&&.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`\n*/\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('通用解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: list.length > 3 ? 'text_4' : 'text_2'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: list.length > 3 ? 'text_4' : 'text_2'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://yunjuw.cn/template/mytheme/statics/img/logo.png"},{"last_chapter_rule":"","title":"傻宝宝电影网.K","author":"路遥&Killer","version":0,"type":"other","url":"https://www.shabaobei.com/L/fyAll-fypage.html","col_type":"movie_3","class_name":"首页&动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&剧情片&\n动画片&纪录片","class_url":"&6&7&8&9&10&11&12&13&14","area_name":"日韩剧&国产剧&港台剧&欧美剧&海外剧","area_url":"17&15&16&18&19","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.lazyload||a&&data-original')+'@Referer=',\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.shabaobei.com/vodsearch/**----------fypage---.html","titleColor":"#fff20c00","group":"③影二","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy =  ``;\nlazy=$(\"\").lazyRule(()=>{\n    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n   return lazyParse(input);\n});\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    desc: '330&&float',\n    col_type: 'x5_webview_single'\n});\n\nvar tabs = [];\nvar conts = parseDomForArray(html, 'body&&.b');\nvar lists = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(conts[i], 'h3&&Text'))\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nd.push({\n    title: parseDomForHtml(html, '.stui-content__detail--h1&&Text').replace('地区', '\\n地区').replace('主演', '\\n主演'),\n    desc: parseDomForHtml(html, '.desc||.detail-content&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: fm,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第', '').replace('期', ''),\n            url: parseDom(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":".v_desc&&.desc&&Text","title":"呆瓜影视.K","author":"晓&&Killer","version":0,"type":"video","url":"http://m.xdg456.com/index.php?m=vod-list-id-fyclass-pg-fypage-order--by--class-0-year-fyyear-letter--area-fyarea-lang-.html​","col_type":"movie_3","class_name":"电影&动作&喜剧&爱情&科幻&恐怖&剧情&战争&灾难&纪录&悬疑&论理&合集&|&电视剧&国产剧&港台剧&韩剧&欧美剧&日韩剧&日剧&泰剧&动漫","class_url":"1&5&6&7&8&9&10&11&24&27&35&28&36&&2&12&13&15&16&14&17&18&37","area_name":"全部&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&俄罗斯&其它","area_url":"&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&俄罗斯&其它","sort_name":"","year_name":"全部&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995","sort_url":"","year_url":"&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.v_list&&li');\nfor (let i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'a.title&&Text'),\n        desc: parseDomForHtml(list[i], '.desc&&Text'),\n        pic_url: parseDom(list[i], 'a&&data-bg'),\n        url: parseDom(list[i], 'a&&href'),\n        col_type: 'movie_3'\n    })\n}\nsetResult(d)","chapter_find":".detailPic&&img&&src;.tb_z&&Text;body&&.lhmain@li;a&&Text;a&&href;body&&label@Text","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.v_list&&li');\nfor (let i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'a.title&&Text'),\n        desc: parseDomForHtml(list[i], '.desc&&Text'),\n        pic_url: parseDom(list[i], 'a&&data-bg'),\n        url: parseDom(list[i], 'a&&href'),\n        col_type: 'movie_3'\n    })\n}\nsetResult(d)","search_url":"http://m.xdg456.com/index.php?m=vod-search-pg-fypage-wd-**.html","titleColor":"#f20c00","group":"③影二","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html=getResCode();\nvar lazy =  ``;\nlazy=$(\"\").lazyRule(()=>{\n    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n   return lazyParse(input);\n});\n\nvar 标题='h1&&Text';\nvar 线路列表 = 'body&&.play_from&&li';\nvar 线路标签 = 'Text';\nvar 选集列表 = 'body&&.tab_content&&.play_list';\nvar 选集标签 = 'ul&&li';\nvar 演员 = '#intro_content&&p,1&&Text';\nvar 更新 = '.v_desc&&.desc&&Text';\nvar 导演 = '#intro_content&&p,0&&Text';\nvar 图片 = '.cover&&img&&src';\nvar 简介 = '#intro_content&&p,2&&Text';\n\n//简介\ntry{\nvar des_desc = parseDomForHtml(html, 简介);\n}catch(e){\nvar des_desc ='没有正确获取剧情简介！';\n}\n\n//图片\nvar des_pic =parseDom(html, 图片);\n\n//影片简介头\nvar 导演 = parseDomForHtml(html, 导演);\nvar 演员 = parseDomForHtml(html, 演员);\nvar 更新 = parseDomForHtml(html, 更新);\n\nvar arts = parseDomForArray(html,线路列表);//线路列表\nvar conts = parseDomForArray(html, 选集列表);//播放列表\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 线路标签))   //线路名\n}\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 选集标签))    //' 列表名改'ul&&li'\n}\n\nd.push({\ntitle: 导演 + '    '+更新 +'\\n' + 演员,\ndesc:des_desc,\npic_url:des_pic,\nurl:des_pic,\ncol_type:'movie_1_vertical_pic'\n});\n\n\nvar title = parseDomForHtml(getResCode(), 标题);\nd.push({\r\n    title: \"视界\",\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100283/4321985.jpg',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    col_type: 'icon_small_4',\n});\nd.push({\n    title: '资源采集',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100287/4322096.jpg',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.dz',\n    col_type: 'icon_small_4',\n});\nd.push({\n    title: 'APP影视',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100287/4322096.jpg',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    col_type: 'icon_small_4',\n});\nd.push({\n    title: '青豆',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20200831/90128/3898775.jpg',\n   url: 'hiker://search?s=' + title + '&rule=青豆',\ncol_type: 'icon_small_4',\n});\n\n//折叠\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'#noHistory#hiker://empty';'toast://已切换折叠状态'`,\n            col_type: 'text_center_1'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://成功更换线路！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: tabs.length > 3 ? 'text_4' : 'text_3'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'#noHistory#hiker://empty';'toast://已切换排序'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&.hl-plays-list'\nvar 列表名 = 'ul&&li'\n章节.A()","title":"QQTV","author":"晓","version":0,"type":"tool","url":"http://www.qqtv.top/vodshow/\nfyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-').replace('-up', 'up-')","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&少儿","class_url":"2&1&3&4&33","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&%E4%BC%A6%E7%90%86&传记","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更多","find_rule":"js:requireCache(config.xiao)\nvar 列表 = '.hl-vod-list&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.hl-pic-text&&Text'\nvar 图片 = '.hl-item-thumb&&data-original'\nvar 链接 = 'a&&href'\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = '.hl-one-list&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.hl-pic-text&&Text'\nvar 类型 = 'p,1&&Text'\nvar 简介 = 'p,2&&Text'\nvar 图片 = '.hl-item-thumb&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"http://www.qqtv.top/vodsearch/**----------fypage---.html","group":"③晓之实验室","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nlog(config);\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'body&&script&&Html'));var url=player_aaaa.url;var fr=player_aaaa.from;var input = url ;if(url.match(/AS9y/)){` + TG + `}else if(fr === 'duoduozy'){` + DD + `}else if(fr === 'renrenmi'){` + RR + `}else if(fr === 'xfyun'){` + xfyun + `}else{url}`;\n\nvar 线路列表 = '.hl-plays-from&&a';\nvar 线路标签 = 'Text';\nvar 选集列表 = 'body&&.hl-plays-list';\nvar 选集标签 = 'ul&&li';\nvar 类型 = '.hl-data-menu,1&&Text';\nvar 演员 = '.hl-col-xs-12,3&&Text';\nvar 更新 = '.hl-col-xs-12,11&&Text';\nvar 导演 = '.hl-col-xs-12,4&&Text';\nvar 图片 = '.hl-lazy&&data-original';\nvar 图片链接 = setUrl;\nvar 简介 = '.hl-col-xs-12,12&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    xiao: 'https://gitee.com/xiao-zero/xiao/raw/master/js/xiao.js',\n})","pages":"[]","icon":"https://android-artworks.25pp.com/fs08/2020/06/12/8/123_561d0b47080f6459392eee4686530967_con_130x130.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.list_con_li')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[0],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"动漫之家","author":"子丑寅卯","version":8,"url":"https://www.dmzj.com/category/0-fysort-fyarea-fyclass-0-0-fypage.html","col_type":"movie_1_vertical_pic","class_name":"全部&冒险&搞笑&格斗&科幻&爱情&侦探&竞技&魔法&校园&百合&耽美&历史&战争&宅系&治愈&仙侠&武侠&职场&神鬼&奇幻&生活&其他","class_url":"0&1&2&3&4&5&6&7&8&9&11&13&14&15&16&17&18&19&20&21&22&23&24","area_name":"全部&少年&少女&青年","area_url":"0&3262&3263&3264","sort_name":"全部&连载&完结","year_name":"","sort_url":"0&1&2","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\r\nvar list = parseDom(html, '.list_con_li&&Html').match(/<li[\\s\\S]*?<\\/li/g);\r\nfor (var j = 0; j < list.length; j++) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h3&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&p,3&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+'#immersiveTheme#',\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDom(html, '.update_con&&Html').match(/<li[\\s\\S]*?<\\/li/g);\nfor (var j = 0; j < list.length; j++) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.newPage&&Text'),\n       pic_url: parseDom(list[j], 'img&&src'),\n       url: parseDom(list[j],'a&&href').indexOf('html')>-1?parseDom(list[j],'a&&href').replace('http://manhua.dmzj.com','https://www.dmzj.com/info')+'#immersiveTheme#':parseDom(list[j],'a&&href').replace('http://manhua.dmzj.com','https://www.dmzj.com/info')+'.html#immersiveTheme#'\n  });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.dmzj.com/dynamic/o_search/index/**/fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_3","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html=getResCode();\n\ntry{\r\n//子\r\nvar des_pic = parseDomForHtml(html, 'body&&.comic_i_img&&img&&src');\r\n// 丑\r\nvar des_author = parseDomForHtml(html,'body&&.comic_deCon_liO&&li&&Text');\r\n// 寅\r\nvar des_class = parseDomForHtml(html,'body&&.comic_deCon_liO&&li,1&&Text');\r\n// 卯\r\nvar des_desc = parseDomForHtml(html, 'body&&.comic_deCon_d&&Text');\r\n\r\nvar conts=parseDomForHtml(html, 'body&&.list_con_li&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\r\n\r\n\r\nd.push({\r\n\ttitle: des_author+'\\n'+des_class,\r\n desc: des_desc,\r\n pic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic_blur'\r\n});\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n\nfor (var i = 0;conts.length>i  ; i++)\r\n{\r\nd.push({\r\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\r\n\t\t\t\turl: parseDom(conts[i],'a&&href').replace('www','m')+ `@lazyRule=.js:var url = parseDom(fetch(input,{}),'body&&script,5&&Html').replace(/\\\\\\\\\\\\\\//g,'/');var urls=unescape(url.replace(/\\\\\\\\u/g,'%u'));'pics://'+urls.match(/http(?!(jpg|png|gif)).+?(jpg|png|gif)/g).join('&&')`\n});\r\n}}else\n{\n for (var i = conts.length-1; i >=0 ; i--) {\r\nd.push({\r\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\r\n\t\t\t\turl: parseDom(conts[i],'a&&href').replace('www','m')+ `@lazyRule=.js:var url = parseDom(fetch(input,{}),'body&&script,5&&Html').replace(/\\\\\\\\\\\\\\//g,'/');var urls=unescape(url.replace(/\\\\\\\\u/g,'%u'));'pics://'+urls.match(/http(?!(jpg|png|gif)).+?(jpg|png|gif)/g).join('&&')`\n});\r\n}\n}\n\n\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://scpic.chinaz.net/Files/pic/logo9/201907/d/wulogo21874.jpg"},{"last_chapter_rule":"","title":"码头漫画网","author":"仰望星空","version":1,"url":"https://m.hcs68.com/list/fyclass/fyarea/fypage/","col_type":"movie_3","class_name":"已完结&连载中&儿童&少年&少女&青年","class_url":"wanjie&lianzai&ertong&shaonian&shaonv&qingnian","area_name":"按发布&按更新&按点击","area_url":"post&update&click","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&#w0&&.list-comic;mip-img&&alt;mip-img&&src;span&&Text;a&&href","searchFind":"body&&.itemBox;a,1&&Text;a&&href;.coll&&Text;.itemTxt&&Text;mip-img&&src","search_url":"https://m.hcs68.com/search/?keywords=**&page=fypage&per-page=50","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.img&&mip-img&&src');\n// 获取更新\nvar des_update = parseDomForHtml(html, 'body&&dl&&Text').replace('新','');\n// 获取作者\nvar des_author = parseDomForHtml(html, 'body&&dl,1&&Text');\n// 获取更新时间\nvar des_time = parseDomForHtml(html, 'body&&dl,3&&Text').replace('新','');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&Text').replace('简介：','');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n\nif(conts == undefined){\nd.push({\n\ttitle: des_update+'\\n'+des_author+'\\n'+des_time,\n desc: parseDomForHtml(html, 'body&&.Drama&&p&&Text'),\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nd.push({\n\ttitle: '网站因版权问题已删除，仅显示章节数',\n\turl: getUrl(),\n\tcol_type: 'text_center_1'\n});\nvar contss=parseDomForHtml(html, 'body&&#chapter-list-1&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\nfor (var i = 0; i < contss.length ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(contss[i],'li&&Text'),\n\t\t\t\turl: getUrl()\n});\n}\n}else{\nd.push({\n\ttitle: des_update+'\\n'+des_author+'\\n'+des_time,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i = conts.length-1; i >0  ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var res1 = {};var d1 = [];var jsHtml = request(input);var pics=[];for(var k=1;  ;k++){try{var jsHtml = request(input.split(\".html\")[0] + \"-\"+k + \".html\");var jsUrl = parseDomForHtml(jsHtml,\"body&&mip-img&&src\");if (jsUrl.indexOf(\"webp\")>-1){pics.push(jsUrl);}else{break}}catch(e){break}};\"pics://\"+pics.join(\"&&\")'\n});\n}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"来漫画","author":"仰望星空","version":0,"url":"https://m.laimanhua.net/getact3.asp?act=list&page=fypage&catid=fyAll&ajax=1&order=0;get;GBK","col_type":"movie_3","class_name":"少年热血&武侠格斗&科幻魔幻&竞技体育","class_url":"1&2&3&4","area_name":"爆笑喜剧&侦探推理&恐怖灵异&耽美人生","area_url":"5&6&7&8","sort_name":"故事漫画&百合女性&伪娘漫画&其他漫画","year_name":"少女爱情&恋爱生活&生活漫画&战争漫画","sort_url":"13&15&16&14","year_url":"9&10&11&12","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&li');\nfor (var i in list) {\n  d.push({\n       title: parseDomForHtml(list[i], 'h3&&Text'),\n       desc: parseDomForHtml(list[i], 'dd,2&&Text'),\n       img: parseDom(list[i], 'img&&data-src'),\n       url: parseDom(list[i], 'a&&href')+';get;gbk'\n  });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '#dmList&&li');\r\nfor (var i in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[i], 'dt&&Text'),\r\n       desc: '更新：'+parseDomForHtml(list[i], 'a,1&&Text'),\n       content: parseDomForHtml(list[i], 'dd&&Text'),\r\n       img: parseDom(list[i], 'img&&src'),\r\n       url: parseDom(list[i],'a&&href').replace('www','m') \r\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.laimanhua.net/cse/search/?page=fypage@0@*1@&tag=0&key=**#ysearchs;get;gbk","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar des_update = parseDomForHtml(html, 'body&&dl&&Text').replace('新','');\nvar des_author = parseDomForHtml(html, 'body&&dl,2&&Text');\nvar des_class = parseDomForHtml(html, 'body&&dl,3&&Text');\nvar des_desc = parseDomForHtml(html, 'body&&.book-intro&&p&&Text');\nvar des_pic = parseDom(html, 'body&&.thumb&&img&&src');\n\nd.push({\n\ttitle: des_update+'\\n'+des_author+'\\n'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nvar list = parseDomForArray(html, 'body&&.chapter-list&&li');\nfor (var i = list.length-1 ; i >= 0; i--) {\n  d.push({\n       title: parseDomForHtml(list[i], 'a&&Text'),\n       url: parseDom(list[i], 'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{headers:{\"content-type\":\"charst=GBK\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var ty=parseDomForHtml(htmls,\"body&&script,4&&Html\");eval(ty);var pics=[];for (var k in mhInfo.images){pics.push(\"https://mhpic5.kingwar.cn\"+mhInfo.path+mhInfo.images[k])};\"pics://\"+pics.join(\"&&\")'\n  });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"土豪漫画","author":"仰望星空","version":4,"url":"https://tuhao456.com/sort/fyAll/fypage.html","col_type":"movie_1_vertical_pic","class_name":"热血&机战&运动&推理&冒险&耽美&百合&搞笑&战争&神魔&忍者&竞技&悬疑&社会&恋爱&宠物&吸血&萝莉&后宫&御姐&霸总&玄幻&古风&历史&漫改&游戏&穿越&恐怖&真人&科幻&都市&武侠&修真&生活&动作","class_url":"t1&t2&t3&t4&t5&t6&t7&t8&t9&t10&t11&t12&t13&t14&t15&t16&t17&t18&t19&t20&t21&t22&t23&t24&t25&t26&t27&t28&t29&t30&t31&t32&t33&t34&t35","area_name":"连载&完结&少男&少女&青年","area_url":"s0&s1&g2&g1&g3","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.cy_list_mh&&ul');\nfor (var i in list) {\n  d.push({\n       title: parseDomForHtml(list[i], '.title&&Text')+'\\n'+parseDomForHtml(list[i], '.updata&&Text')+'\\n'+parseDomForHtml(list[i], '.biaoqian&&Text').replace(' ',''),\n       desc: parseDomForHtml(list[i], '.info&&Text'),\n       img: parseDom(list[i], 'img&&src'),\n       url: parseDom(list[i], 'a&&href')\n  });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.cy_list_mh&&ul');\r\nfor (var i in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[i], '.title&&Text'),\r\n       desc: parseDomForHtml(list[i], '.updata&&Text'),\n       content: parseDomForHtml(list[i], '.info&&Text'),\r\n       img: parseDom(list[i], 'img&&src'),\r\n       url: parseDom(list[i],'a&&href')\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://tuhao456.com/sort/?key=**&page=fypage","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar des_update = parseDomForHtml(html, 'body&&.cy_zhangjie_top&&p&&Text').replace('话','');\nvar des_author = parseDomForHtml(html, 'body&&.cy_xinxi&&span&&Text');\nvar des_class = parseDomForHtml(html, 'body&&.cy_xinxi,1&&span,1&&Text').replace(' ','');\nvar des_desc = parseDomForHtml(html, 'body&&.cy_xinxi,2&&p&&Text');\nvar des_pic = parseDom(html, 'body&&.cy_info_cover&&img&&src');\n\nd.push({\n\ttitle: des_update+'\\n'+des_author+'\\n'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: MY_URL,\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nvar list = parseDomForArray(html, 'body&&.cy_plist&&li');\nfor (var i = list.length-1 ; i >=0 ; i--) {\n  d.push({\n       title: parseDomForHtml(list[i], 'a&&Text'),\n       url: parseDom(list[i], 'a&&href')+'@lazyRule=.js:var htmls = request(input);var list = parseDomForHtml(htmls,\"head&&script&&Html\").match(/http?(.*?)(jpg-smh.low|jpg)/g);\"pics://\"+list.join(\"&&\")'\n  });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"思思漫画","author":"仰望星空","version":1,"url":"https://m.sisimanhua.com/list/fyAll/fypage/","col_type":"movie_3","class_name":"连载中&已完结","class_url":"lianzai&wanjie","area_name":"儿童&少年&少女&青年","area_url":"ertong&shaonian&shaonv&qingnian","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.list-comic;.txtA&&Text;mip-img&&src;span&&Text;a&&href","searchFind":"body&&.itemBox;mip-img&&alt;a&&href;p&&Text;.itemTxt&&Text;mip-img&&src","search_url":"https://m.sisimanhua.com/search/?keywords=**&page=fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.img&&mip-img&&src');\n// 获取标题\nvar des_title = parseDomForHtml(html,'body&&.pic_zi&&dl&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&p&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n\nd.push({\n\ttitle: des_title+'\\n'+parseDomForHtml(html,'body&&.pic_zi,1&&dl&&Text')+'\\n'+parseDomForHtml(html,'body&&.pic_zi,3&&dl&&Text'),\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i =  conts.length-1 ; i >0 ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'span&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var num1 = input.split(\".html\")[0].split(\"/\")[5];var htmls = request(input);var num2 = parseDomForHtml(htmls,\"body&&.p10&&span,-2&&Text\");var pics=[];for (var k = 0;  k < num2 ;k++) {pics.push(\"https://res6.sisimanhua.com/image/view/\"+num1+\"/\"+k+\".webp\")};\"pics://\"+pics.join(\"&&\")'\n})\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"百漫谷","author":"仰望星空","version":0,"url":"http://106.52.105.28/bsg_fyAll_fypage/","col_type":"pic_1","class_name":"玄幻奇幻&武侠仙侠&都市言情&历史军事","class_url":"1&2&3&4","area_name":"科幻灵异&网游竞技&女生频道&同人小说&其他小说","area_url":"5&6&7&66&59","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'ul,1&&li');\nfor (var i in list) {\n  d.push({\n       title: parseDomForHtml(list[i], 'a&&Text'),\n       desc: '更至：'+parseDomForHtml(list[i], 'span,2&&Text')+'\\n作者：'+parseDomForHtml(list[i], 'span,3&&Text')+'\\n时间：'+parseDomForHtml(list[i], 'span,6&&Text'),\n       //img: parseDom(list[i], 'img&&src'),\n       url: parseDom(list[i], 'a&&href')\n  });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'ul,1&&li');\r\nfor (var i in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[i], 'a&&Text'),\r\n       desc: '更新：'+parseDomForHtml(list[i], 'a,1&&Text'),\n       content: parseDomForHtml(list[i], 'li&&Text'),\r\n       //img: parseDom(list[i], 'img&&src'),\r\n       url: parseDom(list[i],'a&&href') \r\n  });\r\n}\r\nsetResult(d);","search_url":"http://106.52.105.28/SearchBook.aspx?keyword=**&t=1","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar des_title = parseDomForHtml(html, '.bookname&&a&&title');\nvar des_update = parseDomForHtml(html, '.qidian&&a,2&&Text');\nvar des_author = parseDomForHtml(html, '.bookname&&span&&Text');\nd.push({\n\ttitle: des_title,\n desc: '更新：'+des_update+'\\n'+des_author,\n //pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'text_center_1'\n});\n\nvar list = parseDomForArray(html, 'ul&&li');\nfor (var i in list) {\n  d.push({\n       title: parseDomForHtml(list[i], 'a&&Text'),\n       url: parseDom(list[i], 'a&&href')+'@lazyRule=.js:var htmls=request(input);var ty=JSON.parse(parseDomForHtml(htmls,\"head&&script,-1&&Html\").match(/\\\\[(.*?)\\\\]/g)[0]);var pics=[];for (var k = 0; k < ty.length;k++) {pics.push(\"http://106.52.105.28\"+ty[k])}\"pics://\"+pics.join(\"&&\")'\n  });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"漫画DB","author":"仰望星空","version":0,"url":"https://www.manhuadb.com/manhua/list-fyAll-page-fypage.html","col_type":"movie_3","class_name":"少年&青年&少女&男性&女性&通用&儿童&女青","class_url":"a-3&a-4&a-5&a-6&a-7&a-9&a-10&a-11","area_name":"日本&香港&韩国&台湾&内地&欧美","area_url":"r-4&r-5&r-6&r-7&r-8&r-9","sort_name":"","year_name":"连载中&已完结","sort_url":"","year_url":"s-1&s-2","find_rule":"body&&.comic-book-unit;h2&&Text;img&&src;span,1&&Text;a&&href","searchFind":"body&&.comicbook-index;h2&&Text;a&&href;div,1&&Text;;img&&src","search_url":"https://www.manhuadb.com/search?q=**&p=fypage","titleColor":"","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.comic-cover&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.creators&&ul&&Text');\n// 获取更新状态\nvar des_class = parseDomForHtml(html,'body&&.tags&&ul&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.comic_story&&p&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.links-of-books&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取名称\nvar des_title = parseDomForHtml(html,'body&&.comic-title&&h1&&Text');\n\nd.push({\n\ttitle: des_title+'\\n'+'状态：'+des_class+'\\n'+'作者：'+des_author,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nfor (var i = 0; i < conts.length  ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{});var ty=parseDomForHtml(htmls,\"body&&script,2&&Html\");var des_url1=parseDomForHtml(htmls,\"body&&.d-none,-1&&data-img_pre\");var des_url=parseDomForHtml(htmls,\"body&&.d-none,-1&&data-host\");eval(ty);var picConts = JSON.parse(base64Decode(img_data));var pics=[];for (var k = 0; k < picConts.length;k++) {pics.push(des_url+des_url1+picConts[k].img)};\"pics://\"+pics.join(\"&&\")'\n});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"冰氪漫画","author":"仰望星空","version":0,"url":"https://www.icekr.com/fyAll/fypage/","col_type":"movie_3","class_name":"更新&完结&连载&国产","class_url":"update&list/wanjie&list/lianzai&list/dalu","area_name":"儿童&少年&少女&青年","area_url":"list/ertong&list/shaonian&list/shaonv&list/qingnian","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.book-list&&li;a&&title;img&&src;.tt&&Text;a&&href","searchFind":"body&&.item-lg;a&&title;a&&href;.tt&&Text;li&&Text;img&&src","search_url":"https://www.icekr.com/search/?keywords=**&page=fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.pic&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.detail-list&&li,1&&span,1&&Text');\n// 获取更新时间\nvar des_class = parseDomForHtml(html,'body&&.detail-list&&li,2&&span&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&#intro-all&&p&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.chapter-body&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取更新\nvar des_update = parseDomForHtml(html,'body&&.text&&span&&Text');\n\nd.push({\n\ttitle: des_update+'\\n'+des_author+'\\n'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nfor (var i = 0; i <  conts.length ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0；； WOW64)\"},method:\"GET\"});var ty=parseDom(htmls,\"body&&script&&Html\");eval(ty);var pics=[];for (var k in chapterImages) {pics.push(chapterImages[k]);};\"pics://\"+pics.join(\"&&\")'\n});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"13漫画","author":"仰望星空","version":0,"url":"https://m.w13k.com/list/fyAll/fypage/","col_type":"movie_3","class_name":"已完结&连载中","class_url":"wanjie&lianzai","area_name":"儿童&少年&少女&青年","area_url":"ertong&shaonian&shaonv&qingnian","sort_name":"","year_name":"大陆&日本&欧美&韩国&其他","sort_url":"","year_url":"dalu&riben&oumei&hanguo&qita","find_rule":"body&&#w0&&li;a,1&&Text;mip-img&&src;span&&Text;a&&href","searchFind":"body&&.itemBox;a,1&&Text;a&&href;.coll&&Text;.itemTxt&&Text;mip-img&&src","search_url":"https://m.w13k.com/search/?keywords=**&page=fypage","titleColor":"","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.img&&mip-img&&src');\n// 获取更新\nvar des_update = parseDomForHtml(html, 'body&&dl&&Text').replace('新','');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&dl,1&&Text');\n// 获取更新时间\nvar des_class = parseDomForHtml(html,'body&&dl,3&&Text').replace('新','');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n\nd.push({\n\ttitle: des_update+'\\n'+des_class+'\\n'+des_author,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i = conts.length-1; i > 0   ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobiles\"},method:\"GET\"});;var picConts = parseDom(htmls,\"body&&.erPag&&Html\").match(/http?.*?webp/g);var pics = [];for (var k in picConts) {pics.push(picConts[k])};\"pics://\"+pics.join(\"&&\")'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"title":"最漫画","author":"仰望星空&Zruiry","version":1,"url":"https://m.zuimh.com/list/fyclass-fyarea-fyyear-fysort/?page=fypage","col_type":"movie_3","class_name":"全部&热血&玄幻&修真&古风&恋爱&穿越&都市&霸总&悬疑&搞笑&奇幻&总裁&日常&冒险&科幻&纯爱&魔幻&战争&蔷薇&武侠&生活&动作&后宫&游戏&恐怖&漫改&真人&校园&剧情&灵异&少年&推理&怀旧&情感&偶像&少女&独家&虐心&爆笑&励志&美食&复仇&彩虹&唯美&治愈&明星&脑洞&魔法&修仙&重生&仙侠&末世&异能&女尊&其它&言情&耽美&运动&宫斗&古装&美少女&神魔&历史&惊险&竞技&萌系&体育&格斗&机甲&虐恋&爽&福利&其他&小僵尸&僵尸&浪漫&金手指&御姐&战斗&恶搞&社会&权谋&青春&萝莉&同人&震撼&日漫&军阀&民国&特工&美女&间谍&暗黑&节操&经典&幽默&甜宠&神话&日本&翼纪元&条漫&LOL&种田&短篇&惊悚&四格&国漫&有趣岛&萌宠&人性&宠婚&新妻&吸血鬼&神界漫画&雪月花&梦骑士&兽耳&少儿&百合&吃鸡&枪战&特种兵&兄弟&异世&兄妹&三次元&美型&豪门&婚宠&开挂&血腥&轻松&养成&替身&男神&青青树&异世界&男穿女&魂穿&阴暗&毒鸡汤&片玉&漫画会&龙刃&喜欢&召唤&异界&狠西游&西游记&江湖&断头岛&韩漫&病娇&长篇&陈岚&爱情&女强&燃向&天上空&渡之鸟&血族&魔王&可爱&宫廷&婚恋&萌&阿衰&三角恋&前世&轮回&惊奇&侦探&欢乐向&职场&感动&架空&轻小说&颜艺&性转换&东方&耽美BL&轻松搞笑&同人漫画&校园搞笑生活&少女爱情&正剧&烧脑&装逼&神鬼&伪娘&高清单行&故事漫画&恋爱生活玄幻&西方魔幻&舰娘&宅系&商战&爽流&热血冒险&科技&温馨&家庭&婚姻&段子&内涵&机战&娱乐圈&未来&宠物&霸总恋爱玄幻&故事&音乐舞蹈&逆袭&召唤兽&科幻魔幻&纠结&伦.理&恋爱生活&新作&历史漫画&儿童&侦探推理&修真恋爱架空&手工&青年&其他漫画&致郁&史诗&秀吉&乡村&性转&婚爱&死亡&死神&少男&悬疑、惊悚&爆笑喜剧&动作格斗&改编&AA&恋爱耽美&黑道&鬼怪&丧尸&主仆&知音漫客&麦萌&逆转&大女主&暧昧&生化&奇闻&宅斗&栏目&怪谈&宠爱&幻想&异族&探案&叛逆&橘味&乙女&猎奇&日更&漫漫&智斗&正能量&漫画一番&女王点坑&漫客栈&飒漫画&小说改编&绅士&恐怖悬疑&绘本&音乐&狐仙&死后世界&墨瞳&漫画&末日&系统&神仙&有妖气&怪物&妖怪&神豪&霸总.都市&高甜","class_url":"&rexue&xuanhuan&xiuzhen&gufeng&lianai&chuanyue&dushi&bazong&xuanyi&gaoxiao&qihuan&zongcai&richang&maoxian&kehuan&chunai&mohuan&zhanzheng&qiangwei&wuxia&shenghuo&dongzuo&hougong&youxi&kongbu&mangai&zhenren&xiaoyuan&juqing&lingyi&shaonian&tuili&huaijiu&qinggan&ouxiang&shaonv&dujia&nuexin&baoxiao&lizhi&meishi&fuchou&caihong&weimei&zhiyu&mingxing&naodong&mofa&xiuxian&zhongsheng&xianxia&moshi&yineng&nvzun&qita&yanqing&danmei&yundong&gongdou&guzhuang&meishaonv&shenmo&lishi&jingxian&jingji&mengxi&tiyu&gedou&jijia&nuelian&shuang&fuli&qita2&xiaojiangshi&jiangshi&langman&jinshouzhi&yujie&zhandou&egao&shehui&quanmou&qingchun&luoli&tongren&zhenhan&riman&junfa&minguo&tegong&meinv&jiandie&anhei&jiecao&jingdian&youmo&tianchong&shenhua&riben&yijiyuan&tiaoman&LOL&zhongtian&duanpian&jingsong&sige&guoman&youqudao&mengchong&renxing&chonghun&xinqi&xixiegui&shenjiemanhua&xueyuehua&mengqishi&shouer&shaoer&baihe&chiji&qiangzhan&tezhongbing&xiongdi&yishi&xiongmei&sanciyuan&meixing&haomen&hunchong&kaigua&xuexing&qingsong&yangcheng&tishen&nanshen&qingqingshu&yishijie&nanchuannv&hunchuan&yinan&dujitang&pianyu&manhuahui&longren&xihuan&zhaohuan&yijie&henxiyou&xiyouji&jianghu&duantoudao&hanman&bingjiao&changpian&chenlan&aiqing&nvqiang&ranxiang&tianshangkong&duzhiniao&xuezu&mowang&keai&gongting&hunlian&meng&ashuai&sanjiaolian&qianshi&lunhui&jingqi&zhentan&huanlexiang&zhichang&gandong&jiakong&qingxiaoshuo&yanyi&xingzhuanhuan&dongfang&danmeiBL&qingsonggaoxiao&tongrenmanhua&xiaoyuangaoxiaoshenghuo&shaonvaiqing&zhengju&shaonao&zhuangbi&shengui&weiniang&gaoqingdanxing&gushimanhua&lianaishenghuoxuanhuan&xifangmohuan&jianniang&zhaixi&shangzhan&shuangliu&rexuemaoxian&keji&wenxin&jiating&hunyin&duanzi&neihan&jizhan&yulequan&weilai&chongwu&bazonglianaixuanhuan&gushi&yinyuewudao&nixi&zhaohuanshou&kehuanmohuan&jiujie&lunli&lianaishenghuo&xinzuo&lishimanhua&ertong&zhentantuili&xiuzhenlianaijiakong&shougong&qingnian&qitamanhua&zhiyu2&shishi&xiuji&xiangcun&xingzhuan&hunai&siwang&sishen&shaonan&xuanyijingsong&baoxiaoxiju&dongzuogedou&gaibian&AA&lianaidanmei&heidao&guiguai&sangshi&zhupu&zhiyinmanke&maimeng&nizhuan&danvzhu&aimei&shenghua&qiwen&zhaidou&lanmu&guaitan&chongai&huanxiang&yizu&tanan&panni&juwei&yinv&lieqi&rigeng&manman&zhidou&zhengnengliang&manhuayifan&nvwangdiankeng&mankezhan&samanhua&xiaoshuogaibian&shenshi&kongbuxuanyi&huiben&yinyue&huxian&sihoushijie&motong&manhua&mori&xitong&shenxian&youyaoqi&guaiwu&yaoguai&shenhao&bazongdushi&gaotian","area_name":"全部&儿童漫画&少年漫画&少女漫画&青年漫画","area_url":"&ertong&shaonian&shaonv&qingnian","sort_name":"全部&日本&大陆&香港&台湾&欧美&韩国&其他","year_name":"全部&已完结&连载中","sort_url":"&riben&dalu&hongkong&taiwan&oumei&hanguo&qita","year_url":"&wanjie&lianzai","find_rule":"body&&#comic-items&&li;a,1&&Text;img&&src;span&&Text;a&&href","searchFind":"body&&.itemBox;.itemTxt&&a&&Text;a&&href;a,2&&Text;.itemTxt&&Text;img&&src","search_url":"https://m.zuimh.com/search/?keywords=**&page=fypage","titleColor":"","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.pic&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.sub_r&&p&&Text');\n// 获取更新状态\nvar des_update = parseDomForHtml(html,'body&&.Drama&&li&&span&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&p&&Text').split(':')[1];\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取类别\nvar des_class = parseDomForHtml(html,'body&&.sub_r&&p,2&&Text');\n\nd.push({\n\ttitle: '更新：'+des_update+'\\n'+'作者：'+des_author+'\\n'+'类别：'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nif (conts !=null){\nfor (var i = 0; i < conts.length-1 ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input.replace(\"m\",\"www\"),{});var ty=parseDomForHtml(htmls,\"body&&script&&Html\");eval(ty);var pics=[];for (var k = 0; k < chapterImages.length;k++) {pics.push(chapterImages[k])};\"pics://\"+pics.join(\"&&\")'\n});\n}\n} else {d.push({title: '暂无漫画源',url:getUrl()});}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":""},{"last_chapter_rule":"","title":"独漫画","author":"仰望星空","version":0,"url":"https://m.dumanhhua.com/fyAll/fypage/","col_type":"movie_3","class_name":"更新&已完结&连载中&国产","class_url":"update&list/wanjie&list/lianzai&list/dalu","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.list-comic||.itemBox;mip-img&&alt;mip-img&&src;.info||.coll&&Text;a&&href","searchFind":"body&&.itemBox;mip-img&&alt;a&&href;.coll&&Text;.itemTxt&&Text;mip-img&&src","search_url":"https://m.dumanhhua.com/search/?keywords=**&page=fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.img&&mip-img&&src');\n// 获取更新\nvar des_update = parseDomForHtml(html, 'body&&dl&&Text').replace('新','');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&dl,1&&Text');\n// 获取更新时间\nvar des_class = parseDomForHtml(html,'body&&dl,3&&Text').replace('新','');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n\nd.push({\n\ttitle: des_update+'\\n'+des_class+'\\n'+des_author,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i = conts.length-1; i >0  ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var res1 = {};var d1 = [];var jsHtml = fetch(input,{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var pics=[];for(var k=1;  ;k++){try{var jsHtml = fetch(input.split(\".html\")[0] + \"-\"+k + \".html\",{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var jsUrl = parseDomForHtml(jsHtml,\"body&&.erPag&&img,1&&src\");if(jsUrl.indexOf(\"webp\")>-1){pics.push(jsUrl);}else{break}}catch(e){break}};\"pics://\"+pics.join(\"&&\")'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"土豆漫画网","author":"仰望星空","version":0,"url":"https://m.xm124.com/list/fyAll/fypage/","col_type":"movie_3","class_name":"已完结&连载中","class_url":"wanjie&lianzai","area_name":"儿童&少年&少女&青年","area_url":"ertong&shaonian&shaonv&qingnian","sort_name":"都市&玄幻&热血&耽美&蔷薇&古风&恋爱&冒险&校园&恐怖&搞笑","year_name":"日本&大陆&欧美&韩国","sort_url":"dushi&xuanhuan&rexue&danmei&qiangwei&gufeng&lianai&maoxian&xiaoyuan&kongbu&gaoxiao","year_url":"riben&dalu&oumei&hanguo","find_rule":"body&&.list-comic;.txtA&&Text;mip-img&&src;.info&&Text;a&&href","searchFind":"body&&.UpdateList&&.itemBox;.itemTxt&&a&&Text;a&&href;.coll&&a&&Text;.itemTxt&&Text;mip-img&&src","search_url":"https://m.xm124.com/search/?keywords=**&page=fypage;get;utf-8","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.img&&mip-img&&src');\n// 获取更新\nvar des_update = parseDomForHtml(html, 'body&&dl&&Text').replace('新','');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&dl,1&&Text');\n// 获取更新时间\nvar des_class = parseDomForHtml(html,'body&&dl,3&&Text').replace('新','');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n\nd.push({\n\ttitle: des_update+'\\n'+des_class+'\\n'+des_author,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i = conts.length-1; i >0  ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var res1 = {};var d1 = [];var jsHtml = fetch(input,{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var pics=[];for(var k=1;  ;k++){try{var jsHtml = fetch(input.split(\".html\")[0] + \"-\"+k + \".html\",{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var jsUrl = parseDomForHtml(jsHtml,\"body&&.erPag&&img,1&&src\");if (jsUrl.indexOf(\"jpg\")>-1){pics.push(jsUrl);}else{break}}catch(e){break}};\"pics://\"+pics.join(\"&&\")'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"扑飞漫画","author":"ivnyoov&仰望星空","version":0,"url":"https://pufeimanhua.com/sort/fyAll/fypage.html","col_type":"movie_3","class_name":" 热血&机战&运动&推理&冒险&耽美&百合&搞笑&战争&神魔&忍者&竞技&悬疑&社会&恋爱&宠物&吸血&萝莉&后宫&御姐&霸总&玄幻&古风&历史&漫改&游戏&穿越&恐怖&真人&科幻&都市&武侠&修真&生活&动作","class_url":"t1&t2&t3&t4&t5&t6&t7&t8&t9&t10&t11&t12&t13&t14&t15&t16&t17&t18&t19&t20&t21&t22&t23&t24&t25&t26&t27&t28&t29&t30&t31&t32&t33&t34&t35","area_name":"知音漫客&神漫&飒漫画&飒漫乐画&风炫漫画&爱漫画&漫画周刊&漫客栈&漫画派对&漫画世界&漫画会&中国卡通&漫画show&漫友&乐漫&怪兽漫画&淘漫画&极漫&漫王&壹周漫画&星漫&看漫画","area_url":"c1&c2&c3&c4&c5&c6&c7&c8&c9&c10&c11&c12&c13&c14&c15&c16&c17&c18&c19&c20&c21&c22","sort_name":"","year_name":"A&B&C&D&E&F&G&H&I&J&K&L&M&N&O&P&Q&R&S&T&U&V&W&X&Y&Z","sort_url":"","year_url":"lA&lB&lC&lD&lE&lF&lG&lH&lI&lJ&lK&lL&lM&lN&lO&lP&lQ&lR&lS&lT&lU&lV&lW&lX&lY&lZ","find_rule":".comic-list&&li;h3&&Text;img&&data-src;.chapter&&Text;a&&href","searchFind":".comic-list&&li;h3&&Text;a&&href;p&&Text;.chapter&&Text;img&&data-src","search_url":"https://pufeimanhua.com/sort/?key=**","titleColor":"","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.comic-cover&&img&&data-src');\n// 获取更新时间\nvar des_time = parseDomForHtml(html,'body&&.update&&p&&Text');\n// 获取更新状态\nvar des_update = parseDomForHtml(html,'body&&.chapter-list&&li&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.desc-con&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.chapter-list&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取分类\nvar des_class = parseDomForHtml(html,'body&&.attr&&Text');\n\nd.push({\n\ttitle: '更新至：'+des_update+'\\n'+des_time+'\\n'+'类别：'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nif (conts !=null){\nfor (var i = conts.length-1; i >=0   ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{});var list=parseDomForHtml(htmls,\"body&&.comiclist&&script&&Html\").match(/http?(.*?)(jpg-smh.low|jpg)/g);var pics=[];for (var k = 0; k < list.length;k++) {pics.push(list[k])};\"pics://\"+pics.join(\"&&\")'\n});\n}\n} else {d.push({title: '暂无漫画源'});}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":""},{"title":"漫画芯","author":"仰望星空","version":0,"url":"https://www.mhxin.com/fyAll/fypage/","col_type":"movie_3","class_name":"连载&完结&更新","class_url":"list/lianzai&list/wanjie&update","area_name":"少年&少女&青年","area_url":"list/shaonian&list/shaonv&list/qingniian","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.list_con_li&&li;h3&&a&&Text;img&&src;p,3&&a&&Text;a&&href","searchFind":"body&&.list-comic;a&&title;a&&href;.newPage&&Text;li&&Text;img&&src","search_url":"https://www.mhxin.com/search/?keywords=**&page=fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDom(html, 'body&&.comic_i_img&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.comic_deCon_liO&&li&&Text');\n// 获取更新时间\nvar des_class = parseDomForHtml(html,'body&&.comic_deCon_liO&&li,2&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.comic_deCon_d&&p&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&#chapter-list-1||.list_con_li&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取更新\nvar des_update = parseDomForHtml(conts[conts.length-1],'a&&Text');\n\nd.push({\n\ttitle: '最新：'+des_update+'\\n'+des_author+'\\n'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (var i = 0; i <  conts.length ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href') + '@lazyRule=.js:var htmls=fetch(input,{});var ty=parseDom(htmls,\"body&&script&&Html\");eval(ty);var pics=[];for (var k in chapterImages) {pics.push(chapterImages[k]);};\"pics://\"+pics.join(\"&&\")'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"倾城漫画网","author":"仰望星空","version":0,"url":"https://m.mhba123.com/fyAll-fypage.html","col_type":"movie_3","class_name":"排行榜&最近更新&最新上架&已完结","class_url":"f-1-0-0-0-0-1&f-1-0-0-0-0-0&f-1-0-0-0-0-2&f-1-0-0-2-0-0","area_name":"热血&恋爱&校园&百合&耽美&冒险&后宫&仙侠&武侠&悬疑","area_url":"f-1-1-0-0-0-0&f-1-2-0-0-0-0&f-1-3-0-0-0-0&f-1-4-0-0-0-0&f-1-5-0-0-0-0&f-1-6-0-0-0-0&f-1-7-0-0-0-0&f-1-8-0-0-0-0&f-1-9-0-0-0-0&f-1-10-0-0-0-0","sort_name":"","year_name":"推理&搞笑&奇幻&恐怖&玄幻&古风&萌系&日常&治愈&烧脑","sort_url":"","year_url":"f-1-11-0-0-0-0&f-1-12-0-0-0-0&f-1-13-0-0-0-0&f-1-14-0-0-0-0&f-1-15-0-0-0-0&f-1-16-0-0-0-0&f-1-17-0-0-0-0&f-1-18-0-0-0-0&f-1-19-0-0-0-0&f-1-20-0-0-0-0","find_rule":"body&&#classList_1&&li;a&&title;img&&src;span&&Text;a&&href","searchFind":"body&&.am-avg-sm-3&&li;a&&title;a&&href;a&&Text;;img&&src","search_url":"https://m.mhba123.com/index/index/search.html?keyboard=**&page=fypage","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html=getResCode();\r\n//获取图片\r\nvar des_pic = parseDomForHtml(html, 'body&&.coverForm&&img&&src');\r\n// 获取作者\r\nvar des_author = parseDomForHtml(html,'body&&.info&&p,1&&Text');\r\n// 获取更新时间\r\nvar des_class = parseDomForHtml(html,'body&&.info&&p,3&&Text');\r\n// 获取简介\r\nvar des_desc = parseDomForHtml(html, 'body&&.detailContent&&Text');\r\n//获取列表\r\nvar conts=parseDomForHtml(html, 'body&&.chapters&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\r\n// 获取更新\r\nvar des_update = parseDomForHtml(html,'body&&.info&&p,4&&Text');\r\n\r\nd.push({\r\n\ttitle: '更新：'+des_update+'\\n'+des_author+'\\n'+des_class,\r\n desc: des_desc,\r\n pic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic'\r\n});\r\nfor (var i = conts.length-1; i >=0 ; i--) {\r\nd.push({\r\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\r\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input,{});var ty=parseDom(htmls,\"head&&script&&Html\");eval(ty);var tz=parseDom(htmls,\"body&&script,1&&Html\");eval(tz);var pics=[];for (var k in picdata) {pics.push(imgDomain+picdata[k]);};\"pics://\"+pics.join(\"&&\")'\n});\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"多多漫画","author":"仰望星空","version":1,"url":"https://apifans.dushimh.com/app2/comic/index?sort=fyAll&page=fypage","col_type":"movie_3","class_name":"上架&最新&热门&完结&连载","class_url":"&update&click&post＆＆filter=wanjie&list＆＆filter=lianzai","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.items;\nvar items = list.map(data => ({\n    title: data.name,\n    url: 'https://api.duoduomh.com/app2/comic/view?id=' + data.id,\n    desc: data.last_chapter_name,\n    pic_url: data.coverUrl,\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.items;\nvar items = list.map(data => ({\n    title: data.name,\n    url: 'https://api.duoduomh.com/app2/comic/view?id=' + data.id,\n    desc: '更新至'+data.last_chapter_name,\n    content: data.description,\n    img: data.coverUrl\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"https://apifans.dushimh.com/app2/comic/search?sort=click&page=fypage&keywords=**","titleColor":"#ffff00ff","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar d = [];\nvar j = json.data;\nd.push ({\n    title: '更至：'+j.last_chapter_name+'\\n'+'作者：'+j.author+'\\n'+'类别：'+j.category_data.name,\n    url: j.url,\n    desc: j.description,\n    pic_url: j.coverUrl,\n    col_type: 'movie_1_vertical_pic'\n});\nvar list = j.chapterGroup[0].chapters;\nfor (var i = 0;i < list.length ; i++) {\nd.push ({\n    title: list[i].name,\n    url: 'https://api.duoduomh.com/app2/chapter/view?id='+list[i].id+'@lazyRule=.js:var jsons = JSON.parse(fetch(input,{}));var pics = [];for (var k = 0; k < jsons.data.count; k++) {pics.push(jsons.data.imageArray[k])};\"pics://\"+pics.join(\"&&\")'\n})};\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff00ff"},{"last_chapter_rule":"","title":"乐语漫画","author":"仰望星空","version":1,"url":"https://m.leyuman.com/fyAll/fypage.html","col_type":"movie_3","class_name":"已完结&连载中&最近更新&排行榜","class_url":"page/wanjie&page/lianzai&page/new&page/hot","area_name":"少年&少女&青年&女性&真人","area_url":"list/shaonian&list/shaonv&list/qingnian&list/nvxing&list/zhenren","sort_name":"","year_name":"大陆&日本&韩国&欧美&香港&台湾&其他","sort_url":"","year_url":"list/dalu&list/riben&list/hanguo&list/oumei&list/xianggang&list/taiwan&list/qita","find_rule":"body&&.tbox_m&&li;a&&title;mip-img&&src;span&&Text;a&&href","searchFind":"body&&.tbox_m&&li;a&&title;a&&href;span&&Text.js:'更新至'+input;*;mip-img&&src","search_url":"https://m.leyuman.com/search/**/fypage.html","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:var res = {};\nvar d = [];\nvar html=getResCode()\n\n//获取图片\nvar des_pic = parseDom(html, 'body&&.dbox&&mip-img&&src');\n// 获取标题\nvar des_title = parseDomForHtml(html, 'body&&.act&&p&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.data&&Text').split('开')[0];\n//获取列表\nvar conts = parseDom(html, 'body&&.list_block&&Html').match(/li[\\s\\S]*?<\\/li>/g);\n\nd.push({\n\ttitle: des_title,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\nif (conts !=null){\nfor (var i = conts.length-1 ; i >=0;i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href') + '@lazyRule=.js:var htmls=fetch(input,{});var ty=parseDom(htmls,\"body&&script,3&&Html\");eval(ty);var picss=JSON.parse(z_img);var pics=[];for (var k in picss) {if (picss[k].indexOf(\"http\")>-1){pics.push(picss[k]);}else{pics.push(\"https://img.shishi-life.com/\"+picss[k]);};};\"pics://\"+pics.join(\"&&\")'})}\n} else {d.push({title: '暂无漫画源'});}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"蒂亚漫画","author":"仰望星空","version":1,"url":"https://m.diya1.com/list/fyAll/?page=fypage","col_type":"movie_3","class_name":"已完结&连载中","class_url":"wanjie&lianzai","area_name":"少年漫画&少女漫画&青年漫画","area_url":"shaonian&shaonv&qingnian","sort_name":"","year_name":"日本&大陆&香港&台湾&欧美&韩国&其他","sort_url":"","year_url":"riben&dalu&hongkong&taiwan&oumei&hanguo&qita","find_rule":"body&&.col_3_1&&li;.txtA&&Text;img&&src;.info&&Text.js:input.split(':')[1];a&&href","searchFind":"body&&#update_list&&.itemBox;a,1&&Text;a&&href;.coll&&Text;.itemTxt&&Text;img&&src","search_url":"https://m.diya1.com/search/?keywords=**&page=fypage","group":"③漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.pic&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.sub_r&&p&&Text');\n// 获取更新状态\nvar des_update = parseDomForHtml(html,'body&&.Drama&&li,-2&&a&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&p&&Text').split('：')[1];\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取类别\nvar des_class = parseDomForHtml(html,'body&&.sub_r&&p,1&&Text');\n\nd.push({\n\ttitle: '更新：'+des_update+'\\n'+'来源：'+des_author+'\\n'+'类别：'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nif (conts !=null){\nfor (var i = 0; i <  conts.length-1 ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input.replace(\"m\",\"www\"),{});var ty=parseDomForHtml(htmls,\"body&&script&&Html\");eval(ty);var pics=[];for (var k = 0; k < chapterImages.length;k++) {pics.push(chapterImages[k])};\"pics://\"+pics.join(\"&&\")'\n});\n}\n} else {d.push({title: '暂无漫画源',url:getUrl()});}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"福利兔","author":"Killer","version":0,"type":"picture","url":"https://www.fulitu.cc/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".row&&div.item;\nh2&&Text;\nimg&&data-original;\nspan&&Text;\na&&href.js:$(input).lazyRule(()=>eval(JSON.parse(fetch(\"hiker://page/Picture?rule=\"+getVar('name'))).rule))","searchFind":"","search_url":"","group":"④beauty","detail_col_type":"movie_1","detail_find_rule":"js:\nvar html = fetch(input,{});\nvar picshowArr = [];\nvar list = parseDomForArray(html,\".content&&img\");\nfor(let i =0;i<list.length;i++) picshowArr.push(parseDom(list[i],\"img&&data-original\"));\nreturn \"pics://\"+picshowArr.join(\"&&\");","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"var html = fetch(input,{});\\nvar picshowArr = [];\\nvar list = parseDomForArray(html,\\\".content&&img\\\");\\nfor(let i =0;i<list.length;i++) picshowArr.push(parseDom(list[i],\\\"img&&data-original\\\"));\\n \\\"pics://\\\"+picshowArr.join(\\\"&&\\\");\"}]","proxy":"","icon":""},{"title":"片吧影院","author":"香雅情","version":2,"url":"http://www.pianba.net/class/fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&动作片&喜剧片&恐怖片&科幻片&爱情片&剧情片&战争片&纪录片","class_url":"1&5&6&7&8&9&10&11&12","area_name":"电视剧&国产剧&香港剧&欧美剧&韩国剧&日本剧&台湾剧&海外剧","area_url":"2&13&14&15&16&17&18&20","sort_name":"综艺&真人秀&脱口秀&晚会&音乐秀","year_name":"动漫&动画电影&动画剧集","sort_url":"4&23&24&25&26","year_url":"3&21&22","find_rule":".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;h4&&a&&href","searchFind":".stui-vodlist&&li;h4&&Text;a&&href;.pic-text&&Text;*;.lazyload&&data-original","search_url":"http://www.pianba.net/so/**----------fypage---/","titleColor":"","group":"④免嗅探","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar thumb = parseDom(getResCode(), \".stui-content__thumb&&img&&data-original\");\nd.push({\n\t\t\ttitle: '剧情简介：'+'    共'+getResCode().match(/<ul class=\\\"stui-content__playlist/g).length+'条线路',\n    desc:parseDomForHtml(getResCode(), \".stui-content__detail&&p,-1&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\n//var tabs=parseDom(getResCode(),'body&&.stui-pannel__bd&&Html').match(/<h3[\\s\\S]*?<\\/h3>/g);\nvar conts=parseDom(getResCode(),'body&&.stui-pannel__bd&&Html').match(/<ul class=\\\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n  var list=conts[i].match(/<a.*?<\\/a>/g);\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:'线路'+[i+1],\n\t\t\tcol_type: 'text_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j = 0; j<list.length; j++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:parseDom(list[j], \"a&&href\")+`@lazyRule=.js:var get =fetch(input,{});var js = parseDomForHtml(get,\".embed-responsive&&script&&Html\");eval(js);player_data.url`,\n      col_type: 'text_2'\n\t\t\t});\n   }\n  }\n}\n\nif(getResCode().indexOf('stui-content__down')!=-1){\nvar downs=parseDom(getResCode(),'body&&.stui-content__down&&Html').match(/<li.*?<\\/li>/g);\n\t\td.push({\n\t\t\ttitle:'下载线路',\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n\n\t\tfor(var dj = 0; dj<downs.length; dj++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(downs[dj], \"a&&Text\"),\n      url:parseDom(downs[dj], \"a&&href\"),\n      col_type: 'text_2'\n\t\t\t});\n   }\n}\n\n//二级模板\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":""},{"last_chapter_rule":"","title":"片库网","author":"香雅情","version":4,"url":"https://m.mypianku.net/fyclass/-fyyear-fyarea----fypage.html","col_type":"movie_3","class_name":"电影&剧集&动漫","class_url":"mv&tv&ac","area_name":"地区&大陆&美国&日本&香港&台湾&韩国&英国&泰国","area_url":"&_E5_A4_A7_E9_99_86&_E7_BE_8E_E5_9B_BD&_E6_97_A5_E6_9C_AC&_E9_A6_99_E6_B8_AF&_E5_8F_B0_E6_B9_BE&_E9_9F_A9_E5_9B_BD&_E8_8B_B1_E5_9B_BD&_E6_B3_B0_E5_9B_BD","sort_name":"","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'.pic-list&&li');\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], 'img&&data-src');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], 'span&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: 'hiker://empty#'+url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\n//搜索关键词编码\nvar code = encodeURIComponent(MY_URL.split('#')[1]).replace(/%/g,'_');\nvar pg = MY_URL.split('#')[2];\nvar html = fetch('https://m.mypianku.net/s/'+code+'-'+pg+'.html',{headers:{\"User-Agent\":MOBILE_UA}});\n\r\nvar res = {};\r\nvar items = [];\nvar list = parseDomForArray(html,'.sr_lists&&li');\n//setError(list[1]);\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'h3&&Text');\n        var img = parseDomForHtml(list[i], 'img&&data-src');\r\n        var url = parseDomForHtml(list[i], 'a&&href');\n        //var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n        var cont = parseDomForHtml(list[i], '.int&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: 'hiker://empty#https://m.mypianku.net'+url,\n            //desc: desc,\n            content: cont\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);\n","search_url":"hiker://empty#**#fypage","titleColor":"","group":"④免嗅探","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lin=MY_URL.split('#')[1];\n\nvar cook = JSON.parse(fetchCookie(lin,{headers:{'User-Agent':MOBILE_UA}}))[0];\n\nvar jque='https://m.mypianku.net/ajax/downurl/'+lin.split('/')[4].split('.')[0]+'_'+lin.split('/')[3]+'/';\n//setError(jque);\n\n//发送请求取得源码。\nvar html = fetch(jque,{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":lin,\"X-Requested-With\":\"XMLHttpRequest\",'Cookie':cook}});\n//setError(cook);\n\n//如果有播放线路就显示播放线路，只有下载线路的显示下载线路。\nif(html.indexOf('player-all')!=-1){\nvar tabs=parseDomForArray(html,'body&&.py-tabs&&option');\nvar conts=parseDomForArray(html,'body&&.player-all-ul&&.player');\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n  var list=parseDomForArray(conts[i],'body&&a')\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j = 0; j<list.length; j++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n  url:$('https://m.mypianku.net'+parseDomForHtml(list[j], 'a&&href')).lazyRule((cook)=>{   \nvar get =fetch(input,{});\nvar js = get.split('geturl(\\'')[1].split(\"'\")[0];\nif(js.indexOf('m3u8')!=-1){return js;}\nelse{    \nvar fc = fetch('https://m.mypianku.net/playjson/index.php', {headers:{'content-type':'application/x-www-form-urlencoded','User-Agent':'Mobile','Cookie':cook},body:'url='+js,method:'POST'});\nreturn JSON.parse(fc).url}},cook),\n  col_type: list.length<=2?'text_2':'flex_button'\n\t\t\t});\n   }\n  }\n}\n}\nif(html.indexOf('nav-tabs')!=-1){\nvar dtabs=parseDomForArray(html,'.row:has(.nav-tabs)&&h2');\nvar dconts=parseDomForArray(html,'.row:has(.nav-tabs)&&.nav-tabs');\n for(var i = 0;i<dconts.length;i++){\n  var dlist=parseDomForArray(dconts[i],'body&&li')\n  if(dlist!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(dtabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n//setError(dlist[0]);\n\n\t\tfor(var j = 0; j<dlist.length; j++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(dlist[j], \"body&&Text\"),\n  url:'https://m.mypianku.net'+parseDomForHtml(dlist[j], \"a&&href\"),\n  col_type: 'text_1'\n\t\t\t});\n   }\n  }\n}\n}\n//二级2021/06/27\nres.data=d;\nsetHomeResult(res);\n","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"/*\nif(!getVar('pkcok')){\nvar cook = JSON.parse(fetchCookie('https://m.mypianku.net/mv/cookie.html',{headers:{'User-Agent':MOBILE_UA}}))[0];\n\nputVar('pkcok',cook);}\n*/","icon":""},{"title":"遥望Ⓜ︎","author":"墨非白","version":1,"url":"hiker://js#墨非白","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet localfile = \"hiker://files/wallpapers/yaowang.js\";\nlet fetchcode = fetch(localfile,{});\nif(!fetchcode){\n  fetchcode = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/images/yaowang.js\",{});\n  writeFile(localfile,fetchcode);\n}\neval(fetchcode);\ngetWallpaperSecondMenu();","searchFind":"","search_url":"","titleColor":"#58dd45","group":"④手机图","detail_col_type":"movie_1","detail_find_rule":"js:\nlet localfile = \"hiker://files/wallpapers/yaowang.js\";\nlet fetchcode = fetch(localfile,{});\neval(fetchcode);\nlet flag = MY_URL.split(\"#\")[2];\nswitch(flag){\n  case \"touxiang\":\n\tgetheadWallpaper();\n\tbreak;\n  case \"tuiguang\":\n\tgetadvertisrec();\n\tbreak;\n  case \"pengyouquan\":\n\tgetbackWallpaper();\n\tbreak;\n  case \"hudong\":\n\tgetinteractwallpaper();\n\tbreak;\n  case \"meiri\":\n\tgetindexrecpaster();\n\tbreak;\n  case \"fenlei\":\n\tgetwallpaperclassification();\n\tbreak;\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#58dd45"},{"firstHeader":"class","title":"回车桌面Ⓜ︎","author":"墨非白","version":1,"url":"fyAll/fypage.html","col_type":"pic_3","class_name":"","class_url":"","area_name":"美女&大陆&日韩&港台&动漫&清纯&可爱&欧美","area_url":"https://mm.enterdesk.com&https://mm.enterdesk.com/dalumeinv&https://mm.enterdesk.com/rihanmeinv&https://mm.enterdesk.com/gangtaimeinv&https://mm.enterdesk.com/dongmanmeinv&https://mm.enterdesk.com/qingchunmeinv&https://mm.enterdesk.com/keaimeinv&https://mm.enterdesk.com/oumeimeinv/","sort_name":"手机&植物&女性&动漫&食物&影视&非主流&明星&军事&游戏&汽车&爱情&体育&搞笑&动物&风景&节日&标志&另类","year_name":"电脑&风景&花卉&人文&汽车&影视&明星&美食&系统&摄影&游戏&体育&品牌&动漫卡通&矢量&色彩&节日&手绘&动物","sort_url":"https://sj.enterdesk.com&https://sj.enterdesk.com/zhiwu&https://sj.enterdesk.com/woman&https://sj.enterdesk.com/anime&https://sj.enterdesk.com/food&https://sj.enterdesk.com/dianyingdianshi&https://sj.enterdesk.com/feizhuliushouji&https://sj.enterdesk.com/mingxinggeshou&https://sj.enterdesk.com/junshiwuqi&https://sj.enterdesk.com/youximanhua&https://sj.enterdesk.com/qichejiaotong&https://sj.enterdesk.com/langmangaiqing&https://sj.enterdesk.com/yundongshouji&https://sj.enterdesk.com/gaoxiaotupian&https://sj.enterdesk.com/dongwushijie&https://sj.enterdesk.com/yishufengjing&https://sj.enterdesk.com/jierizhufu&https://sj.enterdesk.com/biaozhi&https://sj.enterdesk.com/lingleitupian","year_url":"https://www.enterdesk.com/zhuomianbizhi&https://www.enterdesk.com/zhuomianbizhi/fengjing&https://www.enterdesk.com/zhuomianbizhi/huahui&https://www.enterdesk.com/zhuomianbizhi/renwenbizhi&https://www.enterdesk.com/zhuomianbizhi/qichebizhi&https://www.enterdesk.com/zhuomianbizhi/yingshibizhi&https://www.enterdesk.com/zhuomianbizhi/mingxingbizhi&https://www.enterdesk.com/zhuomianbizhi/meishibizhi&https://www.enterdesk.com/zhuomianbizhi/xitong&https://www.enterdesk.com/zhuomianbizhi/sheying&https://www.enterdesk.com/zhuomianbizhi/youxibizhi&https://www.enterdesk.com/zhuomianbizhi/tiyubizhi&https://www.enterdesk.com/zhuomianbizhi/pinpaibizhi&https://www.enterdesk.com/zhuomianbizhi/dongmankatong&https://www.enterdesk.com/zhuomianbizhi/gaoqingbizhi&https://www.enterdesk.com/zhuomianbizhi/secaibizhi&https://www.enterdesk.com/zhuomianbizhi/jieribizhi&https://www.enterdesk.com/zhuomianbizhi/shouhuibizhi&https://www.enterdesk.com/zhuomianbizhi/dongwubizhi","find_rule":"js:\nlet res = {}; \nlet d = []; \nvar html = getResCode(); \nlet piclists = parseDomForArray(html, '.egeli_pic_m&&dd');\nif(MY_URL.indexOf(\"1.html\")!=-1){\nd.push({\n  col_type:\"blank_block\"\n}\n  ,{\n  title:\"图库\",\n\tpic_url:\"https://gitee.com/mofeibai/hiker_info/raw/master/cloud.png\",\n\turl:\"https://tu.enterdesk.com/fypage.html\",\n\tcol_type:\"icon_2\"\n},\n{\n  title:\"专题\",\n\tpic_url:\"https://gitee.com/mofeibai/hiker_info/raw/master/book.png\",\n\turl:\"https://www.enterdesk.com/special/fypage.html\",\n\tcol_type:\"icon_2\"\n});\n};\nfor (let i = 0; i < piclists.length; i++) {\n  d.push({ \n    title: parseDomForHtml(piclists[i], 'img&&title'), \n    url: parseDomForHtml(piclists[i], 'a,0&&href'),\n    desc: parseDomForHtml(piclists[i], 'img&&title'), \n    img: parseDomForHtml(piclists[i], 'img&&src') \n  }); \n} \nres.data = d; \nsetHomeResult(res);","searchFind":"","search_url":"https://www.enterdesk.com/search/1-0-6-0-0-0/**;get; UTF-8;{User-Agent@Windows}","titleColor":"#ff673ab7","group":"④手机图","detail_col_type":"pic_1_full","detail_find_rule":"js:\nfunction gettopic(){\n  let piclists = parseDomForArray(getResCode(), '.egeli_pic_m||.egesp_pic_m&&dd');\n  for (let i = 0; i < piclists.length; i++) {\n  d.push({ \n    title: parseDomForHtml(piclists[i], 'img&&title'), \n    col_type:\"movie_2\", \n    img: parseDomForHtml(piclists[i], 'img&&src'),\n\turl: parseDom(piclists[i], 'a,0&&href')+'@rule=js:var picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/huiche/gettopicpic.js\",{});eval(picfun);gettopicpic();'\n  }); \n}\n}\n\n\nlet res = {}; \nlet d = []; \nif(MY_URL.indexOf(\"tu.enterdesk\")!=-1){\n  var picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/huiche/getpic.js\",{});\n  eval(picfun);\n  getpic();\n}\nelse if(MY_URL.indexOf(\"special\")!=-1){\n  gettopic();\n}\nelse{\n  var picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/huiche/getrealpic.js\",{});\n  eval(picfun);\n  getrealpic();\n}\nres.data = d; \nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#ff673ab7"},{"title":"51贴图Ⓜ︎","author":"墨非白","version":1,"url":"hiker://js#墨非白","col_type":"avatar","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar jsonfile = \"hiker://files/51tietu/51tietu.js\";\nvar picfun = fetch(jsonfile);\nif(!picfun){\n  picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/51tietu/51tietu.js\",{});\n  writeFile(jsonfile,picfun);\n}\neval(picfun);\nShowCategories();","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"④手机图","detail_col_type":"movie_1","detail_find_rule":"js:\nvar jsonfile = \"hiker://files/51tietu/picpage.js\";\nvar picfun = fetch(jsonfile);\nif(!picfun){\n  picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/51tietu/picpage.js\",{});\n  writeFile(jsonfile,picfun);\n}\neval(picfun);\nShowPics();","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","icon":"#ff228be6"},{"last_chapter_rule":"","title":"漫小肆","author":"Timik","version":0,"type":"cartoon","url":"http://www.mxshm.top/booklist?tag=%E5%85%A8%E9%83%A8&area=-1&end=fyclass&page=fypage","col_type":"movie_3","class_name":"完结&连载","class_url":"1&0","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".mh-list&&li;.title&&a&&Text;.mh-cover&&style.js:input.match(/htt.*?jpg/g)[0];.chapter&&a&&Text;.title&&a&&href","searchFind":".mh-list&&li;.title&&a&&Text;.mh-cover&&style.js:input.match(/htt.*?jpg/g)[0];.chapter&&a&&Text;.title&&a&&href","search_url":"http://www.mxshm.top/search?keyword=**","group":"④漫画","detail_col_type":"text_4","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar h = getResCode()\nvar des_pic = parseDomForHtml(h, 'body&&.cover&&img&&src');\nvar des_title = parseDomForHtml(h, 'body&&h1&&Text');\nvar des_class= parseDomForHtml(h,\".tip,0&&span,0&&span,0&&Text\")\nvar des_desc = parseDomForHtml(h, '.content&&Text');\nvar urls = parseDomForArray(h, 'body&&.view-win-list&&a');\nd.push({\n\ttitle: des_title + \"\\n\" + des_class,\n\tdesc: des_desc,\n\tpic_url: des_pic,\n\turl: 'toast://啦啦啦，不给看',\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (let k in urls) {\nd.push({\n\ttitle: parseDomForHtml(urls[k],'a&&Text'),\n\turl: parseDom(urls[k],'a&&href') + `@lazyRule=.js:'pics://'+parseDomForHtml(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Linux; Android 10)'}}),'#cp_img&&Html').match(/http(?!(jpg|png|gif)).+?(jpg|png|gif)/g).join('&&')`\n});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"港澳台0306","author":"舞动的风","version":1,"url":"https://www.baidu.com/","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar txts = fetch(\"hiker://files/直播/港澳台0306.txt\",{}).replace(/\\r\\n ,/g, '').replace(/#EXTINF:-1,/g, '').replace(/\\n#genre#/g, ',#genre#').replace(/#EXTINF:-1/g, '').replace(/group-title=\"/g, '').replace(/\\nhttp/g, ',http').replace(/\\nrtmp/g, ',rtmp').replace(/，/g, ',').replace(/\",/g, '/').replace(/ /g, '').split('\\n');\n\r\nvar count = 0;\r\nvar res = {};\r\nvar d = [];\nd.push({\n    desc:'230&&float',\n\t\tcol_type: 'x5_webview_single'\n});\r\nfor (var i = 0; i < txts.length; i++) {\r\n    var r = {};\r\n    var j = txts[i].split(',');\r\n    if (j.length < 2) {\r\n        continue;\r\n    }\r\n    r.title = j[0].split('/')[j[0].split('/').length - 1];\r\n    r.url = j[1].replace(`\\n`, '').replace('\\r', '')+`@lazyRule=.js:refreshX5WebView(input);'toast://点击观看！'`;\r\n    if (r.url == '#genre#') {\r\n        d.push({\r\n            col_type: 'pic_1',\r\n            title: count == 0 ? '' : '',\r\n            url: ''\r\n        });\r\n        r.col_type = 'text_1';\r\n        count++\r\n    }\r\n    d.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var culcW_v1 =fetch(\"\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x30\\x33\\x30\\x36\\u6e2f\\u6fb3\\u53f0\\x2e\\x74\\x78\\x74\",);writeFile(\"\\x68\\x69\\x6b\\x65\\x72\\x3a\\x2f\\x2f\\x66\\x69\\x6c\\x65\\x73\\x2f\\u76f4\\u64ad\\x2f\\u6e2f\\u6fb3\\u53f0\\x30\\x33\\x30\\x36\\x2e\\x74\\x78\\x74\",culcW_v1)"},{"firstHeader":"class","title":"港澳台","author":"舞动的风","version":1,"url":"https://www.baidu.com/","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar dz = getVar(\"res\");\n\neval(getVar(\"tvcloud\"));","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"if(!getVar(\"\\x72\\x65\\x73\")){putVar(\"\\x72\\x65\\x73\",decodeURIComponent(fetch('\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x64\\x6e\\x2e\\x73\\x74\\x61\\x74\\x69\\x63\\x61\\x6c\\x79\\x2e\\x63\\x6f\\x6d\\x2f\\x67\\x68\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x7a\\x61\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x38\\x38\\x39\\x39\\x39\\x2e\\x74\\x78\\x74',{})))};if(!getVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\")){putVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\",decodeURIComponent(fetch('\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\\x2e\\x6a\\x73',{})))};"},{"firstHeader":"class","title":"4M1080","author":"舞动的风","version":0,"url":"https://www.baidu.com/","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar dz =fetch(getVar('m3u'),{});\neval(getVar(\"tvcloud\"));","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"if(!getVar('\\x6d\\x33\\x75')){var PI1=['\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x30\\x33\\x31\\x37\\x2e\\x74\\x78\\x74','\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x77\\x77\\x77\\x2e\\x70\\x61\\x73\\x74\\x65\\x66\\x69\\x6c\\x65\\x2e\\x63\\x6f\\x6d\\x2f\\x64\\x6f\\x77\\x6e\\x6c\\x6f\\x61\\x64\\x2f\\x7a\\x65\\x72\\x6f\\x31\\x32\\x33','\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x77\\x77\\x77\\x2e\\x70\\x61\\x73\\x74\\x65\\x66\\x69\\x6c\\x65\\x2e\\x63\\x6f\\x6d\\x2f\\x64\\x6f\\x77\\x6e\\x6c\\x6f\\x61\\x64\\x2f\\x7a\\x65\\x72\\x6f\\x31\\x32\\x34'];var zqQQ2 = batchFetch([{url:PI1[0]}, {url:PI1[1]},{url:PI1[2]}]);for(var UDw3 in zqQQ2){if(zqQQ2[UDw3][\"\\x69\\x6e\\x64\\x65\\x78\\x4f\\x66\"]('\\x43\\x43\\x54\\x56')!=-1){putVar('\\x6d\\x33\\x75',PI1[UDw3]),request(getVar('\\x6d\\x33\\x75'))}}};if(!getVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\")){putVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\",decodeURIComponent(fetch('\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\\x2e\\x6a\\x73',{})))};"},{"firstHeader":"class","title":"香港卫视","author":"舞动的风","version":0,"url":"https://www.baidu.com/","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar dz = fetch(\"hiker://files/rules/js/Hong Kong.js\",{});\n\neval(getVar(\"tvcloud\"));","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"if(!getVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\")){putVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\",decodeURIComponent(fetch('\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\\x2e\\x6a\\x73',{})))};"},{"firstHeader":"class","title":"直播0313","author":"舞动的风","version":2,"url":"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/直播0313/直播fyAll.txt","col_type":"long_text","class_name":"国产","class_url":"1","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(getVar(\"tvcloud\"));\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var 直播 = fetch(\"\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x30\\x33\\x31\\x33\\x2e\\x74\\x78\\x74\",{})[\"\\x73\\x70\\x6c\\x69\\x74\"]('\\x23\\x67\\x65\\x6e\\x72\\x65\\x23');for (var RUXjmtfK$1 = 1; RUXjmtfK$1 < 直播[\"\\x6c\\x65\\x6e\\x67\\x74\\x68\"]; RUXjmtfK$1++) {      writeFile('\\x68\\x69\\x6b\\x65\\x72\\x3a\\x2f\\x2f\\x66\\x69\\x6c\\x65\\x73\\x2f\\u76f4\\u64ad\\x30\\x33\\x31\\x33\\x2f\\u76f4\\u64ad' + RUXjmtfK$1 + '\\x2e\\x74\\x78\\x74', 直播[RUXjmtfK$1]);}if(!getVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\")){putVar(\"\\x74\\x76\\x63\\x6c\\x6f\\x75\\x64\",decodeURIComponent(fetch('\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x63\\x6f\\x64\\x65\\x2e\\x61\\x6c\\x69\\x79\\x75\\x6e\\x2e\\x63\\x6f\\x6d\\x2f\\x77\\x75\\x64\\x6f\\x6e\\x67\\x64\\x65\\x66\\x65\\x6e\\x67\\x2f\\x68\\x69\\x6b\\x65\\x72\\x74\\x76\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x74\\x76\\x63\\x6c\\x61\\x73\\x73\\x31\\x2e\\x6a\\x73',{})))};"},{"firstHeader":"class","title":"央视卫视0206","author":"舞动的风","version":1,"url":"https://www.baidu.com/","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar txts = fetch(\"hiker://files/直播/0206.txt\",{}).replace(/\\r\\n ,/g, '').replace(/#EXTINF:-1,/g, '').replace(/\\n#genre#/g, ',#genre#').replace(/#EXTINF:-1/g, '').replace(/group-title=\"/g, '').replace(/\\nhttp/g, ',http').replace(/\\nrtmp/g, ',rtmp').replace(/=/g, '').replace(/，/g, ',').replace(/\",/g, '/').replace(/ /g, '').split('\\n');\n\r\nvar count = 0;\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < txts.length; i++) {\r\n    var r = {};\r\n    var j = txts[i].split(',');\r\n    if (j.length < 2) {\r\n        continue;\r\n    }\r\n    r.title = j[0].split('/')[j[0].split('/').length - 1];\r\n    r.url = j[1].replace(`\\n`, '').replace('\\r', '');\r\n    if (r.url == '#genre#') {\r\n        d.push({\r\n            col_type: 'pic_1',\r\n            title: count == 0 ? '' : '',\r\n            url: ''\r\n        });\r\n        r.col_type = 'text_1';\r\n        count++\r\n    }\r\n    d.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#2add9c","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var res =fetch(\"https://\" + base64Decode('Z2l0aHViLnJjMTg0NC53b3JrZXJzLmRldi93dWRvbmdkZWZlbmcvdHZkYWltYS9yYXcvbWFzdGVyLyVFNSVBNCVBRSVFNSU4RCVBQiVFNSU5QyVCMCVFNiU5NiVCOQ==') + \".txt\",{});\nwriteFile(\"hiker://files/直播/0206.txt\",res)"},{"last_chapter_rule":"","title":"无插件直播","author":"","version":2,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: \"http://www.wuchajian.live/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        floatVideo: true\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"低调看球","author":"","version":2,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: \"http://m.51dingdan.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        floatVideo: true\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"④直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"中华听书网𝔥","author":"Hood","version":4,"url":"https://m.tingshucn.com/list/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"玄幻·网游&都市·言情&仙侠·武侠&恐怖·悬疑&穿越·同人&历史·军事&刑侦·推理&社会·情感&人文·社科&官场·商战&其他·类别","class_url":"1&2&3&4&5&6&7&8&9&10&11","area_name":"儿童·读物&幽默·笑话&健康·养生&文学·名著&相声·戏剧&名家·评书&职业·技能&外语·学习&财经·时评&广播剧","area_url":"12&13&14&15&16&17&18&19&20&21","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#cateList_wap&&.bookbox;\nh4&&Text;\nimg&&orgsrc;\n.update--span&&Text;\n.bookbox&&bookid.js:'https://m.tingshucn.com/book/'+input+'.html'","searchFind":"#cateList_wap&&.bookbox;\nh4&&Text;\n.bookbox&&bookid.js:'https://m.tingshucn.com/book/'+input+'.html';\n.update&&Text!{else};\n.intro_line&&Text;\nimg&&orgsrc","search_url":"https://m.tingshucn.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '.book_intro&&Text').replace(/ /g,'');\n\nd.push({\r\n\n//作者、类型等\ntitle: '作者：'+parseDomForHtml(html,'.info&&span,1&&Text')+'\\n'+'播音：'+parseDomForHtml(html,'.info&&span,0&&Text')+'\\n'+'更新：'+parseDomForHtml(html,'.info&&span,3&&Text'),\n\n//描述\r\ndesc: '状态：'+parseDomForHtml(html, '.info&&span,2&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.bookimg&&img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: '简介：'+des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type:'line'});\n\n//选集列表\nvar list=parseDomForArray(html, 'body&&#playlist&&li');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle:parseDomForHtml(list[i],'a&&Text'),\nurl:parseDom(list[i],'a&&href')+`@lazyRule=.booksite&&script&&Html.js:decodeURIComponent(input.match(/http.*?\\.mp3/)[0])`,\ncol_type: parseDomForHtml(list[0],'a&&Text').length>6?'flex_button':'text_3'});\n}\n\r\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"斋书苑","author":"ᝰꫛꫀꪝ藍凋","version":6,"type":"read","url":"https://m.zhaishuyuan.org/category/fyAll_fypage.html","col_type":"movie_3","class_name":"玄幻小说&仙侠小说&都市小说&网游竞技","class_url":"xuanhuan&wuxia&dushi&wangyou","area_name":"穿越小说&科幻小说&悬疑推理&其他小说","area_url":"chuanyue&kehuan&xuanyi&qita","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.bookbox;h4&&Text;img&&src;.update&&Text;a&&href","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.book_slist&&.bookbox');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\r\n       desc: parseDomForHtml(list[j], '.author&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://m.zhaishuyuan.org/search?searchkey=**&submit=","titleColor":"#ff148e8e","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar conts = parseDomForArray(html, 'body&&#chapterList');//章节列表\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.info&&Text'),//介绍\n    desc: parseDomForHtml(html, '.book-intro&&p&&Text'),//简介\n    pic_url: parseDom(html, '.bookimg&&img&&src'),//图片\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n\n\nfunction setLists(lists, index) {\n    d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">目录逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">目录正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n    var list = lists[index];\n\n    var txt = $('').rule(() => {\n        var pg = parseDomForHtml(getResCode(), '.chapter-name&&Text');\n        if (pg[2] > pg[1]) {\n            setResult([{\n                col_type: 'line'\n            }, {\n                title:  parseDomForHtml(getResCode(), '.chapter-name&&Text'),\n                col_type: 'text_center_1'\n            }, {\n                title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            }, {\n                col_type: 'line'\n            }, {\n                title: '““点击下一页””',\n                url: $(MY_URL.replace('.html#autoPage#', '_2.html')).rule(() => {\n                    setResult([{\n                        col_type: 'line'\n                    }, {\n                        title:\"““””<big>\" + parseDomForHtml(getResCode(), 'body&&.chapter-name&&Text')+ \"</big>\",\n                        col_type: 'text_center_1'\n                    }, {\n                        title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                        col_type: 'rich_text',\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    }])\n\n                }),\n                col_type: 'text_center_1'\n            }])\n        } else {\n            setResult([{\n                col_type: 'line'\n            }, {\n                title:\"““””<big>\" +  parseDomForHtml(getResCode(), 'body&&.chapter-name&&Text')+ \"</big>\",\n                col_type: 'text_center_1'\n            }, {\n                title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            }])\n        }\n    });\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + '#autoPage#' + txt,\n                col_type: 'text_1'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + '#autoPage#' + txt,\n                col_type: 'text_1'\n            });\n        }\n    }\n}\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);\n\nsetLastChapterRule('js:' + $.toString(() => {\n    var list = pdfa(request(MY_URL), '#chapterList&&a');\n    var len = list.length - 1;\n    var 最新章节 = pdfh(list[len], 'Text');\n    // log(最新章节);\n    setResult('更新至：' + 最新章节)\n}));","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"","title":"耽美小说","author":"ᝰꫛꫀꪝ藍凋","version":0,"type":"read","url":"http://www.dmxs.org/fyAll/index_fypage.html[firstPage=http://www.dmxs.org/fyAll/];get;gb2312","col_type":"text_1","class_name":"近代现代&古代架空&穿越重生&玄幻灵异","class_url":"book&gdjk&cycs&xhly","area_name":"网游竞技&推理悬疑&BL同人&GL百合","area_url":"wyjj&tlxy&BLTR&GLBH","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.bk;h3&&Text;*;.autor&&Text;a&&href","searchFind":"body&&.bk;h3&&Text;a&&href;.date&&Text;.autor&&Text;*","search_url":"http://www.dmxs.org/e/search/result/?searchid=836978?keyboard=**&show=title&classid=0","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n\nlet arr = pdfa(getResCode(), \"body&&.clearfix,1&&li\");\nfor (let it of arr) {\n    d.push({\n        url:'http://www.dmxs.org'+ pdfh(it, \"a&&href\") + \"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\",\n        title: pdfh(it, \"a&&Text\"),\n        col_type: \"text_1\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n\n}\n\nsetResult(d);","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"text_1\\\",\\n    title: \\\"““””<big>\\\" + parseDomForHtml(getResCode(), \\\"h1&&Text\\\") + \\\"</big>\\\",\\n});\\nd.push({\\n    title: parseDomForHtml(getResCode(), \\\".read_chapterDetail&&Html\\\"),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"}]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"","title":"九桃小说","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"read","url":"https://www.9txs.org/library/fyarea_fyclass_fysort_fypage.html","col_type":"movie_3","class_name":"玄幻奇幻&武侠修真&都市生活&历史军事&游戏竞技&科幻未来&悬疑灵异&二次元&经典短篇&古代言情&现代言情&幻想奇缘&浪漫青春&网络情缘&科幻空间&恐怖灵异&N次元&言情美文&其他类型","class_url":"1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16&17&18&19","area_name":"总点击&月点击&周点击&日点击&总推荐&月推荐&周推荐&日推荐&总收藏&字数&入库","area_url":"allvisit&monthvisit&weekvisit&dayvisit&allvote&monthvote&weekvote&dayvote&goodnum&size&postdate","sort_name":"全部&连载&完本","year_name":"","sort_url":"0&1&2","year_url":"","find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \".library&&li\");\n\nfor (let i = 0; i < arr.length; i++) {\n    let title = pdfh(arr[i], \"img&&alt\");\n    let pic_url = parseDom(arr[i], \"img&&src\");\n    let url = parseDom(arr[i], \"a&&href\");\n    let desc = pdfh(arr[i], \"span&&Text\");\n    d.push({\n        title: title,\n        url: url,\n        desc: desc,\n        pic_url: pic_url\n    });\n}\n\nsetResult(d);","searchFind":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), '.library&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'img&&alt'),\ndesc:parseDomForHtml(list[i],'.layui-badge&&Text+.author&&Text'),\ncontent:parseDomForHtml(list[i],'.intro&&Text'),\npic_url:parseDom(list[i],'img&&src'),\nurl:parseDom(list[i],'a&&href')});\n}catch(e){}\n}\n\nres.data = d;\nsetSearchResult(res);","search_url":"https://so.9txs.org/www/？？searchkey=**&page=fypage;post","titleColor":"#ff148e8e","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar conts = parseDomForArray(fetch(pd(html, '.more&&href')), 'body&&.read');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.read&&dl:not(:contains(最新章节)) a'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.detail&&Text'),\n    desc: parseDomForHtml(html, '.intro&&Text'),\n    pic_url: parseDom(html, '.detail&&img&&src'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">目录逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">目录正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'Text');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + \"#autoPage#\" + `@rule=js:` + $.toString(() => {\n                    let d = [];\n                    var des_title = parseDomForHtml(getResCode(), 'h1&&Text');\n                    d.push({\n                        title: '<b>‘‘' + des_title + '’’</b>',\n                        col_type: 'text_center_1'\n                    });\n                    let cont = parseDomForArray(getResCode(), '#content&&p,1:-1');\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\"<br><br>\");\n                    d.push({\n                        title: html,\n                        col_type: \"rich_text\",\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    });\n                    setResult(d);\n                }),\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'Text');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + \"#autoPage#\" + `@rule=js:` + $.toString(() => {\n                    let d = [];\n                    var des_title = parseDomForHtml(getResCode(), 'h1&&Text');\n                    d.push({\n                        title: '<b>‘‘' + des_title + '’’</b>',\n                        col_type: 'text_center_1'\n                    });\n                    let cont = parseDomForArray(getResCode(), '#content&&p,1:-1');\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\"<br><br>\");\n                    d.push({\n                        title: html,\n                        col_type: \"rich_text\",\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    });\n                    setResult(d);\n                }),\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\n            });\n        }\n    }\n}\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"““””<big>\\\" + parseDomForHtml(getResCode(), \\\"#nr_title&&Text\\\") + \\\"</big>\\\",\\n});\\nd.push({\\n    title: parseDomForHtml(getResCode(), \\\"#nr&&Html\\\"),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18\\n    }\\n});\\nsetResult(d);\"}]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"","title":"巴巴鱼","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"read","url":"https://m.babayu.com/all/id/fyAll.html?page=fypage","col_type":"movie_3","class_name":"全部&玄幻奇幻&武侠修真&都市异能&历史军事&游戏竞技&科幻灭世&悬疑灵异&轻小说&女生频道","class_url":"&42&43&44&45&46&47&49&52&48","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".clearfix&&li;img&&alt;img&&src;.finish&&Text;a&&href","searchFind":".clearfix&&li;img&&alt;a&&href;.finish&&Text;.intro&&Text;img&&src","search_url":"https://m.babayu.com/search.html?wd=**","titleColor":"#ff148e8e","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \".bookshelf-list&&li\");\nfor (let it of arr) {\n    d.push({\n        url:'https://m.babayu.com'+ pdfh(it, \"a&&href\") + \"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\",\n        title: pdfh(it, \"a&&Text\"),\n        col_type: \"text_1\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<big>\\\" + parseDomForHtml(getResCode(), \\\"\\\") + \\\"</big>\\\",\\n});\\nlet c = pdfh(getResCode(), \\\"#pageRead&&Html\\\")\\nlet cs = c.split(\\\"(1/\\\")\\n//log(\\\"cs: \\\" + cs.length)\\nif (cs.length > 1) {\\n    try {\\n        let count = parseInt(cs[1].split(\\\")\\\")[0])\\n        //log(\\\"count: \\\" + count)\\n        if (count > 1) {\\n            let urls = []\\n            for (let i = 1; i < count; i++) {\\n                urls.push({\\n                    url: getUrl().replace(\\\".html\\\", \\\"_\\\" + (i + 1) + \\\".html\\\"),\\n                    options: {\\n                        headers: {\\n                            \\\"User-Agent\\\": MOBILE_UA\\n                        }\\n                    }\\n                })\\n            }\\n            let htmls = batchFetch(urls)\\n            for (let it of htmls) {\\n                if (it == \\\"\\\") {\\n                    continue\\n                }\\n                c = c + pdfh(it, \\\"#pageRead&&Html\\\")\\n            }\\n\\n        }\\n    } catch (e) {\\n\\n    }\\n}\\nd.push({\\n    title: c,\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"}]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"","title":"采墨阁","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"read","url":"https://m.caimoge.com/shuku/fyAll/fypage.html","col_type":"movie_1_vertical_pic","class_name":"玄幻修真&奇幻魔法&异术超能&王朝争霸&江湖武侠&穿越架空&乡土布衣","class_url":"xuanhuanxiuzhen&qihuanmofa&yishuchaoneng&wangchaozhengba&jianghuwuxia&chuanyuajiekong&xiangtubuyi","area_name":"未来幻想&灵异鬼怪&探险揭秘&历史传记&特种军旅&王室贵族&官职商战&唯美言情","area_url":"weilaihuanxiang&lingyiguiguai&tanxianjiemi&lishizhuanji&tezhongjunlv&wangshiguizu&guanzhishangzhan&weimeiyanqing","sort_name":"","year_name":"网游竞技&魔幻女强&都市婚姻&百合之恋&同人美文&魔法校园&间谍暗战&其他小说","sort_url":"","year_url":"wangyoujingji&mohuannvqiang&dushihunyan&baihezhilian&tongrenmeiwen&mofaxiaoyuan&jiandieanzhan&qitaxiaoshuo","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.bookbox');\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'h4&&Text')+'\\n'+ parseDomForHtml(list[i], '.author&&Text'),\n        desc: parseDomForHtml(list[i], '.intro_line&&Text'),\n        pic_url: parseDom(list[i], 'img&&src'),\n        url: parseDom(list[i], 'a&&href').replace(\".html\",\"\").replace(\"txt/\",\"indexlist/\"),\n    })\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.book_slist&&.bookbox');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\r\n       desc: parseDomForHtml(list[j], '.author&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href').replace(\".html\",\"\").replace(\"txt/\",\"indexlist/\")\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://m.caimoge.com/search/?searchkey=**&submit=","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar conts = parseDomForArray(html, 'body&&#chapterList');//章节列表\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.info&&Text'),//介绍\n    desc: parseDomForHtml(html, '.book-intro&&p&&Text'),//简介\n    pic_url: parseDom(html, '.bookimg&&img&&src'),//图片\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\n\n\nfunction setLists(lists, index) {\n    d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">目录逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">目录正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n    var list = lists[index];\n\n    var txt = $('').rule(() => {\n        var pg = parseDomForHtml(getResCode(), '.chapter-name&&Text');\n        if (pg[2] > pg[1]) {\n            setResult([{\n                col_type: 'line'\n            }, {\n                title:  parseDomForHtml(getResCode(), '.chapter-name&&Text'),\n                col_type: 'text_center_1'\n            }, {\n                title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            }, {\n                col_type: 'line'\n            }, {\n                title: '““点击下一页””',\n                url: $(MY_URL.replace('.html#autoPage#', '_2.html')).rule(() => {\n                    setResult([{\n                        col_type: 'line'\n                    }, {\n                        title:\"““””<big>\" + parseDomForHtml(getResCode(), 'body&&.chapter-name&&Text')+ \"</big>\",\n                        col_type: 'text_center_1'\n                    }, {\n                        title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                        col_type: 'rich_text',\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    }])\n\n                }),\n                col_type: 'text_center_1'\n            }])\n        } else {\n            setResult([{\n                col_type: 'line'\n            }, {\n                title:\"““””<big>\" +  parseDomForHtml(getResCode(), 'body&&.chapter-name&&Text')+ \"</big>\",\n                col_type: 'text_center_1'\n            }, {\n                title: parseDomForHtml(getResCode(), '#CongWenCha&&Html'),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            }])\n        }\n    });\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + '#autoPage#' + txt,\n                col_type: 'text_1'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + '#autoPage#' + txt,\n                col_type: 'text_1'\n            });\n        }\n    }\n}\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"","title":"御书网","author":"ᝰꫛꫀꪝ藍凋","version":4,"type":"read","url":"https://m.yushubo.com/all/id/fyclass/size/fyarea.html?page=fypage","col_type":"movie_3","class_name":"全部&玄幻奇幻&武侠修真&都市异能&历史军事&游戏竞技&科幻灭世&悬疑灵异&轻小说","class_url":"52&55&57&59&61&63&65&66&60","area_name":"全部&30万字&30-50万字&50-100万字&100-200万字&200万字","area_url":"&0&1&2&3&4","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".clearfix&&li;img&&alt;img&&src;.finish&&Text;a&&href","searchFind":".clearfix&&li;img&&alt;a&&href;.finish&&Text;.intro&&Text;img&&src","search_url":"https://m.yushubo.com/search.html?sh=**","titleColor":"#ff148e8e","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \".bookshelf-list&&li\");\nfor (let it of arr) {\n    d.push({\n        url:'https://m.yushubo.com'+ pdfh(it, \"a&&href\") + \"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\",\n        title: pdfh(it, \"a&&Text\"),\n        col_type: \"text_1\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<big>\\\" + parseDomForHtml(getResCode(), \\\"\\\") + \\\"</big>\\\",\\n});\\nlet c = pdfh(getResCode(), \\\"#pageRead&&Html\\\")\\nlet cs = c.split(\\\"(1/\\\")\\n//log(\\\"cs: \\\" + cs.length)\\nif (cs.length > 1) {\\n    try {\\n        let count = parseInt(cs[1].split(\\\")\\\")[0])\\n        //log(\\\"count: \\\" + count)\\n        if (count > 1) {\\n            let urls = []\\n            for (let i = 1; i < count; i++) {\\n                urls.push({\\n                    url: getUrl().replace(\\\".html\\\", \\\"_\\\" + (i + 1) + \\\".html\\\"),\\n                    options: {\\n                        headers: {\\n                            \\\"User-Agent\\\": MOBILE_UA\\n                        }\\n                    }\\n                })\\n            }\\n            let htmls = batchFetch(urls)\\n            for (let it of htmls) {\\n                if (it == \\\"\\\") {\\n                    continue\\n                }\\n                c = c + pdfh(it, \\\"#pageRead&&Html\\\")\\n            }\\n\\n        }\\n    } catch (e) {\\n\\n    }\\n}\\nd.push({\\n    title: c,\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"}]","icon":"https://s4.ax1x.com/2021/12/24/TYx2WT.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.list&&ul&&a');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"听中国𝔥","author":"Hood&Zruiry","version":4,"url":"https://www.tingchina.com/fyAll_fypage.htm;get;gbk","col_type":"movie_3_marquee","class_name":"玄幻奇幻&鬼故事小说&网络热门&都市言情&历史军事&经典纪实&官场商战&通俗文学&刑侦推理&科幻有声&武侠小说&人物传记","class_url":"yousheng/lei_135&yousheng/lei_129&yousheng/lei_146&yousheng/lei_125&yousheng/lei_130&yousheng/lei_127&yousheng/lei_126&yousheng/lei_132&yousheng/lei_134&yousheng/lei_128&yousheng/lei_133&yousheng/lei_131","area_name":"单田芳评书&田连元评书&袁阔成评书&连丽如评书&张少佐评书&孙一评书&田战义评书&粤语评书&其他评书","area_url":"pingshu/lei_136&pingshu/lei_141&pingshu/lei_143&pingshu/lei_137&pingshu/lei_145&pingshu/lei_140&pingshu/lei_142&pingshu/lei_144&pingshu/lei_139","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.zimulist&&dl');\n\nfor(var i=0;i<list.length;i++){\n\nd.push({\n\ntitle: parseDomForHtml(list[i],'a,1&&Text').replace(/《|》/g,''),\npic_url: parseDom(list[i],'img&&src'),\ndesc: parseDomForHtml(list[i],'dd--a&&Text').replace('[','共').replace(']',''),\nurl: parseDom(list[i],'a&&href').replace(/lei.*htm\\//,'') + \";get;gbk\"\n  });\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.main02&&ul&&li');\n\nfor(var i=0;i<list.length;i++){\n\nd.push({\n\ntitle: parseDomForHtml(list[i],'a&&Text'),\npic_url: parseDom(list[i],'img&&src'),\nurl: parseDom(list[i],'a&&href') + \";get;gbk\"\n\n  });\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.tingchina.com/search1.asp?mainlei=0&lei=0&keyword=**;get;gbk","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nif(MY_URL.indexOf('yousheng')!=-1){\nvar des_desc = parseDomForHtml(html,'.book02--strong&&Text');\n}else{\nvar des_desc = parseDomForHtml(html,'.book02&&Text');\n}\n\nd.push({\r\n\n//作者、类型等\ntitle: parseDomForHtml(html,'.book01&&li,4&&Text')+'\\n'+parseDomForHtml(html,'.book01&&li,5&&Text')+'\\n'+parseDomForHtml(html,'.book01&&li,6&&Text'),\n\n//描述\r\ndesc: parseDomForHtml(html, '.book01&&li,7&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.book01&&img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: des_desc.replace(/ /g,''),\ncol_type: 'long_text'});\n\nd.push({col_type:'line'});\n\n//选集列表\nvar list=parseDomForArray(html, 'body&&.list&&ul&&a');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\nvar lazy = `@lazyRule=.js: var html = fetch(input, {headers:{'content-type':'charst=gb2312'}});var js = fetch('https://img.tingchina.com/play/h5_jsonp.asp', {headers:{'referer':'` + MY_URL + `'}});'https://t3344t.tingchina.com' + html.match(/fileUrl= \\\"(.*?)\\\"/)[1] + '?' + js.match(/(key=.*?)\\\"/)[1]`;\n\nvar listx = list[0];\nif(list.length>1){listx = list[1]}\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle: parseDomForHtml(list[i],'a&&Text'),\nurl: parseDom(list[i],'a&&href').replace(/disp.*htm\\//,'') + lazy,\ncol_type: parseDomForHtml(listx,'a&&Text').length>5?'flex_button':'text_3'});\n}\n\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&ul&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"海盗听书𝔥","author":"Hood","version":5,"url":"https://www.tingxiaoshuo.cc/category/fyclass/fyarea.html?page=fypage","col_type":"movie_1_vertical_pic","class_name":"玄幻奇幻&都市言情&宫斗女频&官场商战&武侠仙侠&刑侦推理&探险科幻&重生穿越&恐怖惊悚&文学历史","class_url":"6&7&8&9&10&11&12&13&14&15","area_name":"新书&更新&人气&连载&完结","area_url":"1&2&3&4&5","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.list-works&&li');\n\nfor(var i=0;i<list.length;i++){\n\nd.push({\n\ntitle: parseDomForHtml(list[i],'a&&title').replace(\"有声小说\",\"\") + \"\\n(\" + parseDomForHtml(list[i],'.ztlz&&Text') +\")\",\npic_url: parseDom(list[i],'img&&data-original'),\ndesc: \"简介：\" + parseDomForHtml(list[i],'.list-book-des&&Text').replace(/.*?介绍:/,\"\"),\nurl: parseDom(list[i],'a&&href')\n\n  });\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".list-works&&li;\na&&title!有声小说;\na&&href;\n.list-book-cs&&Text.js:input.replace(/：/g,' ');\n.list-book-des&&Text.js:'简介：'+input.replace(/.*?小说：/,'').replace(/.*?介绍:/,'');\nimg&&data-original","search_url":"https://www.tingxiaoshuo.cc/pc/index/search.html?keyword=**&page=fypage","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = '简介：'+parseDomForHtml(html, '.book-des&&.div-b&&Text').replace(/.*?小说：/,'').replace(/.*?介绍:/,'');\n\nd.push({\r\n\n//作者、类型等\ntitle: parseDomForHtml(html,'.book-info&&dd,2&&Text')+'\\n'+parseDomForHtml(html,'.book-info&&dd,3&&Text').replace(/ /g,'')+'\\n'+parseDomForHtml(html,'.book-info&&dd,4&&Text'),\n\n//描述\r\ndesc: parseDomForHtml(html, '.book-info&&dd,5&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.book-img&&img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type: 'line'});\n\n//选集列表\nvar list = parseDomForArray(html, '#playlist&&ul&&li');\n\nvar img_alt = parseDomForHtml(html, '.book-img&&img&&alt').replace(/\\|[\\s\\S]*/,'');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\n//选集名称\nfor(var i in list){\n\nvar title = parseDomForHtml(list[i],'a&&Text').replace(img_alt,'').replace(/《|》|_|【|】/g,'');\n\nif (title.length > 16) {\ntitle = title.substring(0,16);\n}\n\nd.push({\ntitle: title,\nurl: parseDom(list[i],'a&&href') +`@lazyRule=#playurl&&value.js:var json = JSON.parse(fetch(\"https://www.tingxiaoshuo.cc\"+input,{})); json.src.split(\"*\").map(item => String.fromCharCode(item)).join(\"\") + \"#isMusic=true#\"`,\ncol_type: parseDomForHtml(list[0],'a&&Text').length>3?'text_2':'text_3'});\n}\n\nfor(var b=0; b<5; b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"听书宝𝔥","author":"Hood","version":8,"url":"https://m.tingshubao.com/list/fyAll_fypage.html[firstPage=https://m.tingshubao.com/list/fyAll.html];get;gbk","col_type":"movie_3_marquee","class_name":"有声小说&玄幻武侠&都市小说&言情小说&惊悚悬疑&历史军事&网游科幻","class_url":"1&27&28&29&31&32&33","area_name":"   评 书   &粤语评书","area_url":"2&41","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".book-ol&&li;\n.book-title&&Text;\nimg&&data-original.js:\"http://m.tingshubao.com\"+input;\n.book-meta&&Text;\na&&href","searchFind":".book-ol&&li;\n.book-title&&Text;\na&&href;\n.book-meta&&Text;\n.book-desc&&Text;\nimg&&data-original.js:\"http://m.tingshubao.com\"+input","search_url":"https://m.tingshubao.com/search.asp?page=fypage&searchword=**&searchtype=-1;get;gbk","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1_vertical_pic","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    var urls = _getUrls()\n    for (var k in urls) {\n        if (urls[k].match(/\\.mp3\\?key/)) {\n            fy_bridge_app.log(urls[k])\n            return urls[k]\n        }\n    }\n});\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '.book-des&&Text');\n\nd.push({\r\n\n//作者、类型等\ntitle: parseDomForHtml(html,'.book-cell&&div,1&&Text')+'\\n'+parseDomForHtml(html,'.book-cell&&div,2&&Text')+'\\n'+parseDomForHtml(html,'.book-cell&&div,3&&Text'),\n\n//描述\r\n//desc: parseDomForHtml(html,'.binfo&&p,4&&Text'),\n\n//图片地址\npic_url: parseDom(html,'img&&src').replace(\"https\",\"http\"),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type: 'line'});\n\n//选集列表\nvar list = parseDomForArray(html, '#playlist&&li');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\nvar listx = list[0];\nif(list.length>1){listx = list[1]}\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle: parseDomForHtml(list[i],'a&&Text'),\nurl: \"x5Rule://\" + parseDom(list[i], 'a&&href') + \"@\" + _x5,\ncol_type: parseDomForHtml(listx,'a&&Text').length>5?'flex_button':'text_3'});\n}\n\nfor(var b=0; b<5; b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1_vertical_pic","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.video_list&&a');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"爱听网𝔥","author":"Hood&流氓","version":7,"url":"http://m.lovetingwang.com/category/fyAll/fypage.html","col_type":"movie_3_marquee","class_name":"玄幻奇幻&刑侦推理&武侠修真&经典纪实&都市言情&历史军事&通俗文学&游戏竞技&官场商场&科幻有声&灵异惊悚&人物传记&其他类型","class_url":"xhqh&xztl&wxxz&jdjs&dsyq&lsjs&tswx&yxjj&gcsz&kehuan&lyjs&rwcj&qita","area_name":"单田芳&田连元&袁阔成&连丽如&张少佐&孙一&田战义&刘兰芳&王玥波&孙岩&粤语&其他","area_url":"shantianfang&tianlianyuan&yuankuocheng&lianliru&zhangshaozuo&sunyi&tianzhanyi&liulanfang&wangyuebo&sunyan&yueyu&other","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".comiis_mh_twlist&&li;\n.twlist_ecspan&&Text;\nimg&&src;\na,2&&Text;\na&&href","searchFind":".comiis_mh_twlist&&li;\n.twlist_ecspan&&Text;\na&&href;\na,2&&Text.js:'播音：'+input;\n.twlist_info&&Text;\nimg&&src","search_url":"http://m.lovetingwang.com/search/result.html?searchkey=**&page=fypage","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\r\n\r\nvar list = parseDom(html, '.video_list&&Html').match(/<a[\\s\\S]*?<\\/a>/g);\n\nvar des_desc = parseDomForHtml(html, 'head&&meta,6&&content'); //获取简介\n\r\nd.push({\r\n title: '主播：'+parseDomForHtml(html,'head&&meta,9&&content')+'\\n'+'类型：'+parseDomForHtml(html,'head&&meta,8&&content'),\r\n desc: '更新到:'+parseDomForHtml(html, 'head&&meta,15&&content'),\r\n pic_url: parseDom(html, 'head&&meta,7&&content'),\r\n url: getUrl(),\r\n col_type: 'movie_1_vertical_pic'\r\n});\n    if (des_desc.length > 110) {\n            des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"......\");\n      } //限制简介长度\n\nd.push({\n          title: '简介：'+des_desc,\n          col_type: 'long_text'\n}); //输出简介\n\r\nd.push({col_type:'line'});\n\nd.push({\n          title:'播放列表(共' + list.length+ '集)',\n          url:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n          col_type: 'text_center_1'\n});\n\nfor (var j = 0; j < list.length; j++) {\nd.push({\r\n    title: parseDomForHtml(list[j],'a&&Text'),\r\n    url: parseDom(list[j],'a&&href') + `@lazyRule=#bofang_box&&script&&Html.js:eval(input);player_data.url+'#isVideo=true#'`,\n    col_type: 'flex_button'});\r\n}\n\r\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.playlist&&a');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：第'+title+'集');","title":"爱书音𝔥","author":"Hood","version":3,"url":"https://mip.ishuyin.com/list-fyAll-fypage-add_time-DESC-text.html","col_type":"movie_1_vertical_pic","class_name":"玄幻&都市&文学&武侠&言情&穿越&推理&恐怖&职场&悬疑&军事&历史","class_url":"2&8&38&7&1&36&39&5&41&33&40&16","area_name":"单田芳&刘兰芳&田连元&袁阔成&连丽如&张少佐&田战义&孙一&袁田&王玥波&其它评书","area_url":"42&43&44&45&46&47&48&49&53&55&50","sort_name":"娱乐&两性&百家讲坛&儿童","year_name":"耽美剧&爱情剧&BL剧&古风剧&校园剧&现代剧","sort_url":"35&34&31&37","year_url":"10&12&14&51&52&54","find_rule":".book_slist&&.bookbox;\n.bookinfo&&Text.js:input.replace(' 作者：','——').replace(/(简介.*)|\\|/g,'').replace('状态：','｜');\nimg&&src;\n.intro_line&&Text!简介： ;\ndiv&&bookid.js:'https://mip.ishuyin.com/player.php?mov_id='+input+'&look_id=1&player=mp'","searchFind":".book_slist&&.bookbox;\nh4&&Text;\ndiv&&bookid.js:'https://mip.ishuyin.com/player.php?mov_id='+input+'&look_id=1&player=mp';\n.author&&Text;\n.intro_line&&Text;\nimg&&src","search_url":"https://mip.ishuyin.com/search.php?page=fypage&keywords=**;get","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"text_3","detail_find_rule":".playlist&&a;\na&&Text.js:'第'+input+'集';\n*;\n*;\na&&href.js:'https://mip.ishuyin.com/'+input","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"天天评书网𝔥","author":"Hood","version":3,"url":"https://m.pingshu365.com/sm/fyAll_fypage.html;get;gbk","col_type":"text_center_1","class_name":"恐怖悬疑&盗墓探险&官场刑侦&历史军事&科学教育&经典文学&儿童读物&仙侠玄幻&都市言情&传统武侠&职场商战&人物传记&纪实文学&其他类别","class_url":"304&305&307&309&315&314&312&306&308&310&311&313&316&300","area_name":"单田芳&袁阔成&田连元&刘兰芳&王玥波&连丽如&张少佐&其他评书","area_url":"293&294&295&297&296&298&299&302","sort_name":"","year_name":"相声小品&百家讲坛&戏曲","sort_url":"","year_url":"303&317&318","find_rule":".top_list&&a;\na--span&&Text;\n*;\nspan&&Text;\na&&href","searchFind":".top_list&&a;\na--span&&Text;\na&&href.js:input.replace('..','https://m.pingshu365.com');\nspan&&Text;\n*;\n*","search_url":"https://m.pingshu365.com/search/1.asp?page=fypage&keyword=**&stype=;get;gbk","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '.book_intro&&Text');\n\nd.push({\r\n\n//作者、类型等\ntitle: '作者：'+parseDomForHtml(html,'.info&&span,1&&Text')+'\\n'+'播音：'+parseDomForHtml(html,'.info&&span,0&&Text')+'\\n'+'标签：'+parseDomForHtml(html,'.info&&span,4&&Text'),\n\n//描述\r\ndesc: '更新：'+parseDomForHtml(html, '.info&&span,3&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.bookimg&&img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: '简介：'+des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type:'line'});\n\n//选集列表\nvar list=parseDomForArray(html, 'body&&#playlist&&li');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle:parseDomForHtml(list[i],'a&&Text'),\nurl:parseDom(list[i],'a&&href'),\ncol_type: parseDomForHtml(list[0],'a&&Text').length>6?'flex_button':'text_3'});\n}\n\r\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"title":"听书合集𝔥","author":"Hood","version":5,"url":"hiker://fyAll","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n'喜马拉雅@@https://m.ximalaya.com/',\n'懒人听书@@http://www.lrts.me/',\n'蜻蜓FM@@https://m.qingting.fm/',\n'荔枝FM@@https://m.lizhi.fm/',\n'猫耳FM@@https://m.missevan.com/',\n'听书宝@@https://m.tingshubao.com/',\n'听神马@@https://m.tingsm.com/',\n'听中国@@https://www.tingchina.com/',\n'爱书音@@https://mip.ishuyin.com/',\n'有声书@@http://guotu.audio.3eol.com.cn/Mobile/Index',\n'幻听网@@http://m.ting89.com/',\n'爱听网@@http://m.lovetingwang.com/',\n'恋听网@@https://m.ting55.com/',\n'聚听网@@https://www.yousxs.com/',\n'听书网@@https://m.ting22.com/',\n'评书网@@http://m.zgpingshu.com/',\n'天天评书@@https://m.pingshu365.com/',\n'我听评书@@https://m.5tps.com/',\n'56听书@@http://m.ting56.com/',\n'56听书2@@https://m.ting56.cc/',\n'74听书@@http://m.ting74.com/',\n'88听书@@https://m.88tingshu.com/',\n'爱听书@@http://m.2uxs.com/',\n'520听书@@http://wap.fushu520.com/',\n'456听书@@http://www.ting456.com/',\n'天天听书@@https://tingbook.cc/',\n'麻辣听书@@https://m.malatingshu.com/',\n'海洋听书@@http://m.ychy.com/',\n'六月听书@@http://m.6yueting.com/',\n'有声听书@@https://m.ysts8.vip/',\n'中华听书@@https://m.tingshucn.com/',\n'乾坤听书@@https://m.xinqiankun.com/',\n'千千静听@@http://www.qqjt5.com/',\n'海盗听书@@http://www.tings8.com',\n'畅悦听书@@http://www.tac.cc/',\n'有声小说吧@@http://m.ysxs8.com/'\n];\n\nvar t=titles;\nvar res={};\nvar d=[];\n\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #6699FF\">'+'听书资源：'+'</span></b>',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_1'\n});\n\nfor(var i=0;i<t.length;i++)\n{\n   var k=t[i].split(/\\s*@@\\s*/);\n   if(k.length<2)continue;\n   var r={};\n   r.title=k[0];\n   r.url=k[1];\n   r.col_type='text_3';\n   d.push(r);\n}\n\nfor(var b=0;b<3;b++)\n{\n   d.push({\n    col_type: 'big_blank_block'});\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.playlist&&.plist&&a');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：第'+title+'集');","title":"恋听网𝔥","author":"Hood&发粪涂墙&帅√`人才","version":6,"url":"https://m.ting55.com/fyAll/page/fypage[firstPage=https://m.ting55.com/fyAll];get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_3","class_name":"推荐&玄幻&武侠&都市&言情","class_url":"tuijian&category/1&category/2&category/3&category/4","area_name":"科幻&穿越&推理&恐怖&惊悚","area_url":"category/6&category/5&category/7&category/8&category/9","sort_name":"","year_name":"历史&相声&评书&讲坛&经典","sort_url":"","year_url":"category/10&category/12&category/14&category/13&category/11","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html,'.clist&&a');\n\nfor(var i=0;i<list.length;i++){\n\nd.push({\n\ntitle: parseDomForHtml(list[i],'h3&&Text'),\npic_url: parseDom(list[i],'img&&src'),\ndesc: parseDomForHtml(list[i],'p,0&&Text').replace('作者：',''),\nurl: parseDom(list[i],'a&&href')\n\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":".slist&&a;\nh3&&Text;\na&&href;\np,2&&Text;\ndd--h3--p,2&&Text;\nimg&&src","search_url":"https://m.ting55.com/search/**/page/fypage;get;utf-8;{User-Agent@Mozilla 5.0}","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.js:var html = request(input);var bookid=parseDomForHtml(html,'meta[name=\"_b\"]&&content');var ispay=parseDomForHtml(html,'meta[name=\"_p\"]&&content');var page=parseDomForHtml(html,'meta[name=\"_cp\"]&&content');var xt=parseDomForHtml(html,'meta[name=\"_c\"]&&content');var json=JSON.parse(request('https://m.ting55.com/glink', {headers: {'Referer': input,'User-Agent': MOBILE_UA,'xt':xt}, method: 'POST', body: 'bookId='+bookid+'&isPay='+ispay+'&page='+page }));if(json.url!=\"\"){json.url}else if(json.ourl!=\"\"){json.ourl}else{'toast://操作过快了，被限制访问，等一小会儿再试吧'}`\n\n//线路列表\nvar tabs = parseDomForArray(html, 'body&&.playlist');\n\n//全部选集列表\nvar conts = parseDomForArray(html, 'body&&.playlist');\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '.intro&&Text');\n\nd.push({\n\n//作者、类型等\ntitle: parseDomForHtml(html,'.binfo&&p,1&&Text')+'\\n'+parseDomForHtml(html,'.binfo&&p,2&&Text')+'\\n'+parseDomForHtml(html,'.binfo&&p,0&&Text'),\n\n//描述\ndesc: parseDomForHtml(html, '.binfo&&p,4&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.bookinfo&&img&&src'),\nurl: getUrl(),\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: '简介：'+des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type:'line'});\n\nfor(var i in tabs){\n\n//选集列表\nvar list=parseDomForArray(conts[i], '.plist&&a');\n\n//线路名称\nd.push({\ntitle:parseDomForHtml(tabs[i],'h2&&Text'),\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\n//选集名称\nfor(var j in list){\nd.push({\ntitle: '第'+parseDomForHtml(list[j],'a&&Text')+'集',\nurl: parseDom(list[j],'a&&href')+lazy,\ncol_type: parseDomForHtml(list[0],'a&&Text').length>6?'flex_button':'text_3'\n});\n\n}\n}\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"firstHeader":"class","last_chapter_rule":"","title":"车影库·Q","author":"发粪涂墙","version":0,"url":"http://www.cheyingku.com/video/fyAll/fypage.html","col_type":"movie_2","class_name":"华语舞曲&欧美舞曲&抖音热门","class_url":"3&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.mv_list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.mv_xx&&Text'),\r\n       img: parseDom(list[j], 'img&&src'),\r\n       url: parseDomForHtml(list[j],'a&&href') + `@lazyRule=.js:'http:'+JSON.parse(fetch('http://www.cheyingku.com/skin/cheyingku/play.php?id='+input.match(/\\\\d+/),{headers:{'Referer':'http://www.cheyingku.com'}})).url`\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.mv_list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.mv_xx&&Text'),\r\n       img: parseDom(list[j], 'img&&src'),\r\n       url: parseDomForHtml(list[j],'a&&href') + `@lazyRule=.js:'http:'+JSON.parse(fetch('http://www.cheyingku.com/skin/cheyingku/play.php?id='+input.match(/\\\\d+/),{headers:{'Referer':'http://www.cheyingku.com'}})).url`\r\n  });\r\n}\r\nsetResult(d);","search_url":"http://www.cheyingku.com/search.php?key=**&pages=fypage","titleColor":"#003472","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"#003472"},{"last_chapter_rule":"","title":"音乐由你榜","author":"LZX","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://yobang.tencentmusic.com/#/rankList\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"last_chapter_rule":"","title":"听小说ᴺᵐ","author":"Namo","version":16,"url":"https://www.tingchina.com/yousheng/lei_fyAll_fypage.htm;GET;gb2312","col_type":"movie_3_marquee","class_name":"玄幻奇幻&恐怖惊悚&网络热门&都市言情&历史军事&经典纪实","class_url":"135&129&146&125&130&127","area_name":"官场商战&通俗文学&刑侦推理&科幻有声&武侠小说&人物传记","area_url":"126&132&134&128&133&131","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.zimulist&&dl');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n\n        title: parseDomForHtml(list[i], 'dd&&Text'),\n        pic_url: parseDom(list[i], 'img&&src'),\n        url: parseDom(list[i], 'a&&href')\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":".singerlist1&&li;a&&Text;a&&href;","search_url":"https://www.tingchina.com/search1.asp?mainlei=0&lei=0&keyword=**;GET;gb2312","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = '简介：' + parseDomForHtml(html, '.book02&&Text').replace(/.*?介绍:/, '');\n\nd.push({\n\n    //作者、类型等\n    title: parseDomForHtml(html, '.book01&&li,5&&Text') + '\\n' + parseDomForHtml(html, '.book01&&li,4&&Text').replace(/ /g, '') + '\\n' + parseDomForHtml(html, '.book01&&li,-1&&Text'),\n\n    //描述\n    desc: parseDomForHtml(html, '.book02&&Text'),\n\n    //图片地址\n    pic_url: parseDom(html, '.book01&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic'\n});\n\n//限制简介长度\nif (des_desc.length > 110) {\n    des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\nd.push({\n    col_type: 'line'\n});\n\n//选集列表\nvar list = parseDomForArray(html, '.list&&ul&&li:has(a)');\n\n//线路名称\nd.push({\n    title: '播放列表(共' + list.length + '集)',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_center_1'\n});\n\n//选集名称\nfor (var i in list) {\n\n    var title = parseDomForHtml(list[i], 'a&&Text');\n\n    if (title.length > 16) {\n        title = title.substring(0, 16);\n    }\n\n    d.push({\n        title: title,\n        url: 'x5Rule://' + parseDom(list[i], 'a&&href') + '@' + $.toString(() => {\n            let div = document.querySelector(\"#playdiv audio\");\n            if (div != null) {\n                return div.getAttribute(\"src\")\n            }\n        }),\n        col_type: parseDomForHtml(list[0], 'a&&Text').length > 3 ? 'text_2' : 'text_3'\n    });\n}\n\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"蜻蜓FM","author":"xxs","version":1,"url":"https://www.qingting.fm/channels/fyclass/fypage[firstPage=https://www.qingting.fm/channels/fyclass]","col_type":"movie_1_vertical_pic","class_name":"观棋有语","class_url":"387255","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.m4a|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace('?skipl=1', '')\n        }\n    }\n});\n\nvar list = parseDomForArray(getResCode(), 'body&&.program-row-root');\n\nvar pic = parseDomForHtml(getResCode(), 'body&&.bgImg&&style');\nif (pic.indexOf('jpg') != -1) {\n    pic = 'https:' + pic.substring(pic.indexOf('image:url(') + 10, pic.indexOf('jpg') + 3);\n} else {\n    pic = 'https:' + pic.substring(pic.indexOf('image:url(') + 10, pic.indexOf('png') + 3);\n}\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'p&&title'),\n        extra: {\n            newWindow: true\n        },\n        desc: \"时长\" + parseDomForHtml(list[j], '.col2&&Text') + \"\\n播放量\" + parseDomForHtml(list[j], '.col3&&Text') + \"\\n更新时间\" + parseDomForHtml(list[j], '.col4&&Text'),\n        pic_url: pic,\n        url: \"x5Rule://\" + parseDom(list[j], '.pTitle&&href') + '@' + _x5,\n        //parseDom(list[j], '.pTitle&&href'),\n        extra: {\n            blockRules: ['qtfm.*.m4a']\n        }\n    })\n}\n\nres.data = d;\nsetHomeResult(res);","chapter_find":"","movie_find":"","searchFind":"","search_url":"","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"https://pic.qtfm.cn/qt-msite/logo.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"中文听书𝔥","author":"Hood","version":0,"url":"https://m.tingzh.com/list/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"玄幻&武侠&都市&言情&科幻&历史&军事&推理&恐怖&惊悚&广播","class_url":"1&2&3&4&5&9&10&6&7&8&29","area_name":"儿童&财经&评书&相声&网游&诗歌&戏曲&笑话&粤语&通俗&百家讲坛","area_url":"27&12&13&14&11&30&34&31&33&32&28","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#cateList_wap&&.bookbox;\nh4&&Text;\nimg&&orgsrc;\n.update--span&&Text;\n.bookbox&&bookid.js:\"https://m.tingzh.com/book/\"+input+\".html\"","searchFind":"#cateList_wap&&.bookbox;\nh4&&Text;\n.bookbox&&bookid.js:\"https://m.tingzh.com/book/\"+input+\".html\";\n.update--span&&Text!{else};\n.intro_line&&Text;\nimg&&orgsrc","search_url":"https://m.tingzh.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = \"简介：\"+parseDomForHtml(html, '.book_intro&&Text').replace(/[\\s]/g,\"\");\n\nd.push({\r\n\n//作者、类型等\ntitle: \"作者：\"+parseDomForHtml(html,'.info&&span,0&&Text')+'\\n播音：'+parseDomForHtml(html,'.info&&span,1&&Text')+'\\n状态：'+parseDomForHtml(html,'.info&&span,2&&Text'),\n\n//描述\r\ndesc: \"更新：\"+parseDomForHtml(html,'.info&&span,3&&Text'),\n\n//图片地址\npic_url: parseDom(html, '.bookimg&&img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type: 'line'});\n\n//选集列表\nvar list = parseDomForArray(html, '#playlist&&li');\n\n//线路名称\nd.push({\ntitle: '播放列表(共' + list.length+ '集)',\nurl: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\nvar listx = list[0];\nif(list.length>1){listx = list[1]}\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle: parseDomForHtml(list[i],'a&&Text'),\nurl: parseDom(list[i], 'a&&href') + `@lazyRule=.booksite&&script&&Html.js:var url=input.match(/now=unescape\\\\(\"(.*?)\"/)[1]; unescape(url)`,\ncol_type: parseDomForHtml(listx,'a&&Text').length>5?'flex_button':'text_3'});\n}\n\nfor(var b=0; b<5; b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"56听书网𝔥","author":"Hood","version":4,"url":"http://m.ting56.com/book/fyAll_fypage.html[firstPage=http://m.ting56.com/book/fyAll.html];get;gb2312","col_type":"movie_3_marquee","class_name":"玄幻武侠&都市言情&恐怖悬疑&网游竞技&军事历史&刑侦推理&职场商战","class_url":"1&2&3&4&6&41&7","area_name":"经典评书&百家讲坛& 广播剧 &综艺娱乐&幽默笑话&儿童读物","area_url":"9&10&40&45&44&11","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".xsdz&&.list-ov-tw;\n.bt&&Text;\nimg&&original;\n.zz,1&&Text;\na&&href","searchFind":".xsdz&&.list-ov-tw;\n.bt&&Text;\na&&href;\n.zz,1&&Text;\n.nr&&Text;\nimg&&original","search_url":"http://m.ting56.com/search.asp?page=fypage&searchword=**&searchtype=-1;get;gb2312","titleColor":"#ff228be6","group":"④耳音","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '.book_intro--b&&Text').replace(/　/g,'');\n\nd.push({\r\n\n//作者、类型等\ntitle: parseDomForHtml(html,'.list-ov-w&&span,2&&Text')+'\\n'+parseDomForHtml(html,'.list-ov-w&&span,3&&Text')+'\\n'+parseDomForHtml(html,'.list-ov-w&&span,1&&Text'),\n\n//描述\r\ndesc: parseDomForHtml(html, '.list-ov-w&&span,4&&Text'),\n\n//图片地址\npic_url: parseDom(html,'img&&src'),\r\nurl: getUrl(),\r\ncol_type: 'movie_1_vertical_pic'});\n\n//限制简介长度\nif (des_desc.length > 110) {\ndes_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\ntitle: '简介：'+des_desc,\ncol_type: 'long_text'});\n\nd.push({col_type:'line'});\n\n//选集列表\nvar list=parseDomForArray(html, 'body&&#playlist&&li');\n\n//线路名称\nd.push({\ntitle:'播放列表(共' + list.length+ '集)',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_center_1'});\n\n//选集名称\nfor(var i in list){\nd.push({\ntitle:parseDomForHtml(list[i],'a&&Text'),\nurl:parseDom(list[i],'a&&href'),\ncol_type: parseDomForHtml(list[0],'a&&Text').length>6?'flex_button':'text_3'});\n}\n\r\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"专属电台","author":"","version":14,"url":"https://fm.%71%71.com/album/fyyear","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"企鹅点歌台&蕊希电台&晨曦微露&一路向北&许嵩电台","sort_url":"","year_url":"rd002NEekz2YrFWg&rd002U9A344Gk4j3&rd003wM8Gv1Agm2f&rd003CCC8Z2gnaa2&rd000tlcc12PDr6k","find_rule":"js:\nvar d = [];\n\nfunction lazy(url) {\n    return 'x5Rule://' + url + '@' + $.toString(() => {\n        var urls = _getUrls()\n        for (let i in urls) {\n            if (urls[i].match(/\\.mp3|\\.m4a/i)) {\n                return urls[i] + '&memoryPosition=full#isMusic=true#'\n            }\n        }\n        try {\n            document.querySelector(\".btn--play\").click()\n        } catch (e) {}\n\n    })\n}\n\nfunction dateFormat(date, text) {\n    let simpleDateFormat = new java.text.SimpleDateFormat(text);\n    return String(simpleDateFormat.format(date));\n}\nlet window = {}\nlet rd = pdfh(getResCode(), \"body&&script&&Html\")\neval(rd)\nlet arr = window.__INITIAL_STATE__.syncData.albumPageData.showList.showList\n\nfor (let it of arr) {\n    let img;\n    try {\n        img = it.cover.urls[\"0\"].url\n    } catch (e) {\n\n    }\n    d.push({\n        title: it.name.trim(),\n        url: lazy(\"https://fm.qq.com/show/\" + it.showID),\n        //url: it.audioURL.urls[\"0\"].url + \";{Referer@\" + getUrl() + \"&&User-Agent@Android&&Host@fm.%71%71.com}\",\n        col_type: img != null ? \"movie_1_vertical_pic\" : \"text_1\",\n        desc: dateFormat(it.createTime * 1000, \"yyyy-MM-dd HH:mm\"),\n        pic_url: img,\n        extra: {\n            //newWindow: true,\n            blockRules: [\".mp3\", \".m4a\"]\n        }\n    });\n}\n\n/*\nlet pic = pd(getResCode(),\"img&&src\")\nlet arr = pdfa(getResCode(), \".list&&li\");\nfor (let it of arr) {\n    d.push({\n        title: pdfh(it, \"h2&&Text\"),\n        url: lazy(pd(it, \"a&&href\")),\n        col_type: \"text_1\",\n        desc: pdfh(it, \".info&&Text\"),\n        pic_url: pic,\n        extra: {\n            //newWindow: true,\n            blockRules: [\".mp3\", \".m4a\"]\n        }\n    });\n}*/\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"④视听","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fbrup.365shengri.cn%2Ffe%2Fgoods%2F2015%2F12%2F02180332_4ce8fedb6856dd35b4cfecc5448f9e53.jpg&refer=http%3A%2F%2Fbrup.365shengri.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1640688438&t=870982cbe884c59b2b4340877005ad19"},{"firstHeader":"year","title":"小鹅FM","author":"","version":0,"url":"https://fm.qq.com/category/39110_fyyear;get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_1_left_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"全部&经典&流行&歌手&榜单&催眠&欧美&日韩&影视&古风","sort_url":"","year_url":"39110&39116&38936&117&41101&40083&38937&40078&38942&40080","find_rule":"body&&.item;.title&&Text;img&&srcset;.info&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"④视听","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"firstHeader":"class","title":"音乐K歌","author":"镇弟","version":0,"url":"https://shimo.im/docs/DdYqtQkyvkkxhVgW/read#fyAll","col_type":"movie_3_marquee","class_name":"劲爆&直播&女声&合唱&男声&儿歌&全部","class_url":"劲爆&直播&女声&合唱&男声&儿歌&全部","area_name":"闽南语&粤语","area_url":"闽南语&粤语","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\nitems.push({\n    title: \" 【💝小棉袄就是 帅 帅  帅💘      💘不容反驳我💝】\",\n    url: \"\",\n    desc: '',\n    col_type: 'pic_1',\n    pic_url: s2\n});\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i];\n    var g_title = data.split('group-title=\"')[1].split('\"')[0];\n    if (flag == '全部' || flag == g_title) {\n        items.push({\n            title: data.split(',')[1].split('</p>')[0],\n            url: data.split('href=\"')[1].split('\"')[0].replace(/#.*/, '').replace(/&nbsp;/g, '').replace(/&amp;/g,'&') + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#mp4'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n            pic_url: data.split('vg-logo=\"')[1].split('\"')[0]\n        });\n    }\n}\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar flag = MY_URL.split('#')[1];\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i];\n    if (data.indexOf(flag) > -1) {\n        var title = data.split(',')[1].split('</p>')[0];\n        var url = data.split('href=\"')[1].split('\"')[0].replace(/#.*/,'').replace(/&nbsp;/g, '').replace(/&amp;/g, '&');\n        var pic_url = data.split('vg-logo=\"')[1].split('\"')[0];\n        var desc = data.split('group-title=\"')[1].split('\"')[0];\n        items.push({\n            title: title,\n            desc: desc,\n            url: 'hiker://empty#' + url + '#' + title + '#' + pic_url + '#' + desc,\n            pic_url: pic_url\n        });\n    }\n}\nres.data = items;\nsetSearchResult(res);","search_url":"https://shimo.im/docs/DdYqtQkyvkkxhVgW/read#**","titleColor":"#ff13b66a","group":"④视听","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar data = MY_URL.split('#');\nitems.push({\n    title: data[2],\n    url: data[1] + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#mp4'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n    pic_url: data[3],\n    desc: data[4]\n});\nres.data = items;\nsetHomeResult(res);","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"清风DJ","author":"发粪涂墙","version":0,"type":"music","url":"https://m.vvvdj.com/sort/cfyAll/0-0-0-0-fypage.html","col_type":"text_1","class_name":"的高串烧&慢摇串烧&中文DISCO&外文DISCO","class_url":"1&2&3&4","area_name":"中文CLUB&外文CLUB&电音HOUSE","area_url":"5&6&7","sort_name":"","year_name":"酒吧潮歌&交谊舞曲","sort_url":"","year_url":"8&9","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.list_con_new&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], '.corhui&&Text'),\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=script,-3&&Html.js:eval(input.split('$')[0]);playurl`\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.list_con_new&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], '.corhui&&Text'),\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=script,-3&&Html.js:eval(input.split('$')[0]);playurl`\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://m.vvvdj.com/search/so?key=**&cid=0&list=2&page=fypage","titleColor":"#ff228be6","group":"④视听","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"year","last_chapter_rule":"","title":"企鹅FM","author":"马化腾","version":28,"url":"https://fm.%71%71.com/category/39110_fyAll;get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_3","class_name":"音乐电台&经典&流行&歌手&榜单&催眠&欧美&日韩&影视&古风","class_url":"39110&39116&38936&117&41101&40083&38937&40078&38942&40080","area_name":"有声小说&悬疑推理&都市生活&玄幻奇幻&古代言情&现代言情&热门精品&历史军事&青春校园&武侠传奇&影视原著&职场商战&广播剧&文学名著&游戏竞技","area_url":"39092&41092&38953&38954&38951&38949&41102&38960&38959&38958&104&38957&39103&38956&40042","sort_name":"综艺娱乐&影视热评&热门综艺&影视原声&八卦娱乐&星座风水&明星专区&游戏动漫&文娱杂谈&时尚生活","year_name":"情感生活&情感治愈&晚安心语&美文故事&恋爱宝典&健康生活&旅行人文","sort_url":"1&38985&38974&40044&38982&113&38980&116&40043&40045","year_url":"39104&39105&109&39106&38983&107&108","find_rule":"js:\nvar d = [];\n\nfunction lazy(url) {\n    return 'x5Rule://' + url + '@' + $.toString(() => {\n        var urls = _getUrls()\n        for (let i in urls) {\n            if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8|\\.m4a/i)) {\n                return urls[i] + '&memoryPosition=full#isMusic=true#'\n            }\n        }\n        try {\n            document.querySelector(\".btn--play\").click()\n        } catch (e) {}\n\n    })\n}\nlet pic = pd(getResCode(), \"img&&srcset\")\nlet arr = pdfa(getResCode(), \"body&&.album-list&&.item\");\nfor (let it of arr) {\n    let u = pd(it, \"a&&href\")\n    d.push({\n        title: pdfh(it, \".title&&Text\"),\n        url: u.includes(\"/album/\") ? u + \";get;utf_8;{User-Agent@Android}\" : lazy(u),\n        col_type: \"text_1\",\n        desc: pdfh(it, \".info&&Text\"),\n        pic_url: pic,\n        extra: {\n            //newWindow: true,\n            blockRules: [\".mp3\", \".m4a\"]\n        }\n    });\n}\nsetResult(d)","searchFind":"","search_url":"","group":"④视听","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n\nfunction lazy(url) {\n    return 'x5Rule://' + url + '@' + $.toString(() => {\n        var urls = _getUrls()\n        for (let i in urls) {\n            if (urls[i].match(/\\.mp3|\\.m4a/i)) {\n                return urls[i] + '&memoryPosition=full#isMusic=true#'\n            }\n        }\n        try {\n            document.querySelector(\".btn--play\").click()\n        } catch (e) {}\n\n    })\n}\n\nfunction dateFormat(date, text) {\n    let simpleDateFormat = new java.text.SimpleDateFormat(text);\n    return String(simpleDateFormat.format(date));\n}\nlet window = {}\nlet rd = pdfh(getResCode(), \"body&&script&&Html\")\neval(rd)\nlet arr = window.__INITIAL_STATE__.syncData.albumPageData.showList.showList\n\nfor (let it of arr) {\n    let img;\n    try {\n        img = it.cover.urls[\"0\"].url\n    } catch (e) {\n\n    }\n    d.push({\n        title: it.name.trim(),\n        url: lazy(\"https://fm.qq.com/show/\" + it.showID),\n        //url: it.audioURL.urls[\"0\"].url + \";{Referer@\" + getUrl() + \"&&User-Agent@Android&&Host@fm.%71%71.com}\",\n        col_type: img != null ? \"movie_1_vertical_pic\" : \"text_1\",\n        desc: dateFormat(it.createTime * 1000, \"yyyy-MM-dd HH:mm\"),\n        pic_url: img,\n        extra: {\n            //newWindow: true,\n            blockRules: [\".mp3\", \".m4a\"]\n        }\n    });\n}\n\n/*\nlet pic = pd(getResCode(),\"img&&src\")\nlet arr = pdfa(getResCode(), \".list&&li\");\nfor (let it of arr) {\n    d.push({\n        title: pdfh(it, \"h2&&Text\"),\n        url: lazy(pd(it, \"a&&href\")),\n        col_type: \"text_1\",\n        desc: pdfh(it, \".info&&Text\"),\n        pic_url: pic,\n        extra: {\n            //newWindow: true,\n            blockRules: [\".mp3\", \".m4a\"]\n        }\n    });\n}*/\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"http://qzonestyle.gtimg.cn/qzone/qzactStatics/imgs/20210204111715_3a1362.jpg"},{"last_chapter_rule":"","title":"笔趣阁","author":"道阻且右","version":0,"url":"https://m.quge7.com/json?sortid=fyclass&page=fypage","col_type":"movie_3","class_name":"仙侠&武侠&都市&历史&网游&科幻&女生","class_url":"1&2&3&4&5&6&7","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = JSON.parse(getResCode());\nfor (var i in list) {\n    d.push({\n        title: list[i].articlename + '\\n作者:' + list[i].author,\n        desc: list[i].intro.replace(/\\s/g, ''),\n        pic_url: list[i].url_img,\n        url: 'hiker://page/chapterList#immersiveTheme#',\n        col_type: 'movie_1_vertical_pic',\n        extra: {\n            content: list[i]\n        }\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.so_list&&.bookbox')\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], '.bookname&&Text'),\n        desc: parseDomForHtml(list[i], '.author&&Text'),\n        content: parseDomForHtml(list[i], '.update&&Text'),\n        pic_url: parseDomForHtml(list[i], 'img&&src'),\n        url: 'hiker://page/chapterList#immersiveTheme#',\n        extra: {\n            content: {\n                articlename: parseDomForHtml(list[i], '.bookname&&Text'),\n                author: parseDomForHtml(list[i], '.author&&Text').replace('作者：', ''),\n                url_img: parseDomForHtml(list[i], 'img&&src'),\n                url_list: parseDomForHtml(list[i], 'a&&href')\n            }\n        }\n    });\n}\nsetResult(d);","search_url":"https://m.quge7.com/s?q=**","titleColor":"","group":"④阅读","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"章节列表\",\"path\":\"chapterList\",\"rule\":\"js:\\nvar d = [];\\n\\nvar html = request('https://m.quge7.com' + MY_PARAMS.content.url_list, {});\\n\\nd.push({\\n    title: MY_PARAMS.content.articlename + '\\\\n作者:' + MY_PARAMS.content.author,\\n    desc: parseDomForHtml(html, 'body&&.book_about&&Text').replace('内容简介', '').replace(/\\\\s/g, ''),\\n    pic_url: MY_PARAMS.content.url_img,\\n    url: 'https://m.quge7.com' + MY_PARAMS.content.url_list,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nsetLastChapterRule('js:' + $.toString(param => {\\n    setResult('更新至｜' + param)\\n}, parseDomForHtml(html, 'body&&.book_last&&a&&Text')));\\n\\nd.push({\\n    col_type: 'line_blank'\\n});\\n\\nvar html = request('https://m.quge7.com' + MY_PARAMS.content.url_list + 'list.html', {});\\n\\nvar list = parseDomForArray(html, 'body&&.book_last&&a:not([style])');\\n\\nd.push({\\n    title: '‘‘章节列表’’',\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n});\\n\\nfor (var i in list) {\\n    d.push({\\n        title: parseDomForHtml(list[i], 'a&&Text'),\\n        url: 'hiker://page/chapter#autoPage#',\\n        extra: {\\n            link: 'https://m.quge7.com' + parseDomForHtml(list[i], 'a&&href'),\\n            title: parseDomForHtml(list[i], 'a&&Text')\\n        },\\n        col_type: 'text_1'\\n    })\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"章节详情\",\"path\":\"chapter\",\"rule\":\"js:\\nsetPageTitle(MY_PARAMS.title);\\nvar d = [];\\nd.push({\\n    title: '‘‘<strong><big>' + MY_PARAMS.title + '</bog></strong>’’',\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n});\\nvar chapterContent = new Array();\\nvar i = 1;\\ndo {\\n    var get = request(MY_PARAMS.link.replace('.html', '_' + i + '.html'), {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        }\\n    });\\n    i++;\\n    if (parseDomForArray(get, 'body&&#chaptercontent&&br').length > 2) {\\n        var isStop = 1;\\n        chapterContent.push(parseDomForArray(get, 'body&&#chaptercontent')[0].replace(/<p[\\\\s\\\\S]*?p>/g, '').replace('>', '><p>').replace(/<br>/g, '</p><p>').replace('</div>', '</p></div>'));\\n    } else {\\n        var isStop = 0\\n    }\\n} while (isStop);\\nvar newChapter = new Array();\\nfor (var j in chapterContent) {\\n    var list = parseDomForArray(chapterContent[j], 'div&&p');\\n    for (var x in list) {\\n        if (newChapter.indexOf(list[x]) == -1) {\\n            newChapter.push(list[x]);\\n        }\\n    }\\n}\\nfor (var j in newChapter) {\\n    if (parseDomForHtml(newChapter[j], 'p&&Text') !== '') {\\n        d.push({\\n            title: parseDomForHtml(newChapter[j], 'p&&Text'),\\n            col_type: 'long_text',\\n            extra: {\\n                textSize: 16,\\n                click: true\\n            }\\n        });\\n    }\\n}\\nd.push({\\n    col_type: 'line_blank'\\n});\\nsetResult(d);\"}]","icon":""},{"last_chapter_rule":"","title":"电子课本网𝔥","author":"Hood","version":1,"url":"http://m.dzkbw.com/books/fyclassfyarea/","col_type":"movie_3_marquee","class_name":"人教版&苏教版&北师大版&沪教版&鲁教版&冀教版&浙教版&部编版&沪科版&译林版&青岛版&仁爱版&外研版&教科版&语文版&中图版&科粤版&人民版&西师大版&北京版&鲁科版&鲁人版&浙科版&湘教版&粤教版&岳麓版&华师大版&鄂教版&苏科版&川教版&河大版&商务版&重大版&粤人版&湘少版&沪科教版&接力版&闽教版&科普版&辽师大版&陕旅版&冀少版&清华版&济南版&晋教版&沪外教版","class_url":"rjb&sjb&bsd&hjb&ljb&jjb&zjb&bbb&hkb&yilin&qdb&renai&waiyan&jkb&ywcbs&ztb&kyb&renming&xsd&beijing&lkb&lrb&zkb&xjb&yjb&ylb&hsd&ejb&skb&cjb&hdb&swb&cdb&gdb&xsb&hkjb&jieli&mjb&kpb&lsdb&slb&jsb&qhb&jinan&sxb&hwjb","area_name":"全部&数学&语文&英语&物理&化学&生物&政治&历史&地理&日语&俄语&音乐&美术&体育&科学&历史与社会&一年级&二年级&三年级&四年级&五年级&六年级&七年级&八年级&九年级&高一&高二&高三","area_url":"&/shuxue&/yuwen&/yingyu&/wuli&/huaxue&/shengwu&/zhengzhi&/lishi&/dili&/riyu&/eyu&/yinyue&/meishu&/tiyu&/kexue&/shehui&/yinianji-all&/ernianji-all&/sannianji-all&/sinianji-all&/wunianji-all&/liunianji-all&/qinianji-all&/banianji-all&/jiunianji-all&/gaoyi-all&/gaoer-all&/gaosan-all","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".index&&li;\nli&&Text;\nimg&&data-original;\n*;\na&&href","searchFind":"","search_url":"http://m.dzkbw.com/search/?q=**","titleColor":"#ff13b66a","group":"④阅读","detail_col_type":"text_1","detail_find_rule":".padding5&&a;\na&&Text;\n*;\n*;\na&&href","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"60maogk","author":"","version":0,"type":"video","url":"https://60maogk.com/vodtypehtml/fyclass_fypage.html[firstPage=https://60maogk.com/vodtypehtml/fyclass.html]","col_type":"movie_2","class_name":"三级&中文&巨乳&独家DMM&HEY诱惑","class_url":"1&2&3&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'body&&.box-video-list&&li:gt(2)')) {\n    d.push({\n        title: pdfh(list, 'a&&title'),\n        img: pdfh(list, 'a&&data-original'),\n        desc: pdfh(list, '.score&&Text'),\n        url: pd(list, 'a&&href')+lazy,\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'body&&.box-video-list&&li:gt(2)')) {\n    d.push({\n        title: pdfh(list, 'a&&title'),\n        img: pdfh(list, 'a&&data-original'),\n        desc: pdfh(list, '.score&&Text'),\n        url: pd(list, 'a&&href')+lazy,\n    });\n}\nsetResult(d)\n\n//   return JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url","search_url":"/search/**-/page/fypage.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://60maogk.com/favicon.ico"},{"last_chapter_rule":"","title":"甜瓜视频","author":"Timik","version":0,"type":"other","url":"https://api.tgapi001.xyz/v1/videos?category=fyclass&tags=&order_by=updated_at&page=fypage&per_page=20","col_type":"movie_2","class_name":"国产&日本&FC2&欧美&动漫&其他","class_url":"1&2&3&4&5&6","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar json = JSON.parse(fetch(MY_URL, {\n    headers: {\n\t  'User-Agent':'okhttp/4.2.2',\n    }\n}));\nvar res = {};\nvar lazy=$('').lazyRule(()=>{\n    let json=JSON.parse(fetch(input,{\n    headers: {\n\t  'User-Agent':'okhttp/4.2.2', \n    }\n}));\n    return json.data.hls_m3u8\n});\nvar list = json.data.items;\nlog(list)\nvar items = list.map(data => ({\n    title: data.title,\n    pic_url:\"data:image/jpeg;base64,/9j/\"+fetch(data.cover.url).split('/9j/')[1],\n    url: 'https://api.tgapi001.xyz/v1/videos/'+data.id+lazy\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js: \nvar json = JSON.parse(fetch(MY_URL, {\n    headers: {\n\t  'User-Agent':'okhttp/4.2.2',\n    }\n}));\nvar res = {};\nvar lazy=$('').lazyRule(()=>{\n    let json=JSON.parse(fetch(input,{\n    headers: {\n\t  'User-Agent':'okhttp/4.2.2', \n    }\n}));\n    return json.data.hls_m3u8\n});\nvar list = json.data.items;\nlog(list)\nvar items = list.map(data => ({\n    title: data.title,\n    pic_url:\"data:image/jpeg;base64,/9j/\"+fetch(data.cover.url).split('/9j/')[1],\n    url: 'https://api.tgapi001.xyz/v1/videos/'+data.id+lazy\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"https://api.tgapi001.xyz/v1/search?q=**&page=1&per_page=20","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2023/01/08/pSZaqVe.png"},{"last_chapter_rule":"","title":"瓜果视频","author":"Timik","version":1,"type":"video","url":"hiker://empty$$$fyclass","col_type":"icon_5","class_name":"向日葵&丝瓜&草莓","class_url":"https://api.xrkapi004.xyz&https://api.sgapi004.xyz&https://api.cmapi004.xyz","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nputVar('host', getHome(MY_URL.split('$$$')[1]));\nvar res = {};\nvar list = JSON.parse(fetch(getVar('host') + '/api/videosort/')).rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: getVar('host') + '/api/videosort/' + data.id + '?orderby=new&page=fypage',\n    pic_url: \"data:image/jpeg;base64,\" + fetch(data.icobase64.url).slice(32)\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar html = fetch(getVar('host')+'/api/videosort/0?page=fypage&serach='+MY_URL.split('$$$')[1]+'&uuid=674d0eb77a5ff867&device=0');\nvar list = JSON.parse(html).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: (data.authername?'演员：'+data.authername:'') + (data.playtimes?'时长：'+data.playtimes:''),\n    pic_url: \"data:image/jpeg;base64,/9j/\"+fetch(data.coverbase64.url).split('/9j/')[1]\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"hiker://empty$$$**","group":"⑤①📽️敦伦","detail_col_type":"movie_2","detail_find_rule":"js:\nvar res = {};\nvar list = JSON.parse(getResCode()).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: (data.authername?'演员：'+data.authername:'') + (data.playtimes?'时长：'+data.playtimes:''),\n    pic_url: \"data:image/jpeg;base64,/9j/\"+fetch(data.coverbase64.url).split('/9j/')[1]\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"js:\nvar list = base64Decode(fetch('https://api.notelive.cn/render/guaguoho',{})).split('#');\n//log({list:list})\nvar urls = [];\nfor (let k in list){\n  urls.push({\n\turl:list[k].match(/htt.*/)\n  })\n}\nurls.shift()\nputVar('urls',urls)\nlog(getVar(\"urls\"))","pages":"[]","proxy":"","icon":"https://wimg.ruan8.com/uploadimg/ico/2019/0722/1563790568190843.jpg"},{"last_chapter_rule":"","title":"69超级","author":"","version":1,"type":"other","url":"https://www.69bag09.com/search/fyAll/fypage","col_type":"movie_2","class_name":"巨.屌&乱.伦&巨.乳&人.妻&青年&潮.吹&小个子&强.奸&爆.菊&内.射","class_url":"big_cock&familial_relations&big_tits&japanese+wife&teen&squirting&small+tits&rough&anal-creampie&creampie","area_name":"亚洲&印度&阿拉伯&日本&国产","area_url":"asian_woman&indian&arab&japanese&china","sort_name":"1v1&18-porn&3v1&3D色情&3D&年轻女孩&成人玩具&全天然&肛交&口&肛TM&TM的屁股&吃屁股&视角&大屌&熟女&屁股艹&大屁股熟妇&大号屁股&大黑屌&大胸&黑人女孩&巨乳&金发少女&boy-fuck-girl&爸爸&家庭角色扮演&家庭性行为&家庭色情&家庭禁忌&家庭&奶奶&爷爷&辣妹&辣妻&荡妇&","year_name":"未知&bdsm&调教&高.潮&肛.交&丝.袜&可爱&飞.机&熟.女&bbc-pie","sort_url":"1-on-1&18-porn&3-on-1&3d-porn&3d-hentai&18-year-old-porn&adult-toys&all-natural&amateur-anal&amateur-blowjob&anal-fuck&ass-fuck&ass-eating&POV&big-cock&amateur-milf&ass-fucked&big-ass-milf&big-ass-gape&big-black-dick&big-boobs&black-girl&big-natural-tits&blonde-teen&boy-fuck-girl&daddy&family-roleplay&family-sex&family-porn&family-taboo&family&granny&grandpa&hot-girl&hot-wife&hot-milf&","year_url":"undefined&bdsm&femdom&orgasm&anal&stockings&cute&handjob&japanese+milf&bbc-pie","find_rule":"js:\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.thumb-under&&a&&Text'),\n       desc: parseDomForHtml(list[j], '.metadata&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'.thumb-under&&a&&href')\n  });\n}}catch(e){}\nsetResult(d);","searchFind":"js:\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),\n       desc: parseDomForHtml(list[j], 'span&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'a&&href')\n  });\n}}catch(e){}\nsetResult(d);","search_url":"https://xnxx.health/?k=**&quality=hd&p=fypage@-1@*0@","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};var d = [];\nvar code =getResCode();\nvar url = code.split(\"html5player.setVideoHLS('\")[1].split(\"'\")[0];\nvar hls = request(url).match(/hls-.*?m3u8/g);\nJSON.stringify(hls.sort(function(a,b){return b.match(/\\d+/) - a.match(/\\d+/)}));\nfor (var j in hls) {\nd.push({\n    title:hls[j].split('-')[1].replace('.m3u8',''),\n    url:url.split('hls.')[0]+hls[j],\n    col_type:'text_4'\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.69bag09.com/favicon-32x32.png"},{"last_chapter_rule":"","title":"哥哥妹妹资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.ggmmzy.com:9999/inc/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=哥哥妹妹资源"},{"last_chapter_rule":"","title":"猫咪","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty#{\n  \"access_token\": \"\",\n  \"cate_id\": fyAll,\n  \"identifier\": \"ffffffff-c67a-899b-ffff-ffffef05ac4a\",\n  \"page\": fypage,\n  \"region\": 0,\n  \"type_id\": 0,\n  \"vip\": 0,\n  \"year\": \"\"\n}","col_type":"movie_3","class_name":"全部&国产专区&欧美精品&动漫&中文字幕&人气女忧&不雅视频&韩三级&热剧大人版&抖音妹合集&猫咪自拍","class_url":"0&32&16&31&34&35&37&39&40&41&42","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/aes')).rule);\nvar bodys = En(MY_URL.split('#')[1])\nvar html = JSON.parse(De(request('http://119.28.59.69:8089/api/video/index', {\n    headers: {\n        'Content-Type': 'application/x-www-form-urlencoded',\n    },\n    method: 'POST',\n    body: 'params=' + bodys + '&version=26&sign=' + CryptoJS.MD5('QEBBQADSwrXIXaNqBmMofjfRY/8Sxaxgparams' + bodys + 'version26QEBBQADSwrXIXaNqBmMofjfRY/8Sxaxg')\n})))\nsetResult(html.data.data.map(data => ({\n    title: data.name,\n    img: data.image,\n    //  desc:data.\n    url: $('http://119.28.59.69:8089/api/video/detail?params=' + En('{\"id\":\"' + data.id + '\"}')).lazyRule(() => {\n        eval(JSON.parse(request('hiker://page/aes')).rule)\n        return JSON.parse(De(request(input))).data.video_item[0].file\n    }),\n    col_type: 'movie_3'\n})));","searchFind":"js:\neval(JSON.parse(request('hiker://page/aes')).rule);\nvar bodys = En(MY_URL.split('#')[1])\nvar html = JSON.parse(De(request('http://119.28.59.69:8089/api/special/video?params='+bodys)))\nsetResult(html.data.data.map(data => ({\n    title: data.video_name,\n    img: data.image,\n  //  desc:data.\n    url: $('http://119.28.59.69:8089/api/video/search?params='+En('{\"id\":\"'+data.video_id+'\"}')).lazyRule(() => {\n\t  eval(JSON.parse(request('hiker://page/aes')).rule)\n\t return JSON.parse(De(request(input))).data.video_item[0].file\n\t}),\n    col_type: 'movie_3'\n})));","search_url":"hiker://empty#{\"keyword\":\"**\",\"page\":fypage}","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"aes\",\"path\":\"aes\",\"rule\":\"eval(getCryptoJS())\\nvar a = CryptoJS.enc.Utf8.parse(\\\"625222f9149e961d\\\")\\n    var t = CryptoJS.enc.Utf8.parse(\\\"5efdtf6060e2o330\\\")\\nfunction De(word) {\\n  word = CryptoJS.enc.Hex.parse(word)\\n    return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {\\n        iv: t,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    }).toString(CryptoJS.enc.Utf8)\\n}\\nfunction En(word) {\\n    var Encrypted = CryptoJS.AES.encrypt(word, a, {\\n        iv: t,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    });\\n    return Encrypted.ciphertext.toString();\\n};\"}]","proxy":"","icon":"https://www.helloimg.com/images/2021/10/19/C6w8Wq.png"},{"last_chapter_rule":"","title":"多啦A片","author":"","version":0,"type":"video","url":"https://www.duolaapian121.xyz/index.php/vod/type/id/fyclass/page/fypage.html","col_type":"movie_2","class_name":"国产情色&精品傳媒&亚洲无碼&亚洲有碼&三级倫理&中文字幕&成人动漫&欧美激情","class_url":"1&8&13&25&26&27&7&6","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'.content-list&&li')) {\n    d.push({\n        title: pdfh(list, 'title&&Text'),\n        img: MY_HOME+pdfh(list, '.lazy&&img&&src'),\n        desc: pdfh(list, '.note&&Text'),\n        url: pd(list, 'a&&href')+lazy,\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'.ui-box&&.show-list&&li')) {\n    d.push({\n        title: pdfh(list, 'h2&&Text'),\n        img: MY_HOME+pdfh(list, 'img&&src'),\n        desc: pdfh(list, '.note&&Text'),\n        url: pd(list, 'a&&href')+lazy,\n    });\n}\nsetResult(d)","search_url":"/index.php/vod/search/page/fypage/wd/**.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nd.push({\n    title: pdfh(html, 'h2&&Text'),\n    desc: pdfh(html, '')+ '\\n'+pdfh(html,'.data_style&&Text'),\n    pic_url: pd(html, '.lazyload&&a&&data-original'),\n    url: fm,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 =  'body&&.play_source:not(:matches(猜你|榜单|资讯))'\nvar 选集 =  'body&&.play_list_box'\nvar 线路名 = 'a&&Text'\nvar 选集列表 = 'ul&&li' \neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.duolaapian121.xyz/template/duolaapian/static/images/favicon.ico"},{"last_chapter_rule":"","title":"MaomiAV","author":"dy2020","version":20230302,"type":"video","url":"hiker://empty##https://www.1f2fbf13e637.com/enter/index.html##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('pB2tjYno9WBlcBQ11hCVbhNr7/c2Rt0p1f+Te6TKR476en0rlvLwIGP3uAvIBCTM8F/st3T2xyRjscN9SIWrKn0FZLpys5m9TXDcCzbk763J/FvDR2mRnb9ZqQXrwu6EANcZubPWkit3e7L7XCrlyupPUJiFv9qTBEgupQDmBJnPFfSAEZOtINLLiLuwrXIN83Bmb5n2QdBdFzdC6CPX5ux2Po+CoHr9dZPqtYjkTvj+QHbHfX/u4EtaC1gACy73/7f1vA0Mz/GYJq5ZJJz46OSCq3eg6NUTF4QqIeQ7ZncEpNAmaXv4eweKjFs/mfiuLXkopkehA+sE4CMH6QWkqTe06oB2+3QBXVReuKlpEuKCjyUHFZ4PNuCB0Qc/2WHV7ZazDsm8r62P0XaCZovO3RFe/CkyNcrXvodc7DoCu8Kih6Dq8VU9XOdbK3DYm1Pl3wTRruwzmCiNlsEs4cSFaffk7It7vCRU0JOIRAix5DyN4CkGpCR1ZsghV0N3pDYAV09YZSCfoltkQGKawrzXS13dTe7U8z7Cj7Vby7e8mJci3wqOYQ5FsF24Yef2Aj0RoO8frQDxSgIQ7joTUTEaewB6ARj+VogfZ6M60sXUr2tpbZiIx4UA6gTpYQXDwyqrBuk1kwtNJKW8JrcW1hsjTfvliURI20mTci9FumnFkpGPhuPMXdLzmxCcOzn4mQDP+MZbbltaeJZq7/NYBkoVrUrGHaVqaryAi7tnLJ+1EhzTaqpi6HZKL9Ft0ff2ynQKZUDILz8+izodDgUJ6O4tTkKrNPx7RFVxqKcOlt3g3tStxgh4vVXmGE8DvXX5iRQXBLPFA4BxKlCc6m+ye43+Yb2/4Kt+I5HsaBMm+67kPVdOiw+U42GL4JsRmW3cThprAVcw/ZuG0ymfL0RUqwh1ga0KCUEyF4wU/PWTU8zgSSc2TpZWpTTFEmTCw/PkkW4ajLnd1NjVQPzSyFgLVwZEDDjW2FE1MZNIHhUihitd2fhMrt7BbyVblTWLwdPdZyABZQGevEyS7feJck9cz3Yb0kVmix/1Z3jGh6qZ7kBkK1WvxyMuCDJr4cdkDaXWweUVKSHLkxlv1Jm2fohQnIBZwHGGaq3rtDbub3meV57osuE9LcqvgVOUaCMVv+ht4LVjllk5wQXtzHgaXFcIybWYRuN+iB4+E6wQSPsApZrKwYcC7O1S0DFbPa0UHhkwWrw7');\nvar url = getVar('g_u_mm', MY_URL);\nif (/home|meinv/.test(url)) {\n    var c = 'home';\n} else {\n    var c = url.split('-')[1];\n}\nif (getVar('c_mm', '0') != c) {\n    clearVar('t_page');\n}\nt_page = parseInt(getVar('t_page', MY_PAGE + ''));\nvar s_page = parseInt(getVar('s_page', '0'));\nif (s_page != 0 && t_page > s_page) {\n    t_page = s_page;\n}\nif (/home|meinv/.test(url)) {\n    var t_url = url;\n} else {\n    var t_url = url.replace(/\\d+.html/, t_page + '.html');\n}\nif (parseInt(getVar('page', '-1')) - MY_PAGE == -1) {\n    putVar('t_page', (t_page + 1) + '');\n}\nputVar('page', MY_PAGE + '');\nvar t_url_tmp = getVar('t_url', t_url);\nif (/home|meinv/.test(t_url_tmp)) {\n    t_url = t_url_tmp.replace(/index-.+/, 'index.html');\n} else {\n    t_url = t_url_tmp;\n}\nclearVar('t_url');\nlog('t_url:' + t_url);\nvar html = fetch(t_url, {\n    headers: {\n        'User-Agent': PC_UA\n    }\n});\nif (!/index/.test(t_url)) {\n    var 翻页 = true;\n    var _tmp = pdfh(html, 'body&&.pagination&&li,-1&&Text').match(/\\d+/g);\n    var s_page = _tmp[0];\n    putVar('s_page', s_page);\n} else {\n    var 翻页 = false;\n}\nif (MY_PAGE == 1) {\n    var list_c = pdfa(html, 'body&&#section-menu,0&&.row-item').slice(1, -1);\n    for (var m in list_c) {\n        var group = pdfa(list_c[m], 'body&&a');\n        for (var n in group) {\n            var title = Decrypt(pdfh(group[n], 'a&&title'), '883346').replace(/\\\"/g, '');\n            d.push({\n                title: n == 0 ? strong(title, 'ff9933') :\n                    (m + '' + n) == getVar('g_i_mm', '0') ?\n                    strong(title, '339966') : title,\n                url: $((n == 0 ? pd(group[1], 'a&&href') : pd(group[n], 'a&&href')) + '#noLoading#').lazyRule((m, n) => {\n                    putVar('g_u_mm', input.replace('-1.html', '-1.html'));\n                    putVar('g_i_mm', m + '' + n);\n                    refreshPage(false);\n                    return 'hiker://empty';\n                }, m, n),\n                col_type: 'scroll_button',\n            });\n        }\n        d.push({\n            col_type: 'line'\n        });\n    }\n}\nif (翻页) {\n    d.push({\n        col_type: 'line',\n    });\n    d.push({\n        title: strong('首页', 'ff9933'),\n        url: $('#noLoading#').lazyRule(() => {\n            putVar('t_page', '1');\n            refreshPage(false);\n            return 'hiker://empty';\n        }),\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('当前第' + t_url.match(/(\\d+)\\.html/)[1] + '页', 'ff9933'),\n        url: 'hiker://empty',\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('跳转页数', 'ff9933'),\n        url: $('').input((t_url) => {\n            input = input.match(/\\d+/)[0];\n            t_url = t_url.replace(/\\d+\\.html/, input + '.html');\n            putVar('t_url', t_url);\n            putVar('t_page', input);\n            refreshPage(false);\n        }, t_url),\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('共' + s_page + '页', 'ff9933'),\n        url: $(s_page + '#noLoading#').lazyRule(() => {\n            putVar('t_page', input);\n            refreshPage(false);\n            return 'hiker://empty';\n        }),\n        col_type: 'text_5',\n    });\n    d.push({\n        col_type: 'line',\n    });\n}\nif (/shipin/.test(t_url)) {\n    var list = pdfa(html, 'body&&li.content-item');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'a&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                eval(html.match(/(var m3u8_host[\\s\\S]*?)<\\/script/)[1]);\n                log(m3u8_host + dplayer_video_url);\n                return m3u8_host + dplayer_video_url\n            }),\n        });\n    }\n} else if (/cili/.test(t_url)) {\n    var list = pdfa(html, 'body&&.list-row&&li');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'a&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                var video = pdfh(html, 'body&&td.name&&a&&href');\n                log(video);\n                return video;\n            }),\n        });\n    }\n} else if (/tupian/.test(t_url)) {\n    var list = pdfa(html, 'body&&.list-row&&ul&&li');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'a&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                var pics = [];\n                pdfa(html, 'body&&.img-row&&img').forEach(list => {\n                    var img = 'https://mmimage.1vkx.cn/' + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                        const {\n                            imgDecrypt\n                        } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                        return imgDecrypt();\n                    }, MY_RULE.title);\n                    pics.push(img);\n                })\n                return \"pics://\" + pics.join(\"&&\");\n            }),\n            col_type: 'pic_2_card',\n        });\n    }\n} else if (/meinv/.test(t_url)) {\n    var list = pdfa(html, 'body&&.list-row&&li');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'h3&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: pd(list, 'a&&href').replace(/-1\\.html/, '-fypage.html'),\n            col_type: 'pic_2_card',\n        });\n    }\n} else if (/xiaoshuo/.test(t_url)) {\n    var list = pdfa(html, 'body&&.novel-list&&a.novel-item');\n    for (var list of list) {\n        var title = Decrypt(pdfh(list, '.decrypt-title&&title'), '883346').replace(/\\\"/g, '');\n        d.push({\n            title: title,\n            url: $(pd(list, 'a&&href') + '#readTheme##autoPage#').rule((title) => {\n                var d = [];\n                var list = pdfa(getResCode(), 'body&&.chapter-item').map(h => MY_URL.match(/http.+?com/)[0] + pdfh(h, 'a&&href'));\n                var data = '';\n                for (var list of list) {\n                    data = data + pdfh(fetch(list), 'div.desc&&Html');\n                }\n                data = data\n                    .replace(/[\\n\\r\\t]/g, '')\n                    .replace(/<br\\/>/g, '<br>')\n                    .replace(/<\\/?p>/g, '<br>')\n                    .replace(/<\\/?p.+?>/g, '<br>')\n                    .replace(/&nbsp;/g, '')\n                    .replace(/[ 　]/g, '');\n                if (data.match(/<br><br>/g) && data.match(/<br><br>/g).length > 10) {\n                    data = data\n                        .replace(/([^>])<br>([^<])/g, '$1$2')\n                        .replace(/(<br>){2,}/g, '<br>');\n                }\n                data = '　　' + data.replace(/<br>/g, '<p>　　');\n                d.push({\n                    title: '<h3 style=\"text-align:center;\"><font color= \"#FF0000\">' + title,\n                    col_type: 'rich_text',\n                    extra: {\n                        textSize: 24,\n                        click: true\n                    }\n                });\n                d.push({\n                    title: data,\n                    col_type: 'rich_text',\n                    extra: {\n                        textSize: 18,\n                        click: true\n                    }\n                });\n                setResult(d);\n            }, title),\n            col_type: 'text_1',\n            extra: {\n                click: true\n            }\n        });\n    }\n} else if (/yousheng/.test(t_url)) {\n    var list = pdfa(html, 'body&&a.audio-row-item');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'p&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: pd(list, 'a&&href').replace('-1.html', '-fypage.html'),\n        });\n    }\n} else if (/index/.test(t_url)) {\n    var list = pdfa(html, 'body&&.video-list-content&&li').concat(pdfa(html, 'body&&.video-down-list-content&&li'));\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'a&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                eval(html.match(/(var m3u8_host.+[\\s\\S]*?)<\\/script/)[1]);\n                log(m3u8_host + dplayer_video_url);\n                return m3u8_host + dplayer_video_url;\n            }),\n        });\n    }\n}\nif (/home|meinv/.test(url)) {\n    putVar('c_mm', 'home');\n} else {\n    putVar('c_mm', url.split('-')[1]);\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_3","detail_find_rule":"js:\nevalPrivateJS('pB2tjYno9WBlcBQ11hCVbhNr7/c2Rt0p1f+Te6TKR476en0rlvLwIGP3uAvIBCTM8F/st3T2xyRjscN9SIWrKqS1MxK3QOdXuUPc0+N+Br7qT1CYhb/akwRILqUA5gSZzxX0gBGTrSDSy4i7sK1yDfNwZm+Z9kHQXRc3Qugj1+bsdj6PgqB6/XWT6rWI5E74/kB2x31/7uBLWgtYAAsu9/+39bwNDM/xmCauWSSc+Ojkgqt3oOjVExeEKiHkO2Z3BKTQJml7+HsHioxbP5n4ri15KKZHoQPrBOAjB+kFpKk3tOqAdvt0AV1UXripaRLigo8lBxWeDzbggdEHP9lh1e2Wsw7JvK+tj9F2gmaLzt0RXvwpMjXK176HXOw6ArvCooeg6vFVPVznWytw2JtT5d8E0a7sM5gojZbBLOHEhWn35OyLe7wkVNCTiEQIseQ8jeApBqQkdWbIIVdDd6Q2AFdPWGUgn6JbZEBimsK810td3U3u1PM+wo+1W8u3vJiXIt8KjmEORbBduGHn9gI9EaDvH60A8UoCEO46E1ExGnsAegEY/laIH2ejOtLF1K9raW2YiMeFAOoE6WEFw8MqqwbpNZMLTSSlvCa3FtYbI0375YlESNtJk3IvRbppxZKRj4bjzF3S85sQnDs5+JkAz/jGW25bWniWau/zWAZKFa1Kxh2lamq8gIu7ZyyftRIc02qqYuh2Si/RbdH39sp0CmVAyC8/Pos6HQ4FCejuLU5CqzT8e0RVcainDpbd4N7UrcYIeL1V5hhPA711+YkUFwSzxQOAcSpQnOpvsnuN/mHHu7bqBzC/E1DrBWH9nZQT');\nvar html = getResCode();\nvar url = getVar('group_url_maomiva', MY_URL);\nif (/home|meinv/.test(url)) {\n    var c = 'home';\n} else {\n    var c = url.split('-')[1];\n}\nif (getVar('c_mm', '0') != c) {\n    clearVar('t_page');\n}\nt_page = parseInt(getVar('t_page', MY_PAGE + ''));\nvar s_page = parseInt(getVar('s_page', '0'));\nif (s_page != 0 && t_page > s_page) {\n    t_page = s_page;\n}\nif (!/xiaoshuo/.test(MY_URL)) var t_url = MY_URL.replace(/\\d+\\.html/, t_page + '.html');\nelse var t_url = MY_URL.replace(/\\d+\\.html/, '1.html');\nif (parseInt(getVar('page', '-1')) - MY_PAGE == -1) {\n    putVar('t_page', (t_page + 1) + '');\n}\nputVar('page', MY_PAGE + '');\nt_url = getVar('t_url', t_url);\nclearVar('t_url');\nlog('t_url:' + t_url);\nvar html = fetch(t_url, {\n    headers: {\n        'User-Agent': PC_UA\n    }\n});\nif (/pagination/.test(html)) {\n    var _tmp = pdfh(html, 'body&&.pagination&&li,-1&&Text')\n        .match(/\\d+/g);\n    var s_page = _tmp[0];\n    putVar('s_page', s_page);\n};\nif (!/xiaoshuo/.test(t_url)) {\n    d.push({\n        col_type: 'line',\n    });\n    d.push({\n        title: strong('首页', 'ff9933'),\n        url: $('#noLoading#').lazyRule(() => {\n            putVar('t_page', '1');\n            refreshPage(false);\n            return 'hiker://empty';\n        }),\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('当前第' + t_url.match(/(\\d+)\\.html/)[1] + '页', 'ff9933'),\n        url: 'hiker://empty',\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('跳转页数', 'ff9933'),\n        url: $('').input((t_url) => {\n            input = input.match(/\\d+/)[0];\n            t_url = t_url.replace(/\\d+\\.html/, input + '.html');\n            putVar('t_url', t_url);\n            putVar('t_page', input);\n            refreshPage(false);\n        }, t_url),\n        col_type: 'text_5',\n    });\n    d.push({\n        title: strong('共' + s_page + '页', 'ff9933'),\n        url: $(s_page + '#noLoading#').lazyRule(() => {\n            putVar('t_page', input);\n            refreshPage(false);\n            return 'hiker://empty';\n        }),\n        col_type: 'text_5',\n    });\n    d.push({\n        col_type: 'line',\n    });\n}\nif (/meinv/.test(t_url)) {\n    var list = pdfa(html, 'body&&.list-group&&li');\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, 'a&&title'), '883346').replace(/\\\"/g, ''),\n            img: img_dn + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                const {\n                    imgDecrypt\n                } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                return imgDecrypt();\n            }, MY_RULE.title),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                var pics = [];\n                pdfa(html, 'body&&.img-row&&img').forEach(list => {\n                    var img = 'https://mmimage.1vkx.cn/' + pdfh(list, 'img&&data-original') + '@js=' + $.toString((ruleName) => {\n                        const {\n                            imgDecrypt\n                        } = $.require(\"hiker://page/imgDES?rule=\" + ruleName);\n                        return imgDecrypt();\n                    }, MY_RULE.title);\n                    pics.push(img);\n                })\n                //log(pics)\n                return \"pics://\" + pics.join(\"&&\");\n            }),\n        });\n    }\n} else if (/xiaoshuo/.test(t_url)) {\n} else if (/yousheng/.test(html)) {\n    var list = pdfa(html, 'body&&.list-group&&a').reverse();\n    for (var list of list) {\n        d.push({\n            title: Decrypt(pdfh(list, '.decrypt-title&&title'), '883346').replace(/\\\"/g, ''),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                var video = pdfh(html, 'audio&&src')\n                log(video);\n                return video;\n            }),\n            col_type: 'text_1',\n        });\n    }\n}\nsetResult(d);\nif (/home|meinv/.test(url)) {\n    putVar('c_mm', 'home');\n} else {\n    putVar('c_mm', url.split('-')[1]);\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片解密\",\"path\":\"imgDES\",\"rule\":\"$.exports.imgDecrypt = function() {\\n    eval(getCryptoJS());\\n    var javaImport = new JavaImporter();\\n    javaImport.importPackage(\\n        Packages.com.example.hikerview.utils,\\n        Packages.java.lang,\\n        Packages.java.security,\\n        Packages.java.util,\\n        Packages.java.io,\\n        Packages.java.text,\\n        Packages.javax.crypto,\\n        Packages.javax.crypto.spec\\n    );\\n    with(javaImport) {\\n        let bytes = FileUtil.toBytes(input);\\n        let txtData = new java.lang.String(bytes, 'UTF-8') + \\\"\\\";   \\n        function desDecrypt(bArr) {\\n            var generateSecret = SecretKeyFactory.getInstance(\\\"DES\\\").generateSecret(new DESKeySpec(String('jeH3O1VX').getBytes()));\\n            var cipher = Cipher.getInstance(\\\"DES/CBC/PKCS5Padding\\\");\\n            cipher.init(2, generateSecret, new IvParameterSpec(String('nHnsU4cX').getBytes()));\\n            return String(cipher.doFinal(_base64.decode(bArr, _base64.NO_WRAP)));\\n        }\\n        bytes = desDecrypt(txtData);\\n        bytes = bytes.split(\\\"base64,\\\")[1];       \\n        let b = _base64.decode(bytes, _base64.NO_WRAP);     \\n        return FileUtil.toInputStream(b);\\n    }\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"f\",\"path\":\"f\",\"rule\":\"js:\\nfunction sbc(d, c) {\\n    return '‘‘’’<strong><big><font color=#' + (c || '000000') + '>' + d + '</font></strong></big>';\\n}\\n\\nfunction sbcR(d, c) {\\n    return '<strong><big><font color=#' + (c || '000000') + '>' + d + '</font></strong></big>';\\n}\\n\\nfunction color(d, c) {\\n    return '‘‘’’<font color=#' + (c || '000000') + '>' + d + '</font>';\\n}\\n\\nfunction colorR(d, c) {\\n    return '<font color=#' + (c || '000000') + '>' + d + '</font>';\\n}\\n\\nfunction small(d, c) {\\n    return '‘‘’’<small><font color=#' + (c || '000000') + '>' + d + '</font></small>';\\n}\\n\\nfunction smallR(d, c) {\\n    return '<small><font color=#' + (c || '000000') + '>' + d + '</font></small>';\\n}\\n\\nfunction big(d, c) {\\n    return '‘‘’’<big><font color=#' + (c || '000000') + '>' + d + '</font></big>';\\n}\\n\\nfunction bigR(d, c) {\\n    return '<big><font color=#' + (c || '000000') + '>' + d + '</font></big>';\\n}\\n\\nfunction strong(d, c) {\\n    return '‘‘’’<strong><font color=#' + (c || '000000') + '>' + d + '</font></strong>';\\n}\\n\\nfunction strongR(d, c) {\\n    return '<strong><font color=#' + (c || '000000') + '>' + d + '</font></strong>';\\n}\\n\\nfunction jp(d) {\\n    return JSON.parse(fetch('hiker://page/' + d + '?rule=' + MY_RULE.title)).rule;\\n}\\n\\nfunction sp(cc) {\\n    var str = '',\\n        ss = JTPYStr(),\\n        tt = FTPYStr();\\n    for (var i = 0; i < cc.length; i++) {\\n        if (cc.charCodeAt(i) > 10000 && tt.indexOf(cc.charAt(i)) != -1) str += ss.charAt(tt.indexOf(cc.charAt(i)));\\n        else str += cc.charAt(i);\\n    }\\n    return str;\\n}\\n\\nfunction JTPYStr() {\\n    return '绝发译历占号瘾侄浃适产你恶内奸态标签隐于喂泛系欲咨皑蔼碍爱翱袄奥坝罢摆败颁办绊帮绑镑谤剥饱宝报鲍辈贝钡狈备惫绷笔毕毙闭边编贬变辩辫鳖瘪濒滨宾摈饼拨钵铂驳卜补参蚕残惭惨灿苍舱仓沧厕侧册测层诧搀掺蝉馋谗缠铲产阐颤场尝长偿肠厂畅钞车彻尘陈衬撑称惩诚骋痴迟驰耻齿炽冲虫宠畴踌筹绸丑橱厨锄雏础储触处传疮闯创锤纯绰辞词赐聪葱囱从丛凑窜错达带贷担单郸掸胆惮诞弹当挡党荡档捣岛祷导盗灯邓敌涤递缔点垫电淀钓调迭谍叠钉顶锭订东动栋冻斗犊独读赌镀锻断缎兑队对吨顿钝夺鹅额讹恶饿儿尔饵贰发罚阀珐矾钒烦范贩饭访纺飞废费纷坟奋愤粪丰枫锋风疯冯缝讽凤肤辐抚辅赋复负讣妇缚该钙盖干赶秆赣冈刚钢纲岗皋镐搁鸽阁铬个给龚宫巩贡钩沟构购够蛊顾剐关观馆惯贯广规硅归龟闺轨诡柜贵刽辊滚锅国过骇韩汉阂鹤贺横轰鸿红后壶护沪户哗华画划话怀坏欢环还缓换唤痪焕涣黄谎挥辉毁贿秽会烩汇讳诲绘荤浑伙获货祸击机积饥讥鸡绩缉极辑级挤几蓟剂济计记际继纪夹荚颊贾钾价驾歼监坚笺间艰缄茧检碱硷拣捡简俭减荐槛鉴践贱见键舰剑饯渐溅涧浆蒋桨奖讲酱胶浇骄娇搅铰矫侥脚饺缴绞轿较秸阶节茎惊经颈静镜径痉竞净纠厩旧驹举据锯惧剧鹃绢杰洁结诫届紧锦仅谨进晋烬尽劲荆觉决诀绝钧军骏开凯颗壳课垦恳抠库裤夸块侩宽矿旷况亏岿窥馈溃扩阔蜡腊莱来赖蓝栏拦篮阑兰澜谰揽览懒缆烂滥捞劳涝乐镭垒类泪篱离里鲤礼丽厉励砾历沥隶俩联莲连镰怜涟帘敛脸链恋炼练粮凉两辆谅疗辽镣猎临邻鳞凛赁龄铃凌灵岭领馏刘龙聋咙笼垄拢陇楼娄搂篓芦卢颅庐炉掳卤虏鲁赂禄录陆驴吕铝侣屡缕虑滤绿峦挛孪滦乱抡轮伦仑沦纶论萝罗逻锣箩骡骆络妈玛码蚂马骂吗买麦卖迈脉瞒馒蛮满谩猫锚铆贸么霉没镁门闷们锰梦谜弥觅绵缅庙灭悯闽鸣铭谬谋亩钠纳难挠脑恼闹馁腻撵捻酿鸟聂啮镊镍柠狞宁拧泞钮纽脓浓农疟诺欧鸥殴呕沤盘庞国爱赔喷鹏骗飘频贫苹凭评泼颇扑铺朴谱脐齐骑岂启气弃讫牵扦钎铅迁签谦钱钳潜浅谴堑枪呛墙蔷强抢锹桥乔侨翘窍窃钦亲轻氢倾顷请庆琼穷趋区躯驱龋颧权劝却鹊让饶扰绕热韧认纫荣绒软锐闰润洒萨鳃赛伞丧骚扫涩杀纱筛晒闪陕赡缮伤赏烧绍赊摄慑设绅审婶肾渗声绳胜圣师狮湿诗尸时蚀实识驶势释饰视试寿兽枢输书赎属术树竖数帅双谁税顺说硕烁丝饲耸怂颂讼诵擞苏诉肃虽绥岁孙损笋缩琐锁獭挞抬摊贪瘫滩坛谭谈叹汤烫涛绦腾誊锑题体屉条贴铁厅听烃铜统头图涂团颓蜕脱鸵驮驼椭洼袜弯湾顽万网韦违围为潍维苇伟伪纬谓卫温闻纹稳问瓮挝蜗涡窝呜钨乌诬无芜吴坞雾务误锡牺袭习铣戏细虾辖峡侠狭厦锨鲜纤咸贤衔闲显险现献县馅羡宪线厢镶乡详响项萧销晓啸蝎协挟携胁谐写泻谢锌衅兴汹锈绣虚嘘须许绪续轩悬选癣绚学勋询寻驯训讯逊压鸦鸭哑亚讶阉烟盐严颜阎艳厌砚彦谚验鸯杨扬疡阳痒养样瑶摇尧遥窑谣药爷页业叶医铱颐遗仪彝蚁艺亿忆义诣议谊译异绎荫阴银饮樱婴鹰应缨莹萤营荧蝇颖哟拥佣痈踊咏涌优忧邮铀犹游诱舆鱼渔娱与屿语吁御狱誉预驭鸳渊辕园员圆缘远愿约跃钥岳粤悦阅云郧匀陨运蕴酝晕韵杂灾载攒暂赞赃脏凿枣灶责择则泽贼赠扎札轧铡闸诈斋债毡盏斩辗崭栈战绽张涨帐账胀赵蛰辙锗这贞针侦诊镇阵挣睁狰帧郑证织职执纸挚掷帜质钟终种肿众诌轴皱昼骤猪诸诛烛瞩嘱贮铸筑驻专砖转赚桩庄装妆壮状锥赘坠缀谆浊兹资渍踪综总纵邹诅组钻致钟么为只凶准启板里雳余链泄';\\n}\\n\\nfunction FTPYStr() {\\n    return '絶発訳歷佔號癮姪浹適產妳噁內姦態標籤隱於餵氾係慾諮皚藹礙愛翺襖奧壩罷擺敗頒辦絆幫綁鎊謗剝飽寶報鮑輩貝鋇狽備憊繃筆畢斃閉邊編貶變辯辮鼈癟瀕濱賓擯餅撥缽鉑駁蔔補參蠶殘慚慘燦蒼艙倉滄廁側冊測層詫攙摻蟬饞讒纏鏟産闡顫場嘗長償腸廠暢鈔車徹塵陳襯撐稱懲誠騁癡遲馳恥齒熾沖蟲寵疇躊籌綢醜櫥廚鋤雛礎儲觸處傳瘡闖創錘純綽辭詞賜聰蔥囪從叢湊竄錯達帶貸擔單鄲撣膽憚誕彈當擋黨蕩檔搗島禱導盜燈鄧敵滌遞締點墊電澱釣調叠諜疊釘頂錠訂東動棟凍鬥犢獨讀賭鍍鍛斷緞兌隊對噸頓鈍奪鵝額訛惡餓兒爾餌貳發罰閥琺礬釩煩範販飯訪紡飛廢費紛墳奮憤糞豐楓鋒風瘋馮縫諷鳳膚輻撫輔賦複負訃婦縛該鈣蓋幹趕稈贛岡剛鋼綱崗臯鎬擱鴿閣鉻個給龔宮鞏貢鈎溝構購夠蠱顧剮關觀館慣貫廣規矽歸龜閨軌詭櫃貴劊輥滾鍋國過駭韓漢閡鶴賀橫轟鴻紅後壺護滬戶嘩華畫劃話懷壞歡環還緩換喚瘓煥渙黃謊揮輝毀賄穢會燴彙諱誨繪葷渾夥獲貨禍擊機積饑譏雞績緝極輯級擠幾薊劑濟計記際繼紀夾莢頰賈鉀價駕殲監堅箋間艱緘繭檢堿鹼揀撿簡儉減薦檻鑒踐賤見鍵艦劍餞漸濺澗漿蔣槳獎講醬膠澆驕嬌攪鉸矯僥腳餃繳絞轎較稭階節莖驚經頸靜鏡徑痙競淨糾廄舊駒舉據鋸懼劇鵑絹傑潔結誡屆緊錦僅謹進晉燼盡勁荊覺決訣絕鈞軍駿開凱顆殼課墾懇摳庫褲誇塊儈寬礦曠況虧巋窺饋潰擴闊蠟臘萊來賴藍欄攔籃闌蘭瀾讕攬覽懶纜爛濫撈勞澇樂鐳壘類淚籬離裏鯉禮麗厲勵礫曆瀝隸倆聯蓮連鐮憐漣簾斂臉鏈戀煉練糧涼兩輛諒療遼鐐獵臨鄰鱗凜賃齡鈴淩靈嶺領餾劉龍聾嚨籠壟攏隴樓婁摟簍蘆盧顱廬爐擄鹵虜魯賂祿錄陸驢呂鋁侶屢縷慮濾綠巒攣孿灤亂掄輪倫侖淪綸論蘿羅邏鑼籮騾駱絡媽瑪碼螞馬罵嗎買麥賣邁脈瞞饅蠻滿謾貓錨鉚貿麽黴沒鎂門悶們錳夢謎彌覓綿緬廟滅憫閩鳴銘謬謀畝鈉納難撓腦惱鬧餒膩攆撚釀鳥聶齧鑷鎳檸獰甯擰濘鈕紐膿濃農瘧諾歐鷗毆嘔漚盤龐國愛賠噴鵬騙飄頻貧蘋憑評潑頗撲鋪樸譜臍齊騎豈啓氣棄訖牽扡釺鉛遷簽謙錢鉗潛淺譴塹槍嗆牆薔強搶鍬橋喬僑翹竅竊欽親輕氫傾頃請慶瓊窮趨區軀驅齲顴權勸卻鵲讓饒擾繞熱韌認紉榮絨軟銳閏潤灑薩鰓賽傘喪騷掃澀殺紗篩曬閃陝贍繕傷賞燒紹賒攝懾設紳審嬸腎滲聲繩勝聖師獅濕詩屍時蝕實識駛勢釋飾視試壽獸樞輸書贖屬術樹豎數帥雙誰稅順說碩爍絲飼聳慫頌訟誦擻蘇訴肅雖綏歲孫損筍縮瑣鎖獺撻擡攤貪癱灘壇譚談歎湯燙濤縧騰謄銻題體屜條貼鐵廳聽烴銅統頭圖塗團頹蛻脫鴕馱駝橢窪襪彎灣頑萬網韋違圍爲濰維葦偉僞緯謂衛溫聞紋穩問甕撾蝸渦窩嗚鎢烏誣無蕪吳塢霧務誤錫犧襲習銑戲細蝦轄峽俠狹廈鍁鮮纖鹹賢銜閑顯險現獻縣餡羨憲線廂鑲鄉詳響項蕭銷曉嘯蠍協挾攜脅諧寫瀉謝鋅釁興洶鏽繡虛噓須許緒續軒懸選癬絢學勳詢尋馴訓訊遜壓鴉鴨啞亞訝閹煙鹽嚴顔閻豔厭硯彥諺驗鴦楊揚瘍陽癢養樣瑤搖堯遙窯謠藥爺頁業葉醫銥頤遺儀彜蟻藝億憶義詣議誼譯異繹蔭陰銀飲櫻嬰鷹應纓瑩螢營熒蠅穎喲擁傭癰踴詠湧優憂郵鈾猶遊誘輿魚漁娛與嶼語籲禦獄譽預馭鴛淵轅園員圓緣遠願約躍鑰嶽粵悅閱雲鄖勻隕運蘊醞暈韻雜災載攢暫贊贓髒鑿棗竈責擇則澤賊贈紮劄軋鍘閘詐齋債氈盞斬輾嶄棧戰綻張漲帳賬脹趙蟄轍鍺這貞針偵診鎮陣掙睜猙幀鄭證織職執紙摯擲幟質鍾終種腫衆謅軸皺晝驟豬諸誅燭矚囑貯鑄築駐專磚轉賺樁莊裝妝壯狀錐贅墜綴諄濁茲資漬蹤綜總縱鄒詛組鑽緻鐘麼為隻兇準啟闆裡靂餘鍊洩';\\n}\"}]","proxy":"","icon":"https://img1.imgtp.com/2023/02/07/iJvIjGmk.png"},{"last_chapter_rule":"","title":"APP聚合","author":"@LoyDgIk","version":0,"type":"other","url":"hiker://empty#fypage","col_type":"movie_1_left_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet urlMap = $.require(\"hiker://page/urlSet.js\");\nlet mapi = Number(getMyVar(\":mapi\", \"0\"));\nlet img = [];\nlet tUrl = urlMap[mapi].url;\nlet hUrl = tUrl + \"api/videosort/\";\nlet tag = [{\n    name: \"全部\",\n    id: 0\n}];\nlet iTag = getMyVar(\":iTag\", \"\");\nif (iTag) {\n    iTag = JSON.parse(iTag);\n} else {\n    try {\n        iTag = JSON.parse(fetch(hUrl, {\n            headers: {\n                'User-Agent': 'okhttp/3.12.1'\n            }\n        })).rescont;\n        putMyVar(\":iTag\", JSON.stringify(iTag));\n    } catch (e) {\n        iTag = [];\n    }\n}\ntag = tag.concat(iTag);\n\nlet tagi = Number(getMyVar(\":tagi\", \"0\"));\nlet tTagId = tag[tagi].id;\nconst layout = [];\nif (MY_PAGE === 1) {\n    layout.push({\n        title: \"站点：\",\n        url: \"hiker://empty\",\n        col_type: \"scroll_button\"\n    });\n    urlMap.forEach((item, i) => {\n        layout.push({\n            title: mapi === i ? \"““””\" + item.name.fontcolor(\"#ff01bfa\") + \"\" : item.name,\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar(\":mapi\", \"\" + i);\n                clearMyVar(\":iTag\");\n                clearMyVar(\":tagi\");\n                refreshPage();\n                return \"hiker://empty\";\n            }, i),\n            col_type: \"scroll_button\"\n        });\n    });\n    layout.push({\n        col_type: \"blank_block\"\n    });\n    layout.push({\n        title: \"分类：\",\n        url: \"hiker://empty\",\n        col_type: \"scroll_button\"\n    });\n    tag.forEach((item, i) => {\n        layout.push({\n            title: tagi === i ? \"‘‘\" + item.name + \"’’\" : item.name,\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar(\":tagi\", \"\" + i);\n                refreshPage();\n                return \"hiker://empty\";\n            }, i),\n            col_type: \"scroll_button\"\n        });\n    });\n    layout.push({\n        url: '\"hiker://search?s=\"+input',\n        desc: \"搜你想要的......\",\n        title: \"搜索\",\n        col_type: \"input\",\n        extra: {\n            rules: $.toString((urlMap, mapi) => {\n                let arr1 = [];\n                urlMap.unshift(urlMap.splice(mapi, 1)[0]);\n                for (let i = 0; i < urlMap.length; i++) {\n                    arr1.push({\n                        \"title\": urlMap[i].name,\n                        \"search_url\": \"hiker://empty?searchTerms=**&page=fypage&index=\" + i,\n                        \"searchFind\": \"js: $.require('hiker://page/Search.view?rule='+MY_RULE._title);\"\n                    });\n                }\n                return JSON.stringify(arr1);\n            }, urlMap, mapi),\n            defaultValue: getMyVar(\"searchKey\", \"\"),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    });\n}\n\nlet lazyLoadImage = (pic_url, id) => {\n    let img = \"data:image/png;base64,/9j\" + request(pic_url).split(\"/9j\")[1];\n    updateItem({\n        img: img,\n        extra: {\n            id: id\n        }\n    });\n}\nlet lazyLoadUrl = $(\"\").lazyRule(() => {\n    var url = JSON.parse(fetch(input, {\n        headers: {\n            'User-Agent': 'Documents/HttpCanary/3.3.6'\n        }\n    })).rescont.videopath;\n    return url.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com') + \";get;UTF-8;{User-Agent@okhttp/3.12.1}\"\n});\nlet data = fetch(buildUrl(hUrl + tTagId, {\n    orderby: \"new\",\n    page: MY_PAGE\n}), {\n    headers: {\n        'User-Agent': 'okhttp/3.12.1'\n    }\n});\ndata = JSON.parse(data).rescont.data;\n\ndata.forEach(item => {\n    let desc = \"\";\n    if (item.authername) {\n        desc += \"类型：\" + item.authername;\n    }\n    if (item.playtimes) {\n        desc += (desc ? \"\\n\" : \"\") + \"播放时长：\" + item.playtimes;\n    }\n    if (item.updated_at) {\n        desc += (desc ? \"\\n\" : \"\") + \"更新时间：\" + item.updated_at;\n    }\n    let pic = \"\";\n    let col_type = \"movie_2\";\n    if (item.coverpath) {\n        pic = item.coverpath;\n    } else if (item.coverbase64 && item.coverbase64.url) {\n        pic = \"https://www.helloimg.com/images/2022/08/29/ZzbcFr.gif\";\n        img.push({\n            func: () => lazyLoadImage(item.coverbase64.url, item.id)\n        });\n    }\n    layout.push({\n        title: item.title,\n        pic_url: pic,\n        desc: desc,\n        col_type: col_type,\n        url: tUrl + \"api/videoplay/\" + item.id + \"?uuid=724b9c9fdd5e7b6f\" + lazyLoadUrl,\n        extra: {\n            id: item.id\n        }\n    });\n});\n\n\nsetResult(layout);\nif (img.length > 0) {\n    be(img);\n}","searchFind":"js:\nvar layout = [];\nlet urlMap = $.require(\"hiker://page/urlSet.js\");\n\nMY_URL = MY_URL.split('#')[1];\n//try {\n    var data = batchFetch(urlMap.map(data => ({\n        url: data.url + MY_URL,\n        options: {\n            headers: {\n                'User-Agent': 'Documents/HttpCanary/3.3.6'\n            }\n        }\n    })));\n    data.forEach((json, index) => {\n        var list = JSON.parse(json).rescont.data;\n        for (var item of list) {\n            layout.push({\n                title: item.title,\n                desc: item.authername,\n                img: item.coverpath,\n                content: urlMap[index].name,\n                url: urlMap[index].url + \"api/videoplay/\" + item.id + \"?uuid=724b9c9fdd5e7b6f\" + \"@lazyRule=Text.js: JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com')+';get;UTF-8;{User-Agent@PostmanRuntime/7.29.2}'\"\n            });\n        }\n    })\n//} catch (e) {};\nsetResult(layout);","search_url":"hiker://empty#api/videosort/0?serach=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"服务器备用\",\"path\":\"by\",\"rule\":\"\\n/**\\nhttps://api.平台拼音缩写dd4.xyz\\nhttps://api.平台拼音缩写ee5.xyz\\nhttps://api.平台拼音缩写be2.xyz\\n草莓cm，丝瓜sg，向日葵xrk，芭乐bl\\n\\n芭乐>q:apilist0?url=https://api.bldd4.xyz\\n芭乐>q:apilist0?url=https://api.bldd4.xyz\\n丝瓜>q:gualist0?url=https://api.sgdd4.xyz\\n丝瓜>q:gualist0?url=https://api.sgbe2.xyz\\n草莓>q:gualist0?url=https://api.cmdd4.xyz\\n草莓>q:gualist0?url=https://api.cmbe2.xyz\\n向日葵>q:gualist0?url=https://api.xrkdd4.xyz\\n向日葵>q:gualist0?url=https://api.xrkbe2.xyz\\n秋葵>q:guolist0?url=http://api.klpqk.com\\n秋葵>q:guolist0?url=http://api.spwtl.com\\n榴莲>q:guolist0?url=http://liulianshipin100.com\\n榴莲>q:guolist0?url=http://liulianshipin101.com\\n榴莲>q:guolist0?url=http://liulianshipin102.com\\n榴莲>q:guolist0?url=http://liulianshipin103.com\\n榴莲>q:guolist0?url=http://liulianshipin104.com\\n1024服务器替换http://1gb.tw  http://yjb.tw  http://1024yjb.com  http://yjb1024.com\\nYTB服务器替换http://fsfapermanentcosmeticartistry.com  http://sekihfde.com http://fsvibrantnutritionandhealth.com http://fsafmyfootballpredictions.com\\n榴莲服务器替换http://liulianshipin100.com http://liulianshipin101.com http:/\\n/liulianshipin102.com http://liulianshipin103.com http://liulianshipin104.com\\n蕾丝服务器 http://fsfanteriormanagement.com\\n     http://fsfarlingtonqiwellness.com\\n     http://fsfcjanaturalbuilding.com\\n     http://fshandcalligraphypa.com\\n    http://ewgabrielaconstantine.com\\n宅男\\nhttp://gntwax.com\\nhttp://ylpcvr.com\\nhttp://bjfbuq.com\\nhttp://kqcfrq.com\\nhttp://pdpulf.com\\nvideo:\\thttp://gntwax.com/api/index.m3u8?m3u8=https://syastjt.com/\\\"\\n小蝌蚪\\n \\\"http://dianxianhongqiao.com/\\\",\\n      \\\"http://chaopen97.com/\\\",\\n      \\\"http://xiaokedou898.com/\\\",\\n      \\\"http://xiaokedou188.com/\\\",\\n      \\\"http://xiaokedou233.com/\\\",\\n      \\\"http://xiaokedou699.com/\\\"\\nvideo:http://chaopen97.com/api/index.m3u8?m3u8=https://www.hfkuangshanche.com/\\\"\\nhttp://chaopen97.com/api/index.m3u8?m3u8=https://www.cljcqzz.com\\nhttp://dianxianhongqiao.com/api/index.m3u8?m3u8=https://yunyi668.com/\\n银杏视频\\napi      http://yxsp4.com\\\",\\n      \\\"http://yxsp2.com\\\",\\n      \\\"http://yxsp1.com\\\"\\n播放替换\\nhttp://yxsp1.com:80/api/index.m3u8?m3u8=https://mhzb998.com/\\n石榴视频\\n播放替换      \\nhttps://awpwdf.com/api/index.m3u8?m3u8=https://www.mhzb998.com/\\n\\\"api\\\": [\\n      \\\"https://awpwdf.com\\\",\\n      \\\"https://ejndgl.com\\\",\\n      \\\"https://waydez.com\\\",\\n      \\\"https://zupfye.com\\\",\\n      \\\"https://spijbq.com\\\"\\n\\n1024-榴莲-宅男-银杏-石榴（相同）\\n\\n*/\\n搜索ua解析\\nurl: urlList[index][0] + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\" + \\\"@lazyRule=Text.js: JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com')+';get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}'\\\"\\n一级UA解析\\nurl: $(spl[1].split('sort')[0] + 'play/' + vid + '?uuid=724b9c9fdd5e7b6f').lazyRule(() => {\\n            var json = JSON.parse(fetch(input, {})).rescont.videopath;\\n            return json.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com')+\\\";get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}\\\"\\n本地\\n搜索\\nurl: urlList[index][0] + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\" + \\\"@lazyRule=Text.js: cacheM3u8(JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin100.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com'))\\\"\\n一级\\nurl: $(spl[1].split('sort')[0] + 'play/' + vid + '?uuid=724b9c9fdd5e7b6f').lazyRule(() => {\\n            var json = JSON.parse(fetch(input, {})).rescont.videopath;\\n            return cacheM3u8(json.replace('https://yuanqiplay.com', 'https://liulianshipin100.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://fsfarlingtonqiwellness.com/api/index.m3u8?m3u8=https://yunyi668.com'))\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"UrlSet.js\",\"path\":\"urlSet.js\",\"rule\":\"js:\\nconst defaultUrlMap = [{\\n    \\\"name\\\": \\\"蕾丝\\\",\\n    \\\"url\\\": \\\"http://fshandcalligraphypa.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"YTB\\\",\\n    \\\"url\\\": \\\"http://fsafmyfootballpredictions.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"小蝌蚪\\\",\\n    \\\"url\\\": \\\"http://dianxianhongqiao.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"秋葵\\\",\\n    \\\"url\\\": \\\"http://api.klpqk.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"银杏视频\\\",\\n    \\\"url\\\": \\\"http://yxsp6.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"宅男\\\",\\n    \\\"url\\\": \\\"http://ylpcvr.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"1024\\\",\\n    \\\"url\\\": \\\"http://yjb.tw/\\\"\\n}, {\\n    \\\"name\\\": \\\"榴莲\\\",\\n    \\\"url\\\": \\\"http://api.klpqk.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"石榴\\\",\\n    \\\"url\\\": \\\"http://zupfye.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"草莓\\\",\\n    \\\"url\\\": \\\"https://api.cmbe2.xyz/\\\"\\n}, {\\n    \\\"name\\\": \\\"丝瓜\\\",\\n    \\\"url\\\": \\\"https://api.sgbe1.xyz/\\\"\\n}, {\\n    \\\"name\\\": \\\"向日葵\\\",\\n    \\\"url\\\": \\\"https://api.xrkapi004.xyz/\\\"\\n}];\\n$.exports = defaultUrlMap;\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.view\",\"path\":\"Search.view\",\"rule\":\"js:\\nlet keyword = getParam(\\\"searchTerms\\\") || \\\"\\\";\\nlet index = Number(getParam(\\\"index\\\") || \\\"0\\\");\\nlet urlMap = $.require(\\\"hiker://page/urlSet.js?rule=\\\" + MY_RULE._title);\\nlet tUrl = urlMap[index].url;;\\nlet data;\\nlet img = [];\\ntry {\\n    data = JSON.parse(fetch(tUrl + \\\"api/videosort/0?serach=\\\" + keyword + \\\"&page=\\\" + MY_PAGE)).rescont.data;\\n} catch (e) {\\n    data = [];\\n}\\nlet layout = [];\\ndata.forEach(item => {\\n    let desc = \\\"\\\";\\n    if (item.authername) {\\n        desc += \\\"类型：\\\" + item.authername;\\n    }\\n    if (item.playtimes) {\\n        desc += (desc ? \\\"\\\\n\\\" : \\\"\\\") + \\\"播放时长：\\\" + item.playtimes;\\n    }\\n    if (item.updated_at) {\\n        desc += (desc ? \\\"\\\\n\\\" : \\\"\\\") + \\\"更新时间：\\\" + item.updated_at;\\n    }\\n    let pic = \\\"\\\";\\n    if (item.coverpath) {\\n        pic = item.coverpath;\\n    } else if (item.coverbase64 && item.coverbase64.url) {\\n        pic = 'https://www.helloimg.com/images/2022/08/29/ZzbcFr.gif'\\n        const DesDecode = (pic_url, id) => {\\n            let img = \\\"data:image/png;base64,/9j\\\" + request(pic_url).split(\\\"/9j\\\")[1]\\n            updateItem({\\n                img: img,\\n                extra: {\\n                    id: id\\n                }\\n            })\\n        }\\n    }\\n    layout.push({\\n        title: item.title,\\n        pic_url: pic,\\n        desc: desc,\\n        url: $(tUrl + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\").lazyRule(() => {\\n            var url = JSON.parse(fetch(input)).rescont.videopath;\\n            return url.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com') + \\\";get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}\\\"\\n        }),\\n        extra: {\\n            id: item.id\\n        }\\n    });\\n    img.push({\\n        func: () => DesDecode(item.coverbase64.url, item.id)\\n    })\\n});\\n\\nsetResult(layout);\\nbe(img)\"}]","proxy":"","icon":"https://p3.itc.cn/images01/20200519/86debae2ed474ed7b4fe9f33e82cab08.jpeg"},{"last_chapter_rule":"","title":"香蕉视频","author":"Timk","version":0,"type":"video","url":"http://ios.bxguwen.com/vod/listing-fyclass-0-0-0-0-0-0-0-0-fypage","col_type":"movie_2","class_name":"全部&自拍&制服&少女&辣妹&女同&素人&角色&动漫&人气&重口&经典","class_url":"0&4&5&6&7&8&9&10&11&12&13&14","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar json=JSON.parse(getResCode());\nvar res={};\nvar d=[];\nfor(var i=0;i<json.data.vodrows.length;i++){\nvar j = json.data.vodrows[i];\nvar r = {};\n    r.pic_url = j.coverpic;\n    r.title = j.title;\n   // r.desc = j.tags[0];\n    r.url = 'http://ios.bxguwen.com' + j.play_url +\n    '@lazyRule=.js:JSON.parse(fetch(input,{})).data.httpurl';\n    d.push(r);\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"水果派","author":"TyrantGenesis","version":1,"type":"other","url":"hiker://empty##https://api.f03d9.info/library?limit=10&page=fypage&platfrom=0","col_type":"pic_1_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\ntry {\n    var d = $.require('hiker://page/index1')\n} catch (e) {\n    // 主页\n    //var d = $.require('hiker://page/index')\n    setItem('updata', '1');\n    refreshPage()\n}\nif (!d) {\n    setItem('host_up', '1')\n    refreshPage()\n}\nsetResult(d);","searchFind":"js:\nvar d = $.require('hiker://page/Search')\n\nsetResult(d);","search_url":"hiker://empty?word=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"if (getItem('updata', '1') == '1') {\n    // 更新hosts \n    $.require('hiker://page/update')\n    // 更新 host\n    setItem('host_up', '1')\n    setItem('host_num', '0')\n    // 更新结束\n    setItem('updata', '0')\n}\n\nvar hosts = storage0.getItem(\"hosts\")\n\nif (getItem('host_up', '1') == '1') {\n    var i = parseInt(getItem('host_num', '0'))\n    if (i < hosts.length) {\n        setItem('host', hosts[i])\n        i += 1\n        i = i.toString()\n        setItem('host_num', i)\n        setItem('updata', '0')\n    } else {\n        setItem('updata', '1')\n        refreshPage()\n    }\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"更新线路\",\"path\":\"update\",\"rule\":\"var d = []\\n// 设置变量\\nvar hosts = [\\\"https://api.cbbee0.com\\\", \\\"https://api.8831e5.com\\\", \\\"https://api.371af4.com\\\", \\\"https://api.db9012.com\\\", \\\"https://api.4fb9b5.com\\\"]\\nvar encrypt = {\\n    \\\"encrypt_key\\\": \\\"IpZoXz7jvx2EPIgjO+y1z5Crc01rcNWfd28eP4H0jBSEdGbRuck+c+m7UGTxt2f6pR7V0ihe7BA2cT7ypwMro20kDWbFdAfa96GArJVNO86VynG1vBhacd1JwxINxuq+0FZxBIzzzSIa1MPTQTPz0gl6oaGb3VP2j4U77Itx3aj2Qq29k3Apmr+1LvXDzQ+Ysu8c4j8O4S+HT44pNriYYo1m3h6eupSsLiSGWgdhDxbnOu93R1S3H44z1xed14VkkvJrtzRRmlUsd5GKJAKieKND0tK6IhBKUT7AXeYFob9HUdWr7oRYOXPg2Cfzf5NPW4DA9O9HilfAdYJUI7JQIQ==\\\",\\n    \\\"encrypt_data\\\": \\\"JH0gIS2NBqaPo8yZpGnaJdlDQjRPAGU6q/d0tEYQOU5+MQTCFsaQffKT75WazDnGR42IFsKzWb1Fcs4JloFCz0ZZTIjXLxmnG4sS/JrDjvQjJAxN5/lYNwgLYvOVksyCtPuEnmDBsLk=\\\",\\n}\\nvar sys = \\\"&sys_version=12&device_number=611410d143c5d7e6&screen_size=1080x2400&hm=008-api&model=Redmi%40Redmi%20K30%20Pro%20Zoom%20Edition&version=1.2.8&platform=1\\\"\\n\\nvar body = `encrypt_key=` + storage0.getItem(\\\"encrypt\\\", encrypt).encrypt_key + `&encrypt_data=` + storage0.getMyVar(\\\"encrypt\\\", encrypt).encrypt_data + storage0.getItem(\\\"sys\\\", sys)\\n// 获取随机地址\\nvar i = Math.floor(Math.random() * storage0.getItem(\\\"hosts\\\", hosts).length);\\nvar get = hosts[i] + \\\"/v1_2/apiUrl\\\"\\n\\n// 获取host更新地址\\nvar html = fetch(get, {\\n    headers: {},\\n    body: body,\\n    method: 'POST',\\n    withHeaders: true\\n});\\ntry {\\n    html = JSON.parse(html)\\n    var html_json = JSON.parse(html.body)\\n    var hosts = html_json.data.list\\n    'toast://【hosts】已更新'\\n} catch (e) {\\n    log(html)\\n    'toast://【hosts】更新失败'\\n}\\n\\n// 获取encrypt\\nvar html_1 = fetch(get, {\\n    headers: {},\\n    method: 'POST',\\n    withHeaders: true\\n});\\ntry {\\n    html_1 = JSON.parse(html_1)\\n    var encrypt = JSON.parse(html_1.body)\\n    'toast://【encrypt】已更新'\\n} catch (e) {\\n    log(html_1)\\n    'toast://【encrypt】更新失败'\\n}\\n\\n\\n\\nstorage0.setItem('hosts', hosts)\\nstorage0.setItem('encrypt', encrypt)\\nstorage0.setItem(\\\"sys\\\", sys)\\n\\n$.exports = html\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"index\",\"rule\":\"js:\\nlet d = [];\\nconst list_json = fetch(MY_URL.split('##')[1]);\\nconst list = JSON.parse(list_json).data.data\\nconst cdn = JSON.parse(list_json).cdn\\n\\nif (MY_URL.includes('library')) {\\n    list.forEach(item => {\\n        d.push({\\n            title: item.title,\\n            desc: item.subtitle,\\n            pic_url: cdn.image + item.img_url,\\n            url: $(\\\"https://www.shuiguopai.com/play-details/1/\\\" + item.id + \\\"/\\\").lazyRule(_ => {\\n                const html = fetch(input)\\n                return (html.match(/url:\\\"(.*?)index.m3u8\\\"/)[1]).replace(/\\\\\\\\u002F/g, '/') + \\\"index.m3u8\\\"\\n            }),\\n            col_type: 'movie_2'\\n        })\\n    })\\n} else {\\n    list.forEach(item => {\\n        item.cdn = cdn\\n        d.push({\\n            title: item.name,\\n            desc: item.library_count + '部作品',\\n            pic_url: cdn.image + item.img,\\n            url: $(\\\"hiker://empty##fypage\\\").rule(item => {\\n                let d = [];\\n                const params = {\\n                    \\\"anchors_id\\\": item.id,\\n                    \\\"hm\\\": \\\"008-api\\\",\\n                    \\\"length\\\": 12,\\n                    \\\"page\\\": MY_URL.split('##')[1],\\n                }\\n                const headers = {\\n                    'Content-Type': 'application/json',\\n                    'Referer': 'https://www.shuiguopai.com/',\\n                    'User-Agent': MOBILE_UA\\n                }\\n                const data_json = fetch(\\\"https://api.cbbee0.com/v1_2/anchorsDetail\\\", {\\n                    headers: headers,\\n                    method: 'POST',\\n                    body: JSON.stringify(params)\\n                })\\n                log(data_json)\\n                const list = JSON.parse(data_json).data.list\\n                const cdn = item.cdn\\n                list.forEach(res => {\\n                    d.push({\\n                        title: res.title,\\n                        desc: res.subtitle,\\n                        pic_url: res.img_url,\\n                        url: $(\\\"https://www.shuiguopai.com/play-details/1/\\\" + res.library_id + \\\"/\\\").lazyRule(_ => {\\n                            const html = fetch(input)\\n                            return (html.match(/url:\\\"(.*?)index.m3u8\\\"/)[1]).replace(/\\\\\\\\u002F/g, '/') + \\\"index.m3u8\\\"\\n                        }),\\n                        col_type: 'movie_2'\\n                    })\\n                })\\n                setResult(d);\\n            }, item),\\n            col_type: 'icon_round_4'\\n        })\\n    })\\n}\\n\\n\\n$.exports = d\"},{\"col_type\":\"movie_3\",\"name\":\"详情页\",\"path\":\"index2\",\"rule\":\"js:\\nvar d = []\\n// 判断详情页类型 视频[video] 和 图文[pic]\\nvar type = getParam('type', 'pic')\\nvar id = getParam('id')\\n\\nvar host = getItem('host')\\nvar get = host + '/v1_2/libraryDetail'\\nvar sys = storage0.getItem('sys') + '&library_id=' + id\\nvar body = `encrypt_key=` + storage0.getItem(\\\"encrypt\\\").encrypt_key + `&encrypt_data=` + storage0.getItem(\\\"encrypt\\\").encrypt_data + sys\\nvar html = fetch(get, {\\n    headers: {},\\n    body: body,\\n    method: 'POST',\\n    withHeaders: true\\n});\\nhtml = JSON.parse(html).body\\nhtml = JSON.parse(html).data\\nvar video = html.detail\\n/*\\nd.push({\\n    title: html.content,\\n    col_type: 'rich_text'\\n});\\n*/\\nfor (let i = 0; i < video.length; i++) {\\n    if (i != 1) {\\n        d.push({\\n            title: video[i].content,\\n            col_type: 'rich_text'\\n        })\\n    } else {\\n        d.push({\\n            desc: '0',\\n            pic_url: video[i].img_url,\\n            url: video[i].url,\\n            col_type: 'card_pic_1'\\n        });\\n        d.push({\\n            title: '时长：' + video[i].movie_time,\\n            col_type: 'text_center_1'\\n        })\\n    }\\n}\\n\\nsetResult(d)\"},{\"col_type\":\"movie_1\",\"name\":\"搜索\",\"path\":\"Search\",\"rule\":\"var d = []\\nvar get = getItem(\\\"host\\\") + \\\"/v1_2/articleSearch\\\"\\nvar sys = storage0.getItem('sys') + `&conditions=` + getParam('word') + `&sort=1&page=` + getParam('page')\\nvar body = `encrypt_key=` + storage0.getItem(\\\"encrypt\\\").encrypt_key + `&encrypt_data=` + storage0.getItem(\\\"encrypt\\\").encrypt_data + sys\\ntry {\\n    var html = fetch(get, {\\n        headers: {},\\n        body: body,\\n        method: 'POST',\\n        withHeaders: true\\n    });\\n    html = JSON.parse(html).body\\n    html = JSON.parse(html)\\n    list = html.data\\n    list.forEach(item => {\\n        var tag = []\\n        try {\\n            item.tag.forEach(tags => {\\n                tag.push('【' + tags + '】')\\n            })\\n        } catch (e) {\\n            'toast://tag获取失败'\\n        }\\n\\n        d.push({\\n            title: item.title + '\\\\n' + tag.join(),\\n            desc: item.movie_time,\\n            pic_url: item.img_url,\\n            url: 'hiker://page/index2?id=' + item.library_id + `#noHistory##noRecordHistory#`\\n        })\\n    })\\n\\n} catch (e) {\\n    'toast://搜索失败'\\n}\\nlog(sys)\\n$.exports = d\"},{\"col_type\":\"movie_3\",\"name\":\"主页1\",\"path\":\"index1\",\"rule\":\"js:\\nvar d = []\\nvar host = getItem('host')\\nvar get = host + \\\"/v1_2/homePage\\\"\\nvar sys = storage0.getItem('sys') + `&page=` + getParam('page', 1)\\nvar body = `encrypt_key=` + storage0.getItem(\\\"encrypt\\\").encrypt_key + `&encrypt_data=` + storage0.getItem(\\\"encrypt\\\").encrypt_data + sys\\nvar html = fetch(get, {\\n    headers: {},\\n    body: body,\\n    method: 'POST',\\n    withHeaders: true\\n});\\nhtml = JSON.parse(html).body\\nhtml = JSON.parse(html)\\nlist = html.data.list\\n// log(list)\\nlist.forEach(item => {\\n    var tags = []\\n    try {\\n        item.tags.forEach(tag => {\\n            tags.push(tag.tag_title)\\n        })\\n    } catch (e) {}\\n\\n    d.push({\\n        title: item.title,\\n        desc: item.subtitle + '\\\\n标签：' + tags.join('、'),\\n        pic_url: item.img_url,\\n        url: 'hiker://page/index2?id=' + item.library_id + `#noHistory##noRecordHistory#`\\n    })\\n})\\n\\n\\n$.exports = d\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3WMZj.png"},{"last_chapter_rule":"","title":"小丑撸","author":"kingkare","version":1,"type":"video","url":"https://www.jokerlulin.cc/index.php/vodtype/fyclass-fypage.html","col_type":"movie_2","class_name":"国产&欧美&日本&动漫&中字","class_url":"1&5&2&6&9","area_name":"精品&三集&主播&抖阴&国模&颜色&女神&美熟&素人&空姐&乱轮&自卫&野合&职场&名人&自拍&写真","area_url":"10&11&12&13&14&15&16&17&18&19&20&21&22&23&24&57&70","sort_name":"人瘦&人要&男男&女女","year_name":"有马&无马&制服&强健&素女&剧情&丝袜&亚洲","sort_url":"30&31&32&33","year_url":"27&28&50&51&53&55&56&58","find_rule":"js: \nvar res = {};\r\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), 'body&&.resent-grid');\r\nfor (var j = 0; j < list.length; j++) {\r\n\tif (list[j]) {\r\n\t\tvar url = 'https://imgmrplay.xyz' + parseDom(list[j], 'a&&href');\r\n\t\td.push({\r\n\t\t\ttitle: parseDomForHtml(list[j], 'h5&&Text'),\r\n\t\t\tpic_url: parseDomForHtml(list[j], 'img&&src'),\r\n\t //desc: parseDomForHtml(list[j], '.layer-b&&Text'),\r\n\t\t\turl: 'https://www.jokerlulin.cc/'+parseDomForHtml(list[j],'a&&href')+'@lazyRule=body&&.video-grid&&script:not([src])&&Html.js:eval(input);decodeURIComponent(base64Decode(player_data.url).match(/http.*m3u8/g))',\ncol_type: 'movie_2'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.jokerlulin.cc/favicon.ico"},{"last_chapter_rule":"","title":"JAV HD","author":"道长","version":1,"type":"video","url":"hiker://empty##http://wmcj8.com/inc/sapi.php#pg=fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/7tgwNoM5.jpg"},{"last_chapter_rule":"","title":"fam99传媒汇总","author":"230201","version":0,"type":"video","url":"https://www.fam99buy.info/#","col_type":"text_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nhtml=getResCode()\nvar list = pdfa(html, '#menu&&li:gt(2) a')\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'a&&Text'),\n        url: pd(item, 'a&&href').replace(\".html\",\"/page/fypage.html\"),\n            })\n});\nsetResult(d)","searchFind":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.news_list_list&&li')\nvar lazy = $('').lazyRule(() => {\n    return base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url).match(/http.*?\\.m3u8/)[0]\n})\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, '.title&&Text'),\n        desc: pdfh(item, '.cap-date&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href').replace(\"detail\",\"play\").replace(\".html\",\"-1-1.html\")+lazy\n            })\n});\nsetResult(d)","search_url":"https://www.fam99buy.info/index.php/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.news_list_list&&li')\nvar lazy = $('').lazyRule(() => {\n    return base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url).match(/http.*?\\.m3u8/)[0]\n})\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, '.title&&Text'),\n        desc: pdfh(item, '.cap-date&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href').replace(\"detail\",\"play\").replace(\".html\",\"-1-1.html\")+lazy\n            })\n});\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"泡芙资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://zmcj88.com/api#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=泡芙资源"},{"last_chapter_rule":"","title":"AV资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.pgxdy.com/api/xml.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=AV资源"},{"last_chapter_rule":"","title":"学无止境","author":"TT","version":1,"type":"video","url":"https://22.sewang28.net/list/fyclass-fypage?_t.html[firstPage=https://22.sewang28.net/list/fyclass.html];get;utf-8;{User-Agent@Windows}","col_type":"movie_2","class_name":"国产&中字&日韩&欧美&动漫","class_url":"3&4&5&6&7","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.video-img-box');\nfor (var j in list) {\n  let src = parseDom(list[j], \"img&&data-src\");\n  d.push({\n     title: parseDomForHtml(list[j], 'h6&&Text'),\n     desc: parseDomForHtml(list[j], '.label&&Text'),\n     pic_url: src,\n     url: src.replace(\"1.jpg\", \"m3u8/index.m3u8\")\n     });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.row&&.video-img-box');\nfor (var j in list) {  \nd.push({       \ntitle: parseDomForHtml(list[j], 'a&&title'),\ndesc: parseDomForHtml(list[j], '.label&&Text'),\npic_url: parseDom(list[j],'img&&data-src'),       \nurl:'https://22.sewang28.net/'+parseDomForHtml(list[j],'a&&href')+'@lazyRule=#player-fluid&&source,-1&&src'\n});\n}\n}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/p8LpuV3T.jpg"},{"last_chapter_rule":"","title":"含羞草研究所","author":"TyrantGenesis","version":1,"type":"video","url":"hiker://empty$$fyclass$$fypage","col_type":"movie_3","class_name":"G点预告&今日上新&重磅热推&人气排行&小编私藏&发现&国产&主播&日韩&欧美&动漫","class_url":"1&2&3&4&5&6&7&8&9&10&11","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(getCryptoJS())\nconst baseParse = _ => {\n    let d = [];\n    let tasks = []\n    let [empty, fyclass, page] = MY_URL.split('$$')\n    fyclass = parseInt(fyclass)\n    page = parseInt(page)\n\n    let list = []\n    switch (fyclass) {\n        case 1: {\n            list = getList(2, \"addTimeStamp\", '', page)\n            break\n        }\n        case 2: {\n            list = getList(1, \"addTimeStamp\", '', page)\n            break\n        }\n        case 3: {\n            list = getList(1, \"seeCount\", '', page)\n            break\n        }\n        case 4: {\n            list = getList(1, \"hot\", '', page)\n            break\n        }\n        case 5: {\n            list = getList(1, \"collectionCount\", '', page)\n            break\n        }\n        case 6: {\n            list = getFind(page)\n            break\n        }\n        case 7: {\n            list = getListByTypeId(4, '', page)\n            break\n        }\n        case 8: {\n            list = getListByTypeId(11, '', page)\n            break\n        }\n        case 9: {\n            list = getListByTypeId(17, '', page)\n            break\n        }\n        case 10: {\n            list = getListByTypeId(23, '', page)\n            break\n        }\n        case 11: {\n            list = getListByTypeId(29, '', page)\n            break\n        }\n    }\n\n    if (list.length > 0) {\n        list.forEach(item => {\n            let id = item.id.toString()\n            d.push({\n                title: item.name,\n                desc: item.tags,\n                pic_url: '',\n                url: $(empty).lazyRule((id) => {\n                    const params = {\n                        \"videoId\": parseInt(id),\n                    }\n\n                    const video_json = fetch(\"https://www.hxc-api.com/videos/getPreUrl\", {\n                        headers: {\n                            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                            'Content-Type': 'application/json',\n                            'user-agent': PC_UA\n                        },\n                        method: 'POST',\n                        body: params\n                    })\n                    const video = JSON.parse(video_json)\n\n                    if (video.code === 0) {\n                        let m3u8Url = video.data.url\n                        let splited = m3u8Url.split(\"?\")\n                        let m3u8UrlParams = splited[1].split('&')\n                        // urlSearchParams.delete(\"start\")\n                        // urlSearchParams.delete(\"end\")\n                        return splited[0] + \"?\" + m3u8UrlParams.pop()\n                    } else {\n                        const video_free_json = fetch(\"https://www.hxc-api.com/videos/getUrl\", {\n                            headers: {\n                                auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                                'Content-Type': 'application/json',\n                                'user-agent': PC_UA\n                            },\n                            method: 'POST',\n                            body: params\n                        })\n                        const video_free = JSON.parse(video_free_json)\n                        if (video_free.code === 0) {\n                            return video_free.data.url\n                        } else {\n                            return 'toast://解析失败'\n                        }\n                    }\n                }, id),\n                col_type: 'movie_1_left_pic',\n                extra: {\n                    id: id,\n                }\n            })\n            tasks.push({\n                func: () => picUrlDecode(item.coverImgUrl, id)\n            })\n        })\n    }\n\n    setResult(d);\n    be(tasks)\n}\n\nconst searchParse = () => {\n    let d = [];\n    // let tasks = []\n    let [empty, search, page] = MY_URL.split('$$')\n    page = parseInt(page)\n\n    let list = getList(1, \"addTimeStamp\", search, page)\n\n    if (list.length > 0) {\n        list.forEach(item => {\n            let id = item.id.toString()\n            d.push({\n                title: item.name,\n                desc: item.tags,\n                // pic_url: '',\n                url: $(empty).lazyRule((id) => {\n                    const params = {\n                        \"videoId\": parseInt(id),\n                    }\n\n                    const video_json = fetch(\"https://www.hxc-api.com/videos/getPreUrl\", {\n                        headers: {\n                            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                            'Content-Type': 'application/json',\n                            'user-agent': PC_UA\n                        },\n                        method: 'POST',\n                        body: params\n                    })\n                    const video = JSON.parse(video_json)\n\n                    if (video.code === 0) {\n                        let m3u8Url = video.data.url\n                        let splited = m3u8Url.split(\"?\")\n                        let m3u8UrlParams = splited[1].split('&')\n                        // urlSearchParams.delete(\"start\")\n                        // urlSearchParams.delete(\"end\")\n                        return splited[0] + \"?\" + m3u8UrlParams.pop()\n                    } else {\n                        const video_free_json = fetch(\"https://www.hxc-api.com/videos/getUrl\", {\n                            headers: {\n                                auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                                'Content-Type': 'application/json',\n                                'user-agent': PC_UA\n                            },\n                            method: 'POST',\n                            body: params\n                        })\n                        const video_free = JSON.parse(video_free_json)\n                        if (video_free.code === 0) {\n                            return video_free.data.url\n                        } else {\n                            return 'toast://解析失败'\n                        }\n                    }\n                }, id),\n                col_type: 'movie_2',\n                /*extra: {\n                    id: id,\n                }*/\n            })\n            /*tasks.push({\n                func: () => picUrlDecode(item.coverImgUrl, id)\n            })*/\n        })\n    }\n\n    setResult(d);\n    // be(tasks)\n}\n\nconst getList = (type, column, searchText, page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n        \"type\": type,\n        \"searchText\": searchText,\n        \"orderText\": [\n            {\n                \"dir\": \"desc\",\n                \"column\": column\n            }\n        ]\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getList\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst getListByTypeId = (getListByTypeId, searchText, page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n        \"type\": 1,\n        \"typeId\": getListByTypeId,\n        \"searchText\": searchText,\n        \"orderText\": [\n            {\n                \"dir\": \"desc\",\n                \"column\": \"addTimeStamp\"\n            }\n        ]\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getList\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst getFind = (page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getFind\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst picUrlDecode = (pic_url, id) => {\n    const base64PicUrl = CryptoJS.AES.decrypt(fetch(pic_url), CryptoJS.enc.Utf8.parse(\"46cc793c53dc451b\"), {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)\n    updateItem({\n        pic_url: base64PicUrl,\n        extra: {\n            id: id\n        }\n    })\n}\n\nbaseParse()\n","searchFind":"js:\neval(getCryptoJS())\nconst baseParse = _ => {\n    let d = [];\n    let tasks = []\n    let [empty, fyclass, page] = MY_URL.split('$$')\n    fyclass = parseInt(fyclass)\n    page = parseInt(page)\n\n    let list = []\n    switch (fyclass) {\n        case 1: {\n            list = getList(2, \"addTimeStamp\", '', page)\n            break\n        }\n        case 2: {\n            list = getList(1, \"addTimeStamp\", '', page)\n            break\n        }\n        case 3: {\n            list = getList(1, \"seeCount\", '', page)\n            break\n        }\n        case 4: {\n            list = getList(1, \"hot\", '', page)\n            break\n        }\n        case 5: {\n            list = getList(1, \"collectionCount\", '', page)\n            break\n        }\n        case 6: {\n            list = getFind(page)\n            break\n        }\n        case 7: {\n            list = getListByTypeId(4, '', page)\n            break\n        }\n        case 8: {\n            list = getListByTypeId(11, '', page)\n            break\n        }\n        case 9: {\n            list = getListByTypeId(17, '', page)\n            break\n        }\n        case 10: {\n            list = getListByTypeId(23, '', page)\n            break\n        }\n        case 11: {\n            list = getListByTypeId(29, '', page)\n            break\n        }\n    }\n\n    if (list.length > 0) {\n        list.forEach(item => {\n            let id = item.id.toString()\n            d.push({\n                title: item.name,\n                desc: item.tags,\n                pic_url: '',\n                url: $(empty).lazyRule((id) => {\n                    const params = {\n                        \"videoId\": parseInt(id),\n                    }\n\n                    const video_json = fetch(\"https://www.hxc-api.com/videos/getPreUrl\", {\n                        headers: {\n                            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                            'Content-Type': 'application/json',\n                            'user-agent': PC_UA\n                        },\n                        method: 'POST',\n                        body: params\n                    })\n                    const video = JSON.parse(video_json)\n\n                    if (video.code === 0) {\n                        let m3u8Url = video.data.url\n                        let splited = m3u8Url.split(\"?\")\n                        let m3u8UrlParams = splited[1].split('&')\n                        // urlSearchParams.delete(\"start\")\n                        // urlSearchParams.delete(\"end\")\n                        return splited[0] + \"?\" + m3u8UrlParams.pop()\n                    } else {\n                        const video_free_json = fetch(\"https://www.hxc-api.com/videos/getUrl\", {\n                            headers: {\n                                auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                                'Content-Type': 'application/json',\n                                'user-agent': PC_UA\n                            },\n                            method: 'POST',\n                            body: params\n                        })\n                        const video_free = JSON.parse(video_free_json)\n                        if (video_free.code === 0) {\n                            return video_free.data.url\n                        } else {\n                            return 'toast://解析失败'\n                        }\n                    }\n                }, id),\n                col_type: 'movie_2',\n                extra: {\n                    id: id,\n                }\n            })\n            tasks.push({\n                func: () => picUrlDecode(item.coverImgUrl, id)\n            })\n        })\n    }\n\n    setResult(d);\n    be(tasks)\n}\n\nconst searchParse = () => {\n    let d = [];\n    // let tasks = []\n    let [empty, search, page] = MY_URL.split('$$')\n    page = parseInt(page)\n\n    let list = getList(1, \"addTimeStamp\", search, page)\n\n    if (list.length > 0) {\n        list.forEach(item => {\n            let id = item.id.toString()\n            d.push({\n                title: item.name,\n                desc: item.tags,\n                // pic_url: '',\n                url: $(empty).lazyRule((id) => {\n                    const params = {\n                        \"videoId\": parseInt(id),\n                    }\n\n                    const video_json = fetch(\"https://www.hxc-api.com/videos/getPreUrl\", {\n                        headers: {\n                            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                            'Content-Type': 'application/json',\n                            'user-agent': PC_UA\n                        },\n                        method: 'POST',\n                        body: params\n                    })\n                    const video = JSON.parse(video_json)\n\n                    if (video.code === 0) {\n                        let m3u8Url = video.data.url\n                        let splited = m3u8Url.split(\"?\")\n                        let m3u8UrlParams = splited[1].split('&')\n                        // urlSearchParams.delete(\"start\")\n                        // urlSearchParams.delete(\"end\")\n                        return splited[0] + \"?\" + m3u8UrlParams.pop()\n                    } else {\n                        const video_free_json = fetch(\"https://www.hxc-api.com/videos/getUrl\", {\n                            headers: {\n                                auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n                                'Content-Type': 'application/json',\n                                'user-agent': PC_UA\n                            },\n                            method: 'POST',\n                            body: params\n                        })\n                        const video_free = JSON.parse(video_free_json)\n                        if (video_free.code === 0) {\n                            return video_free.data.url\n                        } else {\n                            return 'toast://解析失败'\n                        }\n                    }\n                }, id),\n                col_type: 'movie_2',\n                /*extra: {\n                    id: id,\n                }*/\n            })\n            /*tasks.push({\n                func: () => picUrlDecode(item.coverImgUrl, id)\n            })*/\n        })\n    }\n\n    setResult(d);\n    // be(tasks)\n}\n\nconst getList = (type, column, searchText, page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n        \"type\": type,\n        \"searchText\": searchText,\n        \"orderText\": [\n            {\n                \"dir\": \"desc\",\n                \"column\": column\n            }\n        ]\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getList\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst getListByTypeId = (getListByTypeId, searchText, page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n        \"type\": 1,\n        \"typeId\": getListByTypeId,\n        \"searchText\": searchText,\n        \"orderText\": [\n            {\n                \"dir\": \"desc\",\n                \"column\": \"addTimeStamp\"\n            }\n        ]\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getList\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst getFind = (page) => {\n    const params = {\n        \"page\": page,\n        \"length\": 10,\n    }\n\n    const list_json = fetch(\"https://www.hxc-api.com/videos/getFind\", {\n        headers: {\n            auth: \"MmMwNTAxNzBiYWNlZGY0ZDQxZjExN2M0OGQ3NjhiOGZ8NTc0MDQ0NDM=\",\n            'Content-Type': 'application/json',\n            'user-agent': PC_UA\n        },\n        method: 'POST',\n        body: params\n    })\n\n    const list = JSON.parse(list_json)\n\n    if (list.code === 0) {\n        return list.data.list\n    } else {\n        toast(list.msg)\n        return []\n    }\n}\n\nconst picUrlDecode = (pic_url, id) => {\n    const base64PicUrl = CryptoJS.AES.decrypt(fetch(pic_url), CryptoJS.enc.Utf8.parse(\"46cc793c53dc451b\"), {mode: CryptoJS.mode.ECB, padding: CryptoJS.pad.Pkcs7}).toString(CryptoJS.enc.Utf8)\n    updateItem({\n        pic_url: base64PicUrl,\n        extra: {\n            id: id\n        }\n    })\n}\n\nsearchParse()\n","search_url":"hiker://empty$$**$$fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"黑料快递","author":"Senap","version":0,"type":"news","url":"https://v1.jinrishici.com/all","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n'红领巾瓜报@@https://hlj06.com/archives.html@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg95.699pic.com%2Fdesgin_photo%2F40190%2F0831_list.jpg&refer=http%3A%2F%2Fimg95.699pic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672059357&t=11aed00a4c7c38e7f48b7df0f05b1527&&今日看料@@https://kanliao1.one@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fe3f49eaa46b57.cdn.sohucs.com%2F2019%2F11%2F28%2F20%2F35%2FMTAwMTMxXzE1NzQ5NDQ1NTAwOTY%3D.png%3F90835665&refer=http%3A%2F%2Fe3f49eaa46b57.cdn.sohucs.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672058419&t=5120b22b2bf2d22fa3ccb2d44587ecce&&红领巾瓜报@@http://gua123.cc/@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg95.699pic.com%2Fdesgin_photo%2F40190%2F0831_list.jpg&refer=http%3A%2F%2Fimg95.699pic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672059357&t=11aed00a4c7c38e7f48b7df0f05b1527&&黑料正能量@@https://www.fuli99.net/@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2F7do.zuodd.cn%2F7do%2F202205%2F9c86b7bb9116ac2e51cec912a417183e.png&refer=http%3A%2F%2F7do.zuodd.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672022439&t=9b895c08ff7b94d59d0d5c417c7cc7de&&福利Biu@@https://www.fulibiu.com/@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fgdown.baidu.com%2Fimg%2F0%2F512_512%2F92e72b8a21ad9b728fc35702091a340a.jpg&refer=http%3A%2F%2Fgdown.baidu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672022351&t=5da0d9cdced3ac355c71b1fee9934406&&冲哥黑料@@https://www.ntr3.cc@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2F7do.zuodd.cn%2F7do%2F202205%2F9c86b7bb9116ac2e51cec912a417183e.png&refer=http%3A%2F%2F7do.zuodd.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672022439&t=9b895c08ff7b94d59d0d5c417c7cc7de&&黑料不打烊@@https://855.fun@@http://img.is12.net/wp-content/uploads/2022/03/imwprobot-d53525c640064135a883dc4b93ba5525.jpeg&&66福利@@https://66fxw.com/special/fuliba@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Ftva1.sinaimg.cn%2Flarge%2Fa660c8ffly1h06cajkivnj20xm0kuwf6.jpg&refer=http%3A%2F%2Ftva1.sinaimg.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1672022235&t=86fffa6dfa02d0002cf394b38aa95269&&黑料不打烊@@https://www.zztt86.com/@@http://img.is12.net/wp-content/uploads/2022/03/imwprobot-d53525c640064135a883dc4b93ba5525.jpeg&&51吃瓜@@https://www.51cg1.co/@@https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fi0.hdslb.com%2Fbfs%2Farchive%2F84e7de3f155b209c0d327ddf8dc38a1ea0cf6418.jpg&refer=http%3A%2F%2Fi0.hdslb.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1674104195&t=a89bd36854f60990472044f365b0813a&&51吃瓜@@https://htvpz2.51cg5.info/@@https://htvpz2.51cg5.info/usr/themes/Mirages/images/51cg.png';\n\n/*\n备用地址\n\n&&红领巾瓜报@@https://hlj.fun@@http://gua123.cc/usr/logo.png\n\nhttps://hlj04.com/archives.html\n备用图片\nhttps://tva2.sinaimg.cn/large/a660c8ffly1h81e2a3q9tj21hc0u0jvl.jpg\n*/\n\n\n\nvar t=titles.split(\"&&\");\nvar res={};\nvar d=[];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push({\ntitle:hitokoto.content,\ncol_type: 'pic_1_card',\n  pic_url: 'http://api.btstu.cn/sjbz/?lx=dongman?t=' + new Date().getTime()\n});\n\nfor(var i=0;i<t.length;i++)\n{\nvar k=t[i].split(\"@@\");\nif(k.length<3)continue;\nvar r={};\nr.title=k[0];\nr.url=k[1];\nr.pic_url=k[2];\nd.push(r);\n}\nres.data=d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://img.guguzhu.com/d/file/android/ico/2021/07/20/rednjufmj4m.png"},{"last_chapter_rule":"","title":"19+韩国主播","author":"无心","version":0,"type":"video","url":"http://klslh.com/video.html?&txod=fyclass&page=fypage","col_type":"text_1","class_name":"最新&最热&最赞","class_url":"new&hot&digg","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.adex-pt60&&li:has(span)')\nvar lazy = $('').lazyRule(() => {\nreturn 'video://' + input\n})\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'h3&&Text'),\n        desc: \"时长：\"+pdfh(item, 'span&&Text')+\"--\"+pdfh(item, 'p&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href')+lazy,\n            })\n});\nsetResult(d)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://klslh.com/zb_users/theme/youavhub_2022/include/logo.png"},{"last_chapter_rule":"","title":"小白资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.caiji21.com/home/cjapi/klkl/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小白资源"},{"firstHeader":"class","last_chapter_rule":"","title":"YTB视频","author":"","version":1,"type":"other","url":"http://8.210.59.216/api/videosort;get;UTF-8;{User-Agent@ok}","col_type":"icon_5","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: 'http://8.210.59.216/api/videosort/'+data.id+'?orderby=new&page=fypage',\n    //desc: data.tagName,\n    pic_url: data.icopath\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: 'http://8.210.59.216/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f'+'@lazyRule=Text.js:\"http://8.210.59.216/api/index.m3u8?m3u8=\"+JSON.parse(input).rescont.videopath+\";get;UTF-8;{User-Agent@ok}\"',\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"http://8.210.59.216/api/videosort/0?page=fypage&serach=**&uuid=674d0eb77a5ff867&device=0;get;UTF-8;{User-Agent@ok}","group":"⑤①📽️敦伦","detail_col_type":"movie_2","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: 'http://8.210.59.216/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f'+'@lazyRule=Text.js:\"http://8.210.59.216/api/index.m3u8?m3u8=\"+JSON.parse(input).rescont.videopath+\";get;UTF-8;{User-Agent@ok}\"',\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_2","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://img.anfensi.com/upload/2019-6/20196241555551351.png"},{"last_chapter_rule":"","title":"51吃瓜","author":"","version":19,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://hueaz3.51cg3.co/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"汤姆影院","author":"","version":0,"type":"video","url":"https://6039tom.com/fyclass/index_fypage.html[firstPage=https://6039tom.com/fyclass]","col_type":"movie_1_left_pic","class_name":"国产自拍&日韩专区&欧美性爱&成人动漫","class_url":"guochanzipai&yazhouqingse&oumeixingai&chengrendongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.video-list&&.lul&&li');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'p&&Text'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.date&&Text')+'  时长:'+parseDomForHtml(list[j], '.Ntime&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'img&&data-original'),\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"@lazyRule=.js:'https://news-zlplay.9973tom.com'+ request(input).match(/url=http.*?com(.*?tom.m3u8)/)[1]\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://6039tom.com/member/img/touxian.png"},{"last_chapter_rule":"","title":"暖暖","author":"XHH","version":0,"type":"video","url":"https://pp15.xyz/vodtype/fyclass-fypage","col_type":"movie_3","class_name":"无 码&中文av&国产&制服巨乳&欧美&人 妻乱 伦&有 码&日韩&动漫&自拍自慰&3P和sm&口交颜射&写真伦 理","class_url":"1&6&2&7&3&8&4&9&5&10&11&12&13","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];if (MY_PAGE == 1) {\r\n    d.push({\r\n        title: '🔍',\r\n        url: $.toString((r) => {\r\n            putVar('keyword', input);\r\n            return 'hiker://search?rule=' + r + '&s='+input;\r\n        }, MY_RULE.title),\r\n        desc: '搜你想要的...',\r\n        col_type: 'input',\r\n       extra: {\r\n            defaultValue: getVar('keyword', '') || '',\r\n        } \r\n    });\r\n}\nfor (var list of pdfa(getResCode(), 'body&&.video-item')) {\n    d.push({\n        title: pdfh(list, 'img&&alt'),\n        img: pdfh(list, 'img&&src'),\n        desc: pdfh(list, '.model-view&&Text'),\n        url: $(pd(list, 'a&&href')).lazyRule(() => {\n            var html = fetchPC(input);\n            eval(pdfh(html, '.poplayer&&script&&Html'));\n            var url = player_data.url+';{User-Agent@Mozilla/5.0 (Linux；； Android 9；； Redmi K30 Build/PQ3A.190605.003；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36&&Referer@https://www.71rdvm82ocghet1ume.com/&&Accept-Encoding@identity；；q=1, *；；q=0}';\n            return url;\n        }),\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nfor (var list of pdfa(getResCode(), 'body&&.video-item')) {\n    d.push({\n        title: pdfh(list, 'img&&alt'),\n        img: pdfh(list, 'img&&src'),\n        desc: pdfh(list, '.model-view&&Text'),\n        url: $(pd(list, 'a&&href')).lazyRule(() => {\n            var html = fetchPC(input);\n            eval(pdfh(html, '.poplayer&&script&&Html'));\n            var url = player_data.url+';{User-Agent@Mozilla/5.0 (Linux；； Android 9；； Redmi K30 Build/PQ3A.190605.003；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36&&Referer@https://www.71rdvm82ocghet1ume.com/&&Accept-Encoding@identity；；q=1, *；；q=0}';\n            return url;\n        }),\n    });\n}\nsetResult(d)","search_url":"/vodsearch/**----------fypage---/","group":"⑤①📽️敦伦","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://img1.imgtp.com/2023/02/19/cuLcL97o.png"},{"last_chapter_rule":"","title":"HHT996","author":"","version":0,"type":"video","url":"https://hht996.com/vodtypehtml/fyclass/index_fypage.html[firstPage=https://hht996.com/vodtypehtml/fyclass]","col_type":"movie_2","class_name":"国产系列&台湾swag&寻花探花&短视频&3D动漫&网友原创&欧美风情&极品女同&日本系列&福利嫩妹&传媒映画&网曝黑料&cosplay&主播系列&AI换脸&白虎处女","class_url":"21&22&25&27&28&31&33&34&20&23&24&26&29&30&32&35","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'.main-container&&.content-list&&li')) {\n    d.push({\n        title: pdfh(list, 'a&&title'),\n        img: pdfh(list, 'img&&data-original'),\n        desc: pdfh(list, '.score&&Text'),\n        url: pd(list, 'a&&href').replace(\"vodhtml\",\"vodplayhtml\")+'/index_1_1.html'+lazy,\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\n//免嗅\nvar lazy = $('').lazyRule(() => {\n   return unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)\n});\nfor (var list of pdfa(getResCode(),'.box-video-list&&.clearfix&&li:gt(1)')) {\n    d.push({\n        title: pdfh(list, 'a&&title'),\n        img: pdfh(list, 'a&&data-original'),\n        desc: pdfh(list, '.score&&Text'),\n        url: pd(list, 'a&&href')+lazy,\n    });\n}\nsetResult(d)\n\n//   return JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url","search_url":"/search/**-/page/fypage.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://hht996.com/favicon.ico"},{"last_chapter_rule":"","title":"Ukdevilz","author":"","version":15,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://ukdevilz.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":"https://s1.ax1x.com/2023/01/08/pSZaAc6.jpg"},{"last_chapter_rule":"","title":"91porn","author":"天再旦","version":3,"type":"video","url":"https://n.t9k.space/v.php?category=fyclass&viewtype=basic&page=fypage;get;UTF-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:getVar(\"91PORNcookie\")}","col_type":"movie_2","class_name":"首页&91原创&当前最热&本月最热&10分钟以上&20分钟以上&本月收藏&收藏最多&最近加精&高清&本月讨论","class_url":"&ori&hot&top&long&longer&tf&mf&rf&hd&md","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nif (MY_URL.match(/page=1/)) {\nd.push({\n    title: \"搜索\",\n    url:\"'hiker://search?s='+input+'&rule=91porn会员'\",\n    desc:\"请输入搜索关键词\",\n    col_type:\"input\",\n})\n//间隔\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'line_blank'\n});\n};\n\nvar lazy=$('').lazyRule(()=>{\n    let html=request(input);\n    let url=pdfh(html,'#addToFavLink&&#VID&&Text');\n    return 'http://cdn77.91p49.com/m3u8/'+url+'/'+url+'.m3u8'+\"#isVideo=true#\"\n});\n\nvar  list  =  parseDomForArray(html, '.row&&.col-sm-4');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  '.video-title&&Text'),\n               desc: parseDomForHtml(list[j],  '.duration&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url:   parseDom(list[j],'a&&href')+lazy\n    });\n}\nres.data  =  d;\nsetHomeResult(res);","searchFind":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nvar lazy=$('').lazyRule(()=>{\n    let html=request(input);\n    let url=pdfh(html,'#addToFavLink&&#VID&&Text');\n    return 'http://cdn77.91p49.com/m3u8/'+url+'/'+url+'.m3u8'+\"#isVideo=true#\"\n});\n\nvar  list  =  parseDomForArray(html, '.row&&.well-sm');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  '.video-title&&Text'),\n               desc: parseDomForHtml(list[j],  '.duration&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url:   parseDom(list[j],'a&&href')+lazy\n    });\n}\n\nvar  list  =  parseDomForArray(html, '#wrapper&&.errorbox');\nfor (var j in list) {\n    d.push({       \n              title:  \"搜索间隔时间30秒\"\n    });\n}\n\nres.data  =  d;\nsetHomeResult(res);","search_url":"https://up.workgreat11.live/search_result.php?search_id=**&search_type=search_videos&min_duration=&page=fypage;get;UTF-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:getVar(\"91PORNcookie\")}","group":"⑤①📽️敦伦","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"mobile","preRule":"if(!getVar('91PORNcookie')){\nputVar(\"91PORNcookie\",\"CLIPSHARE=58v9hb3375u6nrp3cp4eemumkc; 91username=74f5MC7ufg4UrQsLaZQPs2h8wlL%2F5%2FRmDul3ggnP6R2nataPG1WF; DUID=97f0LzTFqJLsJRM57Khz4FbdW3QthTg7dWDAMEYbIOULAHww; USERNAME=df46nH6827uuNBxYnb8WSJIPAjGh86fuH5NdiZaRQHA6GDAAkZGA; EMAILVERIFIED=yes; school=a3ffpGpvcQBoIQ%2F9mKfWmeN%2FDDMxM1k506gtzZE; level=960cTU7JT2pPfCjAOLJOmHyV1qabion5ZNQnMJLY; video_server=H; country_bean=50ccOdRxbZIBi6b4lO5N98lWd6OmpVWPSoa6uUZB\")\n}","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/9TgaHL5v.jpg"},{"last_chapter_rule":"","title":"91大神","author":"XHH","version":0,"type":"video","url":"https://xn--63u-91dsvodcom-2z4y408c5i8fuw3eipub.xn--91shen-cy3k.com/index-fyclass-fypage.html","col_type":"movie_2","class_name":"全部&仓本c仔&夯先生&秦先生&沙漠110&大闸蟹&JL屌哥&KK哥&轻吻也飘然&猫先生xh98hx&jinx&呆哥&番薯哥&苍先生&Mr.s007&sweattt&吕布&啪神ben&康先生&佛爷&王老板&校长&大黄鸭&波哥&boss&小青蛙&混血哥&天堂&汤先生&夜愿哥&逍遥龙哥&椰子哥&内裤哥&洋米糕&沈先生&约约哥&德莱文&98K&王老吉&四驱兄弟&汝工作室&风月海棠","class_url":"0&1&2&3&4&5&6&7&8&9&10&11&12&13&15&16&17&18&19&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&40&41&42","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".s-tab-main&&li;a&&title;.cover&&style.js:input.split(\"'\")[1];;a&&href.js:input+'@lazyRule=.js:fetch(input,{}).match(/http.*?m3u8/)[0]'","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://xn--63u-91dsvodcom-2z4y408c5i8fuw3eipub.xn--91shen-cy3k.com/favicon.gif"},{"last_chapter_rule":"","title":"香奶儿","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.gdlsp.com/api/json.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=香奶儿"},{"last_chapter_rule":"","title":"sslkn","author":"","version":1,"type":"video","url":"https://a.sslkn.xyz/fyclass/fypage/","col_type":"movie_2","class_name":"1080P&4K&最受欢迎&排行","class_url":"categories/fullhd-1080p&categories/4k-porno&most-popular&top-rated","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar lazy = $('').lazyRule(() => {\nhtml=request(input);\nUrl=html.match(/content_url\" content=\"(http.*?mp4)\"/)[1];\nrnd=html.match(/rnd: '(\\d+)'/)[1];\n        return Url+\"/?rnd=\"+rnd\n});\ntry{\nvar list = parseDomForArray(getResCode(), '.items-list&&.item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')+lazy\r\n  });\r\n}}catch(e){}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar lazy = $('').lazyRule(() => {\nhtml=request(input);\nUrl=html.match(/content_url\" content=\"(http.*?mp4)\"/)[1];\nrnd=html.match(/rnd: '(\\d+)'/)[1];\n        return Url+\"/?rnd=\"+rnd\n});\ntry{\nvar list = parseDomForArray(getResCode(), '.items-list&&.item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')+lazy\r\n  });\r\n}}catch(e){}\r\nsetResult(d);","search_url":"/search/**/fypage/","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2023/02/22/pSj5cE6.png"},{"last_chapter_rule":"","title":"聚直播","author":"小棉袄🌞&Joker","version":9,"type":"live","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request(\"hiker://page/config\")).rule); //getConfig\n\nlet data = [],\n    config = getConfig();\nconfig.data = config.data.filter(v => !v.inVisible);\nif (config.data.length <= 0) {\n    data = $.require('hiker://page/renderSetting').renderSetting();\n} else {\n    let select = getItem(\"live-select\", config.data[0].name),\n        has = config.data.map(i => i.name).includes(select);\n    if (!has) {\n        select = config.data[0].name;\n    }\n\n    data.push({\n        title: '聚直播'.bold() + ' &nbsp &nbsp ' + '⚙ 聚直播设置 ⚙'.small(),\n        col_type: \"avatar\",\n        pic_url: MY_RULE.icon,\n        url: $(\"hiker://empty#noLoading#\").rule(() => {\n            addListener('onClose', 'refreshPage()')\n            setResult($.require('hiker://page/renderSetting').renderSetting())\n        })\n    })\n\n    data.push({\n        title: '搜索',\n        desc: '请输入搜索关键词',\n        extra: {\n            defaultValue: getVar('search_key', ''),\n            onChange: 'putVar(\"search_key\",input)'\n        },\n        col_type: 'input',\n        url: $.toString(() => {\n            return 'hiker://search?rule=' + getMyVar('title') + '&s=' + getVar('search_key', '')\n        })\n    })\n\n\n\n    for (source of config.data) {\n        data.push({\n            title: source.name == select ? \"““””<span style='color: #19B89D'>\" + select + \"</span>\" : source.name,\n            col_type: \"scroll_button\",\n            url: $('#noLoading#').lazyRule((a) => {\n                setItem(\"live-select\", a);\n                setItem('selectGroup', '');\n                refreshPage();\n                return \"hiker://empty\"\n            }, source.name)\n        })\n    }\n\n    data.push({\n        col_type: 'blank_block'\n    })\n\n    for (source of config.data) {\n        if (source.name == select) {\n            try {\n                let items = $.require('hiker://page/renderData').renderLiveData(source.url);\n                let groups = Object.keys(items);\n                //groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n                let selectGroup = getItem('selectGroup', groups[0]);\n                if (selectGroup == \"\" || !groups.includes(selectGroup)) selectGroup = groups[0];\n                groups.forEach((group) => {\n                    if (group) {\n                        data.push({\n                            title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                            url: $('#noLoading#').lazyRule((group) => {\n                                setItem('selectGroup', group);\n                                refreshPage();\n                                return 'hiker://empty'\n                            }, group),\n                            col_type: 'scroll_button',\n                            extra: {\n                                lineVisible: false\n                            }\n                        })\n                    }\n                })\n                \n                for (let title in items[selectGroup]) {\n                    data.push({\n                        title: title,\n                        url: $().lazyRule((sourceurl,selectGroup,title) => {\n                            let items = $.require('hiker://page/renderData').renderLiveData(sourceurl);\n                            let surls = items[selectGroup][title].url;\n                            let sheaders = items[selectGroup][title].headers;\n                            for (let groupi in items){\n                                let group = items[groupi];\n                                if(!group) continue;\n                                for (let ititle in group){\n                                    if(ititle == title && !!group[ititle]){\n                                        let urls = group[ititle].url;\n                                        let headers = group[ititle].headers;\n                                       surls = surls.concat(urls);\n                                       sheaders = sheaders.concat(headers);\n                                    }\n                                }\n                            }\n                            surls = Array.from(new Set(surls));\n                            sheaders = Array.from(new Set(sheaders));\n                            return JSON.stringify({\n                                urls: surls,\n                                headers: sheaders\n                            })\n                        },source.url,selectGroup,title),\n                        //col_type: 'text_3',\n                        img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n                    })\n                }\n            } catch (e) {\n                data.push({\n                    title: \"数据加载失败\\n\" + JSON.stringify(e),\n                    col_type: \"long_text\"\n                })\n            }\n            break;\n        }\n    }\n\n\n}\nsetResult(data);","searchFind":"js:\neval(JSON.parse(request(\"hiker://page/config\")).rule);\nlet config = getConfig();\nlet rules = config.data.map((source) => {\n    return {\n        title: source.name,\n        search_url: 'hiker://empty?key=**',\n        searchFind: 'js:' + $.toString((url, rule_title) => {\n            let d = [],\n                key = getParam('key');\n            let items = $.require('hiker://page/renderData?rule=' + rule_title).renderLiveData(url);\n            for (let group in items) {\n                for (let title in items[group]) {\n                    if (title.indexOf(key) >= 0 || title.toLowerCase().indexOf(key) >= 0) {\n                        d.push({\n                            title: title,\n                            url: JSON.stringify({\n                                urls: items[group][title].url,\n                                headers: items[group][title].headers\n                            })\n                        })\n                    }\n                }\n            }\n            setResult(d);\n        }, source.url, getMyVar('title'))\n    };\n})\nsetResult([{\n    title: \"点我开始聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"key\"),\n    extra: {\n        rules: $.toString((rules) => {\n            return JSON.stringify(rules)\n        }, rules)\n    }\n}])","search_url":"hiker://empty?key=**","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('title',MY_RULE.title);","pages":"[{\"col_type\":\"movie_3\",\"name\":\"加载数据\",\"path\":\"config\",\"rule\":\"function getConfig() {\\n    try {\\n        let config = fetch(\\\"hiker://files/rules/live/config.json\\\");\\n        if (!config || config == \\\"\\\") {\\n            return {\\n                data: [],\\n                version: 0\\n            }\\n        } else {\\n            return JSON.parse(config)\\n        }\\n    } catch (e) {\\n        try {\\n            toast(\\\"配置文件格式有误\\\")\\n        } catch (e) {}\\n        return {\\n            data: [],\\n            version: 0\\n        }\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"batchIm\",\"rule\":\"function batchImport(input, rule) {\\n    input = input.trim();\\n    if (input.length < 3 || input[0] != \\\"{\\\") {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let im = JSON.parse(input);\\n    if (im.data == null || im.data.length < 1) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    eval(JSON.parse(request(\\\"hiker://page/config?rule=\\\" + rule)).rule);\\n    let config = getConfig();\\n    let count = 0;\\n    let all = config.data.map(it => it.url + \\\"&&&\\\").join();\\n    for (let i of im.data) {\\n        if (all.indexOf(i.url + \\\"&&&\\\") >= 0) {\\n            //重复的不要\\n            continue;\\n        }\\n        count++;\\n        config.data.push(i)\\n    }\\n    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n    refreshPage();\\n    return \\\"toast://已导入\\\" + count + \\\"条订阅源\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"直播数据\",\"path\":\"renderData\",\"rule\":\"function renderLiveData(url) {\\n    let m3u = \\\"\\\";\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        m3u = fetch(url);\\n    } else {\\n        let interval = Number(getItem('interval', '24')),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try {\\n            remoteData = fetchCache(url, interval, {\\n                timeout: 50000\\n            });\\n        } catch (e) {}\\n        if (!remoteData.includes('http') || remoteData.includes('<body>')) { \\n            log('更新失败');\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData);\\n            m3u = oldData;\\n        } else {\\n            m3u = remoteData;\\n        }\\n    }\\n\\n    let mode =  m3u.indexOf('#EXTM3U') == 0 , re;\\n    if(mode){\\n        re = /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g;\\n    }else{\\n        re = /()(?:\\\\B\\\\$c_start|\\\\B#{1,2})?(.*?),?(##|头#|\\\\$c_end|,?#genre#|(?:http|rtmp)[^\\\\s]*)/g;\\n    }\\n        \\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (i[1].match(/group-title=\\\"(.*?)\\\"/) || [null, group])[1];\\n        } else if (['#genre#','##','头#','$c_end'].includes(i[3])) {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].includes('#') ? i[3].split('#') : [i[3]],\\n            headers = [];\\n        if(!url[url.length-1]) url.pop();\\n        url.forEach((v,index,array)=>{\\n            if(/;\\\\{(.*)\\\\}/.test(v)){\\n                let obj = {},\\n                     con = v.match(/;\\\\{(.*)\\\\}/)[1],\\n                     arr = con.split('&&');\\n                arr.forEach((i)=>{\\n                    let [key,value] = i.split('@');\\n                    obj[key] = value.replace(/;/g,'；；');\\n                })\\n                array[index] = v.match(/^([^;]*);\\\\{/)[1]\\n                headers.push(obj);\\n            }else{\\n                headers.push({'User-Agent' : MOBILE_UA.replace(/;/g,'；；')});\\n            }\\n            array[index] = array[index].replace(/;/g,'；；')+'#isVideo=true#';\\n        });\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title].url = items[group][title].url.concat(url);\\n                items[group][title].headers = items[group][title].headers.concat(headers);\\n            } else {\\n                items[group][title] = {url:url,headers:headers};\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = {url:url,headers:headers};\\n        };\\n    }\\n    return items;\\n}\\n\\n$.exports = {\\n    renderLiveData: renderLiveData\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"设置页\",\"path\":\"renderSetting\",\"rule\":\"function renderSetting() {\\n    function getColoredText(text) {\\n        return '““””<span style=\\\"color: #19B89D\\\">' + text + '</span>';\\n    }\\n    const d = [];\\n    let interval = getItem('interval', '24');\\n    d.push({\\n        title: interval == -1 ? '已禁止自动更新'.fontcolor(\\\"#19B89D\\\").bold() : ('更新间隔:' + interval + '小时').fontcolor(\\\"#19B89D\\\").bold(),\\n        url: $(interval, '输入n为正整数时，每隔n小时自动更新\\\\n为0时，每次打开都会更新\\\\n为-1时，禁止自动更新').input(() => {\\n            if (parseInt(input) >= -1) {\\n                setItem('interval', input);\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        pic_url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fis4.mzstatic.com%2Fimage%2Fthumb%2FPurple3%2Fv4%2Fdf%2Ff6%2Fda%2Fdff6da83-47d7-9cb6-2398-1919c13837b4%2Fmzl.kgmnwodo.png%2F0x0ss-85.jpg&refer=http%3A%2F%2Fis4.mzstatic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638629349&t=2f6d967185fe2b9c54e8b230eb83e66c',\\n        col_type: \\\"avatar\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"big_blank_block\\\"\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"新建订阅\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        desc: \\\"请输入直播源订阅地址\\\",\\n        url: $('', '请输入订阅地址').input((rule) => {\\n            if (input == \\\"\\\") {\\n                return \\\"toast://不能为空\\\"\\n            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                return \\\"toast://链接格式有误\\\"\\n            } else {\\n                return $('',\\\"请输入订阅标题\\\").input((url, rule) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/config?rule=\\\" + rule)).rule);\\n                    let config = getConfig();\\n                    config.data.push({\\n                        name: input,\\n                        url: url\\n                    });\\n                    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                    refreshPage();\\n                    return \\\"toast://已保存\\\";\\n                }, input, rule)\\n            }\\n        }, getMyVar('title'))\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"导入订阅\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $('','支持原始数据和云剪贴板分享链接').input((rule) => {\\n            eval(JSON.parse(request(\\\"hiker://page/batchIm?rule=\\\" + rule)).rule);\\n            if (input.startsWith('聚直播分享##')) {\\n                input = parsePaste(input.split('##\\\\n')[1]);\\n            }\\n            return batchImport(input, rule);\\n        }, getMyVar('title'))\\n    });\\n    d.push({\\n        title: getColoredText(\\\"分享订阅\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $([\\\"原始数据\\\", \\\"云剪贴板\\\",\\\"云口令\\\"], 3).select(() => {\\n            return $('确定导出？\\\\n(禁用订阅不会导出)').confirm((type) => {\\n                eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                config = getConfig();\\n                config.data = config.data.filter(v => !v.inVisible);\\n                if (type == \\\"云剪贴板\\\") {\\n                    var data = '聚直播分享##\\\\n' + sharePaste(JSON.stringify(config));\\n                }else if(type == \\\"云口令\\\"){\\n                    var data = '聚直播分享,复制后打开软件即可导入\\\\n' + sharePaste(JSON.stringify(config)) + '@import=js:eval(JSON.parse(fetch(\\\"hiker://page/cloud?rule=聚直播\\\")).rule)';\\n                } else {\\n                    var data = JSON.stringify(config);\\n                }\\n                return \\\"copy://\\\" + data;\\n            }, input)\\n        })\\n    });\\n    d.push({\\n        title: getColoredText(\\\"编辑全部\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"editFile://hiker://files/rules/live/config.json\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n    eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n    config = getConfig();\\n    let editMode = getMyVar('editMode', '启用禁用');\\n    ['启用禁用', '删除订阅', '重新排序', '编辑订阅','清除缓存'].forEach((v) => {\\n        d.push({\\n            title: v == editMode ? '““””' + v.bold().fontcolor('#19B89D') : v,\\n            url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n                putMyVar('editMode', v)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v),\\n            col_type: 'scroll_button'\\n        })\\n    });\\n    config.data.forEach((v, i) => {\\n        let el = {\\n            title: v.name,\\n            col_type: \\\"text_3\\\"\\n        }\\n        switch (editMode) {\\n            case '启用禁用':\\n                el.title = (v.inVisible ? '🔴 ' : '🟢 ') + el.title\\n                el.url = $('#noLoading#').lazyRule((i) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                    config = getConfig();\\n                    config.data[i].inVisible = !config.data[i].inVisible;\\n                    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                    refreshPage(false);\\n                    return 'hiker://empty'\\n                }, i)\\n                break\\n            case '删除订阅':\\n                el.url = \\\"confirm://确认删除“\\\" + v.name + \\\"”订阅？.js:\\\" + $.toString((i) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                    config = getConfig();\\n                    config.data.splice(i,1);\\n                    writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                    refreshPage(false);\\n                    return \\\"toast://已删除\\\";\\n                }, i)\\n                break\\n            case '重新排序':\\n                let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n                el.title = (sortFlag == i ? '🔃  ' : '') + el.title\\n                if (sortFlag == -1)\\n                    el.url = $('#noLoading#').lazyRule((i) => {\\n                        putMyVar('sortFlag', i.toString())\\n                        refreshPage(false)\\n                        return 'toast://选择要移动到的位置'\\n                    }, i)\\n                else\\n                    el.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                        eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                        config = getConfig();\\n                        config.data.splice(newIndex, 0, config.data.splice(oldIndex, 1)[0])\\n                        writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                        putMyVar('sortFlag', '-1')\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, sortFlag, i)\\n                break\\n            case '编辑订阅':\\n                let arr = ['编辑名称', '编辑地址', '编辑内容'];\\n                el.url = $(arr, 3).select((v, i) => {\\n                    if (input == '编辑名称') {\\n                        return $(v.name, '输入新名称').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                            config = getConfig();\\n                            if (input) {\\n                                config.data[i].name = input\\n                                writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            } else {\\n                                return 'toast://不能为空'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑地址') {\\n                        return $(v.url, '输入新地址').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/config\\\")).rule);\\n                            config = getConfig();\\n                            if (input == \\\"\\\") {\\n                                return \\\"toast://不能为空\\\"\\n                            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                                return \\\"toast://链接格式有误\\\"\\n                            } else {\\n                                config.data[i].url = input\\n                                writeFile(\\\"hiker://files/rules/live/config.json\\\", JSON.stringify(config));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑内容') {\\n                        if (v.url.startsWith('file://') || v.url.startsWith('hiker://files')) {\\n                            return 'editFile://' + v.url;\\n                        }\\n                        return 'editFile://hiker://files/libs/' + md5(v.url) + '.js'\\n                    }\\n                }, v, i);\\n                break;\\n            case '清除缓存':\\n                el.url = $('确定清除“' + v.name + '”订阅缓存？\\\\n(可立即更新)').confirm((url)=>{\\n                    deleteCache(url);\\n                    return 'toast://清除成功'\\n                },v.url)\\n                break;\\n        }\\n        d.push(el)\\n    });\\n    return d;\\n}\\n\\n$.exports = {\\n    renderSetting: renderSetting\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"云口令\",\"path\":\"cloud\",\"rule\":\"eval(JSON.parse(request(\\\"hiker://page/batchIm?rule=聚直播\\\")).rule);\\nlet content = parsePaste(input);\\nbatchImport(content, \\\"聚直播\\\");\"}]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fis4.mzstatic.com%2Fimage%2Fthumb%2FPurple3%2Fv4%2Fdf%2Ff6%2Fda%2Fdff6da83-47d7-9cb6-2398-1919c13837b4%2Fmzl.kgmnwodo.png%2F0x0ss-85.jpg&refer=http%3A%2F%2Fis4.mzstatic.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638629349&t=2f6d967185fe2b9c54e8b230eb83e66c"},{"last_chapter_rule":"","title":"范奇艺","author":"古月","version":0,"type":"video","url":"hiker://empty##https://www.fam99buy.info/index.php/&m=vodtype/mdapp4/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n        return 'video://'+input\n})\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body--.menus,-1&&.menus'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&.menus&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        //.replace('vodtype', 'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.news_list_list&&li')\nfor (var j in list) {\n    var img = pd(list[j], 'img&&src') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.fa&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') .replace('voddetail','vodplay').replace(/mdapp(\\d+)/,'mdapp$1-1-1') + lazy,\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n        return 'video://'+input\n})\nvar html = getResCode()\r\nvar list = pdfa(html, '.news_list_list&&li')\nfor (var j in list) {\n    var img = pd(list[j], 'img&&src') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.fa&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') .replace('voddetail','vodplay').replace(/mdapp(\\d+)/,'mdapp$1-1-1') + lazy,\n        extra: {\n            img: img\n        }\n    })\n}\r\nsetResult(d)","search_url":"https://www.fam99buy.info/index.php/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"XNXX","author":"Timik","version":1,"type":"video","url":"https://xnxx.health/search/fyAll/fypage[firstPage=https://xnxx.health/search/fyAll]","col_type":"movie_2","class_name":"巨屌&乱伦&巨乳&人妻&青年&潮吹&小个子&强奸&爆菊&内射","class_url":"big_cock&familial_relations&big_tits&japanese+wife&teen&squirting&small+tits&rough&anal-creampie&creampie","area_name":"亚洲&印度&阿拉伯&日本&国产","area_url":"asian_woman&indian&arab&japanese&china","sort_name":"","year_name":"未知&bdsm&调教&高潮&肛交&丝袜&可爱&飞机&熟女&bbc-pie","sort_url":"","year_url":"undefined&bdsm&femdom&orgasm&anal&stockings&cute&handjob&japanese+milf&bbc-pie","find_rule":"js:\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.thumb-under&&a&&Text'),\n       desc: parseDomForHtml(list[j], '.metadata&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'.thumb-under&&a&&href')\n  });\n}}catch(e){}\nsetResult(d);","searchFind":"js:\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),\n       desc: parseDomForHtml(list[j], 'span&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n       url: parseDom(list[j],'a&&href')\n  });\n}}catch(e){}\nsetResult(d);","search_url":"https://xnxx.health/?k=**&quality=hd&p=fypage@-1@*0@","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};var d = [];\nvar code =getResCode();\nvar url = code.split(\"html5player.setVideoHLS('\")[1].split(\"'\")[0];\nvar hls = request(url).match(/hls-.*?m3u8/g);\nJSON.stringify(hls.sort(function(a,b){return b.match(/\\d+/) - a.match(/\\d+/)}));\nfor (var j in hls) {\nd.push({\n    title:hls[j].split('-')[1].replace('.m3u8',''),\n    url:url.split('hls.')[0]+hls[j],\n    col_type:'text_4'\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/JXfVJjL7.png"},{"last_chapter_rule":"","title":"博启TV","author":"鸠魁","version":0,"type":"other","url":"https://www.boccibag.cc/index.php/vodtype/fyclass-fypage.html","col_type":"movie_2","class_name":"国产传媒&国产视频&日本视频&韩国&欧美&动漫&麻豆&91制片厂&天美&蜜桃&皇家&星空&JD&乐播&茄子&性世界&兔子先生&杏吧&玩偶姐姐&起点&SA&萝莉社&PsychoPorn&糖心&葫芦影业&果冻\n&有码视频&无码视频&中文字幕&熟女人妻&强奸乱伦\n&巨乳美乳&制服师生&丝袜美腿&少女萝莉&重口色情&swag&明星换脸&三级视频&人兽&人妖&同志","class_url":"160&32&10&33&34&42&161&162&163&164&165&166&167&168&169&170&171&172&173&174&175&176&177&178&179&180\n&47&48&49&82&83&84&85&86&87&88&89&79&80&36&45&53","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n var urls = _getUrls();\n for (var i in urls) {\n if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n fy_bridge_app.log(urls[i]);\n return urls[i]\n }\n }\n});\nvar list = parseDom(html, '.auto-fit-columns&&Html').match(/<a[\\s\\S]*?<\\/a/g);\nfor (var j = 0; j < list.length; j++) { \n d.push({ \n title: parseDomForHtml(list[j], '.detail&&title'),\n desc: parseDomForHtml(list[j], '.coverbox&&Text'),\n pic_url: parseDom(list[j], '.img-box&&style'),\n url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' +_x5,\n \n });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDom(html, '.auto-fit-columns&&Html').match(/<a[\\s\\S]*?<\\/a/g);\nfor (var j = 0; j < list.length; j++) { \n d.push({ \n title: parseDomForHtml(list[j], '.detail&&title'),\n desc: parseDomForHtml(list[j], '.coverbox&&Text'),\n pic_url: parseDom(list[j], '.img-box&&style'),\n url: parseDom(list[j],'a&&href')\n \n });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.boccibag.cc/index.php/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n var urls = _getUrls();\n for (var i in urls) {\n if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n fy_bridge_app.log(urls[i]);\n return urls[i]\n }\n }\n});\n d.push({ \n title:'立即播放',\n url: 'x5Rule://' + MY_URL+ '@' + _x5,\n\n });\n\nres.data = d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.boqitv1.xyz/template/boqi/icon/favicon-32x32.png"},{"last_chapter_rule":"","title":"AV淘宝","author":"发粪涂墙&老王","version":0,"type":"other","url":"http://{host}/fyAll/recent/fypage/.js:input.replace('recent/1/','').replace('http://{host}',getVar('avtb'))","col_type":"movie_3","class_name":"首页&国产&巨⁡乳&HD高清&强⁡奸&偷⁡情","class_url":"&guochan&juru&hd&rapping&luanlun","area_name":"少女&美女&学生妹&素人&熟女&主播","area_url":"babe&meinv&schoolgirl&suren&renqi&zhubo","sort_name":"","year_name":"亚洲&丝袜&户外&制服&潮⁡吹&长视频","sort_url":"","year_url":"asian&siwa&huwai&zhifu&chaochui&duration","find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = pdfa(request(input), 'body&&source')\n    var urls = html.map(video => pdfh(video, 'source&&src'))\n    var names = html.map(video => pdfh(video, 'source&&label'))\n    return JSON.stringify({\n        urls: urls,\n        names: names\n    })\n});\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.video');\r\nfor (var j in list) {\r\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       //desc: parseDomForHtml(list[j], '.video-view&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+lazy,\r\n  });\r\n}\r\nsetResult(d)","searchFind":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = pdfa(request(input), 'body&&source')\n    var urls = html.map(video => pdfh(video, 'source&&src'))\n    var names = html.map(video => pdfh(video, 'source&&label'))\n    return JSON.stringify({\n        urls: urls,\n        names: names\n    });\n});\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Lsp\");\nautoPage(getResCode())","search_url":"http://{host}/search/video/？？s=**＆＆page=fypage.js:input.replace('http://{host}',getVar('avtb'))","titleColor":"#fff20c00","group":"⑤①📽️敦伦","detail_col_type":"text_2","detail_find_rule":"","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"auto","preRule":"if (!getVar('avtb')) {\n/*\n    let host = JSON.parse(request('https://jump99.class301tz.com:3323/?u=https://www.avtb2271.com/&p=/', {\n        redirect: false,\n        withHeaders: true\n    })).headers.location[0];\n*/\nvar i = 4\neval(request('http://avtbdizhi.cc/').match(/var url[\\s\\S]*?strURL\\;/)[0])\nlet host = url\n    putVar('avtb', host);\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"淫窝","author":"道长","version":1,"type":"video","url":"hiker://empty##https://sewozyapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=淫窝"},{"last_chapter_rule":"","title":"奶多多","author":"喵喵","version":0,"type":"video","url":"hiker://empty##host/index.php/vod/type/id/1/page/fypage.html","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1].replace('host',getMyVar('realUrl'));\nlet ck_id='cookie.seku';\nlet cookie=获取ck(ck_id);\nputMyVar('cookie',cookie);\n//log(cookie);\nlet parStr=\".listindex&&.ListPicM;.name&&Text;img&&src;;a&&href\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(page>1&&!/-(\\d+)\\.html/.test(true_url)){\n    true_url=true_url.replace(/(\\d+)\\.html/,page+'.html')\n}\n//log(true_url);\nvar 关闭折叠=true;\nvar html=获取源码(true_url);\n//log(html);\nif(!/滑动验证/.test(html)&&html.length>200){\nlet cates=打造动态分类([{\n    一级分类: 'body&&.gnav__list',\n    子分类: 'ul&&li:gt(0):lt(12)',\n    分类链接: {\n            二次处理名称(title) {\n                return title.replace(/(\\d+)/g, \"\")\n            }\n        },\n}]);\n设置(cates);\n\nvar lazy=config.lazy;\nevalPrivateJS('xLtLqJHNPLd4W8gUvxxiiwTfCfD6XzJWFY6ip1usHuE=');\n一级(parStr,false,false,true,html);\n}else{\n    道长验证码(null,true_url,'',ck_id);\n}","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');\nvar lazy = `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url)).replace('�;C���','').replace('��','')`\ninitConfig({\n    lazy:lazy\n});\n\nlet html=request('https://www.meet3dtv.top',{\n    withHeaders:true\n});\nlet realUrl=JSON.parse(html).url;\nlog('最新域名为:'+realUrl);\nputMyVar('realUrl',realUrl);","pages":"[]","proxy":"","icon":"https://www.meet3dtv.top/upload/site/20220712-1/07c487a00191761a21b89edfc3f81590.png"},{"last_chapter_rule":"","title":"NSFW","author":"TyrantGenesis","version":1,"type":"video","url":"https://nsfwr34.com/fyclass/?orderby=fyarea&order=fysort&page=fypage","col_type":"movie_3","class_name":"4K&竖屏&FUTA&Overwatch&Fortnite Rule 34&Final Fantasy&Cyberpunk 2077&Tomb Raider&Dead or Alive&League of legends&Genshin impact&The Witcher&Resident Evil&Nier Automata&Apex Legends&Elden Ring","class_url":"categories/4k&categories/vertical-videos&video_tag/futa&video_tag/overwatch-porn&video_tag/fortnite-rule-34&video_tag/final-fantasy&video_tag/cyberpunk2077-porn&video_tag/tomb-raider-porn&video_tag/dead-or-alive-porn&video_tag/league-of-legends-porn&video_tag/genshin-impact-porn&video_tag/the-witcher-porn&video_tag/resident-evil-porn&video_tag/nier-automata-porn&video_tag/apex-legends-porn&video_tag/elden-ring-porn","area_name":"最新&观看量&喜爱&标题&评论数","area_url":"date&post_view&post_like&title&comment_count","sort_name":"倒序&正序","year_name":"","sort_url":"DESC&ASC","year_url":"","find_rule":".post-grid&&.post-body;\n.post-meta&&a&&Text;\nimg&&src;\n.video-length&&Text;\na&&href.js:input+`@lazyRule=.js:fetch(input).match(/m3u8/) ? fetch(input).match(/src.*?(https.*?playlist.m3u8)/)[1] : fetch(fetch(input).match(/iframe src=\"(.*?)\" loading/)[1]).match(/source type.*src=\"(.*?)\"/)[1]`","searchFind":".post-grid&&.post-body;\n.post-meta&&a&&Text;\na&&href.js:input+`@lazyRule=.js:fetch(input).match(/m3u8/) ? fetch(input).match(/src.*?(https.*?playlist.m3u8)/)[1] : fetch(fetch(input).match(/iframe src=\"(.*?)\" loading/)[1]).match(/source type.*src=\"(.*?)\"/)[1]`;\n.video-length&&Text;\n.post-meta__date&&Text;\nimg&&src;","search_url":"https://nsfwr34.com/?post_type=video&s=**&search=&search_filter=post_types&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://nsfwr34.com/wp-content/uploads/2022/01/cropped-1f51e-150x150.png"},{"last_chapter_rule":"","title":"茄子视频","author":"","version":0,"type":"video","url":"http://android128877.com//App/Movie/movieList?JsonBody={\"classifyId\":fyAll,\"sort\":\"time\",\"pageNo\":fypage,\"pageSize\":20};POST;utf8;{User-Agent@VOG-AL00(Android/7.1.2) (com.auberginevideo.app/9.9.9) Weex/0.26.0 800x1280&&Host@android128877.com}","col_type":"movie_3","class_name":"全部&自拍&无码&有码&服装&欧美&中文&网红&动漫&VR","class_url":"&1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult(JSON.parse(getResCode()).data.map(\n    data => ({\n        title: data.name,\n        url: data.video_url+'@lazyRule=.js:input',\n        desc: data.updatetime,\n        img: data.cover\n    })\n))","searchFind":"js:\nsetResult(JSON.parse(getResCode()).data.map(\n    data => ({\n        title: data.name,\n        url: data.video_ur,\n        desc: data.updatetime,\n        img: data.cover\n    })\n))","search_url":"http://android128877.com/App/Movie/movieList?JsonBody={\"tagId\":\"\",\"keywords\":\"**\",\"pageNo\":fypage,\"pageSize\":20};POST;utf8;{User-Agent@VOG-AL00(Android/7.1.2) (com.auberginevideo.app/9.9.9) Weex/0.26.0 800x1280&&Host@android128877.com}","titleColor":"#fff20c00","group":"⑤①📽️敦伦","detail_col_type":"text_4","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2023/01/08/pSZa7DO.png"},{"firstHeader":"class","last_chapter_rule":"","title":"AV女仆","author":"","version":0,"type":"video","url":"http://134.122.134.39:10101/","col_type":"text_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\n\n    d.push({   \n        title: \"搜索\",\n           url: \"'hiker://search?s='+input+'&rule='+ MY_RULE.title\",\n           desc: \"请输入搜索关键词\",\n           col_type: \"input\",\n    })\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'line_blank'\n    });\nvar list = parseDomForArray(html,'.web_list.tips&&a');\r\nfor (var j in list) {\r\n d.push({\r\n title: parseDomForHtml(list[j], 'a&&Text'),\r\n url: parseDom(list[j], 'a&&href').replace('avnvpu.html?wd=','')+'avnvpu/page/fypage.html'\r\n });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.videos&&li');\nfor (var j in list) {\n d.push({\n title: parseDomForHtml(list[j], 'a&&Text'),\n desc:parseDomForHtml(list[j], '.video-overlay&&Text'),\n pic_url: parseDomForHtml(list[j], 'img&&src'),\n url: parseDom(list[j], 'a&&href')\n });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://134.122.134.39:10101/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"movie_3","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'.videos&&li');\r\nfor (var j in list) {\r\n d.push({\r\n title: parseDomForHtml(list[j], 'a&&title'),\n desc:parseDomForHtml(list[j], '.video-overlay&&Text'),\r\n pic_url: parseDomForHtml(list[j], 'img&&src'),\r\n url: parseDom(list[j], 'a&&href')+ '@lazyRule=#a1&&script&&Html.js:eval(input);player_data.url',\n col_type:'movie_3_marquee'\r\n });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res ={};\nvar result = [];\nvar html = parseDom(getResCode(),'html&&Html');\nvar url = html.match(/http.*?m3u8/)[0];\nresult.push({\n title:\"立即播放\",\n url:url.replace(/\\\\/g,\"\"),\n col_type:'text_center_1'\n});\nres.data=result;\nsetHomeResult(res);","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"麻豆","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji04.com/home/cjapi/cfc7/mc10/vod/json#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"精工厂资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://jgczyapi.com/home/cjapi/kld2/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=精工厂资源"},{"last_chapter_rule":"","title":"瓜果聚合","author":"@LoyDgIk","version":0,"type":"video","url":"hiker://empty#fypage","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet urlMap = $.require(\"hiker://page/urlSet.js\");\nlet mapi = Number(getMyVar(\":mapi\", \"0\"));\nlet img = [];\nlet tUrl = urlMap[mapi].url;\nlet hUrl = tUrl + \"api/videosort/\";\nlet tag = [{\n    name: \"全部\",\n    id: 0\n}];\nlet iTag = getMyVar(\":iTag\", \"\");\nif (iTag) {\n    iTag = JSON.parse(iTag);\n} else {\n    try {\n        iTag = JSON.parse(fetch(hUrl, {\n            headers: {\n                'User-Agent': 'okhttp/3.12.1'\n            }\n        })).rescont;\n        putMyVar(\":iTag\", JSON.stringify(iTag));\n    } catch (e) {\n        iTag = [];\n    }\n}\ntag = tag.concat(iTag);\n\nlet tagi = Number(getMyVar(\":tagi\", \"0\"));\nlet tTagId = tag[tagi].id;\nconst layout = [];\nif (MY_PAGE === 1) {\n    layout.push({\n        title: \"站点：\",\n        url: \"hiker://empty\",\n        col_type: \"scroll_button\"\n    });\n    urlMap.forEach((item, i) => {\n        layout.push({\n            title: mapi === i ? \"““””\" + item.name.fontcolor(\"#ff01bfa\") + \"\" : item.name,\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar(\":mapi\", \"\" + i);\n                clearMyVar(\":iTag\");\n                clearMyVar(\":tagi\");\n                refreshPage();\n                return \"hiker://empty\";\n            }, i),\n            col_type: \"scroll_button\"\n        });\n    });\n    layout.push({\n        col_type: \"blank_block\"\n    });\n    layout.push({\n        title: \"分类：\",\n        url: \"hiker://empty\",\n        col_type: \"scroll_button\"\n    });\n    tag.forEach((item, i) => {\n        layout.push({\n            title: tagi === i ? \"‘‘\" + item.name + \"’’\" : item.name,\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar(\":tagi\", \"\" + i);\n                refreshPage();\n                return \"hiker://empty\";\n            }, i),\n            col_type: \"scroll_button\"\n        });\n    });\n    layout.push({\n        url: '\"hiker://search?s=\"+input',\n        desc: \"搜你想要的......\",\n        title: \"搜索\",\n        col_type: \"input\",\n        extra: {\n            rules: $.toString((urlMap, mapi) => {\n                let arr1 = [];\n                urlMap.unshift(urlMap.splice(mapi, 1)[0]);\n                for (let i = 0; i < urlMap.length; i++) {\n                    arr1.push({\n                        \"title\": urlMap[i].name,\n                        \"search_url\": \"hiker://empty?searchTerms=**&page=fypage&index=\" + i,\n                        \"searchFind\": \"js: $.require('hiker://page/Search.view?rule='+MY_RULE._title);\"\n                    });\n                }\n                return JSON.stringify(arr1);\n            }, urlMap, mapi),\n            defaultValue: getMyVar(\"searchKey\", \"\"),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    });\n}\n\nlet lazyLoadImage = (pic_url, id) => {\n    let img = \"data:image/png;base64,/9j\" + request(pic_url).split(\"/9j\")[1];\n    updateItem({\n        img: img,\n        extra: {\n            id: id\n        }\n    });\n}\nlet lazyLoadUrl = $(\"\").lazyRule(() => {\n    var url = JSON.parse(fetch(input, {\n        headers: {\n            'User-Agent': 'Documents/HttpCanary/3.3.6'\n        }\n    })).rescont.videopath;\n    return url.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com') + \";get;UTF-8;{User-Agent@okhttp/3.12.1}\"\n});\nlet data = fetch(buildUrl(hUrl + tTagId, {\n    orderby: \"new\",\n    page: MY_PAGE\n}), {\n    headers: {\n        'User-Agent': 'okhttp/3.12.1'\n    }\n});\ndata = JSON.parse(data).rescont.data;\n\ndata.forEach(item => {\n    let desc = \"\";\n    if (item.authername) {\n        desc += \"类型：\" + item.authername;\n    }\n    if (item.playtimes) {\n        desc += (desc ? \"\\n\" : \"\") + \"播放时长：\" + item.playtimes;\n    }\n    if (item.updated_at) {\n        desc += (desc ? \"\\n\" : \"\") + \"更新时间：\" + item.updated_at;\n    }\n    let pic = \"\";\n    let col_type = \"movie_2\";\n    if (item.coverpath) {\n        pic = item.coverpath;\n    } else if (item.coverbase64 && item.coverbase64.url) {\n        pic = \"https://www.helloimg.com/images/2022/08/29/ZzbcFr.gif\";\n        img.push({\n            func: () => lazyLoadImage(item.coverbase64.url, item.id)\n        });\n    }\n    layout.push({\n        title: item.title,\n        pic_url: pic,\n        desc: desc,\n        col_type: col_type,\n        url: tUrl + \"api/videoplay/\" + item.id + \"?uuid=724b9c9fdd5e7b6f\" + lazyLoadUrl,\n        extra: {\n            id: item.id\n        }\n    });\n});\n\n\nsetResult(layout);\nif (img.length > 0) {\n    be(img);\n}","searchFind":"js:\nvar layout = [];\nlet urlMap = $.require(\"hiker://page/urlSet.js\");\n\nMY_URL = MY_URL.split('#')[1];\n//try {\n    var data = batchFetch(urlMap.map(data => ({\n        url: data.url + MY_URL,\n        options: {\n            headers: {\n                'User-Agent': 'Documents/HttpCanary/3.3.6'\n            }\n        }\n    })));\n    data.forEach((json, index) => {\n        var list = JSON.parse(json).rescont.data;\n        for (var item of list) {\n            layout.push({\n                title: item.title,\n                desc: item.authername,\n                img: item.coverpath,\n                content: urlMap[index].name,\n                url: urlMap[index].url + \"api/videoplay/\" + item.id + \"?uuid=724b9c9fdd5e7b6f\" + \"@lazyRule=Text.js: JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com')+';get;UTF-8;{User-Agent@PostmanRuntime/7.29.2}'\"\n            });\n        }\n    })\n//} catch (e) {};\nsetResult(layout);","search_url":"hiker://empty#api/videosort/0?serach=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"服务器备用\",\"path\":\"by\",\"rule\":\"\\n/**\\nhttps://api.平台拼音缩写dd4.xyz\\nhttps://api.平台拼音缩写ee5.xyz\\nhttps://api.平台拼音缩写be2.xyz\\n草莓cm，丝瓜sg，向日葵xrk，芭乐bl\\n\\n芭乐>q:apilist0?url=https://api.bldd4.xyz\\n芭乐>q:apilist0?url=https://api.bldd4.xyz\\n丝瓜>q:gualist0?url=https://api.sgdd4.xyz\\n丝瓜>q:gualist0?url=https://api.sgbe2.xyz\\n草莓>q:gualist0?url=https://api.cmdd4.xyz\\n草莓>q:gualist0?url=https://api.cmbe2.xyz\\n向日葵>q:gualist0?url=https://api.xrkdd4.xyz\\n向日葵>q:gualist0?url=https://api.xrkbe2.xyz\\n秋葵>q:guolist0?url=http://api.klpqk.com\\n秋葵>q:guolist0?url=http://api.spwtl.com\\n榴莲>q:guolist0?url=http://liulianshipin100.com\\n榴莲>q:guolist0?url=http://liulianshipin101.com\\n榴莲>q:guolist0?url=http://liulianshipin102.com\\n榴莲>q:guolist0?url=http://liulianshipin103.com\\n榴莲>q:guolist0?url=http://liulianshipin104.com\\n1024服务器替换http://1gb.tw  http://yjb.tw  http://1024yjb.com  http://yjb1024.com\\nYTB服务器替换http://fsfapermanentcosmeticartistry.com  http://sekihfde.com http://fsvibrantnutritionandhealth.com http://fsafmyfootballpredictions.com\\n榴莲服务器替换http://liulianshipin100.com http://liulianshipin101.com http:/\\n/liulianshipin102.com http://liulianshipin103.com http://liulianshipin104.com\\n蕾丝服务器 http://fsfanteriormanagement.com\\n     http://fsfarlingtonqiwellness.com\\n     http://fsfcjanaturalbuilding.com\\n     http://fshandcalligraphypa.com\\n    http://ewgabrielaconstantine.com\\n宅男\\nhttp://gntwax.com\\nhttp://ylpcvr.com\\nhttp://bjfbuq.com\\nhttp://kqcfrq.com\\nhttp://pdpulf.com\\nvideo:\\thttp://gntwax.com/api/index.m3u8?m3u8=https://syastjt.com/\\\"\\n小蝌蚪\\n \\\"http://dianxianhongqiao.com/\\\",\\n      \\\"http://chaopen97.com/\\\",\\n      \\\"http://xiaokedou898.com/\\\",\\n      \\\"http://xiaokedou188.com/\\\",\\n      \\\"http://xiaokedou233.com/\\\",\\n      \\\"http://xiaokedou699.com/\\\"\\nvideo:http://chaopen97.com/api/index.m3u8?m3u8=https://www.hfkuangshanche.com/\\\"\\nhttp://chaopen97.com/api/index.m3u8?m3u8=https://www.cljcqzz.com\\nhttp://dianxianhongqiao.com/api/index.m3u8?m3u8=https://yunyi668.com/\\n银杏视频\\napi      http://yxsp4.com\\\",\\n      \\\"http://yxsp2.com\\\",\\n      \\\"http://yxsp1.com\\\"\\n播放替换\\nhttp://yxsp1.com:80/api/index.m3u8?m3u8=https://mhzb998.com/\\n石榴视频\\n播放替换      \\nhttps://awpwdf.com/api/index.m3u8?m3u8=https://www.mhzb998.com/\\n\\\"api\\\": [\\n      \\\"https://awpwdf.com\\\",\\n      \\\"https://ejndgl.com\\\",\\n      \\\"https://waydez.com\\\",\\n      \\\"https://zupfye.com\\\",\\n      \\\"https://spijbq.com\\\"\\n\\n1024-榴莲-宅男-银杏-石榴（相同）\\n\\n*/\\n搜索ua解析\\nurl: urlList[index][0] + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\" + \\\"@lazyRule=Text.js: JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com')+';get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}'\\\"\\n一级UA解析\\nurl: $(spl[1].split('sort')[0] + 'play/' + vid + '?uuid=724b9c9fdd5e7b6f').lazyRule(() => {\\n            var json = JSON.parse(fetch(input, {})).rescont.videopath;\\n            return json.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com')+\\\";get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}\\\"\\n本地\\n搜索\\nurl: urlList[index][0] + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\" + \\\"@lazyRule=Text.js: cacheM3u8(JSON.parse(input).rescont.videopath.replace('https://yuanqiplay.com', 'https://liulianshipin100.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://sekihfde.com/api/index.m3u8?m3u8=https://yunyi668.com'))\\\"\\n一级\\nurl: $(spl[1].split('sort')[0] + 'play/' + vid + '?uuid=724b9c9fdd5e7b6f').lazyRule(() => {\\n            var json = JSON.parse(fetch(input, {})).rescont.videopath;\\n            return cacheM3u8(json.replace('https://yuanqiplay.com', 'https://liulianshipin100.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://fsfarlingtonqiwellness.com/api/index.m3u8?m3u8=https://yunyi668.com'))\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"UrlSet.js\",\"path\":\"urlSet.js\",\"rule\":\"js:\\nconst defaultUrlMap = [{\\n    \\\"name\\\": \\\"蕾丝\\\",\\n    \\\"url\\\": \\\"http://fshandcalligraphypa.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"YTB\\\",\\n    \\\"url\\\": \\\"http://fsafmyfootballpredictions.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"小蝌蚪\\\",\\n    \\\"url\\\": \\\"http://dianxianhongqiao.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"秋葵\\\",\\n    \\\"url\\\": \\\"http://api.klpqk.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"银杏视频\\\",\\n    \\\"url\\\": \\\"http://yxsp6.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"宅男\\\",\\n    \\\"url\\\": \\\"http://ylpcvr.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"1024\\\",\\n    \\\"url\\\": \\\"http://yjb.tw/\\\"\\n}, {\\n    \\\"name\\\": \\\"榴莲\\\",\\n    \\\"url\\\": \\\"http://api.klpqk.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"石榴\\\",\\n    \\\"url\\\": \\\"http://zupfye.com/\\\"\\n}, {\\n    \\\"name\\\": \\\"草莓\\\",\\n    \\\"url\\\": \\\"https://api.cmbe2.xyz/\\\"\\n}, {\\n    \\\"name\\\": \\\"丝瓜\\\",\\n    \\\"url\\\": \\\"https://api.sgbe1.xyz/\\\"\\n}, {\\n    \\\"name\\\": \\\"向日葵\\\",\\n    \\\"url\\\": \\\"https://api.xrkapi004.xyz/\\\"\\n}];\\n$.exports = defaultUrlMap;\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.view\",\"path\":\"Search.view\",\"rule\":\"js:\\nlet keyword = getParam(\\\"searchTerms\\\") || \\\"\\\";\\nlet index = Number(getParam(\\\"index\\\") || \\\"0\\\");\\nlet urlMap = $.require(\\\"hiker://page/urlSet.js?rule=\\\" + MY_RULE._title);\\nlet tUrl = urlMap[index].url;;\\nlet data;\\nlet img = [];\\ntry {\\n    data = JSON.parse(fetch(tUrl + \\\"api/videosort/0?serach=\\\" + keyword + \\\"&page=\\\" + MY_PAGE)).rescont.data;\\n} catch (e) {\\n    data = [];\\n}\\nlet layout = [];\\ndata.forEach(item => {\\n    let desc = \\\"\\\";\\n    if (item.authername) {\\n        desc += \\\"类型：\\\" + item.authername;\\n    }\\n    if (item.playtimes) {\\n        desc += (desc ? \\\"\\\\n\\\" : \\\"\\\") + \\\"播放时长：\\\" + item.playtimes;\\n    }\\n    if (item.updated_at) {\\n        desc += (desc ? \\\"\\\\n\\\" : \\\"\\\") + \\\"更新时间：\\\" + item.updated_at;\\n    }\\n    let pic = \\\"\\\";\\n    if (item.coverpath) {\\n        pic = item.coverpath;\\n    } else if (item.coverbase64 && item.coverbase64.url) {\\n        pic = 'https://www.helloimg.com/images/2022/08/29/ZzbcFr.gif'\\n        const DesDecode = (pic_url, id) => {\\n            let img = \\\"data:image/png;base64,/9j\\\" + request(pic_url).split(\\\"/9j\\\")[1]\\n            updateItem({\\n                img: img,\\n                extra: {\\n                    id: id\\n                }\\n            })\\n        }\\n    }\\n    layout.push({\\n        title: item.title,\\n        pic_url: pic,\\n        desc: desc,\\n        url: $(tUrl + \\\"api/videoplay/\\\" + item.id + \\\"?uuid=724b9c9fdd5e7b6f\\\").lazyRule(() => {\\n            var url = JSON.parse(fetch(input)).rescont.videopath;\\n            return url.replace('https://yuanqiplay.com', 'https://liulianshipin102.com/api/index.m3u8?m3u8=https://sz-weiteng.com').replace('https://yunyi668.com', 'http://8.210.59.216/api/index.m3u8?m3u8=https://yunyi668.com') + \\\";get;UTF-8;{User-Agent@PostmanRuntime/7.29.0}\\\"\\n        }),\\n        extra: {\\n            id: item.id\\n        }\\n    });\\n    img.push({\\n        func: () => DesDecode(item.coverbase64.url, item.id)\\n    })\\n});\\n\\nsetResult(layout);\\nbe(img)\"}]","proxy":"","icon":"https://p3.itc.cn/images01/20200519/86debae2ed474ed7b4fe9f33e82cab08.jpeg"},{"last_chapter_rule":"","title":"酷豆资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://kudouzy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=酷安资源"},{"last_chapter_rule":"","title":"黄瓜TV资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji10.com/home/cjapi/cfs6/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=黄瓜TV资源"},{"last_chapter_rule":"","title":"老鸭资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.apilyzy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=老鸭资源"},{"firstHeader":"class","last_chapter_rule":"","title":"神秘电影.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://188538.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=神秘电影"},{"last_chapter_rule":"","title":"色男国资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.sexnguon.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=色男国资源"},{"firstHeader":"class","last_chapter_rule":"","title":"迷色.DR","author":"卫华","version":1,"type":"video","url":"hiker://empty##https://host12071127cc.dps0701.ummmum.com:789/vod/type/id/20.html?tg_uid=108988","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=迷色"},{"last_chapter_rule":"","title":"红领巾","author":"","version":15,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://hlj04.com/archives.html';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet web = getItem('web', '0') == \\\"1\\\";\\nlet rule = getParam(\\\"r\\\");\\nlet parse = $.require(\\\"hiker://page/parse\\\");\\nlet d = parse(rule, web, url, html);\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId) => {\\n                        try {\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                            let d = parse(rule, web, url, html);\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                            html = request(src);\\n                                            d = parse(rule, web, src, html);\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"夜色直播","author":"Timik","version":0,"type":"live","url":"http://l.lzpeng.com/api/public/?service=Home.getHot","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar d = [];\nvar hh = json.data.info[0].list\nfor (var i = 0; i < hh.length; i++) {\n    d.push({\n        title: hh[i].user_nicename,\n        desc: hh[i].city,\n        img: hh[i].avatar,\n        url: hh[i].pull\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"番号","author":"道长","version":1,"type":"video","url":"hiker://empty##http://fhapi9.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=番号"},{"last_chapter_rule":"","title":"黑料不打烊✈️","author":"发粪涂墙","version":0,"type":"picture","url":"https://zztt11.com/category/fyAll.html/fypage/","col_type":"pic_1_card","class_name":"万篇长征&网红明星&热点事件&官方公文","class_url":"1&63&83&64","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&article');\r\nfor (var j in list) {\nif(list[j].indexOf('script')!=-1){var img = parseDom(list[j],'script&&Html').split(\"'\")[1]}else{img=''}\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h2&&Text'),\r\n       desc: parseDomForHtml(list[j], '.post-card-info&&Text'),\r\n       img: img,\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=.dplayer&&data-config.js:JSON.parse(input).video.url`\r\n  });\r\n}\r\nsetResult(d)","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&article');\r\nfor (var j in list) {\nif(list[j].indexOf('script')!=-1){var img = parseDom(list[j],'script&&Html').split(\"'\")[1]}else{img=''}\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h2&&Text'),\r\n       desc: parseDomForHtml(list[j], '.post-card-info&&Text'),\r\n       img: img,\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=.dplayer&&data-config.js:JSON.parse(input).video.url`\r\n  });\r\n}\r\nsetResult(d)","search_url":"https://zztt11.com/search/**/fypage","titleColor":"#666666","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"pic_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图标\",\"path\":\"myCollection_favicon\",\"rule\":\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/hiker_pic/hiker_oth/黑料.jpeg\"}]","proxy":"","icon":"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/hiker_pic/hiker_oth/黑料.jpeg"},{"last_chapter_rule":"#gridwp-posts-wrapper;a&&Text;,;h3&&Text;#my-video_html5_api&&#source&&src","title":"在线视频 ✈️","author":"Andy","version":0,"type":"video","url":"https://wm.dm1p.com/link/fyclass/page/fypage","col_type":"movie_3_marquee","class_name":"麻豆&糖心Vlog&天美&星空&果冻&精东&91&头条&皇家华人&蜜桃&兔子&玩偶姐姐&其它传媒","class_url":"madou&tangvlog&tian&xkong&guoddd&jing&91&taotao&huawww&mita&tuziii&hongkongdoll&qqta","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".gridwp-posts-content&&.gridwp-grid-post-inside;.gridwp-grid-post-details&&Text;img&&src;.gridwp-grid-post-categories&&a&&Text;a&&href","searchFind":".gridwp-posts-content&&.gridwp-grid-post-inside;.gridwp-grid-post-details&&Text;a&&href;.gridwp-grid-post-categories&&a&&Text;.gridwp-grid-post-categories&&a&&Text;img&&src","search_url":"https://wm.dm1p.com/page/fypage?s=**","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"爱情岛.dz","author":"道长","version":6,"type":"other","url":"hiker://empty#fyAll#fypage","col_type":"pic_2","class_name":"有 碼&無 碼&H 動 畫&自 拍&偷 拍&中 文 字 幕&酒 店&K T V&教 室&辦 公 室&野 外&洗 手 間&車 震&家 裡&少 婦&學 生&老 師&小 姐&O L&嫩 模&網 紅&主 播&媽 媽&姐 姐&巨 乳&美 乳&巨 臀&美 背&三 點 粉&多 汁&處 女&美 腿&黑 人 巨 屌&S M&捆 綁&戀 足&強 姦&同 性&迷 姦&近 親 相 姦&制 服 誘 惑&絲 襪&護 士&C o s p l a y&空 姐&情 趣 內 衣&后 入&無 套 內 射&自 慰&口 爆&深 喉&潮 吹&群 P&乳 交&顏 射&肛 交&素 人&清 純 可 愛&白 虎&女 優&人 獸&蘿 莉&明 星&情 趣 玩 具&人 妖&另 類","class_url":"/videos/tag/pixelated&/videos/tag/nopixelated&/videos/tag/cartoon&/videos/tag/zipai&/videos/tag/toupai&/videos/tag/caption&/videos/tag/hotel&/videos/tag/ktv&/videos/tag/classroom&/videos/tag/office&/videos/tag/outside&/videos/tag/wc&/videos/tag/car&/videos/tag/home&/videos/tag/woman&/videos/tag/student&/videos/tag/teacher&/videos/tag/lady&/videos/tag/ol&/videos/tag/model&/videos/tag/celebrity&/videos/tag/anchor&/videos/tag/mother&/videos/tag/sister&/videos/tag/big-breast&/videos/tag/beauty-breast&/videos/tag/big-ass&/videos/tag/beauty-back&/videos/tag/powder&/videos/tag/solppy&/videos/tag/virgin&/videos/tag/beauty-leg&/videos/tag/black-big&/videos/tag/sm&/videos/tag/bundling&/videos/tag/foot-love&/videos/tag/rape&/videos/tag/homosexual&/videos/tag/adultery&/videos/tag/fornication&/videos/tag/uniform&/videos/tag/stockings&/videos/tag/nurse&/videos/tag/cosplay&/videos/tag/hostess&/videos/tag/sexy-ingerie&/videos/tag/back-fuck&/videos/tag/injection&/videos/tag/masturbation&/videos/tag/oral-copulation&/videos/tag/deep-throat&/videos/tag/spray-tide&/videos/tag/group&/videos/tag/breast-fuck&/videos/tag/yan-shot&/videos/tag/anal-copulation&/videos/tag/vegetarian&/videos/tag/pure&/videos/tag/hairless&/videos/tag/avlady&/videos/tag/bestiality&/videos/tag/loli&/videos/tag/star&/videos/tag/toys&/videos/tag/shemale&/videos/tag/other","area_name":"中國・大陸&West・歐美&Japan・日本&韓国・대한&中國・香港&中國・台灣&Asia・東南亞","area_url":"/videos/category/cn&/videos/category/west&/videos/category/jp&/videos/category/kr&/videos/category/hk&/videos/category/tw&/videos/category/southeast-asia","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet key=MY_URL.split(\"#\");\nkey.splice(0,1);\nlet url=\"https://vip.aqdz118.com/?f=vip.aq802.com:8443\"+key.join(\"/\");\nMY_URL=url;\n//log(url);\nlet d=[];\nlet list=pdfa(fetch(MY_URL),\"body&&.videos-item\");\nfor(let i in list){\n    d.push({\n        title:pdfh(list[i],'.videos-title&&a&&title'),\n        pic_url:pd(list[i],'.thumbnail-cover&&a&&img&&data-original'),\n        desc:pdfh(list[i],'.metadata-view&&Text'),\n        url:$(pd(list[i],'.videos-title&&a&&href')).lazyRule(()=>{\n            const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input)\n            \n        })\n    })\n}\nsetResult(d)","searchFind":"body&&.videos-item;.videos-title&&a&&title;.videos-title&&a&&href.js:$(input).lazyRule(()=>$.require(\"hiker://page/parse2\"));.video-metadata-line&&span,2&&Text;.metadata-view&&Text;.thumbnail-cover&&a&&img&&data-original","search_url":"hiker://empty.js:\"https://vip.aqdz118.com/?f=vip.aq802.com:8443\"+\"/videos/search？？key=**＆＆page=fypage\"","group":"⑤①📽️敦伦","detail_col_type":"movie_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"parse\",\"rule\":\"let url='x5Rule://' + input + '@' + $.toString(() => {\\n            let div = document.querySelector(\\\".dplayer-video\\\");\\n            if (div != null) {\\n                return div.getAttribute(\\\"src\\\")\\n            }\\n        });\\n//log(url);\\nshowLoading('加载中，请稍等');\\n$.exports = url\"},{\"col_type\":\"movie_3\",\"name\":\"动态解析2\",\"path\":\"parse2\",\"rule\":\"let back = fetch(input,{});\\nlet realUrl=back.match(/http.*?m3u8/);\\nlet url=realUrl[0];\\n\\nshowLoading('加载中，请稍等');\\n$.exports = url\"},{\"col_type\":\"movie_3\",\"name\":\"安全网址跳转解析\",\"path\":\"parseJs\",\"rule\":\"function dzVip(originUrls) {\\n    function parse(originUrls, num) {\\n        var a = originUrls.slice(0),\\n            b = originUrls.length,\\n            c = b - num,\\n            d, e;\\n        while (b-- > c) {\\n            e = Math.floor((b + 1) * Math.random());\\n            d = a[e];\\n            a[e] = a[b];\\n            a[b] = d\\n        };\\n        return a.slice(c);\\n    }\\n    var urls = parse(originUrls, 3);\\n    for (var i = 0; i < urls.length; i++) {\\n        var arrylist = [];\\n        for (var j = 4; j <= urls[i].length; j += 4) {\\n            arrylist.push(String.fromCharCode(parseInt(urls[i].toString().substr(j - 4, 4)) - 1000))\\n        };\\n        urls[i] = arrylist.join('');\\n    };\\n\\n    return urls[Math.round(Math.random()*(3 - 1))] + '?_ts=' + Math.random();\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"浴室少女✈️","author":"","version":0,"type":"video","url":"https://www.fld29.com/vodtype/fyAll-fypage.html[firstPage=https://www.fld29.com/vodtype/fyAll.html]","col_type":"pic_1","class_name":"精 品 推 荐&国 产 情 色&网 红 主 播&日 本 无 码&亚 洲 有 码&中 文 字 幕&欧 美 情 色&美 乳 巨 乳","class_url":"6&7&8&9&10&11&12&20","area_name":"强 奸 乱 伦&萝 莉 少 女&制 服 诱 惑&人 妻 熟 女&三 级 伦 理&成 人 动 画&国 模 私 拍&长 腿 丝 袜","area_url":"21&22&23&24&25&26&30&31","sort_name":"","year_name":"女 同 性 恋&邻 家 人 妻&韩 国 伦 理&香 港 伦 理&人 妖 系 列&国 产 裸 聊&国 产 自 拍&国 产 盗 摄","sort_url":"","year_url":"37&32&33&34&28&29&35&15","find_rule":".margin-fix&&.item;a&&title.js:input.split('').join('⁡');img&&data-original;em&&Text;a&&href.js:input+\"#noRecordHistory#\"","searchFind":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nvar  list  =  parseDomForArray(getResCode(), '.margin-fix&&.item');\nfor (var j in list) {\n    d.push({       \n            title:  parseDomForHtml(list[j],  'a&&title'),\n               desc: parseDomForHtml(list[j],  'em&&Text'),\n               pic_url: parseDom(list[j],  'img&&data-original'),\n               url:   parseDom(list[j],'a&&href')\n          \n    });\n}\nres.data  =  d;\nsetHomeResult(res);","search_url":"https://www.fld30.com/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"text_center_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n\n//默认播放地址(需修改)\nvar lazy = $('').lazyRule(() => {\n   return JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url\n});\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, '.headline&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.item&&em&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.player&&img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.tabs-menu&&li');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tabs-menu');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'li&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'pic_1_card'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"text_center_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"博天堂","author":"道长","version":1,"type":"video","url":"hiker://empty##http://bttcj.com/inc/sapi.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=博天堂"},{"last_chapter_rule":"","title":"色色","author":"道长","version":1,"type":"video","url":"hiker://empty##http://secj8.com/inc/sapi.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=色色"},{"last_chapter_rule":"","title":"名优馆","author":"道长","version":1,"type":"video","url":"hiker://empty##http://mygzycj.com/api.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=名优馆"},{"last_chapter_rule":"","title":"玖玖","author":"道长","version":1,"type":"video","url":"hiker://empty##http://99zywcj.com/inc/sapi.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=玖玖"},{"last_chapter_rule":"","title":"大地","author":"道长","version":1,"type":"video","url":"hiker://empty##https://dadiapi.com/api.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=大地"},{"last_chapter_rule":"","title":"白嫖","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.kxgav.com/api/json.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=白嫖"},{"last_chapter_rule":"","title":"乐播","author":"道长","version":1,"type":"video","url":"hiker://empty##https://lbapi9.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=乐播"},{"last_chapter_rule":"","title":"淫水机","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.xrbsp.com/api/json.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=淫水机"},{"last_chapter_rule":"","title":"美少女","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.msnii.com/api/json.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=美少女"},{"last_chapter_rule":"","title":"奶茶","author":"道长","version":1,"type":"video","url":"hiker://empty##https://caiji.naichaapi.com/inc/apijson_vod.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=奶茶"},{"last_chapter_rule":"","title":"蛋蛋","author":"道长","version":1,"type":"video","url":"hiker://empty##http://156.249.29.8/inc/apijson_vod.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=蛋蛋"},{"last_chapter_rule":"","title":"大MM","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.dmmapi.com/home/cjapi/asd2c7/mc10/vod/json#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=大MM"},{"last_chapter_rule":"","title":"玉兔","author":"道长","version":1,"type":"video","url":"hiker://empty##https://apiyutu.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=玉兔"},{"last_chapter_rule":"","title":"雪豹","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.xbapi.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=雪豹"},{"last_chapter_rule":"","title":"滴滴","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.ddapi.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=滴滴"},{"last_chapter_rule":"","title":"花色","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.huasezy.xyz/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=花色"},{"last_chapter_rule":"","title":"🐮妖火全是老色批","author":"妖火最帅","version":72,"type":"video","url":"https://7nnyu.xyz?fyclass-fypage.htm;get;utf-8","col_type":"movie_3","class_name":"最新&周榜&月榜&5+&10+","class_url":"list&top7_list&top_list&5min_list&long_list","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.body&&.thumbnail');\nlet i=0;\nfor (var j in list) {\n  let id=parseDomForHtml(list[j],'a&&href').split(\".\")[0].split(\"-\")[1];\n//let tmp=parseDomForHtml(list[j],'a&&href');\n//\tlet id=tmp.replace(\".html\",\"\").split(\"/\")[tmp.replace(\".html\",\"\").split(\"/\").length-1];\n//\tlet url=\"https://www.zycaqc1.com/detail/\"+id+\".html\"\n\n  \t let img=parseDomForHtml(list[j], '.image&&style')\n\t img=img.split(\"'\")[1].split(\"'\")[0]\n\t d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),\n       desc: parseDomForHtml(list[j], '.info&&Text'),\n       pic_url:img,\n      // url: url+=`@lazyRule=#Player&&src.js:input.split('url=')[1]`\n\t   //+`@lazyRule=#video-play&&src`\n\t\t url:\"https://7nnyu.xyz/\"+parseDomForHtml(list[j],'a&&href')+`@lazyRule=#video-play&&source&&src`,\n   });\n \n  \t\n  \n}\n\nres.data = d;\nsetHomeResult(res);\n","searchFind":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.body&&.thumbnail');\nlet i=0;\nfor (var j in list) {\n  let id=parseDomForHtml(list[j],'a&&href').split(\".\")[0].split(\"-\")[1];\n//let tmp=parseDomForHtml(list[j],'a&&href');\n//\tlet id=tmp.replace(\".html\",\"\").split(\"/\")[tmp.replace(\".html\",\"\").split(\"/\").length-1];\n//\tlet url=\"https://www.zycaqc1.com/detail/\"+id+\".html\"\n\n  \t let img=parseDomForHtml(list[j], '.image&&style')\n\t img=img.split(\"'\")[1].split(\"'\")[0]\n\t d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),\n       desc: parseDomForHtml(list[j], '.info&&Text'),\n       pic_url:img,\n      // url: url+=`@lazyRule=#Player&&src.js:input.split('url=')[1]`\n\t   //+`@lazyRule=#video-play&&src`\n\t\t url:\"https://7nnyu.xyz/\"+parseDomForHtml(list[j],'a&&href')+`@lazyRule=#video-play&&source&&src`,\n   });\n \n  \t\n  \n}\n\nres.data = d;\nsetHomeResult(res);\n","search_url":"https://7nnyu.xyz/search-fypage.htm?search=**&sort=new","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"成人在线","author":"","version":0,"type":"video","url":"https://www.5r4r.com/fyclass/index_fypage.html[firstPage=https://www.5r4r.com/fyclass]","col_type":"movie_2","class_name":"视频&电影&图片","class_url":"video&movie&image","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.channel-list&&dl');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.picker&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'img&&data-original'),\n            //定位链接\n            url: $(parseDom(list[j], 'a&&href')).lazyRule(() => {\n     var url = fetch(input,{});\n     if(url.includes(\"m3u8\")){\n      return fetch(input).match(/https.*?m3u8/)[0]\n  }else {return \"pics://\"+parseDom(fetch(input,{}),'.content&&Html').match(/http.*?jpg/g).join('&&')}\n}),\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.channel-list&&dl');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.picker&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'img&&data-original'),\n            //定位链接\n            url: $(parseDom(list[j], 'a&&href')).lazyRule(() => {\n     var url = fetch(input,{});\n     if(url.includes(\"m3u8\")){\n      return fetch(input).match(/https.*?m3u8/)[0]\n  }else {return \"pics://\"+parseDom(fetch(input,{}),'.content&&Html').match(/http.*?jpg/g).join('&&')}\n}),\n        });\n    }\n} catch (e) {}\nsetResult(d);","search_url":"/search/video/**/index_fypage.html","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"http://aadd00.com\nhttp://bbcc00.com\nhttp://bbcc55.com\nhttp://ddee00.com\nhttps://55eehh.com","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.5r4r.com/static/images/feihua1.ico"},{"last_chapter_rule":"","title":"探花","author":"","version":2,"type":"video","url":"https://xn--nus-thspdizhicom-i302az15dli5g36rfhyxb.xn--sp-jf6dy94i.com/index-fyAll-fypage.html[firstPage=https://xn--nus-thspdizhicom-i302az15dli5g36rfhyxb.xn--sp-jf6dy94i.com/index-fyAll.html]","col_type":"movie_3","class_name":"极品&00后&双.飞&制服&萝莉&学生妹&网红&舞蹈&翻车&JK&女探花&美乳&泰国&俄罗斯&高潮&苗条&气质&魔鬼身材&情趣&车模&老外&黑人","class_url":"1&2&3&14&5&6&7&8&9&10&11&12&13&15&16&17&18&19&20&21&22&23","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".s-tab-main&&li;a&&title;.cover&&style.js:input.split(\"'\")[1];.S1&&Text;a&&href.js:input+'@lazyRule=.js:fetch(input,{}).match(/http.*?m3u8/)[0]'","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"黄色仓库","author":"Andy","version":0,"type":"video","url":"http://fyarea/vodtype/fyclass-fypage.html","col_type":"movie_2","class_name":"日韩&国产&中有&中无&日无&欧美&动漫","class_url":"1&2&9&8&10&3&4","area_name":"cphsck.cc&ejhsck.cc","area_url":"cphsck.cc&ejhsck.cc","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-pannel-bd&&li;h4&&Text;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-pannel-bd&&li;title&&Text;a&&href;.pic-text text-right&&Text;a&&data-original","search_url":"http://hsck.cc/vodsearch/**----------fypage---.html","group":"⑤①📽️敦伦","detail_col_type":"x5_webview_single","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#fffe9700"},{"last_chapter_rule":"","title":"草榴资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji02.com/home/cjapi/cfas/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=草榴资源"},{"last_chapter_rule":"","title":"Javffm","author":"XHH","version":1,"type":"video","url":"https://www.javffm.com/drama/page/fypage/?orderby=fysort&tvtype=fyclass","col_type":"movie_1_vertical_pic","class_name":"中文字幕&国产AV&倫理&動漫","class_url":"chinese-subtitles&chinese-av-porn&porn&5","area_name":"","area_url":"","sort_name":"按時間&按人氣","year_name":"","sort_url":"date&view","year_url":"","find_rule":"js:\nvar d = []\nvar lazy = $('').lazyRule(() => {\n        return \"video://\"+input\n});\nvar list = pdfa(getResCode(), '.items&&.item')\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'h3&&Text'),\n        desc: pdfh(item, '.data&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href')+lazy\n            })\n});\nsetResult(d)","searchFind":"js:\nvar d = []\nvar lazy = $('').lazyRule(() => {\n        return \"video://\"+input\n});\nvar list = pdfa(getResCode(), '.content&&.result-item')\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'img&&alt'),\n        desc: pdfh(item, '.drama&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href')+lazy\n            })\n});\nsetResult(d)","search_url":"/page/fypage/?s=**","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.javffm.com/wp-content/uploads/logofinal6.png"},{"last_chapter_rule":"","title":"抖阴","author":"道长&套一个","version":2,"type":"live","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nconst {isVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nvar js=$.toString((isVideo)=>{\nvar btn = document.createElement('button');\nbtn.setAttribute('style','border-radius:20px;width:32px;height:32px;');\nbtn.setAttribute('id','btn1');\nbtn.innerText = '下载';\nbtn.onclick=function(){\n    var urls = _getUrls();\n    //fba.log(JSON.stringify(urls));\n    //alert(\"开始下载\");\n    //let realUrl=false;\n    let playUrl=urls.slice(-1)[0];\n    let realUrl=isVideo(playUrl);\n    if(typeof(realUrl)=='string'){\n     fba.log(\"仓库x5免嗅结果:\"+realUrl);\n     }\n    if(realUrl){\n        if(confirm(\"进入exo播放?\")){\n            fba.playVideo(realUrl);\n        }\n    }else{\n        alert(\"没有视频，请先播放\");\n    }\n}\nvar main = document.getElementById('buttons');\nmain.appendChild(btn);\n},isVideo);\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://onlytik.com/@emanuelly-raquel/71Y7/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js:js\n    }\n}])","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"last_chapter_rule":"","title":"仓库","author":" ","version":3,"type":"video","url":"hiker://empty##host/vodtype/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"国产&日韩&欧美&动漫","class_url":"2&1&3&4","area_name":"无🐴中文字幕&有🐴中文字幕","area_url":"8&9","sort_name":"","year_name":"日本无🐴&日本有🐴","sort_url":"","year_url":"10&7","find_rule":"js:      \nrequire(config.模板);\n依赖检测();\r\nvar res = {};\r\nvar items = [];\nlet web=request('https://user.301go.net:8899/?u=http://hsck.net/&p=/',{\n    withHeaders:true\n});\nlet realUrl=JSON.parse(web).url;\nputMyVar('realUrl',realUrl);\nlet ck_id='cookie.seku';\nlet cookie=获取ck(ck_id);\nputMyVar('cookie',cookie);\nMY_URL=MY_URL.split('##')[1].replace('host',getMyVar('realUrl'));\nvar true_url = getMyVar('header.url', MY_URL);\r\nvar html = request(MY_URL)\nconst page = MY_PAGE\nvar lazy = `@lazyRule=.js:var url=unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(/.html|bilibili/.test(url)){var input=url;`+lazy+`}else{url+'#isVideo=true#'}`;\nif(!/滑动验证/.test(html)&&html.length>200){\nif(MY_PAGE==1){\nitems.push({\n    title: '““””<big><font color=#871f78>珍惜生命，小看怡情</font></big>',\n    desc: '““””<middle><font color=#f20c00>他妈的少看点！！</font></middle>',\n    url: MY_URL,\n    col_type: 'text_center_1',extra:{lineVisible: false}\n});\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); 顺搜(items)\nvar list = parseDomForArray(html,'body&&.stui-warp-content&&.stui-vodlist&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.stui-vodlist__thumb&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original')+'@Referer=';\r\n        var url = parseDom(list[i], 'a&&href')+lazy;\n        var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n}\nelse{\nvar list = parseDomForArray(html,'body&&.stui-warp-content&&.stui-vodlist&&li');\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.stui-vodlist__thumb&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original')+'@Referer=';\r\n        var url = parseDom(list[i], 'a&&href')+lazy;\n        var desc = \"时长\"+parseDomForHtml(list[i], '.pic-text&&Text');\n\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n}\r\nres.data = items;\r\nsetHomeResult(res);\n}\nelse{\n    道长验证码(null,true_url,'',ck_id);\n}","searchFind":"js:\nvar res = {};\nvar items= [];\nMY_URL=getMyVar('realUrl')+MY_URL.split('##')[1];\nvar html = request(MY_URL)\nvar lazy = `@lazyRule=.js:var url=unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(/.html|bilibili/.test(url)){var input=url;`+lazy+`}else{url+'#isVideo=true#'}`;\n\nvar list = parseDomForArray(html,'body&&.stui-pannel-bd&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'h4&&Text');\n        var img = parseDom(list[i], 'a&&data-original')+'@Referer=';\r\n        var url = parseDom(list[i], 'a&&href')+lazy;\n        var desc = \"时长\"+parseDomForHtml(list[i], '.pic-text&&Text');\n\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\nres.data = items;\nsetHomeResult(res);","search_url":"hiker://empty##/vodsearch/-------------.html?wd=**&submit=","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"evalPrivateJS('JDdSPNi7jK8urOQu1qy/SyNypb3FgTjCH/5oJs7NlznOTejsO6ZMrKyJzdLvNrIdfToapwhnf4ju43OVX+umNqRNa1xPBCXpiUiN6cjdT0UV07oBJXj/Rfo9H6S1tziKTn2wxTgmy7088U87z6wn19CbWx6x72hqDj5254gORYxLJmQPty5y5DkDowQBDrGX5iLlUDaCZF9V5MRo1h7sjk/Mhoa6qSR/drMLJGvygcV6Vgj0/8sBsM1+nt2ECo50mudooZFN5TwA1CneBYriS95qgIwMYamCyIwkaAVH2PTiDbRmR6bA6FrgV/mP9ofiUib9P4W5aKIaFBlESJ77qewo57d/35y7rJJgKqzMUZYgQKz5eUNTohiUcOpDbUm6g+AujBHIjJaAV4oPR1y0k6FS0DaFCGHlne39g9YYsbGYD2VkApi+bXN0t7NmSkLqDdpwfhlTlYOue2XwNNXesVobk6lso22K7CgBhPWvk0CoHQvuSkxvEu6guLXpDM+cVfanahs/y0iZxcSL0PJAcQ==');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"跳验证\",\"path\":\"yanzheng\",\"rule\":\"function 获取ck(set){\\n    var ckpath='hiker://files/cache/cookie.json';\\n    var oldck=fetch(ckpath)||'{}';\\n//log('旧的cookie:'+oldck);\\n    oldck=JSON.parse(oldck);\\n    return oldck[set]||''\\n}\\nfunction 注入验证码识别(id,set,extra){\\n    // id=id||'.tncode';\\n    id=id||'';\\n    set=set||'yzm_cookie';\\n    extra=extra||{};\\n    if(typeof(log)==\\\"undefiend\\\"){\\n        log=fy_bridge_app.log;\\n    }\\n    var js=$.toString((id,set,extra)=>{\\n        eval(fy_bridge_app.getInternalJs());\\n        //fba.log('进入x5处理中');\\n        //fba.log(fba.getVar('dr依赖'));\\n        var ckpath='hiker://files/cache/cookie.json';\\n        function cookieSet(){\\n            // fba.log('自动cookie设置:' + set + '=>' + document.cookie);\\n            //JSON.stringify\\n            //JSON.parse\\n            var oldck = request(ckpath) || '{}';\\n            fba.log('旧的cookie:' + oldck);\\n            oldck = JSON.parse(oldck);\\n            oldck[set] = document.cookie;\\n            fba.putVar(set, document.cookie);\\n            var newCk = JSON.stringify(oldck);\\n            fba.writeFile(ckpath, newCk);\\n            fba.log('新的cookie:' + newCk);\\n        }\\n        if(id) { //填了id的话\\n            var btn = document.createElement('button');\\n            let css = extra.样式 || 'border-radius:20px;width:auto;height:20px;';\\n            btn.setAttribute('style', css);\\n            btn.setAttribute('id', 'btn1');\\n            let text = extra.文字 || '完成并返回重试';\\n            btn.innerText = text;\\n            btn.onclick = function () {\\n                try {\\n                    fba.log('手动点击cookie设置:' + set + '=>' + document.cookie);\\n                    cookieSet();\\n                    if (confirm('已设置当前页cookie，返回查看搜索结果。返回后需要手动下拉刷新！！！')) {\\n                        fba.parseLazyRule('hiker://empty@lazyRule=.js:back()');\\n                    }\\n\\n                } catch (e) {\\n                    alert(e.message)\\n                }\\n            }\\n            var main = document.querySelector(id);\\n            main.appendChild(btn);\\n        }else{//没填就自动注入，刷新都算\\n            if(document.cookie) {//如果有cookie\\n                try {\\n                    fba.log('自动cookie设置:' + set + '=>' + document.cookie);\\n                    cookieSet();\\n                } catch (e) {\\n                    alert(e.message)\\n                }\\n            }\\n        }\\n    },id,set,extra);\\n    return js\\n}\\n\\nfunction 道长验证码(title,myurl,id,set,extra){\\n\\n    if(getVar(set,'')&&!getMyVar('cookie')){\\n        putMyVar('cookie',getVar(set,''));\\n        refreshPage(true);\\n        return;\\n    }\\n\\n//必填链接，id，cookie名称\\n    extra=extra||false;\\n    title=title||'网站触发了人机验证，点此处理';\\n    /*\\n    var url=$().lazyRule((title,MY_URL,id,set,extra,注入验证码识别)=>{\\n    if(getVar(set,'')&&!getMyVar('cookie')){\\n    putMyVar('cookie',getVar(set,''));\\n    refreshPage(true);\\n    return'hiker://empty';\\n    }\\n    return $(MY_URL).rule((注入验证码识别,id,set,extra)=>{\\n                //log(typeof(注入验证码识别))\\n                let d=[];\\n                d.push({\\n                 col_type: \\\"x5_webview_single\\\",\\n                 url: MY_URL,\\n                 desc: \\\"float&&100%\\\",\\n                 extra: {\\n                   canBack: true,\\n                   js:注入验证码识别(id,set,extra)\\n                  }});\\n                setResult(d);\\n          },注入验证码识别,id,set,extra);\\n\\n    },title,MY_URL,id,set,extra,注入验证码识别);\\n    */\\n//log('待注入:'+MY_URL);\\n    var url=$(myurl).rule((注入验证码识别,id,set,extra)=>{\\n        //log(typeof(注入验证码识别))\\n        input=MY_URL;\\n        require(getVar('dr依赖'));\\n        //log('注入了:'+MY_URL);\\n        var oldck=获取ck(set);\\n        setPageTitle('道长验证码通杀');\\n        addListener('onClose', $.toString((set,oldck,获取ck)=>{\\n            // refreshPage(false); //返回自动刷新使设置生效\\n            log('退出了通杀界面,旧的cookie为:'+oldck);\\n            let newck=获取ck(set);\\n            log('新的cookie为:'+newck);\\n            if(!newck){\\n                let error='未获取cookie，验证失败！';\\n                log(error);\\n                //setError(error);\\n                //throw error;\\n            }else if(oldck===newck){\\n                log('cookie未更新，验证可能未通过');\\n            }\\n        },set,oldck,获取ck));\\n        let d=[];\\n        d.push({\\n            col_type: \\\"x5_webview_single\\\",\\n            url: input,\\n            desc: \\\"float&&100%\\\",\\n            extra: {\\n                canBack: true,\\n                js:注入验证码识别(id,set,extra)\\n            }});\\n        setResult(d);\\n    },注入验证码识别,id,set,extra);\\n    let d=[];\\n    d.push({\\n        title:title,\\n        col_type:'text_1',\\n        url:url,\\n    });\\n    setResult(d);\\n    // $().b64().rule()  可以实现在lazyRule里返回rule\\n}\"}]","proxy":"","icon":"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/appmov.png"},{"last_chapter_rule":"","title":"四虎","author":"冷清寒","version":0,"type":"other","url":"https://www.rwa567.com/video/fyclass/index_fypage.html[firstPage=https://www.rwa567.com/video/fyclass/index.html]","col_type":"movie_3","class_name":"自拍&淫妻&台湾&青年&三级&精品","class_url":"zipai&fuqi&twmn&kaifang&sanji&jingpin","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.row&&dl');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'h3&&Text'),\n            //定位描述\n            desc: parseDomForHtml(list[j], 'i&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'img&&data-original'),\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"@lazyRule=.js:'https://m3u8.44cdn.com/'+request(input).match(/newhd(.*?)m3u8/)[0]\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff871f78"},{"firstHeader":"class","last_chapter_rule":"","title":"四虎影院3","author":"","version":2,"type":"video","url":"https://www.aut456.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\r\nvar tabs = parseDomForArray(html,'.menu&&dt');\r\nvar conts = parseDomForArray(html, '.menu&&dl');\n\r\nfor (var i = 0; i < conts.length; i++) {\r\n    var list = parseDomForArray(conts[i],'dl&&dd');\n    var title = '““'+parseDomForHtml(tabs[i], 'dt&&Text')+'””';\r\n  if (list != null){\r\n     d.push({\r\n title:title,\r\n  col_type: 'text_center_1'\r\n     });\r\nfor (var j = 0; j < list.length; j++) {\r\n    d.push({\r\n    title: parseDomForHtml(list[j],'a&&Text'),\r\n    url: parseDom(list[j],'a&&href')+'/index_fypage.html[firstPage='+parseDom(list[j],'a&&href')+\"]\",\n    col_type: 'flex_button'\r\n            });\r\n        }\r\n    }\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\nvar M = MY_URL.split('#');\nvar S = JSON.parse(fetch(M[1], { body: M[2], withHeaders: true, redirect: false, method: 'POST' }, )).headers.location[0];\nvar html = fetch(M[0] + S.split('searchid=')[1]);\n\r\ntry{\r\nvar list = parseDomForArray(html, '.channel-list&&dl');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),       \r\ndesc: parseDomForHtml(list[j], 'i&&Text'),       \r\npic_url: parseDom(list[j], 'img&&data-original'),       \r\nurl: $(parseDom(list[j], 'a&&href')).lazyRule(() => {\n     var url = fetch(input,{});\n     if(url.includes(\"m3u8\")){\n      return 'https://m3u8.41cdn.com'+fetch(input).match(/\\+\"(.*?)\"/)[1]\n  }else {return \"pics://\"+parseDom(fetch(input,{}),'.pic&&Html').match(/http.*?jpg/g).join('&&')}\n}),\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.4hudy883.com/e/search/result/index.php?page=fypage@-1@&searchid=#https://www.4hudy883.com/e/search/index.php#keyboard=**&show=title&tempid=1&tbname=movie&Submit22=%E6%90%9C%E7%B4%A2","group":"⑤①📽️敦伦","detail_col_type":"text_2","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\ntry{\nvar list = parseDomForArray(html,\n'.channel-list&&dl');\r\nfor (var j = 0; j < list.length; j++) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], 'i&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-original'),\r\n       url: $(parseDom(list[j], 'a&&href')).lazyRule(() => {\n     var url = fetch(input,{});\n     if(url.includes(\"m3u8\")){\n      return 'https://m3u8.41cdn.com'+fetch(input).match(/\\+\"(.*?)\"/)[1]\n  }else {return \"pics://\"+parseDom(fetch(input,{}),'.pic&&Html').match(/http.*?jpg/g).join('&&')}\n}),\n       col_type: 'movie_2'\r\n  });\r\n}}catch(e){\nvar list = parseDomForArray(html, '.channel-list&&dl');\r\nfor (var j = 0; j < list.length; j++) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       url: parseDom(list[j],'a&&href')+ `@rule=js:var res = {};var d = [];d.push({title:parseDomForHtml(getResCode(),'body&&.wrap,1&&div:not(.textlink)&&Html').replace(/<p><br><\\\\/p>/g,'').split('加入收藏夹')[1].replace(/br/g,''),col_type:'rich_text'});res.data = d;setHomeResult(res);`,\n       col_type: 'text_1'\r\n  });\r\n}\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1_vertical_pic","sdetail_find_rule":"","ua":"mobile","preRule":"/*\nhttp://{host}.js:input.replace('http://{host}',getVar('SHYY'))\nif(!getVar('SHYY')){\nlet host = parseDomForHtml(request('https://www.aut456.com/'),'article&&p&&a&&href');\nputVar('SHYY',host);\n}\n*/","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"SpankBang","author":"TyrantGenesis","version":1,"type":"other","url":"https://spankbang.com/fyclass/fypage/","col_type":"movie_3","class_name":"最新&热门&最受欢迎","class_url":"new_videos&trending_videos&most_popular","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet res = {};\nlet d = [];\nconst html = getResCode();\n\nconst list = parseDomForArray(html, '.video-list&&.video-item');\nlist.forEach(item => {\n  d.push({\n\ttitle: parseDomForHtml(item, '.name&&Text'),\n\tdesc: parseDomForHtml(item, '.l&&Text'),\n\tpic_url: parseDom(item, '.cover&&data-src'),\n\turl: parseDom(item,'a&&href'),\n   col_type: 'movie_3',\n  });\n})\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nlet res = {};\nlet d = [];\nconst html = getResCode();\n\nconst list = parseDomForArray(html, '.video-list&&.video-item');\nlist.forEach(item => {\n  d.push({\n\ttitle: parseDomForHtml(item, '.name&&Text'),\n\tdesc: parseDomForHtml(item, '.l&&Text'),\n\tpic_url: parseDom(item, '.cover&&data-src'),\n\turl: parseDom(item,'a&&href'),\n  });\n})\n\nres.data = d;\nsetHomeResult(res);","search_url":"https://spankbang.com/s/**/fypage/","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nlet res = {};\nlet d = [];\nconst html = getResCode();\n\nconst script = parseDomForHtml(html, '#inner_content&&script&&Html');\neval(script)\n\nd.push({\n   pic_url: stream_data.cover_image,\n\tcol_type: 'pic_1'\n});\n\n\nif (stream_data['240p'].length > 0) {\n  d.push({\n    title: '240p',\n    url: stream_data['240p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['320p'].length > 0) {\n  d.push({\n    title: '320p',\n    url: stream_data['320p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['480p'].length > 0) {\n  d.push({\n    title: '480p',\n    url: stream_data['480p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['720p'].length > 0) {\n  d.push({\n    title: '720p',\n    url: stream_data['720p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['1080p'].length > 0) {\n  d.push({\n    title: '1080p',\n    url: stream_data['1080p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['4k'].length > 0) {\n  d.push({\n    title: '4k',\n    url: stream_data['480p'][0],\n    col_type: 'text_2'\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nlet res = {};\nlet d = [];\nconst html = getResCode();\n\nconst script = parseDomForHtml(html, '#inner_content&&script&&Html');\neval(script)\n\nd.push({\n   pic_url: stream_data.cover_image,\n\tcol_type: 'pic_1'\n});\n\n\nif (stream_data['240p'].length > 0) {\n  d.push({\n    title: '240p',\n    url: stream_data['240p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['320p'].length > 0) {\n  d.push({\n    title: '320p',\n    url: stream_data['320p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['480p'].length > 0) {\n  d.push({\n    title: '480p',\n    url: stream_data['480p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['720p'].length > 0) {\n  d.push({\n    title: '720p',\n    url: stream_data['720p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['1080p'].length > 0) {\n  d.push({\n    title: '1080p',\n    url: stream_data['1080p'][0],\n    col_type: 'text_2'\n  });\n}\nif (stream_data['4k'].length > 0) {\n  d.push({\n    title: '4k',\n    url: stream_data['480p'][0],\n    col_type: 'text_2'\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/wXvNTWR4.jpg"},{"last_chapter_rule":"js:\neval(fetch('hiker://files/rules/timik/zywcj.js'));chapter();","title":"资源网采集","author":"timik","version":2,"type":"video","url":"hiker://files/rules/timik/zywcj.txt","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/timik/zywcj.js'));zywhm();","searchFind":"js:\neval(fetch('hiker://files/rules/timik/zywcj.js'));zywsea();","search_url":"hiker://$$$?wd=**&pg=1&ac=list$$$fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/rules/timik/zywcj.js',{}));\nTWEJ();","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/rules/timik/zywcj.js'));zywerj();","ua":"mobile","preRule":"function uprulefile() {\n    try {\n        var ruletxt = fetch('https://gitlab.com/timiking/HikerRules/-/raw/master/zywcj/zywcj.txt', {});\n        var rulejs = fetch('https://gitlab.com/timiking/HikerRules/-/raw/master/zywcj/zywcj.js', {});\n    } catch (e) {\n        rulejs = \"\";\n        ruletxt = \"\";\n    }\n    if (rulejs.search(/lazyRule/) != -1) {\n        writeFile(\"hiker://files/rules/timik/zywcj.js\", rulejs);\n        writeFile(\"hiker://files/rules/timik/zywcj.txt\", ruletxt);\n    } else {\n        setError('规则文件获取失败，可能网络有问题。')\n    };\n};\n\n//检测是否有规则与JS文件\nif (fileExist(\"hiker://files/rules/timik/zywcj.js\") && fileExist(\"hiker://files/rules/timik/zywcj.txt\")) {\n    //执行预处理\n    var lac = fetch('hiker://files/rules/timik/zywcj.js');\n    if (lac.search(/lazyRule/) != -1) {\n        eval(lac);\n    } else {\n        //如果本地文件不对将尝试自修复\n        eval(fetch('hiker://files/rules/timik/zywcj.js'));\n        zywpre();\n    };\n} else {\n    uprulefile();\n    //执行预处理\n    eval(fetch('hiker://files/rules/timik/zywcj.js'));\n    zywpre();\n};","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"聚合直播","author":"","version":0,"type":"live","url":"http://api.hclyz.com:81/mf/jsonfyAll.txt","col_type":"movie_3","class_name":"龙珠&映客&逗艳&咪狐&红高粱&咪咪&艾克&小仙女&小红帽&爱爱你&十八禁&盘他&樱花雨i&七仙女s&爱零&卡哇伊&夜色&Gboy&桃花运&蝴蝶&一直播&优乐美&小天仙&小米粒&红浪漫&月漫&夜妖姬&糯米&花上云&花房&小坏蛋&飘雪&小公主&奥斯卡&卡路里&付宝&小黄书&二嫂&花夏&花果山&云鹿&菠萝&星宝贝&喵小姐&夜艳&兰桂坊","class_url":"longzhu&yingke&douyan&mihu&honggaoliang&mimi&aike&xiaoxiannu&xiaohongmao&aiaini&shibajin&panta&yinghuayui&qixiannus&ailing&kawayi&yese&Gboy&taohuayun&hudie&yizhibo&youlemei&xiaotianxian&xiaomili&honglangman&yueman&yeyaoji&nuomi&huashangyun&huafang&xiaohuaidan&piaoxue&xiaogongzhu&aosika&kaluli&fubao&xiaohuangshu&ersao&huaxia&huaguoshan&yunlu&boluo&xingbaobei&miaoxiaojie&yeyan&languifang","area_name":"Dancelife&小萌猪&套路&蝴蝶飞&幽梦&番茄社区&丽柜厅&花妃子&蛟龙&颜如玉&橙秀&豹娱l&小花螺&皇后&心之恋&美国AM&欧美FEATURED&欧美FEMALE&欧美MALE&欧美COUPLE&欧美TRANS&台妹l&欲梦&花间&爱恋&903娱乐&抖阴&九尾狐&伊甸园&筱颖&小蜜蜂&娇媚&好基友&sky&娇喘&芒果派&坦克&夜女郎&蜜桃&九点&色趣&尤物岛&媚颜&夜来香&风流&夜律&玲珑","area_url":"Dancelife&xiaomengzhu&taolu&hudiefei&youmeng&fanjiashequ&liguiting&huafeizi&jiaolong&yanruyu&chengxiu&baoyul&xiaohualuo&huanghou&xinzhilian&meiguoAM&oumeiFEATURED&oumeiFEMALE&oumeiMALE&oumeiCOUPLE&oumeiTRANS&taimeil&yumeng&huajian&ailian&903yule&douyin&jiuweihu&yidianyuan&xiaoying&xiaomifeng&jiaomei&haojiyou&sky&jiaochuan&mangguopai&\r\ntanke&yenulang&mitao&jiudian&sequ&youwudao&meiyan&yelaixiang&fengliu&yelu&linglong","sort_name":"","year_name":"浴火&翠鸟&幸运星&她秀&招财猫&双碟&糖果&么么哒&小性感&小喵宠&兔女郎&睡美人&金呗&美夕&小妖&约直播&花仙子&土豪&红妆&妞妞&艳后&萌妹&思乐&moon&小迷妹&爽约&甜咪&蓝猫&美人妆&入巷&持久男&倾心&小精灵&蜗牛&偶遇&灰灰&猫头鹰&喜欢你&小魔女&加特林&夜纯&杏播&名流&小辣椒&蚊香社&牵手&情趣","sort_url":"","year_url":"yuhuo&cuiniao&xingyunxing&taxiu&zhaocaimao&shuangdie&tangguo&memeda&xiaoxinggan&xiaomiaochong&tunulang&shuimeiren&jinbei&meixi&xiaoyao&yuezhibo&huaxianzi&tuhao&hongzhuang&niuniu&yanhou&mengmei&sile&moon&xiaomimei&shuangyue&tianmi&lanmao&meirenzhuang&ruxiang&chijiunan&qingxin&xiaojingling&woniu&ouyu&huihui&maotouying&xihuanni&xiaomonu&jiatelin&yechun&xingbo&mingliu&xiaolajiao&wenxiangshe&qianshou&qingqu","find_rule":"js: \nvar s = getResCode(); \nvar json={}; \neval('json=' + s);\nvar res = {};\nvar d = [];\nfor(var i=0;i<json.zhubo.length;i++) {\n var j = json.zhubo[i];\n var r = {};\n if(j.address.search(/rtmp/i)==-1) {\n r.pic_url = j.img;\n r.title = j.title;\n r.url = j.address;\n d.push(r)\n}\n \n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜MissAV","author":"//2022/","version":0,"type":"video","url":"https://missav888.com/cn/fyAll?page=fypage;get;UTF-8;{User-Agent@Windows}","col_type":"pic_1_card","class_name":"流出&最新&新作&本日&本周&本月","class_url":"uncensored-leak&new&release&today-hot&weekly-hot&monthly-hot","area_name":"SIRO&LUXU&200GANA&PRESTIGE PREMIUM&S-CUTE&ARA&","area_url":"siro&luxu&200gana&300maan&scute&ara&","sort_name":"中字&麻豆&台湾","year_name":"FC2&HEYZO&东京热&一本道&Caribbeancom&Caribbeancompr&10musume&pacopacomama&Gachinco&XXX-AV&人 妻 斩&顽皮 4610&顽皮 0930","sort_url":"chinese-subtitle&madou&twav","year_url":"fc2&heyzo&tokyohot&1pondo&caribbeancom&caribbeancompr&10musume&pacopacomama&gachinco&xxxav&marriedslash&naughty4610&naughty0930","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, '.grid&&.thumbnail');\nif (MY_URL.match(/page=1/)) {\n    d.push({   \n        title: \"搜索\",\n           url: \"'hiker://search?s='+input+'&rule='+ MY_RULE.title\",\n           desc: \"请输入搜索关键词\",\n           col_type: \"input\",\n    })\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'line_blank'\n    });\n};\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.my-2&&Text'),\n        desc: pdfh(list[j], '.absolute&&Text'),\n        img: pd(list[j], '.lozad&&data-src') + '@Referer=',\n        url: $(pd(list[j], 'a&&href'), 'Html').lazyRule((MY_HOME) => {\n            input = eval(input.match(/eval.*?\\n/)[0]).replace('missav','missav888').replace('playlist', '1280x720/video')\n            var m3u8 = fetch(input, {\n                headers: {\n                    'Referer': MY_HOME\n                }\n            }).replace(/(#EXTINF:.*?,\\n)/g, '$1' + input.replace('video.m3u8', ''))\n            writeFile('hiker://files/cache/videos.m3u8', m3u8);\n            return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/videos.m3u8#' + input + ';{Referer@'+MY_HOME+'}'\n        },MY_HOME)\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, '.grid&&.thumbnail');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.my-2&&Text'),\n        desc: pdfh(list[j], '.absolute&&Text'),\n        img: pd(list[j], '.lozad&&data-src') + '@Referer=',\n        url: $(pd(list[j], 'a&&href'), 'Html').lazyRule((MY_HOME) => {\n            input = eval(input.match(/eval.*?\\n/)[0]).replace('missav','missav888').replace('playlist', '1280x720/video')\n            var m3u8 = fetch(input, {\n                headers: {\n                    'Referer': MY_HOME\n                }\n            }).replace(/(#EXTINF:.*?,\\n)/g, '$1' + input.replace('video.m3u8', ''))\n           log(m3u8)\nwriteFile('hiker://files/cache/videos.m3u8', m3u8);\n            return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/videos.m3u8#' + input + ';{Referer@'+MY_HOME+'}'\n        },MY_HOME)\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"/cn/search/**?page=fypage;get;UTF-8;{User-Agent@Windows}","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/BqnvWGfD.jpg"},{"last_chapter_rule":"","title":"🪜pornhub","author":"TyrantGenesis","version":3,"type":"video","url":"https://cn.pornhub.com/video?o=fyclass&cc=fyarea&page=fypage","col_type":"movie_2","class_name":"最热门&次数多","class_url":"ht&mv","area_name":"美国&日本&韩国&阿根廷&澳大利亚&奥地利&比利时&巴西&加拿大&法国&德国&乌克兰","area_url":"us&jp&kr&ar&au&at&be&br&ca&fr&de&ua","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.videoThumb&&src;\n.time&&Text;\n.title&&a&&Attrhref","searchFind":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.title&&a&&Attrhref;\n.time&&Text;\n.title&&a&&Text;\n.videoThumb&&data-thumb_url","search_url":"https://cn.pornhub.com/video/search?search=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1_left_pic","detail_find_rule":"js:\neval(fetch('hiker://files/TyrantG/GHS/pornhub.js'))\nsecParse()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\npornhub()","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/nLGvzGjv.jpg"},{"last_chapter_rule":"","title":"🪜Jable","author":"TyrantGenesis","version":1,"type":"other","url":"https://jable.tv/fyAll/fypage/?from=fypage","col_type":"movie_2","class_name":"热门&最新","class_url":"hot&new-release","area_name":"主奴調教&直接開啪&中文字幕&凌辱強暴&制服誘惑&角色劇情&盜攝偷 拍&無碼解放&男友視角&多P群交&絲襪美腿&女同歡愉","area_url":"categories/bdsm&categories/sex-only&categories/chinese-subtitle&categories/rape&categories/uniform&categories/roleplay&categories/hidden-cam&categories/uncensored&categories/pov&categories/groupsex&categories/pantyhose&categories/lesbian","sort_name":"","year_name":"3P&4小時以上&Cosplay&NTR&OL&一日十回&下雨天&不倫&中出&主播&乳交&人 妻&便利店&健身房&偶像&偷 拍&催眠&兔女郎&凌辱&出軌&刑具&口交&口 爆&吊帶襪&和服&圖書館","sort_url":"","year_url":"tags/3p&tags/more-than-4-hours&tags/Cosplay&tags/ntr&tags/ol&tags/10-times-a-day&tags/rainy-day&tags/incest&tags/creampie&tags/female-anchor&tags/tit-wank&tags/wife&tags/store&tags/gym-room&tags/idol&tags/hidden-cam&tags/hypnosis&tags/bunny-girl&tags/insult&tags/affair&tags/torture&tags/blowjob&tags/cum-in-mouth&tags/stockings&tags/kimono&tags/library","find_rule":".site-content&&.video-img-box;h6&&a&&Text;img&&data-src;.label&&Text;a&&href","searchFind":".site-content&&.video-img-box;h6&&a&&Text;a&&href;.label&&Text;h6&&a&&Text;img&&data-src","search_url":"https://jable.tv/search/**/?from_videos=fypage&from_albums=fypage","group":"⑤①📽️敦伦","detail_col_type":"pic_1","detail_find_rule":"","sdetail_col_type":"pic_1movie_1","sdetail_find_rule":".site-content;.header-left&&h4&&Text;video&&poster;.tags&&Text;link&&href","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2023/01/06/pSEmjQx.jpg"},{"last_chapter_rule":"","title":"🪜伊甸园","author":"Timik","version":1,"type":"video","url":"https://www.84ike76k.xyz/api/video/videoList?JsonBody={fyAll,\"page\":fypage,\"pagesize\":10};POST","col_type":"movie_2","class_name":"热门女​优&动漫&欧美&国产精品&韩国&短视频&保健室&恐怖","class_url":"\"category_id\":2,\"category_ids\":45&\"category_id\":2,\"category_ids\":35&\"category_id\":2,\"category_ids\":34&\"category_id\":2,\"category_ids\":74&\"category_id\":2,\"category_ids\":75&\"category_id\":2,\"category_ids\":84&\"category_id\":2,\"category_ids\":85&\"category_id\":2,\"category_ids\":86","area_name":"玩偶姐姐&铁杆摘花&刘玥&AV解说&强​奸轮奸&SWAG&无​码&调教","area_url":"\"category_id\":145,\"category_ids\":146&\"category_id\":145,\"category_ids\":147&\"category_id\":145,\"category_ids\":148&\"category_id\":145,\"category_ids\":149&\"category_id\":145,\"category_ids\":150&\"category_id\":145,\"category_ids\":151&\"category_id\":145,\"category_ids\":152&\"category_id\":145,\"category_ids\":153","sort_name":"康先生&夯先生&风月海棠&苍先生&风吟鸟&小青蛙&约约哥&探花系列","year_name":"麻豆&天美&星空&果冻&乌鸦&精东&乐播&蜜桃","sort_url":"\"category_id\":63,\"category_ids\":76&\"category_id\":63,\"category_ids\":77&\"category_id\":63,\"category_ids\":78&\"category_id\":63,\"category_ids\":79&\"category_id\":63,\"category_ids\":80&\"category_id\":63,\"category_ids\":81&\"category_id\":63,\"category_ids\":82&\"category_id\":63,\"category_ids\":83","year_url":"\"category_id\":107,\"category_ids\":108&\"category_id\":107,\"category_ids\":109&\"category_id\":107,\"category_ids\":110&\"category_id\":107,\"category_ids\":111&\"category_id\":107,\"category_ids\":112&\"category_id\":107,\"category_ids\":113&\"category_id\":107,\"category_ids\":114&\"category_id\":107,\"category_ids\":115","find_rule":"js:\nvar res = {};\nvar json = JSON.parse(getCode());\nvar list = json.data.list;\nvar items = list.map(data => ({\n     title: data.name,\n     pic_url: fetch(data.image_url).replace(\",ydy_,\", \",\"),\n     url: data.play_fullurl + \"#isVideo=true#\"\n }));\n res.data = items;\n setHomeResult(res);","searchFind":"js:\nvar res = {};\nvar json = JSON.parse(getCode());\nvar list = json.data.list;\n var items = list.map(data => ({\n     title: data.name,\n     pic_url: fetch(data.image_url).replace(\",ydy_,\", \",\"),\n     url: $(data.id).lazyRule((MY_HOME)=>{\n         apis_url = MY_HOME + \"/api/video/videoDetail\"\n         data = JSON.parse(post(apis_url, {\n             body: {\n                 video_id: input\n             }\n         })).data;\n         return data.play_fullurl;\n     }, MY_HOME)\n }));\n res.data = items;\n setHomeResult(res);","search_url":"/api/video/search?keyword=**&page=fypage&pagesize=10;POST","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"/*\n伊甸园：\nhttps://www.ydyse.com\n*/","pages":"[]","proxy":"","icon":"https://www.84ike76k.xyz/static/logo.png"},{"last_chapter_rule":"","title":"🪜KINDGIRLS","author":"幼稚鬼","version":0,"type":"video","url":"https://www.kindgirls.com/video-archive.php?p=fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\ntry{\nvar  list  =  parseDomForArray(getResCode(), 'body&&.video_list');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  'a&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url: parseDom(list[j], 'a&&href') + '@lazyRule=source&&src'\n    });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜av6k","author":"夜风","version":0,"type":"video","url":"https://av6k.com/fyAll_fypage.html","col_type":"movie_3","class_name":"中文字幕&日韓&泰剧","class_url":"jxny/11&rihanyouma/3&3","area_name":"","area_url":"","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nlog(MY_URL)\nvar list = parseDomForArray(html, 'body&&.listAC');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'img&&alt'),\n        desc: parseDomForHtml(list[j], ''),\n        img: parseDom(list[j], 'img&&src')+'@Referer=',\n        url: parseDom(list[j], 'a&&href')\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.listbox&&li');//列表\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'img&&alt'),//标题\n        content:pdfh(list[j], '.otherinfo&&Text')+'\\n'+'评分:'+parseDomForHtml(list[j], '.listbox-score&&Text'),//详情\n        desc: parseDomForHtml(list[j], '.listbox-remarks&&Text'),//简介\n        img: parseDom(list[j], 'a&&img&&data-echo')+'@Referer=',//图片\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'//链接\n    });\n}\nsetResult(d);","search_url":"https://www.tvn.cc/index.php?s=vod-search&wd=**","group":"⑤①📽️敦伦","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar des_pic = parseDom(html, '.video-img&&img&&src'); //图片\nvar conts = parseDom(html, 'body&&Html').match(/var sp_m3u8[\\s\\S]*?'\\)/g);\n//error(conts)\nd.push({\n    title: parseDomForHtml(html, '.metadata&&Text'),\n            pic_url: des_pic + '@Referer=',\n            url: getUrl(),\n\n            col_type: 'pic_1'\n\n});\nfor (var i = 0; i < conts.length; i++) {\n\n            \n    var list = conts[i].match(/h[\\s\\S]*?.m3u8/g);\n    //var list = list[0]\n    //log(lisg)\n            \n    if (list != null) {\n\n                          \n        d.push({\n\n                                       \n            title: '列表:',\n\n                                   col_type: 'text_1',\n            extra: {\n                lineVisible: false\n            }                  \n        }); //FFTQ\n\n                          \n        for (var j = 0; j < list.length; j++) {\n\n                                       \n            d.push({\n\n                                                    \n                title: '‘‘’’<small><font color=\"#228be6\">' + '在线播放' + '</font></small>',\n\n                                                    url: list[0],\n\n                                           \n            });\n\n                              \n        }\n\n                \n    }\n\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜WeAV","author":"JOKER","version":144,"type":"video","url":"https://weav.xyz/fyAll/fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"movie_1_left_pic","class_name":"全部&日本无碼&日本有碼&欧美&VR&推荐&最佳","class_url":"categories/all&jav/uncensored&jav/censored&eu&vr&categories/recommended&video/best/2023-01","area_name":"","area_url":"","sort_name":"三上悠亚&JULIA&miru&明里䌷&星宫一花&米倉穗香&桥本有菜&天使萌&相泽南&叶愛&森沢&早野诗&深田咏美&篠田优&岬ななみ&山岸逢花&波多野結衣&大桥未久&桃乃木かな&白石茉莉奈&リリー・ハート&栗山莉緒&希島あいり&神宮寺ナオ&松下紗栄子&河北彩花&佐山愛&神木麗&斎藤あみり&瀬乃みなみ&本庄鈴&七ツ森りり&広瀬りおな&八掛うみ&涼森れむ&伊藤舞雪&有坂深雪&仲村みう&有栖花あか&安齋らら&天音まひな&宮下玲奈&つばさ舞&恋渕ももな&小宵こなん&冲田杏梨&工藤ララ&皆月ひかる&松岡すず&桜井あゆ&立花美涼&石原莉奈&里美ゆりあ&新村あかり&田中瞳","year_name":"","sort_url":"jav/actress/三上悠亜&jav/actress/JULIA&jav/actress/miru&jav/actress/明里䌷&jav/actress/星宫一花&jav/actress/米倉穂香&jav/actress/桥本有菜&jav/actress/天使萌&/jav/actress/相泽南&jav/actress/叶愛&jav/actress/森沢かな（飯岡かなこ）&jav/actress/はやのうた&jav/actress/深田咏美&jav/actress/篠田优&jav/actress/岬ななみ&jav/actress/山岸逢花&jav/actress/波多野結衣&jav/actress/Miku Ohashi&jav/actress/桃乃木かな&jav/actress/白石茉莉奈&jav/actress/リリー・ハート&jav/actress/栗山莉緒&jav/actress/希島あいり&jav/actress/神宮寺ナオ&jav/actress/松下紗栄子&jav/actress/河北彩花&jav/actress/佐山愛&jav/actress/神木麗&jav/actress/斎藤あみり&jav/actress/瀬乃みなみ&jav/actress/本庄鈴&jav/actress/七ツ森りり&jav/actress/広瀬りおな&jav/actress/八掛うみ&jav/actress/涼森れむ&jav/actress/伊藤舞雪&jav/actress/有坂深雪&jav/actress/仲村みう&jav/actress/有栖花あか&jav/actress/安齋らら&jav/actress/天音まひな&jav/actress/宮下玲奈&jav/actress/つばさ舞&jav/actress/恋渕ももな&jav/actress/小宵こなん&jav/actress/冲田杏梨&jav/actress/工藤ララ&jav/actress/皆月ひかる&jav/actress/松岡すず&jav/actress/桜井あゆ&jav/actress/立花美涼&jav/actress/石原莉奈&jav/actress/里美ゆりあ&jav/actress/新村あかり&jav/actress/Hitomi（田中瞳）","year_url":"","find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = []; //自定义一个 空数组\nvar html = getResCode();\nlog(MY_URL)\n\n\nvar lbb_a = pdfa(html, '.video-list&&.avdata-outer');\n\nfor (var i in lbb_a) {\n    标题 = pdfh(lbb_a[i], '.av_data_title&&Text')\n    图片 = pdfh(lbb_a[i], '.lazy&&data-src')\n    描述 = pdfh(lbb_a[i], '.duration&&Text')\n    链接 = pdfh(lbb_a[i], '.av-link&&href')\n\n    d.push({\n        title: 标题,\n        img: 图片,\n        url: 'https://thep211.cc' + 链接 +`@lazyRule=.js:var a=fetch(input).match(/\"m3u8_url\": \"(.*?)\"/)[1]; \"https://weav.xyz\"+a`,   \n        desc: 描述,\n    });\n\n\n\n\n}\n\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\n\n\nvar lbb_a = pdfa(html,'.video-list&&.avdata-outer');\n\nfor (var i in lbb_a) {\n标题=pdfh(lbb_a[i],'.av_data_title&&Text')\n图片=pdfh(lbb_a[i],'.lazy&&data-src')\n描述=pdfh(lbb_a[i],'.duration&&Text')\n链接=pdfh(lbb_a[i],'.av-link&&href')\n\nd.push({\ntitle:标题,\nimg:图片,\nurl:'https://weav.xyz'+链接+`@lazyRule=.js:var a=fetch(input).match(/\"m3u8_url\": \"(.*?)\"/)[1]; \"https://weav.xyz\"+a`,\ndesc:描述,\n});\n\n\n        \n\n}\n\n\nres.data = d;\nsetHomeResult(res);","search_url":"/search/**/fypage","group":"⑤①📽️敦伦","detail_col_type":"pic_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://weav.xyz/static/logo-weav.png?1"},{"last_chapter_rule":"","title":"🪜18禁漫社","author":"230129","version":0,"type":"video","url":"https://vod.18jms.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.list&&li')\nvar lazy = $('').lazyRule(() => {\n        return JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url\n});\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, '.name&&Text'),\n        desc: pdfh(item, 'span&&Text'),\n        pic_url: pd(item, 'img&&src'),\n        url: pd(item, 'a&&href').replace(\"detail\",\"play\").replace(\".html\",\"-1-1.html\")+lazy\n            })\n});\nsetResult(d)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://vod.18jms.com/template/xigua/images/logo.png"},{"last_chapter_rule":"","title":"🪜丁香视频","author":"","version":0,"type":"video","url":"https://mtav7.xyz/b/1b.php?id=fyclass&page=fypage","col_type":"movie_2","class_name":"国产&主播&精品&无码&有码&字幕&伦理&美乳&欧美&少女&制服&人妻&动漫&","class_url":"1&21&31&2&3&20&28&25&23&24&26&21&22&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nvar res = {};\nvar d = [];\nvar html=getResCode();\n  \nvar 列表= 'body&&.video-elem';\nvar 标题= 'a,1&&Text';\nvar 图片= '.img&&data-original';\nvar lazy = $('').lazyRule(() => {\n    return request(input).match(/src = '(.*?)'/)[1].replace('正片$','')\n})\n\nvar list = parseDomForArray(html, 列表);\nfor (var j in list) {\nd.push({\ntitle: parseDomForHtml(list[j], 标题),\npic_url:parseDomForHtml(list[j], 图片),\nurl: parseDom(list[j],'a&&href')+lazy,\n\n});\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\n\nvar res = {};\nvar d = [];\nvar html=getResCode();\n  \nvar 列表= 'body&&.video-elem';\nvar 标题= 'a,1&&Text';\nvar 图片= '.img&&data-original';\nvar lazy = $('').lazyRule(() => {\n    return request(input).match(/src = '(.*?)'/)[1].replace('正片$','')\n})\n\nvar list = parseDomForArray(html, 列表);\nfor (var j in list) {\nd.push({\ntitle: parseDomForHtml(list[j], 标题),\npic_url:parseDomForHtml(list[j], 图片),\nurl: parseDom(list[j],'a&&href')+lazy,\n\n});\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://mtav7.xyz/b/1c.php?id=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜XNXX","author":"dy2020","version":20230221,"type":"video","url":"hiker://empty##https://www.xnxx.com/fyclass/fypage@-1@#","col_type":"movie_3","class_name":"首页&涩情明星&最佳影片&点击排行&标签","class_url":"index&pornstars&best/2023-01&hits&tags","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.split('##')[1];\nvar d = [];\nif (MY_PAGE == 1) {\n    d.push({\n        title: \"🔍\",\n        url: $.toString((r) => {\n            putVar('keyword', input);\n            return 'hiker://search?rule=' + r + '&s=' + input;\n        }, MY_RULE.title),\n        desc: '搜你想要的...',\n        col_type: \"input\",\n        extra: {\n            defaultValue: getVar('keyword', '') || \"\",\n        }\n    });\n}\nvar true_url = /danmaku/.test(MY_URL) ? MY_URL.replace('page/', '') : MY_URL;\nif (/index/.test(true_url)) {\n    true_url = true_url.replace(/index.*/, '');\n    var html = fetch(true_url);\n    log(true_url);\n    eval(JSON.parse(fetch('hiker://page/index?rule=' + MY_RULE.title)).rule);\n} else if (/pornstar/.test(true_url)) {\n    true_url = true_url.replace(/#/, '');\n    var html = fetch(true_url);\n    log(true_url);\n    eval(JSON.parse(fetch('hiker://page/channels?rule=' + MY_RULE.title)).rule);\n} else if (/tags/.test(true_url)) {true_url = true_url.replace(/tags.*/, 'tags');\n    var html = fetch(true_url);\n    eval(JSON.parse(fetch('hiker://page/keywords?rule=' + MY_RULE.title)).rule);\n} else {\n    var html = fetch(true_url);\n    var list = pdfa(html, 'body&&.thumb-block');\n    list.forEach(function(list) {\n        d.push({\n            title: pdfh(list, '.name&&Text'),\n            img: pdfh(list, 'img&&data-src'),\n            desc: pdfh(list, '.thumb-under&&Text') + '  ' + pdfh(list, '.metadata&&Text'),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var url = fetch(input).match(/http.+?m3u8/)[0];\n                var html = fetch(url);\n                if (/1080p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-1080p.+?m3u8/)[0];\n                } else if (/720p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-720p.+?m3u8/)[0];\n                } else if (/480p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-480p.+?m3u8/)[0];\n                } else if (/360p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-360p.+?m3u8/)[0];\n                }\n                url = url.replace('hls.m3u8', url_tmp);\n                //var video = 'video://' + input;\n                return url;\n            }),\n        });\n    });\n}\nsetResult(d);","searchFind":"js:\nlog(MY_URL);\nvar d = [];\nvar html = fetch(MY_URL);\n//var html = fetch(true_url);\n    var list = pdfa(html, 'body&&.thumb-block');\n    list.forEach(function(list) {\n        d.push({\n            title: pdfh(list, '.name&&Text'),\n            img: pdfh(list, 'img&&data-src'),\n            desc: pdfh(list, '.thumb-under&&Text') + '  ' + pdfh(list, '.metadata&&Text'),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var url = fetch(input).match(/http.+?m3u8/)[0];\n                var html = fetch(url);\n                if (/1080p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-1080p.+?m3u8/)[0];\n                } else if (/720p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-720p.+?m3u8/)[0];\n                } else if (/480p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-480p.+?m3u8/)[0];\n                } else if (/360p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-360p.+?m3u8/)[0];\n                }\n                url = url.replace('hls.m3u8', url_tmp);\n                //var video = 'video://' + input;\n                return url;\n            }),\n        });\n    });\nsetResult(d);","search_url":"https://www.xnxx.com/search/**/fypage@-1@#","group":"⑤①📽️敦伦","detail_col_type":"movie_3","detail_find_rule":"js:\nif (/##/.test(MY_URL)) {\n    MY_URL = MY_URL.split('##')[1];\n}\nMY_URL = MY_URL.replace(/#/, '');\nif (/selection/.test(MY_URL)) {\n    MY_URL = MY_URL.replace('selection/0', 'selection/');\n}\nlog(MY_URL);\nvar d = [];\nvar html = fetch(MY_URL);\nif (/pornstar/.test(MY_URL)) {\n    log(html)\n    var list = JSON.parse(html).videos;\n    list.forEach(function(list) {\n        d.push({\n            title: list.t,\n            img: list.i,\n            url: $('https://www.xnxx.com' + list.u).lazyRule(() => {\n                var url = fetch(input).match(/http.+?m3u8/)[0];\n                var html = fetch(url);\n                if (/1080p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-1080p.+?m3u8/)[0];\n                } else if (/720p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-720p.+?m3u8/)[0];\n                } else if (/480p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-480p.+?m3u8/)[0];\n                } else if (/360p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-360p.+?m3u8/)[0];\n                }\n                url = url.replace('hls.m3u8', url_tmp);\n                //var video = 'video://' + input;\n                return url;\n            }),\n        });\n    });\n} else {\n    var list = pdfa(html, 'body&&.thumb-block');\n    list.forEach(function(list) {\n        d.push({\n            title: pdfh(list, '.name&&Text'),\n            img: pdfh(list, 'img&&data-src'),\n            desc: pdfh(list, '.thumb-under&&Text') + '  ' + pdfh(list, '.metadata&&Text'),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var url = fetch(input).match(/http.+?m3u8/)[0];\n                var html = fetch(url);\n                if (/1080p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-1080p.+?m3u8/)[0];\n                } else if (/720p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-720p.+?m3u8/)[0];\n                } else if (/480p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-480p.+?m3u8/)[0];\n                } else if (/360p/.test(html)) {\n                    var url_tmp = fetch(url).match(/hls-360p.+?m3u8/)[0];\n                }\n                url = url.replace('hls.m3u8', url_tmp);\n                //var video = 'video://' + input;\n                return url;\n            }),\n        });\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"//https://nneam.top","pages":"[{\"col_type\":\"movie_3\",\"name\":\"index\",\"path\":\"index\",\"rule\":\"js:\\n//log(pdfh(html, 'body&&script,1&&Html'));\\ntry {\\n    var list = JSON.parse(pdfh(html, 'body&&script,1&&Html').match(/\\\\[\\\\{.*}]/)[0]);\\n}catch(e){\\n    var list = JSON.parse(pdfh(html, 'body&&script,2&&Html').match(/\\\\[\\\\{.*}]/)[0]);\\n}\\n//log(list);\\nlist.forEach(function(list) {\\n    d.push({\\n        title: list.t,\\n        img: list.i,\\n        url: 'hiker://empty##https://www.xnxx.com' + list.u.replace(/\\\\?id.*/, '') + '/fypage@-1@#',\\n    });\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"channels\",\"path\":\"channels\",\"rule\":\"js:\\nvar list = pdfa(html, 'body&&.thumb-block');\\n//log(list);\\nlist.forEach(function(list) {\\n    d.push({\\n        title: pdfh(list, '.title&&Text'),\\n        img: list.match(/http.+?\\\\.jpg/)[0],\\n        url: 'hiker://empty##' + pd(list, '.title&&Text').replace('pornstars','pornstar').replace(/ /g,'-').toLowerCase() + '/videos/best/fypage@-1@?from=goldtab',\\n    });\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"keywords\",\"path\":\"keywords\",\"rule\":\"js:\\nvar list = pdfa(html, 'body&&#tags&&li');\\nlist.forEach(function(list) {\\n    d.push({\\n        title:  pdfh(list, 'a&&Text')+'  '+pdfh(list, 'strong&&Text'),\\n        url: pd(list, 'a&&href') + '/fypage@-1@#',\\n        col_type: 'flex_button'\\n    });\\n});\\nd.push({\\n    col_type: 'line'\\n});\"}]","proxy":"","icon":"https://img1.imgtp.com/2023/02/16/dy0FC7w8.png"},{"last_chapter_rule":"","title":"🪜Xvideos","author":"Timik","version":0,"type":"other","url":"https://www.xvideos.com/fyclass/fypage","col_type":"movie_2","class_name":"巨屌&巨乳&巨臀&口交&女同&喷出&中出\n&ASMR&肛交&乱搞&成熟&阿拉伯&中&韩&日\n&泰&少女&黑人&金发&褐发&红发&颜射\n&群交&自慰&家庭&辣妈&胖女&美臀&喷出\n&熟女&少女&","class_url":"c/Big_Cock-34&c/q:hd/Big_Tits-23&c/q:hd/Big_Ass-24&c/q:hd/Blowjob-15&c/q:hd/Lesbian-26&c/q:hd/Squirting-56&c/q:hd/Creampie-40&c/q:hd/ASMR-229&c/q:hd/Anal-12&c/q:hd/Fucked_Up_Family-81&c/q:hd/Mature-38&c/q:hd/Arab-159&lang/chinese&lang/korean&lang/japanese&lang/thai&c/q:hd/Teen-13&c/q:hd/Black_Woman-30&c/q:hd/Blonde-20&c/q:hd/Brunette-25&c/q:hd/Redhead-31&c/q:hd/Cumshot-18&c/q:hd/Gangbang-69&c/q:hd/Solo_and_Masturbation-33&c/Fucked_Up_Family-81&c/Milf-19&c/bbw-51&c/Ass-14&c/Squirting-56&c/Mature-38&c/Teen-13&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nif (MY_PAGE==1) {\nd.push({\n    title: \"\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\n//间隔\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'line_blank'\n});}\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.thumb-block');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.title&&Text'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            pic_url: parseDom(list[j], 'img&&data-src'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.title&&Text'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            img: parseDom(list[j], 'img&&data-src'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://m-xvideos.com/?k=**&quality=hd&p=fypage@-1@*0@","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar code = getResCode();\nvar url = code.split(\"html5player.setVideoHLS('\")[1].split(\"'\")[0];\nvar img = code.split(\"html5player.setThumbUrl('\")[1].split(\"'\")[0];\nvar lazyYM = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\n});\nvar hls = request(url).match(/hls-.*?m3u8/g);\nJSON.stringify(hls.sort(function(a, b) {\n    return b.match(/\\d+/) - a.match(/\\d+/)\n}));\nd.push({\n    img: img,\n    col_type: \"pic_1_full\"\n})\nfor (var j in hls) {\n    d.push({\n        title: hls[j].split('-')[1].replace('.m3u8', ''),\n        url: url.split('hls.')[0] + hls[j],\n        col_type: 'text_4'\n    });\n}\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n  title:'类似视频',\n    col_type: 'rich_text'\n});\nvar  json  = JSON.parse(parseDomForHtml(code, '#video-player-bg&&script&&Html').split(';window.wpn_categories')[0].split('var video_related=')[1]);\nfor (var j in json) {\n    d.push({       \n        title: json[j].tf,\n               desc:  json[j].d,\n               pic_url: json[j].i,\n               url: 'https://www.xvideos.com' + json[j].u + lazyYM,\n        col_type: \"movie_2\"\n    })\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"YM\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar code =getResCode();\\nvar url = code.split(\\\"html5player.setVideoHLS('\\\")[1].split(\\\"'\\\")[0];\\nvar img = code.split(\\\"html5player.setThumbUrl('\\\")[1].split(\\\"'\\\")[0];\\nvar lazyYM = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\\n});\\nvar hls = request(url).match(/hls-.*?m3u8/g);\\nJSON.stringify(hls.sort(function(a,b){return b.match(/\\\\d+/) - a.match(/\\\\d+/)}));\\nd.push({\\n    img:img,\\n    col_type:\\\"pic_1_card\\\"\\n})\\nfor (var j in hls) {\\nd.push({\\n    title:hls[j].split('-')[1].replace('.m3u8',''),\\n    url:url.split('hls.')[0]+hls[j],\\n    col_type:'text_4'\\n    });\\n}\\nd.push({\\n    col_type: 'line_blank'\\n});\\nd.push({\\n  title:'类似视频',\\n    col_type: 'rich_text'\\n});\\nvar json = JSON.parse(parseDomForHtml(code, '#video-player-bg&&script&&Html').split(';window.wpn_categories')[0].split('var video_related=')[1]);\\nfor (var j in json) {\\n    d.push({       \\n            title: json[j].tf,\\n               desc: json[j].d,\\n               pic_url: json[j].i,\\n               url: 'https://m-xvideos.com'+json[j].u  + lazyYM ,\\n              col_type:\\\"movie_2\\\"\\n    })\\n}\\nres.data = d;\\nsetHomeResult(res);\"}]","proxy":"","icon":"https://favicon.yandex.net/favicon/v2/https://xvideos.com/?size=32&stub=1"},{"firstHeader":"class","last_chapter_rule":"","title":"🪜netflav优","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.netflav.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=netflav"},{"last_chapter_rule":"","title":"🪜Pornlulu🅱️","author":"dy2020","version":0,"type":"video","url":"https://www.pornlulu.com/cat/fyAll?page=fypage;get;UTF-8;{User-Agent@Windows}","col_type":"movie_2","class_name":"精品海外&國產情 色&國產自拍&國產精品&中文字幕&日本無碼&日本有碼&亞洲情 色&歐美極品&強姦亂倫&歐美精品&主播直播&歐美性愛&日韓無碼&騎兵有碼&制服誘惑&國產自拍&動漫精品&蘿莉少女&成人動漫&國產主播&三級倫理&國產視頻&網紅主播&歐美情 色&無碼專區&巨乳美乳&人 妻熟女&美女主播&熟女人 妻&亞洲有碼&自拍偷 拍&日本倫理&亞洲無碼&制服師生&卡通動漫&女同性戀&國產館視&人 妻系列&其他亞洲&AV明星&韓國倫理&名優中字&小視頻視&偷 拍自拍&步兵無碼&日韓有碼&空姐模特&精品推薦&動漫卡通&女神學生&國產倫理&國模私拍&巨乳中文&國產原創&主播大秀&嬌妻素人&調教中文&國產名人&亂倫中文&金髮幼齒&美乳巨乳&國產偷 拍&國產情侶&美熟少婦&自慰群交&福利姬視&精品海外&職場同事&制服中文&制服絲襪&人 妻中文&日韓精品&男同視頻&出軌中文&人妖視頻&高清華語&歐美倫理&亂倫無碼&鄰家人 妻&抖陰視頻&中字館視&歐美其他&SM重口&大秀視頻&多人群交&強姦無碼&人 妻無碼&歐美系列&制服無碼&童顏巨乳&無碼中文&國產亂倫&成人動畫&VR有碼&香港倫理&風騷寡婦&韓國極品&絕美少女&潮吹噴射&巨乳系列&主播精選&精品短視&AI換臉&口交視頻&野合車震&長腿絲襪&素人館視&有碼番號&精彩時刻&制服黑絲&女同性愛&獨家DM&歐美激情&無碼館視&口 爆顏射&傳媒精品&VIP視&韓國明星&日韓綜合&動漫里番&激情口交&巨乳無碼&韓國精品&HEY誘&歐美館視&SM重味&國產傳媒&高潮噴吹&絲襪美腿&角色扮演&強姦中文&HEYZ&街頭素人&P站國產&P站國產&AV明星&麻豆傳媒&JAV高&變態調教&P站日韓&國產直播&P站中文&P站歐美&SM捆綁&主播秀色&無碼國產&歐美視頻&韓國唯美&自慰系列&有碼專區&網曝門事&3P合輯&絲襪長腿&動漫館視&同性同志&無碼破解&日本片商&自淫系列&女僕系列&拳交系列&教師學生&精彩劇情&口交顏射&無碼人 妻&非亞洲視&嫩妹福利&中文無碼&海外明星&日韓經典&P站日韓&韓國主播&91系列&微拍福利&中文出軌&顏射系列&變態捆綁&倫理影片&島國群交&中文強姦&明星換臉&歐美風情&無碼學生&無碼變態&中文人 妻&人獸性交&映畫傳媒&歐美劇情&口交潮吹&中文有碼&無碼亂倫&歐美MM&中文群交&極騷蘿莉&狼友探花&破解視頻&無碼強姦&無碼巨乳&性感人 妻&麻豆原創&中文制服&特色視頻&韓美眉主&網拍嫩模&P站卡通&P站三級&絲襪OL&無碼偷 拍&探花系列&日本女優&明星淫夢&主播自拍&多P 3&國產女奴&動漫肉番&三級自慰&高清名優&倫理綜藝&明星偶像&日本素人&同性女優&Cosp&名人明星&中文亂倫&童真蘿莉&首次亮相&制服職場&名優寫真&中文偷 拍&明星門事&素人自拍&91大神&戀腿癖視&JAV館&無碼港台&日韓倫理&倫理三級&東南亞情&韓國自拍&劇情介紹&凌辱束縛&SM調教&台灣色情&性感港姐&學生中出&野外系列&名優綜藝&重咸口味&騷貨護士&人 妻制服&AV解說&國產女王&傳媒原創&獸耳作品&及膝襪視&瑜伽褲視&美女模特&性感旗袍&美女寫真&中文動畫&國產門事&無碼動畫&美顏巨乳&探花尋花&無碼自淫&日韓劇情&無碼群交&三級館視&VR無碼&VR影院&視頻倫理&日韓主播&貧乳小奶&精選口 爆&女同人妖&女優明星&翹臀美尻&三級劇情&港台劇情&變態SM&解說AV&顏射瞬間&小鳥醬專","class_url":"387&119&263&249&48&270&269&22&266&13&260&303&52&259&261&92&347&86&103&274&268&84&304&88&265&254&93&23&264&267&105&98&45&64&272&130&115&295&101&287&401&44&37&310&278&288&258&5&140&149&250&285&31&292&316&253&15&16&251&290&262&111&277&66&8&33&27&388&6&291&248&289&275&29&19&147&242&286&283&273&25&297&199&243&89&129&46&43&131&282&125&293&252&87&18&61&14&57&109&244&99&305&36&357&110&24&138&301&321&319&362&132&97&328&296&369&368&312&54&229&366&134&83&55&123&298&106&390&96&169&221&30&124&431&337&336&439&416&73&363&340&209&335&334&81&417&211&232&56&100&197&58&126&121&302&152&70&403&79&402&80&128&220&374&227&50&313&204&358&329&338&158&429&306&207&136&361&120&391&217&69&307&214&239&205&141&395&324&215&228&226&236&218&142&201&219&231&212&425&200&206&213&59&318&341&339&424&210&433&432&163&208&423&71&315&143&394&309&365&393&398&418&198&225&408&135&202&40&203&230&419&314&422&299&216&150&367&426&159&415&421&375&412&413&414&407&60&144&420&430&392&72&370&427&409&410&364&406&76&237&233&241&378&384&223&320&224&300&34&308&148&317&436&151&428&438&434&276&325&234&404&67&74","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n      //  return \"video://\"+input\nreturn request(input).match(/\twindow.location.*?#(http.*?m3u8)/)[1]\n});\nif (MY_PAGE == 1) {\n    d.push({\n        title: '🔍',\n        url: $.toString((r) => {\n            putVar('keyword', input);\n            return 'hiker://search?rule=' + r + '&s=' + input;\n        }, MY_RULE.title),\n        desc: '搜你想要的...',\n        col_type: 'input',\n        extra: {\n            defaultValue: getVar('keyword', '') || '',\n        }\n    });\n}\nfor (var list of pdfa(getResCode(), 'body&&.card:has(.two-lines):not(.lines)')) {\n    d.push({\n        title: pdfh(list, 'img&&alt'),\n        img: pdfh(list, 'img&&data-src'),\n        desc: pdfh(list, 'span&&Text') + '人观看',\nurl: pd(list, 'a&&href') +lazy\n /*       \nurl: $(pd(list, 'a&&href') + '#gameTheme').rule(() => {\n            var d = [];\n            d.push({\n                title: '',\n                url: MY_URL,\n                col_type: 'x5_webview_single',\n                desc: 'float&&top',\n                extra: { //floatVideo: true,\n                    autoPlay: true,\n                    ua: MOBILE_UA,\n                    showProgress: false,\n                    canBack: true,\n                    jsLoadingInject: true,\n                    js: $.toString(() => {\n                        jQuery('#links').remove();\n                        jQuery('#at-share-dock').remove();\n                        jQuery('.fullwidth.mb-1.mt-md-0').nextAll().remove();\n                        jQuery('.main-footer').remove();\n                        jQuery('.at-share-btn-elements').remove();\n                        jQuery('.d-flex.d-sm-block.justify-content-between').remove();\n                        jQuery('.navbar.navbar-expand.navbar-dark').remove();\n                        jQuery('.at-share-btn-elements').remove();\n                        jQuery('nav').remove();\n\n\n                    })\n                }\n            });\n            return setResult(d);\n        }, ),\n\n*/\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n      //  return \"video://\"+input\nreturn request(input).match(/\twindow.location.*?#(http.*?m3u8)/)[1]\n});\nfor (var list of pdfa(getResCode(), 'body&&.card:has(.two-lines):not(.lines)')) {\n    d.push({\n        title: pdfh(list, 'img&&alt'),\n        img: pdfh(list, 'img&&data-src'),\n        desc: pdfh(list, 'span&&Text') + '人观看',\n        url: pd(list, 'a&&href') +lazy\n/*\nurl: $(pd(list, 'a&&href') + '#gameTheme').rule(() => {\n            var d = [];\n            d.push({\n                title: '',\n                url: MY_URL,\n                col_type: 'x5_webview_single',\n                desc: 'float&&top',\n                extra: {//floatVideo: true,\n                    autoPlay: true,\n                    ua: MOBILE_UA,\n                    showProgress: false,\n                    canBack: true,\n                    jsLoadingInject: true,\n                    js: $.toString(() => {\n                        jQuery('#links').remove();\n                        jQuery('#at-share-dock').remove();\n                        jQuery('.fullwidth.mb-1.mt-md-0').nextAll().remove();\n                        jQuery('.main-footer').remove();\n                        jQuery('.at-share-btn-elements').remove();\n                        jQuery('.d-flex.d-sm-block.justify-content-between').remove();\n                        jQuery('.navbar.navbar-expand.navbar-dark').remove();\n                        jQuery('.at-share-btn-elements').remove();\n                        jQuery('nav').remove();\n\n\n                    })\n                }\n            });\n            return setResult(d);\n        }, ),\n*/\n    });\n}\nsetResult(d)","search_url":"/q/**?category_id=&page=fypage;get;UTF-8;{User-Agent@Windows}","group":"⑤①📽️敦伦","detail_col_type":"movie_2","detail_find_rule":"","sdetail_col_type":"movie_2","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://api.xinac.net/icon/?url=https://www.pornlulu.com/"},{"last_chapter_rule":"","title":"🪜CableAV","author":"dy2020","version":20230220,"type":"video","url":"hiker://empty##https://cableav.tv/category/fyclass/page/fypage[firstPage=hiker://empty##https://cableav.tv/category/fyclass]","col_type":"movie_2","class_name":"中國主播&自拍流出&韓國主播&主播福利&網紅福利&91大神&國產AV&JAV 4K&全部合集","class_url":"chinese-live-porn&selfie-porn&korean-live-porn&private-show-porn&kol-selfie-porn&master-91porn&chinese-av-porn&jav-4k&playlist","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL = MY_URL.split('##')[1];\n\nlog(MY_URL);\nvar d = [];\nif (MY_PAGE == 1) {\n    d.push({\n        title: '',\n        url: $.toString((r) => {\n            putVar('keyword', input);\n            return 'hiker://search?rule=' + r + '&s=' + input;\n        }, MY_RULE.title),\n        desc: '搜你想要的...',\n        col_type: 'input',\n        extra: {\n            defaultValue: getVar('keyword', '') || '',\n        }\n    });\n}\nif (/playlist/.test(MY_URL)) {\n    MY_URL = MY_URL.replace('category/', '');\n    var html = fetchPC(MY_URL);\n    for (var list of pdfa(html, 'body&&article')) {\n        d.push({\n            title: pdfh(list, '.blog-img&&title'),\n            img: pdfh(list, 'img&&data-src'),\n            desc: xpath(list, '//a[@class=\"category-item m-font-size-10\" and not(contains(@data-cat-id,\"cat\"))]/text()') +'　　'+ pdfh(list, '.entry-date&&Text'),\n            url: $(pd(list, 'h3&&a&&href')).rule(() => {\n                var d = [];\n                var html = fetch(MY_URL);\n                for (var list of pdfa(html, 'body&&.global-blog-wrapper&&article')) {\n                    d.push({\n                        title: pdfh(list, '.blog-img&&title'),\n                        img: pdfh(list, 'img&&data-src'),\n                        desc: xpath(list, '//a[@class=\"category-item m-font-size-10\" and not(contains(@data-cat-id,\"cat\"))]/text()') +'　　'+ pdfh(list, '.entry-date&&Text'),\n                        url: $(pd(list, 'a&&href')).lazyRule(() => {\n                            var html = fetch(input);\n                            eval(pdfh(html, '#beeteam368_obj_wes-js-extra&&Html'));\n                            url = vidorev_jav_js_object.single_media_sources.pop().source_file;\n                            return url;\n                        }),\n                    });\n                }\n                return setResult(d);\n            }),\n        });\n    }\n\n} else {\n    var html = fetchPC(MY_URL);\n    //log(html);\n    for (var list of pdfa(html, 'body&&article')) {\n        d.push({\n            title: pdfh(list, '.blog-img&&title'),\n            img: pdfh(list, 'img&&data-src'),\n            desc: xpath(list, '//a[@class=\"category-item m-font-size-10\" and not(contains(@data-cat-id,\"cat\"))]/text()') +'　　'+ pdfh(list, '.entry-date&&Text'),\n            url: $(pd(list, 'a&&href')).lazyRule(() => {\n                var html = fetch(input);\n                eval(pdfh(html, '#beeteam368_obj_wes-js-extra&&Html'));\n                url = vidorev_jav_js_object.single_media_sources.pop().source_file;\n                return url;\n            }),\n        });\n    }\n}\nsetResult(d)","searchFind":"js:\nMY_URL = MY_URL.split('##')[1];\nlog(MY_URL);\nvar d = [];\nvar html = fetchPC(MY_URL);\n//log(html);\nfor (var list of pdfa(html, 'body&&article')) {\n    d.push({\n        title: pdfh(list, '.blog-img&&title'),\n        img: pdfh(list, 'img&&data-src'),\n        desc: xpath(list, '//a[@class=\"category-item m-font-size-10\" and not(contains(@data-cat-id,\"cat\"))]/text()') +'　　'+ pdfh(list, '.entry-date&&Text'),\n        url: $(pd(list, 'a&&href')).lazyRule(() => {\n            var html = fetch(input);\n            eval(pdfh(html, '#beeteam368_obj_wes-js-extra&&Html'));\n            url = vidorev_jav_js_object.single_media_sources.pop().source_file;\n            return url;\n        }),\n    });\n}\nsetResult(d)","search_url":"hiker://empty##https://cableav.tv/page/fypage/?s=**","group":"⑤①📽️敦伦","detail_col_type":"movie_2","detail_find_rule":"","sdetail_col_type":"movie_2","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://img1.imgtp.com/2023/02/25/6SkhQEFn.png"},{"last_chapter_rule":"","title":"🪜就要看","author":"XHH","version":1,"type":"video","url":"https://xn--4gq479ftid.xyz/list/fyclass-fypage.html[firstPage=https://xn--4gq479ftid.xyz/list/fyclass.html];get;utf-8;{User-Agent@Windows}","col_type":"movie_2","class_name":"原创偷拍&国产精品&金发洋妹&韩主播&人妖|TS&颜射瞬间&国模私拍","class_url":"13&15&31&41&80&592&598","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.posts&&.post')\nvar lazy = $('').lazyRule(() => {\n        return \"video://\"+input});\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'a&&title'),\n        desc: pdfh(item, '.cats&&Text'),\n        pic_url: pdfh(item, 'img&&data-src'),\n        url: pd(item, 'a&&href')+lazy\n            })\n});\nsetResult(d)","searchFind":"","search_url":"","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://xn--4gq479ftid.xyz/favicon.ico"},{"last_chapter_rule":"","title":"🪜好P","author":"道长","version":5,"type":"video","url":"https://goodporn.to/?mode=async&function=get_block&block_id=list_videos_most_recent_videos&sort_by=fysort&from=fypage&_=1637370608073","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"最新&浏览数&最热&时长&评论数&收藏数","year_name":"","sort_url":"post_date&video_viewed&rating&duration&most_commented&most_favourited","year_url":"","find_rule":"js:\nconst {comParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nlet parStr=\".list-videos,0&&.item;.title&&Text;.img&&img&&data-original.js:input+'@Referer=';.duration&&Text;a&&href.js:input+'#immersiveTheme#'\";\nlet jscode=comParse(parStr,true);\neval(jscode)","searchFind":"js:\nconst {comParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nlet parStr=\".list-videos,0&&.item;.title&&Text;.img&&img&&data-original.js:input+'@Referer=';.duration&&Text;a&&href.js:input+'#immersiveTheme#'\";\nlet jscode=comParse(parStr,true);\neval(jscode)","search_url":"https://goodporn.to/search/**/?mode=async&function=get_block&block_id=list_videos_videos_list_search_result&q=**&category_ids=&sort_by=&from_videos=fypage&from_albums=fypage&_=1637374812693","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nlet d=[];\nlet html=getResCode();\nlet desc=pdfa(html,'.info&&.item,0&&span');\ndesc=desc.map((it)=>{\n    return pdfh(it,\"body&&Text\")\n}).join(\"\\n\");\nd.push({\n    title:\"\",\n    desc:desc,\n    col_type:\"movie_1_vertical_pic_blur\",\n    url:MY_URL,\n});\nlet ctx=pdfh(html,'.info&&.item,1&&Text');\nlet ctxs='‘‘’’<small><font color=\"#585858\">简介： '+ ctx.substr(0, 150) + '...</font><font color=\"#0aa344\">查看详情</font></small>'\nd.push({\n    title:ctxs,\n    col_type:\"text_1\",\n    url:$().rule((ctx)=>{\n        let d=[];\n        d.push({\n            title:ctx,\n            col_type:\"long_text\"\n        });\n        setResult(d)\n    },ctx)\n});\nlet list=pdfa(html,'.info&&.item').slice(-1)[0];\nlog(list);\nlist=pdfa(list,\"body&&a\");\nlog(list.length);\n\nlist=list.map((it)=>{\n    return {\n    title:pdfh(it,'a&&Text'),\n    url:pd(it,'a&&href'),\n    col_type:\"flex_button\"\n    }\n});\nlet urls=list.map(it=>it.url);\nlet names=list.map(it=>it.title.split(\",\")[0]);\nlet purl={names:names,urls:urls};\nd.push({\n    title:\"多线路播放\",\n    col_type:\"text_1\",\n    url:JSON.stringify(purl)\n});\nd.push({\n    title:\"单线路选择，共计:\"+list.length,\n    col_type:\"text_1\",\n    url:\"hiker://empty\"\n});\nd=d.concat(list);\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/13.svg"},{"last_chapter_rule":"","title":"🪜7719","author":"TyrantGenesis","version":1,"type":"video","url":"http://www.00000.la/index.php/vod/type/id/fyclass/page/fypage.html","col_type":"movie_2","class_name":"国产&日本&欧美&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//eval(fetch('hiker://files/TyrantG/GHS/7719.js'));\nconst baseParse = _ => {\n  let d = [];\n  const list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');\n  for (let j in list) {\n    d.push({\n      title: parseDomForHtml(list[j], '.lazyload&&title'),\n      desc: parseDomForHtml(list[j], '.sub&&Text'),\n      pic_url: parseDom(list[j], '.lazyload&&data-original'),\n      url: $(parseDom(list[j],'a&&href')).lazyRule(_ => {\n        const html = fetch(input)\n        const script = parseDomForHtml(html, '.stui-player__video&&script&&Html')\n        eval(script)\n        return player_aaaa.url\n      })\n    })\n  }\n\n  setResult(d);\n}\nbaseParse()","searchFind":"js:\n//eval(fetch('hiker://files/TyrantG/GHS/7719.js'));\nconst baseParse = _ => {\n  let d = [];\n  const list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');\n  for (let j in list) {\n    d.push({\n      title: parseDomForHtml(list[j], '.lazyload&&title'),\n      desc: parseDomForHtml(list[j], '.sub&&Text'),\n      pic_url: parseDom(list[j], '.lazyload&&data-original'),\n      url: $(parseDom(list[j],'a&&href')).lazyRule(_ => {\n        const html = fetch(input)\n        const script = parseDomForHtml(html, '.stui-player__video&&script&&Html')\n        eval(script)\n        return player_aaaa.url\n      })\n    })\n  }\n\n  setResult(d);\n}\nbaseParse()","search_url":"http://www.00000.la/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#bdb2ff","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜青青草资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji05.com/home/cjapi/cfda/mc/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=青青草资源"},{"last_chapter_rule":"","title":"🪜小湿妹资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.afasu.com/api/xml.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小湿妹资源"},{"firstHeader":"class","last_chapter_rule":"","title":"🪜JAV","author":"道长","version":1,"type":"video","url":"hiker://empty##https://javtrailers.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=JAV"},{"last_chapter_rule":"","title":"🪜咪咪","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.caiji25.com/home/cjapi/p0as/mc10/vod/json#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"好孩子1229","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤①📽️敦伦","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=咪咪"},{"last_chapter_rule":"","title":"🪜MISS","author":"//2022/&qi","version":0,"type":"video","url":"https://missav01.com/cn/fyAll?page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_2","class_name":"中文字幕&麻豆传媒","class_url":"chinese-subtitle&madou","area_name":"SIRO&LUXU\n&200GANA&PRESTIGE PREMIUM&S-CUTE&ARA&","area_url":"siro&luxu&200gana&300maan&scute&ara&","sort_name":"最近更新&新作上市&","year_name":"FC2&HEYZO&东京热&一本道&Caribbeancom&Caribbeancompr&10musume&pacopacomama&Gachinco&XXX-AV&人 妻 斩&顽皮 4610&顽皮 0930","sort_url":"new&release&","year_url":"fc2&heyzo&tokyohot&1pondo&caribbeancom&caribbeancompr&10musume&pacopacomama&gachinco&xxxav&marriedslash&naughty4610&naughty0930","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, '.grid&&.thumbnail');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.my-2&&Text'),\n        desc: pdfh(list[j], '.absolute&&Text'),\n        img: pd(list[j], '.lozad&&data-src') + '@Referer=',\n        url: $(pd(list[j], 'a&&href'), 'Html').lazyRule((MY_HOME) => {\n            input = eval(input.match(/eval.*?\\n/)[0]).replace('missav','missav01').replace('playlist', '1280x720/video')\n            var m3u8 = fetch(input, {\n                headers: {\n                    'Referer': MY_HOME\n                }\n            }).replace(/(#EXTINF:.*?,\\n)/g, '$1' + input.replace('video.m3u8', ''))\n            writeFile('hiker://files/cache/videos.m3u8', m3u8);\n            return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/videos.m3u8#' + input + ';{Referer@'+MY_HOME+'}'\n        },MY_HOME)\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, '.grid&&.thumbnail');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.my-2&&Text'),\n        desc: pdfh(list[j], '.absolute&&Text'),\n        img: pd(list[j], '.lozad&&data-src') + '@Referer=',\n        url: $(pd(list[j], 'a&&href'), 'Html').lazyRule((MY_HOME) => {\n            input = eval(input.match(/eval.*?\\n/)[0]).replace('missav','missav01').replace('playlist', '1280x720/video')\n            var m3u8 = fetch(input, {\n                headers: {\n                    'Referer': MY_HOME\n                }\n            }).replace(/(#EXTINF:.*?,\\n)/g, '$1' + input.replace('video.m3u8', ''))\n           log(m3u8)\nwriteFile('hiker://files/cache/videos.m3u8', m3u8);\n            return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/videos.m3u8#' + input + ';{Referer@'+MY_HOME+'}'\n        },MY_HOME)\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"/cn/search/**?page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","group":"⑤①📽️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜搬家修改版","author":"老司机俱乐部","version":1,"type":"video","url":"https://www.byj28.me/#fyAll#fypage","col_type":"movie_2","class_name":"热门专题&更多专题&最新视频&女⁡优大全&国产女⁡优&日本女⁡优","class_url":"hottopic/&community/&videos/&model/&modelzh/&modeljp/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar M = MY_URL.split('#');\nvar html = request(MY_URL.replace(/#/g,''));\nif(M[2]=='1'){html = request(M[0]+M[1])}\nif(M[1]=='videos/'||M[2]=='1'){\nvar list = parseDomForArray(html, 'body&&.cell');\nfor (var j in list) {\nvar url = parseDom(list[j],'a&&href');\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: M[1]=='videos/'?url + `@lazyRule=#video&&source,-1&&src`:url+'/fypage/[firstPage='+url+']',\n      col_type:M[1]=='videos/'?'movie_2':'movie_2'\n  });\n}\n}\nsetResult(d)","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.video-duration&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: parseDom(list[j],'a&&href')+`@lazyRule=#video&&source,-1&&src`\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.byj28.me/search/video/?s=**&page=fypage","group":"⑤①📽️敦伦","detail_col_type":"movie_2","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),\ndesc: parseDomForHtml(list[j], '.video-duration&&Text'),\r\npic_url: parseDom(list[j],'img&&data-src'),     \r\nurl:'https://storage.banyinjia8.com'+parseDomForHtml(list[j],'img&&data-src').substring(0,parseDomForHtml(list[j],'img&&data-src').length-5).replace(\"tmb\",\"hls\")+'playlist.m3u8'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.byj11.me/images/icon.ico"},{"last_chapter_rule":".upd&&Text","title":"3A漫画","author":"dy2020","version":20230219,"type":"cartoon","url":"hiker://empty##https://408mh.com/fyclass_fypage.html","col_type":"pic_2_card","class_name":"日韩漫画&3D彩漫&短篇小说&长篇小说&美女图片&私房美图&胴体诱惑&性感裸体&街拍&杂志","class_url":"mh/list_1&3d/list_213&dpxs/list_3&cpxs/list_2&mv/list_67&2cy/list_68&yh/list_82&qs/list_90&/jp/list_1011&zz/list_1199","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];if (MY_PAGE == 1) {\r\n    d.push({\r\n        title: \"🔍\",\r\n        url: $.toString((r) => {\r\n            putVar('keyword', input);\r\n            return 'hiker://search?rule=' + r + '&s='+input;\r\n        }, MY_RULE.title),\r\n        desc: '搜你想要的...',\r\n        col_type: \"input\",\r\n       extra: {\r\n            defaultValue: getVar('keyword', '') || \"\",\r\n        } \r\n    });\r\n}\nvar true_url = MY_URL.split('##')[1];\nlog(true_url);\nvar html = fetchPC(true_url, {});\nvar list = pdfa(html, 'body&&.bk');\nfor (var list of list) {\n    d.push({\n        title: pdfh(list, 'h3&&Text'),\n        desc: pdfh(list, '.bnew&&Text'),\n        img: pd(list, 'img&&src'),\n        url: pd(list, 'a&&href') + \"#immersiveTheme#\" + '#autoCache#'\n    });\n}\nsetResult(d);","searchFind":"","search_url":"hiker://empty##https://www.w83.net/mh1jdsearch/**------fypage-.html","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\neval(JSON.parse(fetch('hiker://page/ejtool')).rule);\nvar 标题 = pdfh(html, 'h1&&Text') || '';\nvar 作者 = '👤作者:';\nif (作者 == '👤作者:') {\n    作者 = ''\n}\nvar 分类 = '❄分类:';\nif (分类 == '❄分类:') {\n    分类 = ''\n}\nvar 状态 = '⏳状态:';\nif (状态 == '⏳状态:') {\n    状态 = ''\n}\nvar 章节 = '📑最新章节:' + pdfh(html, '.upd&&Text');\nvar 更新 = '🕒更新时间:';\nif (更新 == '🕒更新时间:') {\n    更新 = ''\n}\nvar 简介 = '📖简介:';\nif (简介 == '📖简介:') {\n    简介 = ''\n}\nvar 封面图片 = pdfh(html, '.pic&&img&&src');\ncover(标题, 作者, 分类, 状态, 章节, 更新, 简介, 封面图片, MY_URL, true);\n\nfunction 解析() {\n    if (typeof(input) != 'undefined') {\n        var url = input;\n    } else {\n        var url = MY_URL;\n    }\n    var html = fetchPC(url);\n    if (/xs/.test(url)) {\n        var d = [];\n        let data = '　　' + pdfh(html, '#contxt&&Html');\n        data = data\n            .replace(/[\\\\n\\\\r\\\\t]/g, '')\n            .replace(/    /g, '　　')\n            .replace(/　　/g, '\\<br/>　　').replace(/&bsp;/g, '　　') ;\n        d.push({\n            title: data,\n            col_type: 'rich_text',\n            extra: {\n                textSize: 18,\n                click: true\n            }\n        });\n        return setResult(d);\n\n    } else {\n        var pics = pdfa(html, '.contentbox&&img').map(h => pd(h, 'img&&src'));\n        return 'pics://' + pics.join('&&')\n    }\n}\nlet lazy = $('').lazyRule(解析);if (/xs/.test(MY_URL)) {\n    lazy = $(\"\").rule(解析)\n}\nlet downloadlazy = $.toString(解析);\nvar clist = pdfa(html, '.book_list,1&&a');\nchapter(标题, 封面图片, clist, 'a&&Text', 'a&&href', 1, true, downloadlazy);\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"漫画_二级\",\"path\":\"ejtool\",\"rule\":\"function cover(标题, 作者, 分类, 状态, 章节, 更新, 简介, 封面图片, true_url, hasLine) {\\r\\n    var 标题, 作者, 分类, 状态, 章节, 更新, 简介, 封面图片, true_url, hasLine;\\r\\n    try {\\r\\n        d.push({\\r\\n            title: '‘‘’’<small><font color=\\\"#FA0B98\\\">' + 作者 + \\\"&nbsp;\\\" + 状态 + '</font></small>' + '‘‘’’<small><font color=\\\"#C211EE\\\">' + \\\"\\\\n\\\" + 分类 + '</font></small>' + '‘‘’’<small><font color=\\\"#FF0000\\\">' + \\\"\\\\n\\\" + 章节 + \\\"&nbsp;\\\" + 更新 + '</font></small>',\\r\\n            desc: '‘‘’’<small><font color=\\\"#000088\\\">' + 简介 + '</font></small>',\\r\\n            pic_url: 封面图片,\\r\\n            url: 'hiker://search?s=' + 标题 + '&rule=拷贝漫画.dy&simple=false',\\r\\n            col_type: 'movie_1_vertical_pic_blur',\\r\\n            extra: {\\r\\n                gradient: true\\r\\n            }\\r\\n        });\\r\\n        if (hasLine) {\\r\\n            item.extra = {\\r\\n                lineVisible: false\\r\\n            }\\r\\n        }\\r\\n        d.push(item);\\r\\n    } catch (e) {}\\r\\n}\\r\\n\\r\\nfunction chapter(title, pic_url, chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine, downloadlazy, deleted) {\\r\\n    var list = chapterList;\\r\\n    var original = [{\\r\\n        url: MY_URL,\\r\\n        order: defaultOrder\\r\\n    }];\\r\\n    !fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\r\\n    var logs = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\r\\n    for (var i in logs) {\\r\\n        if (logs[i].url == MY_URL) {\\r\\n            var now = i;\\r\\n            var order = logs[i].order;\\r\\n            break;\\r\\n        } else {\\r\\n            var now = '';\\r\\n            var order = defaultOrder;\\r\\n        }\\r\\n    }\\r\\n    let orderItem = {\\r\\n        title: \\\"““””\\\" + '</strong><small><font color=\\\"#EE7711\\\">' + '章节排序⇅' + '</font></strong>',\\r\\n        url: MY_URL + `#noLoading#@lazyRule=.js:\\n            var logs = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\n            var now='` + now + `';\\n            if(now!=''){\\n                var now=parseInt(now);\\n                var order=logs[now].order\\n            }else{\\n                var now=parseInt(logs.length);\\n                var order=` + defaultOrder + `;\\n                logs.push({\\n                    url:input,\\n                    order:order\\n                });\\n            }\\n            if(logs[now].order){\\n                logs[now].order=0;\\n            }else{\\n                logs[now].order=1;\\n            };\\n            writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(logs));\\n            refreshPage();\\n            'hiker://empty'`,\\r\\n        col_type: 'text_center_1'\\r\\n    }\\r\\n    if (hasLine) {\\r\\n        orderItem.title = \\\"““””\\\" + '</strong><small><font color=\\\"#EE7711\\\">' + '集数排序⇅' + '</font></strong>';\\r\\n        orderItem.col_type = \\\"scroll_button\\\"\\r\\n    }\\r\\n    var chapterLists = list.map((item) => ({\\r\\n        title: pdfh(item, \\\"a&&Text\\\"),\\r\\n        url: pd(item, \\\"a&&href\\\")+ '#readTheme##autoPage#',\\r\\n    }));\\r\\n    d.push({\\r\\n        title: '‘‘’’</strong><small><font color= \\\"#EE7711\\\">' + \\\"下载漫画\\\" + '</front></strong>',\\r\\n        url: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\r\\n        col_type: \\\"scroll_button\\\",\\r\\n        extra: {\\r\\n            chapterList: chapterLists,\\r\\n            info: {\\r\\n                bookName: title,\\r\\n                ruleName: MY_RULE.title,\\r\\n                bookTopPic: pic_url,\\r\\n                parseCode: downloadlazy\\r\\n            },\\r\\n            defaultView: \\\"1\\\"\\r\\n        }\\r\\n    });\\r\\n    d.push({\\r\\n        title: '‘‘’’</strong><small><font color= \\\"#EE7711\\\">' + \\\"本地书架\\\" + '</front></strong>',\\r\\n        url: \\\"hiker://page/Main.view?rule=本地资源管理\\\",\\r\\n        col_type: \\\"scroll_button\\\",\\r\\n    });\\r\\n    d.push(orderItem);\\r\\n    d.push({\\r\\n        col_type: 'line'\\r\\n    });\\r\\n    list = order ? chapterLists : chapterLists.reverse();\\r\\n    if (!list || list == \\\"\\\" || deleted == 1) {\\r\\n        d.push({\\r\\n            title: '‘‘’’<strong><font color= \\\"#FF0000\\\">' + '此漫画已下架!!' + '</front></strong>',\\r\\n            col_type: 'text_1',\\r\\n        });\\r\\n    }\\r\\n    for (var i in list) {\\r\\n        try {\\r\\n            d.push({\\r\\n                title: '‘‘’’<small>'+list[i].title+'</small>',\\r\\n                url: list[i].url + lazy,\\r\\n                col_type:   'flex_button',\\r\\n            });\\r\\n        } catch (e) {}\\r\\n    }\\r\\n    d.push({\\r\\n        col_type: 'big_big_blank_block',\\r\\n    });\\r\\n}\\r\\n\\r\\nfunction line(lineList, lineTitleRule, varKey) {\\r\\n    let list = lineList\\r\\n    varKey = varKey == null ? (MY_RULE.url + '#line-index') : varKey;\\r\\n    addListener('onClose', $.toString((keyList) => {\\r\\n        for (let i in keyList) {\\r\\n            clearVar(keyList[i])\\r\\n        }\\r\\n    }, [varKey, MY_RULE.title + '#line-title']))\\r\\n    let line0Title = '';\\r\\n    try {\\r\\n        line0Title = pdfh(list[0], lineTitleRule).replace(\\\"章节列表：\\\", \\\"\\\");\\r\\n    } catch (e) {}\\r\\n    for (let i in list) {\\r\\n        try {\\r\\n            let lineTitle = pdfh(list[i], lineTitleRule).replace(\\\"章节列表：\\\", \\\"\\\");\\r\\n            d.push({\\r\\n                title: getVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle + \\\"\\\" : lineTitle + \\\"‘‘:切换\\\",\\r\\n                url: $().lazyRule((varKey, lineIndex, lineTitle) => {\\r\\n                    putVar(varKey, lineIndex.toString());\\r\\n                    putVar((MY_RULE.title + '#line-title'), lineTitle);\\r\\n                    refreshPage();\\r\\n                    return \\\"toast://已切换至\\\" + lineTitle;\\r\\n                }, varKey, i, lineTitle),\\r\\n                col_type: 'scroll_button',\\r\\n            });\\r\\n        } catch (e) {}\\r\\n    }\\r\\n}\"}]","proxy":"","icon":"https://i.postimg.cc/qBnJXVFP/1655307364216.png"},{"last_chapter_rule":"","title":"绿色仓库","author":"Timik","version":0,"type":"other","url":"hiker://empty##/list?pid=2&page=fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar rurl = MY_URL.replace('hiker://empty##', getVar('url'));\nvar h = fetch(rurl, {});\nvar list = pdfa(h, '.vod-box&&.vod-item-box');\nif (MY_URL.match(/page=1/)) {\n    d.push({   \n        title: \"搜索\",\n           url: \"'hiker://search?s='+input+'&rule='+ MY_RULE.title\",\n           desc: \"请输入搜索关键词\",\n           col_type: \"input\",\n    })\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'blank_block'\n    });\n    d.push({   \n        col_type: 'line_blank'\n    });\n};\nfor (var i in list) {\n    try {\n        d.push({\n            title: pdfh(list[i], '.vod-name&&Text'),\n            desc: pdfh(list[i], '.vod-class&&a,2&&Text'),\n            pic_url: pdfh(list[i], 'img&&src'),\n            url: getVar('url') + pdfh(list[i], 'a&&href')\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar rurl = MY_URL.replace('hiker://empty##', getVar('url'));\nvar h = fetch(rurl, {});\nvar list = pdfa(h, '.vod-box&&.vod-item-box');\nfor (var i in list) {\n    try {\n        d.push({\n            title: pdfh(list[i], '.vod-name&&Text'),\n            desc: pdfh(list[i], '.vod-class&&a,2&&Text'),\n            pic_url: pdfh(list[i], 'img&&src'),\n            url: getVar('url') + pdfh(list[i], 'a&&href')\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://qq.com.lsck.xyz/search?pid=2&keyword=**","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var title = parseDomForHtml(html, '.my-box&&.is-size-5&&Text');\n    putVar('title', title);\n    var list = parseDomForArray(html, '.my-box&&img');\n    for (var key in list) {\n         var pic = parseDomForHtml(list[key], 'img&&src')\n         pics.push(pic);\n        }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                //var s = jsonObj;\n                var s = picsStr;\n                //log({ p: s });\n                var file = s.split(\",\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var title = parseDomForHtml(html, '.is-size-5&&Text');\n    putVar('title', title);\n    var list = parseDomForArray(html, '.my-box&&img');\n    for (var key in list) {\n         var pic = parseDomForHtml(list[key], 'img&&src')\n         pics.push(pic);\n        }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                //var s = jsonObj;\n                var s = picsStr;\n                //log({ p: s });\n                var file = s.split(\",\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","ua":"pc","preRule":"var d = [];\nvar html = fetch('https://qq.com.lsck-fabuye.xyz/',{})\nvar list = pdfa(html,'.each&&a')\nfor (i in list){\n  d.push({\n\turl:pdfh(list[i],'a&&href')\n  })\n}\nvar random = d[Math.floor(Math.random() * d.length)].url;\nputVar('url',random)","pages":"[]","proxy":"","icon":"https://favicon.yandex.net/favicon/v2/https://qq.com.lsck.xyz/?size=32&stub=1"},{"last_chapter_rule":"","title":"52自拍","author":"无名","version":0,"type":"picture","url":"https://52zyapi.com/home/cjapi/asda/mc10/pic/json?cid=0&pg=fypagefyclass","col_type":"movie_3","class_name":"全部&精品套图&网友自拍&丝袜美图&唯美写真&人体艺术&亚洲色图&成人动漫&欧美动图","class_url":"&＆＆t=828&＆＆t=831&＆＆t=833&＆＆t=834&＆＆t=835&＆＆t=830&＆＆t=832&＆＆t=829","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar json = JSON.parse(html).list;\nvar lazy = $('').lazyRule(() => {\n    return 'pics://' + request(input).match(/http.*?jpg/g).join('&&')\n});\nd = json.map(data => ({\n    title: data.art_title,\n    pic_url: data.art_pic,\n    url: \"https://52zyapi.com/home/pic/14/0_\" + data.art_id + \".html\" + lazy\n}));\nsetResult(d);","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://image.yrmbb0hc.space/GsebNewi/10.gif"},{"last_chapter_rule":"","title":"污漫画","author":"Timik","version":0,"type":"cartoon","url":"https://litu100.xyz/comics/kk-fyclass/fypage.html","col_type":"movie_3","class_name":"完结&连载&单行本&韩国&日本&中国","class_url":"2&1&3&韩国&日本&中国","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list&&.item;a,1&&Text;img&&src;;a,1&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar h = getResCode()\nvar des_pic = parseDomForHtml(h, 'body&&.cover&&img&&src');\nvar des_title = parseDomForHtml(h, '.title&&Text');\nvar des_class= parseDomForHtml(h,\".status,0&&Text\")\nvar des_desc = parseDomForHtml(h, '.status,1&&Text');\nvar urls = parseDomForArray(h, 'body&&.chapters&&a');\nd.push({\n\ttitle: des_title + \"\\n\" + des_class,\n\tdesc: des_desc,\n\tpic_url: des_pic,\n\turl: 'toast://啦啦啦，不给看',\n\tcol_type: 'movie_1_vertical_pic'\n});\nfor (let k in urls) {\nd.push({\n\ttitle: parseDomForHtml(urls[k],'a&&Text'),\n\turl: parseDom(urls[k],'a&&href') + `@lazyRule=.js:'pics://'+parseDomForHtml(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Linux; Android 10)'}}),'.comic&&Html').match(/http(?!(jpg|png|gif)).+?(jpg|png|gif)/g).join('&&')`\n});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"核基地","author":"Timik","version":1,"type":"other","url":"hiker://empty##/2048/thread.php?fid-fyAll-page-fypage.html","col_type":"movie_3","class_name":"自拍&亚洲&欧美&露出&丝袜&卡通&原创","class_url":"23&24&25&26&27&28&135","area_name":"清纯&正妹&亚洲&素人&COS&女优&动图","area_url":"21&274&275&276&277&278&29","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar clUrl = JSON.parse(readFile('urls.json', 0)),\n    data = []\nclUrl.shift()\nvar res = {};\nvar d = [];\nvar url = MY_URL.replace('hiker://empty##', clUrl[0].url);\nvar h = fetch(url, {});\nvar list = pdfa(h, '.threadlist&&li:gt(6)');\nfor (var i in list) {\n    try {\n        d.push({\n            title: pdfh(list[i], 'div.subject&&a&&Text').replace(/\\[.*?\\]/, ''),\n\t\t       pic_url:pdfh(list[i], 'div.subject&&data-img'),\n            desc: pdfh(list[i], '.text-grey,3&&Text') ,\n            url: clUrl[0].url + '/2048/' + pdfh(list[i], 'div.subject&&a&&href')\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\n\ntry {\n    var list = parseDomForArray(html, '#read_tpc&&img');\n    var title = parseDomForHtml(html, \"h4&&Text\");\n    putVar('title', title);\n        for (var key in list) {\n            var pic = parseDomForHtml(list[key], 'img&&src')\n            //log({pic:pic});\n            pics.push(pic);\n        }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"function requestData() {\n    let html = fetch('https://elsbdz.com/', {});\n    let list = pdfa(html,'body&&ul&&a'),\n       success = false;\n  let urls=[];\n  for( let k in list){\n\turls.push({\n\t  url:pdfh(list[k],'a&&href')\n\t})\n  }\n    urls.shift()\n    urls.unshift(new Date().toISOString())\n    saveFile('urls.json', JSON.stringify(urls), 0)\n    success = true\n    log('更新网址' + (success ? '成功' : '失败'))\n    return success\n}\nlet urls = readFile('urls.json', false)\nif (urls) {   \n    if (Date.now() - Date.parse(urls[0]) > 24*60*60*1000 )\n        (new java.lang.Thread(function() {\n            if (requestData()) {\n                confirm({\n                    title: '提示',\n                    content: '更新地址成功'\n                })\n                refreshPage(false)\n            } else {\n                urls[0] = new Date().toISOString()\n                saveFile('urls.json', JSON.stringify(urls), 0)\n            }\n        })).start()\n} else if (!requestData()) {\n    confirm({\n        title: '提示',\n        content: '获取数据失败，请刷新重试'\n    })\n}","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/gYHKCDPZ.jpg"},{"last_chapter_rule":"","title":"裸艺.dz","author":"道长","version":4,"type":"picture","url":"hiker://empty#fyAll#fypage","col_type":"movie_3","class_name":"裸艺人体艺术&粉嫩女生人体&人体摄影艺术&西西大胆人体","class_url":"omrtys/list_1&yzrtys/list_2&rtyssy/list_3&xxddrt/list_4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//log(MY_URL);\nlet key=MY_URL.split(\"#\");\nkey.splice(0,1);\nlet url=\"https://m.48mp.com/\"+key.join(\"_\")+\".html\";\nif(key[1]==1){\nurl=url.split(\"list\")[0];\n}\nlog(url);\nvar d = [];\nvar html=request(url, {\n    headers: {\n        \"content-type\": \"charst=gb2312\"\n    }\n});\n\nvar list = parseDomForArray(html, 'body&&.libox');//       【列表】\n\nfor (var i in list) {\n\td.push({\n\t  title: parseDomForHtml(list[i], 'img&&alt'),//【标题】\n\t  pic_url: parseDomForHtml(list[i], 'img&&lazysrc'), //图片\n\t  //desc: parseDomForHtml(list[i], '.text-muted.time--a&&Text').replace(\"发布于\",\"日期:\")+\"  点赞: \"+parseDomForHtml(list[i], '.text-muted.views&&a,0&&span&&Text'),//【描述】\n\t  url: $('https://m.48mp.com'+pdfh(list[i], 'a&&href')).lazyRule(()=>{\n\t      //log(input);\nvar firstPage = request(input, {\n    headers: {\n        \"content-type\": \"charst=gb2312\"\n    }\n});\n\nvar pic = pdfh(firstPage, \".tal&&img&&src\");\n\nvar num=pdfh(firstPage, \".p_select&&p&&Text\").split(\"/\")[1].replace(\"张\",\"\");\n\nvar htmlUrl = [];\n\nvar picArr = [];\nfor (let p = 2; p <= num; p++) htmlUrl.push({url: input + p + \".html\",});\n\nvar htmlArr=batchFetch(htmlUrl);\n\npicArr.push(pic);\nfor(let j=0;j<htmlArr.length;j++) picArr.push(parseDomForHtml(htmlArr[j],\".tal&&img&&src\"));\n\nreturn \"pics://\" + picArr.join(\"&&\");\n\n\t  })\n\t});\n}\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤②🖼️敦伦","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"ACG漫画网","author":"@LoyDgIk","version":0,"type":"other","url":"https://www.cool-comics.com/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"最新&最热","class_url":"index&hot","area_name":"英文同人&日语漫画&中文漫画","area_url":"english&japanese&chinese","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#list&&li;a,1&&Text.js:input.split('').join('⁡');img&&src;.time&&Text;a&&href.js:$(input).lazyRule(()=>$.require(\"hiker://page/Picture\"))/*input.replace('.html','-fypage.html')*/","searchFind":"#list&&li;a,1&&Text;a&&href.js:$(input).lazyRule(()=>$.require(\"hiker://page/Picture\"));.time&&Text;.view&&Text;img&&src","search_url":"/q/**-fypage.html","group":"⑤②🖼️敦伦","detail_col_type":"pic_1_full","detail_find_rule":".manga-picture;;img&&src;;img&&src","sdetail_col_type":"pic_1_full","sdetail_find_rule":"*","ua":"mobile","preRule":"let data = new Date();\nlet datef = Number($.dateFormat(data, \"yyyyMMdd\"));\n\nlet MY_HOME = MY_RULE.url.match(/https?\\:\\/\\/(.*?)\\//)[1];\nlet update = Number(getItem(\"date\", \"0\"));\nif (datef !== update && !ipping(MY_HOME)) {\n    confirm({\n        title: \"更新规则\",\n        content: \"检测到你规则的域名已失效，是否立即更新？\",\n        confirm: () => {\n            showLoading(\"正在获取可用域名\");\n            let html = request(\"https://www.51acgn.xyz/\");\n            let r = /https?\\:\\/\\/(.*?)\\//;\n            let hostList = pdfa(html, \".copyright&&a,0:3\").map(v => pdfh(v, \"a&&href\").match(r)[1]);\n            //hostList.splice(1, 0, html.match(/中文站备用域名：(.*?)，/)[1]);\n            let host = findReachableIP(hostList);\n            hideLoading();\n            if (!host) return \"toast://获取失败\";\n            toast(host);\n            r.test(MY_RULE.url);\n            MY_RULE.url = MY_RULE.url.replace(RegExp.$1, host);\n            return \"rule://\" + base64Encode(\"海阔视界￥home_rule￥\" + JSON.stringify(MY_RULE));\n\n        },\n        cancel: () => {\n            return \"toast://😇\";\n        }\n    });\n    setItem(\"date\", datef);\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x\",\"path\":\"Picture\",\"rule\":\"js:\\nvar firstPage = request(input);\\n\\nvar i = parseDomForHtml(firstPage,\\\".page&&a,-2&&Text\\\");\\n\\nvar map = (html, arr) => {\\n    parseDomForArray(html, \\\".manga-picture&&img\\\").map(item => {\\n        arr.push(parseDomForHtml(item, \\\"img&&src\\\"));\\n    });\\n}\\n\\nvar htmlUrl = [];\\nfor (let p = 1; p <=i; p++) {\\n    htmlUrl.push({\\n        url: input.replace(\\\".html\\\",\\\"-\\\"+p+\\\".html\\\")\\n    });\\n}\\n\\nvar htmlArr = batchFetch(htmlUrl);\\nvar picArr = [];\\nmap(firstPage, picArr);\\nhtmlArr.map(item => map(item, picArr));\\n$.exports=\\\"pics://\\\" + picArr.join(\\\"&&\\\");\"}]","proxy":"","icon":"https://thumbsnap.com/i/5vdJrzyy.jpg"},{"last_chapter_rule":"body&&#tempc&&p&&Text","title":"无修遮漫画","author":"","version":0,"type":"cartoon","url":"http://wxzmh.top/booklist?tag=fyclass&area=fyarea&end=fysort&page=fypage","col_type":"movie_3","class_name":"全部&青春&性感&长腿&多人&御姐&巨乳&新婚&媳妇&暧昧&清纯&调教&少婦&風骚&同居&淫乱&好友&女神&诱惑&偷情&出轨&正妹&家教","class_url":"全部&青春&性感&长腿&多人&御姐&巨乳&新婚&媳妇&暧昧&清纯&调教&%E5%B0%91%E5%A6%87&风骚&同居&淫乱&好友&女神&诱惑&偷情&出轨&正妹&家教","area_name":"全部&韩漫&出版","area_url":"-1&1&3","sort_name":"全部&连载&完结","year_name":"","sort_url":"-1&0&1","year_url":"","find_rule":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.mh-list&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.chapter&&Text'),\npic_url:parseDom(list[i],'.mh-cover&&style'),\nurl:parseDom(list[i],'a&&href'),\ncol_type: 'movie_3'});\n  }catch(e){}\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.mh-list&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.chapter&&Text'),\npic_url:parseDom(list[i],'.mh-cover&&style'),\nurl:parseDom(list[i],'a[title]&&href'),\ncontent:parseDomForHtml(list[i],'.zl&&Text'),\n});\n  }catch(e){}\n}\n\nres.data = d;\nsetSearchResult(res);","search_url":"/search?keyword=**","group":"⑤②🖼️敦伦","detail_col_type":"text_1","detail_find_rule":"js:var res = {};var d = [];\nvar html = getResCode();\nvar des_pic =parseDom(getResCode(), 'body&&.cover&&img&&src');\n\nvar des_title =parseDomForHtml(getResCode(), 'body&&.cover&&img&&alt');\n\nvar des_desc =parseDomForHtml(getResCode(), 'body&&.content&&Text');\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\nd.push({col_type:'line_blank'});\n\nvar list = parseDomForArray(getResCode(), 'body&&#chapterlistload&&li');\n\nd.push({\ntitle:'‘‘章节目录’’',\ncol_type:'text_center_1'\n});\n\nfor(var i in list){\nd.push({\ntitle:parseDomForHtml(list[i],'li&&Text'),\nurl:parseDom(list[i],'a&&href')+`@lazyRule=.js:'pics://'+parseDomForHtml(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Linux; Android 10)'}}),'#cp_img&&Html').match(/http(?!(jpg|png|gif)).+?(jpg|png|gif)/g).join('&&')`\n  });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/136.png"},{"last_chapter_rule":"","title":"哔咔漫画","author":"TyrantGenesis","version":3,"type":"other","url":"hiker://empty$$fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n$.require('hiker://page/picacg').baseParse();","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"picacg\",\"path\":\"picacg\",\"rule\":\"const picacg = {\\n    // BaseUrl: \\\"https://picaapi.picacomic.com/\\\",\\n    BaseUrl: \\\"http://172.67.222.24/\\\",\\n    empty: 'hiker://empty',\\n    picacg_path: \\\"hiker://files/rules/js/TyrantGenesis_哔咔设置.js\\\",\\n    searchHistory: \\\"hiker://files/rules/js/TyrantGenesis_哔咔搜索历史.js\\\",\\n    apiKey: \\\"C69BAF41DA5ABD1FFEDC6D2FEA56B\\\",\\n    nonce: \\\"b1ab87b4800d4d4590a11701b8551afa\\\",\\n    secretKey: \\\"~d}$Q7$eIni=V)9\\\\\\\\RK/P.RM4;9[7|@/CA}b~OW!3?EV`:<>M7pddUBL5n|0/*Cn\\\",\\n    d: [],\\n    data: {\\n        rankTT: getItem('rankTT', 'H24'),\\n        sort: getItem('sort', 'ua'),\\n        searchValue: getItem('searchValue', ''),\\n        searchHistoryShowStatus: getItem('searchHistoryShowStatus', '0'),\\n        infoTab: getItem('infoTab', '1'),\\n        infoReverse: getItem('infoReverse', '1'),\\n    },\\n    share_account: {\\n        name: 'hiker_share',\\n        passwd: 'hiker_share_12345678'\\n    },\\n    defaultConfig: {\\n        searchHistoryMax: 100,\\n        searchHistoryShowLimit: 20,\\n    },\\n    images: [],\\n    episodes: [],\\n    headers: {\\n        \\\"accept\\\":            \\\"application/vnd.picacomic.com.v1+json\\\",\\n        \\\"app-channel\\\":       \\\"2\\\",\\n        \\\"time\\\":              (new Date().getTime()/1000).toFixed(0),\\n        \\\"app-version\\\":       \\\"2.2.1.2.3.3\\\",\\n        \\\"app-uuid\\\":          \\\"defaultUuid\\\",\\n        \\\"app-platform\\\":      \\\"android\\\",\\n        \\\"app-build-version\\\": \\\"44\\\",\\n        \\\"Content-Type\\\":      \\\"application/json; charset=UTF-8\\\",\\n        \\\"User-Agent\\\":        \\\"okhttp/3.8.1\\\",\\n        \\\"image-quality\\\":     \\\"original\\\",\\n        \\\"Host\\\":              \\\"picaapi.picacomic.com\\\",\\n    },\\n    encrypt: (url, ts, method) => {\\n        eval(getCryptoJS())\\n        let raw = url.replace(picacg.BaseUrl, \\\"\\\") + ts + picacg.nonce + method + picacg.apiKey\\n        raw = raw.toLocaleLowerCase()\\n        return CryptoJS.HmacSHA256(raw, picacg.secretKey).toString(CryptoJS.enc.Hex)\\n    },\\n    httpRequest: (path, method, data) => {\\n        let responseJson\\n        const request_url = picacg.BaseUrl + path\\n        let headers = picacg.headers\\n        headers['api-key'] = picacg.apiKey\\n        headers.nonce = picacg.nonce\\n        headers.signature = picacg.encrypt(request_url, headers.time, method)\\n        try {\\n            if (fileExist(picacg.picacg_path)) headers.authorization = fetch(picacg.picacg_path).split('\\\\n')[2]\\n        } catch (e) {\\n            writeFile(picacg.picacg_path, '')\\n            toast('账号异常,请重新登录')\\n            refreshPage(false)\\n        }\\n\\n        responseJson = method === 'GET' ? fetch(request_url, {headers: headers}) : fetch(request_url, {headers: headers, method: method, body: data})\\n\\n        const response = JSON.parse(responseJson)\\n\\n        // 自动登录\\n        if (response.code === 401 && response.error === '1005') {\\n            let email, password\\n            try {\\n                if (fileExist(picacg.picacg_path)) {\\n                    email = fetch(picacg.picacg_path).split('\\\\n')[0]\\n                    password = fetch(picacg.picacg_path).split('\\\\n')[1]\\n                }\\n            } catch (e) {\\n                writeFile(picacg.picacg_path, '')\\n                toast('账号异常,请重新登录')\\n                refreshPage(true)\\n            }\\n            if (! email || ! password) {\\n                writeFile(picacg.picacg_path, '')\\n                toast('账号异常,请重新登录')\\n                refreshPage(true)\\n            } else {\\n                const autoLoginResponse = picacg.post('auth/sign-in', {\\n                    email: email,\\n                    password: password,\\n                })\\n                if (autoLoginResponse.code === 400) {\\n                    return 'toast://'+ (autoLoginResponse.detail || autoLoginResponse.message)\\n                } else {\\n                    const setting = email + '\\\\n' + password + '\\\\n' +autoLoginResponse.data.token\\n                    writeFile(picacg.picacg_path, setting)\\n                    refreshPage(true)\\n                }\\n            }\\n        }\\n        return response\\n    },\\n    get: path => picacg.httpRequest(path, 'GET', ''),\\n    post: (path, data) => picacg.httpRequest(path, 'POST', data),\\n    baseParse: () => {\\n        if (! fileExist(picacg.picacg_path) || ! fetch(picacg.picacg_path)) {\\n            picacg.d.push({\\n                title: '登录哔咔',\\n                url: $(picacg.empty).rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.login()\\n                    setResult(picacg.d);\\n                }),\\n                col_type: 'text_center_1'\\n            })\\n            picacg.d.push({\\n                title: '注册哔咔',\\n                url: $(picacg.empty).rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.register()\\n                    setResult(picacg.d);\\n                }),\\n                col_type: 'text_center_1'\\n            })\\n            picacg.d.push({\\n                title: '共享账号登录',\\n                url: $(picacg.empty).lazyRule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    return picacg.shareLogin()\\n                }),\\n                col_type: 'text_center_1'\\n            })\\n        } else {\\n            try {\\n                const userInfo = picacg.get('users/profile').data.user\\n\\n                picacg.d.push({\\n                    title: '用户『'+userInfo.name+'』 # 个人中心',\\n                    pic_url: 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                    url: $(picacg.empty).rule(() => {\\n                        const picacg = $.require('hiker://page/picacg')\\n                        picacg.settingPage()\\n                        setResult(picacg.d)\\n                    }),\\n                    col_type: 'avatar',\\n                })\\n            } catch (e) {}\\n\\n            picacg.d.push({\\n                url: $(picacg.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getSearch()\\n                    setResult(picacg.d)\\n                }),\\n                title: '请输入关键词',\\n                col_type: \\\"icon_1_search\\\",\\n            })\\n            picacg.d.push({\\n                title: '排行榜',\\n                url: $(picacg.empty+\\\"#fullTheme#\\\").rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getRanking()\\n                    setResult(picacg.d)\\n                }),\\n                col_type: 'text_3',\\n            })\\n            picacg.d.push({\\n                title: '随机本子',\\n                url: $(picacg.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getRandom()\\n                    setResult(picacg.d)\\n                }),\\n                col_type: 'text_3',\\n            })\\n            picacg.d.push({\\n                title: '我的收藏',\\n                url: $(picacg.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getFavourite()\\n                    setResult(picacg.d)\\n                }),\\n                col_type: 'text_3',\\n            })\\n            picacg.d.push({\\n                col_type: 'line_blank'\\n            })\\n            picacg.getCategories()\\n        }\\n\\n        setResult(picacg.d);\\n    },\\n    login: () => {\\n        picacg.d.push({\\n            desc: '请输入用户名',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                onChange: $.toString(() => {\\n                    if (input) setItem('email', input)\\n                })\\n            }\\n        })\\n        picacg.d.push({\\n            desc: '请输入密码',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                onChange: $.toString(() => {\\n                    if (input) setItem('password', input)\\n                })\\n            }\\n        })\\n        picacg.d.push({\\n            title: '登录',\\n            url: $(picacg.empty).lazyRule(() => {\\n                const picacg = $.require('hiker://page/picacg')\\n                const response = picacg.post('auth/sign-in', {\\n                    email: getItem('email', ''),\\n                    password: getItem('password', ''),\\n                })\\n                if (response.code === 400) {\\n                    return 'toast://'+ (response.detail || response.message)\\n                } else {\\n                    const setting = getItem('email', '') + '\\\\n' + getItem('password', '') + '\\\\n' +response.data.token\\n                    writeFile(picacg.picacg_path, setting)\\n                    toast('登录成功')\\n                    back(true)\\n                    return picacg.empty\\n                }\\n            }),\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false,\\n            }\\n        })\\n\\n    },\\n    shareLogin: () => {\\n        const response = picacg.post('auth/sign-in', {\\n            email: picacg.share_account.name,\\n            password: picacg.share_account.passwd,\\n        })\\n        if (response.code === 400) {\\n            return 'toast://'+ (response.detail || response.message)\\n        } else {\\n            const setting = getItem('email', '') + '\\\\n' + getItem('password', '') + '\\\\n' +response.data.token\\n            writeFile(picacg.picacg_path, setting)\\n            refreshPage(false)\\n            return \\\"toast://登录成功\\\"\\n        }\\n    },\\n    register: () => {\\n        picacg.d.push({\\n            desc: '请输入昵称',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                onChange: $.toString(() => {\\n                    if (input) setItem('name', input)\\n                })\\n            }\\n        })\\n        picacg.d.push({\\n            desc: '请输入用户名',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                onChange: $.toString(() => {\\n                    if (input) setItem('email', input)\\n                })\\n            }\\n        })\\n        picacg.d.push({\\n            desc: '请输入密码',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                onChange: $.toString(() => {\\n                    if (input) setItem('password', input)\\n                })\\n            }\\n        })\\n        picacg.d.push({\\n            title: '注册',\\n            url: $(picacg.empty).lazyRule(() => {\\n                const picacg = $.require('hiker://page/picacg')\\n                const response = picacg.post('auth/register', {\\n                    email: getItem('email', ''),\\n                    password: getItem('password', ''),\\n                    name: getItem('name', ''),\\n                    birthday: '1970-01-01',\\n                    gender: 'f',\\n                    question1: 'question1',\\n                    question2: 'question2',\\n                    question3: 'question3',\\n                    answer1: 'answer1',\\n                    answer2: 'answer2',\\n                    answer3: 'answer3',\\n                })\\n\\n                if (response.code === 400) {\\n                    return 'toast://'+ (response.detail || response.message)\\n                } else {\\n                    const loginResponse = picacg.post('auth/sign-in', {\\n                        email: getItem('email', ''),\\n                        password: getItem('password', ''),\\n                    })\\n                    const setting = getItem('email', '') + '\\\\n' + getItem('password', '') + '\\\\n' +loginResponse.data.token\\n                    writeFile(picacg.picacg_path, setting)\\n                    toast('注册成功，已自动登录')\\n                    back(true)\\n                    return picacg.empty\\n                }\\n            }),\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false,\\n            }\\n        })\\n    },\\n    getSearch: () => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('sort')\\n            clearItem('searchValue')\\n            clearItem('searchHistoryShowStatus')\\n        }))\\n\\n        const page = MY_URL.split('$$')[1]\\n\\n        if (parseInt(page) === 1) {\\n            picacg.d.push({\\n                title: '搜索',\\n                url: $.toString(() => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.setSearchHistory(input)\\n                    setItem('searchValue', input)\\n                    refreshPage(false)\\n                    return \\\"hiker://empty\\\"\\n                }),\\n                desc: '请输入关键词',\\n                col_type: 'input',\\n                extra: {\\n                    defaultValue: picacg.data.searchValue,\\n                    onChange: $.toString(() => {\\n                        if (getItem('searchValue', '') && ! input) {\\n                            clearItem('searchValue')\\n                            clearItem('searchHistoryShowStatus')\\n                            refreshPage(false)\\n                            return \\\"hiker://empty\\\"\\n                        }\\n                    })\\n                }\\n            })\\n\\n            if (! picacg.data.searchValue) {\\n                if (fileExist(picacg.searchHistory) && fetch(picacg.searchHistory)) {\\n                    const searchHistory = fetch(picacg.searchHistory).split('||').filter(item => item)\\n                    picacg.d.push({\\n                        title: '搜索记录：',\\n                        url: picacg.empty,\\n                        col_type: 'text_1',\\n                        extra: {\\n                            lineVisible: false\\n                        },\\n                    })\\n\\n                    let picacgConfig = picacg.defaultConfig\\n                    searchHistory.forEach((history, index) => {\\n                        if (picacg.data.searchHistoryShowStatus === '1' || (picacg.data.searchHistoryShowStatus === '0' && picacgConfig.searchHistoryShowLimit - index >= 1)) {\\n                            picacg.d.push({\\n                                title: history,\\n                                url: $(picacg.empty).lazyRule(history => {\\n                                    const picacg = $.require('hiker://page/picacg')\\n                                    picacg.setSearchHistory(history)\\n                                    setItem('searchValue', history)\\n                                    refreshPage(false)\\n                                    return \\\"hiker://empty\\\"\\n                                }, history),\\n                                col_type: 'flex_button'\\n                            })\\n                        }\\n                    })\\n\\n                    picacg.d.push({\\n                        title: picacg.data.searchHistoryShowStatus === '1' ? '折叠记录' : '展开记录',\\n                        url: $(picacg.empty).lazyRule(params => {\\n                            setItem('searchHistoryShowStatus', params.status ? '0' : '1')\\n                            refreshPage(true)\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            status: picacg.data.searchHistoryShowStatus === '1'\\n                        }),\\n                        col_type: 'text_2',\\n                    })\\n                    picacg.d.push({\\n                        title: '清除记录',\\n                        url: $(picacg.empty).lazyRule(params => {\\n                            writeFile(params.filename, '')\\n                            refreshPage(true)\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            filename: picacg.searchHistory\\n                        }),\\n                        col_type: 'text_2',\\n                    })\\n                }\\n\\n                const hot_data = picacg.get('keywords')\\n                picacg.d.push({\\n                    col_type: 'line_blank'\\n                })\\n                picacg.d.push({\\n                    title: '热门搜索：',\\n                    url: picacg.empty,\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false\\n                    },\\n                })\\n                hot_data.data.keywords.forEach(hot => {\\n                    picacg.d.push({\\n                        title: hot,\\n                        url: $(picacg.empty).lazyRule(hot => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.setSearchHistory(hot)\\n                            setItem('searchValue', hot)\\n                            refreshPage(false)\\n                            return \\\"hiker://empty\\\"\\n                        }, hot),\\n                        col_type: 'flex_button'\\n                    })\\n                })\\n            } else {\\n                picacg.makeSort()\\n            }\\n        }\\n\\n        picacg.getSearchResult(page, '')\\n    },\\n    getSearchResult: (page, value) => {\\n        const searchValue = value ? value : picacg.data.searchValue\\n        if (searchValue) {\\n            const response = picacg.post('comics/advanced-search?page='+page, {\\n                keyword: searchValue,\\n                sort: picacg.data.sort,\\n            })\\n            response.data.comics.docs.forEach(comic => {\\n                picacg.d.push({\\n                    title: comic.title,\\n                    desc: comic.author,\\n                    pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                    url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                        const picacg = $.require('hiker://page/picacg')\\n                        picacg.getInfo(id)\\n                        setResult(picacg.d);\\n                    }, comic._id),\\n                    col_type: 'movie_3'\\n                })\\n            })\\n        }\\n    },\\n    setSearchHistory: value => {\\n        let picacgConfig = picacg.defaultConfig\\n        let searchHistory = fetch(picacg.searchHistory).split('||').filter(item => item)\\n\\n        if (searchHistory.includes(value)) {\\n            for (let i in searchHistory) {\\n                if (searchHistory[i] === value) {\\n                    searchHistory.splice(i, 1)\\n                    break\\n                }\\n            }\\n        } else if (searchHistory.length >= picacgConfig.searchHistoryMax) {\\n            searchHistory = searchHistory.slice(0, picacgConfig.searchHistoryMax - 1)\\n        }\\n\\n        searchHistory.unshift(value)\\n        writeFile(picacg.searchHistory, searchHistory.join('||'))\\n    },\\n    getRanking: () => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('rankTT')\\n        }))\\n        const tabs = [\\n            {title: '24小时', id: 'H24'},\\n            {title: '7天', id: 'D7'},\\n            {title: '30天', id: 'D30'},\\n        ]\\n        picacg.d.push({\\n            title: '排行榜',\\n            url: picacg.empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            },\\n        })\\n        picacg.d.push({\\n            col_type: 'line_blank'\\n        })\\n        tabs.forEach(item => {\\n            picacg.d.push({\\n                title: picacg.data.rankTT === item.id ? '‘‘’’<strong><font color=\\\"#ff1493\\\">'+item.title+'</font></strong>' : item.title,\\n                url: $(picacg.empty).lazyRule((item) => {\\n                    setItem('rankTT', item.id)\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, item),\\n                col_type: 'text_3',\\n            })\\n        })\\n        picacg.d.push({\\n            col_type: 'line_blank'\\n        })\\n        const response = picacg.get('comics/leaderboard?tt='+picacg.data.rankTT+'&ct=VC')\\n\\n        response.data.comics.forEach(comic => {\\n            picacg.d.push({\\n                title: comic.title,\\n                desc: comic.author,\\n                pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getInfo(id)\\n                    setResult(picacg.d);\\n                }, comic._id),\\n                col_type: 'movie_3'\\n            })\\n        })\\n    },\\n    getRandom: () => {\\n        const page = MY_URL.split('$$')[1]\\n        if (parseInt(page) === 1) {\\n            picacg.d.push({\\n                title: '随机本子',\\n                url: picacg.empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                },\\n            })\\n            picacg.d.push({\\n                col_type: 'line_blank'\\n            })\\n        }\\n        const response = picacg.get('comics/random?page='+page)\\n        response.data.comics.forEach(comic => {\\n            picacg.d.push({\\n                title: comic.title,\\n                desc: comic.author,\\n                pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getInfo(id)\\n                    setResult(picacg.d);\\n                }, comic._id),\\n                col_type: 'movie_3'\\n            })\\n        })\\n    },\\n    getFavourite: () => {\\n        const page = MY_URL.split('$$')[1]\\n        if (parseInt(page) === 1) {\\n            picacg.d.push({\\n                title: '我的收藏',\\n                url: picacg.empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                },\\n            })\\n            picacg.d.push({\\n                col_type: 'line_blank'\\n            })\\n        }\\n        const response = picacg.get('users/favourite?s=dd&page='+page)\\n        response.data.comics.docs.forEach(comic => {\\n            picacg.d.push({\\n                title: comic.title,\\n                desc: comic.author,\\n                pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.getInfo(id)\\n                    setResult(picacg.d);\\n                }, comic._id),\\n                col_type: 'movie_3'\\n            })\\n        })\\n    },\\n    getCategories: () => {\\n        const response = picacg.get('categories')\\n        if (response.code === 200) {\\n            const no_image = ['大家都在看', '那年今天', '官方都在看'];\\n            response.data.categories.forEach((cate, index) => {\\n                let pic = no_image.includes(cate.title) ? 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg' : /*cate.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+cate.thumb.path\\n                let desc = no_image.includes(cate.title) ? '0' : '5'\\n                // let desc = '3'\\n                if (!cate.isWeb) {\\n                    picacg.d.push({\\n                        title: cate.title,\\n                        desc: desc,\\n                        pic_url: pic,\\n                        url: $(picacg.empty+'#noHistory#$$fypage').rule((title) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.getComics(title)\\n                            setResult(picacg.d);\\n                        }, cate.title),\\n                        col_type: 'card_pic_3'\\n                    })\\n                }\\n            })\\n        }\\n    },\\n    getComics: (title) => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('sort')\\n        }))\\n        const page = MY_URL.split('$$')[1]\\n        if (parseInt(page) === 1) picacg.makeSort()\\n        const response = picacg.get('comics?c='+encodeURIComponent(title)+'&page='+page+'&s='+picacg.data.sort)\\n        if (response.code === 200) {\\n            response.data.comics.docs.forEach((comic, index) => {\\n                picacg.d.push({\\n                    title: comic.title,\\n                    desc: comic.author,\\n                    pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                    url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                        const picacg = $.require('hiker://page/picacg')\\n                        picacg.getInfo(id)\\n                        setResult(picacg.d);\\n                    }, comic._id),\\n                    col_type: 'movie_3'\\n                })\\n            })\\n        }\\n    },\\n    getEpisodesPicture: (id, page) => {\\n        const episodesRes = picacg.get('comics/'+id+'/eps?page='+page)\\n        if (episodesRes.code === 200 && episodesRes.data.eps.docs.length > 0) {\\n            episodesRes.data.eps.docs.forEach((ep, index) => {\\n                picacg.episodes.push({\\n                    title: ep.title,\\n                    url: ep.order,\\n                })\\n            })\\n            page = page+1\\n            picacg.getEpisodesPicture(id, page)\\n        }\\n    },\\n    getInfo: (id) => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('infoTab')\\n            clearItem('infoReverse')\\n        }))\\n        const page = MY_URL.split('$$')[1]\\n\\n        if (parseInt(page) === 1) {\\n            const response = picacg.get('comics/'+id)\\n            if (! response.data) {\\n                toast('漫画信息错误')\\n                back(false)\\n            }\\n\\n            const info = response.data.comic\\n\\n            setPageTitle(info.title)\\n\\n            picacg.d.push({\\n                title: info.title,\\n                desc:\\n                    '✨ 分类：'+info.categories.join(' ')+'\\\\n'+\\n                    '❤️ 喜欢：'+info.likesCount+'     浏览：'+info.viewsCount+'\\\\n'+\\n                    ' 详情：'+info.description,\\n                pic_url: /*info.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+info.thumb.path,\\n                url: $(picacg.empty).rule((description, image) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    setPageTitle('本子详情')\\n                    picacg.d.push({\\n                        pic_url: image,\\n                        url: image,\\n                        col_type: 'pic_1_full'\\n                    })\\n                    picacg.d.push({\\n                        title: description,\\n                        col_type: 'long_text'\\n                    })\\n                    setResult(picacg.d)\\n                }, info.description, /*info.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+info.thumb.path),\\n                col_type: 'movie_1_vertical_pic_blur'\\n            })\\n\\n            picacg.d.push({\\n                col_type: 'line_blank'\\n            })\\n\\n            try {\\n                picacg.d.push({\\n                    title: '作者：'+info.author,\\n                    pic_url: 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                    url: $(picacg.empty+\\\"#fullTheme##noHistory#$$fypage\\\").rule((author) => {\\n                        addListener('onClose', $.toString(() => {\\n                            clearItem('sort')\\n                            clearItem('searchValue')\\n                        }))\\n                        const page = MY_URL.split('$$')[1]\\n                        const picacg = $.require('hiker://page/picacg')\\n                        picacg.setSearchHistory(author)\\n                        if (parseInt(page) === 1) {\\n                            picacg.d.push({\\n                                title: '标签搜索：‘‘’’<strong><font color=\\\"#ff1493\\\">'+author+'</font></strong>',\\n                                url: picacg.empty,\\n                                col_type: 'text_center_1',\\n                                extra: {\\n                                    lineVisible: false\\n                                },\\n                            })\\n                            picacg.makeSort()\\n                        }\\n                        picacg.getSearchResult(page, author)\\n                        setResult(picacg.d)\\n                    }, info.author),\\n                    col_type: 'icon_2_round'\\n                })\\n                picacg.d.push({\\n                    title: '上传：'+info._creator.name,\\n                    pic_url: info._creator.avatar ? /*info._creator.avatar.fileServer+*/'https://storage.wikawika.xyz/static/'+info._creator.avatar.path : 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                    url: $(picacg.empty+\\\"#fullTheme##noHistory#$$fypage\\\").rule((name) => {\\n                        addListener('onClose', $.toString(() => {\\n                            clearItem('sort')\\n                            clearItem('searchValue')\\n                        }))\\n                        const page = MY_URL.split('$$')[1]\\n                        const picacg = $.require('hiker://page/picacg')\\n                        picacg.setSearchHistory(name)\\n                        if (parseInt(page) === 1) {\\n                            picacg.d.push({\\n                                title: '标签搜索：‘‘’’<strong><font color=\\\"#ff1493\\\">'+name+'</font></strong>',\\n                                url: picacg.empty,\\n                                col_type: 'text_center_1',\\n                                extra: {\\n                                    lineVisible: false\\n                                },\\n                            })\\n                            picacg.makeSort()\\n                        }\\n                        picacg.getSearchResult(page, name)\\n                        setResult(picacg.d)\\n                    }, info._creator.name),\\n                    col_type: 'icon_2_round'\\n                })\\n\\n                if (info.tags.length > 0) {\\n                    info.tags.forEach(tag => {\\n                        picacg.d.push({\\n                            title: tag,\\n                            url: $(picacg.empty+\\\"#fullTheme##noHistory#$$fypage\\\").rule((tag) => {\\n                                addListener('onClose', $.toString(() => {\\n                                    clearItem('sort')\\n                                    clearItem('searchValue')\\n                                }))\\n                                const page = MY_URL.split('$$')[1]\\n                                const picacg = $.require('hiker://page/picacg')\\n                                picacg.setSearchHistory(tag)\\n                                if (parseInt(page) === 1) {\\n                                    picacg.d.push({\\n                                        title: '标签搜索：‘‘’’<strong><font color=\\\"#ff1493\\\">'+tag+'</font></strong>',\\n                                        url: picacg.empty,\\n                                        col_type: 'text_center_1',\\n                                        extra: {\\n                                            lineVisible: false\\n                                        },\\n                                    })\\n                                    picacg.makeSort()\\n                                }\\n                                picacg.getSearchResult(page, tag)\\n                                setResult(picacg.d)\\n                            }, tag),\\n                            col_type: 'flex_button',\\n                        })\\n                    })\\n\\n                    picacg.d.push({\\n                        col_type: 'line'\\n                    })\\n                }\\n            } catch (e) {}\\n\\n            // 递归获取选集\\n            picacg.getEpisodesPicture(id, 1)\\n\\n            picacg.d.push({\\n                title: info.isFavourite ? '‘‘’’<strong><font color=\\\"red\\\">取消收藏</font></strong>' : '‘‘’’<strong><font color=\\\"#00bfff\\\">收藏</font></strong>',\\n                url: $(picacg.empty).lazyRule((id, isFavourite) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.post('comics/'+id+'/favourite', {})\\n                    toast(isFavourite?'取消收藏':'收藏成功')\\n                    refreshPage(false)\\n                    return picacg.empty\\n                }, id, info.isFavourite),\\n                col_type: 'text_3'\\n            })\\n\\n            picacg.d.push({\\n                title: info.isLiked ? '‘‘’’<strong><font color=\\\"red\\\">取消点赞</font></strong>' : '‘‘’’<strong><font color=\\\"#00bfff\\\">点赞</font></strong>',\\n                url: $(picacg.empty).lazyRule((id, isLiked) => {\\n                    const picacg = $.require('hiker://page/picacg')\\n                    picacg.post('comics/'+id+'/like', {})\\n                    toast(isLiked?'取消点赞':'点赞成功')\\n                    refreshPage(false)\\n                    return picacg.empty\\n                }, id, info.isLiked),\\n                col_type: 'text_3'\\n            })\\n\\n            picacg.d.push({\\n                title: '‘‘’’<strong><font color=\\\"#ff1493\\\">下载</font></strong>',\\n                url: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\n                extra: {\\n                    chapterList: picacg.episodes,\\n                    info:{\\n                        bookName: info.title,\\n                        ruleName: MY_RULE.title,\\n                        bookTopPic: 'https://storage.wikawika.xyz/static/'+info.thumb.path,\\n                        parseCode: $.toString((id, ruleName) => {\\n                            const picacg = $.require('hiker://page/picacg?rule='+ruleName)\\n                            return picacg.getPicture(id, input)\\n                        }, id, MY_RULE.title)\\n                    },\\n                    defaultView:\\\"1\\\"\\n                },\\n                col_type: 'text_3',\\n            })\\n\\n            picacg.d.push({\\n                col_type: 'line'\\n            })\\n\\n            const tabs = [\\n                {title: '章节', id: '1'},\\n                {title: '推荐', id: '2'},\\n                {title: '看评论', id: '3'},\\n                {title: '写评论', id: '4'},\\n            ]\\n\\n            tabs.forEach(tab => {\\n                picacg.d.push({\\n                    title: picacg.data.infoTab === tab.id ? '‘‘’’<strong><font color=\\\"#ff1493\\\">'+tab.title+'</font></strong>' : tab.title,\\n                    url: $(picacg.empty).lazyRule((tab) => {\\n                        setItem('infoTab', tab.id)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, tab),\\n                    col_type: 'text_4',\\n                })\\n            })\\n\\n            switch (picacg.data.infoTab) {\\n                case '1':\\n                    picacg.d.push({\\n                        title: picacg.data.infoReverse === '1' ? '当前排序：正序' : '当前排序：倒序',\\n                        url: $(picacg.empty).lazyRule((infoReverse) => {\\n                            setItem('infoReverse', infoReverse ? '2' : '1')\\n                            refreshPage(false)\\n                            return 'hiker://empty'\\n                        }, picacg.data.infoReverse === '1'),\\n                        col_type: 'text_center_1',\\n                    })\\n\\n                    const data = picacg.data.infoReverse === '1' ? picacg.episodes.reverse() : picacg.episodes\\n\\n                    data.forEach(ep => {\\n                        picacg.d.push({\\n                            title: ep.title,\\n                            url: $(picacg.empty).lazyRule((id, order) => {\\n                                const picacg = $.require('hiker://page/picacg')\\n                                return picacg.getPicture(id, order)\\n                            }, id, ep.url),\\n                            col_type: 'text_3'\\n                        })\\n                    })\\n                    break\\n                case '2':\\n                    const recommendationResponse = picacg.get('comics/'+id+'/recommendation')\\n                    recommendationResponse.data.comics.forEach(comic => {\\n                        picacg.d.push({\\n                            title: comic.title,\\n                            desc: comic.author,\\n                            pic_url: /*comic.thumb.fileServer+*/'https://storage.wikawika.xyz/static/'+comic.thumb.path,\\n                            url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                                const picacg = $.require('hiker://page/picacg')\\n                                picacg.getInfo(id)\\n                                setResult(picacg.d);\\n                            }, comic._id),\\n                            col_type: 'movie_3'\\n                        })\\n                    })\\n                    break\\n                case '4':\\n                    picacg.d.push({\\n                        desc: '请输入评论',\\n                        col_type: 'input',\\n                        extra: {\\n                            type: 'textarea',\\n                            height: 5,\\n                            titleVisible: false,\\n                            onChange: $.toString(() => {\\n                                if (input) setItem('comment', input)\\n                            })\\n                        }\\n                    })\\n                    picacg.d.push({\\n                        title: '提交评论',\\n                        url: $(picacg.empty).lazyRule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            const comment = getItem('comment', '')\\n                            if (! comment) {\\n                                return 'toast://请填写评论'\\n                            } else {\\n                                const sendCommentResponse = picacg.post('comics/'+id+'/comments', {\\n                                    content: comment\\n                                })\\n\\n                                if (sendCommentResponse.code === 200) {\\n                                    setItem('infoTab', '3')\\n                                    refreshPage(true)\\n                                    return 'toast://评论成功'\\n                                } else {\\n                                    return 'toast://'+(sendCommentResponse.message || sendCommentResponse.detail)\\n                                }\\n                            }\\n                        }, id),\\n                        col_type: 'text_center_1',\\n                    })\\n                    break\\n            }\\n\\n        }\\n\\n        try {\\n            if (picacg.data.infoTab === '3') {\\n                const commentsResponse = picacg.get('comics/'+id+'/comments?page='+page)\\n                commentsResponse.data.comments.docs.forEach(comment => {\\n                    let user = comment._user\\n                    if (user) {\\n                        picacg.d.push({\\n                            title: user.name,\\n                            pic_url: user.avatar ? /*user.avatar.fileServer+*/'https://storage.wikawika.xyz/static/'+user.avatar.path : 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                            url: picacg.empty,\\n                            col_type: 'avatar'\\n                        })\\n                    }\\n                    picacg.d.push({\\n                        title: comment.content+'<br />'+ '❤️ 喜欢：'+comment.likesCount+'&nbsp;&nbsp;&nbsp;&nbsp; 回复：'+comment.commentsCount,\\n                        col_type: 'rich_text'\\n                    })\\n                    picacg.d.push({\\n                        title: comment.isLiked ? '取消点赞' : '点赞',\\n                        url: $(picacg.empty).lazyRule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.post('comments/'+id+'/like', {})\\n                            refreshPage(false)\\n                            return 'toast://提交成功'\\n                        }, comment._id),\\n                        col_type: 'text_3',\\n                    })\\n                    picacg.d.push({\\n                        title: '看回复',\\n                        url: $(picacg.empty+'$$fypage').rule((id) => {\\n                            const page = MY_URL.split('$$')[1]\\n                            const picacg = $.require('hiker://page/picacg')\\n                            const response = picacg.get('comments/'+id+'/childrens?page='+page)\\n\\n                            response.data.comments.docs.forEach(comment => {\\n                                let user = comment._user\\n                                if (user) {\\n                                    picacg.d.push({\\n                                        title: user.name,\\n                                        pic_url: user.avatar ? /*user.avatar.fileServer+*/'https://storage.wikawika.xyz/static/'+user.avatar.path : 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                                        url: picacg.empty,\\n                                        col_type: 'avatar'\\n                                    })\\n                                }\\n                                picacg.d.push({\\n                                    title: comment.content+'<br />'+ '❤️ 喜欢：'+comment.likesCount,\\n                                    col_type: 'rich_text'\\n                                })\\n                                picacg.d.push({\\n                                    title: comment.isLiked ? '取消点赞' : '点赞',\\n                                    url: $(picacg.empty).lazyRule((id) => {\\n                                        const picacg = $.require('hiker://page/picacg')\\n                                        picacg.post('comments/'+id+'/like', {})\\n                                        refreshPage(false)\\n                                        return 'toast://提交成功'\\n                                    }, comment._id),\\n                                    col_type: 'text_center_1',\\n                                    extra: {\\n                                        lineVisible: false\\n                                    },\\n                                })\\n                                picacg.d.push({\\n                                    col_type: 'line',\\n                                })\\n                            })\\n\\n                            setResult(picacg.d);\\n                        }, comment._id),\\n                        col_type: 'text_3',\\n                    })\\n                    picacg.d.push({\\n                        title: '写回复',\\n                        url: $(picacg.empty).rule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.d.push({\\n                                desc: '请输入评论',\\n                                col_type: 'input',\\n                                extra: {\\n                                    type: 'textarea',\\n                                    height: 5,\\n                                    titleVisible: false,\\n                                    onChange: $.toString(() => {\\n                                        if (input) setItem('comment', input)\\n                                    })\\n                                }\\n                            })\\n                            picacg.d.push({\\n                                title: '提交评论',\\n                                url: $(picacg.empty).lazyRule((id) => {\\n                                    const picacg = $.require('hiker://page/picacg')\\n                                    const comment = getItem('comment', '')\\n                                    if (! comment) {\\n                                        return 'toast://请填写评论'\\n                                    } else {\\n                                        const sendCommentResponse = picacg.post('comments/'+id, {\\n                                            content: comment\\n                                        })\\n\\n                                        if (sendCommentResponse.code === 200) {\\n                                            back(false)\\n                                            return 'toast://评论成功'\\n                                        } else {\\n                                            return 'toast://'+(sendCommentResponse.message || sendCommentResponse.detail)\\n                                        }\\n                                    }\\n                                }, id),\\n                                col_type: 'text_center_1',\\n                            })\\n                            setResult(picacg.d);\\n                        }, comment._id),\\n                        col_type: 'text_3',\\n                    })\\n                    /*picacg.d.push({\\n                        title: '举报',\\n                        url: $(picacg.empty).lazyRule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.post('comics/'+id+'/report', {})\\n                            return 'toast://提交成功'\\n                        }, id),\\n                        col_type: 'text_4',\\n                    })*/\\n                    picacg.d.push({\\n                        col_type: 'line',\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n\\n    },\\n    getRecursionPicture: (id, order, page) => {\\n        const response = picacg.get('comics/'+id+'/order/'+order+'/pages?page='+page)\\n        if (response.code === 200 && response.data.pages.docs.length > 0) {\\n            response.data.pages.docs.forEach((page, index) => {\\n                // picacg.images.push(page.media.fileServer+'/static/'+page.media.path)\\n                picacg.images.push('https://storage.wikawika.xyz/static/'+page.media.path)\\n            })\\n            page = page+1\\n            picacg.getRecursionPicture(id, order, page)\\n        }\\n    },\\n    getPicture: (id, order) => {\\n        // 递归获取内容\\n        picacg.getRecursionPicture(id, order, 1)\\n        return 'pics://'+picacg.images.join('&&')\\n    },\\n    makeSort: () => {\\n        const tabs = [\\n            {title: '默认排序', id: 'ua'},\\n            {title: '新到旧', id: 'dd'},\\n            {title: '旧到新', id: 'da'},\\n            {title: '最多爱心', id: 'ld'},\\n            {title: '最多指名', id: 'vd'},\\n        ];\\n\\n        tabs.forEach(item => {\\n            picacg.d.push({\\n                title: picacg.data.sort === item.id ? '‘‘’’<strong><font color=\\\"#ff1493\\\">'+item.title+'</font></strong>' : item.title,\\n                url: $(picacg.empty).lazyRule((item) => {\\n                    setItem('sort', item.id)\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, item),\\n                col_type: 'scroll_button',\\n            })\\n        })\\n\\n        picacg.d.push({\\n            col_type: 'blank_block',\\n        })\\n    },\\n    settingPage: () => {\\n        picacg.d.push({\\n            title: '签到',\\n            url: $(picacg.empty).lazyRule(() => {\\n                const picacg = $.require('hiker://page/picacg')\\n                const response = picacg.post('users/punch-in', {})\\n                if (response.code === 200) {\\n                    return 'toast://签到成功'\\n                } else {\\n                    return 'toast://'+ (response.message || response.detail)\\n                }\\n            }),\\n            col_type: 'text_center_1'\\n        })\\n        picacg.d.push({\\n            title: '我的评论',\\n            url: $(picacg.empty+'$$fypage').rule(() => {\\n                const page = MY_URL.split('$$')[1]\\n                const picacg = $.require('hiker://page/picacg')\\n                const response = picacg.get('users/my-comments?page='+page)\\n\\n                response.data.comments.docs.forEach(comment => {\\n                    let user = comment._user\\n                    if (user) {\\n                        picacg.d.push({\\n                            title: user.name,\\n                            pic_url: user.avatar ? /*user.avatar.fileServer+*/'https://storage.wikawika.xyz/static/'+user.avatar.path : 'https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg',\\n                            url: picacg.empty,\\n                            col_type: 'avatar'\\n                        })\\n                    }\\n                    picacg.d.push({\\n                        title: comment.content+'<br />'+ '❤️ 喜欢：'+comment.likesCount,\\n                        col_type: 'rich_text'\\n                    })\\n                    picacg.d.push({\\n                        title: comment.isLiked ? '取消点赞' : '点赞',\\n                        url: $(picacg.empty).lazyRule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.post('comments/'+id+'/like', {})\\n                            refreshPage(false)\\n                            return 'toast://提交成功'\\n                        }, comment._id),\\n                        col_type: 'text_2',\\n                        extra: {\\n                            lineVisible: false\\n                        },\\n                    })\\n                    picacg.d.push({\\n                        title: '查看漫画',\\n                        url: $(picacg.empty+'#immersiveTheme##noHistory#$$fypage').rule((id) => {\\n                            const picacg = $.require('hiker://page/picacg')\\n                            picacg.getInfo(id)\\n                            setResult(picacg.d);\\n                        }, comment._comic._id),\\n                        col_type: 'text_2',\\n                        extra: {\\n                            lineVisible: false\\n                        },\\n                    })\\n                    picacg.d.push({\\n                        col_type: 'line',\\n                    })\\n                })\\n                setResult(picacg.d)\\n            }),\\n            col_type: 'text_center_1'\\n        })\\n        picacg.d.push({\\n            title: '退出登录',\\n            url: $(picacg.empty).lazyRule(() => {\\n                const picacg = $.require('hiker://page/picacg')\\n                writeFile(picacg.picacg_path, '')\\n                toast('退出登录')\\n                back(true)\\n                return picacg.empty\\n            }),\\n            col_type: 'text_center_1'\\n        })\\n    },\\n}\\n\\n$.exports = picacg\"}]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/pica.jpg"},{"last_chapter_rule":"span.update-time&&Text.js:\"更新至:\"+input","title":"漫画连连看","author":"","version":0,"type":"cartoon","url":"https://www.mhllk.com/list/all_fysort_fyarea-fypage.html","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"全部&日本&韩国","area_url":"all&1&2","sort_name":"全部&连载&完结","year_name":"","sort_url":"all&0&1","year_url":"","find_rule":".manga-list&&li;\na&&title;\nimg&&src;\n.manga-list-2-tip&&Text;\na&&href.js:input+\"#immersiveTheme#\"","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\n\n/*--变量名别动--*/\nconst Color = \"#19B89D\";\nvar html = getResCode();\n//标题\nvar title = pdfh(html, 'span&&Text');\nvar title_big = title; //显示的白色大字\n//封面图 一定不要加Referer\nvar des_pic = pd(html, '.detail-main-cover&&img&&data-original');\n//剧情简介\n\nvar des_desc = pdfh(html, '.detail-desc&&Text').replace(/详情|介绍|简介/, '').substring(0, 65);\n//文字描述<br>换行\nvar des_text =  pdfh(html, '.detail-main-info-class&&Text') + '<br>' + pdfh(html, '.detail-list-title-3&&Text') + '<br>简介：' + des_desc;\n\n//调用二级样式头部\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=2968');\n//执行x5样式\n\theader(d, {\n\t大字: title_big,\n\t片名: title,\n\t图片: des_pic,\n\t描述: des_text,\n})\n\nfunction 解析() {\n    var htmls = request(input);\n    var list=parseDomForArray(htmls,\"body&&#cp_img&&img\");\n    var pics = [];\n    for (i in list){\n        pics.push(parseDomForHtml(list[i],\"img&&data-original\")+ \"@Referer=https://www.feixuemh.com/\")};\n    return \"pics://\" + pics.join(\"&&\")\n}\n\nlet lazy = $(\"\").lazyRule(解析);\nlet downloadlazy = $.toString(解析);\n\nvar doList = []\nvar chapter_list = []\npdfa(html, 'body&&#chapter_indexes').forEach(x => {\n    chapter_list = chapter_list.concat(pdfa(x, 'ul&&li'))\n})\nfor (let i in chapter_list) {\n    let title = pdfh(chapter_list[i], 'Text')\n    let url = pd(chapter_list[i], 'a&&href')\n    d.push({\n        title: title,\n        url: url + lazy,\n        col_type: 'text_3'\n    })\n\n    doList.push({\n        title: title, // 章节名字\n        url: url, // 章节url\n    });\n}\n//新增传输\nvar 传输数据 = {\n    下载列表:doList,\n    下载解析:downloadlazy,\n    漫画名称:pdfh(html, 'span&&Text'),\n    漫画的展示图:pdfh(html, '.detail-main-info&&img&&data-original'),\n}\nputVar('下载器',传输数据)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"漫画_二级\",\"path\":\"ejtool\",\"rule\":\"function cover(标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine) {\\r\\nvar 标题, 作者, 分类, 状态, 章节, 更新, 简介,封面图片,true_url, hasLine;\\r\\n\\ttry {\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '‘‘’’<small><font color=\\\"#FA7298\\\">'+作者.slice(0,15)+\\\"&nbsp;\\\"+状态+'</font></small>'+'‘‘’’<small><font color=\\\"#B15BFF\\\">'+\\\"\\\\n\\\"+分类+'</font></small>'+'‘‘’’<small><font color=\\\"#FF359A\\\">'+\\\"\\\\n\\\"+章节+\\\"&nbsp;\\\"+更新+'</font></small>',\\r\\n\\t\\t\\tdesc:'‘‘’’<small>' +简介+ '</small>',\\r\\n\\t\\t\\tpic_url:  封面图片,\\r\\n\\t\\t\\turl: true_url,\\r\\n\\t\\t\\tcol_type: 'movie_1_vertical_pic_blur'\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line_blank',\\r\\n\\t\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\tcol_type: 'line',\\r\\n\\t\\t});\\r\\n\\t\\tif (hasLine) {\\r\\n\\t\\t\\titem.extra = {\\r\\n\\t\\t\\t\\tlineVisible: false\\r\\n\\t\\t\\t}\\r\\n\\t\\t}\\r\\n\\t\\td.push(item);\\r\\n\\t} catch (e) {}\\r\\n}\\r\\nfunction chapter(title,pic_url,chapterList, chapterTitle, chapterUrl, defaultOrder, hasLine,downloadlazy) {\\r\\n\\tvar list = chapterList;\\r\\n\\tvar original = [{\\r\\n\\t\\turl: MY_URL,\\r\\n\\t\\torder: defaultOrder\\r\\n\\t}];\\r\\n\\t!fileExist('hiker://files/rules/comic/comicLogFile.js') ? (writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(original))) : 0;\\r\\n\\tvar log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));\\r\\n\\tfor (var i in log) {\\r\\n\\t\\tif (log[i].url == MY_URL) {\\r\\n\\t\\t\\tvar now = i;\\r\\n\\t\\t\\tvar order = log[i].order;\\r\\n\\t\\t\\tbreak;\\r\\n\\t\\t} else {\\r\\n\\t\\t\\tvar now = '';\\r\\n\\t\\t\\tvar order = defaultOrder;\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\tlet orderItem = {\\r\\n\\t\\ttitle: \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '章节排序⇅' + '</font></strong>',\\r\\n\\t\\turl: MY_URL + `@lazyRule=.js:var log = JSON.parse(fetch('hiker://files/rules/comic/comicLogFile.js'));var now='` + now + `';if(now!=''){var now=parseInt(now);var order=log[now].order}else{var now=parseInt(log.length);var order=` + defaultOrder + `;log.push({url:input,order:order});}if(log[now].order){log[now].order=0;}else{log[now].order=1;};writeFile('hiker://files/rules/comic/comicLogFile.js', JSON.stringify(log));refreshPage();'hiker://empty'`,\\r\\n\\t\\tcol_type: 'text_center_1'\\r\\n\\t}\\r\\n\\tif (hasLine) {\\r\\n\\t\\torderItem.title = \\\"““””\\\" + '<strong><font color=\\\"#098AC1\\\">' + '集数排序⇅' + '</font></strong>';\\r\\n\\t\\torderItem.col_type = \\\"scroll_button\\\"\\r\\n\\t}\\r\\n\\tlet chapterLists = list.map((item)=>({\\r\\n\\t\\ttitle: pdfh(item,\\\"a&&Text\\\"),\\r\\n\\t\\turl: pd(item,\\\"a&&href\\\"),\\r\\n\\t}));\\r\\nd.push({\\r\\n\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"下载漫画\\\" + '</front></strong>',\\r\\n\\turl: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\r\\n\\tcol_type: \\\"scroll_button\\\",\\r\\n\\textra: {\\r\\n\\t\\tchapterList: chapterLists,\\r\\n\\t\\tinfo:{\\r\\n\\t\\t\\tbookName: title,\\r\\n\\t\\t\\truleName: MY_RULE.title,\\r\\n\\t\\t\\tbookTopPic: pic_url,\\r\\n\\t\\t\\tparseCode: downloadlazy\\r\\n\\t\\t},\\r\\n\\t\\tdefaultView:\\\"1\\\"\\r\\n\\t}\\r\\n});\\r\\n\\td.push({\\r\\n\\t\\ttitle: '‘‘’’<strong><font color= \\\"#098AC1\\\">' + \\\"本地书架\\\" + '</front></strong>',\\r\\n\\t\\turl: \\\"hiker://page/Main.view?rule=本地资源管理\\\",\\r\\n\\t\\tcol_type: \\\"scroll_button\\\",\\r\\n\\t});  \\r\\n\\td.push(orderItem);\\r\\n\\td.push({col_type: 'line'});\\t\\r\\n\\tvar list = order ? list : list.reverse();\\n\\tif(!list||list==\\\"\\\"){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: '此漫画已下架!!',\\r\\n\\t\\t\\tcol_type: 'text_1',\\r\\n\\t\\t});\\r\\n\\t}\\r\\n\\tfor (var i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: pdfh(list[i], chapterTitle),\\r\\n\\t\\t\\t\\turl: pd(list[i], chapterUrl) + lazy,\\r\\n\\t\\t\\t\\tcol_type: pdfh(list[0], chapterTitle).length > 4? 'flex_button' : 'flex_button',\\r\\n\\t\\t\\t});\\r\\n\\t\\t}catch (e) {}\\r\\n\\t}\\n\\td.push({col_type: 'big_big_blank_block',});\\r\\n}\\r\\n\\r\\nfunction line(lineList, lineTitleRule, varKey) {\\r\\n\\tlet list = lineList\\r\\n\\tvarKey = varKey == null ? (MY_RULE.url + '#line-index'): varKey;\\r\\n\\taddListener('onClose', $.toString((keyList) => {\\r\\n\\t\\tfor (let i in keyList) {clearVar(keyList[i])}\\r\\n\\t}, [varKey, MY_RULE.title + '#line-title']))\\r\\n\\tlet line0Title = '';\\r\\n\\ttry {\\r\\n\\t\\tline0Title = pdfh(list[0], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t} catch (e) {}\\r\\n\\tlog(MY_RULE.title + getVar((MY_RULE.title + '#line-title')))\\r\\n\\tfor (let i in list) {\\r\\n\\t\\ttry {\\r\\n\\t\\t\\tlet lineTitle = pdfh(list[i], lineTitleRule).replace(\\\"章节列表：\\\",\\\"\\\");\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: getVar((MY_RULE.title + '#line-title'), line0Title) === lineTitle ? \\\"切换:‘‘\\\" + lineTitle+\\\"\\\":lineTitle+\\\"‘‘:切换\\\",\\r\\n\\t\\t\\t\\turl: $().lazyRule((varKey, lineIndex, lineTitle) => {\\r\\n\\t\\t\\t\\t\\tputVar(varKey, lineIndex.toString());\\r\\n\\t\\t\\t\\t\\tputVar((MY_RULE.title + '#line-title'), lineTitle);\\r\\n\\t\\t\\t\\t\\tlog(MY_RULE.title + getVar((MY_RULE.title + '#line-title')));\\r\\n\\t\\t\\t\\t\\trefreshPage();\\r\\n\\t\\t\\t\\t\\treturn \\\"toast://已切换至\\\" + lineTitle;\\r\\n\\t\\t\\t\\t}, varKey, i, lineTitle),\\r\\n\\t\\t\\t\\tcol_type: 'scroll_button',\\r\\n\\t\\t\\t});\\r\\n\\t\\t} catch (e) {}\\r\\n\\t}\\r\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/69.png"},{"last_chapter_rule":"","title":"小草","author":"Timik","version":0,"type":"other","url":"hiker://empty/thread0806.php?fid=fyclass&search=fyarea&page=fypage;get;utf-8","col_type":"text_1","class_name":"讨论&贴图&自拍&文学","class_url":"7&8&16&20","area_name":"全部&今日主题&精华主题","area_url":"&today&digest","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar clUrl = JSON.parse(readFile('urls.json', 0)),\n    data = []\nclUrl.shift()\nvar res = {};\nvar d = [];\nvar url = 'https://' + MY_URL.replace('hiker://empty', clUrl[0]) + '/';\n\nvar h = fetch(url, {});\nvar list = pdfa(h, '#tbody&&tr:gt(0)');\nfor (var i in list) {\n    try {\n        d.push({\n            title: pdfh(list[i], 'h3&&Text').replace(/\\[.*?\\]/, ''),\n            desc: pdfh(list[i], 'div.f12&&Text') + \"   发帖：\" + pdfh(list[i], 'a.bl&&Text'),\n            url: 'https://' + clUrl[0] + '/' + pdfh(list[i], 'a&&href'),\n            col_type: 'text_1'\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar clUrl = JSON.parse(readFile('urls.json', 0)),\n    data = []\nclUrl.shift()\nvar res = {};\nvar d = [];\nvar url = 'https://' + MY_URL.replace('hiker://empty', clUrl[0]) + '/';\n\nvar h = fetch(url, {});\nvar list = pdfa(h, '#tbody&&tr:gt(0)');\nfor (var i in list) {\n    try {\n        d.push({\n            title: pdfh(list[i], 'h3&&Text').replace(/\\[.*?\\]/, ''),\n            desc: pdfh(list[i], 'div.f12&&Text') + \"   发帖：\" + pdfh(list[i], 'a.bl&&Text'),\n            url: 'https://' + clUrl[0] + '/' + pdfh(list[i], 'a&&href'),\n            col_type: 'text_1'\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar commentArray = [];\n\nfunction getComment(nodeHtml) {\n    let replyContent = '';\n    try {\n        let authorHtml = pdfh(nodeHtml, \".tipad&&Text\").replace(\"TOP\", \"\").replace(\"引用 | 點評\", \"\");\n        let authorName = pdfh(nodeHtml, \"tr.do_not_catch&&b&&Text\");\n        let author = '<br><small>' + authorName + authorHtml + '</small>';\n        let mContent = pdfh(nodeHtml, \"div.tpc_content&&Html\");\n        replyContent = mContent + author;\n    } catch (e) {}\n    return replyContent;\n};\nvar reExg = /&npsp;|&nbsp;|<div(?:(?!<\\/div>).|\\n)*?<\\/div>/gi;\nvar reStr = /ess-data/g;\nvar reStr2 = /iyl-data=\\\"([^\\\"]*?)\\\"/g;\nvar content = pdfh(html, \"div.tpc_content&&Html\").replace(reExg, '').replace(reStr, 'src').replace(reStr2, '');\nlet pageTitle = pdfh(html, \".f16&&Text\");\nlet author = pdfh(html, 'th&&Text');\nitems.push({\n    title: '<strong>' + pageTitle + '</strong><br/>' + '作者：' + author,\n    col_type: 'rich_text'\n});\nitems.push({\n    col_type: 'line'\n});\nitems.push({\n    title: content,\n    col_type: 'rich_text'\n});\n//log(content)\nitems.push({\n    col_type: 'line'\n});\nitems.push({\n    title: '<big><strong>网友评论</strong></big>',\n    col_type: 'rich_text'\n});\nitems.push({\n    col_type: 'line'\n});\ncommentArray = pdfa(html, '#main&&div.t2');\nfor (let i = 0; i < commentArray.length; i++) {\n    if (i > 0) {\n        let item = commentArray[i];\n        let comment = getComment(item);\n        if (comment !== '') {\n            items.push({\n                title: comment,\n                col_type: 'rich_text'\n            });\n            items.push({\n                col_type: 'line'\n            });\n        }\n    }\n}\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"function requestData() {\n    let json = JSON.parse(fetch('https://get.xunfs.com/app/listapp.php', {\n        body: 'a=get18&system=pc',\n        method: 'POST'\n    }));\n    let urls = [json.url1, json.url2, json.url3],\n        success = false;\n    urls.unshift(new Date().toISOString())\n    saveFile('urls.json', JSON.stringify(urls), 0)\n    success = true\n    log('更新网址' + (success ? '成功' : '失败'))\n    returnsuccess\n}\nlet urls = readFile('urls.json', false)\nif (urls) {   \n    if (Date.now() - Date.parse(urls[0]) > 24*60*60*1000 )\n        (new java.lang.Thread(function() {\n            if (requestData()) {\n                confirm({\n                    title: '小草 提示',\n                    content: '更新地址成功'\n                })\n                refreshPage(false)\n            } else {\n                urls[0] = new Date().toISOString()\n                saveFile('urls.json', JSON.stringify(urls), 0)\n            }\n        })).start()\n} else if (!requestData()) {\n    confirm({\n        title: '小草 提示',\n        content: '获取数据失败，请刷新重试'\n    })\n}","pages":"[]","proxy":"","icon":"http://td.gszye.com/attachments/202110/26/12/3247-kh9cnw.png"},{"last_chapter_rule":"","title":"草榴论坛","author":"K","version":2,"type":"all","url":"https://cl.8606x.xyz/thread0806.php?fid=fyclass&search=&page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"text_1","class_name":"技术讨论区&达盖尔的旗帜&新时代的我们&成人文学&亚洲有玛&亚洲无玛&欧美&动漫&国产&中字原创&下载&在线","class_url":"7&16&8&20&15&2&4&5&25&26&21&22","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&h3:not(:has(font)):not(:contains(者必看));\na&&Text;\n;\n;\na&&href.js:\"https://cl.8606x.xyz/\"+input.replace(\"data\",\"mob\");","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://td.gszye.com/attachments/202110/26/12/3247-kh9cnw.png"},{"last_chapter_rule":"","title":"Avmoo","author":"","version":0,"type":"other","url":"https://avmoo.click/cn/fyAll/page/fypage","col_type":"movie_3","class_name":"美園和花&安齋らら&鷲尾めい&有岡みう&若月みいな&有栖花あか&小泉ひなた&川村晴&斉藤みゆ&藤森里穂","class_url":"star/7091570cb8fab328&star/44a57c1c41250729&star/dcc5a28ee2982cc8&star/b9a2994f8cd461dc&star/73893ac4bb665e8a&star/4eb156848e0dbd1d&star/8fb4911dc4827e53&star/a110806004112762&star/16caf0e9dd5d4d9f&star/c3a8d79e09e74d04","area_name":"日下部加奈&益坂美亜&小宵こなん&小梅えな&椿織さとみ&七瀬いおり&根尾あかり&桐谷まつり&桃園怜奈","area_url":"star/cf4f0287f17c958f&star/1c317b6ee55514ba&star/85e25a6f10da4cfe&star/624167b39c28877a&star/2b136b3dd1423daf&star/db5ff04c1bc4d77b&star/8ac45c1c7feb58c9&star/ce048ad865cdd84f&star/d910749a67232226","sort_name":"巨乳&后宫&scoop&羽生ありさ&佐山愛&叶愛","year_name":"白石茉莉奈&水原みその&姫咲はな&夕美しおん&三島奈津子&羽生アリサ&凪沙ゆきの&夢乃あいか&篠田ゆう","sort_url":"genre/6387ceb8946b83c3&genre/2221e9c59b21545a&label/f3824b9c0beb0c4f&star/a4b3118724a954ea&star/76d435d4bfb91d80&star/dbac1befa3b70640","year_url":"star/34c4d03a3b9e1745&star/033a40efc41cf06e&star/fd889e1b74af3985&star/6f8f9f07fa9b9abb&star/4d6c6b277436c6b3&star/66977f75a8d6de10&star/8cbcc2c4980cd108&star/d494c7e9fb283e64&star/44ea747cc9811733","find_rule":"js:\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.movie-box');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'span&&date&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&date,1&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href').replace('http','http')+\"#noRecordHistory#\"\r\n  });\r\n}}catch(e){}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.movie-box');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'span&&date&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&date,1&&Text'),\n       content: parseDomForHtml(list[j], 'img&&title'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href').replace('http','https')+\"#noRecordHistory#\"\r\n  });\r\n}}catch(e){}\r\nsetResult(d);","search_url":"https://avmoo.click/cn/search/**/page/fypage","group":"⑤②🖼️敦伦","detail_col_type":"pic_1_full","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar des_desc = parseDomForHtml(html,'.col-md-3&&Text');\nvar des_title = parseDomForHtml(html,'h3&&Text');\nvar des_pic = parseDom(html,'img&&src');\n\nd.push({\n title: des_title,\n desc: des_desc,\n url: getUrl(),\n col_type: 'text_1',\n});\n\nvar avlist = parseDomForArray(html,'#avatar-waterfall&&a');\n\nfor(var j in avlist){\ntry{\nd.push({\n        title: parseDomForHtml(avlist[j], 'span&&Text'),\n        url: parseDom(avlist[j], 'a&&href'),\n        pic_url: parseDom(avlist[j], 'img&&src'),\n        col_type: 'icon_round_4',\n    });\n  }catch(e){}\n}\n\nd.push({\n pic_url: des_pic,\n url: des_pic,\n col_type: 'pic_1_full',\n});\n\nvar list = parseDomForArray(html,'body&&.sample-box');\n\nfor(var i in list){\ntry{\nd.push({\n        pic_url: parseDom(list[i], 'a&&href'),\n        url: parseDom(list[i], 'a&&href')\n    });\n  }catch(e){}\n}\n\nd.push({\ntitle:'‘‘番号搜索一’’',\nurl:'hiker://search?s='+parseDomForHtml(html,'.col-md-3&&span,1&&Text')+'&rule=BTSOW',\ncol_type:'text_center_1'\n});\n\nd.push({\ntitle:'‘‘番号搜索二’’',\nurl:'hiker://search?s='+parseDomForHtml(html,'.col-md-3&&span,1&&Text')+'&rule=磁力狗',\ncol_type:'text_center_1'\n});\n\nd.push({\ntitle:'‘‘番号搜索三’’',\nurl:'hiker://search?s='+parseDomForHtml(html,'.col-md-3&&span,1&&Text')+'&rule=无极磁力',\ncol_type:'text_center_1'\n});\n\nd.push({\ntitle:'‘‘番号搜索四’’',\nurl:'hiker://search?s='+parseDomForHtml(html,'.col-md-3&&span,1&&Text')+'&rule=磁力猫',\ncol_type:'text_center_1'\n});\n\nd.push({title: '<br>', col_type: 'rich_text'});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://thumbsnap.com/i/Pnq5PTxj.png"},{"last_chapter_rule":"","title":"凸凹吧","author":"Timik","version":0,"type":"picture","url":"https://www.63mm.cc/page_fypage.html[firstPage=https://www.63mm.cc/]","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".main&&article;h2&&Text;img&&src;;h2&&a&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var list_rule = '';\n    var pic_rule = \".entry&&img&&src\";\n    var title_rule = \"h1&&Text\";\n    var num_rule = \"#dm-fy&&a,-2&&Text\";\n    var next_url_rule = MY_URL + \"?page={page}\";\n    var charset = \"UTF-8\";\n    var user_agent = 'Windows';\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent,'content-type':'application/json; charset='+charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\",i);\n        //log({next_url:next_url});\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent ,'content-type':'application/json; charset='+charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if(list_rule==''){\n            var pic = parseDomForHtml(x, pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }else {\n            var list = parseDomForArray(x, list_rule)\n        //log({list:list})\n        for (var key in list) {\n            var pic = parseDomForHtml(list[key], pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"撸女吧","author":"Timik","version":0,"type":"picture","url":"https://www.97mm.cc/page_fypage.html[firstPage=https://www.97mm.cc/]","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".main&&article;h2&&Text;img&&src;;h2&&a&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var list_rule = '';\n    var pic_rule = \".entry&&img&&src\";\n    var title_rule = \"h1&&Text\";\n    var num_rule = \"#dm-fy&&a,-2&&Text\";\n    var next_url_rule = MY_URL + \"?page={page}\";\n    var charset = \"UTF-8\";\n    var user_agent = 'Windows';\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent,'content-type':'application/json; charset='+charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\",i);\n        //log({next_url:next_url});\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent ,'content-type':'application/json; charset='+charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if(list_rule==''){\n            var pic = parseDomForHtml(x, pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }else {\n            var list = parseDomForArray(x, list_rule)\n        //log({list:list})\n        for (var key in list) {\n            var pic = parseDomForHtml(list[key], pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"91porn论坛","author":"ka","version":0,"type":"news","url":"https://forum.91porn.com/forumdisplay.php?fid=fyAll&page=fypage","col_type":"text_1","class_name":"原创申请&原创自拍&妻","class_url":"19&4&21","area_name":"两性健康&性趣闲谈","area_url":"34&33","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"table&&tr:not(:contains(admin)):has(img);\nspan&&a&&Text;\nimg&&src;\ncite&&Text;\na&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d = [];\nlet title = parseDomForHtml(getResCode(), '.t_msgfontfix&&Html').replace(/src/g,\"\").replace(/file/g,\"src\");\nd.push({\n\t\t title: title,\n    col_type:'rich_text'\n});\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"24FA","author":"Timik","version":0,"type":"picture","url":"https://www.818w.cc/c49pfypage.aspx[firstPage=https://www.818w.cc/c49.aspx]","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#dlNews&&td;img&&alt;img&&src.js:input.replace(\"_gzip.aspx\",\"\");;a&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"pic_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar pics = [];\nvar html = getResCode();\nvar host = 'https://www.818w.cc/';\n// 下一页\ntry {\n    //获取列表规则,为空则为单图片\n    var list_rule = '#content&&img';\n    //获取图片规则，基于列表\n    var pic_rule = \"img&&src\".replace(\"_gzip.aspx\", \"\");\n    //详情页中的标题，用于下载文件名\n    var title_rule = \".title2&&Text\";\n    //页数规则\n    var num_rule = \".pager&&a,-2&&Text\";\n    //详情页下一页替换规则\n    var next_url_rule = MY_URL.replace(\".aspx\", \"\") + \"p{page}.aspx\";\n    //log({next_url_rule:next_url_rule});\n    //字符串编码\n    var charset = \"utf-8\";\n    var user_agent = 'Windows';\n    //获取页数\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({\n        url: MY_URL,\n        options: {\n            headers: {\n                'User-Agent': user_agent,\n                'content-type': 'application/json; charset=' + charset\n            }\n        }\n    });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\", i);\n        //log({next_url:next_url});\n        htmlArr.push({\n            url: next_url,\n            options: {\n                headers: {\n                    'User-Agent': user_agent,\n                    'content-type': 'application/json; charset=' + charset\n                }\n            }\n        });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if (list_rule == '') {\n            var pic = parseDomForHtml(x, pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        } else {\n            var list = parseDomForArray(x, list_rule)\n            //log({list:list})\n            for (var key in list) {\n                var pic = host + parseDomForHtml(list[key], pic_rule).replace(\"_gzip.aspx\", \"\")\n                //log({pic:pic});\n                pics.push(pic);\n            }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n   // log({pics: pics })\n    d.unshift({\n        title: title + \"(\" + pics.length + \"p)\",\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics');\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr); //转换为json对象\n            var pics = {};\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                //var s = picsStr;\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n} catch (error) {\n    log({\n        error: error\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.818w.cc/favicon.ico"},{"last_chapter_rule":"","title":"x6o","author":"Timik","version":0,"type":"picture","url":"https://www.x6o.com/api/articles?page=fypage&per_page=20&order=-update_time","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar res = {};\nvar json = JSON.parse(getCode());\nvar list = json.data;\nfor (let i in list) {\n    if (list[i].content_rendered.match(/htt.*?jpg/g) !== null) {\n        d.push({\n            title: list[i].title,\n            img: list[i].content_rendered.match(/htt.*?jpg/g)[0],\n            url: 'https://www.x6o.com/articles/' + list[i].article_id\n        })\n    }\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var title = parseDomForHtml(html, \"h1&&Text\");\n    putVar('title', title);\n    var list = parseDomForArray(html, '.content&&img')\n    for (var key in list) {\n        var pic = parseDomForHtml(list[key], \"img&&src\")\n        pics.push(pic);\n    }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    /*\n      d.unshift({\n            title: title + \"(\" + pics.length + \"p)\",\n            col_type: 'text_center_1',\n            extra: {\n                lineVisible: false\n            }\n        });\n    \t*/\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({\n                    p: s\n                });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n\n} catch (error) {\n    log({\n        error: error\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.x6o.com/favicon.ico"},{"last_chapter_rule":"body&&.btn-toolbar&&li,-1&&Text","title":"🪜禁漫天堂","author":"LIU&子丑寅卯&Killer&LoyDgIk","version":3,"type":"cartoon","url":"fyyear/albums/fyclass?o=fyarea&page=fypage","col_type":"movie_3","class_name":" 韩漫 & 同人 & 短篇 & 单本 & 其他 ","class_url":"hanman&doujin&short&single&another","area_name":" 最多点阅 & 最多图片 & 最爱 & 最新 ","area_url":"mv&mp&tf&mr","sort_name":"","year_name":"免翻&免翻1&免翻2&✈️","sort_url":"","year_url":"https://jmcomic2.onl&https://jmcomic.asia&https://jmcomic4.cc&https://18comic.vip","find_rule":".m-0&&.col-xs-6;span,1&&Text;img&&src;;a&&href","searchFind":".m-0&&.col-xs-6;span,1&&Text;a&&href;;;img&&data-original","search_url":"https://18comic.vip/search/photos?search_query=**&main_tag=0&o=mv&t=a&page=fypage","group":"⑤②🖼️敦伦","detail_col_type":"text_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nfunction jm() {\n    var html = request(input);\n    var list = parseDomForArray(html, \".panel-body&&img\");\n    var pics = [];\n    for (var item of list) {\n        var picUrl = pd(item, 'img&&data-original');\n        let decode = $().image((picUrl) => {\n            return $.require(\"d?rule=\" + MY_TITLE)(picUrl, input);\n        }, picUrl);\n        pics.push(picUrl + decode);\n    }\n    return \"pics://\" + pics.join(\"&&\");\n}\n\nfunction bjm() {\n    \n    var html = request(input);\n    var list = parseDomForArray(html, \".panel-body&&img\");\n    var pics = [];\n    for (var item of list) {\n        var picUrl = pd(item, 'img&&data-original');\n        pics.push(picUrl);\n    }\n    return \"pics://\" + pics.join(\"&&\");\n}\ntry {\n    var des_pic = parseDom(html, 'body&&.thumb-overlay,1&&img&&src');\n    var des_author = parseDomForHtml(html, '.nav-tab-content&&.tag-block,3&&Text');\n    var des_gengxin = parseDomForHtml(html, 'body&&.p-t-5,3&&Text');\n    var des_desc = parseDomForHtml(html, 'body&&.panel-heading&&div,1&&Text');\n    var des_title = parseDomForHtml(html, 'h1&&Text');\n    var conts = pdfa(html, 'body&&.episode&&a');\n\n    d.push({\n        title: des_author + \"\\n\" + des_gengxin,\n        desc: des_desc,\n        pic_url: des_pic,\n        url: MY_URL,\n        col_type: 'movie_1_vertical_pic'\n    });\n\n\n    var lazyJm = $(\"\").lazyRule(jm);\n    var lazyBjm = $(\"\").lazyRule(bjm);\n\n    var chapterList = [];\n    d.push({\n        title: \"下载漫画\",\n        url: 'hiker://page/download.view#noRecordHistory##noRefresh#?rule=本地资源管理',\n        col_type: 'scroll_button',\n        extra: {\n            chapterList: chapterList,\n            info: {\n                bookName: des_title, //漫画名称,\n                ruleName: MY_RULE.title,\n                bookTopPic: des_pic,\n                parseCode: $.toString(bjm),\n                decode: $.toString((title) => {\n                    return $.require(\"d?rule=\" + title)(url, input);\n                }, MY_RULE.title),\n            },\n            defaultView: \"1\"\n        }\n\n    });\n    d.push({\n        title: \"本地书架\",\n        url: 'hiker://page/Main.view#noRecordHistory##noRefresh#?rule=本地资源管理',\n        col_type: 'scroll_button',\n    });\n\n    d.push({\n        title: (getMyVar('shsort') === '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n        url: $(\"#noLoading#\").lazyRule(() => {\n            let conf = getMyVar('shsort');\n            if (conf == '1') {\n                putMyVar(\"shsort\", \"0\");\n            } else {\n                putMyVar(\"shsort\", \"1\")\n            };\n            refreshPage();\n            return 'toast://切换排序成功'\n        }),\n        col_type: 'text_center_1'\n    });\n\n\n    if (conts.length === 0) {\n        d.push({\n            url: url + lazyBjm,\n            title: \"点击直接阅读\",\n            col_type: \"text_1\",\n            extra: {\n                longClick: [{\n                        title: '不解密',\n                        js: $.toString((url, lazyBjm) => {\n                            return url + lazyBjm\n                        }, url, lazyBjm)\n                    },\n                    {\n                        title: '解密',\n                        js: $.toString((url, lazyJm) => {\n                            return url + lazyJm\n                        }, url, lazyJm)\n                    }\n                ]\n            }\n        });\n        chapterList.push({\n            title: des_title,\n            url: \"https://18comic.vip/photo/\" + MY_URL.split(\"\\/\")[4]\n        });\n    } else {\n        let list = conts.map(v => {\n            let title = pdfh(v, 'a&&Text'),\n                url = pd(v, 'a&&href');\n            chapterList.push({\n                title: title,\n                url: url\n            });\n            return {\n                title: title,\n                url: url + lazyJm,\n                col_type: \"text_1\",\n                extra: {\n                    longClick: [{\n                            title: '不解密',\n                            js: $.toString((url, lazyBjm) => {\n                                return url + lazyBjm\n                            }, url, lazyBjm)\n                        },\n                        {\n                            title: '解密',\n                            js: $.toString((url, lazyJm) => {\n                                return url + lazyJm\n                            }, url, lazyJm)\n                        }\n                    ]\n                }\n            }\n        });\n        if (getMyVar('shsort') === '1') {\n            list.reverse();\n        }\n\n        d = d.concat(list);\n    }\n} catch (e) {\n    log(e.toString());\n}\n\nsetResult(d);","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"d\",\"path\":\"d\",\"rule\":\"js:\\nconst ByteArrayOutputStream = java.io.ByteArrayOutputStream;\\nconst ByteArrayInputStream = java.io.ByteArrayInputStream;\\nconst Bitmap = android.graphics.Bitmap;\\nconst BitmapFactory = android.graphics.BitmapFactory;\\nconst Canvas = android.graphics.Canvas;\\n$.exports = function(picUrl, imgInputStream) {\\n    //let picUrl = picUrl;\\n    picUrl.match(/photos\\\\/(\\\\d+)?\\\\/(\\\\d+)?/);\\n    let bookId = RegExp.$1;\\n    let imgId = RegExp.$2;\\n    if(!bookId||!imgId||Number(bookId)<=220000) return imgInputStream;\\n    if (Number(bookId) >= 268850) {\\n        let $md5 = md5(bookId + imgId);\\n        let $ascii = $md5.substr(-1).charCodeAt(0) + \\\"\\\";\\n        let $last = Number($ascii.substr(-1));\\n        var $num = ($last + 1) * 2;\\n    } else {\\n        var $num = 10;\\n    }\\n    /*let imgInputStream = fetch(picUrl, {\\n        inputStream: true,\\n    });\\n    */\\n    //let imgInputStream = input;\\n    let imgBitmap = BitmapFactory.decodeStream(imgInputStream);\\n    closeMe(imgInputStream);\\n\\n    let width = imgBitmap.getWidth();\\n    let height = imgBitmap.getHeight();\\n    let y = Math.floor(height / $num);\\n    let remainder = height % $num;\\n\\n    let newImgBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);\\n    let canvas = new Canvas(newImgBitmap);\\n    for (let i = 1; i <= $num; i++) {\\n        let h = i === $num ? remainder : 0;\\n        canvas.drawBitmap(Bitmap.createBitmap(imgBitmap, 0, y * (i - 1), width, y + h), 0, y * ($num - i), null);\\n    }\\n    let baos = new ByteArrayOutputStream();\\n    newImgBitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);\\n    return new ByteArrayInputStream(baos.toByteArray());\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜yinmh漫画","author":"无名","version":0,"type":"picture","url":"https://www.yinmh.com/fyclass-fypage.html","col_type":"pic_2_card","class_name":"最新&最热&推荐","class_url":"new&hot&like","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list_box&&ul,2:;\na&&title;\n.lazy&&img;\nspan&&Text;\na&&href.js:$(input).lazyRule(()=>eval(JSON.parse(fetch(\"hiker://page/Picture?rule=\"+getVar('name'))).rule))","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\" 图片\",\"path\":\"Picture\",\"rule\":\"var html=fetch(input);\\nvar picshowArr = [];\\nvar list = parseDomForArray(html,\\\".image&&img\\\");\\nfor(let i =0;i<list.length;i++) picshowArr.push(parseDom(list[i],\\\"img&&img\\\"));\\n\\\"pics://\\\"+picshowArr.join(\\\"&&\\\");\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜自拍角落","author":"*","version":0,"type":"picture","url":"https://www.zipai1.xyz/?s=pic/type/fyclass/fypage.html","col_type":"movie_3","class_name":"亚洲美图&欧美美图&美腿丝袜&网友自拍&清纯诱惑&另类图片&卡通贴图&熟女","class_url":"17&18&19&20&21&22&23&24","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet html = getResCode();\nlet list = parseDomForArray(html, '.stui-vodlist&&li');\nlet d = [];\nlist.forEach(item => {\n            let url = parseDomForHtml(item, 'a&&href')\n            d.push({\n                    title: parseDomForHtml(item, 'h4&&Text'),\n                    　　pic_url: parseDomForHtml(item, 'img&&src'),\n                    desc: parseDomForHtml(item, '.pic-text&&Text'),\n                    url: $('https://www.zipai1.xyz' + url).lazyRule(() => {\n                            var html = request(input);\n                            u = pdfh(html, \"body&&script,1&&src\");\n                            return 'pics://' + request(u).match(/http.*?jpg/g).join('&&')\n                            }),\n\n                    })\n            }) ;\n            setResult(d)　　","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🪜Metart.dz","author":"道长","version":2,"type":"picture","url":"https://www.ametart.com?s=fypage;post","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.thumbs&&a');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'img&&alt'),       \r\npic_url: parseDom(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href')+`@lazyRule=.js:var pics=[];var list=parseDomForArray(request(input),'.main&&a:has(img)');for (i in list) { var img =parseDom(list[i], 'a&&href');              pics.push(img)};\"pics://\"+pics.join('&&')`\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.main&&a');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'img&&alt'),       \r\npic_url: parseDom(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href')+`@lazyRule=.js:var pics=[];var list=parseDomForArray(request(input),'.main&&a');for (i in list) { var img =parseDom(list[i], 'a&&href');              pics.push(img)};\"pics://\"+pics.join('&&')`\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.ametart.com/search/?q=**","titleColor":"#ffff00ff","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"极品性感美女","author":"*","version":0,"type":"picture","url":"https://www.xgmn01.com/fyAll/page_fypage.html[firstPage=https://www.xgmn01.com/fyAll]","col_type":"movie_2","class_name":"秀人网&美媛馆&尤物馆&爱蜜社&蜜桃社&优星馆&嗲囡囡&魅妍社&兔几盟&影私荟&星乐园&顽味生活&模范学院&花の颜&御女郎&网红馆&尤蜜荟&薄荷叶&瑞丝馆&模特联盟&花漾&星颜社&画语界","class_url":"Xiuren&MyGirl&YouWu&IMiss&MiiTao&Uxing&FeiLin&MiStar&Tukmo&WingS&LeYuan&Taste&MFStar&Huayan&DKGirl&Candy&YouMi&MintYe&Micat&Mtmeng&HuaYang&XingYan&XiaoYu","area_name":"艺图语&推女郎&尤果网&青豆客&头条女神&果团网&喵糖映画&爱尤物&波萝社&猎女神&尤蜜&Ysweb&潘多拉&Artgravia","area_url":"Yituyu&Tuigirl&Ugirls&Tgod&TouTiao&Girlt&Mtcos&Aiyouwu&BoLoli&Slady&YouMei&Ysweb&Pdl&Artgravia","sort_name":"性感尤物&国产美女&港台美女&日韩美女&欧美美女&丝袜美腿&内衣尤物&Cosplay","year_name":"丝袜美腿&美腿宝贝&蜜丝&妖精社","sort_url":"Xgyw&Guochanmeinv&Gangtaimeinv&Rihanmeinv&Oumeimeinv&Siwameitui&Neiyiyouwu&Cosplay","year_url":"Siwameitui&LEGBABY&MissLeg&YaoJingShe","find_rule":".related_img&&li;a&&alt.js:input.split(\"_\")[1];img&&src;#diggNum105&&Text;a&&href.js:'hiker://page/Picture?url=https://www.xgmn01.com'+input","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"text_center_1\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"js:\\r\\nvar d = [];\\nvar firstPage = request(MY_URL);\\n\\nvar i = parseDomForHtml(firstPage, \\\".pagination&&a,-2&&Text\\\");\\n\\nvar map = (html, arr) => {\\n    parseDomForArray(html, \\\".article-content&&img\\\").map(item => {\\n        arr.push(parseDom(item, \\\"img&&src\\\"));\\n    });\\n}\\n\\nvar htmlUrl = [];\\nfor (let p = 1; p <= i; p++) {\\n    htmlUrl.push({\\n        url: MY_URL.replace(\\\".html\\\", \\\"_\\\" + (p-1) + \\\".html\\\").replace('_0.html','.html'), \\n    });\\n}\\nvar htmlArr = batchFetch(htmlUrl);\\n\\nvar picArr = [];\\nhtmlArr.map(item =>map(item, picArr));\\n\\n\\n\\ntitle=pdfh(firstPage,'.article-meta&&Text');\\nd.push({\\n    img: picArr[0]+ '@Referer=',\\nurl: 'hiker://page/detail',\\nextra: {\\nurl: MY_URL.replace(\\\".html\\\",\\\"_fypage.html\\\") + '[firstPage=' + MY_URL +']'\\n},\\n//    url: 'hiker://page/detail?url='+MY_URL,\\n    col_type: 'pic_1_full',\\n},{\\n    title:\\\"点击开启漫画模式：\\\\n\\\"+title,\\n    url: 'pics://' + picArr.join('&&'),\\n    col_type: 'text_1'\\n});\\nsetResult(d);\\n//$.exports=\\\"pics://\\\" + picArr.join(\\\"&&\\\");\"},{\"col_type\":\"pic_3\",\"name\":\"detail\",\"path\":\"detail\",\"rule\":\".article-content&&img;\\n;\\nimg&&src;\\n;\\nimg&&src\"}]","proxy":"","icon":"https://www.jpxgyw.net/img/logo.gif"},{"last_chapter_rule":"","title":"小姐姐图库","author":"无心","version":0,"type":"picture","url":"https://xjjtk.link/fyAllpage/fypage/[firstPage=https://xjjtk.link/fyAll]","col_type":"movie_3","class_name":"首页&无圣光&凸凹图&人体艺术&精品套图&欧美女郎","class_url":"&categories/无圣光/&categories/凸凹图/&categories/人体艺术/&categories/精品套图/&categories/欧美女郎/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.grid-cols-1&&.p-2')\nvar lazy = $('').lazyRule(() => {\n        return 'pics://' + pdfa(request(input), 'body&&img').map(img => pd(img, 'img&&src')).join('&&')\n});\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, 'a,1&&Text'),\n        desc: pdfh(item, 'time&&Text'),\n        pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href')+lazy,\n            })\n});\nsetResult(d)","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://xjjtk.link/logo.png"},{"last_chapter_rule":"","title":"nsfwx","author":"Timik","version":1,"type":"picture","url":"https://nsfwx.link/page/fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&article;h2&&Text;a&&style.js:input.match(/htt.*?jpg/g)[0];.entry-date&&Text;a&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"pic_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar pics = [];\nvar html = getResCode();\ntry {\n    var list_rule = '.entry-content&&img';\n    var pic_rule = \"img&&src\";\n    var title_rule = \".entry-title&&Text\";\n    var charset = \"utf-8\";\n    var user_agent = 'Windows';\n    let htmlArr = [];\n    var title = parseDomForHtml(html, title_rule);\n    //log({title:title});\n    putVar('title', title);\n     var pic = parseDomForHtml(html, pic_rule)\n     var list = parseDomForArray(html, list_rule)\n      //log({list:list})\n      for (var key in list) {\n                var pic = parseDomForHtml(list[key], pic_rule)\n                //log({pic:pic});\n                pics.push(pic);\n            }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n        title: title + \"(\" + pics.length + \"p)\",\n        col_type: 'icon_1_search',\n        url:'toast://别跑，就是你' ,\n        extra: {\n            lineVisible: false\n        }\n    });\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics');\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr); //转换为json对象\n            var pics = {};\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                //var s = picsStr;\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n} catch (error) {\n    log({\n        error: error\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"icon_1_search","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"图集岛","author":"","version":0,"type":"picture","url":"https://www.tujidao04.com/fyAll&page=fypage[firstPage=https://www.tujidao04.com/fyAll];get;UTF-8;{User-Agent@Windows&&Cookie@.js:getVar(\"myCookie\")}","col_type":"movie_3","class_name":"最新&国内&日本&中国台湾&欧美&韩国&泰国","class_url":"u/?action=gengxin&cat/?id=10&cat/?id=8&cat/?id=11&cat/?id=20&cat/?id=19&cat/?id=23","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.hezi&&li');\nfor (var j in list) {\n    var num = parseDomForHtml(list[j], '.shuliang&&Text').replace('P', '');\n    var aid = parseDomForHtml(list[j], '.biaoti&&a&&href').split(\"id=\")[1];\n    d.push({\n        title: parseDomForHtml(list[j], '.biaoti&&Text').split(']')[1],\n        desc: parseDomForHtml(list[j], '.biaoti&&Text').split(']')[0].replace('[', ''),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=' + MY_HOME,\n        url: parseDom(list[j], '.biaoti&&a&&href') + $('').lazyRule((num, aid) => {\n            var picArr = [];\n            for (i = 1; i <= num; i++) {\n                picArr[i] = \"https:///tjg.gzhuibei.com/a/1/\" + aid + '/' + i + '.jpg'\n            }\n            return \"pics://\" + picArr.join(\"&&\")\n        }, num, aid)\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if (!getVar('myCookie')) {\n    putVar(\"myCookie\", \"PHPSESSID=um0gubtvlbijpv881avri0iul8; __vtins__Je64MI06Q1Neac4F=%7B%22sid%22%3A%20%2255AC22AF-128D-4134-899B-FEA871C3B02B%22%2C%20%22vd%22%3A%202%2C%20%22stt%22%3A%207631%2C%20%22dr%22%3A%207631%2C%20%22expires%22%3A%201675999195176%2C%20%22ct%22%3A%201675997395176%7D; __51uvsct__Je64MI06Q1Neac4F=1; __51vcke__Je64MI06Q1Neac4F=4AEE9AFF-CDC8-4BCC-81D7-BB047CE31438; __51vuft__Je64MI06Q1Neac4F=1675997387548; uid=10784; name=hikis; leixing=0\")\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"优丝库","author":"Timik","version":0,"type":"video","url":"https://yskhd.com/archives/category/fyAll/page/fypage[firstPage=https://yskhd.com/archives/category/fyAll/]","col_type":"movie_3","class_name":"秀人&丝模&日韩","class_url":"xiuren&smzq&日韩精品写真","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#posts&&.post;h3&&Text.js:input.split(']')[1];img&&data-src;h3&&Text.js:input.split(']')[0].replace('[','');h3&&a&&href","searchFind":"","search_url":"","group":"⑤②🖼️敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    var list_rule = '#gallery-2&&img';\n    var pic_rule = \"img&&src\";\n    var title_rule = \"h1&&Text\";\n    var charset = \"utf-8\";\n    var user_agent = 'Windows';\n    var host = 'https://yskhd.com/'\n    var title = parseDomForHtml(html, title_rule);\n    putVar('title', title);\n     var list = parseDomForArray(html, '#gallery-2&&img')\n        for (var key in list) {\n            var pic = host + parseDomForHtml(list[key], pic_rule).replace('-285x285','-scaled')\n                pics.push(pic);\n            }\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n        title: title + \"(\" + pics.length + \"p)\",\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr); //转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({\n                    p: s\n                });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1',\n        extra: {\n            lineVisible: false\n        }\n    });\n\n} catch (error) {\n    log({\n        error: error\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://yskhd.com/wp-content/uploads/2022/09/02811b92ba2992b91774f48cfd3fa9a4.png"},{"last_chapter_rule":"","title":"集书阁","author":"无心","version":0,"type":"read","url":"https://xn--4ft-jsgdizhicom-s120ak61dvo0g.xn--jishugevip-l81x.com/list_fyclass_fypage.html","col_type":"text_1","class_name":"全部&现代情色&日本情色&西洋情色&伴侣交换&武侠情色&奇幻科幻&家庭乱伦&性爱调教&粗野性交&多人群交&教师学生&古典情色&历史情色&同性情色&都市生活&乡间记趣&疯狂暴露&午夜怪谈&游戏乐园&医生护士&奇遇物语&左邻右舍&同事之间&旅游纪事&纯洁恋情&意外收获&忘年之乐&另类其他&知识技巧&情欲性爱&经典激情&近亲乱伦&人妻美妇&学生校园&职业制服&粗暴性爱&情色武侠","class_url":"1&15&16&17&18&19&20&21&22&23&24&25&26&27&28&29&30&31&32&33&34&35&36&37&38&39&41&42&43&44&45&46&47&48&49&50&51&52","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.ucontent&&li')\nlist. forEach(item => {\n    d.push({\n        title: pdfh(item, '.title&&Text'),\n        desc: pdfh(item, '.description&&Text'),\n       // pic_url: pdfh(item, 'img&&src'),\n        url: pd(item, 'a&&href')+\"#readTheme#\",\n            })\n});\nsetResult(d)","searchFind":"","search_url":"","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nd.push({\n\t\t title: parseDomForHtml(fetchCodeByWebView(MY_URL), '#bookcontent&&Html'),\n    col_type:'rich_text',\n　　extra: {\n        textSize: 16,\n        click: true\n    }\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"18+小说2","author":"","version":0,"type":"news","url":"https://233335.xyz/e/action/ListInfo/index.php?page=fypage&classid=1","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".bloglist&&ul&&li;\na&&Text;\n;\nli&&Text;\na&&href.js:input+\"#readTheme#\"","searchFind":"","search_url":"","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d = [];\nd.push({\n\t\t title: parseDomForHtml(getResCode(), '.entry&&Html'),\n    col_type:'rich_text',\n　　extra: {\n        textSize: 16,\n        click: true\n    }\n});\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"uk6","author":"","version":0,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://m.u6k6.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"txtxi小说","author":"无心","version":0,"type":"read","url":"https://www.txtxi.com/tags/fyclass-fypage.html","col_type":"text_1","class_name":"学生校园&都市生活&家庭乱l&强b虐d&变身系列&武侠科幻&经验故事&人q熟女&名人明星&动漫改编&另类其它","class_url":"100000&100001&100002&100003&100004&100005&100006&100007&100008&100009&100010","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list_box&&ul,2:;\n.title&&Text;\n;\n.intro&&Text;\na&&href.js:'hiker://page/txt?url='+\"https://www.txtxi.com\"+input","searchFind":"","search_url":"","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"文本\",\"path\":\"txt\",\"rule\":\"js:\\nvar res ={};\\nvar d = [];\\nvar html=request(MY_URL);\\nd.push({\\ntitle: \\\"““””<b>\\\"+'<span style=\\\"color: #CE0000\\\">    推荐同类   </span></b>',\\n\\tcol_type: 'text_1'\\n});\\nvar lazy = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/txt', {})).rule);\\n});\\nvar  list  =parseDomForArray(html,'body&&.list_box&&ul');\\nfor (var j in list) {\\n    d.push({       \\n              title:  parseDomForHtml(list[j],  'a&&title'),\\n              // desc: parseDomForHtml(list[j],  '.intro&&Text'),\\n             //  pic_url: parseDom(list[j],  'img&&data-src'),\\n               url: parseDom(list[j], 'a&&href')+lazy,\\n              col_type:\\\"text_2\\\"\\n    });\\n}\\n\\nd.push({\\n\\t\\t title: parseDomForHtml(html, '.left&&h1&&Text'),\\n    col_type:'text_center_1'\\n});\\n\\nd.push({\\n\\t\\t title: parseDomForHtml(html, '.left&&.text&&Html'),\\n    col_type:'rich_text',\\n//点击屏幕自动下滑\\n        extra: {\\n            textSize: 16,\\n            click: true\\n        }\\n\\n});\\nres.data=d;\\nsetHomeResult(res);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"福利吧","author":"","version":1,"type":"other","url":"hiker://empty#fyAll#fypage#https://fuliba2023.net","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//以下是 列表解析规则（JS）\nvar res = {};\nvar item = [];\n\n// var type=MY_URL.split('#')[1];\nvar page=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\nif(getMyVar('fuliba.titleColor')==\"\") putMyVar('fuliba.titleColor',\"#FA7298\");\nif(getMyVar('fuliba.descColor')==\"\") putMyVar('fuliba.descColor',\"#708090\");\n\nif(getMyVar('fuliba.categoryNum')==\"\") putMyVar('fuliba.categoryNum','0');\nif(getMyVar('fuliba.url')==\"\") putMyVar('fuliba.url',mUrl);\n\n//自定义颜色\nconst titleColor=getMyVar('fuliba.titleColor');\nconst descColor = getMyVar('fuliba.descColor');\n\nconst categoryNum = getMyVar('fuliba.categoryNum');\nconst clickUrl = getMyVar('fuliba.url');\n\n\neval(JSON.parse(request(\"hiker://page/uses\")).rule);\nif(page === '1'){\n\n    var tColor = getRangeColors();\n    var dColor = getRangeColors();\n    var mHtml = request(mUrl,{});\n\n    var categoryOne = parseDomForArray(mHtml, '#menu-item-2299&&a');\n    var categoryTwo = parseDomForArray(mHtml, '.items&&a');\n\n    var categories = [];\n    categories.push(getAddressTag(mUrl,'福利吧'));\n    categories.push.apply(categories,categoryOne);\n    categories.push.apply(categories,categoryTwo);\n    const categoriesArray = categories;\n\n    categoriesArray.forEach((category, index) => {\n        let title = parseDomForHtml(category,'a&&Text');\n        let titleNum = title.split(\" \")[1];\n        let url = parseDomForHtml(category,'a&&href');\n        if(index == 1) title = title.replace(\"福利吧\",\"最新福利\");\n        if(index > 9){\n            title = title.split(\" \")[0];\n        }else{\n            titleNum = \"(∞)\";\n        }\n        if(url.indexOf(\"/\") == 0) url = mUrl + url;\n        item.push({\n\n            title: index.toString()===getMyVar('fuliba.categoryNum')?'““””<b><font color='+titleColor+'>'+title+'</font></b>'+'““””<small><small><small><font color='+\"#FA7298\"+'>'+titleNum+' </font></small></small></small>':title,\n            url: $(url).lazyRule((params) => {\n\n                putMyVar(\"fuliba.categoryNum\", params.index.toString());\n                putMyVar('fuliba.url',params.url);\n                putMyVar('fuliba.titleColor',params.tColor);\n                putMyVar('fuliba.descColor',params.dColor);\n                refreshPage(true);\n                return \"hiker://empty\";\n            }, {index: index,url: url,tColor: tColor,dColor: dColor,}),\n            col_type: 'scroll_button',\n        });\n        if(index == 4 || index == 9 || index == 21) item.push({col_type:\"blank_block\"});\n    })\n    item.push({col_type:\"blank_block\"});\n}\n\n\nvar ul = clickUrl+\"/page/\"+page;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item.push.apply(item,getItem(html,descColor));\n}\n\nres.data = item;\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar page=MY_URL.split('#')[1];\nvar searchn=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\nvar ul = mUrl+\"/page/\"+ page+\"/?s=\"+searchn;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nvar res = {};\nvar item=[];\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item=getSearchItem(html);\n}\n\nres.data = item;\nsetHomeResult(res);","search_url":"hiker://empty#fypage#**#https://fuliba2022.net","group":"⑤③📖敦伦","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res={};\nvar d=[];\n\n//观看文章模式 默认模式图文并茂/0 看图模式/1 省流模式/2 阅读模式/3\nif(getMyVar('fuliba.showMode')=='') putMyVar('fuliba.showMode','0');\n\n\n//图片显示模式 网页内嵌图片/0 默认海阔显示图片/1\nif(getMyVar('fuliba.viewPicMode')=='') putMyVar('fuliba.viewPicMode','1');\nif(getMyVar('fuliba.openComment')=='') putMyVar('fuliba.openComment','0');\n\nif(getMyVar('fuliba.viewPicMode')=='0' && getMyVar('fuliba.hideImg')=='') putMyVar('fuliba.hideImg','1');\n\nif(getMyVar('fuliba.viewPicMode')=='1' && getMyVar('fuliba.bigImg')=='') putMyVar('fuliba.bigImg','pic_1_full');\n\n\nlet imageTextArray = ['🌃图文并茂','👁看图模式','📱省流模式','📚阅读模式'];\nputMyVar('fuliba.imageTextMode',imageTextArray[parseInt(getMyVar('fuliba.showMode'))]);\n\nlet viewPicArray = [{0:\"显示图片🌌\",1:\"隐藏图片🔗\"},{ pic_1_full:\"默认大图🌈\", pic_3:\"精美小图✨\"}];\nif(getMyVar('fuliba.viewPicMode')=='1') putMyVar('fuliba.imgMode',viewPicArray[1][getMyVar('fuliba.bigImg')]);\nif(getMyVar('fuliba.viewPicMode')=='0') putMyVar('fuliba.imgMode',viewPicArray[0][parseInt(getMyVar('fuliba.hideImg'))]);\n\nvar picType = '';\nif(getMyVar('fuliba.viewPicMode')=='1') picType = `@lazyRule=.js:putMyVar('fuliba.bigImg',getMyVar('fuliba.bigImg')!=='pic_3'?'pic_3':'pic_1_full');refreshPage();'toast://已切换图片类型';\">`;\nif(getMyVar('fuliba.viewPicMode')=='0') picType = `@lazyRule=.js:putMyVar('fuliba.hideImg',getMyVar('fuliba.hideImg')!=='0'?'0':'1');refreshPage();'toast://已切换图片类型';\">`;\n\nvar commentArray = ['已关闭评论','已开启评论'];\nputMyVar('fuliba.openCommentString',commentArray[parseInt(getMyVar('fuliba.openComment'))])\nvar commentType = `@lazyRule=.js:putMyVar('fuliba.openComment',getMyVar('fuliba.openComment')!=='0'?'0':'1');refreshPage();'toast://'+getMyVar('fuliba.openCommentString');\">`;\n\n// if(getMyVar('fuliba.showMode')=='0') putMyVar('fuliba.imageTextMode','🌃图文并茂');\n// if(getMyVar('fuliba.showMode')=='1') putMyVar('fuliba.imageTextMode','👁看图模式');\n// if(getMyVar('fuliba.showMode')=='2') putMyVar('fuliba.imageTextMode','🌐省流模式');\n// if(getMyVar('fuliba.showMode')=='3') putMyVar('fuliba.imageTextMode','📚阅读模式');\n\n\n\nvar goodColor = '#4000FF';\nvar size = 16;\nvar html=getResCode();\n\neval(JSON.parse(request(\"hiker://page/css\")).rule);\neval(JSON.parse(request(\"hiker://page/view\")).rule);\n\n\nfunction getBaiduYunCode(content){\n    if(content.includes('pan.baidu.com')){\n        let code = content.split('提取码：');\n        if(code.length>1) copy(code[1].substring(0,4));\n    }\n}\n\nvar maxPage = 1;\ntry {\n    maxPage =  parseInt (parseDomForArray(html,'.article-paging&&a').length+1);\n} catch (e) { }\n\n\nlet headerTitle = getBigText(getStrongText(parseDomForHtml(html, '.article-title&&Text'))) + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文👀]'));\n\nlet goodCount = '👍🏻点'+parseDomForHtml(html, '.action.action-like&&Text');\ngoodCount = '<font color=\"' + goodColor + '\">' + goodCount \n+ `<small><small><sup><a href=\"hiker://empty` + commentType + getMyVar('fuliba.openCommentString').substring(1,2) + \"</a></sup></small></small></font>\";\n\nlet brower = `<big><a href=\"hiker://empty@lazyRule=.js:putMyVar('fuliba.browserLink',getMyVar('fuliba.browserLink')!==''?'':'web://');refreshPage();'toast://已切换浏览模式';\">`+(getMyVar('fuliba.browserLink')!==''?\"🌐\":\"🌆\")+\"</a></big>\";\n\n//var subTime = getCodeText(parseDomForHtml(html,'.article-meta--a&&li,0&&Text').replace('发布于','日期:'));\n\nlet subType = [];\ntry{\n    subType = parseDomForArray(html,'.article-tags&&a');\n}catch(e){}\nif(subType.length==0) subType = parseDomForArray(html,'.article-meta&&span,1&&a');\n\n\nlet type=getCodeText('🏷️标签: ');\nfor(let i=0;i<subType.length;i++){\n    type += getCodeText(parseDomForHtml(subType[i],'a&&Text'));\n}\n\nlet comment=[];\ntry{\n    comment = parseDomForArray(html,'#postcomments&&.depth-1');\n}catch(e){}\n\n//if(headerTitle.includes('女神') || headerTitle.includes('写真') || headerTitle.includes('套图') ||type.includes('宅男女神') || type.includes('写真套图')) putMyVar('img','pic_3');\n\nd.push({title: headerTitle+'&nbsp;' +goodCount+'&nbsp;'+brower+'<br>'+type,});\nd.push({col_type:'line'});\n\n// var tips = getColorText('温馨提示:图片清晰度较高，加载速度取决于网速！！！','#F47920');\n//if(getMyVar('img')=='pic_3') d.push({title: tips,});\n\n\nd.push({col_type:\"rich_text\",title:\n    `<small>当前<a href=\"hiker://empty@lazyRule=.js:putMyVar('fuliba.viewPicMode',getMyVar('fuliba.viewPicMode')!=='0'?'0':'1');refreshPage();'toast://已切换图片显示模式';\">`+(getMyVar('fuliba.viewPicMode')!=='0'?\"海阔模式\":\"网页模式\")+\"</a>👈</small>\"\n    +`<small>为：<a href=\"hiker://empty`+picType+getMyVar('fuliba.imgMode')+\"</a></small>\"\n    +'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\n    +`<small>模式：<a href=\"hiker://empty@lazyRule=.js:if(getMyVar('fuliba.showMode')=='3'){putMyVar('fuliba.showMode','0')}else{putMyVar('fuliba.showMode',(parseInt(getMyVar('fuliba.showMode'))+1).toString());};refreshPage();'toast://已切换文章模式';\">`+getMyVar('fuliba.imageTextMode')+\"</a></small>\"\n});\n\nvar content = '';\nfor (let i = 1; i <= maxPage; i++) {\n    if(i > 1) html = fetch(MY_URL.replace('.html', '.html/' + (i)),{});\n\n    let contentZero = parseDomForHtml(html, '.article-content&&Html');\n    if(maxPage > 1){    \n        contentZero = contentZero.split('<span class=\"wp_keywordlink\"><a href')[0];\n    }\n\n    if(i>1){\n        try{\n            let not_copy = parseDomForHtml(contentZero, '.article-update-tips&&Html');\n            contentZero = contentZero.replace(not_copy, '');\n        }catch(e){}\n    }\n    content += contentZero;\n}\n\n// getBaiduYunCode(content);\n\n\ncontent = content\n    .replace(/油管\\/watch/g,'https://www.youtube.com/watch')\n    .replace(/<br>/g, '')\n    .replace(/\\n<p>&nbsp;<\\/p>/g,'')\n    .replace(/\\n<p><\\/p>/g,'')\n    .replace(/<pre>([\\s\\S]*?)<\\/pre>/g,'')\n    .replace(/<p>/g,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')\n    .replace(/<\\/p>/g,'<br>')\n    .replace(/amp;/g,'')\n    .replaceWithCallback(/<a(.*?) href=\"(.*?)aliyundrive(.*?)\"(.*?)<\\/a>/g, '<a data-v>', aTagReplacement2);\n    //非常耗时和内存\n    // .replaceWithCallback(/<img([\\s\\S]*?)>/g, '', deleteInvalidImgTag);\n\nif(getMyVar('fuliba.showMode')=='2' || getMyVar('fuliba.showMode')=='3') content = content.replace(/<img([\\s\\S]*?)>/g,'')\n  .replace(/\\n<p><strong><\\/strong><\\/p>/g,'');\n\nif(getMyVar('fuliba.viewPicMode')=='1'){\n    let contentlist = content.split('\\n');\n    let htmlList = '';\n    for(let j=0;j<contentlist.length;j++){\n        let imglist = imgTagGetUrlArray(contentlist[j],/<img([\\s\\S]*?)>/g);\n        let quoteContent = contentlist[j];\n        //文章内容-简单文本\n        quoteContent = quoteContent\n            .replace(/<img([\\s\\S]*?)>/g,'')\n            // .replace(/<(iframe|sources|video)([\\s\\S]*?)<\\/(iframe|sources|video)>/g,'')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n            // .replace(/<p><\\/p>/g,'');\n\n\n\n        let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n        if(getMyVar('fuliba.showMode')=='3'){\n            if(!temp.match(/^\\s*$/)) htmlList += '◇&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '<br>';\n            if(j==contentlist.length-1 && htmlList !== ''){\n                d.push({title: htmlList,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n                htmlList = '';\n            }\n        }else{\n            if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n            if(imglist.length > 0 || j==contentlist.length-1){\n                let temp = parseDomForHtml(getNewText(htmlList,'div'), 'Text');\n                if(!temp.match(/^\\s*$/) && getMyVar('fuliba.showMode')!=='1') d.push({title: htmlList,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                htmlList = '';\n                for (let k = 0; k < imglist.length; k++){\n                    d.push({\n                        pic_url:imglist[k],\n                        url:getMyVar('fuliba.browserLink')+imglist[k],\n                        col_type:getMyVar('fuliba.bigImg'),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }\n                    });\n                }\n            }\n        }\n    }   \n\n    //复杂文本-由Html格式-替换掉图片---视频链接也替换掉用查看视频替代---网站地址不用替换，直接用\n    // quoteContent = getNewText(quoteContent,'div');\n    // let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n    // if(!quoteContent.includes('=\"http')) quoteContent = temp;\n    // if(!temp.match(/^\\s*$/)) d.push({title: quoteContent});\n\n    //漫画模式\n    // var pics=[];\n    //for (let k = 0; k < imglist.length; k++){\n    //     pics.push(imglist[k]);\n    // }\n    // \"pics://\"+pics.join(\"&&\");\n\n    // if(imglist.length==0) continue;\n    // for (let k = 0; k < imglist.length; k++){\n    //     d.push({\n    //         pic_url:imglist[k],\n    //         url:imglist[k],\n    //         col_type:getMyVar('fuliba.bigImg')\n    //     });\n    // }\n}else{\n    // if(getMyVar('fuliba.showMode')=='1') content = GetImgTagArray(content,/<img([\\s\\S]*?)>/g);\n    if(getMyVar('fuliba.showMode')=='1'){\n        let matchArray = content.match(/<img([\\s\\S]*?)>/g);\n        let imglist = '';\n        if (matchArray != null) {\n            for (let i = 0; i < matchArray.length; i++) {\n                let pic = matchArray[i] .replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n                                        .replace(/<showimg/g, '<img');\n                                       \n                if(getMyVar('fuliba.hideImg') == '0') d.push({title: pic,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                imglist += pic;\n            }\n        }\n        if(getMyVar('fuliba.hideImg') == '1') d.push({title: imglist,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    }else{\n        content = content.replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n            .replace(/<showimg/g, '<img')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n\n        let contentlist = content.split('\\n');\n        let htmlList = '';\n        for(let j=0;j<contentlist.length;j++){\n            let quoteContent = contentlist[j];\n\n            let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n            if(getMyVar('fuliba.showMode')=='3'){\n                if(!temp.match(/^\\s*$/)) htmlList += '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '</p>';\n                if(j==contentlist.length-1 && htmlList !== ''){\n                    d.push({title: htmlList,\n                        extra: {\n                        textSize: size,\n                        click: true\n                    }});\n                    htmlList = '';\n                }\n            }else{\n                if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null || j==contentlist.length-1){\n                    if(getMyVar('fuliba.showMode')!=='1' && htmlList !== '') d.push({title: htmlList,\n                        extra: {\n                        textSize: size,\n                        click: true\n                    }});\n                    htmlList = '';\n                }\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null) d.push({title: quoteContent,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n            }\n        }\n    }\n}\n\n\nd.push({col_type: 'line_blank'});\nlet tips = '该文章来源于福利吧，如您喜欢，请进入福利吧网页版';\nlet warning = '此规则仅限学习使用，如有不妥，请本吧主联系我删除';\n\n// if(getMyVar('fuliba.showMode')=='0' || getMyVar('fuliba.showMode')=='2'){\nif(getMyVar('fuliba.openComment')=='0'){\n    eval(JSON.parse(request(\"hiker://page/comment\")).rule);\n\n    d.push({title: GetTips(tips,warning),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    d.push({col_type: 'line_blank'});\n\n    if(comment.length > 0){\n        let commentNum = parseDomForHtml(html,'.article-meta&&span,2&&Text').replace('评论','📢热评数');\n        commentNum = GetHome(3)+getStrongText(getBigText(commentNum));\n        for (let l = 0; l < comment.length; l++){\n            let list = parseDomForArray(comment[l],'.comment');\n            d.push({col_type: 'line'});\n\n            for (let m = 0; m < list.length; m++) {\n                let floor = ''; let main = '';  let autor = ''; let time = '';\n                try{\n                    if(m==0) floor = '🏢' + parseDomForHtml(list[m],'.comt-f&&Text').replace('#','')+'楼';\n                }catch(e){\n                    floor = l+'楼层错误!!!'+m\n                }\n                try{\n                    main =  parseDomForHtml(list[m],'.comt-main&&p&&Text');\n                }catch(e){\n                    main = l+'回复内容错误!!!'+m\n                }\n                try{\n                    autor = '👱' + parseDomForHtml(list[m],'.comt-author&&Text');\n                }catch(e){\n                    autor = l+'作者名称错误!!!'+m\n                }\n                try{\n                    time = '🕢' + parseDomForHtml(list[m],'.comt-meta--span&&Text').replace('回复','');\n                }catch(e){\n                    time = l+'时间错误!!!'+m\n                }\n\n                let commentText = GetComment(main,autor,time,floor);\n                if(l==0 && m==0) commentText = commentNum +'<br><br>'+ commentText;\n\n                commentText=commentText\n                            .replaceWithCallback(/(http:\\/\\/|ftp:\\/\\/|https:\\/\\/|)[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&amp;:/~\\+#]*[\\w\\-\\@?^=%&amp;/~\\+#])?/g, '<n data-v>', nullTagReplacement2)\n                            .replaceWithCallback(/<a(.*?) href=\"(.*?)aliyundrive(.*?)\"(.*?)<\\/a>/g, '<a data-v>', aTagReplacement2);\n                d.push({title: commentText,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n            }\n        }\n    }\n}\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"CSS格式\",\"path\":\"css\",\"rule\":\"function getNewText(text,css){\\n   return '<'+css+'>' + text + '</'+css+'>';\\n}\\n\\nfunction getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"视图处理\",\"path\":\"view\",\"rule\":\"//获取重定向地址\\nfunction getRedirectAddress(url){\\n    let urlRedirect = '';\\n    try{\\n        let urlCode = fetch(url,{redirect:false,withHeaders:true});\\n        urlRedirect = JSON.parse(urlCode).headers.location[0];\\n    }catch(e){}\\n    return urlRedirect;\\n}\\n\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\n//删除重定向图片链接\\nfunction deleteInvalidImgTag(context, searchValue,replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl != '') {\\n                if(getRedirectAddress(imgUrl) != ''){\\n                    returnValue = returnValue.replace(item,replaceValue);\\n                }\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction GetImgTagArrayString(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = '';\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            returnValue += matchArray[i];\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction imgTagGetUrlArray(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = [];\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue.push(imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\n\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagOne(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '\\\\n<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a>&nbsp;&nbsp;&nbsp;<a href=\\\"web://' + imgUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction imgTagReplacementOne(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTagOne(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet videoError = '<p><font color=\\\"grey\\\">视频暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction videoTag(context, videoUrl) {\\n    let replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + (videoUrl) + '\\\">[点击查看视频]</a></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + videoUrl + '\\\">[点击查看视频]</a></p>';\\n    }\\n    return context.replace(/<video data-v>/g, replaceString);\\n}\\nfunction videoTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(source|video).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let videoUrl = RegExp.$3;\\n            if(videoUrl.indexOf(\\\"//\\\")==0){videoUrl = \\\"https:\\\" + videoUrl;}\\n            if(videoUrl.includes(\\\"zhainanmi\\\")) continue;\\n            if (videoUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = videoTag(returnValue, videoUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet linkError = '<p><font color=\\\"grey\\\">链接暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction linkTag(context, linkUrl) {\\n    let replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + (linkUrl) + '\\\">[点击查看链接]</a></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + linkUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<link data-v>/g, replaceString);\\n}\\nfunction linkTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(iframe).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let linkUrl = RegExp.$3;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = linkTag(returnValue, linkUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction nullTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    // setError(matchArray)\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            let linkUrl = matchArray[i];\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                replaceValue = '<a href=\\\"'+linkUrl+'\\\">'+linkUrl+'</a>'\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction aTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<a(.*?) href=\\\"(.*?)\\\"(.*?)<\\\\/a>/.test(item);\\n            let linkUrl = RegExp.$2;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                replaceValue = '<a href=\\\"hiker://page/detail?rule=云盘汇影&url='+linkUrl+'??fypage\\\">'+linkUrl+'</a>'\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction cssTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(div|p|strong)>.*?<\\\\/(div|p|strong)>/.test(item);\\n            let css = RegExp.$2;\\n            if (css.match(/^\\\\s*$/)) {\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"评论方法\",\"path\":\"comment\",\"rule\":\"\\nfunction GetHome(num){\\n    let retract = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    for(let i=1;i<num;i++) retract += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    return '<span>'+retract+'</span>';\\n}\\n\\nfunction GetComment(main,autor,time,floor){\\n\\n    let fontStyle = '<font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;&nbsp;'+time+' &nbsp;</span></font>';\\n    let buttonData = getColorText(autor,'#2979FF')+fontStyle+getColorText(floor,'#2979aa');\\n    let comment = '';\\n\\n    if(floor==''){\\n        comment =GetHome(1)+main+getNewText('<br>'+GetHome(1)+buttonData,'small');\\n    }else{\\n        comment = main+getNewText('<br>'+ buttonData,'small');\\n    }\\n    return comment;\\n}\\n\\nfunction GetTips(tips,warning){\\n    let tipsStyle = '<small><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+tips+' &nbsp;</span></small>';\\n    let warningStyle = '<small><font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+warning+' &nbsp;</span></font></small>';\\n    return tipsStyle+'<br>'+warningStyle;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析搜索\",\"path\":\"one\",\"rule\":\"function getItem(html,colors){\\n    var list = parseDomForArray(html, 'body&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], 'img&&data-src');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.pc&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        let time = \\\"🕧日期: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.meta&&time&&Text') +' </font></b>';\\n        let like = \\\"💜点赞: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.post-like&&span&&Text') +' </font></b>';\\n        let comment =  \\\"  💬评论: \\\" + '““””<b><font color='+ colors + '>' + commentNum +' </font></b>';\\n\\n        let tabs=\\\"\\\\n\\\\n\\\";\\n\\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: time+tabs+like+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\\n\\nfunction getSearchItem(html){\\n    var list = parseDomForArray(html, 'body&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], 'img&&data-src');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.pc&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        // let time = \\\"🕧:\\\"  + parseDomForHtml(list[i], '.meta&&time&&Text');\\n        let like = \\\"💜: \\\" + parseDomForHtml(list[i], '.post-like&&span&&Text');\\n        let comment =  \\\"💬: \\\" + commentNum;\\n\\n        let tabs=\\\"   \\\";\\n        \\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: like+tabs+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"方法云集\",\"path\":\"uses\",\"rule\":\"function getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\n\\nfunction getRangeColors(){\\n    //颜色 代码来自Rx大佬\\n    let Colors=[\\\"4\\\",\\\"5\\\",\\\"0\\\",\\\"1\\\",\\\"A\\\",\\\"3\\\",\\\"8\\\",\\\"9\\\",\\\"B\\\",\\\"C\\\",\\\"D\\\",\\\"E\\\",\\\"6\\\",\\\"7\\\",\\\"F\\\"];\\n    let Color = \\\"#\\\";\\n    for (let i=0;i<6;i++){\\n        let num=Math.ceil((Math.random()*15))-1;\\n        Color+=Colors[num];\\n    }\\n    return Color;\\n}\\n\\nfunction getBaiduYunCode(content){\\n    if(content.includes(\\\"pan.baidu.com\\\")){\\n        var code = content.split(\\\"提取码：\\\");\\n        if(code.length>1) copy(code[1].substring(0,4));\\n    }\\n}\"}]","proxy":"","icon":"https://p.ssl.qhimg.com/t01127b7dec1f100074.jpg"},{"firstHeader":"class","last_chapter_rule":"","title":"老司机软件","author":"道长","version":1,"type":"tool","url":"hiker://empty##http://www.lsj2.fun/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=老司机软件"},{"firstHeader":"class","last_chapter_rule":"","title":"🪜葬花阁综合论坛","author":"道长","version":1,"type":"video","url":"hiker://empty##http://zanghuage.cc/forum.php?mod=guide&view=hot&mobile=2","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=葬花阁综合论坛"},{"last_chapter_rule":"","title":"步非烟","author":"Timik","version":0,"type":"music","url":"https://mp3-banana.pro/tracks/%E6%AD%A5%E9%9D%9E%E7%83%9F/fypage","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar h = getCode()\nvar d = []\nvar list = pdfa(h,'body&&.track')\nlog(list)\nfor(let i in list){\n  d.push({\n\ttitle: pdfh(list[i],'.title&&Text'),\n\turl: 'https://' + pdfh(list[i],'.link&&href')\n  })\n}\nsetResult(d)","searchFind":"","search_url":"","group":"⑤③📖敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://mp3-banana.pro/favicon.ico"},{"last_chapter_rule":"","title":"BT之家","author":"子丑寅卯","version":6,"url":"https://88btbtt.com/forum-index-fid-fyclass-typeid1-0-typeid2-fyyear-typeid3-fyarea-typeid4-fysort-page-fypage.htm[firstPage=https://88btbtt.com/forum-index-fid-fyclass-typeid1-0-typeid2-fyyear-typeid3-fyarea-typeid4-fysort.htm]","col_type":"text_1","class_name":"高清电影&剧集&电影&音乐&动漫&综艺","class_url":"1183&950&951&953&981&1106","area_name":"大陆&香港&台湾&日本&韩国&欧美&泰国&新马&印度&多国&其他","area_url":"1681&3362&5043&6724&8405&10086&11767&13448&15129&16810&18491","sort_name":"全部&剧情&动作&爱情&恐怖&科幻&喜剧&惊悚&奇幻&悬疑&犯罪&战争&历史&灾难&动画&纪录&微电影&合集&系列&其他","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&更早&合集","sort_url":"0&136161&480766&205082&274003&342924&411845&549687&618608&687529&756450&825371&894292&963213&1032134&1101055&1169976&1238897&1307818&1376739","year_url":"0&738&697&656&615&574&533&492&451&41&82&123&164&205&246&287&328&369&410","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#threadlist&&table');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a,-2&&title'),       \r\n//desc: parseDomForHtml(list[j], 'a,-3&&Text'),       \r\nurl:'https://88btbtt.com/'+ parseDomForHtml(list[j],'a,-2&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#threadlist&&table');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a,-2&&title'),       \r\n//desc: parseDomForHtml(list[j], 'a,-3&&Text'),       \r\nurl:'https://88btbtt.com/'+ parseDomForHtml(list[j],'a,-2&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://88btbtt.com/search-index-fid-0-orderby-timedesc-daterage-0-keyword-**-page-fypage.htm","titleColor":"#ffff00ff","group":"⑤下载","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html=getResCode();\r\nvar bt=parseDomForHtml(html,'#body&&table,1&&Html').replace(/<script.*?<\\/script>/g,'').replace(/\\/upload/g,'https://88btbtt.com/upload').split('广告 -->')[1];\r\n\nvar list = parseDomForArray(getResCode(), '.attachlist&&td:has(a)');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: '‘‘→ 点此处下载种子 ←’’'\n\n+'\\n'+parseDomForHtml(list[j], 'a&&Text')\n,       \r\n     \r\nurl:'https://88btbtt.com/'+ parseDomForHtml(list[j],'a&&href').replace('dialog','download'), \ncol_type: 'text_center_1'\r\n});\n};\nd.push({\ntitle:bt,\r\n\t//title:\"<p\"+bt.match(/<p.*/g),\r\n\tcol_type: 'rich_text'\r\n});\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.pconline.com.cn%2Fimages%2Fnospd%2Fupload%2Fupc%2Ftx%2Fpcdlc%2F1604%2F19%2Fc0%2F20490651_20490651_1461038070061.jpg&refer=http%3A%2F%2Fimg.pconline.com.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1636973505&t=d3092eadf37e6464bc1969b4bf4923a4"},{"last_chapter_rule":"","title":"加解密工具","author":"Rx&Reborn&@LoyDgIk&wzhjgood","version":14,"type":"tool","url":"hiker://empty#fyAll","col_type":"rich_text","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet newWindow = true\nlet homePage = JSON.parse(request('hiker://page/home?rule=加解密工具')).rule\neval(homePage)","searchFind":"","search_url":"","titleColor":"","group":"⑤功能","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"佛曰\",\"path\":\"buddha\",\"rule\":\"js:\\nlet buddha = {};\\nbuddha.encode = function(obj) {\\n    // log(\\\"[buddha]obj.decText: \\\" + obj.decText)\\n    let encode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/buddha.html'\\n        },\\n        body: 'mode=Buddha&code=Encode&txt=' + obj.decText,\\n        method: 'POST'\\n    });\\n    // log(\\\"[buddha]encode: \\\" + encode)\\n    return encode;\\n}\\nbuddha.decode = function(obj) {\\n    let decode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/buddha.html'\\n        },\\n        body: 'mode=Buddha&code=Decode&txt=' + obj.encText,\\n        method: 'POST'\\n    });\\n    return decode;\\n}\\n$.exports.buddha = buddha\"},{\"col_type\":\"text_1\",\"name\":\"Unicode\",\"path\":\"unicode\",\"rule\":\"js:\\nlet unicode = {};\\nunicode.encode = function(obj) {\\n    let encode = escape(obj.decText.replace(/%u/g, \\\"\\\\\\\\u\\\"));\\n    return encode;\\n}\\nunicode.decode = function(obj) {\\n    let decode = unescape(obj.encText.replace(/\\\\\\\\u/g, \\\"%u\\\"));\\n    return decode;\\n}\\n$.exports.unicode = unicode\"},{\"col_type\":\"text_1\",\"name\":\"Base64\",\"path\":\"base64\",\"rule\":\"js:\\nlet base64 = {};\\nbase64.encode = function(obj) {\\n    // let encode = encodeURIComponent(base64Encode(obj.decText));\\n    let encode = base64Encode(obj.decText);\\n    return encode;\\n}\\nbase64.decode = function(obj) {\\n    let decode = decodeURIComponent(base64Decode(obj.encText));\\n    return decode;\\n}\\n$.exports.base64 = base64\"},{\"col_type\":\"text_1\",\"name\":\"ASCII\",\"path\":\"ascii\",\"rule\":\"js:\\nlet ascii = {};\\nascii.unicode1 = function(str) {\\n    var value = '';\\n    for (var i = 0; i < str.length; i++) {\\n        value = value + '&#' + str.charCodeAt(i) + ';';\\n    }\\n    return value;\\n}\\nascii.reconvert = function(str) {\\n    str = str.replace(/(\\\\\\\\u)(\\\\w{1,4})/gi, function($0) {\\n        return (String.fromCharCode(parseInt((escape($0).replace(/(%5Cu)(\\\\w{1,4})/g, \\\"$2\\\")), 16)));\\n    });\\n    str = str.replace(/(&#x)(\\\\w{1,4});/gi, function($0) {\\n        return String.fromCharCode(parseInt(escape($0).replace(/(%26%23x)(\\\\w{1,4})(%3B)/g, \\\"$2\\\"), 16));\\n    });\\n    str = str.replace(/(&#)(\\\\d{1,6});/gi, function($0) {\\n        return String.fromCharCode(parseInt(escape($0).replace(/(%26%23)(\\\\d{1,6})(%3B)/g, \\\"$2\\\")));\\n    });\\n\\n    return str;\\n}\\n// $.exports.unicode1 = unicode1;\\n// $.exports.reconvert = reconvert;\\nascii.encode = function(obj) {\\n    let encode = this.unicode1(obj.decText);\\n    return encode;\\n}\\nascii.decode = function(obj) {\\n    let decode = this.reconvert(obj.encText);\\n    return decode;\\n}\\n$.exports.ascii = ascii;\"},{\"col_type\":\"text_1\",\"name\":\"获取分类头部\",\"path\":\"classicHeader\",\"rule\":\"js:\\nlet d = [];\\nlet selectColor = '#C04A2F'\\n// 暗橙 E38C4A\\n\\nfunction putKeyIntoMap(key, value) {\\n    const keyMap = JSON.parse(getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\")+\\\"_all_key_Map\\\"), \\\"{}\\\"));\\n    keyMap[key] = value;\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\"), JSON.stringify(keyMap));\\n}\\n\\nfunction getHeaderFromJSONObject(obj) {\\n    for (let key in obj) {\\n        d.push({\\n            title: key == getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), Object.keys(obj)[0]) ? \\\"<b>““””<font color='\\\" + selectColor +\\\"'>\\\" + key + \\\"</font></b>\\\" : key,\\n            url: $(\\\"#noLoading#\\\").lazyRule((key) => {\\n                putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), key);\\n                putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, key),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n    let key = getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), Object.keys(obj)[0]);\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key);\\n    getNextHeaderFromJSONArray(key, obj[key]);\\n    return d;\\n}\\n\\nfunction getNextHeaderFromJSONArray(key, array) {\\n    if (array == undefined || array.length == 0) {\\n        return;\\n    }\\n    let nextHeader = {};\\n    let defaultValue = \\\"\\\";\\n    defaultValue = array[0];\\n    if (Object.prototype.toString.call(array[0]) === '[object Object]') {\\n        defaultValue = Object.keys(array[0])[0];\\n    }\\n    putKeyIntoMap((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue))\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key + \\\"@@\\\" + getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue));\\n    for (let value of array) {\\n        if (Object.prototype.toString.call(value) === '[object Object]') {\\n            // log(\\\"valueKeys: \\\"+JSON.stringify(Object.keys(value)[0]))\\n            let valueKey = Object.keys(value)[0];\\n            d.push({\\n                title: valueKey == getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue) ? \\\"<b>““””<font color='\\\" + selectColor +\\\"'>\\\" + valueKey + \\\"</font></b>\\\" : valueKey,\\n                url: $(\\\"#noLoading#\\\").lazyRule((valueKey, key) => {\\n                    function putKeyIntoMap(key, value) {\\n                        const keyMap = JSON.parse(getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\"), \\\"{}\\\"));\\n                        keyMap[key] = value;\\n                        putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", JSON.stringify(keyMap));\\n                    }\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, valueKey);\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", key + \\\"@@\\\" + valueKey);\\n                    putKeyIntoMap(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, \\\"defaultValue\\\"))\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, valueKey, key),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n            nextHeader[valueKey] = value[valueKey];\\n        } else {\\n            d.push({\\n                title: value == getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue) ? \\\"<b>““””<font color='\\\" + selectColor +\\\"'>\\\" + value + \\\"</font></b>\\\" : value,\\n                url: $(\\\"#noLoading#\\\").lazyRule((value, key) => {\\n                    function putKeyIntoMap(key, value) {\\n                        const keyMap = JSON.parse(getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", \\\"{}\\\"));\\n                        keyMap[key] = value;\\n                        putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", JSON.stringify(keyMap));\\n                    }\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, value);\\n                    putKeyIntoMap(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, \\\"defaultValue\\\"))\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", key + \\\"@@\\\" + value);\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, value, key),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n        }\\n    }\\n\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n    if (nextHeader !== undefined && nextHeader.length != 0) {\\n        getNextHeaderFromJSONArray(key + \\\"@@\\\" + getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue), nextHeader[getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue)]);\\n    }\\n}\\n\\nlet header = {\\n    /**\\n     * 可自定义当前分类头部 id（其实没啥用，就是为了调试不同规则区分一下而已）\\n     */\\n    setId: function(id) {\\n\\t      putVar(\\\"ClassicHeader.id\\\", id)\\n    },\\n    getId: function() {\\n\\t      return getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\");\\n    },\\n    /**\\n     * 获取分类头部，返回视界 setResult 用的数组\\n     */\\n    get: function(obj) {\\n        let result = getHeaderFromJSONObject(obj);\\n        //log(\\\"【子页面】\\\" + JSON.stringify(result))\\n        return result;\\n    },\\n    /**\\n      * 页面关闭时需要注册的生命周期，引入依赖后在 addListener 中调用即可\\n      * 例：\\n         const { header } = $.require(\\\"hiker://page/classicHeader\\\");\\n         addListener(\\\"onClose\\\", $.toString((header) => {\\n          header.onClose();\\n        }, header));\\n      */\\n    onClose: function() {\\n        // putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"\\\", \\\"编码\\\");\\n        // putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@编码\\\", \\\"佛曰\\\");\\n        let allKeyArr = Object.keys(JSON.parse(getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", \\\"{}\\\")));\\n        for (let i in allKeyArr) {\\n            clearVar(allKeyArr[i]);\\n            // log(\\\"【清理后】\\\"+ allKeyArr[i] + \\\": \\\"+JSON.stringify(getVar(allKeyArr[i], \\\"\\\")))\\n        }\\n        clearVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"))\\n        clearVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\")\\n        clearVar(\\\"ClassicHeader.id\\\")\\n    },\\n    /**\\n     * 获取当前已选多级分类，返回的数据格式为：一级分类@@二级分类@@...，可自行做映射获取 url\\n     */\\n    getCurrentIndex: function() {\\n        return getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", \\\"\\\");\\n    }\\n}\\n$.exports.header = header\"},{\"col_type\":\"text_1\",\"name\":\"编码类页面\",\"path\":\"encode\",\"rule\":\"js:\\nfunction setEncodePage(d, obj) {\\n    d.push({\\n    title: \\\"编码\\\",\\n    desc: \\\"请输入原文\\\",\\n    col_type: 'input',\\n    extra: {\\n        // titleVisible: false,\\n        defaultValue: getVar(\\\"decode-text\\\", \\\"\\\"),\\n        type: \\\"textarea\\\",\\n        onChange: 'putVar(\\\"decode-text\\\",input)'\\n    },\\n    url: $.toString((obj) => {\\n        obj.decText = input;\\n        // log(\\\"obj.decText: \\\" + obj.decText)\\n        var encode = \\\"\\\";\\n        var tool = {};\\n        for (let key in obj.tools) {\\n            if (obj.type.includes(key)) {\\n                tool = obj.tools[key];\\n                break;\\n            }\\n        }\\n        encode = tool.encode(obj);\\n        // log(\\\"encode: \\\" + encode)\\n        putVar('encode-text', encode);\\n        refreshPage();\\n        return 'toast://加密成功';\\n    }, obj),\\n});\\n\\nd.push({\\n    title: \\\"解码\\\",\\n    desc: \\\"请输入密文\\\",\\n    col_type: 'input',\\n    extra: {\\n        // titleVisible: false,\\n        defaultValue: getVar(\\\"encode-text\\\", \\\"\\\"),\\n        type: \\\"textarea\\\",\\n        onChange: 'putVar(\\\"encode-text\\\",input)'\\n    },\\n    url: $.toString((obj) => {\\n        obj.encText = input;\\n        // log(\\\"obj.encText: \\\" + obj.encText)\\n        var decode = \\\"\\\";\\n        var tool = {};\\n        for (let key in obj.tools) {\\n            if (obj.type.includes(key)) {\\n                tool = obj.tools[key];\\n                break;\\n            }\\n        }\\n        decode = tool.decode(obj);\\n        putVar('decode-text', decode);\\n        refreshPage();\\n        return 'toast://解密成功';\\n    }, obj),\\n});\\n  \\nd.push({\\n    title: '清空原文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: \\\"hiker://empty#noLoading#\\\" + \\\"@lazyRule=.js:putVar('decode-text', '');refreshPage();'toast://清空成功'\\\",\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '清空密文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: \\\"hiker://empty#noLoading#\\\" + \\\"@lazyRule=.js:putVar('encode-text', '');refreshPage();'toast://清空成功'\\\",\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '复制原文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule(() => {\\n        var dec = getVar(\\\"decode-text\\\");\\n        if (dec) {\\n            return \\\"copy://\\\" + dec;\\n        } else {\\n            return \\\"toast://内容为空！\\\"\\n        }\\n    }),\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '复制密文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule(() => {\\n        var enc = getVar(\\\"encode-text\\\");\\n        if (enc) {\\n            return \\\"copy://\\\" + enc;\\n        } else {\\n            return \\\"toast://内容为空！\\\"\\n        }\\n    }),\\n    col_type: 'icon_2'\\n});\\n}\\n$.exports.setEncodePage = setEncodePage\"},{\"col_type\":\"text_1\",\"name\":\"加密类页面\",\"path\":\"crypto\",\"rule\":\"js:\\n// const { ConfigMapping } = $.require(\\\"hiker://page/aes\\\");\\n// log(JSON.stringify(Object.keys(Crypto.ConfigMapping)))\\nconst { buildAESUi } = $.require(\\\"hiker://page/aesui\\\");\\nconst { buildRSAUi } = $.require(\\\"hiker://page/rsaui\\\");\\nfunction setCryptoPage(d, obj) {\\n    if (obj.type.includes(\\\"对称加密\\\") && !obj.type.includes(\\\"非对称加密\\\")) {\\n        buildAESUi(d, obj)\\n    } else if (obj.type.includes(\\\"非对称加密\\\")) {\\n        buildRSAUi(d, obj)\\n    }\\n}\\n$.exports.setCryptoPage = setCryptoPage\"},{\"col_type\":\"text_1\",\"name\":\"AES\",\"path\":\"aes\",\"rule\":\"js:\\neval(getCryptoJS());\\nlet Crypto = {\\n    ConfigMapping: {\\n        encType: {\\n            \\\"AES\\\": CryptoJS.AES.encrypt,\\n            \\\"DES\\\": CryptoJS.DES.encrypt,\\n            \\\"3DES\\\": CryptoJS.TripleDES.encrypt,\\n        },\\n        decType: {\\n            \\\"AES\\\": CryptoJS.AES.decrypt,\\n            \\\"DES\\\": CryptoJS.DES.decrypt,\\n            \\\"3DES\\\": CryptoJS.TripleDES.decrypt,\\n        },\\n        mode: {\\n            \\\"CBC\\\": CryptoJS.mode.CBC,\\n            \\\"ECB\\\": CryptoJS.mode.ECB,\\n            \\\"CFB\\\": CryptoJS.mode.CFB,\\n            \\\"CTR\\\": CryptoJS.mode.CTR,\\n            \\\"OFB\\\": CryptoJS.mode.OFB\\n        },\\n        pad: {\\n            \\\"Pkcs7\\\": CryptoJS.pad.Pkcs7,\\n            \\\"ZeroPadding\\\": CryptoJS.pad.ZeroPadding,\\n            \\\"NoPadding\\\": CryptoJS.pad.NoPadding,\\n            \\\"Iso97971\\\": CryptoJS.pad.Iso97971,\\n            \\\"AnsiX923\\\": CryptoJS.pad.AnsiX923,\\n            // \\\"Iso10126\\\": CryptoJS.pad.Iso10126,\\n        },\\n        encode: {\\n            \\\"Base64\\\": \\\"Base64\\\",\\n            \\\"HEX\\\": \\\"HEX\\\"\\n        },\\n        blockSize: {\\n            \\\"AES\\\": {\\n                \\\"AES-128\\\": 128,\\n                \\\"AES-192\\\": 192,\\n                \\\"AES-256\\\": 256,\\n            }\\n        },\\n        keyEncodeType: {\\n            \\\"UTF-8\\\": \\\"UTF-8\\\",\\n            \\\"Hex\\\": \\\"Hex\\\"\\n        },\\n        ivEncodeType: {\\n            \\\"UTF-8\\\": \\\"UTF-8\\\",\\n            \\\"Hex\\\": \\\"Hex\\\"\\n        }\\n    },\\n    config: {\\n        type: {\\n            key: \\\"crypto_type\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"AES\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        mode: {\\n            key: \\\"crypto_select_mode\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"CBC\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        pad: {\\n            key: \\\"crypto_select_pad\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"Pkcs7\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        iv: {\\n            key: \\\"crypto_input_iv\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        encode: {\\n            key: \\\"crypto_output_encode\\\",\\n            get: function() {\\n                return getVar(this.key, Crypto.ConfigMapping.encode[\\\"Base64\\\"])\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        key: {\\n            key: \\\"crypto_key\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        text: {\\n            key: \\\"crypto_text\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        cipherText: {\\n            key: \\\"crypto_cipher_text\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        blockSize: {\\n            key: \\\"crypto_block_size\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"AES-128\\\");\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\n        },\\n        keyEncodeType: {\\n            key: \\\"crypto_key_encode_type\\\",\\n            get: function() {\\n                // TODO 此处不知为何 Crypto.ConfigMapping.keyEncodeType[\\\"UTF-8\\\"] 会报 Crypto undefined\\n                return getVar(this.key, \\\"UTF-8\\\")\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        ivEncodeType: {\\n            key: \\\"crypto_iv_encode_type\\\",\\n            get: function() {\\n                return getVar(this.key, \\\"UTF-8\\\")\\n            },\\n            set: function(newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n    },\\n    onClose: function() {\\n        let configKeys = Object.keys(this.config);\\n        for (let confKey of configKeys) {\\n            let key = this.config[confKey].key;\\n            clearVar(key);\\n        }\\n    },\\n    buildConfig: function() {\\n        let mode = this.config.mode.get();\\n        let pad = this.config.pad.get();\\n        let iv = this.config.iv.get();\\n        let conf = {};\\n        conf.mode = this.ConfigMapping.mode[mode];\\n        conf.padding = this.ConfigMapping.pad[pad]\\n        if (mode != \\\"ECB\\\" && iv.length != 0) {\\n            conf.iv = CryptoJS.enc.Utf8.parse(iv);\\n            if (this.config.ivEncodeType.get() == \\\"Hex\\\") {\\n                iv = iv.replace(\\\"[HEX]:\\\", \\\"\\\")\\n                conf.iv = CryptoJS.enc.Hex.parse(iv);\\n            }\\n        }\\n        return conf\\n    },\\n    encryptor: function(obj) {\\n        // 原文\\n        let text = obj.decText;\\n        if (text) {\\n            let keyString = this.config.key.get()\\n            let key = CryptoJS.enc.Utf8.parse(keyString);\\n            if (this.config.keyEncodeType.get() == \\\"Hex\\\") {\\n                keyString = keyString.replace(\\\"[HEX]:\\\", \\\"\\\")\\n                key = CryptoJS.enc.Hex.parse(keyString);\\n            }\\n            try {\\n                let conf = this.buildConfig()\\n                let encrypted = this.ConfigMapping.encType[this.config.type.get()](text, key, conf);\\n                let encode = this.config.encode.get()\\n                let cipherText = encrypted.toString();\\n                if (encode === 'HEX') {\\n                    cipherText = CryptoJS.enc.Hex.stringify(CryptoJS.enc.Base64.parse(cipherText));\\n                }\\n                // 密文\\n                this.config.cipherText.set(cipherText)\\n                return cipherText;\\n            } catch (e) {\\n                log(e.message)\\n                setError(e.message)\\n            }\\n        } else {\\n            throw new Error(\\\"明文不能为空！\\\")\\n        }\\n    },\\n    decryptor: function(obj) {\\n        let text = obj.encText;\\n        if (text) {\\n            let encode = this.config.encode.get()\\n            let cipherText;\\n            if (encode === 'Base64') {\\n                cipherText = text\\n            } else if (encode === 'HEX') {\\n                cipherText = CryptoJS.enc.Base64.stringify(CryptoJS.enc.Hex.parse(text))\\n            }\\n            let keyString = this.config.key.get()\\n            let key = CryptoJS.enc.Utf8.parse(keyString);\\n            if (this.config.keyEncodeType.get() == \\\"Hex\\\") {\\n                keyString = keyString.replace(\\\"[HEX]:\\\", \\\"\\\")\\n                key = CryptoJS.enc.Hex.parse(keyString);\\n            }\\n            try {\\n                let conf = this.buildConfig()\\n                let decrypted = this.ConfigMapping.decType[this.config.type.get()](cipherText, key, conf);\\n                let decryptedStr = decrypted.toString(CryptoJS.enc.Utf8);\\n                if (!decryptedStr) {\\n                    throw new Error(\\\"请检查密钥 key、偏移量 iv 以及密文是否正确！\\\");\\n                }\\n                this.config.text.set(decryptedStr)\\n                return decryptedStr\\n            } catch (e) {\\n                throw new Error(\\\"解密失败！\\\" + e.message);\\n            }\\n        } else {\\n            throw new Error(\\\"密文不能为空！\\\")\\n        }\\n    },\\n    checkKey: function(obj) {\\n        let key = Crypto.config.key.get();\\n        if (key.length === 0) {\\n            throw new Error(\\\"密钥 key 不能为空！\\\")\\n        }\\n        let type = Crypto.config.type.get();\\n        let blockSize = 128;\\n        try {\\n            blockSize = Crypto.ConfigMapping[\\\"blockSize\\\"][type][Crypto.config.blockSize.get()]\\n            // log(\\\"checkKey#blockSize:\\\" + blockSize)\\n        } catch (e) {}\\n        if (type === \\\"DES\\\") {\\n            blockSize = 64;\\n        }\\n        if (Crypto.config.keyEncodeType.get() == \\\"Hex\\\") {\\n            key = key.replace(\\\"[HEX]:\\\", \\\"\\\")\\n            blockSize = blockSize * 2;\\n        }\\n        // 设置数据块长度\\n        let keySize = key.length * 8;\\n        // log(\\\"checkKey#keySize:\\\" + keySize)\\n        // log(\\\"checkKey#keySize/8:\\\" + keySize/8)\\n        // log(\\\"checkKey#blockSize:\\\" + blockSize)\\n        // log(\\\"checkKey#blockSize/8:\\\" + blockSize / 8)\\n        if (keySize < blockSize) {\\n            obj.from = Crypto.config.keyEncodeType.key\\n            let newKey = Crypto.fillKeys(obj, key, blockSize / 8);\\n            Crypto.config.key.set(newKey)\\n            // log(\\\"checkKey#newKey: \\\" + newKey)\\n            // log(\\\"checkKey#newKey.Size: \\\" + newKey.length * 8)\\n            throw new Error('密钥 key 长度过短，已自动 `\\\\\\\\x00` 空填充，请再次执行加/解密')\\n        } else if (keySize > blockSize) {\\n            // TODO 超出部分将被忽略\\n            throw new Error(\\\"密钥 key 长度 \\\" + key.length + \\\" 过长，长度应为 \\\" + blockSize / 8 + \\\"，请自行检查，然后重新执行加/解密\\\")\\n        } else {\\n            return;\\n        }\\n    },\\n    checkIv: function(obj) {\\n        let iv = Crypto.config.iv.get();\\n        let mode = Crypto.config.mode.get();\\n        if (mode === 'ECB') {\\n            return;\\n        }\\n        if (iv.length === 0) {\\n            throw new Error(\\\"偏移量 iv 不能为空！\\\")\\n        }\\n        let type = Crypto.config.type.get();\\n        let blockSize = 128;\\n        if (type === 'DES' || type === '3DES') {\\n            blockSize = 64;\\n        }\\n        if (Crypto.config.ivEncodeType.get() == \\\"Hex\\\") {\\n            iv = iv.replace(\\\"[HEX]:\\\", \\\"\\\")\\n            blockSize = blockSize * 2;\\n        }\\n        // 设置数据块长度\\n        let ivSize = iv.length * 8;\\n        if (ivSize < blockSize) {\\n            obj.from = Crypto.config.ivEncodeType.key\\n            let newIv = Crypto.fillKeys(obj, iv, blockSize / 8);\\n            Crypto.config.iv.set(newIv)\\n            throw new Error(\\\"偏移量 iv 长度过短，已自动 `\\\\\\\\x00` 空填充，请再次执行加/解密\\\")\\n        } else if (ivSize > blockSize) {\\n            throw new Error(\\\"偏移量 iv 长度 \\\" + iv.length + \\\" 过长，长度应为 \\\" + blockSize / 8 + \\\"，请自行检查，然后重新执行加/解密\\\")\\n        } else {\\n            return;\\n        }\\n    },\\n    /**\\n     * 密钥 `\\\\x00` 空填充\\n     * @param {string} key 密钥\\n     * @param {Number} keySize 填充长度, 值: 128, 192, 256\\n     */\\n    fillKeys: function(obj, key, keySize) {\\n        let Tool = $.require(\\\"hiker://page/utiliy?rule=\\\" + obj.ruleTitle);\\n        let encodeType = \\\"UTF-8\\\"\\n        if (obj.from == Crypto.config.keyEncodeType.key) {\\n            encodeType = Crypto.config.keyEncodeType.get();\\n        } else if (obj.from == Crypto.config.ivEncodeType.key) {\\n            encodeType = Crypto.config.ivEncodeType.get();\\n        }\\n        if (encodeType == \\\"Hex\\\") {\\n            return \\\"[HEX]:\\\" + Tool.fillZeroPadding(key, keySize);\\n        }\\n        return Tool.fillNullPadding(key, keySize);\\n    },\\n    AES: {\\n        encrypt: function(obj) {\\n            Crypto.config.type.set(\\\"AES\\\")\\n            // log(\\\"AES-Encrypt-obj:\\\" + JSON.stringify(obj))\\n            return Crypto.encryptor(obj);\\n        },\\n        decrypt: function(obj) {\\n            Crypto.config.type.set(\\\"AES\\\")\\n            return Crypto.decryptor(obj);\\n        }\\n    },\\n    DES: {\\n        encrypt: function(obj) {\\n            Crypto.config.type.set(\\\"DES\\\")\\n            return Crypto.encryptor(obj);\\n        },\\n        decrypt: function(obj) {\\n            Crypto.config.type.set(\\\"DES\\\")\\n            return Crypto.decryptor(obj);\\n        }\\n    },\\n    \\\"3DES\\\": {\\n        encrypt: function(obj) {\\n            Crypto.config.type.set(\\\"3DES\\\")\\n            return Crypto.encryptor(obj);\\n        },\\n        decrypt: function(obj) {\\n            Crypto.config.type.set(\\\"3DES\\\")\\n            return Crypto.decryptor(obj);\\n        }\\n\\n    },\\n}\\n\\n$.exports = Crypto;\"},{\"col_type\":\"text_1\",\"name\":\"编码类算法模板\",\"path\":\"template_encode\",\"rule\":\"js:\\nlet template = {};\\n// 编码\\ntemplate.encode = function(obj) {\\n    log(\\\"我是原文\\\"+ obj.decText)\\n    let encode = \\\"原文通过加密得到的密文字符串\\\";\\n    return encode;\\n}\\n// 解码\\ntemplate.decode = function(obj) {\\n    log(\\\"我是密文\\\"+ obj.encText)\\n    let decode = \\\"密文通过解密得到的原文字符串\\\";\\n    return decode;\\n}\\n// 导出给外部通过 require 方法使用\\n$.exports.template = template\"},{\"col_type\":\"text_1\",\"name\":\"AES-UI\",\"path\":\"aesui\",\"rule\":\"js:\\nfunction buildAESUi(d, obj) {\\n    let config = $.require(\\\"hiker://page/aes?rule=\\\" + obj.ruleTitle).config;\\n    if (obj.type.includes(\\\"AES\\\")) {\\n        config.type.set(\\\"AES\\\")\\n    }\\n    if (obj.type.includes(\\\"DES\\\") && !obj.type.includes(\\\"3DES\\\")) {\\n        config.type.set(\\\"DES\\\")\\n    }\\n    if (obj.type.includes(\\\"3DES\\\")) {\\n        config.type.set(\\\"3DES\\\")\\n        // https://tool.lmeee.com/jiami/des3 说明：3DES数据块长度为64位，所以IV长度需要为8个字符（ECB模式不用IV），密钥长度为16或24个字符（8个字符以内则结果与DES相同），IV与密钥超过长度则截取，不足则在末尾填充'\\\\0'补足\\n    }\\n    d.push({\\n        title: \\\"加密\\\",\\n        desc: \\\"请输入明文\\\",\\n        col_type: 'input',\\n        extra: {\\n            // titleVisible: false,\\n            defaultValue: getVar(\\\"crypto_text\\\", \\\"\\\"),\\n            type: \\\"textarea\\\",\\n            onChange: 'putVar(\\\"crypto_text\\\",input)'\\n        },\\n        url: $.toString((obj) => {\\n            obj.decText = input;\\n            // log(\\\"obj.decText: \\\" + obj.decText)\\n            let toastText = \\\"加密成功\\\";\\n            var cipherText = \\\"\\\";\\n            let Crypto = $.require(\\\"hiker://page/aes?rule=\\\" + obj.ruleTitle);\\n            let config = Crypto.config;\\n            try {\\n                Crypto.checkKey(obj);\\n                Crypto.checkIv(obj);\\n                obj.tools[\\\"AES\\\"] = Crypto.AES;\\n                obj.tools[\\\"DES\\\"] = Crypto.DES;\\n                obj.tools[\\\"3DES\\\"] = Crypto[\\\"3DES\\\"];\\n                var tool = {};\\n                for (let key in obj.tools) {\\n                    if (obj.type.includes(\\\"3DES\\\")) {\\n                        tool = obj.tools[\\\"3DES\\\"];\\n                        break;\\n                    }\\n                    if (obj.type.includes(key) && !obj.type.includes(\\\"3DES\\\")) {\\n                        tool = obj.tools[key];\\n                        break;\\n                    }\\n                }\\n                cipherText = tool.encrypt(obj);\\n                // log(\\\"cipherText: \\\" + cipherText)\\n            } catch (e) {\\n                cipherText = e.message;\\n                toastText = \\\"加密失败\\\";\\n            }\\n            config.cipherText.set(cipherText)\\n            refreshPage();\\n            return 'toast://' + toastText;\\n        }, obj),\\n    });\\n    buildConfigsUI(d, obj);\\n    d.push({\\n        title: \\\"解密\\\",\\n        desc: \\\"请输入密文\\\",\\n        col_type: 'input',\\n        extra: {\\n            // titleVisible: false,\\n            defaultValue: getVar(\\\"crypto_cipher_text\\\", \\\"\\\"),\\n            type: \\\"textarea\\\",\\n            onChange: 'putVar(\\\"crypto_cipher_text\\\",input)'\\n        },\\n        url: $.toString((obj) => {\\n            obj.encText = input;\\n            // log(\\\"obj.encText: \\\" + obj.encText)\\n            let toastText = \\\"解密成功\\\";\\n            let Crypto = $.require(\\\"hiker://page/aes?rule=\\\" + obj.ruleTitle);\\n            var text = \\\"\\\";\\n            let config = Crypto.config;\\n            try {\\n                Crypto.checkKey(obj);\\n                Crypto.checkIv(obj);\\n                obj.tools[\\\"AES\\\"] = Crypto.AES;\\n                obj.tools[\\\"DES\\\"] = Crypto.DES\\n                var tool = {};\\n                for (let key in obj.tools) {\\n                    if (obj.type.includes(key)) {\\n                        tool = obj.tools[key];\\n                        break;\\n                    }\\n                }\\n                // log(obj.encText)\\n                text = tool.decrypt(obj);\\n            } catch (e) {\\n                text = e.message;\\n                toastText = \\\"解密失败\\\";\\n            }\\n            config.text.set(text)\\n            refreshPage();\\n            return 'toast://' + toastText;\\n        }, obj),\\n    });\\n}\\n\\nfunction buildConfigsUI(d, obj) {\\n    let Crypto = $.require(\\\"hiker://page/aes?rule=\\\" + obj.ruleTitle);\\n    let ConfigMapping = Crypto.ConfigMapping;\\n    let config = Crypto.config;\\n    let mappingKeys = Object.keys(ConfigMapping);\\n    let modes = Object.keys(ConfigMapping[\\\"mode\\\"]);\\n    // log(JSON.stringify(modes))\\n    let paddings = Object.keys(ConfigMapping[\\\"pad\\\"]);\\n    // log(JSON.stringify(paddings))\\n    let encodes = Object.keys(ConfigMapping[\\\"encode\\\"]);\\n    // log(JSON.stringify(encodes))\\n    d.push({\\n        title: '““””<strong><font color=\\\"black\\\">模式</font></strong>',\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    for (let mode of modes) {\\n        d.push({\\n            title: mode == config.mode.get() ? \\\"‘‘\\\" + mode + \\\"’’\\\" : mode,\\n            url: $(\\\"#noLoading#\\\").lazyRule((mode, config) => {\\n                config.mode.set(mode)\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, mode, config),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n\\n    d.push({\\n        title: '““””<strong><font color=\\\"black\\\">填充</font></strong>',\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    for (let padding of paddings) {\\n        d.push({\\n            title: padding == config.pad.get() ? \\\"‘‘\\\" + padding + \\\"’’\\\" : padding,\\n            url: $(\\\"#noLoading#\\\").lazyRule((padding, config) => {\\n                config.pad.set(padding)\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, padding, config),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n\\n    if (config.type.get() == 'AES') {\\n        let blockSizes = Object.keys(ConfigMapping[\\\"blockSize\\\"][config.type.get()]);\\n        d.push({\\n            title: '““””<strong><font color=\\\"black\\\">数据块</font></strong>',\\n            url: \\\"hiker://empty\\\",\\n            col_type: \\\"scroll_button\\\"\\n        })\\n        for (let blockSize of blockSizes) {\\n            d.push({\\n                title: blockSize == config.blockSize.get() ? \\\"‘‘\\\" + blockSize + \\\"’’\\\" : blockSize,\\n                url: $(\\\"#noLoading#\\\").lazyRule((blockSize, config) => {\\n                    config.blockSize.set(blockSize)\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, blockSize, config),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n        }\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n\\n    d.push({\\n        title: '““””<strong><font color=\\\"black\\\">密文编码</font></strong>',\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    for (let encode of encodes) {\\n        d.push({\\n            title: encode == config.encode.get() ? \\\"‘‘\\\" + encode + \\\"’’\\\" : encode,\\n            url: $(\\\"#noLoading#\\\").lazyRule((encode, config) => {\\n                config.encode.set(encode);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, encode, config),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    // AES 密钥 key 16/24/32 字符 => 128/192/256 bit\\n    let blockSize = 128;\\n    try {\\n        blockSize = ConfigMapping[\\\"blockSize\\\"][config.type.get()][config.blockSize.get()]\\n    } catch (e) {}\\n    if (config.type.get() === \\\"DES\\\") {\\n        blockSize = 64;\\n    }\\n    obj.blockSize = blockSize;\\n    let keyLen = blockSize / 8;\\n    let keyLenStr = keyLen + \\\" 个字符\\\"\\n    if (config.keyEncodeType.get() == 'Hex') {\\n        keyLenStr = (keyLen * 2) + \\\" 个十六进制字符\\\";\\n    }\\n    d.push({\\n        title: \\\"随机 key\\\",\\n        desc: \\\"密钥 key, 必须 \\\" + keyLenStr,\\n        col_type: 'input',\\n        extra: {\\n            // titleVisible: false,\\n            /*height: -1,\\n            type: \\\"textarea\\\",*/\\n            defaultValue: config.key.get(),\\n            onChange: $.toString((config) => {\\n                config.key.set(input)\\n            }, config)\\n        },\\n        url: $.toString((obj, config) => {\\n            let Tool = $.require(\\\"hiker://page/utiliy?rule=\\\" + obj.ruleTitle);\\n            let keyLen = obj.blockSize / 8;\\n            if (config.type.get() === 'DES') {\\n                keyLen = 8;\\n            }\\n            let randomKey = Tool.randomString(keyLen);\\n            if (config.keyEncodeType.get() == 'Hex') {\\n                let hex = $.require(\\\"hiker://page/hex?rule=\\\" + obj.ruleTitle).hex;\\n                obj.decText = randomKey\\n                randomKey = hex.encode(obj)\\n            }\\n            config.key.set(randomKey);\\n            refreshPage(false)\\n        }, obj, config)\\n    });\\n\\n    d.push({\\n        title: '““””<strong><font color=\\\"black\\\">密钥编码</font></strong>',\\n        url: $(\\\"#noLoading#\\\").lazyRule((config) => {\\n            config.keyEncodeType.set(\\\"UTF-8\\\");\\n            refreshPage(false);\\n            return \\\"toast://重置成功！\\\";\\n        }, config),\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    let keyEncodeTypes = Object.keys(ConfigMapping[\\\"keyEncodeType\\\"]);\\n    // log(JSON.stringify(keyEncodeTypes))\\n    for (let keyEncodeType of keyEncodeTypes) {\\n        d.push({\\n            title: keyEncodeType == config.keyEncodeType.get() ? \\\"‘‘\\\" + keyEncodeType + \\\"’’\\\" : keyEncodeType,\\n            url: $(\\\"#noLoading#\\\").lazyRule((keyEncodeType, config, obj) => {\\n                let toastText = \\\"hiker://empty\\\";\\n                let hex = $.require(\\\"hiker://page/hex?rule=\\\" + obj.ruleTitle).hex;\\n                let key = config.key.get();\\n                let oldKeyEncodeType = config.keyEncodeType.get();\\n                switch (oldKeyEncodeType) {\\n                    case \\\"UTF-8\\\":\\n                        if (keyEncodeType == \\\"Hex\\\") {\\n                            obj.decText = key\\n                            if (key.length !== 0) {\\n                                config.key.set(hex.encode(obj))\\n                            }\\n                        }\\n                        config.keyEncodeType.set(keyEncodeType);\\n                        refreshPage(false);\\n                        break;\\n                    case \\\"Hex\\\":\\n                        if (key.length == 0) {\\n                            config.keyEncodeType.set(keyEncodeType);\\n                            refreshPage(false);\\n                        } else {\\n                            toastText = 'toast://当前不支持 Hex 转其他编码，若需要重置选项请点击[密钥编码]'\\n                        }\\n                        break;\\n                }\\n                return toastText;\\n            }, keyEncodeType, config, obj),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n\\n    if (config.mode.get() !== \\\"ECB\\\") {\\n        let ivSize = (config.type.get() === \\\"DES\\\" || config.type.get() === \\\"3DES\\\") ? 64 : 128;\\n        obj.ivSize = ivSize;\\n        let ivLen = ivSize / 8;\\n        let ivLenStr = ivLen + \\\" 个字符\\\"\\n        if (config.ivEncodeType.get() == 'Hex') {\\n            ivLenStr = (ivLen * 2) + \\\" 个十六进制字符\\\";\\n        }\\n        d.push({\\n            title: \\\"随机 iv\\\",\\n            desc: \\\"偏移量 iv, 必须 \\\" + ivLenStr,\\n            col_type: 'input',\\n            extra: {\\n                // titleVisible: false,\\n                /*height: -1,\\n                type: \\\"textarea\\\",*/\\n                defaultValue: config.iv.get(),\\n                onChange: $.toString((config) => {\\n                    config.iv.set(input)\\n                }, config)\\n            },\\n            url: $.toString((obj, config) => {\\n                let Tool = $.require(\\\"hiker://page/utiliy?rule=\\\" + obj.ruleTitle);\\n                let ivLen = obj.ivSize / 8;\\n                let randomIv = Tool.randomString(ivLen);\\n                if (config.ivEncodeType.get() == 'Hex') {\\n                    let hex = $.require(\\\"hiker://page/hex?rule=\\\" + obj.ruleTitle).hex;\\n                    obj.decText = randomIv\\n                    randomIv = hex.encode(obj)\\n                }\\n                config.iv.set(randomIv);\\n                refreshPage(false)\\n            }, obj, config)\\n        });\\n        d.push({\\n            title: '““””<strong><font color=\\\"black\\\">偏移量编码</font></strong>',\\n            url: $(\\\"#noLoading#\\\").lazyRule((config) => {\\n                config.ivEncodeType.set(\\\"UTF-8\\\");\\n                refreshPage(false);\\n                return \\\"toast://重置成功！\\\";\\n            }, config),\\n            col_type: \\\"scroll_button\\\"\\n        })\\n        let ivEncodeTypes = Object.keys(ConfigMapping[\\\"ivEncodeType\\\"]);\\n        // log(JSON.stringify(keyEncodeTypes))\\n        for (let ivEncodeType of ivEncodeTypes) {\\n            d.push({\\n                title: ivEncodeType == config.ivEncodeType.get() ? \\\"‘‘\\\" + ivEncodeType + \\\"’’\\\" : ivEncodeType,\\n                url: $(\\\"#noLoading#\\\").lazyRule((ivEncodeType, config, obj) => {\\n                    let toastText = \\\"hiker://empty\\\";\\n                    let hex = $.require(\\\"hiker://page/hex?rule=\\\" + obj.ruleTitle).hex;\\n                    let iv = config.iv.get();\\n                    let oldIvEncodeType = config.ivEncodeType.get();\\n                    switch (oldIvEncodeType) {\\n                        case \\\"UTF-8\\\":\\n                            if (ivEncodeType == \\\"Hex\\\") {\\n                                obj.decText = iv\\n                                if (iv.length !== 0) {\\n                                    config.iv.set(hex.encode(obj))\\n                                }\\n                            }\\n                            config.ivEncodeType.set(ivEncodeType);\\n                            refreshPage(false);\\n                            break;\\n                        case \\\"Hex\\\":\\n                            if (iv.length == 0) {\\n                                config.ivEncodeType.set(ivEncodeType);\\n                                refreshPage(false);\\n                            } else {\\n                                toastText = 'toast://当前不支持 Hex 转其他编码，若需要重置选项请点击[偏移量编码]'\\n                            }\\n                            break;\\n                    }\\n                    return toastText;\\n                }, ivEncodeType, config, obj),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n        }\\n    } else {\\n        config.iv.set(\\\"\\\");\\n    }\\n}\\n$.exports.buildAESUi = buildAESUi\"},{\"col_type\":\"rich_text\",\"name\":\"RSA-UI\",\"path\":\"rsaui\",\"rule\":\"js:\\nlet navigator = {};\\nlet window = { \\n\\tnavigator: navigator \\n};\\nfunction buildRSAUi(d, obj) {\\n  d.push({\\n\\ttitle: '<p style=\\\"text-align: center;\\\">目前无法实现，敬请期待（咕咕咕）~</p>',\\n\\tcol_type: 'rich_text'\\n  })\\n  // https://cdn.jsdelivr.net/npm/keypair@1.0.3/index.min.js\\n  // https://cdn.jsdelivr.net/gh/wwwtyro/cryptico@master/cryptico.min.js\\n  // let cryptico = request(\\\"https://cdn.jsdelivr.net/gh/wwwtyro/cryptico@master/cryptico.min.js\\\")\\n  // eval(cryptico)\\n\\n\\n}\\n$.exports.buildRSAUi = buildRSAUi\"},{\"col_type\":\"text_1\",\"name\":\"工具\",\"path\":\"utiliy\",\"rule\":\"js:\\nlet Tool = {\\n  randomString: function(len){\\n      let chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz123456789' \\n      let maxLen = chars.length\\n      let str = ''\\n      for (let i = 0; i < len; i++) {\\n        str += chars.charAt(Math.floor(Math.random() * maxLen))\\n      }\\n      return str\\n  },\\n  fillNullPadding: function (str, len) {\\n    // str.padStart(targetLength [, padString])\\n    // str.padEnd(targetLength [, padString])\\n    if(str.length >= len) {\\n      return str;\\n    }\\n    return str + Array( len - str.length + 1 ).join(\\\"\\\\x00\\\");\\n  },\\n  fillZeroPadding: function (str, len) {\\n    // str.padStart(targetLength [, padString])\\n    // str.padEnd(targetLength [, padString])\\n    if(str.length >= len) {\\n      return str;\\n    }\\n    return str + Array( len - str.length + 1 ).join(\\\"0\\\");\\n  },\\n}\\n$.exports = Tool;\"},{\"col_type\":\"text_1\",\"name\":\"散列哈希类页面\",\"path\":\"hash\",\"rule\":\"js:\\nconst { buildHashUi } = $.require(\\\"hiker://page/hashui\\\");\\nfunction setHashPage(d, obj) {\\n    buildHashUi(d, obj);\\n}\\n$.exports.setHashPage = setHashPage\"},{\"col_type\":\"text_1\",\"name\":\"Hex\",\"path\":\"hex\",\"rule\":\"js:\\nlet hex = {};\\n// 编码\\nhex.encode = function(obj) {\\n    eval(getCryptoJS());\\n    // log(\\\"我是原文\\\"+ obj.decText)\\n    let wordArray = CryptoJS.enc.Utf8.parse(obj.decText);\\n    let encode = \\\"[HEX]:\\\" + CryptoJS.enc.Hex.stringify(wordArray);\\n    return encode;\\n}\\n// 解码\\nhex.decode = function(obj) {\\n    eval(getCryptoJS());\\n    // log(\\\"我是密文\\\"+ obj.encText)\\n    obj.encText = obj.encText.replace(\\\"[HEX]:\\\", \\\"\\\")\\n    let wordArray = CryptoJS.enc.Hex.parse(obj.encText);\\n    let decode = CryptoJS.enc.Utf8.stringify(wordArray);\\n    return decode;\\n}\\n// 导出给外部通过 require 方法使用\\n$.exports.hex = hex\"},{\"col_type\":\"text_1\",\"name\":\"Hash-UI\",\"path\":\"hashui\",\"rule\":\"js:\\nfunction buildEmtpyHashUi(d, obj) {\\n    d.push({\\n        title: '<p style=\\\"text-align: center;\\\">正在路上，敬请期待（咕咕咕）~</p>',\\n        col_type: 'rich_text'\\n    })\\n}\\nfunction buildHashUi(d, obj) {\\n    if (obj.type.includes(\\\"SHA3\\\") && !obj.type.includes(\\\"HMAC\\\")) {\\n        buildEmtpyHashUi(d, obj);\\n        return;\\n    }\\n     d.push({\\n        title: \\\"哈希/散列\\\",\\n        desc: \\\"请输入原文\\\",\\n        col_type: 'input',\\n        extra: {\\n            // titleVisible: false,\\n            defaultValue: getVar(\\\"hash_text\\\", \\\"\\\"),\\n            type: \\\"textarea\\\",\\n            onChange: 'putVar(\\\"hash_text\\\",input)'\\n        },\\n        url: $.toString((obj) => {\\n            // obj.decText = input;\\n            // log(\\\"obj.decText: \\\" + obj.decText)\\n            let toastText = \\\"加密成功\\\";\\n            let hash_result = \\\"\\\";\\n            let tool = {};\\n            let toolSelects = obj.type.split(\\\"@@\\\");\\n            let toolSelect = toolSelects[toolSelects.length - 1];\\n            let HashAlgorithm = $.require(\\\"hiker://page/hashalgorithm?rule=\\\" + obj.ruleTitle);\\n            HashAlgorithm.config.type.set(toolSelect)\\n            tool = HashAlgorithm;\\n            try {\\n                hash_result = tool.hash();\\n                // log(\\\"hash_result: \\\" + hash_result)\\n            } catch (e) {\\n                hash_result = e.message;\\n                toastText = \\\"加密失败\\\";\\n            }\\n            HashAlgorithm.config.resultText.set(hash_result)\\n            refreshPage();\\n            return 'toast://' + toastText;\\n        }, obj),\\n    });\\n    if (obj.type.includes(\\\"HMAC\\\") || obj.type.includes(\\\"PBKDF2\\\")) {\\n        buildConfigsUI(d, obj);\\n    }\\n    d.push({\\n        title: \\\"复制\\\",\\n        desc: \\\"哈希值\\\",\\n        col_type: 'input',\\n        extra: {\\n            // titleVisible: false,\\n            defaultValue: getVar(\\\"hash_result_text\\\", \\\"\\\"),\\n            type: \\\"textarea\\\",\\n            onChange: 'putVar(\\\"hash_result_text\\\",input)'\\n        },\\n        url: $.toString(() => {\\n            // obj.encText = input;\\n            // log(\\\"obj.encText: \\\" + obj.encText)\\n            if (input) {\\n                return \\\"copy://\\\" + input;\\n            } else {\\n                return \\\"toast://内容为空！\\\"\\n            }\\n        }),\\n    });\\n    \\n}\\nfunction buildConfigsUI(d, obj) {\\n    // HMAC || PBKDF2\\n    let HashAlgorithm = $.require(\\\"hiker://page/hashalgorithm?rule=\\\" + obj.ruleTitle);\\n    if (obj.type.includes(\\\"HMAC\\\")) {\\n        // HMAC-xxx\\n        buildHmacConfigsUI(d, obj, HashAlgorithm.config)\\n    } else if (obj.type.includes(\\\"PBKDF2\\\")) {\\n        // PBKDF2\\n        buildPBKDF2ConfigsUI(d, obj, HashAlgorithm.Mapping, HashAlgorithm.config)\\n    }\\n}\\nfunction buildHmacConfigsUI (d, obj, config) {\\n    // obj.type.includes(\\\"HMAC\\\")\\n    d.push({\\n        title: \\\"随机 key\\\",\\n        desc: \\\"密钥 key\\\",\\n        col_type: 'input',\\n        extra: {\\n            titleVisible: false,\\n            height: -1,\\n            type: \\\"textarea\\\",\\n            defaultValue: config.key.get(),\\n            onChange: $.toString((config) => {\\n                config.key.set(input)\\n            }, config)\\n        }\\n    });\\n}\\nfunction buildPBKDF2ConfigsUI(d, obj, mapping, config) {\\n    // obj.type.includes(\\\"PBKDF2\\\")\\n    let keySizes = Object.keys(mapping[\\\"keySize\\\"]);\\n    d.push({\\n        title: '““””<strong><font color=\\\"black\\\">KEY长度</font></strong>',\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    for (let keySize of keySizes) {\\n        d.push({\\n            title: keySize == config.keySize.get() ? \\\"‘‘\\\" + keySize + \\\"’’\\\" : keySize,\\n            url: $(\\\"#noLoading#\\\").lazyRule((keySize, config) => {\\n                    config.keySize.set(keySize)\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n            }, keySize, config),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n    d.push({\\n        title: \\\"随机 salt\\\",\\n        desc: \\\"盐 salt，建议至少为 8 字节，且要为随机数。\\\",\\n        col_type: 'input',\\n        extra: {\\n            titleVisible: false,\\n            height: -1,\\n            type: \\\"textarea\\\",\\n            defaultValue: config.salt.get(),\\n            onChange: $.toString((config) => {\\n                config.salt.set(input)\\n            }, config)\\n        }\\n    });\\n    d.push({\\n        title: \\\"迭代次数\\\",\\n        desc: \\\"迭代次数(选填)，建议至少为 50000 次，除非有严格的性能要求。\\\",\\n        col_type: 'input',\\n        extra: {\\n            titleVisible: false,\\n            height: -1,\\n            type: \\\"textarea\\\",\\n            defaultValue: config.iterations.get(),\\n            onChange: $.toString((config) => {\\n                config.iterations.set(input)\\n            }, config)\\n        }\\n    });\\n}\\n$.exports.buildHashUi = buildHashUi\"},{\"col_type\":\"text_1\",\"name\":\"Hash算法\",\"path\":\"hashalgorithm\",\"rule\":\"js:\\neval(getCryptoJS());\\nlet HashAlgorithm = {\\n\\tMapping: {\\n\\t\\thashType: {\\n\\t\\t\\t\\\"MD5\\\": CryptoJS.MD5,\\n\\t\\t\\t\\\"SHA-1\\\": CryptoJS.SHA1,\\n\\t\\t\\t\\\"SHA-224\\\": CryptoJS.SHA224,\\n\\t\\t\\t\\\"SHA-256\\\": CryptoJS.SHA256,\\n\\t\\t\\t\\\"SHA-384\\\": CryptoJS.SHA384,\\n\\t\\t\\t\\\"SHA-512\\\": CryptoJS.SHA512,\\n\\t\\t\\t\\\"HMAC-MD5\\\": CryptoJS.HmacMD5,\\n\\t\\t\\t\\\"HMAC-SHA1\\\": CryptoJS.HmacSHA1,\\n\\t\\t\\t\\\"HMAC-SHA224\\\": CryptoJS.HmacSHA224, \\n\\t\\t\\t\\\"HMAC-SHA256\\\": CryptoJS.HmacSHA256, \\n\\t\\t\\t\\\"HMAC-SHA384\\\": CryptoJS.HmacSHA384, \\n\\t\\t\\t\\\"HMAC-SHA512\\\": CryptoJS.HmacSHA512,\\n\\t\\t\\t\\\"PBKDF2\\\": CryptoJS.PBKDF2,\\n\\t\\t},\\n        keySize: {\\n            \\\"128位\\\": 128,\\n            \\\"256位\\\": 256,\\n            \\\"512位\\\": 512,\\n        },\\n\\t},\\n\\tconfig: {\\n        type: {\\n            key: \\\"hash_type\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"MD5\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n        key: {\\n            key: \\\"hash_hmac_key\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n        },\\n\\t\\ttext: {\\n\\t\\t\\tkey: \\\"hash_text\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\t\\t},\\n\\t\\tresultText: {\\n\\t\\t\\tkey: \\\"hash_result_text\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\t\\t},\\n        keySize: {\\n            key: \\\"hash_key_size\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"128位\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\n        },\\n        salt: {\\n            key: \\\"hash_salt\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\n        },\\n        iterations: {\\n            key: \\\"hash_iterations\\\",\\n            get: function () {\\n                return getVar(this.key, \\\"\\\");\\n            },\\n            set: function (newValue) {\\n                putVar(this.key, newValue);\\n            }\\n\\n        },\\n\\t},\\n    onClose: function() {\\n        let configKeys = Object.keys(this.config);\\n        for(let confKey of configKeys) {\\n            let key = this.config[confKey].key;\\n            clearVar(key);\\n        }\\n    },\\n\\thash: function () {\\n\\t\\tlet text = this.config.text.get();\\n\\t\\tlet type = this.config.type.get();\\n\\t\\tlet hash = {};\\n\\t\\tif (text) {\\n            if (type.includes(\\\"HMAC\\\")) {\\n                // HMAC-xxx\\n                let key = this.config.key.get();\\n                hash = this.Mapping.hashType[type](text, key)\\n            } else if (type.includes(\\\"PBKDF2\\\")) {\\n                // PBKDF2\\n                let keySize = this.Mapping.keySize[this.config.keySize.get()];\\n                let salt = this.config.salt.get();\\n                let iterations = this.config.iterations.get();\\n                if (!salt) {\\n                \\tthrow new Error(\\\"盐 salt 不能为空！\\\")\\n                }\\n                salt = CryptoJS.enc.Utf8.parse(salt)\\n                let options =  {\\n                \\t\\tkeySize: keySize / 32\\n                }\\n                if (iterations) {\\n                \\toptions.iterations = iterations;\\n                }\\n                hash = this.Mapping.hashType[type](text, salt, options)\\n            } else {\\n\\t\\t\\t\\thash = this.Mapping.hashType[type](text);\\n            }\\n\\t\\t\\t// 密文\\n\\t\\t\\tlet hashResult = hash.toString();\\n            // log(\\\"hash#hash_result: \\\" + hashResult)\\n            this.config.resultText.set(hashResult);\\n\\t\\t\\treturn hashResult;\\n\\t\\t} else {\\n            throw new Error(\\\"原文不能为空！\\\")\\n        }\\n\\t}\\n};\\n$.exports = HashAlgorithm\"},{\"col_type\":\"movie_3\",\"name\":\"兽音\",\"path\":\"roar\",\"rule\":\"js:\\nlet roar = {};\\nroar.encode = function(obj) {\\n    // log(\\\"[roar]obj.decText: \\\" + obj.decText)\\n    let encode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/roar.html'\\n        },\\n        body: 'mode=Roar&code=Encode&txt=' + obj.decText,\\n        method: 'POST'\\n    });\\n    // log(\\\"[roar]encode: \\\" + encode)\\n    return encode;\\n}\\nroar.decode = function(obj) {\\n    let decode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/roar.html'\\n        },\\n        body: 'mode=Roar&code=Decode&txt=' + obj.encText,\\n        method: 'POST'\\n    });\\n    return decode;\\n}\\n$.exports.roar = roar\"},{\"col_type\":\"movie_3\",\"name\":\"熊曰\",\"path\":\"bear\",\"rule\":\"js:\\nlet bear = {};\\nbear.encode = function(obj) {\\n    // log(\\\"[bear]obj.decText: \\\" + obj.decText)\\n    let encode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/bear.html'\\n        },\\n        body: 'mode=Bear&code=Encode&txt=' + obj.decText,\\n        method: 'POST'\\n    });\\n    // log(\\\"[bear]encode: \\\" + encode)\\n    return encode;\\n}\\nbear.decode = function(obj) {\\n    let decode = request('http://hi.pcmoe.net/bear.php', {\\n        headers: {\\n            'X-Token': '07B97AA644E8',\\n            'Origin': 'http://hi.pcmoe.net',\\n            'X-Requested-With': 'XMLHttpRequest',\\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 10; Note9 Build/QKQ1.191222.002; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/77.0.3865.120 MQQBrowser/6.2 TBS/045614 Mobile Safari/537.36',\\n            'Content-type': 'application/x-www-form-urlencoded',\\n            'Referer': 'http://hi.pcmoe.net/bear.html'\\n        },\\n        body: 'mode=Bear&code=Decode&txt=' + obj.encText,\\n        method: 'POST'\\n    });\\n    return decode;\\n}\\n$.exports.bear = bear\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"js:\\nsetPageTitle('加解密工具')\\nconst {\\n    header\\n} = $.require(\\\"hiker://page/classicHeader\\\");\\nconst {\\n    setEncodePage\\n} = $.require(\\\"hiker://page/encode\\\");\\nconst {\\n    setCryptoPage\\n} = $.require(\\\"hiker://page/crypto\\\");\\nconst {\\n    setHashPage\\n} = $.require(\\\"hiker://page/hash\\\");\\n// const { Crypto } = $.require(\\\"hiker://page/aes\\\");\\n/**\\n * 1. 引入算法依赖\\n */\\nconst {\\n    buddha\\n} = $.require(\\\"hiker://page/buddha\\\");\\nconst {\\n    bear\\n} = $.require(\\\"hiker://page/bear\\\");\\nconst {\\n    roar\\n} = $.require(\\\"hiker://page/roar\\\");\\nconst {\\n    unicode\\n} = $.require(\\\"hiker://page/unicode\\\");\\nconst {\\n    base64\\n} = $.require(\\\"hiker://page/base64\\\");\\nconst {\\n    ascii\\n} = $.require(\\\"hiker://page/ascii\\\");\\nconst {\\n    hex\\n} = $.require(\\\"hiker://page/hex\\\");\\n\\nlet ruleTitle = MY_RULE.title;\\naddListener('onClose', $.toString((header, ruleTitle) => {\\n    putVar(\\\"encode-text\\\", \\\"\\\");\\n    putVar(\\\"decode-text\\\", \\\"\\\");\\n    header.onClose();\\n    let Crypto = $.require(\\\"hiker://page/aes?rule=\\\" + ruleTitle);\\n    Crypto.onClose();\\n    let HashAlgorithm = $.require(\\\"hiker://page/hashalgorithm?rule=\\\" + ruleTitle);\\n    HashAlgorithm.onClose();\\n}, header, ruleTitle))\\n\\nlet d = [];\\n/*d.push({\\n    desc: \\\"0\\\",\\n    col_type: \\\"x5_webview_single\\\"\\n})*/\\ntry {\\n    if (!newWindow) {\\n\\n    }\\n} catch (e) {\\n    for (let i = 0; i < 1; i++) {\\n        d.push({\\n            col_type: 'big_blank_block'\\n        });\\n    }\\n}\\nlet classic = {\\n    \\\"编码转换\\\": [\\\"佛曰\\\", \\\"熊曰\\\", \\\"兽音\\\", \\\"Unicode\\\", \\\"Base64\\\", \\\"ASCII\\\", \\\"Hex\\\"],\\n    \\\"加密/解密\\\": [{\\n            \\\"对称加密\\\": [\\\"AES\\\", \\\"DES\\\", \\\"3DES\\\"]\\n        },\\n        {\\n            \\\"非对称加密\\\": [\\\"RSA\\\"]\\n        }\\n    ],\\n    \\\"散列/哈希\\\": [\\n        \\\"MD5\\\",\\n        {\\n            \\\"SHA\\\": [\\\"SHA-1\\\", \\\"SHA-224\\\", \\\"SHA-256\\\", \\\"SHA-384\\\", \\\"SHA-512\\\", /*\\\"SHA3-512\\\"*/ ]\\n        },\\n        {\\n            \\\"HMAC\\\": [\\\"HMAC-MD5\\\", \\\"HMAC-SHA1\\\", \\\"HMAC-SHA224\\\", \\\"HMAC-SHA256\\\", \\\"HMAC-SHA384\\\", \\\"HMAC-SHA512\\\"]\\n        },\\n        \\\"PBKDF2\\\"\\n    ],\\n    \\\"其他转换\\\": [\\n        \\\"时间戳\\\",\\n    ]\\n}\\nd = d.concat(header.get(classic))\\nvar type = header.getCurrentIndex();\\ntry {\\n    if (newWindow) {\\n        /*for (let i = 0; i < 1; i++) {\\n            d.push({\\n                col_type: 'big_blank_block'\\n            });\\n        }*/\\n        d.push({\\n            title: '““””<b>选项</b>',\\n            col_type: 'scroll_button',\\n            url: 'hiker://empty',\\n        })\\n        d.push({\\n            title: '点我化为新窗口',\\n            col_type: 'scroll_button',\\n            url: 'hiker://page/home',\\n            extra: {\\n                newWindow: true,\\n                // lineVisible: false\\n            }\\n        })\\n    }\\n} catch (e) {\\n    log(e.message)\\n}\\n\\n/**\\n * 2. 在 tools 加入键值对，用于映射算法，格式为 分类中的替换值（即 fyAll 的值）: 引入的算法依赖的对象名\\n */\\nvar obj = {\\n    ruleTitle: ruleTitle,\\n    type: type,\\n    tools: {\\n        \\\"佛曰\\\": buddha,\\n        \\\"熊曰\\\": bear,\\n        \\\"兽音\\\": roar,\\n        \\\"Unicode\\\": unicode,\\n        \\\"Base64\\\": base64,\\n        \\\"ASCII\\\": ascii,\\n        \\\"Hex\\\": hex,\\n        // \\\"AES\\\": Crypto.AES,\\n        // \\\"DES\\\": Crypto.DES,\\n    },\\n}\\n\\n/**\\n * 3. 添加子页面写自己的算法，模板请参考“算法模板”这个子页面或已有的子页面\\n * \\n * 注：此备注后的所有代码各位都不需要动\\n */\\nif (obj.type.includes(\\\"编码转换\\\")) {\\n    setEncodePage(d, obj);\\n} else if (obj.type.includes(\\\"加密/解密\\\")) {\\n    setCryptoPage(d, obj);\\n} else if (obj.type.includes(\\\"散列/哈希\\\")) {\\n    setHashPage(d, obj);\\n}\\nsetResult(d)\"}]","proxy":"","icon":""},{"firstHeader":"class","title":"彼岸图网","author":"","version":0,"url":"http://pic.netbian.com/fyclass/index_fypage.html[firstPage=http://pic.netbian.com/fyclass];gb2312","col_type":"pic_3","class_name":"4k壁纸&4k风景&4k美女&4k游戏&4k动漫&4k影视&4k明星&4k汽车&4k动物&4k人物&4k美食&4k宗教&4k背景","class_url":"&4kfengjing&4kmeinv&4kyouxi&4kdongman&4kyingshi&4kmingxing&4kqiche&4kdongwu&4krenwu&4kmeishi&4kzongjiao&4kbeijing","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".slist&&li;a&&Text;a&&img&&src;*;a&&href","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"title":"360壁纸","version":0,"url":"http://wallpaper.apc.360.cn/index.php?c=WallPaper&start=fypage@-1@*12@&count=12&from=360chrome&a=getAppsByfyAll","col_type":"pic_2","class_name":"4K专区&最新壁纸&美女模特&爱情美图&风景大片&小清新","class_url":"Category＆＆cid=36&Order＆＆order=create_time&Category＆＆cid=6&Category＆＆cid=30&Category＆＆cid=9&Category＆＆cid=15","area_name":"动漫卡通&明星风尚&萌宠动物&游戏壁纸&汽车天下&炫酷时尚","area_url":"Category＆＆cid=26&Category＆＆cid=11&Category＆＆cid=14&Category＆＆cid=5&Category＆＆cid=12&Category＆＆cid=10","year_name":"月历壁纸&影视剧照&节日美图&军事天地&劲爆体育&BABY秀","year_url":"Category＆＆cid=29&Category＆＆cid=7&Category＆＆cid=13&Category＆＆cid=22&Category＆＆cid=16&Category＆＆cid=18","find_rule":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.data.length; i++)\n{\n var r = {};\n var j = json.data[i];\n r.title = j.utag;\n r.desc = j.update_time;\n r.pic_url = j.url;\n r.url = j.url;\n d.push(r);\n}\nres.data = d;\nsetHomeResult(res)","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片"},{"title":"500px","author":"","version":0,"url":"https://500px.me/community/discover/fyclass?resourceType=0,2&startTime=&page=fypage&size=20&type=json","col_type":"pic_3","class_name":"排名上升&新作&推荐","class_url":"rankingRise&created_date&recommendTime","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var json=JSON.parse(getResCode());var res={};\nvar d=json.map(x=>({pic_url:x.url.p1,desc:x.uploaderInfo.nickName,title:x.id,url:x.url.p4}));\nres.data = d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"last_chapter_rule":"","title":"壁纸大全","author":"花花","version":7,"type":"picture","url":"http://service.picasso.adesk.com/v1/lightwp/category","col_type":"card_pic_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\ndata = data.res.category\nfor (let it of data) {\n    d.push({\n        title: it.rname,\n        url: \"http://service.picasso.adesk.com/v1/lightwp/category/\" + it.id + \"/vertical?limit=20&skip=fypage@-1@*20@&order=new\",\n        col_type: \"card_pic_2\",\n        desc: \"0\",\n        pic_url: it.cover\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\ntry {\n    var data = JSON.parse(getResCode());\n    data = data.res.vertical\n    for (let it of data) {\n        d.push({\n            //title: it.id,\n            url: it.img + \"#.jpg\",\n            col_type: \"pic_2_card\",\n            desc: \"\",\n            pic_url: it.img\n        });\n    }\n} catch (e) {\n    log(e)\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"高清壁纸","author":"","version":0,"type":"picture","url":"http://service.picasso.adesk.com/v1/vertical/category/fyAll/vertical?limit=30&skip=fypage@-1@*30@&adult=false&first=0&order=hot","col_type":"pic_3","class_name":"美女&动漫&风景&游戏&文字","class_url":"4e4d610cdf714d2966000000&4e4d610cdf714d2966000003&4e4d610cdf714d2966000002&4e4d610cdf714d2966000007&5109e04e48d5b9364ae9ac45","area_name":"视觉&情感&设计&明星&物语","area_url":"4fb479f75ba1c65561000027&4ef0a35c0569795756000000&4fb47a195ba1c60ca5000222&5109e05248d5b9368bb559dc&4fb47a465ba1c65561000028","sort_name":"","year_name":"男人&机械&城市&动物&影视","sort_url":"","year_url":"4e4d610cdf714d2966000006&4e4d610cdf714d2966000005&4fb47a305ba1c60ca5000223&4e4d610cdf714d2966000001&4e58c2570569791a19000000","find_rule":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.res.vertical.length; i++)\n{\n var r = {};\n var j = json.res.vertical[i];\n r.pic_url = j.wp;\n r.url = j.wp;\n d.push(r);\n}\nres.data = d;\nsetHomeResult(res)","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"360图片","author":"Defy","version":0,"url":"https://image.so.com/j?q=fyAll&src=srp&sn=fypage@-1@*20@&pn=24;get;utf-8;{User-Agent@Mozilla/5.0 AppleWebKit/537.36 Chrome/71.0.3559.6 Safari/537.36}","col_type":"pic_3","class_name":"唯美&二次元&风景&美女&简约&动漫&女生","class_url":"唯美手机壁纸&二次元手机壁纸&风景手机壁纸&美女手机壁纸&简约手机壁纸&动漫手机壁纸&女生手机壁纸","area_name":"励志&明星&可爱&卡通&花朵&大海&阳光&动物","area_url":"励志手机壁纸&明星手机壁纸&可爱手机壁纸&卡通手机壁纸&花朵手机壁纸&大海手机壁纸&阳光手机壁纸&动物手机壁纸","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//网页源代码为JSON对象,即由两个花括号{包含所有内容的},可以套用此模版\n\n//把网页代码转换为JSON对象并存在json里\nvar json=JSON.parse(getResCode());\n\n//创建一个名为res的空对象，名为d的数组\nvar res={};\nvar d=[];\n\n//做个小于数组长度循环\nfor(var i=0;i<json.list.length;i++){\n\n//把json数组里的值存到变量 j\nvar j = json.list[i];\nvar r = {};\n\n//把json里的子值存到对应海阔所需的键里\n\n//标题\nr.title = j.title;\n\n//图片地址\nr.pic_url=j.thumb;\n\n//描述\nr.desc=j.imgsize;\n\n//链接,也为图片地址不跳转网页直接显示大图,为视频播放地址同理会直接播放\nr.url=j.img;d.push(r);\n}\n\n//把d的数据存到res对象里,并输出到首页\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto"},{"title":"简爱","author":"O_O","version":0,"url":"http://service.aibizhi.adesk.com/v1/vertical/category/fyAll/vertical?limit=12&skip=fypage@*12@&adult=false&first=0&order=hot","col_type":"pic_1_full","class_name":"美女&游戏&风景&动物&动漫","class_url":"4e4d610cdf714d2966000000&4e4d610cdf714d2966000007&4e4d610cdf714d2966000002&4e4d610cdf714d2966000001&4e4d610cdf714d2966000003","area_name":"机械&手绘&文字&视觉&物语","area_url":"4e4d610cdf714d2966000005&4e4d610cdf714d2966000004&5109e04e48d5b9364ae9ac45&4fb479f75ba1c65561000027&4fb479f75ba1c65561000028","sort_name":"","year_name":"设计&情感&城市&影视&man&明星","sort_url":"","year_url":"4fb47a195ba1c60ca5000222&4ef0a35c0569795756000000&4fb47a305ba1c60ca5000223&4e58c2570569791a19000000&4e4d610cdf714d2966000006&5109e05248d5b9368bb559dc","find_rule":"js:var s=getResCode();var json={};eval('json='+s);var res={};var d=[];for(var i=0;i<json.res.vertical.length;i++){var j=json.res.vertical[i]; var r={};r.pic_url=j.img;r.desc=j.desc;r.title=j.tag;r.url='pics://'+j.img;d.push(r);}res.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"title":"素材公社123","author":"","version":0,"url":"https://www.tooopen.com/img/fyAll_fypage.aspx","col_type":"pic_1_full","class_name":"风景&人物&动物&鲜花&美食&运动&中国","class_url":"87_0_1&88_0_1&89_0_1&856_0_1&97_0_1&95_0_1&92_0_1","area_name":"世界&静物&科技&生活&艺术","area_url":"93_0_1&91_0_1&94_0_1&90_0_1&98_0_1","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet p = eval(parseDom(getResCode(),'#data-more&&Html'));\nvar d = p.map(data=>({pic_url:data.imgthumb,url:data.url+'@lazyRule=#imgView&&img&&src'}));\nsetHomeResult({data:d});","searchFind":"body&&.pic;p&&Text;.pic&&href;;;img&&src","search_url":"https://www.tooopen.com/search/**.aspx?cate=0&type=0&sort=1&level=0&color=0&copyright=0&page=fypage","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"pic_1_full","sdetail_find_rule":"#imgView;;img&&src;;img&&src","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"兔子先生","author":"发粪涂墙","version":0,"url":"https://www.mrtuzi.cc/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.content-list&&.group');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], '.title&&Text'),\n     pic_url: parseDomForHtml(list[j], 'img&&src'),\n     url: parseDomForHtml(list[j],'a&&href')+ `@lazyRule=.js:var urls = (parseDomForArray(fetch(input,{}),'.pgs&&a')+'').match(/https?.*?(?=\\\">)/g);var array = [];for(u of urls){array.push({url:u})};array.unshift({url:input});var htmlArray = batchFetch(array);var urlss = [];for(h of htmlArray){urlss = urlss.concat(parseDomForHtml(h, '.center&&Html').match(/https:\\\\/\\\\/i.*?jpg/g))};'pics://'+urlss.join('&&')`\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"pic_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"酷图•R","author":"","version":0,"type":"picture","url":"hiker://empty&fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"#FA7298\">' + title + '</front></strong>';\n}\n//默认\n//var url = 'https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FfragmentTemplate%3Dflex&title=&subTitle=&page=' + MY_URL.split(\"&\")[1] + '&lastItem=';\nvar page = MY_URL.split(\"&\")[1];\nvar label = getVar(\"label\") ? getVar(\"label\") : \"热门\";\nif (page == 1) {\n    d.push({\n        title: label == \"热门\" ? getHead(\"热门\") : '热门',\n        url: \"hiker://empty@lazyRule=.js:putVar('label','热门');refreshPage(false);'toast://切换成功'\",\n        col_type: 'text_5'\n    });\n    d.push({\n        title: label == \"2k\" ? getHead(\"2k\") : '2k',\n        url: \"hiker://empty@lazyRule=.js:putVar('label','2k');refreshPage(false);'toast://切换成功'\",\n        col_type: 'text_5'\n    });\n    d.push({\n        title: label == \"全面屏\" ? getHead(\"全面屏\") : '全面屏',\n        url: \"hiker://empty@lazyRule=.js:putVar('label','全面屏');refreshPage(false);'toast://切换成功'\",\n        col_type: 'text_5'\n    });\n    d.push({\n        title: label == \"平板\" ? getHead(\"平板\") : '平板',\n        url: \"hiker://empty@lazyRule=.js:putVar('label','平板');refreshPage(false);'toast://切换成功'\",\n        col_type: 'text_5'\n    });\n    d.push({\n        title: label == \"最新\" ? getHead(\"最新\") : '最新',\n        url: \"hiker://empty@lazyRule=.js:putVar('label','最新');refreshPage(false);'toast://切换成功'\",\n        col_type: 'text_5'\n    });\n    d.push({\n        col_type: \"big_blank_block\"\n    });\n    d.push({\n        col_type: \"big_blank_block\"\n    });\n}\nif (label == \"热门\") {\n    var url = \"https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FlistType%3Dhot%26dataListType%3Dstaggered&title=%E7%83%AD%E9%97%A8&subTitle=&page=\" + page;\n} else if (label == \"2k\") {\n    var url = \"https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FlistType%3D2k%26dataListType%3Dstaggered&title=2K&subTitle=&page=\" + page;\n} else if (label == \"全面屏\") {\n    var url = \"https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FlistType%3DfullScreen%26dataListType%3Dstaggered&title=%E5%85%A8%E9%9D%A2%E5%B1%8F&subTitle=&page=\" + page;\n} else if (label == \"平板\") {\n    var url = \"https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FlistType%3Dpad%26dataListType%3Dstaggered&title=%E5%B9%B3%E6%9D%BF&subTitle=&page=\" + page;\n} else if (label == \"最新\") {\n    var url = \"https://api.coolapk.com/v6/page/dataList?url=%2Ffeed%2FcoolPictureList%3FlistType%3Dnewest%26dataListType%3Dstaggered&title=%E6%9C%80%E6%96%B0&subTitle=&page=\" + page;\n}\n\nvar code = JSON.parse(fetch(url, {\n    headers: {\n        \"X-App-Token\": getVar('X-App-Token'),\n        \"X-App-Id\": \"com.coolapk.market\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n    },\n    method: 'GET'\n}));\nfor (var x in code.data) {\n    var username = code.data[x].username;\n    var userAvatar = code.data[x].userAvatar + '@Referer=https://www.coolapk.com/';\n    var message = code.data[x].message;\n    var pic = code.data[x].pic + '@Referer=https://www.coolapk.com/';\n    var device = code.data[x].device_title;\n    var tags = code.data[x].tags;\n    var id = code.data[x].id;\n    d.push({\n        title: tags,\n        img: pic,\n        url: \"hiker://empty###https://api.coolapk.com/v6/feed/detail?id=\" + id + \"&rid=&noticeId=&fromApi=#immersiveTheme#\",\n        col_type: 'pic_2_card'\n    });\n}\nres.data = d;\nsetResult(res);","searchFind":"","search_url":"","group":"⑤图片","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar code = JSON.parse(fetch(MY_URL.split(\"###\")[1], {\n    headers: {\n        \"X-App-Token\": getVar('X-App-Token'),\n        \"X-App-Id\": \"com.coolapk.market\",\n        \"X-Requested-With\": \"XMLHttpRequest\"\n    },\n    method: 'GET'\n}));\nvar picArr = code.data.picArr;\nfor (let x of picArr) {\n    d.push({\n        img: x + '@Referer=https://www.coolapk.com/',\n        url: x + '@Referer=https://www.coolapk.com/',\n        col_type: \"pic_1_full\"\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"evalPrivateJS(\"i9VnV/E6r4lE9PhHdc6HPZiuRz+lJ7A8/OHSKWWGFZ7HvdSu9CnwORf2GdhRD1AXM8DBjfIzvPvyvYUQdTqlSdpZvgFJ7n9wHV86i2W+DddBfAPFxHjddX914ga2yZhvfRFjjJIwOg5m6WX6gaI+P/UlpaHYtiBhaSw/sW+FErR8dWNU7BF4JdLERL0NZhh4ULbR14JI+dM+6uddnXrn2wZ/+ijvGonKF5bS0gNQAGh8CrmWlpZQXeOVvjmfcJXalZ7NfCpRr7i/3WiPd+aobUJ4ujl9uFztGaHG5+y6KtvcE3jSK5zxcgyKHxkoGBlTjwcKAOMHQP0vbcKNc/SVmk7zoyFwcHqW/WsgwyzVlHaMRKdptDi3rONRkdBI19qMPor1d6mvKVCz6QGEhr+fs30kT/Rns8QiOT/qy/5fC7NCH2DafT8Wmmx8gUYbLmdxS2nMPwxx9sAla7CBRcUoNgW6dG9t5b4wSrGDzvDowS45ls8NvagP/p/sqrB6NZnxCo/gCrdQTaql0ttuqkrCysqjGedwdQNjFWT0gFzKzZpUDKz7HhyfeHZ9rBeybNXcUkPGBIj53wlq7+HQjtwJcWOrrXgwrk7buKVm+Q2/Cf5gvu+xeAk89DWn1IFJ6fxdHCWOLJkbXPbhdouJ2nMqMbSVj3I6u/U8j17SrPsuKOvOaaEqpUk/ghFVqwz62snsWE7L6rGlOURaRJoYRW8J2rgIgWXOMYQdV5zMzH+1eUfYZNcMRAXvHYSaCw4G8AvpSGv2DIJh6Whl+05DTasAu2UhUNJdM2GyuFL36fqtik721GV6C9pPFePFmxcoTkim\")","pages":"[]","icon":""},{"last_chapter_rule":"","title":"MM29","author":"路遥&子丑寅卯","version":2,"url":"https://www.mm29.com/fyAll/list_fypage.html[firstPage=https://www.mm29.com/fyAll]","col_type":"movie_3","class_name":"壁纸&写真&明星","class_url":"bizhi&xiezhen&mingxing","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.figure;img&&alt;img&&data-original;*;a&&href.js:$(input).lazyRule(()=>eval(JSON.parse(fetch(\"hiker://page/Picture?rule=\"+getVar('name'))).rule))","searchFind":"","search_url":"","group":"⑤图片","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"var firstPage = request(input);\\n\\nvar i = parseDomForHtml(firstPage, \\\".pagination&&li,-3&&Text\\\");\\nvar b = parseDomForHtml(firstPage, \\\".pagination&&li,-1&&Text\\\");\\n\\nfor(var j = 1; ; j++){\\n\\n\\tif(b.match(/\\\\d+/g) !=null){\\n\\tvar i=b;\\n    break;\\n}else{\\n\\n\\tvar page=request(input.replace('.html','_'+i+'.html'));\\n\\tvar b = parseDomForHtml(page, \\\".pagination&&li,-1&&Text\\\");\\n\\tvar i = parseDomForHtml(page, \\\".pagination&&li,-3&&Text\\\");\\n\\n}\\t\\n}\\n\\nvar map = (html, arr) => {\\n    parseDomForArray(html, \\\".picbox&&img\\\").map(item => {\\n        arr.push(parseDomForHtml(item, \\\"img&&src\\\"));\\n    });\\n}\\nvar htmlUrl = [];\\nfor (let p = 2; p <= i; p++) {\\n    htmlUrl.push({\\n        url: input.replace(\\\".html\\\", \\\"_\\\" + p + \\\".html\\\"), \\n    });\\n}\\nvar htmlArr = batchFetch(htmlUrl);\\n\\nvar picArr = [];\\nmap(firstPage, picArr);\\nhtmlArr.map(item =>map(item, picArr));\\n$.exports=\\\"pics://\\\" + picArr.join(\\\"&&\\\");\"}]","icon":"https://scpic3.chinaz.net/Files/pic/logo9/202102/d/wulogo24387.jpg"},{"last_chapter_rule":"","title":"优美","author":"子丑寅卯","version":2,"url":"https://m.umei.ccfyAllindex_fypage.htm[firstPage=https://m.umei.ccfyAll]","col_type":"movie_3","class_name":"国内&日韩&港台&欧美&秀人模特","class_url":"/p/gaoqing/cn/&/p/gaoqing/rihan/&/p/gaoqing/gangtai/&/p/gaoqing/oumei/&/p/gaoqing/xiuren_VIP/","area_name":"电脑壁纸&手机壁纸&动态壁纸&护眼壁纸&美女壁纸&小清新壁纸&唯美壁纸&风景壁纸&可爱壁纸&爆笑图片&恶搞图片&搞笑动态图片&QQ头像&男生头像&女生头像&欧美头像&卡通头像&闺蜜头像&可爱头像&小清新头像&情侣头像&非主流头像&性感美女&丝袜美女&美女写真&外国美女&内衣美女&街拍美女&美女自拍&人体艺术&美女模特&欧美图片&非主流图片&可爱图片&文字图片&爱情图片&意境图片&小清新图片&婚纱图片&女生发型&男生发型&明星发型&长发发型&短发发型&韩式发型&新娘发型&发型设计&动漫图片&卡通图片&卡通人物&动漫壁纸&动漫大全&风景图片&植物图片&动物图片&美食图片&帅哥图片&纹身图片&","area_url":"/bizhitupian/diannaobizhi/&/bizhitupian/shoujibizhi/&/bizhitupian/dongtaibizhi/&/bizhitupian/huyanbizhi/&/bizhitupian/meinvbizhi/&/bizhitupian/xiaoqingxinbizhi/&/bizhitupian/weimeibizhi/&/bizhitupian/fengjingbizhi/&/bizhitupian/keaibizhi/&/gaoxiaotupian/baoxiaotupian/&/gaoxiaotupian/nahantupian/&/gaoxiaotupian/gaoxiaodongtaitupian/&/touxiangtupian/QQtouxiang/&/touxiangtupian/nanshengtouxiang/&/touxiangtupian/nvshengtouxiang/&/touxiangtupian/oumeitouxiang/&/touxiangtupian/katongtouxiang/&/touxiangtupian/guimitouxiang/&/touxiangtupian/keaitouxiang/&/touxiangtupian/xiaoqingxintouxiang/&/touxiangtupian/qinglvtouxiang/&/touxiangtupian/feizhuliutouxiang/&/meinvtupian/xingganmeinv/&/meinvtupian/siwameinv/&/meinvtupian/meinvxiezhen/&/meinvtupian/waiguomeinv/&/meinvtupian/nayimeinv/&/meinvtupian/jiepaimeinv/&/meinvtupian/meinvzipai/&/meinvtupian/rentiyishu/&/meinvtupian/meinvmote/&/weimeitupian/oumeitupian/&/weimeitupian/feizhuliutupian/&/weimeitupian/keaitupian/&/weimeitupian/wenzitupian/&/weimeitupian/aiqingtupian/&/weimeitupian/yijingtupian/&/weimeitupian/xiaoqingxintupian/&/weimeitupian/hunshatupian/&/faxingtupian/nvshengfaxing/&/faxingtupian/nanshengfaxing/&/faxingtupian/mingxingfaxing/&/faxingtupian/changfafaxing/&/faxingtupian/duanfafaxing/&/faxingtupian/hanshifaxing/&/faxingtupian/xinniangfaxing/&/faxingtupian/faxingsheji/&/katongdongman/dongmantupian/&/katongdongman/katongtupian/&/katongdongman/katongrenwu/&/katongdongman/dongmanbizhi/&/katongdongman/dongmandaquan/&/tupiandaquan/fengjingtupian/&/tupiandaquan/zhiwutupian/&/tupiandaquan/dongwutupian/&/tupiandaquan/meishitupian/&/tupiandaquan/shuaigetupian/&/tupiandaquan/wenshentupian/&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\n\r\nvar list = parseDomForArray(getResCode(), '.pic-list&&li');\ntry{\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'img&&alt'),           \r\npic_url: parseDomForHtml(list[j], 'img&&data-original'),       \r\nurl: $(parseDom(list[j],'a&&href')).lazyRule(()=>eval(JSON.parse(fetch(\"hiker://page/Picture?rule=\"+getVar('name'))).rule))\n});\n}\n}catch(e){\n}\n\r\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"var firstPage = request(input);\\ntry{\\nvar i = parseDomForHtml(firstPage, \\\".pages&&li&&Text\\\").split('/')[1];\\n}catch(e){var i=2}\\nvar map = (html, arr) => {\\n    parseDomForArray(html, \\\"body&&#ArticleBox\\\").map(item => {\\n        arr.push(parseDomForHtml(item, \\\"img&&src\\\"));\\n    });\\n}\\nvar htmlUrl = [];\\nfor (let p = 2; p <= i; p++) {\\n    htmlUrl.push({\\n        url: input.replace(\\\".htm\\\", \\\"_\\\" + p + \\\".htm\\\"), \\n    });\\n}\\nvar htmlArr = batchFetch(htmlUrl);\\n\\nvar picArr = [];\\nmap(firstPage, picArr);\\nhtmlArr.map(item =>map(item, picArr));\\ntry{\\n$.exports=\\\"pics://\\\" + picArr.join(\\\"&&\\\");\\n}catch(e){$.exports=\\\"pics://\\\" + picArr}\"}]","icon":"http://kr.shanghai-jiuxin.com/file/mm/20210503/jp1dmzj4cvy.jpg"},{"last_chapter_rule":"","title":"头像大全解析版","author":"巫婆花卷","version":2,"url":"http://m.crcz.com/touxiang/fyAll/list_fypage.html[firstPage=http://m.crcz.com/touxiang/fyAll]","col_type":"movie_3","class_name":"男&帅哥&帅气&霸气超拽&高冷&成熟&部位&高清&快手&抖音&丧&小清新&伤感&颓废&背影&潮流&冷酷&黑白&萌男&可爱&阳光","class_url":"nan&nan/shuaige&nan/shuaiqi&nan/baqi&nan/gaoleng&nan/chengshu&nan/buwei&nan/gaoqing&nan/ks&nan/douyin&nan/sang&nan/xiaoqingxin&nan/shanggan&nan/tuifei&nan/beiying&nan/chaoliu&nan/lengku&nan/heibai&nan/mengnan&nan/keai&nan/yangguang","area_name":"女&闺蜜&霸气&可爱&背影&高冷&小清新&高清&唯美&气质&伤感&仙女&黑白&森系&超拽&颓废&古风&欧美&小女孩&部位&快手","area_url":"nv&nv/guimi&nv/baqi&nv/keai&nv/beiying&nv/gaoleng&nv/xiaoqingxin&nv/gaoqing&nv/weimei&nv/qizhi&nv/shanggan&nv/xiannv&nv/heibai&nv/senxi&nv/chaozhuai&nv/tuifei&nv/gufeng&nv/oumei&nv/xiaonvhai&nv/buwei&nv/kuaishou","sort_name":"动漫&情侣&一左一右&女生&美女&姐妹&男生&帅气&可爱&呆萌&冷酷&手绘&简笔画&黑白&二次元&素描&漫画&古风&唯美&快手&卡哇伊","year_name":"情侣&快手&抖音&黑白&可爱&欧美&霸气&高清&背影&唯美&小清新&浪漫&接吻&搞怪&创意&污&小孩子&一人一半&一男一女&双人&一左一右","sort_url":"dongman&dongman/qinglv&dongman/yizuoyiyou&dongman/nvsheng&dongman/meinv&dongman/jiemei&dongman/nansheng&dongman/shuaige&dongman/keai&dongman/daimeng&dongman/ku&dongman/shouhui&dongman/jianbihua&dongman/heibai&dongman/erciyuan&dongman/sumiao&dongman/manhua&dongman/gufeng&dongman/weimei&dongman/kuaishou&dongman/kawayi","year_url":"qinglv&qinglv/kuaishou&qinglv/douyin&qinglv/heibai&qinglv/keai&qinglv/oumei&qinglv/baqi&qinglv/gaoqing&qinglv/beiying&qinglv/weimei&qinglv/xiaoqingxin&qinglv/langman&qinglv/jiewen&qinglv/gaoguai&qinglv/chuangyi&qinglv/wu&qinglv/xiaohaizi&qinglv/yirenyiban&qinglv/yinanyinv&qinglv/shuangren&qinglv/yizuoyiyou","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\n//定位\nvar list = parseDomForArray(getResCode(), '.list&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\n//标题\ntitle: parseDomForHtml(list[j], 'a&&title'),       \r\n//描述\ndesc: parseDomForHtml(list[j], 'p&&Text'),       \r\n//图片地址\npic_url: parseDom(list[j], 'img&&src'),       \r\n//链接\n//阅后即焚+\"#noRecordHistory#\"\n//针对图片需要翻页.replace('.html','_fypage.html')\nurl: parseDom(list[j],'a&&href')+`@lazyRule=.js:var url =parseDom(fetch(input,{}),'.content&&Html').match(/http?.*jpg/g);'pics://'+url.join('&&')`\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤图片","detail_col_type":"pic_1_full","detail_find_rule":".content&&img;;img&&src;;img&&src","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://m.crcz.com/favicon.ico"},{"last_chapter_rule":"","title":"头像大全","author":"巫婆花卷","version":2,"url":"http://m.crcz.com/touxiang/fyAll/list_fypage.html[firstPage=http://m.crcz.com/touxiang/fyAll]","col_type":"movie_3","class_name":"男&帅哥&帅气&霸气超拽&高冷&成熟&部位&高清&快手&抖音&丧&小清新&伤感&颓废&背影&潮流&冷酷&黑白&萌男&可爱&阳光","class_url":"nan&nan/shuaige&nan/shuaiqi&nan/baqi&nan/gaoleng&nan/chengshu&nan/buwei&nan/gaoqing&nan/ks&nan/douyin&nan/sang&nan/xiaoqingxin&nan/shanggan&nan/tuifei&nan/beiying&nan/chaoliu&nan/lengku&nan/heibai&nan/mengnan&nan/keai&nan/yangguang","area_name":"女&闺蜜&霸气&可爱&背影&高冷&小清新&高清&唯美&气质&伤感&仙女&黑白&森系&超拽&颓废&古风&欧美&小女孩&部位&快手","area_url":"nv&nv/guimi&nv/baqi&nv/keai&nv/beiying&nv/gaoleng&nv/xiaoqingxin&nv/gaoqing&nv/weimei&nv/qizhi&nv/shanggan&nv/xiannv&nv/heibai&nv/senxi&nv/chaozhuai&nv/tuifei&nv/gufeng&nv/oumei&nv/xiaonvhai&nv/buwei&nv/kuaishou","sort_name":"动漫&情侣&一左一右&女生&美女&姐妹&男生&帅气&可爱&呆萌&冷酷&手绘&简笔画&黑白&二次元&素描&漫画&古风&唯美&快手&卡哇伊","year_name":"情侣&快手&抖音&黑白&可爱&欧美&霸气&高清&背影&唯美&小清新&浪漫&接吻&搞怪&创意&污&小孩子&一人一半&一男一女&双人&一左一右","sort_url":"dongman&dongman/qinglv&dongman/yizuoyiyou&dongman/nvsheng&dongman/meinv&dongman/jiemei&dongman/nansheng&dongman/shuaige&dongman/keai&dongman/daimeng&dongman/ku&dongman/shouhui&dongman/jianbihua&dongman/heibai&dongman/erciyuan&dongman/sumiao&dongman/manhua&dongman/gufeng&dongman/weimei&dongman/kuaishou&dongman/kawayi","year_url":"qinglv&qinglv/kuaishou&qinglv/douyin&qinglv/heibai&qinglv/keai&qinglv/oumei&qinglv/baqi&qinglv/gaoqing&qinglv/beiying&qinglv/weimei&qinglv/xiaoqingxin&qinglv/langman&qinglv/jiewen&qinglv/gaoguai&qinglv/chuangyi&qinglv/wu&qinglv/xiaohaizi&qinglv/yirenyiban&qinglv/yinanyinv&qinglv/shuangren&qinglv/yizuoyiyou","find_rule":".list&&li;a&&title;img&&src;p&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑤图片","detail_col_type":"pic_1_full","detail_find_rule":".content&&img;;img&&src;;img&&src","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://m.crcz.com/favicon.ico"},{"last_chapter_rule":"","title":"军情观察·Q","author":"发粪涂墙","version":0,"type":"other","url":"http://w.junqingguanchashi.net/fyAll_fypage.html","col_type":"text_1","class_name":"军情观察室&一虎一席谈&军情直播间","class_url":"zuixinyiqi/zuixin&yihuyixitan/list_18&junqingzhibojian/list_16","area_name":"凤凰军情&军情解码&锵锵三人行","area_url":"fenghuangweishi/fhws&jiemazuixin&qiangqiangsanrenxing/list_17","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = pd(getResCode(), 'ul,1&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\nfor (var j = 0; j < list.length; j++) {\n    if (list[j].indexOf('激情小说') == -1) {\n        var url = pd(list[j], 'a&&href');\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], 'span&&Text'),\n            url: /feng|xing/.test(url) ? url:url + $('').lazyRule(() => {\n                var fc = request(input)\n\n                return /mip-video/.test(fc) ? pdfh(fc, 'mip-video&&src') : JSON.parse(fetch('http://www.zruiry.com/json.php?url=' + pdfh(fc, 'mip-iframe&&src').split('url=')[1])).url\n            }),\n        });\n    }\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d = [];\nvar html = getResCode();\nd.push({\n    title:parseDomForHtml(html, 'article--font&&Html').replace(/<h1/g, '<big').replace(/h1>/g, 'big><br><br>').replace(/<h2/g, '<strong><big').replace(/h2>/g, 'big></strong><br><br>'),\n    col_type:'rich_text'\n});\nres.data= d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://www.81.cn/favicon.ico"},{"title":"漫画淘Ⓜ︎","author":"墨非白","version":2,"url":"https://www.manhuatao.com","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//api为网络收集，请勿恶意访问\nlet res = {};\nlet d = [];\nd.push({\n  title:\"漫画淘\",\n  pic_url:\"http://www.dmoe.cc/random.php\",\n  url:\"hiker://home@漫画淘👣\",\n  col_type:\"pic_1_card\"\n},{\n  title:\"漫画淘\",\n  url:\"hiker://search\",\n  col_type:\"icon_1_search\",\n  pic_url:\"hiker://images/search\"\n});\n\nlet rescode = fetch(\"https://www.manhuatao.com/\",{});\nlet list = parseDomForArray(rescode,\".topTheme_nav_inl&&li\");\nlist.shift();\nlist.splice(6,1);\nlet col_type;\nfor(let k=0;k<10;k++){\n  d.push({\n\tcol_type:\"big_blank_block\"\n  })\n}\nfor(let i=0;i<list.length;i++){\n  if(i>5){\n\tcol_type = \"text_center_1\"\n  }else{\n\tcol_type = \"text_2\"\n  }\n \n  d.push({\n\ttitle:parseDomForHtml(list[i],\"a&&Text\"),\n\turl:\"hiker://empty#\"+parseDom(list[i],\"a&&href\")+\"manhuatao_status/fypage/\",\n\tcol_type:col_type\n  })\n\n}\nres.data = d;\nsetResult(res);","searchFind":"js:\nlet res = {};\nlet d = [];\nlet rescode = getResCode();\nif(MY_URL.indexOf(\"1&_t=0\")!=-1){\nd.push({\n  title:parseDomForHtml(rescode,\".comi_num&&Text\"),\n  url:'hiker://empty@lazyRule=.js:\"toast://别点了别点了\"',\n});\n}\nlet viewlist = parseDomForArray(rescode,\".list_con_li&&li\");\nfor(let i=0;i<viewlist.length;i++){\n  d.push({\n\ttitle:parseDomForHtml(viewlist[i],\"p,0&&Text\"),\n\tpic_url:parseDomForHtml(viewlist[i],\"img&&src\")+\"@Referer=https://www.manhuatao.com/\",\n\tdesc:parseDomForHtml(viewlist[i],\"p,2&&Text\"),\n\turl:parseDomForHtml(viewlist[i],\"a,0&&href\"),\n  })\n}\nres.data = d;\nsetResult(res);","search_url":"https://www.manhuatao.com/search/?keywords=**&page=fypage&_t=0","titleColor":"#e5d345","group":"⑤漫画(ФωФ)","detail_col_type":"movie_1","detail_find_rule":"js:\nlet res = {};\nlet d = [];\nlet titledict = {\"发布\":\"post\",\"更新\":\"update\",\"点击\":\"click\"};\nif(MY_URL.indexOf(\"manhuatao_status/1\")!=-1&&MY_URL.indexOf(\"update\") == -1){\n  for(let key in titledict){\n    d.push({\n\t   title:\"‘‘按\"+key+\"排序’’\",\n      url:'hiker://empty#'+titledict[key]+'@lazyRule=.js:let value = input.split(\"#\")[1];putVar(\"manhuatao_status\",value);refreshPage();\"toast://切换成功\"',\n     col_type:\"text_center_1\"\n    })\n  }\n}\nlet url;\nif(MY_URL.indexOf(\"update\") == -1){\n url = MY_URL.split(\"#\")[1].replace(\"manhuatao_status\",getVar(\"manhuatao_status\",\"post\"));\n}else{\n  url = MY_URL.split(\"#\")[1].replace(\"manhuatao_status/\",\"\");\n}\nlet rescode = fetch(url,{});\nlet viewlist = parseDomForArray(rescode,\".list_con_li&&li\");\nfor(let i=0;i<viewlist.length;i++){\n  d.push({\n\ttitle:parseDomForHtml(viewlist[i],\"h3&&Text\"),\n\tpic_url:parseDomForHtml(viewlist[i],\"img&&src\")+\"@Referer=https://www.manhuatao.com/\",\n\tdesc:parseDomForHtml(viewlist[i],\"p,3&&Text\"),\n\turl:parseDomForHtml(viewlist[i],\"h3&&a&&href\")+'@rule=js:var jsonfile = \"hiker://files/manhua/manhuatao.js\";var picfun = fetch(jsonfile);if(!picfun){picfun =fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuatao.js\",{});writeFile(jsonfile,picfun);}eval(picfun);',\n\tcol_type:\"movie_3\"\n  })\n}\nres.data = d;\nsetResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"var jsonfile = \"hiker://files/manhua/manhuatao.js\";\nvar picfun = fetch(jsonfile);\nif(!picfun){\n  picfun =fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuatao.js\",{});\t\n  writeFile(jsonfile,picfun);\n }\neval(picfun);","ua":"pc","preRule":"","icon":"#e5d345"},{"title":"漫画猫Ⓜ︎","author":"墨非白","version":2,"url":"hiker://js#墨非白","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet res = {};\nlet d = [];\nd.push({\n  title:\"漫画猫\",\n  pic_url:\"http://pic1.win4000.com/wallpaper/5/5826d623a9f9c.jpg\",\n  url:\"hiker://home@漫画猫🐱\",\n  col_type:\"pic_1_card\"\n},{\n  title:\"漫画猫\",\n  url:\"hiker://search\",\n  col_type:\"icon_1_search\",\n  pic_url:\"hiker://images/search\"\n});\n\nlet rescode = fetch(\"https://www.manhuacat.com/list.html\",{});\nlet list1 = parseDomForArray(rescode,\".navbar-nav&&.nav-item\");\nlist1.pop();\nlet list2 = parseDomForArray(rescode,\".dropdown-menu&&.dropdown-item\");\nlet list = list1.concat(list2);\nlet col_type;\nfor(let i=0;i<list.length-1;i++){\n  if(i<2){\n\tcol_type = \"text_2\"\n  }else{\n\tcol_type = \"text_4\"\n  }\n  d.push({\n\ttitle:parseDomForHtml(list[i],\"a&&Text\"),\n\turl:parseDomForHtml(list[i],\"a&&href\").replace(\".html\",\"-page-fypage.html\"),\n\tcol_type:col_type\n  })\n\n}\nres.data = d;\nsetResult(res);","searchFind":"js:\nlet res = {};\nlet d = [];\nlet rescode = getResCode();\nif(MY_URL.indexOf(\"page=1\")!=-1){\nd.push({\n  title:parseDomForHtml(rescode,\".text-muted&&Text\"),\n   url:'hiker://empty@lazyRule=.js:\"toast://别点了别点了\"',\n});\n}\nlet viewlist = parseDomForArray(rescode,\".row,2&&.col-4\");\nfor(let i=0;i<viewlist.length;i++){\n  d.push({\n\ttitle:parseDomForHtml(viewlist[i],\"h2&&Text\"),\n\tdesc:parseDomForHtml(viewlist[i],\".comic-author&&Text\"),\n\tpic_url:parseDomForHtml(viewlist[i],\"img&&data-original\"),\n\turl:parseDomForHtml(viewlist[i],\"h2&&a&&href\"),\n\tcol_type:\"movie_2\"\n  })\n}\nres.data = d;\nsetResult(res);","search_url":"https://www.manhuacat.com/search.html?q=**&page=fypage&_t=0","titleColor":"#3256ee","group":"⑤漫画(ФωФ)","detail_col_type":"movie_1","detail_find_rule":"js:\nlet res = {};\nlet d = [];\nlet viewlist;\nlet rescode = getResCode();\nif(MY_URL.indexOf(\"update\")!=-1){\n   viewlist = parseDomForArray(rescode,\".comic-main-section&&.row&&.col-3\");\n  for(let i=0;i<viewlist.length;i++){\n    d.push({\n\t    title:parseDomForHtml(viewlist[i],\"h2&&Text\"),\n\t    desc:parseDomForHtml(viewlist[i],\"a,0&&Text\"),\n\t    pic_url:parseDomForHtml(viewlist[i],\"img&&src\"),\n\t    url:parseDomForHtml(viewlist[i],\"h2&&a&&href\")+'@rule=js:let detail=fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuamao.js\",{});eval(detail);',\n\t    col_type:\"movie_2\"\n     })\n  }\n}else{\nviewlist = parseDomForArray(rescode,\".comic-main-section&&.media\");\nfor(let i=0;i<viewlist.length;i++){\n  d.push({\n\ttitle:parseDomForHtml(viewlist[i],\"h2&&Text\"),\n\tdesc:parseDomForHtml(viewlist[i],\".comic-categories&&Text\"),\n\tpic_url:parseDomForHtml(viewlist[i],\"img&&data-original\"),\n\turl:parseDomForHtml(viewlist[i],\"h2&&a&&href\")+'@rule=js:var jsonfile = \"hiker://files/manhua/manhuamao.js\";var picfun = fetch(jsonfile);if(!picfun){picfun =fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuamao.js\",{});writeFile(jsonfile,picfun);}eval(picfun);',\n\tcol_type:\"movie_2\"\n  })\n}\n}\nres.data = d;\nsetResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar jsonfile = \"hiker://files/manhua/manhuamao.js\";\nvar picfun = fetch(jsonfile);if(!picfun){\n  picfun =fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuamao.js\",{});\n  writeFile(jsonfile,picfun);\n}\neval(picfun);","ua":"mobile","preRule":"","icon":"#3256ee"},{"title":"动漫之家Ⓜ︎","author":"墨非白","version":0,"url":"hiker://js#墨非白","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n['sojson.v4'][\"\\x66\\x69\\x6c\\x74\\x65\\x72\"][\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"](((['sojson.v4']+[])[\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"]['\\x66\\x72\\x6f\\x6d\\x43\\x68\\x61\\x72\\x43\\x6f\\x64\\x65']['\\x61\\x70\\x70\\x6c\\x79'](null,\"106W115Z58r10s108b101E116Q32F114B101B115l32E61a32B123r125e59S10T108P101y116w32y100a32r61m32H91n93Q59L10W108W101w116Y32o116X121s112U101a117h114N108z32x61a32b34A104J116t116b112W58X47k47e110k110G118Z51Y97A112W105v46r100K109V122u106D49K46J99o111e109P47i48O47L99M97R116C101H103t111p114F121w46I106k115Y111T110n63f97A112h112O95h99e104L97F110V110A101A108W61b49T48A49L95w48r49i95Q48h49L95M48l48e48X38z116C105b109j101C115O116V97b109O112j61P34x43h77R97F116C104G46Z114W111I117V110C100Z40q110G101a119m32K68o97O116p101X40x41Z32p47b32R49o48i48t48s41f59R10S108M101T116f32x114L101s115C99B111B100i101o32C61n32F74H83Q79D78K46J112X97v114h115O101M40g102V101s116M99s104t40n116c121A112T101P117n114W108P44G123s125m41j41J59g10A102z111N114Z40t108v101R116j32f105U61O48h59z105a60K114X101b115C99u111e100R101v46w108a101W110k103s116h104F59V105A43n43l41T123e10k32p32T100F46z112G117z115e104D40f123k10X9a116j105R116I108u101R58c114m101l115c99A111y100G101a91Q105s93f46v116L105m116y108z101R44W10e9m112r105g99j95n117y114d108I58F114M101g115Y99f111o100j101T91Y105B93n46W99o111Z118G101C114o43r34r64q82c101z102z101D114u101h114P61q104q116e116n112u58w47S47F110Y110l118I51p97d112m105M46n100E109r122H106m49L46A99e111m109R47x34m44N10H9d117f114F108M58Z34f104G105k107c101A114l58g47Q47Q101z109A112X116w121d35u104Z116m116H112L58b47j47x110R110C118V51P97G112i105s46C100M109k122B106D49x46q99S111n109U47x99Q108c97m115E115K105y102b121n47x34L43I114a101W115H99f111s100N101k91d105u93d46I116I97g103R95V105c100Q43u34F47f110D101M119Q111z114V104J111C116w47n102F121Z112w97N103e101c64k45k49U64s42A49B64D46J106w115y111C110U63X97A112M112I95Z99x104s97b110J110D101p108q61f49f48m49M95U48p49w95z48v49p95Y48O48m48k38C116q105Q109a101s115f116I97z109R112P61Z34D43P77s97l116W104l46X114s111k117b110w100O40l110h101i119z32i68c97r116v101t40O41Z32R47j32u49E48h48y48a41B44z10r9I99m111Y108f95T116c121q112j101e58Q34o105y99l111k110f95F114p111y117G110B100w95Z52w34A10v32F32j125q41i10f125Q10C114N101y115M46x100G97B116U97p32v61h32b100E59G10S115O101S116w72K111q109B101K82K101z115C117s108A116l40E114Q101J115V41P59\"['\\x73\\x70\\x6c\\x69\\x74'](/[a-zA-Z]{1,}/))))('sojson.v4');","searchFind":"js:\n['sojson.v4'][\"\\x66\\x69\\x6c\\x74\\x65\\x72\"][\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"](((['sojson.v4']+[])[\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"]['\\x66\\x72\\x6f\\x6d\\x43\\x68\\x61\\x72\\x43\\x6f\\x64\\x65']['\\x61\\x70\\x70\\x6c\\x79'](null,\"106d115s58R10L108v101i116h32h100H32P61P32R91e93A59B10b108i101X116I32v114D101N115K32w61e32T123q125C59K10C108T101J116F32i106M115Z111Q110Q32f61K32m74Q83a79C78X46v112E97J114w115G101V40s103b101n116J82h101p115E67z111R100j101r40w41s41h59K10o102l111R114o40y108g101B116Q32V105r32g61N32m48N59A105v60n106b115E111u110s46C108M101l110K103E116D104F59f105S43o43p41W123t10c32u32S100X46E112h117k115v104K40q123m10G32z32A116Y105R116Z108H101R58W106S115Q111Y110N91l105o93a46j116m105a116G108s101q44f10Z32E32F100K101C115O99k58Y106E115t111E110J91l105j93p46H108U97d115C116d95W110p97X109s101f44U10J9r112C105a99z95W117g114A108b58z106C115P111r110a91r105y93A46Z99h111l118n101l114U43b34p64o82l101x102P101F114x101Z114f61O104R116L116L112K58M47W47S110C110H118o51s97Q112l105O46T100k109w122E106Z49Q46E99P111B109W47b34m44o10e32F32N32l9o117U114C108c58f34V104A116Y116M112g58V47o47S110y110e118k51H97n112c105V46U100q109E122V106I49j46G99r111y109w47o99x111e109h105x99Q47l99R111X109h105m99y95v34w43A106R115C111e110M91C105f93J46z105k100e43d34Q46P106K115O111F110O63e97w112k112P95k99W104J97w110l110E101m108Z61P49B48d49X95V48w49g95h48J49b95G48h48w48D38c116j105C109c101I115f116X97a109V112F61J34q43D77z97I116Z104y46t114L111T117w110I100z40l110w101p119h32k68K97j116B101w40d41k32F47a32I49J48o48d48g41t44v10W32o32I125r41z10o125U10x114m101o115M46f100q97U116I97Q32l61R32l100d59B10u115y101Z116m72n111I109w101W82w101V115z117h108H116P40G114j101y115V41G59\"['\\x73\\x70\\x6c\\x69\\x74'](/[a-zA-Z]{1,}/))))('sojson.v4');","search_url":"http://nnv3api.dmzj1.com/search/show/0/**/0.json?app_channel=101_01_01_000&channel=Android&_debug=0&version=2.7.038","titleColor":"#FFC107","group":"⑤漫画(ФωФ)","detail_col_type":"movie_1","detail_find_rule":"js:\n['sojson.v4'][\"\\x66\\x69\\x6c\\x74\\x65\\x72\"][\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"](((['sojson.v4']+[])[\"\\x63\\x6f\\x6e\\x73\\x74\\x72\\x75\\x63\\x74\\x6f\\x72\"]['\\x66\\x72\\x6f\\x6d\\x43\\x68\\x61\\x72\\x43\\x6f\\x64\\x65']['\\x61\\x70\\x70\\x6c\\x79'](null,\"106T115E58t10b102l117z110C99n116w105N111W110e32p116r105W109F101g115c116N97X109z112b84y111Q84C105a109B101B40z116o105x109t101v115N116m97F109H112I41m32u123K10P160r32w108M101m116S32z100U97e116Q101C32v61l32D110S101l119u32v68b97f116V101n40r116r105q109t101b115i116r97L109E112W32c42n32e49J48d48y48E41Z59x10T160W32b108l101E116V32l89R32e61R32O100J97v116F101H46S103k101i116z70A117a108Y108z89W101G97b114n40G41b32t43f32N39A45K39I59n10a160x32D108g101t116x32p77p32w61B32m40I100u97O116Y101N46f103K101Y116N77o111R110q116c104j40U41S43T49B32m60C32p49r48q32u63W32x39k48r39o43U40I100T97u116l101S46V103q101p116L77o111K110v116e104Q40D41k43c49f41b32d58l32K100e97h116a101v46p103f101f116j77x111z110L116L104B40P41x43I49e41B32t43r32O39L45k39C59d10f160V32r108O101T116y32T68g32q61D32n100B97D116t101g46d103v101q116d68f97j116q101G40Z41h32U43N32J39z32v39i59v10z32s32w114u101r116h117e114X110D32k40e89h43Y77F43F68n41c59f10F125A10E108f101z116d32b100a32g61g32B91p93F59t10t108Y101L116Y32q114F101E115e32E61I32O123i125d59g10o105k102Z40L77v89s95I85j82e76U46H105C110i100q101j120i79R102L40B34S48j46j106Y115p111P110Q34K41F33G61k45H49Q41M123u10x32l100j46J112F117Y115y104s40n123k10p32i32A32e32f116o105t116F108D101P58i39o8216T8216x8217V8217y60I115H116M114K111h110i103M62T60Q102q111f110A116I32A99e111L108W111R114q61a34E35Q52B99h56k100J97j101U34p62H20999x25442e65306M39L43v103B101x116u86D97f114i40T34y72s111g116c79I114q78e101w119Z49j34A44z34j26368U28909b34y41B43f34s60u47T102b111c110J116X62v60V47P115E116L114R111W110N103U62H34Y44b10u32O32E32Z32V117e114Q108c58Q39H104l105u107W101b114x58D47A47l101n109v112t116r121k64N108J97u122z121r82G117g108L101z61j46Y106O115f58Y112B117c116c86S97U114B40p34U72R111F116r79u114G78F101p119v49c34R44W103J101j116H86R97Y114c40O34Z72X111y116z79X114X78u101S119Y49l34g44f34d26368k28909A34o41f32i61c61R32s34k26368F28909W34v63Y34U26368k26032S34P58L34W26368c28909S34A41S59x114l101f102D114O101w115R104U80y97A103u101l40C41h59t34P116a111i97i115T116Q58Z47k47z20999a25442L25104b21151d34S39r44V10L32Z32A32Y32m99s111j108l95h116J121y112m101V58O34y116Z101w120c116j95D99x101A110h116i101z114C95E49W34F10X125J41b59i10C125m10Q108Y101N116f32e99P111u109U105v99V117h114P108e59t10P105j102C40c103s101n116e86L97d114G40K34e72x111A116g79e114I78O101b119m49o34C44G34V26368K28909U34S41W32Q61o61s32N34s26368g28909M34N41H123b10L32s32z32d99z111t109F105S99K117w114p108q32P61T32g77p89w95s85U82L76u46o115Z112n108Q105o116A40P34A35S34r41w91Z49e93l46X114n101W112T108r97A99x101J40F34d110d101u119g111r114A104K111q116n34C44t34t48z34m41s10n125W101i108o115Q101w123j10M32o32T99Y111s109a105a99Q117R114w108N32s61D32i77V89a95J85u82l76S46H115I112v108L105Y116d40q34g35B34Q41D91u49F93J46Y114k101P112U108G97u99m101J40S34g110H101H119F111I114Q104M111W116I34j44L34l49L34r41X10s125B10h108y101V116r32r106h115Q111x110G32r61V32o74b83M79h78z46T112M97v114C115r101D40H102h101z116K99o104n40r99z111w109n105p99B117Q114V108V44I123p125I41g41U59c10O102j111T114Y40W108b101H116T32n105m32m61F32t48I59Z105c60o106L115l111Q110c46e108f101C110z103l116F104G59Q105A43I43N41T123S10Y32q32F118A97U114q32v117O112m116s105m109O101e32A61E32P116p105r109u101D115Z116Q97C109O112j84M111F84X105D109s101O40A106O115R111I110q91E105L93g46m108X97F115b116K95t117k112H100f97o116z101g116w105z109E101m41s59X10I32e32V100Z46B112v117r115k104X40i123F10B32D32M116s105L116D108c101M58C106R115P111g110v91n105Z93l46v116w105j116W108R101i44L10g32z32B100c101i115u99H58U117b112D116u105E109o101D44p10h9I112n105g99W95Z117V114Y108h58t106z115b111L110k91w105M93P46S99x111b118C101E114p43q34D64i82F101W102S101h114T101g114l61X104D116e116m112K58d47O47O110I110o118I51D97d112c105h46q100b109P122G106Y49g46j99F111x109o47D34a44d10L32O32P32Q9z117k114j108Q58s34R104p116x116W112K58H47q47h110x110q118Y51B97N112t105o46w100d109p122f106h49K46h99b111H109r47Y99D111N109k105n99j47R99A111N109m105z99v95n34X43t106E115m111H110Q91D105k93a46U105M100v43U34z46o106i115s111d110j63I97y112R112u95L99Z104g97m110Z110B101L108L61U49Z48J49B95u48k49E95A48w49g95u48m48k48E38o116D105D109b101P115H116H97D109t112F61M34B43M77b97X116t104Q46q114e111F117f110T100Y40q110g101t119W32t68p97z116z101A40Z41Y32i47I32h49k48G48X48t41D43i39P64z114I117e108n101l61g106h115W58R118u97K114x32J106V115p111e110K102j105z108B101P32s61s32j34K104q105m107t101H114w58F47n47H102Q105B108c101Y115q47n109D97H110t104B117y97e47x100Q111s110G103Q109S97g110R122B104Q105c106w105S97W46e106E115r34U59t118I97o114w32h112b105s99N102k117p110z32P61c32M102F101g116D99t104P40P106I115A111v110d102Y105B108T101z41T59B105F102K40f33l112L105W99N102Y117L110x41t123L112L105U99e102j117o110A32r61Q32k102H101a116N99Q104T40O34i104c116n116z112s115S58l47z47i103N105E116n101G101t46p99C111r109B47B109l111d102I101V105A98W97U105G47N104y105J107N101H114Q95D105s110H102L111K47d114f97F119d47d109e97r115S116G101j114t47o109E97S110j104u117F97s116m97y105k47N100n111S110T103W109S97v110P122P104Q105s106g105V97i46J106Q115t34R44x123r125y41E59j119o114c105L116P101i70T105p108o101G40U106r115o111D110V102m105u108u101s44I112c105o99M102z117L110E41W59T125g101b118z97J108x40U112u105V99h102g117A110r41X59M39N44b10D9v9h99b111a108t95Q116u121L112W101c58N34m109f111N118g105K101x95a51t34d10i9K125M41b10b125y10D114E101G115O46d100B97q116w97w32W61H32g100R59s10t115Q101x116v72Z111m109K101V82B101N115l117m108Q116R40E114a101v115a41K59\"['\\x73\\x70\\x6c\\x69\\x74'](/[a-zA-Z]{1,}/))))('sojson.v4');","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar jsonfile = \"hiker://files/manhua/dongmanzhijia.js\";\nvar picfun = fetch(jsonfile);if(!picfun){\n  picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/dongmanzhijia.js\",{});\n  writeFile(jsonfile,picfun);\n}\neval(picfun);","ua":"mobile","preRule":"","icon":"#FFC107"},{"title":"漫画台Ⓜ︎","author":"墨非白","version":1,"url":"http://comic.321mh.com/v1/comic/getcomicsortandroid?platformname=android&productname=mht","col_type":"icon_round_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:let res={};let d=[];let json=JSON['\\x70\\x61\\x72\\x73\\x65'](fetch(MY_URL,{}));for(let i=0;i<json['\\x64\\x61\\x74\\x61']['\\x6c\\x65\\x6e\\x67\\x74\\x68'];i++){let urlid=json['\\x64\\x61\\x74\\x61'][i]['\\x75\\x72\\x6c\\x69\\x64'];d['\\x70\\x75\\x73\\x68']({pic_url:json['\\x64\\x61\\x74\\x61'][i]['\\x63\\x6f\\x76\\x65\\x72'],title:json['\\x64\\x61\\x74\\x61'][i]['\\x6e\\x61\\x6d\\x65'],url:\"\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x67\\x65\\x74\\x63\\x6f\\x6e\\x66\\x69\\x67\\x2d\\x67\\x6c\\x6f\\x62\\x61\\x6c\\x61\\x70\\x69\\x2e\\x79\\x79\\x68\\x61\\x6f\\x2e\\x63\\x6f\\x6d\\x2f\\x61\\x70\\x70\\x5f\\x61\\x70\\x69\\x2f\\x76\\x35\\x2f\\x67\\x65\\x74\\x73\\x6f\\x72\\x74\\x6c\\x69\\x73\\x74\\x2f\\x3f\\x70\\x61\\x67\\x65\\x3d\\x66\\x79\\x70\\x61\\x67\\x65\\x26\\x6f\\x72\\x64\\x65\\x72\\x62\\x79\\x3d\\x64\\x61\\x74\\x65\\x26\\x73\\x65\\x61\\x72\\x63\\x68\\x5f\\x74\\x79\\x70\\x65\\x3d\\x26\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x73\\x6f\\x72\\x74\\x3d\"+urlid+\"\\x26\\x73\\x65\\x61\\x72\\x63\\x68\\x5f\\x6b\\x65\\x79\\x3d\\x26\\x70\\x6c\\x61\\x74\\x66\\x6f\\x72\\x6d\\x6e\\x61\\x6d\\x65\\x3d\\x61\\x6e\\x64\\x72\\x6f\\x69\\x64\\x26\\x70\\x72\\x6f\\x64\\x75\\x63\\x74\\x6e\\x61\\x6d\\x65\\x3d\\x6d\\x68\\x74\"})}res['\\x64\\x61\\x74\\x61']=d;setHomeResult(res);","searchFind":"js:var Jp1={};var sFUTEhqc2=[];var $YnE3=JSON['\\x70\\x61\\x72\\x73\\x65'](getResCode());for(var t4 in $YnE3['\\x64\\x61\\x74\\x61']){var rsgH6={};var P7=$YnE3['\\x64\\x61\\x74\\x61'][t4];rsgH6['\\x74\\x69\\x74\\x6c\\x65']=P7['\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x6e\\x61\\x6d\\x65'];rsgH6['\\x75\\x72\\x6c']='\\x68\\x74\\x74\\x70\\x3a\\x2f\\x2f\\x63\\x6f\\x6d\\x69\\x63\\x2e\\x33\\x32\\x31\\x6d\\x68\\x2e\\x63\\x6f\\x6d\\x2f\\x61\\x70\\x70\\x5f\\x61\\x70\\x69\\x2f\\x76\\x35\\x2f\\x67\\x65\\x74\\x63\\x6f\\x6d\\x69\\x63\\x69\\x6e\\x66\\x6f\\x5f\\x62\\x6f\\x64\\x79\\x2f\\x3f\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x69\\x64\\x3d'+P7['\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x69\\x64']+'\\x26\\x70\\x6c\\x61\\x74\\x66\\x6f\\x72\\x6d\\x6e\\x61\\x6d\\x65\\x3d\\x61\\x6e\\x64\\x72\\x6f\\x69\\x64\\x26\\x70\\x72\\x6f\\x64\\x75\\x63\\x74\\x6e\\x61\\x6d\\x65\\x3d\\x6d\\x68\\x74';rsgH6['\\x69\\x6d\\x67']='\\x68\\x74\\x74\\x70\\x3a\\x2f\\x2f\\x69\\x6d\\x61\\x67\\x65\\x2e\\x79\\x71\\x6d\\x68\\x2e\\x63\\x6f\\x6d\\x2f\\x6d\\x68\\x2f'+P7['\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x69\\x64']+'\\x2e\\x6a\\x70\\x67\\x2d\\x36\\x30\\x30\\x78\\x38\\x30\\x30\\x2e\\x77\\x65\\x62\\x70';rsgH6['\\x64\\x65\\x73\\x63']=P7['\\x6c\\x61\\x73\\x74\\x5f\\x63\\x68\\x61\\x70\\x74\\x65\\x72\\x5f\\x6e\\x61\\x6d\\x65'];if(rsgH6['\\x74\\x69\\x74\\x6c\\x65']!==null&&rsgH6['\\x74\\x69\\x74\\x6c\\x65']!==undefined&&rsgH6['\\x74\\x69\\x74\\x6c\\x65']!==''){sFUTEhqc2['\\x70\\x75\\x73\\x68'](rsgH6)}}Jp1['\\x64\\x61\\x74\\x61']=sFUTEhqc2;setSearchResult(Jp1);","search_url":"https://getconfig-globalapi.yyhao.com/app_api/v5/getsortlist/?page=1&orderby=click&search_key=**&young_mode=0&platformname=android&productname=mht","titleColor":"#2edfa3","group":"⑤漫画(ФωФ)","detail_col_type":"movie_1","detail_find_rule":"js:let res={};let d=[];let json=JSON['\\x70\\x61\\x72\\x73\\x65'](getResCode());for(let i=0;i<json['\\x64\\x61\\x74\\x61']['\\x6c\\x65\\x6e\\x67\\x74\\x68'];i++){let comic=json['\\x64\\x61\\x74\\x61'][i];let comic_id=comic['\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x69\\x64'];let comic_name=comic['\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x6e\\x61\\x6d\\x65'];let last_chapter=comic['\\x6c\\x61\\x73\\x74\\x5f\\x63\\x68\\x61\\x70\\x74\\x65\\x72\\x5f\\x6e\\x61\\x6d\\x65'];d['\\x70\\x75\\x73\\x68']({title:comic_name,desc:last_chapter,pic_url:\"\\x68\\x74\\x74\\x70\\x3a\\x2f\\x2f\\x69\\x6d\\x61\\x67\\x65\\x2e\\x79\\x71\\x6d\\x68\\x2e\\x63\\x6f\\x6d\\x2f\\x6d\\x68\\x2f\"+comic_id+\"\\x2e\\x6a\\x70\\x67\\x2d\\x36\\x30\\x30\\x78\\x38\\x30\\x30\\x2e\\x6a\\x70\\x67\\x2e\\x77\\x65\\x62\\x70\",url:\"\\x68\\x74\\x74\\x70\\x3a\\x2f\\x2f\\x63\\x6f\\x6d\\x69\\x63\\x2e\\x33\\x32\\x31\\x6d\\x68\\x2e\\x63\\x6f\\x6d\\x2f\\x61\\x70\\x70\\x5f\\x61\\x70\\x69\\x2f\\x76\\x35\\x2f\\x67\\x65\\x74\\x63\\x6f\\x6d\\x69\\x63\\x69\\x6e\\x66\\x6f\\x5f\\x62\\x6f\\x64\\x79\\x2f\\x3f\\x63\\x6f\\x6d\\x69\\x63\\x5f\\x69\\x64\\x3d\"+comic_id+\"\\x26\\x66\\x72\\x6f\\x6d\\x5f\\x70\\x61\\x67\\x65\\x3d\\x73\\x65\\x61\\x72\\x63\\x68\\x26\\x70\\x6c\\x61\\x74\\x66\\x6f\\x72\\x6d\\x6e\\x61\\x6d\\x65\\x3d\\x61\\x6e\\x64\\x72\\x6f\\x69\\x64\\x26\\x70\\x72\\x6f\\x64\\x75\\x63\\x74\\x6e\\x61\\x6d\\x65\\x3d\\x6d\\x68\\x74\"+'\\x40\\x72\\x75\\x6c\\x65\\x3d\\x6a\\x73\\x3a\\x76\\x61\\x72 \\x6a\\x73\\x6f\\x6e\\x66\\x69\\x6c\\x65 \\x3d \\x22\\x68\\x69\\x6b\\x65\\x72\\x3a\\x2f\\x2f\\x66\\x69\\x6c\\x65\\x73\\x2f\\x6d\\x61\\x6e\\x68\\x75\\x61\\x2f\\x6d\\x61\\x6e\\x68\\x75\\x61\\x74\\x61\\x69\\x2e\\x6a\\x73\\x22\\x3b\\x76\\x61\\x72 \\x70\\x69\\x63\\x66\\x75\\x6e \\x3d \\x66\\x65\\x74\\x63\\x68\\x28\\x6a\\x73\\x6f\\x6e\\x66\\x69\\x6c\\x65\\x29\\x3b\\x69\\x66\\x28\\x21\\x70\\x69\\x63\\x66\\x75\\x6e\\x29\\x7b\\x70\\x69\\x63\\x66\\x75\\x6e \\x3d \\x66\\x65\\x74\\x63\\x68\\x28\\x22\\x68\\x74\\x74\\x70\\x73\\x3a\\x2f\\x2f\\x67\\x69\\x74\\x65\\x65\\x2e\\x63\\x6f\\x6d\\x2f\\x6d\\x6f\\x66\\x65\\x69\\x62\\x61\\x69\\x2f\\x68\\x69\\x6b\\x65\\x72\\x5f\\x69\\x6e\\x66\\x6f\\x2f\\x72\\x61\\x77\\x2f\\x6d\\x61\\x73\\x74\\x65\\x72\\x2f\\x6d\\x61\\x6e\\x68\\x75\\x61\\x74\\x61\\x69\\x2f\\x6d\\x61\\x6e\\x68\\x75\\x61\\x74\\x61\\x69\\x2e\\x6a\\x73\\x22\\x2c\\x7b\\x7d\\x29\\x3b\\x77\\x72\\x69\\x74\\x65\\x46\\x69\\x6c\\x65\\x28\\x6a\\x73\\x6f\\x6e\\x66\\x69\\x6c\\x65\\x2c\\x70\\x69\\x63\\x66\\x75\\x6e\\x29\\x3b\\x7d\\x65\\x76\\x61\\x6c\\x28\\x70\\x69\\x63\\x66\\x75\\x6e\\x29\\x3b\\x67\\x65\\x74\\x43\\x68\\x61\\x70\\x74\\x65\\x72\\x28\\x29\\x3b',col_type:\"\\x6d\\x6f\\x76\\x69\\x65\\x5f\\x33\"})}res['\\x64\\x61\\x74\\x61']=d;setHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar jsonfile = \"hiker://files/manhua/manhuatai.js\";\nvar picfun = fetch(jsonfile);\nif(!picfun){\n  picfun = fetch(\"https://gitee.com/mofeibai/hiker_info/raw/master/manhuatai/manhuatai.js\",{});\n  writeFile(jsonfile,picfun);\n}\neval(picfun);\ngetChapter();","ua":"mobile","preRule":"","icon":"#2edfa3"},{"last_chapter_rule":"","title":"電視直播X5","author":"香雅情","version":2,"type":"other","url":"http://m.iptv223.com/?tid=fyAll;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36&&X-Requested-With@w2a.app.iptv800.com}","col_type":"text_2","class_name":"綜合&體育&央視&衛視&港澳台&电影&其他&咪咕","class_url":"itv&ty&ys&ws&gt&movie&other&migu","area_name":"北方云&天途云&广西联通&北京教育网&福建移動&黑龍江移動","area_url":"bfiptv&tt&ltiptv&bupt&fjitv&hlitv","sort_name":"","year_name":"IPv6网络电视(限IPv6)","sort_url":"","year_url":"ipv6","find_rule":"body&&ul&&li;a&&Text;;;a&&href.js:'http://m.iptv223.com/'+input","searchFind":"","search_url":"","group":"⑤直播","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nd.push({\n    title: '',\n    desc: '255&&float',\n    url: '',\n    col_type: 'x5_webview_single'\n});\nrefreshX5WebView('');\neval(JSON.parse(getRule()).preRule);\n\nvar html = getResCode();\n//log(html);\n\neval('var ' + parseDomForHtml(html, 'body&&script,3&&Html'));\n\nvar scr = parseDomForHtml(html, 'body&&script,5&&Html').split('document')[0];\n//log(scr);\n//log(eval('var ' + scr));\n\nvar hk = parseDomForHtml(eval('var ' + scr), 'script&&Html');\n//log(hk);\n\neval(hk);\n\n//回看开始\nvar tabs = parseDomForArray(html, 'body&&div[data-role=\"navbar\"]&&li');\n//setError(tabs.length);\n\nfor (var t in tabs) {\n    var rurl = 'http://m.iptv223.com/' + parseDomForHtml(tabs[t], 'a&&href');\n    d.unshift({\n        title: parseDomForHtml(tabs[t], 'a&&Text'),\n        url: $(rurl).rule(() => {\n            //回看二级//        \n            var res = {};\n            var d = [];\n            d.push({\n                title: '',\n                desc: '240&&float',\n                url: '',\n                col_type: 'x5_webview_single'\n            });\n            refreshX5WebView('');\n            var pre = JSON.parse(getRule()).preRule;\n            var html = getResCode();\n            var lists = parseDomForArray(html, 'body&&#myEpg&&a:has(span)');\n            for (var t in lists) {\n                d.push({\n                    title: parseDomForHtml(lists[t], 'a&&Text').replace('回看', ''),\n                    url: $(parseDom(lists[t], 'a&&href')).lazyRule((pre) => {\n                        //回看动态//\n                        refreshX5WebView('');\n                        var get = request(input);\n                        //log(get);\n                        //var scr = parseDomForHtml(get, 'html&&script:not([src])&&Html').split('\"');\n\n                        eval(pre);\n                        //log(parseDomForHtml(get, 'body&&script,1&&Html'));\n                        //var hk = parseDomForHtml(bdecodeb(scr[1], scr[3]), 'script&&Html');\n                        eval('var ' + parseDomForHtml(get, 'body&&script,1&&Html'));\n\n                        var scr = parseDomForHtml(get, 'body&&script,3&&Html').split('document')[0];\n                        //log(scr);\n                        //log(eval('var ' + scr));\n\n                        var hk = parseDomForHtml(eval('var ' + scr), 'script&&Html');\n                        log(hk);\n                        eval(hk);\n\n                        var title = bdecodeb(parseDomForHtml(get, \"body&&#playURL&&option&&value\").split(\"\").reverse().join(\"\"), hken).replace(\"token=123\", \"token=\" + token).replace(hken, \"\");\n\n                        var ul = JSON.parse(request(title, {\n                            headers: {\n                                \"Referer\": \"https://m.iptv223.com/\"\n                            },\n                            redirect: false,\n                            withHeaders: true\n                        }));\n                        if (ul.statusCode == \"302\") {\n                            refreshX5WebView('');\n                            return ul.headers.location[0];\n                        } else {\n                            return 'x5WebView://' + title;\n                        }\n                        //回看动态结束\n                    }, pre),\n                    col_type: 'text_1'\n                });\n            }\n\n            res.data = d;\n            setHomeResult(res);\n            //回看二级结束\n        }),\n        col_type: 'text_2'\n    });\n}\n//回看结束\n\nvar conts = parseDomForArray(html, 'body&&#playURL&&option');\n//setError(conts.length);\n\nfor (var l in conts) {\n    var title = bdecodeb(parseDomForHtml(conts[l], \"option&&value\").split(\"\").reverse().join(\"\"), hken).replace(\"token=123\", \"token=\" + token).replace(hken, \"\");\n    //setError(title);\n\n    try {\n        var desc = conts[l].split('\">')[1].split('<')[0];\n    } catch (e) {\n        var desc = '线路' + [l + 1]\n    }\n    //setError(conts[12]);\n\n    d.push({\n        title: desc,\n        url: $(title).lazyRule(() => {\n            var ul = JSON.parse(request(input, {\n                headers: {\n                    \"Referer\": \"https://m.iptv223.com/\"\n                },\n                redirect: false,\n                withHeaders: true\n            }));\n            if (ul.statusCode == \"302\") {\n                var loc = ul.headers.location[0];\n                var ull = JSON.parse(request(loc, {\n                    redirect: false,\n                    withHeaders: true\n                }));\n                if (ull.statusCode == \"302\") {\n                    refreshX5WebView('');\n                    return ull.headers.location[0];\n                } else {\n                    return 'x5WebView://' + loc;\n                }\n            } else {\n                return 'x5WebView://' + input;\n            }\n        }),\n        desc: desc,\n        col_type: conts.length > 3 ? 'text_4' : 'text_2'\n    });\n\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"function bdecode(data) {\n    var keyStr = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n    var a1, a2, a3, h1, h2, h3, h4, bits, i = 0,\n        ac = 0,\n        dec = \"\",\n        tmp_arr = [];\n    if (!data) {\n        return data;\n    }\n    data += '';\n    do {\n        h1 = keyStr.indexOf(data.charAt(i++));\n        h2 = keyStr.indexOf(data.charAt(i++));\n        h3 = keyStr.indexOf(data.charAt(i++));\n        h4 = keyStr.indexOf(data.charAt(i++));\n        bits = h1 << 18 | h2 << 12 | h3 << 6 | h4;\n        a1 = bits >> 16 & 0xff;\n        a2 = bits >> 8 & 0xff;\n        a3 = bits & 0xff;\n        if (h3 == 64) {\n            tmp_arr[ac++] = String.fromCharCode(a1);\n        } else if (h4 == 64) {\n            tmp_arr[ac++] = String.fromCharCode(a1, a2);\n        } else {\n            tmp_arr[ac++] = String.fromCharCode(a1, a2, a3);\n        }\n    }\n    while (i < data.length);\n    dec = tmp_arr.join('');\n    return dec;\n}\n\nfunction bdecodeb(str, key) {\n\n    string = bdecode(str);\n    len = key.length;\n    code = \"\";\n    for (i = 0; i < string.length; i++) {\n\n        k = i % len;\n        code += String.fromCharCode(string.charCodeAt(i) ^ key.charCodeAt(k));\n    }\n    stra = bdecode(code);\n    return stra;\n}","pages":"[]","icon":""},{"title":"IPTV","version":0,"url":"https://cdn.jsdelivr.net/gh/fyclass","col_type":"text_2","class_name":"iptv-org&EvilCult&m3u8playlist","class_url":"iptv-org/iptv/channels/cn.m3u&EvilCult/iptv-m3u-maker/http/tv.m3u&m3u8playlist/dp/live_tv/shbst.m3u","area_name":"全部&CCTV&卫视","area_url":"&CCTV&卫视","year_name":"","year_url":"","find_rule":"js: var html = getResCode().replace(/\\n/g, '').replace(/\\r/g, '');\r\nvar list = html.split('#EXTINF:-1');\r\nvar json = JSON.parse(getRule());\r\nlist.splice(0, 1);\r\nvar res = {};\r\nvar items = list.filter(item => item.split('\",')[1].split('http')[0].includes(json.area_url)).map(data => ({\r\n    title: data.split('\",')[1].split('http')[0],\r\n    url: 'http' + data.split('\",')[1].split('http')[1]\r\n}));\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"⑤直播","icon":"#ffff7000"},{"title":"舞动的风","version":0,"url":"https://gitee.com/qiusunshine233/hikerView/raw/master/fyAll","col_type":"text_2","class_name":"推荐&影视&蓝光直播源&直播列表&自用TV源&CCTV&海外频道","class_url":"recommend.js&yingshi.json&蓝光直播源-200434.json&直播列表-220732.json&自用TV源-112939.json&CCTV.json&overseas.json","area_name":"网盘&工具&工具2","area_url":"search.js&tools.json&tools2.json","year_name":"","year_url":"","find_rule":"js: var json={};eval('json='+getResCode());var res={};var d=[];for(var i=0;i<json.lives.length;i++){var r={};var j=json.lives[i];r.title=j.name;r.url=j.url;d.push(r);}res.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#2add9c","group":"⑤直播","icon":"#2add9c"},{"last_chapter_rule":"","title":"txt直播","author":"舞动的风","version":1,"type":"other","url":"hiker://empty","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \n//setError(getVar(\"raw\"))\nvar obj = fetch(getVar(\"raw\")+\"/file.txt\",{});\r\nvar list = obj.replace(/#updated.*/,'').replace('\\n','').split('\\n');\n//setError(list)\nvar res = {};\r\nvar d = [];\nd.push({\n            title: obj.split('\\n')[0],\n            col_type: 'text_1'\n        });\r\nfor (var i = 0; i < list.length -1; i++)\r\n{\r\n    d.push({\r\n        title: list[i].split(',')[0],\r\n        url: getVar(\"raw\")+\"/wind/\"+list[i].split(',')[1]\r\n    })\r\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑤直播","detail_col_type":"text_2","detail_find_rule":"js: var obj = getResCode();\r\nvar list = obj.replace(/使用.*/,'').replace(/机哥.*/,'').replace(/订阅.*/,'').replace('\\n','').split('\\n');\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < list.length; i++)\r\n{\r\n    if (list[i].split(',')[0] != '' && list[i].split(',')[1] != '')\r\n    d.push({\r\n        title: list[i].split(',')[0],\r\n        url: list[i].split(',')[1]\r\n    })\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var OＯ0$='jsjiami.com.v6',OＯ0$_=['OＯ0$'],OOQ$$$=[OＯ0$,'w7LDkMKZ','NcO/VsKQYgTDk8KtdsOLf3rCicOvWMKwWWHDicOnw5whw6XDmMKSXXJ0EsOhw4LDhFkRS8Kbwq7Cr8OeEsOrA8KHNFbCgsKww7xDQcOn','UcObwpgUd8OvEDY8Y8Klwp3DhcOuSWLCozrCmlMYw7Y+wprChcOPXF/CjsOBwqpwYMKLAENuDcKPwr9RwrjDvMKwLMOh','w7TDt0hcRMK+w6FqGGpjeS5Qwr9fw5vDkcKhRSdcw5zCp8O1TcK9wobCtE3DiUYtwrPCj1F0w7fDknMPwq9Sw4LDtcKiO1vDvMOvDTc0w4gHwpY=','wq/Dl8KHworDnxJMTsK4','HcOmYlxJwrjDv2TDuQ==','wpxbLsKtGUkMH2A=','w5QYwoBDwpjCs8OX','JnwtJm4=','bzXCkw==','EjsSKjiwamiGSJ.PncFomd.kpQlvV6K=='];if(function(_0x9c299e,_0x2ab39b,_0x423cc5){function _0x52d459(_0x20d1de,_0xc399d3,_0x47bf12,_0x11b09c,_0x3e0d37,_0x384820){_0xc399d3=_0xc399d3>>0x8,_0x3e0d37='po';var _0x33b6b4='shift',_0x17594f='push',_0x384820='0.k58q534nxgn';if(_0xc399d3<_0x20d1de){while(--_0x20d1de){_0x11b09c=_0x9c299e[_0x33b6b4]();if(_0xc399d3===_0x20d1de&&_0x384820==='0.k58q534nxgn'&&_0x384820['length']===0xd){_0xc399d3=_0x11b09c,_0x47bf12=_0x9c299e[_0x3e0d37+'p']();}else if(_0xc399d3&&_0x47bf12['replace'](/[ESKwGSJPnFdkpQlVK=]/g,'')===_0xc399d3){_0x9c299e[_0x17594f](_0x11b09c);}}_0x9c299e[_0x17594f](_0x9c299e[_0x33b6b4]());}return 0xd7b4c;};return _0x52d459(++_0x2ab39b,_0x423cc5)>>_0x2ab39b^_0x423cc5;}(OOQ$$$,0xe6,0xe600),OOQ$$$){OＯ0$_=OOQ$$$['length']^0xe6;};function O0$0Q$(_0x2f3e31,_0x3a89c9){_0x2f3e31=~~'0x'['concat'](_0x2f3e31['slice'](0x0));var _0x291ebd=OOQ$$$[_0x2f3e31];if(O0$0Q$['O$O']===undefined){(function(){var _0x2d0e6a=typeof window!=='undefined'?window:typeof process==='object'&&typeof require==='function'&&typeof global==='object'?global:this;var _0x6e77c2='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2d0e6a['atob']||(_0x2d0e6a['atob']=function(_0x230109){var _0x4c9db8=String(_0x230109)['replace'](/=+$/,'');for(var _0x439300=0x0,_0x1a9870,_0x16d43f,_0x3e08c5=0x0,_0x296519='';_0x16d43f=_0x4c9db8['charAt'](_0x3e08c5++);~_0x16d43f&&(_0x1a9870=_0x439300%0x4?_0x1a9870*0x40+_0x16d43f:_0x16d43f,_0x439300++%0x4)?_0x296519+=String['fromCharCode'](0xff&_0x1a9870>>(-0x2*_0x439300&0x6)):0x0){_0x16d43f=_0x6e77c2['indexOf'](_0x16d43f);}return _0x296519;});}());function _0x3db635(_0x306cc8,_0x3a89c9){var _0x390ae2=[],_0x35bc5f=0x0,_0x1dcb08,_0x4d688c='',_0x4541ae='';_0x306cc8=atob(_0x306cc8);for(var _0x9bbed=0x0,_0x460981=_0x306cc8['length'];_0x9bbed<_0x460981;_0x9bbed++){_0x4541ae+='%'+('00'+_0x306cc8['charCodeAt'](_0x9bbed)['toString'](0x10))['slice'](-0x2);}_0x306cc8=decodeURIComponent(_0x4541ae);for(var _0x22320e=0x0;_0x22320e<0x100;_0x22320e++){_0x390ae2[_0x22320e]=_0x22320e;}for(_0x22320e=0x0;_0x22320e<0x100;_0x22320e++){_0x35bc5f=(_0x35bc5f+_0x390ae2[_0x22320e]+_0x3a89c9['charCodeAt'](_0x22320e%_0x3a89c9['length']))%0x100;_0x1dcb08=_0x390ae2[_0x22320e];_0x390ae2[_0x22320e]=_0x390ae2[_0x35bc5f];_0x390ae2[_0x35bc5f]=_0x1dcb08;}_0x22320e=0x0;_0x35bc5f=0x0;for(var _0x49baf4=0x0;_0x49baf4<_0x306cc8['length'];_0x49baf4++){_0x22320e=(_0x22320e+0x1)%0x100;_0x35bc5f=(_0x35bc5f+_0x390ae2[_0x22320e])%0x100;_0x1dcb08=_0x390ae2[_0x22320e];_0x390ae2[_0x22320e]=_0x390ae2[_0x35bc5f];_0x390ae2[_0x35bc5f]=_0x1dcb08;_0x4d688c+=String['fromCharCode'](_0x306cc8['charCodeAt'](_0x49baf4)^_0x390ae2[(_0x390ae2[_0x22320e]+_0x390ae2[_0x35bc5f])%0x100]);}return _0x4d688c;}O0$0Q$['O0QQO00']=_0x3db635;O0$0Q$['OQQOO0O']={};O0$0Q$['O$O']=!![];}var _0x312b72=O0$0Q$['OQQOO0O'][_0x2f3e31];if(_0x312b72===undefined){if(O0$0Q$['OQO$O$']===undefined){O0$0Q$['OQO$O$']=!![];}_0x291ebd=O0$0Q$['O0QQO00'](_0x291ebd,_0x3a89c9);O0$0Q$['OQQOO0O'][_0x2f3e31]=_0x291ebd;}else{_0x291ebd=_0x312b72;}return _0x291ebd;};if(!getVar(O0$0Q$('0','r[LW'))){var tabs=[O0$0Q$('1','YdfS'),O0$0Q$('2','(x2*'),O0$0Q$('3','9cT5')];var data=batchFetch([{'url':tabs[0x0]+O0$0Q$('4','r[LW')},{'url':tabs[0x1]+O0$0Q$('5','URqw')},{'url':tabs[0x2]+O0$0Q$('6','#5br')}]);for(var i in data){if(data[i][O0$0Q$('7','kO$0')](O0$0Q$('8','Vd13'))!=-0x1){putVar(O0$0Q$('9','kVQS'),tabs[i]);}}};;OＯ0$='jsjiami.com.v6';","pages":"[]","icon":""},{"last_chapter_rule":"","title":"热舞.dm","author":"道长","version":4,"url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nrequire(config.模板);\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://tvv.tw/xjj/index.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js:注入()\n    }\n}])","searchFind":"","search_url":"","group":"⑤短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"last_chapter_rule":"","title":"香蕉","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji08.com/home/cjapi/cfkl/mc10/vod/json#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"AH视频.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.sstv.pw/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=AH视频"},{"firstHeader":"class","last_chapter_rule":"","title":"四虎.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.b678u.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=四虎"},{"firstHeader":"class","last_chapter_rule":"","title":"四虎影院","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.tto789.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=四虎"},{"last_chapter_rule":"","title":"青青草资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji05.com/home/cjapi/cfda/mc/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=青青草资源"},{"last_chapter_rule":"","title":"柚子TV","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##http://tvht.lanrentk.cc/api.php/iptv/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=柚子TV"},{"last_chapter_rule":"","title":"小湿妹资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.afasu.com/api/xml.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小湿妹资源"},{"last_chapter_rule":"","title":"车库","author":"道长&爱是用心","version":3,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"evalPrivateJS('WJxUWKDa6wUuJqbGPrbqoLz/eC/0e7K1VMFGqushV+IjevDJA+N/zE7c+w0cwpsT0MU/u3MkO/+p3HwGqttxnSgS+wmKGahaGBBjMV4iEDgviN7+10OKrzbH9hDXHZMaUdH9rnWBi9fa2ckhOYFwBku0RsNNOe+reghRCJojZqs=')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"last_chapter_rule":"","title":"丝袜资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://siwazyw.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"色窝","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.yinwoapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=色窝"},{"firstHeader":"class","last_chapter_rule":"","title":"JAV.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://javtrailers.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=JAV"},{"firstHeader":"class","last_chapter_rule":"","title":"3ATV","author":"道长","version":1,"type":"video","url":"hiker://empty##https://xigua137.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=3ATV"},{"firstHeader":"class","last_chapter_rule":"","title":"P站","author":"道长","version":1,"type":"video","url":"hiker://empty##https://theporndude.com/zh","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=P站"},{"firstHeader":"class","last_chapter_rule":"","title":"回家指南.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://x227n.xyz/pw/?u=1261740","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=回家指南"},{"last_chapter_rule":"","title":"咪咪资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.caiji25.com/home/cjapi/p0as/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=咪咪资源"},{"last_chapter_rule":"","title":"环资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://wmcj8.com/inc/sapi.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=环资源"},{"firstHeader":"class","last_chapter_rule":"","title":"知阴.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://zhiyin202205.xyz/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=知阴"},{"last_chapter_rule":"","title":"宝全资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.dmmapi.com/home/cjapi/asd2c7/mc/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=宝全资源"},{"last_chapter_rule":"","title":"资源合集","author":"轻合集生成器","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files/ruleCache/cms/531034f7dfcc98df3b94cc55a98c1c36.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"https://z3.ax1x.com/2021/11/16/IWJhxf.png"},{"last_chapter_rule":"","title":"草榴","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.caiji02.com/home/cjapi/cfas/mc10/vod/xml#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑤私人天地","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=草榴"},{"last_chapter_rule":"","title":"Jable","author":"TyrantGenesis","version":1,"type":"other","url":"https://jable.tv/fyAll/fypage/?from=fypage","col_type":"movie_2","class_name":"热门&最新","class_url":"hot&new-release","area_name":"主奴調教&直接開啪&中文字幕&凌辱強暴&制服誘惑&角色劇情&盜攝偷 拍&無碼解放&男友視角&多P群交&絲襪美腿&女同歡愉","area_url":"categories/bdsm&categories/sex-only&categories/chinese-subtitle&categories/rape&categories/uniform&categories/roleplay&categories/hidden-cam&categories/uncensored&categories/pov&categories/groupsex&categories/pantyhose&categories/lesbian","sort_name":"","year_name":"3P&4小時以上&Cosplay&NTR&OL&一日十回&下雨天&不倫&中出&主播&乳交&人 妻&便利店&健身房&偶像&偷 拍&催眠&兔女郎&凌辱&出軌&刑具&口交&口 爆&吊帶襪&和服&圖書館","sort_url":"","year_url":"tags/3p&tags/more-than-4-hours&tags/Cosplay&tags/ntr&tags/ol&tags/10-times-a-day&tags/rainy-day&tags/incest&tags/creampie&tags/female-anchor&tags/tit-wank&tags/wife&tags/store&tags/gym-room&tags/idol&tags/hidden-cam&tags/hypnosis&tags/bunny-girl&tags/insult&tags/affair&tags/torture&tags/blowjob&tags/cum-in-mouth&tags/stockings&tags/kimono&tags/library","find_rule":".site-content&&.video-img-box;h6&&a&&Text;img&&data-src;.label&&Text;a&&href","searchFind":".site-content&&.video-img-box;h6&&a&&Text;a&&href;.label&&Text;h6&&a&&Text;img&&data-src","search_url":"https://jable.tv/search/**/?from_videos=fypage&from_albums=fypage","group":"⑤私人天地","detail_col_type":"pic_1","detail_find_rule":"","sdetail_col_type":"pic_1movie_1","sdetail_find_rule":".site-content;.header-left&&h4&&Text;video&&poster;.tags&&Text;link&&href","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"91PORN","author":"幼稚鬼","version":2,"type":"other","url":"https://0819.91p30.com/v.php?category=fyclass&viewtype=basic&page=fypage;get;UTF-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:getVar(\"91PORNcookie\")}","col_type":"movie_2","class_name":"首页&91原创&当前最热&本月最热&10分钟以上&20分钟以上&本月收藏&收藏最多&最近加精&高清&本月讨论","class_url":"&ori&hot&top&long&longer&tf&mf&rf&hd&md","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nif (MY_URL.match(/page=1/)) {\nd.push({\n    title: \"搜索\",\n    url:\"'hiker://search?s='+input+'&rule=91PORN'\",\n    desc:\"请输入搜索关键词\",\n    col_type:\"input\",\n})\n//间隔\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'line_blank'\n});\n};\n\nvar lazy=$('').lazyRule(()=>{\n    let html=request(input);\n    let url=pdfh(html,'#addToFavLink&&#VID&&Text');\n    return 'http://cns.killcovid2021.com/m3u8/'+url+'/'+url+'.m3u8'+\"#isVideo=true#\"\n});\n\nvar  list  =  parseDomForArray(html, '.row&&.col-sm-4');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  '.video-title&&Text'),\n               desc: parseDomForHtml(list[j],  '.duration&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url:   parseDom(list[j],'a&&href')+lazy\n    });\n}\nres.data  =  d;\nsetHomeResult(res);","searchFind":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nvar lazy=$('').lazyRule(()=>{\n    let html=request(input);\n    let url=pdfh(html,'#addToFavLink&&#VID&&Text');\n    return 'http://cns.killcovid2021.com/m3u8/'+url+'/'+url+'.m3u8'+\"#isVideo=true#\"\n});\n\nvar  list  =  parseDomForArray(html, '.row&&.well-sm');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  '.video-title&&Text'),\n               desc: parseDomForHtml(list[j],  '.duration&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url:   parseDom(list[j],'a&&href')+lazy\n    });\n}\n\nvar  list  =  parseDomForArray(html, '#wrapper&&.errorbox');\nfor (var j in list) {\n    d.push({       \n              title:  \"搜索间隔时间30秒\"\n    });\n}\n\nres.data  =  d;\nsetHomeResult(res);","search_url":"https://up.workgreat11.live/search_result.php?search_id=**&search_type=search_videos&min_duration=&page=fypage;get;UTF-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:getVar(\"91PORNcookie\")}","group":"⑤私人天地","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"mobile","preRule":"if(!getVar('91PORNcookie')){\nputVar(\"91PORNcookie\",\"CLIPSHARE=58v9hb3375u6nrp3cp4eemumkc; 91username=74f5MC7ufg4UrQsLaZQPs2h8wlL%2F5%2FRmDul3ggnP6R2nataPG1WF; DUID=97f0LzTFqJLsJRM57Khz4FbdW3QthTg7dWDAMEYbIOULAHww; USERNAME=df46nH6827uuNBxYnb8WSJIPAjGh86fuH5NdiZaRQHA6GDAAkZGA; EMAILVERIFIED=yes; school=a3ffpGpvcQBoIQ%2F9mKfWmeN%2FDDMxM1k506gtzZE; level=960cTU7JT2pPfCjAOLJOmHyV1qabion5ZNQnMJLY; video_server=H; country_bean=50ccOdRxbZIBi6b4lO5N98lWd6OmpVWPSoa6uUZB\")\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"pornhub","author":"TyrantGenesis","version":3,"type":"all","url":"https://cn.pornhub.com/video?o=fyclass&cc=fyarea&page=fypage","col_type":"movie_2","class_name":"最热门&次数多","class_url":"ht&mv","area_name":"美国&日本&韩国&阿根廷&澳大利亚&奥地利&比利时&巴西&加拿大&法国&德国&乌克兰","area_url":"us&jp&kr&ar&au&at&be&br&ca&fr&de&ua","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.videoThumb&&src;\n.time&&Text;\n.title&&a&&Attrhref","searchFind":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.title&&a&&Attrhref;\n.time&&Text;\n.title&&a&&Text;\n.videoThumb&&data-thumb_url","search_url":"https://cn.pornhub.com/video/search?search=**&page=fypage","group":"⑤私人天地","detail_col_type":"movie_1_left_pic","detail_find_rule":"js:\neval(fetch('hiker://files/TyrantG/GHS/pornhub.js'))\nsecParse()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\npornhub()","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"51吃瓜网","author":"道长","version":1,"type":"video","url":"hiker://empty##https://htvpz2.51cg5.info/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=51吃瓜网"},{"firstHeader":"class","last_chapter_rule":"","title":"人体艺术.DR1","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.rtmmf.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vod/detail/','/ys/index.php/gbook/index.html');\n//一级书签('vod/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/ys/index.php/vod/search/page/fypage/wd/**.html","group":"⑤私人天地","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=人体艺术"},{"last_chapter_rule":"","title":"随机歌曲","author":"1","version":0,"type":"video","url":"hiker://empty##fypage","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\n\nfor(var i=0;i<=12;i++){\nvar html=JSON.parse(request(\"https://api.uomg.com/api/rand.music?sort=%E7%83%AD%E6%AD%8C%E6%A6%9C&format=json\")).data;\nd.push({\ntitle:html.name,\npic:html.picurl+'@Referer=',\nurl:html.url+'#isMusic=true#'\n})\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#fffe9700"},{"last_chapter_rule":"","title":"一起听歌","author":"","version":1,"type":"music","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet url = \"http://music.alang.run/#/\"\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑤音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蓝叶听歌","author":"枫林雨殇","version":1,"type":"music","url":"http://music.lanyes.org/fyAll/page/fypage","col_type":"avatar","class_name":"热门歌曲&经典老歌&动感舞曲&纯音乐&好片推荐","class_url":"hot&laoge&wuqu&audio&haopian","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\n\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '#lanye_playlist&&li');\n\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n        title: parseDomForHtml(list[i], 'a&&Text'),\n        pic_url: parseDom(list[i], 'li&&lymusic-avatar'),\n        url: parseDom(list[i], 'a&&href')+`@lazyRule=.jplayer&&data-url.js:var url=input;if(url.match(/music|mp3|m4a/)){url+'#isMusic=true#'}else{url+'#isVideo=true#'}`\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\n\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '#lanye_playlist&&li');\n\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n        title: parseDomForHtml(list[i], 'a&&Text'),\n        pic_url: parseDom(list[i], 'li&&lymusic-avatar'),\n        url: parseDom(list[i], 'a&&href')+`@lazyRule=.jplayer&&data-url.js:var url=input;if(url.match(/music|mp3|m4a/)){url+'#isMusic=true#'}else{url+'#isVideo=true#'}`\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","search_url":"http://music.lanyes.org/?keyword=**&page=fypage","titleColor":"","group":"⑤音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/music/111.svg"},{"firstHeader":"class","title":"GIF K歌","author":"镇弟","version":0,"url":"https://shimo.im/docs/PWXgYvQ9QXJvkvqT/read#fyAll","col_type":"movie_3_marquee","class_name":"劲爆&女声&男声&现场&粤语&闽南语&全部","class_url":"劲爆&女声&男声&现场&粤语&闽南语&全部","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar s2 = 'https://www.hlapi.cn/api/gqbz#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\nitems.push({\n    title: \" 辛丑🐄 年         🔍搜索或网址🔎\",\n    url: \"hiker://search\",\n    desc: '',\n    col_type: 'pic_1',\n    pic_url: s2\n});\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i];\n    var g_title = data.split('group-title=\"')[1].split('\"')[0];\n    if (flag == '全部' || flag == g_title) {\n        items.push({\n            title: data.split(',')[1].split('</p>')[0],\n            url: data.split('href=\"')[1].split('\"')[0].replace(/#.*/, '').replace(/&nbsp;/g, '').replace(/&amp;/g,'&') + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#mp4'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n            pic_url: data.split('vg-logo=\"')[1].split('\"')[0]\n        });\n    }\n}\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar flag = MY_URL.split('#')[1];\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i];\n    if (data.indexOf(flag) > -1) {\n        var title = data.split(',')[1].split('</p>')[0];\n        var url = data.split('href=\"')[1].split('\"')[0].replace(/#.*/,'').replace(/&nbsp;/g, '').replace(/&amp;/g, '&');\n        var pic_url = data.split('vg-logo=\"')[1].split('\"')[0];\n        var desc = data.split('group-title=\"')[1].split('\"')[0];\n        items.push({\n            title: title,\n            //desc: desc,\n            url: 'hiker://empty#' + url + '#' + title + '#' + pic_url + '#' + desc,\n            pic_url: pic_url\n        });\n    }\n}\nres.data = items;\nsetSearchResult(res);","search_url":"https://shimo.im/docs/PWXgYvQ9QXJvkvqT/read#**","titleColor":"#fff20c00","group":"⑤音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar data = MY_URL.split('#');\nitems.push({\n    title: data[2],\n    url: data[1] + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#mp4'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n    pic_url: data[3],\n    desc: data[4]\n});\nres.data = items;\nsetHomeResult(res);","ua":"auto","preRule":"","icon":"#fff20c00"},{"firstHeader":"class","last_chapter_rule":"","title":"网易云音乐","author":"小棉袄🌞","version":2,"type":"other","url":"https://v1.jinrishici.com/all.json","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n\n'云音乐飙升榜@@19723756@@http://p2.music.126.net/DrRIg6CrgDfVLEph9SNh7w==/18696095720518497.jpg?param=100y100',\n'云音乐新歌榜@@3779629@@http://p2.music.126.net/N2HO5xfYEqyQ8q6oxCw8IQ==/18713687906568048.jpg?param=100y100',\n'网易原创歌曲榜@@2884035@@http://p2.music.126.net/sBzD11nforcuh1jdLSgX7g==/18740076185638788.jpg?param=100y100',\n'云音乐热歌榜@@3778678@@http://p2.music.126.net/GhhuF6Ep5Tq9IEvLsyCN7w==/18708190348409091.jpg?param=100y10',\n'云音乐说唱榜@@991319590@@http://p2.music.126.net/y8zyTt4HwXbJqB31aQKz1A==/109951164353220919.jpg?param=100y100',\n'云音乐古典音乐榜@@71384707@@http://p2.music.126.net/BzSxoj6O1LQPlFceDn-LKw==/18681802069355169.jpg?param=100y100',\n'云音乐电音榜@@1978921795@@http://p2.music.126.net/5tgOCD4jiPKBGt7znJl-2g==/18822539557941307.jpg?param=100y100',\n'抖音排行榜@@2250011882@@http://p2.music.126.net/oUxnXXvM33OUHxxukYnUjQ==/109951164174523461.jpg?param=100y100',\n'新声榜@@2617766278@@http://p2.music.126.net/XbjRDARP1xv5a-40ZDOy6A==/109951163785427934.jpg?param=100y100',\n'云音乐ACG音乐榜@@71385702@@http://p2.music.126.net/vttjtRjL75Q4DEnjRsO8-A==/18752170813539664.jpg?param=100y100',\n'云音乐韩语榜@@745956260@@http://p2.music.126.net/vs-cMh49e6qPEorHuhU07A==/18737877162497499.jpg?param=100y100',\n'云音乐国电榜@@10520166@@http://p2.music.126.net/8-GBrukQ3BHhs4CmK6qE4w==/109951163424197392.jpg?param=100y100',\n'英国Q杂志中文版周榜@@2023401535@@http://p2.music.126.net/0_6_Efe9m0D0NtghOxinUg==/109951163089272193.jpg?param=100y100',\n'电竞音乐榜@@2006508653@@http://p2.music.126.net/CUqQp33MZf_m0BwH4u0V6A==/109951163078922993.jpg?param=100y100',\n'UK排行榜周榜@@180106@@http://p2.music.126.net/VQOMRRix9_omZbg4t-pVpw==/18930291695438269.jpg?param=100y100',\n'美国Billboard周榜@@60198@@http://p2.music.126.net/EBRqPmY8k8qyVHyF8AyjdQ==/18641120139148117.jpg?param=100y100',\n'Beatport全球电子舞曲榜@@3812895@@http://p2.music.126.net/A61n94BjWAb-ql4xpwpYcg==/18613632348448741.jpg?param=100y100',\n'KTV唛榜@@21845217@@http://p2.music.126.net/H4Y7jxd_zwygcAmPMfwJnQ==/19174383276805159.jpg?param=100y100',\n'iTunes榜@@11641012@@http://p2.music.126.net/WTpbsVfxeB6qDs_3_rnQtg==/109951163601178881.jpg?param=100y100',\n'日本Oricon周榜@@60131@@http://p2.music.126.net/Rgqbqsf4b3gNOzZKxOMxuw==/19029247741938160.jpg?param=100y100',\n'Hit FM Top榜@@120001@@http://p2.music.126.net/54vZEZ-fCudWZm6GH7I55w==/19187577416338508.jpg?param=100y100',\n'台湾Hito排行榜@@112463@@http://p2.music.126.net/wqi4TF4ILiTUUL5T7zhwsQ==/18646617697286899.jpg?param=100y100',\n'云音乐欧美热歌榜@@2809513713@@http://p2.music.126.net/c0iThrYPpnFVgFvU6JCVXQ==/109951164091703579.jpg?param=100y100',\n'云音乐欧美新歌榜@@2809577409@@http://p2.music.126.net/Zb8AL5xdl9-_7WIyAhRLbw==/109951164091690485.jpg?param=100y100',\n'法国 NRJ Vos Hits 周榜@@27135204@@http://p2.music.126.net/6O0ZEnO-I_RADBylVypprg==/109951162873641556.jpg?param=100y100',\n'中国新乡村音乐排行榜@@3112516681@@http://p2.music.126.net/E5xPfNqD1rp6dB1VPOlLUQ==/109951164540938467.jpg?param=100y100',\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push(\n{\n title:hitokoto.content,\n desc:\n'类别：'+hitokoto.category+\n'\\n作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\n col_type: 'pic_1',\n url:\"http://m.yugaopian.cn/\",\n pic_url: 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime()\n\n});\n\n\nfor (var i = 0; i < t.length; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = 'https://music.163.com/api/playlist/detail?id='+k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_2';\n d.push(r);\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.data.songs;\nvar items = list.map(data => ({\n title: data.name,\n url: 'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3',\n desc: data.album.name,\n content: data.artists[0].name\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"https://v1.alapi.cn/api/music/search?keyword=**","titleColor":"#ff871f78","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.result.tracks;\nvar items = list.map(data => ({\n title: data.name,\n url: 'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3'+\"&memoryPosition=full\",\n desc: data.artists[0].name+' '+data.album.name,\n pic_url: data.album.blurPicUrl\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"酷奇MV","author":"缘分","version":0,"type":"video","url":"https://www.kuqimv.com/play/fyAll_fypage.html","col_type":"movie_2","class_name":"华语高清&日韩精选&欧美MV&高清现场&影视MV&","class_url":"1&2&3&4&5&","area_name":"夜店视频&车模视频&热舞视频&美女写真&美女打碟","area_url":"6&7&8&9&10","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var id = input.match(/(\\d+)\\.html/)[1];\n    var url = JSON.parse(request(\"https://www.kuqimv.com/skin/kuqimv/play.php\", {\n        headers: {\n            \"User-Agent\": PC_UA\n        },\n        body: \"id=\" + id,\n        method: \"POST\"\n    })).url;\n    return url\n\n});\ntry {\n    var list = pdfa(getResCode(), '.mv_list&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.mv_xx&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: pd(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var id = input.match(/(\\d+)\\.html/)[1];\n    var url = JSON.parse(request(\"https://www.kuqimv.com/skin/kuqimv/play.php\", {\n        headers: {\n            \"User-Agent\": PC_UA\n        },\n        body: \"id=\" + id,\n        method: \"POST\"\n    })).url;\n    return url\n\n});\ntry {\n    var list = pdfa(getResCode(), '.play_xg&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.mv_xx&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: pd(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.kuqimv.com/search.php?key=**&pages=fypage","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.kuqimv.com/favicon.ico"},{"last_chapter_rule":"","title":"酷狗音乐1","author":"","version":3,"url":"https://www.kugou.com/yy/rank/home/1-6666.html?from=rank&t_fyclass","col_type":"icon_2","class_name":"即点即听模式&显示歌词图片模式","class_url":"2&1","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nputVar2('pd', getUrl().split('&t_')[1]);\nvar res = {};\nvar d = [];\nvar ym = getResCode();\nvar xs = parseDom(ym, '.pc_temp_main&&.pc_temp_side&&Html').match(/<div[\\s\\S]*?<\\/div>/g);\n/*d.push({\n    img: 'https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=2766541839,3884111946&fm=26&gp=0.jpg',\n    col_type: 'pic_1_card'\n});*/\n\n\nfor (var i = 0; i < (xs.length); i++) {\n    var ti = xs[i].split('title=\"')[1].split('\"')[0];\n    d.push({\n        title: ti,\n        col_type: 'text_1'\n    });\n    var ys = parseDom(xs[i], 'ul&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n    for (var j = 0; j < (ys.length); j++) {\n        var ti2 = ys[j].split('title=\"')[1].split('\"')[0];\n        var pi2 = ys[j].split('url(')[1].split(')')[0];\n        var adr2 = ys[j].split('href=\"')[1].split('\"')[0];\n        if (ti2 != '酷音乐流行风向标') {\n            d.push({\n                title: ti2,\n                img: pi2,\n                url: adr2,\n                col_type: 'icon_2_round'\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar ej=(getVar('pd')==1)?`@rule=js:var res = {};var d = [];var ym=fetch(getUrl(),{headers:{'User-Agent':'Mozilla/5.0 (Android 10)'}});var ym2=fetch(getUrl().replace(/m3ws/g,'www').replace(/kgsong/g,'song'),{});var dat=JSON.parse(ym.split('phpParam =')[1].split(';')[0]);d.push({img:dat.imgurl,url:dat.imgurl,col_type: 'pic_1_full'});d.push({title:(dat.song_info.data.url)?'““点击试听””':'““无法试听””',url:dat.song_info.data.url,col_type: 'text_center_1'});var lrc=parseDomForHtml(ym2,'.displayNone&&Text').replace(/\\\\[/g,'\\\\n[');d.push({title:lrc,col_type: 'long_text'});res.data = d;setHomeResult(res);`:`@lazyRule=.js:var res=fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Android 10)'}});JSON.parse(res.split('phpParam =')[1].split(';')[0]).song_info.data.url;`;\nvar res = {};var d = [];var ym=getResCode();\nvar xs=parseDom(ym,'.pc_temp_songlist&&ul&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\nfor(var i=0;i<(xs.length);i++)\n{\nvar ti=xs[i].split('title=\"')[1].split('\"')[0];\nvar adr=xs[i].split('href=\"')[1].split('\"')[0].replace(/www/g,'m3ws').replace(/song/g,'kgsong');\nvar des=xs[i].split('pc_temp_time\">')[1].split('<')[0].replace(/[^\\S]/g,'');\n\nd.push({\n\ttitle: ti,\n url:adr+ej,\n desc:des,\n\tcol_type: 'text_1'\n});\n}\nres.data = d;\nsetHomeResult(res);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"微软语音","author":"顺","version":20220816,"type":"music","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\neval(JSON.parse(fetch(\"hiker://page/初用\")).rule);\neval(JSON.parse(fetch(\"hiker://page/文本框\")).rule);\neval(JSON.parse(fetch(\"hiker://page/载入数据\")).rule);\n\neval(JSON.parse(fetch(\"hiker://page/角色选框\")).rule);\neval(JSON.parse(fetch(\"hiker://page/语速\")).rule);\neval(JSON.parse(fetch(\"hiker://page/音调\")).rule);\neval(JSON.parse(fetch(\"hiker://page/风格选框\")).rule);\neval(JSON.parse(fetch(\"hiker://page/搭配试听\")).rule);\neval(JSON.parse(fetch(\"hiker://page/文转语音\")).rule);\neval(JSON.parse(fetch(\"hiker://page/管理文件\")).rule)\n\nd.push({\n    title: \"📚 生成引擎\",\n    url: $('生成支持【阅读ledago】的语音引擎\\n\\n' + '♦️当前：' + 角色名.split('（')[0] +'（'+风格名+'）'+ '\\n\\n请在阅读朗读设置中点添加，粘贴源').confirm(() => {\n        eval(JSON.parse(fetch(\"hiker://page/导入到阅读\")).rule)\n        return 'hiker://empty';\n    }),\n    col_type: \"text_2\",\n    extra: {\n        id: \"阅读\"\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"合成朗读\",\"path\":\"合成朗读\",\"rule\":\"function createSSML(text, voiceName, styleName, rate, pitch) {\\n    let ssml = `\\\\\\n        <speak xmlns=\\\"http://www.w3.org/2001/10/synthesis\\\" xmlns:mstts=\\\"http://www.w3.org/2001/mstts\\\" xmlns:emo=\\\"http://www.w3.org/2009/10/emotionml\\\" version=\\\"1.0\\\" xml:lang=\\\"zh-CN\\\">\\\\\\n          <voice name=\\\"${voiceName}\\\">\\\\\\n            <mstts:express-as style=\\\"${styleName}\\\" styledegree=\\\"1\\\">\\\\\\n              <prosody volume=\\\"+100.00%\\\" rate=\\\"${rate}\\\" pitch=\\\"${pitch}\\\">\\\\\\n                  ${text}\\\\\\n              </prosody >\\\\\\n            </mstts:express-as>\\\\\\n          </voice >\\\\\\n        </speak > `\\n    return ssml;\\n};\\nfunction preview() {\\n    /*\\n    let 文字 = '实话告诉你，小棉袄是真的帅';\\n    let 角色 = getItem(\\\"角色\\\", 'zh-CN-XiaoxiaoNeural');\\n    let 风格 = 'general';\\n    let 语速 = '0%'; //-100%到200%\\n    let 音调 = '0%'; //-50%到50%\\n    let 扮演 = ''; //只有部分角色有\\n    */\\n    let ssml = createSSML(文字, 角色, 风格, 语速, 音调)\\n    let 音频格式 = 'riff-8khz-8bit-mono-mulaw';//低音质\\n    //let 音频格式 = 'audio-48khz-192kbitrate-mono-mp3';//高音质\\n    let headers = {\\n        'Content-Type': 'text/plain',\\n        'Authorization': 'Bearer',\\n        'Format': 音频格式\\n    };\\n\\n    //备用：https://ms-ra-forwar.Vercel.app/api/azure\\n    //国外小水管，容易崩，自己搭最稳定：https://github.com/wxxxcxx/ms-ra-forwarder\\n    let res = request('http://test1.haikuoshijie.cn/api/azure', {\\n        method: 'post',\\n        headers: headers,\\n        body: ssml,\\n        toHex: true\\n    })\\n    return res\\n}\\nlet p = \\\"hiker://files/cache/微软语音合成.mp3\\\";\\nvar 文件 = preview()\\ndeleteFile(p)\\nwriteHexFile(p, 文件);\\nrefreshX5WebView(getPath(p + '?t=' + JSON.stringify(new Date().getTime())))\\n//return的值请放在eval外面\"},{\"col_type\":\"movie_3\",\"name\":\"角色选框\",\"path\":\"角色选框\",\"rule\":\"d.push({\\n    title: \\\"语音（\\\" + 角色名.split('（')[0] + \\\"）\\\",\\n    url: $(JSON.parse(request(ln + '缓存选名组.json')), 2, \\\"选择角色\\\").select(function(ln, 选名组, 真名组, voices) {\\n        let 选择 = []\\n        let input0 = input\\n        input = input.replace(/🔻/g, \\\"\\\")\\n        for (let i in 选名组) {\\n            var tss = new RegExp(input).test(选名组[i]);\\n            if (tss == true) {\\n                var 角色 = 真名组[i];\\n                选名组[i] = '🔻' + 选名组[i].replace(/🔻/g, \\\"\\\");\\n            } else {\\n                选名组[i] = 选名组[i].replace(/🔻/g, \\\"\\\");\\n            }\\n            选择.push(选名组[i])\\n            writeFile(ln + '缓存选名组.json', JSON.stringify(选择));\\n        }\\n\\n        setItem(\\\"角色\\\", 角色);\\n        setItem(\\\"角色名\\\", input);\\n        let 风格选择, 风格名;\\n        if (getItem('角色名') != input0) {\\n            风格选择 = getItem('风格', 'general')\\n            风格名 = getItem('风格名', '正常的')\\n        } else {\\n            风格选择 = 'general'\\n            风格名 = '正常的'\\n        }\\n        setItem('风格', 风格选择)\\n        setItem('风格名', 风格名)\\n        /* 说话风格*/\\n        deleteItem('风格')\\n        let 风格arr = ln + '微软语音风格.json';\\n        let voiceName = 角色 || 'zh-CN-XiaoxiaoNeural';\\n        //log(voices)\\n        let voice = voices[voiceName];\\n        let styleList = voice['StyleList']\\n        if (styleList) {\\n            writeFile(风格arr, '')\\n            styleList.forEach(style => {\\n                let 所有风格 = style;\\n                //log(所有风格)\\n                let 风格array = request(风格arr) || '[]'\\n                风格array = JSON.parse(风格array)\\n                风格array.push(所有风格)\\n                writeFile(风格arr, JSON.stringify(风格array));\\n            });\\n            let 风格array = JSON.parse(request(风格arr))\\n            风格array.unshift('general')\\n            writeFile(风格arr, JSON.stringify(风格array));\\n            \\n            eval(JSON.parse(fetch(\\\"hiker://page/翻译\\\")).rule)\\n            addItemAfter('分割线', {\\n                url: eval(JSON.parse(fetch(\\\"hiker://page/风格\\\")).rule),\\n                col_type: \\\"text_1\\\",\\n                title: '““”” <small><font color=grey>' + '&#8195说话风格：' + 风格名 + '</font> </small>',\\n                extra: {\\n                    id: '风格'\\n                }\\n            });\\n            setItem('锁定风格', '有')\\n            \\n        } else {\\n            setItem('锁定风格', '无')\\n        }\\n\\n        updateItem(\\\"角色\\\", {\\n            'title': \\\"语音（\\\" + input.split('（')[0] + \\\"）\\\",\\n            'url': $(选择, 2, \\\"选择角色\\\").select(arguments.callee, ln, 选名组, 真名组, voices)\\n        });\\n        updateItem(\\\"阅读\\\", {\\n            url: $('生成支持【阅读ledago】的语音引擎\\\\n\\\\n' + '♦️当前：' + input.split('（')[0] +'（'+风格名+'）'+ '\\\\n\\\\n请在阅读朗读设置中点添加，粘贴源').confirm(() => {\\n                eval(JSON.parse(fetch(\\\"hiker://page/导入到阅读\\\")).rule)\\n                return 'hiker://empty';\\n            }),\\n        });\\n\\n        let 文字 = '哈哈哈哈哈，实话告诉你，小棉袄是真的帅';\\n        let lj = 'hiker://files/cache/tts参数.json'\\n        let 参数 = request(lj) || '{}';\\n        参数 = JSON.parse(参数)\\n        参数['角色'] = 角色;\\n        writeFile(lj, JSON.stringify(参数))\\n\\n        let 语速 = '0%'; //-100%到200%\\n        let 音调 = '0%'; //-50%到50%\\n        let 风格 = 'general';\\n        var saveF = \\\"hiker://files/cache/微软tts角色预览/\\\" + input + '.mp3';\\n        let cache = request(saveF)\\n        if (cache) {\\n            refreshX5WebView(getPath(saveF))\\n        } else {\\n            eval(JSON.parse(fetch(\\\"hiker://page/合成朗读\\\")).rule)\\n            //合成朗读已传出'文件'变量\\n            writeHexFile(saveF, 文件);\\n        }\\n    }, ln, 选名组, 真名组, voices),\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        id: \\\"角色\\\"\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"导入到阅读\",\"path\":\"导入到阅读\",\"rule\":\"let 角色 = getItem(\\\"角色\\\",'zh-CN-XiaoxiaoNeural')\\nlet 角色名 = getItem(\\\"角色名\\\",'晓晓（zh-CN）').split('（')[0];\\nlet 风格 = getItem('风格', 'general')\\nlet 风格名 = getItem('风格名', '正常的')\\nlet 音调 = ((getItem(\\\"音调\\\", '1') - 1) * 100) / 2 + '%';\\nlet legado = {\\\"name\\\": \\\"微软：\\\"+角色名+\\\"（\\\"+风格名+\\\"）\\\",\\t\\\"contentType\\\": \\\"audio/x-wav\\\",\\t\\\"header\\\": \\\"{\\\\\\\"Content-Type\\\\\\\":\\\\\\\"text/plain\\\\\\\",\\\\\\\"Authorization\\\\\\\":\\\\\\\"Bearer \\\\\\\",\\\\\\\"Format\\\\\\\":\\\\\\\"riff-8khz-8bit-mono-mulaw\\\\\\\"}\\\",\\t\\\"url\\\": `https://ms-ra-forwar.Vercel.app/api/azure,{\\\\\\\"method\\\\\\\":\\\\\\\"POST\\\\\\\",\\\\\\\"body\\\\\\\":\\\\\\\"<speak xmlns=\\\\\\\\\\\\\\\"http://www.w3.org/2001/10/synthesis\\\\\\\\\\\\\\\" xmlns:mstts=\\\\\\\\\\\\\\\"http://www.w3.org/2001/mstts\\\\\\\\\\\\\\\" xmlns:emo=\\\\\\\\\\\\\\\"http://www.w3.org/2009/10/emotionml\\\\\\\\\\\\\\\" version=\\\\\\\\\\\\\\\"1.0\\\\\\\\\\\\\\\" xml:lang=\\\\\\\\\\\\\\\"zh-CN\\\\\\\\\\\\\\\"><voice name=\\\\\\\\\\\\\\\"${角色}\\\\\\\\\\\\\\\"><mstts:express-as style=\\\\\\\\\\\\\\\"${风格}\\\\\\\\\\\\\\\" styledegree=\\\\\\\\\\\\\\\"1.0\\\\\\\\\\\\\\\"><prosody volume=\\\\\\\\\\\\\\\"+100.00%\\\\\\\\\\\\\\\" rate=\\\\\\\\\\\\\\\"{{(speakSpeed - 10) * 2}}%\\\\\\\\\\\\\\\" pitch=\\\\\\\\\\\\\\\"${音调}\\\\\\\\\\\\\\\">{{String(speakText).replace(/&/g, '&amp;').replace(/\\\\\\\\\\\\\\\"/g, '&quot;').replace(/'/g, '&apos;').replace(/</g, '&lt;').replace(/>/g, '&gt;')}}</prosody> </mstts:express-as></voice></speak>\\\\\\\"}`}\\nlet ln = 'hiker://files/cache/';\\nwriteFile(ln +'生成阅读语音引擎.json', JSON.stringify(legado))\\ncopy(JSON.stringify(legado));\"},{\"col_type\":\"movie_3\",\"name\":\"保存音频文件\",\"path\":\"保存\",\"rule\":\"eval(JSON.parse(fetch(\\\"hiker://page/合成朗读\\\")).rule); \\nvar saveF = \\\"hiker://files/cache/微软tts/\\\";\\nvar 文件名 = getMyVar('文件名', '');\\nif (文件名 == ''){\\n   文件名 = '微软tts'+$.dateFormat(new Date,\\\"yyyyMMddHHmmss\\\")+'.mp3'\\n} else{\\n   文件名 = 文件名 +'.mp3'\\n}\\nvar saveD = saveF + 文件名\\n//合成朗读已传出'文件'变量\\nwriteHexFile(saveD, 文件);\"},{\"col_type\":\"movie_3\",\"name\":\"管理文件\",\"path\":\"管理文件\",\"rule\":\"<!--工具来自L佬，感谢L大神-->\\nlet Loy = require(\\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\");\\nd.push({\\n    title: \\\"📂 管理文件\\\",\\n    url: Loy.fileSelectionUri({\\n        callback: $.toString(() => {\\n            setPageTitle('文件列表')\\n             if (TYPE=='.mp3') op='💽 播   放'\\n             if (TYPE=='.txt') op='📒 打   开'\\n            return $(['📝 重命名', '🗑️ 删   除', op, '🌀 分   享'], 2, \\\"选择操作\\\").select((PATH,TYPE, ID) => {\\n                if (input == '🌀 分   享') {\\n                    return 'share://file://' + PATH\\n                } else if (input == '🗑️ 删   除') {\\n                    return $('⛔ 确定删除吗?').confirm((PATH, ID) => {\\n                        let File = require(\\\"https://gitcode.net/qq_32394351/dr/-/raw/master/js/File.js\\\");\\n                        if(File.deleteFiles(PATH)){\\n                            deleteItem(ID);\\n                            return \\\"toast://已删除\\\";\\n                        }else{\\n                            return \\\"toast://删除失败\\\";\\n                        }\\n                    }, PATH, ID);\\n                } else if (input == '💽 播   放') {\\n                    return '#isMusic=true#' + 'file://' + PATH\\n                }else if (input == '📒 打   开') {\\n                    return 'editFile://' + 'file://' + PATH\\n                } else {\\n                    //重命名\\n                    return $(PATH.substring((PATH.lastIndexOf(\\\"/\\\") + 1), PATH.lastIndexOf(\\\".\\\")), \\\"重新命名\\\").input(function(PATH,TYPE,ID) {\\n                        let File = require(\\\"https://gitcode.net/qq_32394351/dr/-/raw/master/js/File.js\\\");\\n                        if(File.renameFile(PATH, input + TYPE)){\\n                            let v = findItem(ID);\\n                            v.title=input + TYPE;\\n                            v.extra.path = PATH.substring(0,(PATH.lastIndexOf(\\\"/\\\") + 1))+v.title;\\n                            updateItem(v);\\n                            return \\\"toast://已重命名\\\";\\n                        }else{\\n                            return \\\"toast://重命名失败\\\";\\n                        }\\n                    }, PATH, TYPE, ID);\\n                }\\n            }, PATH, TYPE, ID)\\n        }),\\n        //fileType: \\\".mp3\\\",//仅显示的文件格式\\n        exitSearchRefresh:true,//关搜索刷新列表\\n        initialPath: \\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/微软tts/\\\",//初始目录\\n        rootDirPath: \\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/微软tts/\\\",//根目录\\n        requireUrl: \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\",\\n    }),\\n    col_type: \\\"text_2\\\",\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"文转语音\",\"path\":\"文转语音\",\"rule\":\"d.push({\\n    title: \\\"💬 文转语音\\\",\\n    url: $('#noLoading#').lazyRule((真名组) => {\\n         let 角色 = getItem(\\\"角色\\\", 'zh-CN-XiaoxiaoNeural');\\n         let 风格 = getItem('风格', 'general')\\n         let 文字 = getMyVar(\\\"文字\\\", \\\"\\\");\\n         if (文字 == \\\"\\\") return \\\"toast://请输入文本\\\";\\n         let 语速 = (getItem(\\\"语速\\\", '1') - 1) * 100 + '%';\\n         let 音调 = ((getItem(\\\"音调\\\", '1') - 1) * 100) / 2 + '%';\\n         var 文件名 = getMyVar(\\\"文件名\\\", \\\"\\\");\\n         if (文件名 == '') {\\n             return $('没有输入文件名，文件将自动命名').confirm((真名组,角色,风格,语速,音调,文字) => {\\n                   showLoading('语音合成中')\\n                   eval(JSON.parse(fetch(\\\"hiker://page/保存\\\")).rule);\\n                   hideLoading() \\n                   return 'toast://朗读中';\\n              },真名组,角色,风格,语速,音调,文字)\\n        } else {\\n            showLoading('语音合成中')\\n            eval(JSON.parse(fetch(\\\"hiker://page/保存\\\")).rule);\\n            hideLoading() \\n            return 'toast://朗读中';\\n        }\\n    },真名组),\\n    col_type: \\\"text_2\\\",\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"语速\",\"path\":\"语速\",\"rule\":\"d.push({\\n    title: \\\"语速（\\\" + getItem(\\\"语速\\\", '1') + \\\"）\\\",\\n    url: $(getItem(\\\"语速\\\", \\\"1\\\"), \\\"语速 0.00 到 3\\\").input(function() {\\n        input = input.replace(/[^\\\\d\\\\.]/g, '');\\n        if (input == 01) input = '1';\\n        if (input == 02) input = '2';\\n        if (input == 03) input = '3';\\n        if (!input) input = '1';\\n        if (input > 3) input = '3';\\n        if (input < 0) input = '0';\\n        input = JSON.stringify(Math.round(input * 100) / 100);\\n        setItem(\\\"语速\\\", input)\\n        let lj='hiker://files/cache/tts参数.json'\\n        let 参数 = request(lj) || '{}';\\n        参数=JSON.parse(参数)\\n        参数['语速']= input;\\n        writeFile(lj, JSON.stringify(参数))\\n        updateItem(\\\"语速\\\", {\\n            \\\"title\\\": \\\"语速（\\\" + input + \\\"）\\\",\\n            'url': $(input, \\\"语速 0.00 到 3\\\").input(arguments.callee)\\n        });\\n        updateItem(\\\"试听\\\", {\\n            \\\"url\\\": eval(JSON.parse(fetch(\\\"hiker://page/试听\\\")).rule)\\n        })\\n        return \\\"toast://已设置语速为\\\" + input\\n    }),\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        id: \\\"语速\\\"\\n    }\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"音调\",\"path\":\"音调\",\"rule\":\"d.push({\\n    title: \\\"音调（\\\" + getItem(\\\"音调\\\", '1') + \\\"）\\\",\\n    url: $(getItem(\\\"音调\\\", \\\"1\\\"), \\\"音调 0.00 到 2\\\").input(function() {\\n        input = input.replace(/[^\\\\d\\\\.]/g, '')\\n        if (!input) input = '1';\\n        if (input == 01) input = '1';\\n        if (input == 02) input = '2';\\n        if (input > 2) input = '2';\\n        if (input < 0) input = '0';\\n        input = JSON.stringify(Math.round(input * 100) / 100);\\n        setItem(\\\"音调\\\", input)\\n        let lj = 'hiker://files/cache/tts参数.json'\\n        let 参数 = request(lj) || '{}';\\n        参数 = JSON.parse(参数)\\n        参数['音调'] = input;\\n        writeFile(lj, JSON.stringify(参数))\\n        updateItem(\\\"试听\\\", {\\n            \\\"url\\\": eval(JSON.parse(fetch(\\\"hiker://page/试听\\\")).rule)\\n        });\\n        updateItem(\\\"音调\\\", {\\n            \\\"title\\\": \\\"音调（\\\" + input + \\\"）\\\",\\n            'url': $(input, \\\"音调 0.00 到 2\\\").input(arguments.callee)\\n        });\\n        updateItem(\\\"阅读\\\", {\\n            url: $('生成支持【阅读ledago】的语音引擎\\\\n\\\\n' + '♦️当前：' + getItem(\\\"角色名\\\",'晓晓（zh-CN）').split('（')[0]+\\\"（\\\"+getItem('风格名', '正常的')+\\\"）\\\" + '\\\\n\\\\n请在阅读朗读设置中点添加，粘贴源').confirm(() => {\\n                eval(JSON.parse(fetch(\\\"hiker://page/导入到阅读\\\")).rule)\\n                return 'hiker://empty';\\n            }),\\n        });\\n        return \\\"toast://已设置音调为\\\" + input\\n    }),\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        id: \\\"音调\\\"\\n    }\\n})\\nd.push({\\n    col_type: 'line',\\n    extra: {\\n        id: \\\"分割线\\\"\\n    }\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"载入数据\",\"path\":\"载入数据\",\"rule\":\"let ln = 'hiker://files/cache/';\\nlet list = request(ln + '微软声音选择列表.json')\\nif (!list) {\\n    //备用：https://ms-ra-forwar.Vercel.app/api/azure\\n    //国外小水管，容易崩，自己搭最稳定：https://github.com/wxxxcxx/ms-ra-forwarder\\n    let load_list = fetch('http://test1.haikuoshijie.cn/api/azure');\\n    writeFile(ln + '微软声音选择列表.json', load_list);\\n    list = request(ln + '微软声音选择列表.json')\\n}\\nvar voices = {};\\nvar 名组 = ln + '微软语音中文名组.json';\\nlist = JSON.parse(list)\\n\\nlist.forEach(item => {\\n    if (['zh-CN', 'zh-TW', 'zh-HK'].includes(item['Locale'])) {\\n        voices[item['ShortName']] = item;\\n        writeFile(ln + '微软目标数据.json', JSON.stringify(voices));\\n\\n        let 真名 = item['ShortName'];\\n        let 显示名 = item['LocalName'] + '（' + item['Locale'] + '）';\\n        let 名字组 = request(名组) || '{}'\\n        if (名字组.indexOf(显示名) == -1) {\\n            名字组 = JSON.parse(名字组);\\n            名字组[显示名] = 真名;\\n            writeFile(名组, JSON.stringify(名字组));\\n        }\\n\\n    }\\n});\\n\\nvoices = JSON.parse(request(ln + '微软目标数据.json'))\\n/* 解锁微软内测角色 */\\neval(JSON.parse(fetch(\\\"hiker://page/新角色\\\")).rule)\\nvoices = Object.assign(voices, 新角色)\\nwriteFile(ln + '微软目标数据.json', JSON.stringify(voices));\\nvoices = JSON.parse(request(ln + '微软目标数据.json'))\\nlet o = {};\\nObject.values(voices).forEach(it => o[it.LocalName + '（' + it.Locale + '）'] = it.ShortName)\\n//log (o)\\nvar 中文组名 = o\\n//var 中文组名 = JSON.parse(request(名组))\\nlet 选名组 = Object.keys(中文组名)\\nlet 真名组 = Object.values(中文组名)\\nvar 角色名 = getItem(\\\"角色名\\\", '晓晓（zh-CN）');\\nlet 风格名 = getItem('风格名', '正常的')\\nlet 缓存选名组 = request(ln + '缓存选名组.json');\\nif (!缓存选名组) writeFile(ln + '缓存选名组.json', JSON.stringify(选名组));\"},{\"col_type\":\"movie_3\",\"name\":\"搭配试听\",\"path\":\"搭配试听\",\"rule\":\"d.push({\\n    title: \\\"🔊 搭配效果\\\",\\n    url: eval(JSON.parse(fetch(\\\"hiker://page/试听\\\")).rule),\\n    col_type: \\\"text_2\\\",\\n    extra: {\\n        id: \\\"试听\\\"\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"文本框\",\"path\":\"文本框\",\"rule\":\"d.push({\\n    col_type: 'x5_webview_single',\\n    desc: '0&&float'\\n}, {\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入要转换的文本\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"文字\\\"),\\n        type: \\\"textarea\\\",\\n        height: 5,\\n        highlight: true,\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"文字\\\", input.replace(/<[^<>]+>/g, '').substring(0,1399));\\n        })\\n    }\\n}, {\\n    url: \\\"\\\",\\n    col_type: \\\"input\\\",\\n    desc: \\\"输入要生成的文件名，无需后缀\\\",\\n    extra: {\\n        titleVisible: false,\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"文件名\\\", input);\\n        })\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"试听url\",\"path\":\"试听\",\"rule\":\"$('#noLoading#').lazyRule(() => {\\n    //refreshPage()\\n    let 文字 = (getMyVar(\\\"文字\\\",'')||'小棉袄除了帅，还啥都会，嘿嘿嘿嘿').substring(0,30);\\n    let 角色 = getItem(\\\"角色\\\", 'zh-CN-XiaoxiaoNeural');\\n    let 风格 = getItem('风格', 'general')\\n    let 语速 = (getItem(\\\"语速\\\", '1') - 1) * 100 + '%';\\n    let 音调 = ((getItem(\\\"音调\\\", '1') - 1) * 100) / 2 + '%';\\n    eval(JSON.parse(fetch(\\\"hiker://page/合成朗读\\\")).rule)\\n    return 'toast://角色试听';\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"外部引用\",\"path\":\"引用\",\"rule\":\"function 微软tts(arr, TEXT) {\\n    putVar('微软合成保存', '未')\\n    deleteFile(\\\"hiker://files/cache/微软tts/外调朗读.mp3\\\")\\n    arr.unshift({\\n        desc: '0&&float',\\n        col_type: 'x5_webview_single',\\n    }, {\\n        col_type: 'icon_small_3',\\n        url: \\\"hiker://empty\\\",\\n    }, {\\n        title: '🔈 朗读',\\n        col_type: 'text_3',\\n        url: $('#noLoading#').lazyRule(function(TEXT) {\\n            let 文字;\\n            if (TEXT == '' || TEXT == undefined) {\\n                文字 = '内容为空';\\n            } else {\\n                文字 = TEXT.replace(/<[^<>]+>/g, '').substring(0, 1399);\\n            }\\n            // log(文字)\\n            let lj = 'hiker://files/cache/tts参数.json'\\n            let 参数 = request(lj) || '{}';\\n            参数 = JSON.parse(参数)\\n            let 角色 = 参数.角色 || 'zh-CN-XiaoxiaoNeural';\\n            let 风格 = 参数.风格 || 'general';\\n            let 语速 = 参数.语速 || 1;\\n            语速 = (语速 - 1) * 100 + '%';\\n            let 音调 = 参数.音调 || 1;\\n            音调 = ((音调 - 1) * 100) / 2 + '%';\\n            let 外调判断 = request(\\\"hiker://files/cache/微软语音外调判断.json\\\")\\n            var saveF = \\\"hiker://files/cache/微软tts/外调朗读.mp3\\\";\\n            //let cache = request(saveF)\\n\\n            let r = \\\"hiker://files/cache/微软tts/\\\" + '[保存]外调朗读' + $.dateFormat(new Date, \\\"yyyyMMddHHmmss\\\");\\n            let sn = 'hiker://files/cache/微软外调保存名'\\n            writeFile(sn, r)\\n            r = request(sn)\\n            if (外调判断 === 文字 && fileExist(saveF) == true) {\\n                confirm({\\n                    title: '微软TTS提示',\\n                    content: '文章已合成播放过\\\\n\\\\n♦️是否保存成mp3文件？',\\n                    confirm: $.toString((saveF, sn, r, 文字) => {\\n                        return $('', \\\"如果输入为空，将自动命名\\\").input((saveF, sn, r, 文字) => {\\n                            let name = input;\\n                            if (name == '') {\\n                                name = r\\n                            } else {\\n                                name = \\\"hiker://files/cache/微软tts/\\\" + input\\n                            }\\n                            let sf = fetch(saveF, {\\n                                toHex: true\\n                            })\\n                            writeHexFile(name + '.mp3', sf)\\n                            writeFile(name + '.txt', 文字)\\n                            writeFile(sn, name + '.mp3')\\n                            updateItem(\\\"引入微软语音\\\", {\\n                                url: $('#noLoading#').lazyRule(() => {\\n                                    let s = request('hiker://files/cache/微软外调保存名') refreshX5WebView(getPath(s))\\n                                    return 'toast://mp3文件播放中';\\n                                }),\\n                            });\\n                            refreshX5WebView(getPath(saveF))\\n                            return 'toast://音频已保存为mp3文件\\\\n文章已保存为text文本';\\n                        }, saveF, sn, r, 文字)\\n                    }, saveF, sn, r, 文字),\\n\\n                    cancel: $.toString((saveF) => {\\n                        refreshX5WebView(getPath(saveF))\\n                        return 'toast://重新播放中';\\n                    }, saveF)\\n                });\\n                return 'hiker://empty'\\n            } else {\\n                showLoading('语音合成中')\\n                eval(JSON.parse(fetch(\\\"hiker://page/合成朗读?rule=微软语音\\\")).rule)\\n                hideLoading()\\n                //合成朗读已传出'文件'变量\\n                writeHexFile(saveF, 文件);\\n                writeFile(\\\"hiker://files/cache/微软语音外调判断.json\\\", 文字)\\n                return 'toast://开始朗读';\\n            }\\n        }, TEXT),\\n        extra: {\\n            id: \\\"引入微软语音\\\"\\n        }\\n    }, {\\n        col_type: 'blank_block',\\n    });\\n}\\n/*\\n<!-- 以下两行调用，d为你打印的数组名，text这里只做了简单处理，限制了文本长度 -->\\n\\neval(JSON.parse(fetch(\\\"hiker://page/引用?rule=微软语音\\\")).rule);\\n微软tts(d, text)\\n\\n*/\"},{\"col_type\":\"movie_3\",\"name\":\"风格选框\",\"path\":\"风格选框\",\"rule\":\"try {\\n    eval(JSON.parse(fetch(\\\"hiker://page/翻译\\\")).rule)\\n    if (getItem('锁定风格') == '有') {\\n\\n        d.push({\\n            url: eval(JSON.parse(fetch(\\\"hiker://page/风格\\\")).rule),\\n            col_type: \\\"text_1\\\",\\n            title: '““”” <small><font color=grey>' + '&#8195说话风格：' + getItem('风格名', '正常的') + '</font> </small>',\\n            extra: {\\n                id: '风格'\\n            }\\n        })\\n    }\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"风格url\",\"path\":\"风格\",\"rule\":\"$(风格翻译, 2, \\\"（\\\" + getItem('角色名').split('（')[0] + \\\"）\\\" + '说话风格').select(function(翻译) {\\n    let 选中风格 = Object.keys(翻译)[Object.values(翻译).indexOf(input)]\\n    //log(选中风格)\\n    setItem('风格名', input)\\n    setItem('风格', 选中风格)\\n    let lj = 'hiker://files/cache/tts参数.json'\\n    let 参数 = request(lj) || '{}';\\n    参数 = JSON.parse(参数)\\n    参数['风格'] = 选中风格;\\n    writeFile(lj, JSON.stringify(参数))\\n    updateItem(\\\"风格\\\", {\\n        'title': '““”” <small><font color=grey>' + '&#8195说话风格：' + input + '</font> </small>',\\n    });\\n    updateItem(\\\"阅读\\\", {\\n        url: $('生成支持【阅读ledago】的语音引擎\\\\n\\\\n' + '♦️当前：' + getItem(\\\"角色名\\\", '晓晓（zh-CN）').split('（')[0] + '（' + input + '）' + '\\\\n\\\\n请在阅读朗读设置中点添加，粘贴源').confirm(() => {\\n            eval(JSON.parse(fetch(\\\"hiker://page/导入到阅读\\\")).rule)\\n            return 'hiker://empty';\\n        }),\\n    });\\n\\n}, 翻译)\"},{\"col_type\":\"movie_3\",\"name\":\"风格翻译\",\"path\":\"翻译\",\"rule\":\"var 翻译 = {\\n    \\\"general\\\": \\\"正常的\\\",\\n    \\\"angry\\\": \\\"愤怒的\\\",\\n    \\\"assistant\\\": \\\"售货员\\\",\\n    \\\"affectionate\\\": \\\"充满深情\\\",\\n    \\\"chat\\\": \\\"闲聊\\\",\\n    \\\"calm\\\": \\\"平静的\\\",\\n    \\\"cheerful\\\": \\\"快乐的\\\",\\n    \\\"customerservice\\\": \\\"客服专员\\\",\\n    \\\"disgruntled\\\": \\\"不满的\\\",\\n    \\\"depressed\\\": \\\"沮丧的\\\",\\n    \\\"embarrassed\\\": \\\"尴尬的\\\",\\n    \\\"envious\\\": \\\"羡慕嫉妒的\\\",\\n    \\\"fearful\\\": \\\"害怕的\\\",\\n    \\\"gentle\\\": \\\"轻柔的\\\",\\n    \\\"lyrical\\\": \\\"抒情的\\\",\\n    \\\"sad\\\": \\\"悲哀的\\\",\\n    \\\"serious\\\": \\\"严肃的\\\",\\n    \\\"newscast\\\": \\\"新闻广播\\\",\\n    \\\"newscast-casual\\\": \\\"休闲广播\\\",\\n    \\\"narration-professional\\\": \\\"专业叙事\\\",\\n    \\\"narration-relaxed\\\": \\\"轻松叙事\\\",\\n    \\\"poetry-reading\\\": \\\"诗歌朗诵\\\",\\n    \\\"advertisement_upbeat\\\": \\\"欢快的广告\\\",\\n    \\\"sports_commentary\\\": \\\"体育解说\\\",\\n    \\\"sports_commentary_excited\\\": \\\"激动的解说\\\",\\n    \\\"documentary-narration\\\": \\\"纪录片叙事\\\"\\n}\\nlet 风格原组 = request('hiker://files/cache/微软语音风格.json') || '[]'\\n风格原组 = JSON.parse(风格原组)\\nlet 风格翻译 = 风格原组.map((f) => 翻译[f])\\nwriteFile('hiker://files/cache/微软语音风格翻译.json', JSON.stringify(风格翻译))\"},{\"col_type\":\"movie_3\",\"name\":\"初用提示\",\"path\":\"初用\",\"rule\":\"if (!getItem(\\\"TTSstartUse\\\",false)) {\\n    toast(\\\":-)初次见面，请多关照\\\");\\n    confirm({\\n        title: \\\"使用须知\\\",\\n        content: \\\"1.此小程序主要为视频创作者提供语音合成等功能\\\\n\\\\n2.外调朗读在当前页面未刷新的情况下，再次点击朗读按钮可将合成文件保存，为书单号创作带来福利\\\\n\\\\n3.非专业人事，不需要盲目保留此小程序\\\",\\n        confirm: \\\"setItem('TTSstartUse','1');refreshPage();'toast://感谢您的支持'\\\",\\n        cancel: \\\"setItem('TTSstartUse','1');refreshPage();'toast://感谢您的支持'\\\"\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解锁新角色\",\"path\":\"新角色\",\"rule\":\"let 新角色 = {\\t\\\"zh-CN-XiaomengNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"晓梦\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-XiaomengNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"chat\\\"]\\t},\\t\\\"zh-CN-XiaoyiNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"晓伊\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-XiaoyiNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"angry\\\",\\\"depressed\\\",\\\"affectionate\\\",\\\"cheerful\\\",\\\"fearful\\\",\\\"sad\\\",\\\"embarrassed\\\",\\\"serious\\\",\\\"gentle\\\"]\\t},\\t\\\"zh-CN-XiaozhenNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"晓甄\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-XiaozhenNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"angry\\\",\\\"disgruntled\\\",\\\"cheerful\\\",\\\"fearful\\\",\\\"sad\\\",\\\"serious\\\"]\\t},\\t\\\"zh-CN-YunfengNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"云枫\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-YunfengNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"angry\\\",\\\"disgruntled\\\",\\\"cheerful\\\",\\\"fearful\\\",\\\"sad\\\",\\\"serious\\\",\\\"depressed\\\"]\\t},\\t\\\"zh-CN-YunhaoNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"云皓\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-YunhaoNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"advertisement_upbeat\\\"]\\t},\\t\\\"zh-CN-YunjianNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"云健\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-YunjianNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"narration-relaxed\\\",\\\"sports_commentary\\\",\\\"sports_commentary_excited\\\"]\\t},\\t\\\"zh-CN-YunxiaNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"云夏\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-YunxiaNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"narration-relaxed\\\",\\\"calm\\\",\\\"fearful\\\",\\\"cheerful\\\",\\\"angry\\\",\\\"sad\\\"]\\t},\\t\\\"zh-CN-YunzeNeural\\\": {\\t\\t\\\"LocalName\\\": \\\"云泽\\\",\\t\\t\\\"ShortName\\\": \\\"zh-CN-YunzeNeural\\\",\\t\\t\\\"Locale\\\": \\\"zh-CN\\\",\\t\\t\\\"StyleList\\\": [\\\"calm\\\",\\\"fearful\\\",\\\"cheerful\\\",\\\"disgruntled\\\",\\\"serious\\\",\\\"angry\\\",\\\"sad\\\",\\\"depressed\\\",\\\"documentary-narration\\\"]\\t}}\"}]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/e924c0d347474528a684bd9850707b58.png"},{"last_chapter_rule":"","title":"播客","author":"","version":5,"type":"music","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nlet Color = \"#f13b66a\";\nlet html = request(\"https://getpodcast.xyz/\");\n//log(html)\nlet class_ids = pdfa(html, \"body&&.classify_title\");\nlet classlists = pdfa(html, \"body&&.pic_list\");\nlet classname0 = \"订阅中心\";\nlet selclass = getItem('SrcBoKe$classname', '播客');\nd.push({\n    title: selclass === classname0 ? '““””<b><span style=\"color:' + Color + '\">' + classname0 + '</span></b>' : classname0,\n    url: $('#noLoading#').lazyRule((classname) => {\n        setItem('SrcBoKe$classname', classname);\n        setItem('SrcBoKe$classid', classname);\n        refreshPage(false);\n        return \"hiker://empty\";\n    }, classname0),\n    col_type: 'scroll_button'\n});\n\nfor (let i in class_ids) {\n    let classname = pdfh(class_ids[i], \"body&&Text\");\n    d.push({\n        title: selclass === classname ? '““””<b><span style=\"color:' + Color + '\">' + classname + '</span></b>' : classname,\n        url: $('#noLoading#').lazyRule((classname, i) => {\n            setItem('SrcBoKe$classname', classname);\n            setItem('SrcBoKe$classid', i);\n            refreshPage(false);\n            return \"hiker://empty\";\n        }, classname, i),\n        col_type: 'scroll_button'\n    });\n}\nif (selclass == classname0) {\n    //订阅中心\n    let {\n        load\n    } = $.require(\"hiker://page/data\");\n    let data = load();\n    for (let it of data) {\n        d.push({\n            title: it.name,\n            url: \"hiker://empty##\" + it.url,\n            img: it.pic,\n            desc: '0',\n            col_type: 'card_pic_3',\n            extra: {\n                title: it.name,\n                pic: it.pic\n            }\n        });\n    }\n\n} else {\n    let id = getItem('SrcBoKe$classid', '0');\n    let lists = pdfa(classlists[Math.floor(id)], \"body&&li\");\n    lists.forEach(item => {\n        try {\n            d.push({\n                title: pdfh(item, \".title&&Text\"),\n                url: \"hiker://empty##\" + pdfh(item, \"a&&href\"),\n                img: pdfh(item, \".pic&&img&&src\"),\n                desc: '0',\n                col_type: 'card_pic_3',\n                extra: {\n                    title: pdfh(item, \".title&&Text\"),\n                    pic: pdfh(item, \".pic&&img&&src\")\n                }\n            });\n        } catch (e) {\n            //log(e.message)\n        }\n    })\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑤音频","detail_col_type":"movie_3","detail_find_rule":"js:\nlet d = [];\n//setPageTitle(MY_PARAMS.title);\nMY_URL = MY_URL.split('##')[1];\nlet {\n    has\n} = $.require(\"hiker://page/data\");\nlet has0 = has(MY_PARAMS.title);\nd.push({\n    title: (has0 ? \"取消\" : \"\") + \"订阅该播客\",\n    url: $(\"#noLoading#\").lazyRule((item, has0) => {\n        let {\n            add,\n            remove\n        } = $.require(\"hiker://page/data\");\n        if (has0) {\n            remove(item.name);\n        } else {\n            add(item)\n        }\n        refreshPage();\n        return \"toast://OK\"\n    }, {\n        name: MY_PARAMS.title,\n        url: MY_URL,\n        pic: MY_PARAMS.pic\n    }, has0),\n    col_type: \"avatar\",\n    desc: \"\",\n    pic_url: MY_PARAMS.pic\n});\nlet html = request(MY_URL);\nlet lists = pdfa(html, \"body&&item\");\n//log(lists)\nlists.forEach(item => {\n    try {\n        d.push({\n            title: item.match(/<title>(.*?)<\\/title>/)[1].replace(/&lt;!\\[CDATA\\[|\\]\\]&gt;|<!\\[CDATA\\[|\\]\\]>/g, ''),\n            desc: pdfh(item, \"pubDate&&Text\"),\n            url: pdfh(item, \"enclosure&&url\"),\n            img: item.indexOf('image href=') == -1 ? MY_PARAMS.pic : item.match(/image href=\"(.*?)\"/)[1],\n            col_type: 'movie_1_left_pic'\n        })\n    } catch (e) {\n\n    }\n})\nif (d.length == 0) {\n    d.push({\n        title: '↻未获取到列表',\n        col_type: \"rich_text\"\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"数据管理\",\"path\":\"data\",\"rule\":\"$.exports = {\\n    load: function() {\\n        return storage0.getItem(\\\"data\\\", []);\\n    },\\n    has: function(name) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        return data.filter(it => it.name == name).length > 0;\\n    },\\n    add: function(item) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        for (let it of data) {\\n            if (it.name == item.name) {\\n                return\\n            }\\n        }\\n        data.push(item);\\n        storage0.setItem(\\\"data\\\", data);\\n    },\\n    remove: function(name) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        data = data.filter(it => it.name != name);\\n        storage0.setItem(\\\"data\\\", data);\\n    }\\n}\"}]","proxy":"","icon":"https://getpodcast.xyz/favicon.ico"},{"last_chapter_rule":"","title":"随机歌曲[词]","author":"1","version":1,"type":"music","url":"hiker://empty##fypage","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\n\nfor(var i=0;i<=20;i++){\nvar html=JSON.parse(request(\"https://api.uomg.com/api/rand.music?sort=%E7%83%AD%E6%AD%8C%E6%A6%9C&format=json\")).data;\n//log(html)\nvar vipurl=html.url;\n//log(vipurl)\nd.push({\ntitle:html.name,\npic:html.picurl+'@Referer=',\nurl:vipurl+$('').lazyRule(() => {          \n    var url=JSON.parse(request(input, {\n                    onlyHeaders: true\n                })).url;\n    log(url)\n    var lrcurl='http://music.163.com/api/song/media?'+input.split('?')[1];\n//log(lrcurl)\nvar lrc=JSON.parse(request(lrcurl)).lyric;\nlog(lrc)\nreturn JSON.stringify({\n                    urls:[url],\n                    lyric:lrc\n                    })\n}),\ncol_type:'icon_2_round'\n})\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#fffe9700"},{"last_chapter_rule":"","title":"每日一听","author":"顺","version":0,"type":"read","url":"https://meiriyiwen.com/random/iphone","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlog(fileExist(\"hiker://files/cache/微软tts/外调朗读.mp3\"))\n/*语音朗读需要导入微软语音小程序*/\nlet d = [];\nlet regexp = /<p>|<\\/p>/g;\nlet paragraph = '　　';\nlet html = request('https://meiriyiwen.com/random/iphone');\nlet list = parseDomForArray(html, '.articleContent&&p');\nfor (let i = 0; i < 10; i++) {\n    d.push({\n        col_type: \"blank_block\"\n    })\n}\nd.push({\n    title: '““””<h4>' + parseDomForHtml(html, '.articleTitle&&h2&&Text') + '</h4>' + '““”” <small><font color=grey>' + parseDomForHtml(html, '.articleAuthorName&&Text') + '</font> </small>',\n    url: 'hiker://empty',\n    col_type: 'text_center_1'\n})\nlet text = (paragraph + list.join('\\n\\n' + paragraph)).replace(regexp, '')\nd.push({\n    title: text,\n    col_type: 'long_text'\n});\nfor (let i = 0; i < 50; i++) {\n    d.push({\n        col_type: \"blank_block\"\n    })\n}\ntry {\n    /*调用微软语音*/\n    eval(JSON.parse(fetch(\"hiker://page/引用?rule=微软语音\")).rule);\n    微软tts(d, text)\n} catch (e) {\n    d.unshift({\n        title: '此小程序作为【微软语音】调用示例，点击导入，可体验朗读的快乐',\n        col_type: 'text_1',\n        url: 'rule://' + base64Encode('海阔视界首页频道规则【微软语音】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=5098')\n    })\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑤音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/c3e6a027c34d47ba82420b6a5b110289.png"},{"last_chapter_rule":"","title":"嘻哈音乐.h5","author":"缘分","version":20220919,"type":"music","url":"http://www.84082.com/fyAll/fypage.html","col_type":"movie_3","class_name":"原创歌手&音乐歌单&高清MV&","class_url":"singers/index/index&gdlist/index&mvlist/hot&","area_name":"网络红歌榜&TOP榜单&DJ舞曲&恋爱的歌&","area_url":"list/hot&list/top&list/djwuqu&list/love&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    var url = pd(request(input), '.dance_wl&&a&&href');\n    if (/\\.mp3/.test(url)) {\n        return url\n    } else {\n        input = input.replace(/.*?mp3\\/(\\w+)\\.html/, 'http://www.84082.com/style/ilingku/play.php?id=$1&type=dance');\n        var url = request('http://www.84082.com/style/ilingku/play.php', {\n            redirect: false,\n            withHeaders: true,\n            body: input.split(\"?\")[1],\n            method: 'POST'\n        }).match(/url\\\\\":\\\\\"(.*?\\.mp3)/)[1].replace(/\\\\/g, '')\n\n        log(url)\n        return url\n    }\n})\ntry {\n    var list = pdfa(getResCode(), '.play_list||.video_list||.singer_list&&li');\n    for (var j in list) {\n        let title = pdfh(list[j], '.name&&Text');\n        d.push({\n            title: title,\n            desc: '',\n            pic_url: pd(list[j], 'img&&src'),\n            url: MY_URL.indexOf('mvlist') > -1 ? pd(list[j], 'a&&href') : MY_URL.indexOf('index') > -1 ? pd(list[j], 'a||a,1&&href').replace('.html', '/fypage.html') + \"#noLoading##gameTheme##noRefresh##background#\" : pd(list[j], 'a||a,1&&href') + lazy,\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            },\n            col_type: MY_URL.indexOf('mvlist') > -1 ? 'movie_2' : MY_URL.indexOf('singers') > -1 ? 'card_pic_3' : MY_URL.indexOf('gdlist') > -1 ? 'card_pic_3' : 'text_1'\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.play_list&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),\n        url: parseDom(list[j], 'a,1||a&&href')\n        /*+ $('').lazyRule(() => {\n            var url = pd(request(input), '.dance_wl&&a&&href')\n            return url \n        })*/\n    });\n}\nres.data = d;\nsetHomeResult(res);\n","search_url":"http://www.84082.com/so/**/fypage.html","group":"⑤音频","detail_col_type":"pic_2_card","detail_find_rule":"js:\nvar d = [];\ntry {\n    var html = getResCode();\n    var arts = pdfa(html, '.download&&li');\n    var tabs = [];\n    for (var i in arts) {\n        tabs.push(pdfh(arts[i], 'Text').split(\"：\")[0])\n    }\n    var conts = pdfa(html, '.download&&li');\n    var lists = [];\n    for (var i in conts) {\n        lists.push(pdfa(conts[i], 'body&&a'))\n    }\n\n    var pic = pd(html,\n        '.play_singer&&img&&src') + '@Referer=';\n    d.push({\n        img: pic,\n        url: pic,\n        col_type: 'pic_1_full'\n    });\n\n    function setTabs(tabs, vari) {\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n    }\n\n    function setLists(lists, index) {\n        var list = lists[index];\n        if (getVar('shsort') == '1') {\n            var list = lists[index].reverse();\n        }\n        for (var j in list) {\n            d.push({\n                title: pdfh(list[j], 'a&&Text'),\n                url: pd(list[j], 'a&&href'),\n                col_type: 'text_2'\n            });\n        }\n    }\n    setTabs(tabs, MY_URL);\n    setLists(lists, getVar(MY_URL, '0'));\n} catch (e) {\n    var html = getResCode();\n    let 传输列表 = []\n    var list = pdfa(html, '.play_list&&li');\n\n    let xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\n    if (xd == false) {\n        for (var j in list) {\n            let first = pdfh(list[0], 'a&&Text');\n            let title = pdfh(list[j], 'a&&Text');\n            let desc = '';\n            let img = parseDom(html, 'img&&src');\n            let url = pd(list[j], 'a&&href') + $('').lazyRule(() => {\n                var url = pd(request(input), '.dance_wl&&a&&href');\n                if (/\\.mp3/.test(url)) {\n                    return url\n                } else {\n                    input = input.replace(/.*?mp3\\/(\\w+)\\.html/, 'http://www.84082.com/style/ilingku/play.php?id=$1&type=dance');\n                    var url = request('http://www.84082.com/style/ilingku/play.php', {\n                        redirect: false,\n                        withHeaders: true,\n                        body: input.split(\"?\")[1],\n                        method: 'POST'\n                    }).match(/url\\\\\":\\\\\"(.*?\\.mp3)/)[1].replace(/\\\\/g, '')\n\n                    log(url)\n                    return url\n                }\n            });\n            /* 快速告诉x5列表样式，很重要 */\n            let col_type = 'text_1'\n            putVar('样式', col_type)\n            putVar('选中颜色', '#3CE68E');\n            if (col_type == 'text_1')\n                xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n            else\n                xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n            d.push({\n                title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n                desc: desc,\n                img: img,\n                col_type: col_type,\n                url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n                    if (getVar('索引') != title) {\n                        refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                        updateItem(getVar('索引', first), {\n                            title: getVar('索引', first)\n                        })\n                        updateItem(title, {\n                            title: xy\n                        })\n                        putVar('索引', title)\n                    } else {\n                        return 'download://' + getVar('播放链接');\n                    }\n                    return 'hiker://empty';\n                }, title, first, xy),\n                extra: {\n                    id: title\n                },\n            });\n\n            传输列表.push({\n                封面: img,\n                曲名: title,\n                歌手: desc,\n                地址: url,\n            })\n        }\n\n        传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n        storage0.putVar('缓存数据', 传输列表)\n        storage0.putVar('数据校对', list)\n    }\n    addListener('onClose', $.toString(() => {\n        clearVar('样式');\n        clearVar('索引');\n        clearVar('播放链接');\n        clearVar('数据校对');\n        clearVar('缓存数据');\n    }))\n    /*\n    let xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\n\n    if (xd == false) {\n        传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n        storage0.putVar('缓存数据', 传输列表)\n        storage0.putVar('数据校对', list)\n    }\n    */\n    传输列表 = storage0.getVar('缓存数据')\n    putVar('音乐数据', JSON.stringify(传输列表))\n    if (MY_PAGE == 1) {\n        d.push({\n            col_type: 'x5_webview_single',\n            desc: '300&&float',\n            extra: {\n                ua: MOBILE_UA,\n                autoPlay: true\n            },\n            url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n        });\n    }\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.84082.com/favicon.ico"},{"last_chapter_rule":"","title":"Xvideos","author":"Timik","version":0,"type":"other","url":"https://m-xvideos.com/fyAll/fypage[firstPage=https://m-xvideos.com/fyAll]","col_type":"movie_2","class_name":"巨屌&巨乳&巨臀&口交&女同&喷出&中出&ASMR","class_url":"c/Big_Cock-34&c/q:hd/Big_Tits-23&c/q:hd/Big_Ass-24&c/q:hd/Blowjob-15&c/q:hd/Lesbian-26&c/q:hd/Squirting-56&c/q:hd/Creampie-40&c/q:hd/ASMR-229","area_name":"肛交&乱搞&成熟&阿拉伯&中&韩&日&泰","area_url":"c/q:hd/Anal-12&c/q:hd/Fucked_Up_Family-81&c/q:hd/Mature-38&c/q:hd/Arab-159&lang/chinese&lang/korean&lang/japanese&lang/thai","sort_name":"","year_name":"少女&黑人&金发&褐发&红发&颜射&群交&自慰","sort_url":"","year_url":"c/q:hd/Teen-13&c/q:hd/Black_Woman-30&c/q:hd/Blonde-20&c/q:hd/Brunette-25&c/q:hd/Redhead-31&c/q:hd/Cumshot-18&c/q:hd/Gangbang-69&c/q:hd/Solo_and_Masturbation-33","find_rule":"js:\nvar d = [];\nif (MY_PAGE==1) {\nd.push({\n    title: \"\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\n//间隔\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'line_blank'\n});}\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.thumb-block');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.title&&Text'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            pic_url: parseDom(list[j], 'img&&data-src'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.title&&Text'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            img: parseDom(list[j], 'img&&data-src'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://m-xvideos.com/?k=**&quality=hd&p=fypage@-1@*0@","group":"⑥①敦伦","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar code = getResCode();\nvar url = code.split(\"html5player.setVideoHLS('\")[1].split(\"'\")[0];\nvar img = code.split(\"html5player.setThumbUrl('\")[1].split(\"'\")[0];\nvar lazyYM = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\n});\nvar hls = request(url).match(/hls-.*?m3u8/g);\nJSON.stringify(hls.sort(function(a, b) {\n    return b.match(/\\d+/) - a.match(/\\d+/)\n}));\nd.push({\n    img: img,\n    col_type: \"pic_1_full\"\n})\nfor (var j in hls) {\n    d.push({\n        title: hls[j].split('-')[1].replace('.m3u8', ''),\n        url: url.split('hls.')[0] + hls[j],\n        col_type: 'text_4'\n    });\n}\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n  title:'类似视频',\n    col_type: 'rich_text'\n});\nvar  json  = JSON.parse(parseDomForHtml(code, '#video-player-bg&&script&&Html').split(';window.wpn_categories')[0].split('var video_related=')[1]);\nfor (var j in json) {\n    d.push({       \n        title: json[j].tf,\n               desc:  json[j].d,\n               pic_url: json[j].i,\n               url: 'https://m-xvideos.com' + json[j].u + lazyYM,\n        col_type: \"movie_2\"\n    })\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"YM\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar code =getResCode();\\nvar url = code.split(\\\"html5player.setVideoHLS('\\\")[1].split(\\\"'\\\")[0];\\nvar img = code.split(\\\"html5player.setThumbUrl('\\\")[1].split(\\\"'\\\")[0];\\nvar lazyYM = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\\n});\\nvar hls = request(url).match(/hls-.*?m3u8/g);\\nJSON.stringify(hls.sort(function(a,b){return b.match(/\\\\d+/) - a.match(/\\\\d+/)}));\\nd.push({\\n    img:img,\\n    col_type:\\\"pic_1_card\\\"\\n})\\nfor (var j in hls) {\\nd.push({\\n    title:hls[j].split('-')[1].replace('.m3u8',''),\\n    url:url.split('hls.')[0]+hls[j],\\n    col_type:'text_4'\\n    });\\n}\\nd.push({\\n    col_type: 'line_blank'\\n});\\nd.push({\\n  title:'类似视频',\\n    col_type: 'rich_text'\\n});\\nvar json = JSON.parse(parseDomForHtml(code, '#video-player-bg&&script&&Html').split(';window.wpn_categories')[0].split('var video_related=')[1]);\\nfor (var j in json) {\\n    d.push({       \\n            title: json[j].tf,\\n               desc: json[j].d,\\n               pic_url: json[j].i,\\n               url: 'https://m-xvideos.com'+json[j].u  + lazyYM ,\\n              col_type:\\\"movie_2\\\"\\n    })\\n}\\nres.data = d;\\nsetHomeResult(res);\"}]","proxy":"","icon":"https://favicon.yandex.net/favicon/v2/https://xvideos.com/?size=32&stub=1"},{"last_chapter_rule":"","title":"NEXE","author":"kingkare 地址发布页：nnney.top","version":1,"type":"video","url":"https://nneam.top/index/fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar  html  =  getResCode();\nvar lazyPD = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/PD', {})).rule);\n});\nvar lazyPH = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/PH', {})).rule);\n});\nvar lazyRC = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/RC', {})).rule);\n});\nif (MY_URL.match(\"index/1\")) {\nd.push({\n    title: \"\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\n//间隔\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'blank_block'\n});\nd.push({\n    col_type: 'line_blank'\n});\n\nd.push({\n    title: '““””<small>'+'分类'+parseDomForHtml(html, 'ul&&li,1&&Text')+'</small>',\n    url: parseDom(html, 'ul&&li,1&&a&&href')+'/page/fypage'+lazyPD,\n    col_type: 'text_4'\n});\n\nd.push({\n    title: '““””<small>'+parseDomForHtml(html, 'ul&&li,2&&Text')+'</small>',\n    url: parseDom(html, 'ul&&li,2&&a&&href')+'/page/fypage'+lazyPD,\n    col_type: 'text_4'\n});\n\nd.push({\n    title: '““””<small>'+parseDomForHtml(html, 'ul&&li,3&&Text')+'</small>',\n    url: parseDom(html, 'ul&&li,3&&a&&href')+lazyPH,\n    col_type: 'text_4'\n});\n\nd.push({\n    title: '““””<small>'+parseDomForHtml(html, 'ul&&li,4&&Text')+'</small>',\n    url: parseDom(html, 'ul&&li,4&&a&&href')+'?page=fypage'+lazyRC,\n    col_type: 'text_4'\n});\n};\n\r\nvar lazy = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\n});\n\r\nvar list = parseDomForArray(html, 'body&&.card:has(.badge)');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.title&&Text'),\ndesc: parseDomForHtml(list[j], '.card-content&&Text'),\r\npic_url: parseDom(list[j], '.media&&data-thumb'),\r\nurl: parseDom(list[j],'a&&href')+lazy,\ncol_type: 'movie_2'\r\n});\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\nvar lazy = $(\"\").rule(() => {\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\n});\n\nvar  list  =  parseDomForArray(html, 'body&&.card');\nfor (var j in list) {\n    d.push({       \n            title:  parseDomForHtml(list[j],  '.title&&Text'),\n               desc: parseDomForHtml(list[j],  '.card-content&&Text'),\n               pic_url: parseDom(list[j],  '.media&&data-thumb')+'@Referer=',\n               url: parseDom(list[j], 'a&&href')+lazy\n    });\n}\nres.data  =  d;\nsetHomeResult(res);","search_url":"/search/page/fypage?key=**","group":"⑥①敦伦","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"YM\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar html = getResCode();\\nsetPageTitle(parseDomForHtml(html,  'h2,1&&Text'))\\nvar lazyYM = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\\n});\\n\\nvar lazy = $('').lazyRule((MY_HOME) => {\\n    var html = request(input).match(/video:(.*?), danmaku/)[1]\\nvar language = {\\n    videoDefault:'自动',\\n    videoAuto:'自动',\\n    videoLow:'极速',\\n    videoHigh:'高清',\\n    danmakuSentSuccess:'弹幕发送成功'\\n};\\nfunction f(e, t) {\\n    t = t || \\\"\\\";\\n    t = md5(t);\\n    for (var a = md5(t.substr(0, 16)), n = md5(t.substr(16, 16)), r = e.substr(0, 4), o = a + md5(a + r), i = o.length, l = (e = window0.atob(e.substr(4))).length, s = \\\"\\\", d = [], p = 0; p <= 255; p++)\\n        d.push(p);\\n    for (var c, u, A, h = [], f = 0; f <= 255; f++)\\n        h[f] = o[f % i].charCodeAt(0);\\n    for (c = u = 0; u < 256; u++) {\\n        c = (c + d[u] + h[u]) % 256;\\n        var m= d[u];\\n        d[u] = d[c],\\n            d[c] = m\\n    }\\n    for (A = c = u = 0; u < l; u++) {\\n        c = (c + d[A = (A + 1) % 256]) % 256;\\n        var b = d[A];\\n        d[A] = d[c],\\n            d[c] = b,\\n            s += String.fromCharCode(e[u].charCodeAt(0) ^ d[(d[A] + d[c]) % 256])\\n    }\\n    return (0 == s.substr(0, 10) || s.substr(0, 10) - Math.round((new Date).getTime() / 1e3) > 0) && s.substr(10, 16) == md5(s.substr(26) + n).substr(0, 16) ? s.substr(26) : \\\"\\\"\\n}\\n\\neval('var json ='+html)\\n\\n    return JSON.stringify({\\n            urls: json.quality.map(video => f(video.url,MY_HOME.replace('https://','')) + \\\"#isVideo=true#\\\"),\\n            names: json.quality.map(video => video.name)\\n        })\\n},MY_HOME)\\nd.push({       \\n         title:  parseDomForHtml(html,  'h2,1&&Text'),\\n          desc: \\\"点击观影\\\",\\n          pic_url: parseDom(html,  'body&&script,5&&Html').split(/pic:\\\"/)[1].split(/\\\", }/)[0]+'@Referer=',\\n          url:  MY_URL+lazy,\\n//parseDom(html,  'body&&script,5&&Html').split(/url: '/)[1].split(/', type/)[0],\\n          col_type:\\\"pic_1_card\\\",\\n          extra: {\\n        blockRules: ['baidu.*.png', '.jpg','.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']\\n                     }\\n});\\n\\nvar  list  =  parseDomForArray(getResCode(), 'body&&.hex-6.margin-bottom-sm');\\nfor (var j in list) {\\n    d.push({       \\n            title:  parseDomForHtml(list[j],  '.title&&Text'),\\n               desc: parseDomForHtml(list[j],  '.duration.badge.bg-black&&Text'),\\n               pic_url: parseDom(list[j],  '.media&&data-thumb')+'@Referer=',\\n               url: parseDom(list[j], 'a&&href') + lazyYM,\\n              col_type:\\\"movie_2\\\"\\n    });\\n}\\n\\nres.data  =  d;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"频道\",\"path\":\"PD\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nvar  html  =  getResCode();\\nvar lazy = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/LB', {})).rule);\\n});\\r\\ntry{\\r\\nvar list = parseDomForArray(html, 'body&&.narArts');\\r\\nfor (var j in list) {  \\r\\nd.push({       \\r\\ntitle: parseDomForHtml(list[j], 'h2&&Text'),       \\r\\ndesc: '0',\\n//desc: parseDomForHtml(list[j], '.badge&&Text'),\\r\\npic_url: pdfh(list[j],'.media&&data-src'),\\r\\nurl: parseDom(list[j],'a&&href')+'/page/fypage'+lazy,\\ncol_type: 'card_pic_2'\\r\\n});\\r\\n}\\r\\n}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"列表\",\"path\":\"LB\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nvar  html  =  getResCode();\\nvar lazy = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/YM', {})).rule);\\n});\\n\\r\\ntry{\\r\\nvar list = parseDomForArray(html, 'body&&.card:has(.badge)');\\r\\nfor (var j in list) {  \\r\\nd.push({       \\r\\ntitle: parseDomForHtml(list[j], '.title&&Text'),\\ndesc: parseDomForHtml(list[j], '.card-content&&Text'),\\r\\npic_url: parseDom(list[j], '.media&&data-thumb'),\\r\\nurl: parseDom(list[j],'a&&href')+lazy,\\ncol_type: 'movie_2'\\r\\n});\\r\\n}\\r\\n}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"排行\",\"path\":\"PH\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nvar  html  =  getResCode();\\nvar lazy = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/LB', {})).rule);\\n});\\n\\nd.push({\\n    title: \\\"搜索\\\",\\n    url:\\\"'hiker://search?s='+input+'&rule=NEXE'\\\",\\n    desc:\\\"请输入搜索关键词\\\",\\n    col_type:\\\"input\\\",\\n})\\n//间隔\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'line_blank'\\n});\\n\\r\\ntry{\\r\\nvar list = parseDomForArray(html, '.best-btn-box&&a');\\r\\nfor (var j in list) {  \\r\\nd.push({       \\r\\ntitle: '““””<small><small>'+parseDomForHtml(list[j], 'a&&Text')+'<small></small>',\\r\\nurl:parseDom(list[j],'a&&href')+'/page/fypage'+lazy,\\ncol_type: 'text_4'\\r\\n});\\r\\n}\\r\\n}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"热词\",\"path\":\"RC\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nvar  html  =  getResCode();\\nvar lazy = $(\\\"\\\").rule(() => {\\neval(JSON.parse(fetch('hiker://page/LB', {})).rule);\\n});\\n\\nif (MY_URL.match(/page=1/)) {\\nd.push({\\n    title: \\\"搜索\\\",\\n    url:\\\"'hiker://search?s='+input+'&rule=NEXE'\\\",\\n    desc:\\\"请输入搜索关键词\\\",\\n    col_type:\\\"input\\\",\\n})\\n//间隔\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'blank_block'\\n});\\nd.push({\\n    col_type: 'line_blank'\\n});\\n};\\n\\r\\ntry{\\r\\nvar list = parseDomForArray(html, '.hot-keywords&&a:not(:matches(幼|小))');\\r\\nfor (var j in list) {\\r\\nd.push({       \\r\\ntitle: '““””<small><small>'+parseDomForHtml(list[j], 'a&&Text')+'<small></small>',\\r\\nurl: parseDom(list[j],'a&&href').replace('search','search/page/fypage')+lazy,\\ncol_type: 'text_4'\\r\\n});\\r\\n}\\r\\n}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"}]","proxy":"","icon":"https://nneam.top/templates/neon/static/favicon.ico"},{"last_chapter_rule":"","title":"pornhub ✈️","author":"TyrantGenesis","version":3,"type":"video","url":"https://cn.pornhub.com/video?o=fyclass&cc=fyarea&page=fypage","col_type":"movie_2","class_name":"最热门&次数多","class_url":"ht&mv","area_name":"美国&日本&韩国&阿根廷&澳大利亚&奥地利&比利时&巴西&加拿大&法国&德国&乌克兰","area_url":"us&jp&kr&ar&au&at&be&br&ca&fr&de&ua","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.videoThumb&&src;\n.time&&Text;\n.title&&a&&Attrhref","searchFind":".videoList&&.videoWrapper;\n.title&&a&&Text;\n.title&&a&&Attrhref;\n.time&&Text;\n.title&&a&&Text;\n.videoThumb&&data-thumb_url","search_url":"https://cn.pornhub.com/video/search?search=**&page=fypage","group":"⑥①敦伦","detail_col_type":"movie_1_left_pic","detail_find_rule":"js:\neval(fetch('hiker://files/TyrantG/GHS/pornhub.js'))\nsecParse()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\npornhub()","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Jable ✈️","author":"TyrantGenesis","version":1,"type":"other","url":"https://jable.tv/fyAll/fypage/?from=fypage","col_type":"movie_2","class_name":"热门&最新","class_url":"hot&new-release","area_name":"主奴調教&直接開啪&中文字幕&凌辱強暴&制服誘惑&角色劇情&盜攝偷 拍&無碼解放&男友視角&多P群交&絲襪美腿&女同歡愉","area_url":"categories/bdsm&categories/sex-only&categories/chinese-subtitle&categories/rape&categories/uniform&categories/roleplay&categories/hidden-cam&categories/uncensored&categories/pov&categories/groupsex&categories/pantyhose&categories/lesbian","sort_name":"","year_name":"3P&4小時以上&Cosplay&NTR&OL&一日十回&下雨天&不倫&中出&主播&乳交&人 妻&便利店&健身房&偶像&偷 拍&催眠&兔女郎&凌辱&出軌&刑具&口交&口 爆&吊帶襪&和服&圖書館","sort_url":"","year_url":"tags/3p&tags/more-than-4-hours&tags/Cosplay&tags/ntr&tags/ol&tags/10-times-a-day&tags/rainy-day&tags/incest&tags/creampie&tags/female-anchor&tags/tit-wank&tags/wife&tags/store&tags/gym-room&tags/idol&tags/hidden-cam&tags/hypnosis&tags/bunny-girl&tags/insult&tags/affair&tags/torture&tags/blowjob&tags/cum-in-mouth&tags/stockings&tags/kimono&tags/library","find_rule":".site-content&&.video-img-box;h6&&a&&Text;img&&data-src;.label&&Text;a&&href","searchFind":".site-content&&.video-img-box;h6&&a&&Text;a&&href;.label&&Text;h6&&a&&Text;img&&data-src","search_url":"https://jable.tv/search/**/?from_videos=fypage&from_albums=fypage","group":"⑥①敦伦","detail_col_type":"pic_1","detail_find_rule":"","sdetail_col_type":"pic_1movie_1","sdetail_find_rule":".site-content;.header-left&&h4&&Text;video&&poster;.tags&&Text;link&&href","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"茄子APP ✈️","author":"","version":0,"type":"video","url":"http://android128877.com//App/Movie/movieList?JsonBody={\"classifyId\":fyAll,\"sort\":\"time\",\"pageNo\":fypage,\"pageSize\":20};POST;utf8;{User-Agent@VOG-AL00(Android/7.1.2) (com.auberginevideo.app/9.9.9) Weex/0.26.0 800x1280&&Host@android128877.com}","col_type":"movie_3","class_name":"全部&自拍&无🐴&有🐴&服装&欧美&中文&网红&动漫&VR","class_url":"&1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult(JSON.parse(getResCode()).data.map(\n    data => ({\n        title: data.name,\n        url: data.video_url+'@lazyRule=.js:input',\n        desc: data.updatetime,\n        img: data.cover\n    })\n))","searchFind":"js:\nsetResult(JSON.parse(getResCode()).data.map(\n    data => ({\n        title: data.name,\n        url: data.video_ur,\n        desc: data.updatetime,\n        img: data.cover\n    })\n))","search_url":"http://android128877.com/App/Movie/movieList?JsonBody={\"tagId\":\"\",\"keywords\":\"**\",\"pageNo\":fypage,\"pageSize\":20};POST;utf8;{User-Agent@VOG-AL00(Android/7.1.2) (com.auberginevideo.app/9.9.9) Weex/0.26.0 800x1280&&Host@android128877.com}","titleColor":"#fff20c00","group":"⑥①敦伦","detail_col_type":"text_4","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"KINDGIRLS ✈️","author":"幼稚鬼","version":0,"type":"video","url":"https://www.kindgirls.com/video-archive.php?p=fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n\ntry{\nvar  list  =  parseDomForArray(getResCode(), 'body&&.video_list');\nfor (var j in list) {\n    d.push({       \n              title:  parseDomForHtml(list[j],  'a&&Text'),\n               pic_url: parseDom(list[j],  'img&&src')+'@Referer=',\n               url: parseDom(list[j], 'a&&href') + '@lazyRule=source&&src'\n    });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑥①敦伦","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"游戏","author":"Quan","version":1,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"⑥①🎮游戏","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://mpimg.cn/down.php/9fbe050af286912f7218dfdf1a6ff290.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M235.712%20394.453333a44.330667%2044.330667%200%200%200-44.224%2044.437334%2044.373333%2044.373333%200%200%200%2044.224%2044.458666%2044.352%2044.352%200%200%200%2044.117333-44.458666%2044.373333%2044.373333%200%200%200-44.117333-44.437334z%20m756.949333%20101.226667c-48.384-202.197333-99.754667-309.696-202.218666-340.16-22.314667-6.613333-41.258667-9.237333-58.837334-9.237333-63.04%200.021333-107.221333%2033.578667-219.605333%2033.578666-112.405333%200-156.565333-33.557333-219.584-33.578666-17.514667%200-36.458667%202.624-58.773333%209.237333-102.570667%2030.485333-153.92%20137.962667-202.218667%20340.16-48.384%20202.218667-39.594667%20348.288%2017.578667%20375.552a65.706667%2065.706667%200%200%200%2028.458666%206.485333c49.578667%200%20103.168-54.485333%20154.645334-118.954666%2058.645333-73.365333%2073.386667-75.285333%20252.074666-75.285334h55.701334c178.624%200%20193.386667%201.92%20252.032%2075.285334%2051.52%2064.469333%20105.088%20118.869333%20154.666666%20118.869333%209.664%200%2019.114667-2.026667%2028.437334-6.485333%2057.173333-27.221333%2065.941333-173.184%2017.642666-375.466667z%20m-756.672%2033.770667c-49.472%200-89.685333-40.576-89.685333-90.538667%200-49.941333%2040.192-90.645333%2089.685333-90.645333s89.706667%2040.704%2089.706667%2090.645333c0%2049.962667-40.213333%2090.538667-89.706667%2090.538667zM631.04%20484.906667a45.952%2045.952%200%201%201%200.170667-91.904%2045.952%2045.952%200%200%201-0.170667%2091.904z%20m100.352%20100.266666a45.738667%2045.738667%200%200%201-45.802667-45.76c0-25.514667%2020.544-45.952%2045.802667-45.952a45.866667%2045.866667%200%201%201%200%2091.712z%20m0-200.725333a45.824%2045.824%200%200%201-45.802667-45.888%2045.909333%2045.909333%200%201%201%2091.861334%200%2045.930667%2045.930667%200%200%201-46.058667%2045.888z%20m100.522667%20100.458667a45.973333%2045.973333%200%200%201%200-91.904c25.301333%200%2045.781333%2020.608%2045.781333%2045.952s-20.48%2045.952-45.781333%2045.952z%22%20fill%3D%22%23D80C18%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"翼盘🔎","author":"","version":2,"type":"all","url":"https://yun.hei521.cn/index.php/category/fyAll/fypage/","col_type":"text_1","class_name":"影视&动漫&音乐阅读&软件游戏","class_url":"yingshi&dongman&yuedu&youruan","area_name":"杂七杂八&学习&百度盘","area_url":"zaqizaba&xuexi&bdyp","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = pdfa(getResCode(), 'body&&article');\nvar page = MY_PAGE;\nif (page == 1) {\n    d.push({\n        title: \"🔎\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"宁可少字，不要错字。\",\n        col_type: \"input\",\n    });\n    for (let l of list) {\n        d.push({\n            title: pdfh(l, 'h4&&Text').replace(/\\[.*?\\]/g, '').replace(/【.*?】/g, '').replace(/\\..*/g, '').replace(/\\(.*?\\)/g, '').replace('*已失效', '').replace(/.*《/g, '').replace(/》.*/g, '').replace(/[vV]\\d.*/, ''),\n            url: pd(l, 'a&&href') + '#immersiveTheme#',\n        });\n    };\n} else {\n    for (let l of list) {\n        d.push({\n            title: pdfh(l, 'h4&&Text').replace(/\\[.*?\\]/g, '').replace(/【.*?】/g, '').replace(/\\..*/g, '').replace(/\\(.*?\\)/g, '').replace('*已失效', '').replace(/.*《/g, '').replace(/》.*/g, '').replace(/[vV]\\d.*/, ''),\n            url: pd(l, 'a&&href') + '#immersiveTheme#',\n        });\n    };\n};\n\nsetResult(d);","searchFind":"body&&article;a&&Text;a&&href","search_url":"https://yun.hei521.cn/index.php/search/**","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nd.push({\n    col_type: 'big_big_blank_block',\n});\nd.push({\n    col_type: 'big_big_blank_block',\n});\n\n// 获取访问码\nvar accode = '';\nif (html.includes('访问码：')) {\n    accode = html.match(/访问码：(\\w{4})/)[1];\n    log('访问码：\\n' + accode);\n}\n\n// 标题\nvar title = pdfh(html, 'article&&h1&&Text').replace(/\\[.*?\\]/g, '').replace(/【.*?】/g, '').replace(/\\..*/g, '').replace(/\\(.*?\\)/g, '').replace('*已失效', '').replace(/.*《/g, '').replace(/》.*/g, '').replace(/[vV]\\d.*/, '');\n\n// 搜索模块，可以自行替换\nd.push({\n    title: '香情影视',\n    pic_url: 'https://lanmeiguojiang.com/tubiao/movie/73.svg',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    col_type: 'icon_round_small_4',\n});\nd.push({\n    title: '资源网',\n    pic_url: 'https://lanmeiguojiang.com/tubiao/movie/74.svg',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.xyq',\n    col_type: 'icon_round_small_4',\n});\nd.push({\n    title: '云盘',\n    pic_url: 'https://lanmeiguojiang.com/tubiao/movie/76.svg',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    col_type: 'icon_round_small_4',\n});\n\nd.push({\n    col_type: 'icon_round_small_4',\n    title: '复制访问码',\n    pic_url: 'https://lanmeiguojiang.com/tubiao/more/121.png',\n    url: 'copy://' + accode\n});\n\n// 内容详情\nd.push({\n    col_type: 'line',\n});\nd.push({\n    title: pdfh(html, '.post-content&&Html'),\n    col_type: 'rich_text',\n    extra: {\n        textSize: 14,\n        click: 'true'\n    }\n});\n\n\n// 评论\nd.push({\n    col_type: 'line',\n});\nd.push({\n    title: '评论',\n    col_type: 'text_1',\n});\nd.push({\n    col_type: 'line',\n});\nvar comment_list = pdfa(html, '.comment-list&&p');\nfor (let c of comment_list) {\n    d.push({\n        title: pdfh(c, 'Text'),\n        col_type: 'rich_text',\n        extra: {\n            textSize: 16,\n            click: 'true'\n        }\n    });\n};\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/55.png"},{"last_chapter_rule":"","title":"tvbox云盘推送","author":"tee&MrFly&小棉袄🌞&香雅情","version":8,"type":"video","url":"hiker://empty##fyclass","col_type":"text_1","class_name":"全部&喵搜&小纸条&找资源&小站&UP云搜&盘基地登陆&云盘资源&网盘资源&JIKE&更多&云盘盘TG&懒狗TG&云盘发布TG&meow","class_url":"all&https://www.alipansou.com&https://u.gitcafe.net/&https://zhaoziyuan.me/so&https://www.pan666.cn/&https://www.upyunso.com&https://www.panjd.com/&https://yunpan1.com/&https://aliwp.cn/&https://jike.info/category/2/讨论区?lang=en-US&https://dalao.ru/w/&https://tx.me/s/YunPanPan&https://tx.me/s/vip115hot&https://tx.me/s/shareAliyun&https://meow.tg","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nlet random = 1;\n\nlet white = [\n    \"//tx.me/\",\n]\nlet d = [];\nlet r = fetch(\"hiker://home@云盘汇影\");\nif (!r || r.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入',\n        confirm: ru,\n        cancel: ru\n    })\n}\nlet u = MY_URL.split(\"##\")[1];\n\nfunction loadUrl(u) {\n    let desc = \"auto\";\n    for (let it of white) {\n        if (u.includes(it)) {\n            desc = \"100%&&float\";\n        }\n    }\n    if (getAppVersion() >= 3018) {\n        desc = \"float&&top\";\n    }\n    setResult([{\n        col_type: \"x5_webview_single\",\n        url: u,\n        desc: desc,\n        extra: {\n            canBack: true,\n            urlInterceptor: $.toString((myrule) => {\n                if (input.startsWith('https://www.aliyundrive.com/s/') || input.startsWith('magnet:')) {\n                    //fba.fetch(input, {});\n                    clearMyVar('name');\n                    return $.toString((url, myrule) => {\n                        fba.open(JSON.stringify({\n                            rule: myrule,\n                            url: 'hiker://page/push?rule=' + myrule + '&url=hiker://empty##' + encodeURIComponent(url)+'???fypage'\n                        }));\n                    }, input, myrule)\n                }\n            }, MY_RULE.title),\n            ua: MOBILE_UA\n        }\n    }])\n}\nif (u == \"all\") {\n    let cls = getMyVar(\"cls\", \"\");\n    if (cls) {\n        u = cls;\n        loadUrl(u);\n        clearMyVar(\"cls\");\n    } else {\n        let r = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title));\n        let cn = r.class_name.split(\"&\");\n        let cu = r.class_url.split(\"&\");\n        let arr = [];\n        arr.push({\n            title: \"推送\",\n            url: $.toString(() => {\n                clearMyVar('name');\n                var link = 'hiker://page/push?url=hiker://empty##' + encodeURIComponent(input.replace(\"#isMusic=true#\", '').replace('#isVideo=true#', ''))+'???fypage';\n                if (input.startsWith('http') || input.startsWith('magnet:') || input.includes(\"\\n\")) {\n                    return link;\n                } else if (input.startsWith(\"{\") && input.endsWith(\"}\")) {\n                    return link;\n                } else if (/\\.torrent|ed2k\\:/.test(input)) {\n                    return 'toast://不支持推送这种链接。'\n                } else {\n                    return 'toast://请输入正确的链接。'\n                }\n            }),\n            extra: {\n                titleVisible: true\n            },\n            col_type: 'input'\n        });\n        arr.push({\n            title: \"TVB搜索\",\n            url: $.toString(() => {\n                let tvip = getItem('hikertvboxset', '');\n                let state = 'false';\n                if (tvip != '' && tvip.includes(':997')) {\n                    var state = request(tvip + '/action', {\n                        headers: {\n                            'Content-Type': 'application/x-www-form-urlencoded',\n                            //'X-Requested-With': 'XMLHttpRequest',\n                            'Referer': tvip\n                        },\n                        timeout: 2000,\n                        body: 'do=search&word=' + input,\n                        method: 'POST'\n                    });\n                }\n                log(state);\n                if (state == 'ok') {\n                    return 'toast://搜索推送成功，请注意观看电视端tvbox界面';\n                } else {\n                    return 'toast://搜索推送失败'\n                }\n            }),\n            extra: {\n                titleVisible: true\n            },\n            col_type: 'input'\n        });\n        arr.unshift({\n            title: getItem('hikertvboxset', ''),\n            url: 'hiker://empty',\n            col_type: 'scroll_button'\n        });\n        arr.unshift({\n            title: '设置IP地址',\n            url: \"input://\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \"////请输入tvbox推送IP地址，如http://\" + getIP() + \":9978.js:setItem('hikertvboxset',input);refreshPage()\",\n            col_type: 'scroll_button'\n        });\n        \n        for (let i = 1; i < cn.length; i++) {\n            arr.push({\n                title: cn[i],\n                url: $().lazyRule((u) => {\n                    putMyVar(\"cls\", u);\n                    //refreshX5Desc(\"top&&float\");\n                    refreshPage();\n                    return \"hiker://empty\";\n                }, cu[i]),\n                col_type: \"text_2\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n        }\n        refreshX5Desc(\"0&&float\");\n        setResult(arr);\n    }\n} else {\n    loadUrl(u);\n}","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"\nif (!getMyVar(\"aliaccessTk\")) {\n    let ntoken=[];\n    if (!fileExist(\"hiker://files/rules/icy/icy-ali-token.json\")) {\n        var reftoken = \"\";\n    } else {\n        var reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\n    }\n    var refresh = fetch('https://auth.aliyundrive.com/v2/account/token', {\n        headers: {\n            'Content-Type': 'application/json',\n            'User-Agent': PC_UA,\n            'Referer': 'https://www.aliyundrive.com/'\n        },\n        body: '{\"refresh_token\":\"' + reftoken + '\",\"grant_type\":\"refresh_token\"}',\n        method: 'POST'\n    });\n    //log(refresh);\n    if (!fileExist(\"hiker://files/rules/icy/icy-ali-token.json\") || refresh.length > 300) {\n        ntoken.push(JSON.parse(refresh));\n        writeFile(\"hiker://files/rules/icy/icy-ali-token.json\", JSON.stringify(ntoken));\n    }\n    \n    var refresh = fetch('hiker://files/rules/icy/icy-ali-token.json', {});\n    var accessTk = JSON.parse(refresh)[0].token_type + ' ' + JSON.parse(refresh)[0].access_token;\n    putMyVar(\"aliaccessTk\", accessTk);\n}\n\n\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\n//log(MY_URL);\\nvar items = [];\\nvar realurl = MY_URL.split('##')[1].split('???')[0];\\nvar tvip = getItem('hikertvboxset', '');\\nvar cltext = getMyVar(\\\"name\\\", realurl);\\n//log(realurl);\\nitems.push({\\n    title: decodeURIComponent(cltext),\\n    url: \\\"input://\\\" + JSON.stringify({\\n        value: \\\"\\\",\\n        hint: \\\"请输入tvbox推送内容\\\",\\n        js: $.toString(() => {\\n            clearMyVar('name');\\n            var num = encodeURIComponent(input);\\n            if (num == '') {\\n                return 'toast://输入的值是空的。';\\n            } else {\\n                putMyVar('name', num);\\n                return refreshPage(true);\\n            }\\n        }),\\n    }),\\n    col_type: 'icon_1_search'\\n});\\n\\nif (getMyVar('name', '') != '') {\\n    realurl = getMyVar('name');\\n}\\n//log(\\\"实际\\\"+realurl);\\nif (tvip.includes('http')) {\\n    items.push({\\n        title: \\\"📽 推送到TVBox 📺\\\",\\n        url: $(realurl).lazyRule((tvip) => {\\n            clearMyVar('name');\\n            input = decodeURIComponent(input);\\n            var purl = input.split(\\\";\\\")[0];\\n            if (purl.includes(\\\"\\\\n\\\")) {\\n                purl = purl.replace(\\\"\\\\n\\\", '$');\\n            }\\n            var head = input.split(\\\";\\\")[1];\\n            if (input.startsWith(\\\"{\\\") && input.endsWith(\\\"}\\\")) {\\n\\n                purl = input.replace(/\\\\&/g, '＆＆');\\n                //log(purl);\\n            } else if (head != undefined) {\\n                var head = input.split(\\\";{\\\")[1].split(\\\"}\\\")[0].split(\\\"&&\\\");\\n                var purl = input.split(\\\";{\\\")[0].replace(/\\\\&/g, '＆＆');\\n\\n                var aaa = \\\"\\\";\\n                for (let i = 0; i < head.length; i++) {\\n                    let key = head[i].split(\\\"@\\\")[0];\\n                    let val = head[i].split(\\\"@\\\")[1].replace(/\\\\；\\\\；/g, ';');\\n                    let vvv = key + \\\"=\\\" + encodeURIComponent(val);\\n                    if (i < 1) {\\n                        aaa = vvv;\\n                    } else {\\n                        aaa += \\\"&\\\" + vvv\\n                    }\\n                }\\n                purl = purl + \\\"|\\\" + aaa;\\n            } else {\\n                purl = purl.replace(/\\\\&/g, '＆＆')\\n\\n            }\\n            //log(purl);\\n            //log(tvip);\\n            if (input.startsWith('https://www.aliyundrive.com/s/')) {\\n                let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n                purl = JSON.stringify({\\n                    \\\"url\\\": input,\\n                    \\\"refresh_token\\\": reftoken\\n                })\\n            }\\n\\n            var state = request(tvip + '/action', {\\n                headers: {\\n                    'Content-Type': 'application/x-www-form-urlencoded',\\n                    //'X-Requested-With': 'XMLHttpRequest',\\n                    'Referer': tvip\\n                },\\n                timeout: 2000,\\n                body: 'do=push&url=' + purl,\\n                method: 'POST'\\n            });\\n            log(state);\\n            if (state == 'ok') {\\n                return 'toast://推送成功，如果tvbox显示“没找到数据”可能是该链接需要密码或者当前的jar不支持。';\\n            } else {\\n                return 'toast://推送失败'\\n            }\\n        }, tvip),\\n        col_type: \\\"text_center_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\"\\n    });\\n} else {\\n    items.push({\\n        title: '推送失败，IP地址设置不正确。',\\n        col_type: 'text_center_1'\\n    });\\n}\\nif (decodeURIComponent(realurl).includes('www.aliyundrive') && !realurl.includes('%3B%7B')) {\\n    eval(JSON.parse(fetch('hiker://page/sharid', {})).rule)\\n}\\nsetResult(items);\"},{\"col_type\":\"movie_3\",\"name\":\"分享资源一级\",\"path\":\"sharid\",\"rule\":\"js:\\n//var items = [];\\nfunction formatDate(_date, _fmt) {\\n    let fmt = _fmt || \\\"yyyy-MM-dd HH:mm:ss\\\";\\n    const date = !isNaN(_date) ? new Date(_date * 1000) : new Date(_date);\\n    const o = {\\n        \\\"M+\\\": date.getMonth() + 1, //月份 \\n        \\\"d+\\\": date.getDate(), //日 \\n        \\\"h+\\\": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12,\\n        \\\"H+\\\": date.getHours(), //小时 \\n        \\\"m+\\\": date.getMinutes(), //分 \\n        \\\"s+\\\": date.getSeconds(), //秒 \\n        \\\"q+\\\": Math.floor((date.getMonth() + 3) / 3), //季度 \\n        \\\"S\\\": date.getMilliseconds() //毫秒 \\n    };\\n    if (/(y+)/.test(fmt)) {\\n        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \\\"\\\").substr(4 - RegExp.$1.length));\\n    }\\n    for (let k in o) {\\n        if (new RegExp(\\\"(\\\" + k + \\\")\\\").test(fmt)) {\\n            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\\\"00\\\" + o[k]).substr((\\\"\\\" + o[k]).length)));\\n        }\\n    }\\n    return fmt;\\n};\\n\\nfunction formatSize(size) {\\n    if (!size) {\\n        return '';\\n    }\\n    const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\\n    let i = 0;\\n    while (size >= 1024) {\\n        size /= 1024;\\n        i++;\\n    }\\n    size = i ? Number(size.toFixed(2)) : size;\\n    return `${size} ${units[i]}`;\\n}\\n//log(realurl);\\ntry {\\n    //var reftoken = JSON.parse(fetch('hiker://files/rules/xyq/alitoken.json', {})).refresh_token;\\n    var reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    var shareId = decodeURIComponent(realurl).split('com/s/')[1].substring(0, 11);\\n    let pushname = JSON.parse(fetch('https://api.aliyundrive.com/adrive/v3/share_link/get_share_by_anonymous', {\\n        headers: {\\n            'Content-Type': 'application/json'\\n        },\\n        body: '{\\\"share_id\\\":\\\"' + shareId + '\\\"}',\\n        method: 'POST'\\n    })).share_name;\\n    var sharetoken = JSON.parse(fetch('https://api.aliyundrive.com/v2/share_link/get_share_token', {\\n        headers: {\\n            'Content-Type': 'application/json'\\n        },\\n        body: '{\\\"share_pwd\\\":\\\"\\\",\\\"share_id\\\":\\\"' + shareId + '\\\"}',\\n        method: 'POST'\\n    })).share_token;\\n    //log(sharetoken);\\n    if (MY_PAGE == 1) {\\n        clearMyVar('nextpage');\\n    }\\n    let next = getMyVar('nextpage', '') != '' ? ',\\\"marker\\\":\\\"' + getMyVar('nextpage') + '\\\"' : '';\\n    if (!decodeURIComponent(realurl).includes('/folder/')) {\\n        var rescod = fetch('https://api.aliyundrive.com/adrive/v3/file/list', {\\n            headers: {\\n                'Content-Type': 'application/json',\\n                'X-Share-Token': sharetoken\\n            },\\n            body: '{\\\"share_id\\\":\\\"' + shareId + '\\\",\\\"parent_file_id\\\":\\\"root\\\",\\\"limit\\\":100,\\\"image_thumbnail_process\\\":\\\"image/resize,w_160/format,jpeg\\\",\\\"image_url_process\\\":\\\"image/resize,w_1920/format,jpeg\\\",\\\"video_thumbnail_process\\\":\\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\\"order_by\\\":\\\"name\\\",\\\"order_direction\\\":\\\"ASC\\\"' + next + '}',\\n            method: 'POST'\\n        });\\n        //log(rescod);\\n        var listyp = JSON.parse(rescod).items[0].type;\\n        var pfileid = JSON.parse(rescod).items[0].file_id;\\n    } else {\\n        var listyp = 'folder';\\n        var pfileid = decodeURIComponent(realurl).split('folder/')[1]\\n\\n    }\\n    //log(html);\\n    if (listyp == 'folder') {\\n        var rescod = fetch('https://api.aliyundrive.com/adrive/v3/file/list', {\\n            headers: {\\n                'Content-Type': 'application/json',\\n                'X-Share-Token': sharetoken\\n            },\\n            body: '{\\\"share_id\\\":\\\"' + shareId + '\\\",\\\"parent_file_id\\\":\\\"' + pfileid + '\\\",\\\"limit\\\":100,\\\"image_thumbnail_process\\\":\\\"image/resize,w_160/format,jpeg\\\",\\\"image_url_process\\\":\\\"image\\\\/resize,w_1920/format,jpeg\\\",\\\"video_thumbnail_process\\\":\\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\\"order_by\\\":\\\"name\\\",\\\"order_direction\\\":\\\"ASC\\\"' + next + '}',\\n            method: 'POST'\\n        });\\n\\n    } //取文件夹\\n    //log(rescod);\\n\\n    if (JSON.parse(rescod).next_marker) {\\n        let marker = JSON.parse(rescod).next_marker;\\n        if (marker.length > 10) {\\n            putMyVar('nextpage', marker);\\n        } else {\\n            clearMyVar('nextpage');\\n        }\\n    }\\n    var conts = JSON.parse(rescod).items;\\n    var dongtai = JSON.parse(fetch('hiker://page/lazyurl', {})).rule.toString();\\n    var tuisong = [];\\n    for (var i in conts) {\\n        var listyp = conts[i].type;\\n        if (listyp != 'folder') {\\n            var cate = conts[i].category;\\n            var fname = conts[i].name;\\n            if (cate == 'video') {\\n                var title = '📺' + conts[i].name;\\n            } else if (cate == 'doc') {\\n                var title = '📖' + conts[i].name;\\n            } else if (cate == 'image') {\\n                var title = '🖼' + conts[i].name;\\n            } else if (cate == 'zip') {\\n                var title = '📦' + conts[i].name;\\n            } else {\\n                var title = conts[i].name\\n            }\\n            items.push({\\n                title: title,\\n                url: $(conts[i].file_id).lazyRule((shareId, sharetoken, dongtai, cate, fname) => {\\n                    eval(dongtai);\\n                    return play\\n                }, shareId, sharetoken, dongtai, cate, fname),\\n                desc: formatDate(conts[i].updated_at) + '  ' + formatSize(conts[i].size),\\n                col_type: 'text_1'\\n\\n            });\\n            if (cate == 'video' || cate == 'audio') {\\n                tuisong.push(\\n                    title.replace(/\\\\#/g, '_').replace(/\\\\$/g, '_') + '$' + cate + '|' + conts[i].file_id\\n                );\\n            }\\n        } else {\\n            items.push({\\n                title: '📂' + conts[i].name,\\n                url: $('hiker://empty' + conts[i].file_id + '???fypage').rule((shareId, sharetoken, pushname) => {\\n                    eval(JSON.parse(fetch('hiker://page/ruleloop', {})).rule);\\n                }, shareId, sharetoken, conts[i].name),\\n                col_type: 'flex_button'\\n            });\\n\\n        } //end if\\n    } //end for i\\n    //log(tuisong);\\n    //let pushname = JSON.parse(rescod).items[0].name;\\n    eval(JSON.parse(fetch('hiker://page/pushcode', {})).rule);\\n} catch (e) {\\n    items.push({\\n        title: '欧欧，报错了。',\\n        url: decodeURIComponent(getResCode().split('##')[1]),\\n        col_type: 'text_center_1'\\n    });\\n}\\n/*\\nsetHomeResult({\\n    data: items\\n});\\n*/\"},{\"col_type\":\"movie_3\",\"name\":\"分享资源嵌套\",\"path\":\"ruleloop\",\"rule\":\"var items = [];\\n\\nfunction formatDate(_date, _fmt) {\\n    let fmt = _fmt || \\\"yyyy-MM-dd HH:mm:ss\\\";\\n    const date = !isNaN(_date) ? new Date(_date * 1000) : new Date(_date);\\n    const o = {\\n        \\\"M+\\\": date.getMonth() + 1, //月份 \\n        \\\"d+\\\": date.getDate(), //日 \\n        \\\"h+\\\": date.getHours() % 12 == 0 ? 12 : date.getHours() % 12,\\n        \\\"H+\\\": date.getHours(), //小时 \\n        \\\"m+\\\": date.getMinutes(), //分 \\n        \\\"s+\\\": date.getSeconds(), //秒 \\n        \\\"q+\\\": Math.floor((date.getMonth() + 3) / 3), //季度 \\n        \\\"S\\\": date.getMilliseconds() //毫秒 \\n    };\\n    if (/(y+)/.test(fmt)) {\\n        fmt = fmt.replace(RegExp.$1, (date.getFullYear() + \\\"\\\").substr(4 - RegExp.$1.length));\\n    }\\n    for (let k in o) {\\n        if (new RegExp(\\\"(\\\" + k + \\\")\\\").test(fmt)) {\\n            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\\\"00\\\" + o[k]).substr((\\\"\\\" + o[k]).length)));\\n        }\\n    }\\n    return fmt;\\n};\\n\\nfunction formatSize(size) {\\n    if (!size) {\\n        return '';\\n    }\\n    const units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\\n    let i = 0;\\n    while (size >= 1024) {\\n        size /= 1024;\\n        i++;\\n    }\\n    size = i ? Number(size.toFixed(2)) : size;\\n    return `${size} ${units[i]}`;\\n}\\nlet tvip = getItem('hikertvboxset', '');\\n\\nlet reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n            \\n//log(getResCode());\\nif (MY_PAGE == 1) {\\n    clearMyVar('nextpage');\\n    items.unshift({\\n        title: \\\"📽推送当前文件夹📺\\\",\\n        url: $('https://www.aliyundrive.com/s/' + shareId + '/folder/' + getResCode().split('???')[0]).lazyRule((tvip) => {\\n            if (!tvip.includes(':997')) {\\n                return 'toast://IP为空或不正确，请先设置。'\\n            };\\n            let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n            let purl = JSON.stringify({\\n                \\\"url\\\": input,\\n                \\\"refresh_token\\\": reftoken\\n            });\\n            var state = request(tvip + '/action', {\\n                headers: {\\n                    'Content-Type': 'application/x-www-form-urlencoded',\\n                    //'X-Requested-With': 'XMLHttpRequest',\\n                    'Referer': tvip\\n                },\\n                timeout: 2000,\\n                body: 'do=push&url=' + purl,\\n                method: 'POST'\\n            });\\n            log(state);\\n            if (state == 'ok') {\\n                return 'toast://推送成功，如果tvbox显示“没找到数据”可能是当前的jar不支持。';\\n            } else {\\n                return 'toast://推送失败'\\n            }\\n        }, tvip),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n}\\nlet next = getMyVar('nextpage', '') != '' ? ',\\\"marker\\\":\\\"' + getMyVar('nextpage') + '\\\"' : '';\\n\\nvar rescod = fetch('https://api.aliyundrive.com/adrive/v3/file/list', {\\n    headers: {\\n        'Content-Type': 'application/json',\\n        'X-Share-Token': sharetoken\\n    },\\n    body: '{\\\"share_id\\\":\\\"' + shareId + '\\\",\\\"parent_file_id\\\":\\\"' + getResCode().split('???')[0] + '\\\",\\\"limit\\\":100,\\\"image_thumbnail_process\\\":\\\"image/resize,w_160/format,jpeg\\\",\\\"image_url_process\\\":\\\"image\\\\/resize,w_1920/format,jpeg\\\",\\\"video_thumbnail_process\\\":\\\"video/snapshot,t_1000,f_jpg,ar_auto,w_300\\\",\\\"order_by\\\":\\\"name\\\",\\\"order_direction\\\":\\\"ASC\\\"' + next + '}',\\n    method: 'POST'\\n});\\n//log(rescod);\\nif (JSON.parse(rescod).next_marker) {\\n    let marker = JSON.parse(rescod).next_marker;\\n    if (marker.length > 10) {\\n        putMyVar('nextpage', marker);\\n    } else {\\n        clearMyVar('nextpage');\\n    }\\n}\\nvar conts = JSON.parse(rescod).items;\\nvar dongtai = JSON.parse(fetch('hiker://page/lazyurl', {})).rule.toString();\\nvar tuisong = [];\\nfor (var i in conts) {\\n\\n    var listyp = conts[i].type;\\n    if (listyp != 'folder') {\\n        var cate = conts[i].category;\\n        var fname = conts[i].name;\\n        if (cate == 'video') {\\n            var title = '📺' + conts[i].name;\\n        } else if (cate == 'doc') {\\n            var title = '📖' + conts[i].name;\\n        } else if (cate == 'image') {\\n            var title = '🖼' + conts[i].name;\\n        } else if (cate == 'zip') {\\n            var title = '📦' + conts[i].name;\\n        } else {\\n            var title = conts[i].name\\n        }\\n        items.push({\\n            title: title,\\n            url: $(conts[i].file_id).lazyRule((shareId, sharetoken, dongtai, cate, fname) => {\\n                eval(dongtai);\\n                return play\\n            }, shareId, sharetoken, dongtai, cate, fname),\\n            desc: formatDate(conts[i].updated_at) + '  ' + formatSize(conts[i].size),\\n            col_type: 'text_1'\\n\\n        });\\n        if (cate == 'video' || cate == 'audio') {\\n            tuisong.push(\\n                title.replace(/\\\\#/g, '_').replace(/\\\\$/g, '_') + '$' + cate + '|' + conts[i].file_id\\n            );\\n        }\\n    } else {\\n        items.push({\\n            title: '📂' + conts[i].name,\\n            url: $('hiker://empty' + conts[i].file_id + '???fypage').rule((shareId, sharetoken, pushname) => {\\n                eval(JSON.parse(fetch('hiker://page/ruleloop', {})).rule);\\n            }, shareId, sharetoken, conts[i].name),\\n            col_type: 'flex_button'\\n        });\\n\\n    } //end if\\n\\n\\n}\\neval(JSON.parse(fetch('hiker://page/pushcode', {})).rule);\\nsetHomeResult({\\n    data: items\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"分享资源动态解析\",\"path\":\"lazyurl\",\"rule\":\"function accessTk() {\\n    let ntoken = [];\\n    //let reftoken = request('http://home.jundie.top:81/jar/token666.txt', {});\\n    //var reftoken = JSON.parse(fetch('hiker://files/rules/xyq/alitoken.json', {})).refresh_token;\\n    var reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    let accessTk = \\\"\\\";\\n    let refresh = fetch('https://auth.aliyundrive.com/v2/account/token', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Referer': 'https://www.aliyundrive.com/'\\n        },\\n        body: '{\\\"refresh_token\\\":\\\"' + reftoken + '\\\",\\\"grant_type\\\":\\\"refresh_token\\\"}',\\n        method: 'POST'\\n    });\\n    ntoken.push(JSON.parse(refresh));\\n    if (!fileExist(\\\"hiker://files/rules/icy/icy-ali-token.json\\\") || refresh.length > 300) {\\n        writeFile(\\\"hiker://files/rules/icy/icy-ali-token.json\\\", JSON.stringify(ntoken));\\n    }\\n    accessTk = JSON.parse(refresh).token_type + ' ' + JSON.parse(refresh).access_token;\\n    putMyVar(\\\"aliaccessTk\\\", accessTk);\\n    return accessTk\\n    //putVar(\\\"aliaccessTk\\\", accessTk);\\n}\\n\\nif (cate == 'video'||cate == 'audio') {\\n    //处理视频  \\n    var dsid = shareId;\\n    var dfid = input;\\n    if(cate == 'video'){\\n    var json = fetch('https://api.aliyundrive.com/v2/file/get_share_link_video_preview_play_info', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Authorization': accessTk(),\\n            'X-Share-Token': sharetoken\\n        },\\n        body: '{\\\"share_id\\\":\\\"' + shareId + '\\\",\\\"category\\\":\\\"live_transcoding\\\",\\\"file_id\\\":\\\"' + input + '\\\",\\\"template_id\\\":\\\"\\\"}',\\n        method: 'POST'\\n    });\\n    //log(json);\\n    \\n    var dsid = JSON.parse(json).share_id;\\n    var dfid = JSON.parse(json).file_id;\\n    }\\n    if(cate == 'video'){\\n       var body='{\\\"expire_sec\\\":600,\\\"file_id\\\":\\\"' + dfid + '\\\",\\\"share_id\\\":\\\"' + dsid + '\\\"}';\\n        \\n    }else{\\n      var body='{\\\"file_id\\\":\\\"' + dfid + '\\\",\\\"get_audio_play_info\\\":true,\\\"share_id\\\":\\\"' + dsid + '\\\"}';   \\n    }\\n    var djson = fetch('https://api.aliyundrive.com/v2/file/get_share_link_download_url', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Authorization': accessTk(),\\n            'X-Share-Token': sharetoken\\n        },\\n        body: body,\\n        method: 'POST'\\n    });\\n    var link = JSON.parse(djson).download_url;\\n    \\n    \\n    //log(link);\\n    var play = JSON.parse(fetch(link, {\\n        headers: {\\n            'User-Agent': MOBILE_UA,\\n            'Content-Type': 'application/x-www-form-urlencoded',\\n            'Referer': 'https://www.aliyundrive.com/'\\n        },\\n        redirect: false,\\n        withStatusCode: true\\n    })).headers.location[0] + (cate == 'video'?';{Referer@https://www.aliyundrive.com/}':'#isMusic=true#;{Referer@https://www.aliyundrive.com/}');\\n} else if (cate == 'image') {\\n    //处理文档\\n    var json = fetch('https://api.aliyundrive.com/v2/file/get_share_link_download_url', {\\n        headers: {\\n            'Content-Type': 'application/json',\\n            'Authorization': accessTk(),\\n            'X-Share-Token': sharetoken\\n        },\\n        body: '{\\\"share_id\\\":\\\"' + shareId + '\\\",\\\"expire_sec\\\": 600,\\\"file_id\\\":\\\"' + input + '\\\"}',\\n        method: 'POST'\\n    });\\n\\n    //log(json);\\n\\n    var loclink = JSON.parse(fetch(JSON.parse(json).url, {\\n        headers: {\\n            'User-Agent': MOBILE_UA,\\n            'Content-Type': 'application/x-www-form-urlencoded',\\n            'Referer': 'https://www.aliyundrive.com/'\\n        },\\n        redirect: false,\\n        withStatusCode: true\\n    })).headers.location[0];\\n\\n    //log(loclink);\\n    if (cate == 'image') {\\n        var play = 'pics://' + loclink + '@Referer=https://www.aliyundrive.com/';\\n    } else {\\n        var play = loclink + ';{Referer@https://www.aliyundrive.com/}';\\n    }\\n} else {\\n    var play = 'toast://该格式暂未支持，目前只支持音视频和图片。'\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"推送代码\",\"path\":\"pushcode\",\"rule\":\"js:\\n//推送代码\\nlet push = JSON.stringify({\\n    \\\"name\\\":pushname,\\n    \\\"url\\\": tuisong.join('#'),\\n    \\\"share_id\\\": shareId,\\n    \\\"refresh_token\\\": reftoken\\n}).replace(/\\\\&/g, '＆＆');\\n//log(push);\\n//let tvip = getItem('hikertvboxset', '');\\n//log(tuisong.length);\\nif(tuisong.length>0){\\nitems.unshift({\\n    title: \\\"📽推送当前页音视频📺\\\",\\n    url: $(push).lazyRule((tvip) => {\\n        if (!tvip.includes(':997')) {\\n            return 'toast://IP为空或不正确，请先设置。'\\n        };\\n        var state = request(tvip + '/action', {\\n            headers: {\\n                'Content-Type': 'application/x-www-form-urlencoded',\\n                //'X-Requested-With': 'XMLHttpRequest',\\n                'Referer': tvip\\n            },\\n            timeout: 2000,\\n            body: 'do=push&url=' + input,\\n            method: 'POST'\\n        });\\n        log(state);\\n        if (state == 'ok') {\\n            return 'toast://推送成功，如果tvbox显示“没找到数据”可能是当前的jar不支持。';\\n        } else {\\n            return 'toast://推送失败'\\n        }\\n    }, tvip),\\n    col_type: \\\"scroll_button\\\"\\n});\\n}\\n//\"}]","proxy":"","icon":"https://www.alipansou.com/favicon.ico"},{"last_chapter_rule":"","title":"云盘汇影","author":"MrFly","version":6,"type":"all","url":"hiker://empty$$$fypage","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/rules/icy/ali.js'));\nali.homePage();","searchFind":"js:\neval(fetch('hiker://files/rules/icy/ali.js'));\nali.searchPage(true);\n","search_url":"hiker://empty$$$**$$$fypage$$$","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/rules/icy/ali.js'));\nali.detailPage();","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var alijs = fetch('https://gitee.com/fly1397/hiker-icy/raw/master/ali.js');\nif(!alijs || !alijs.includes('ali')){\n\talijs = fetch('https://cdn.jsdelivr.net/gh/fly1397/hiker-icy/ali.js')\n}\nif(!alijs || !alijs.includes('ali')){\n\talijs = fetch('http://lficy.com:30000/mrfly/hiker-icy/raw/master/ali.js')\n}\nif(alijs) {\n\twriteFile(\"hiker://files/rules/icy/ali.js\",alijs);\n\teval(alijs);\n\tali.preRule();\n}\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"网盘详情\",\"path\":\"detail\",\"rule\":\"js:\\neval(fetch('hiker://files/rules/icy/ali.js'));\\nali.initConfig();\\nali.aliRule();\"},{\"col_type\":\"movie_1_left_pic\",\"name\":\"资源网页详情\",\"path\":\"site-detail\",\"rule\":\"js:\\neval(fetch('hiker://files/rules/icy/ali.js'));\\nali.detailPage();\"},{\"col_type\":\"movie_3\",\"name\":\"个人网盘详情\",\"path\":\"drive\",\"rule\":\"js:\\neval(fetch('hiker://files/rules/icy/ali.js'));\\nali.initConfig();\\nali.myAliRule();\"}]","proxy":"","icon":"https://gitee.com/fly1397/hiker-icy/raw/master/aliyun.png"},{"last_chapter_rule":"","title":"阿里盘搜","author":"tee&MrFly","version":3,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"综合;视频;音频;图片;电子书","class_url":"all;video;audio:image;doc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.alipansou.com\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"#app&&van-row,3:;template&&Text;a&&href;template,1&&Text;*;van-card&&thumb","search_url":"https://www.alipansou.com/search?k=**","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://dalao.ru/favicon.ico"},{"last_chapter_rule":"","title":"云盘君","author":"小棉袄🌞","version":4,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet r1 = fetch(\"hiker://home@云盘汇影\");\nif (!r1 || r1.length <= 5) {\n    let ru = $.toString(() => {\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\"\n    });\n    confirm({\n        title: MY_RULE.title + '提示',\n        content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\n        confirm: ru,\n        cancel: ru\n    })\n}\n\nlet r = getItem(\"r\", \"\");\nif (MY_PAGE == 1) {\n    addListener(\"onClose\", $.toString(() => {\n        clearMyVar(\"s\");\n    }));\n    d.push({\n        title: \"阿里云盘搜索君\",\n        url: \"hiker://home@云盘汇影\",\n        col_type: \"avatar\",\n        desc: \"\",\n        pic_url: \"hiker://images/account\"\n    });\n\n    d.push({\n        title: '搜索',\n        desc: '请输入关键词',\n        col_type: 'input',\n        url: $.toString(() => {\n            putMyVar('s', input);\n            refreshPage();\n            return 'hiker://empty'\n        }),\n        extra: {\n            defaultValue: getMyVar('s', '')\n        }\n    });\n    let rules = $.require(\"hiker://page/data\")();\n    d.push({\n        title: \"\" == r ? \"““全部””\" : \"全部\",\n        url: $(\"#noLoading#\").lazyRule(() => {\n            clearItem(\"r\");\n            refreshPage();\n            return \"hiker://empty\"\n        }),\n        col_type: \"scroll_button\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n    for (let it of rules) {\n        d.push({\n            title: it == r ? \"““\" + it + \"””\" : it,\n            url: $(\"#noLoading#\").lazyRule((r) => {\n                setItem(\"r\", r);\n                refreshPage();\n                return \"hiker://empty\"\n            }, it),\n            col_type: \"scroll_button\",\n            desc: \"\",\n            pic_url: \"\"\n        });\n    }\n    d.push({\n        col_type: 'line',\n        extra: {\n            id: 'ypj-l'\n        }\n    });\n}\nlet s = getMyVar('s', '');\nif (s != \"\") {\n    let p = MY_PAGE;\n    let data = $.require(\"hiker://page/data\")(p, r != \"\" ? r : null);\n\n    let pageid = \"ypj-page\" + p;\n    if (data.length > 0) {\n        d.push({\n            title: \"加载第\" + p + \"页中，进度：1/\" + data.length,\n            url: \"\",\n            col_type: \"text_center_1\",\n            desc: \"\",\n            pic_url: \"\",\n            extra: {\n                id: pageid\n            }\n        });\n    }\n    setResult(d);\n    log(data.length);\n    if (data.length > 0) {\n        //多线程加载\n        let tasks = data.map(it => {\n            return {\n                func: function(rule) {\n                    return rule.find(s);\n                },\n                param: it,\n                id: \"rule@\" + it.name\n            }\n        });\n        batchExecute(tasks, {\n            func: function(param, id, error, result) {\n                //log(\"listener: \" + (result || []).length)\n                param.i = param.i + 1;\n                if (result) {\n                    try {\n                        for (let it of result) {\n                            param.j = param.j + 1;\n                            addItemBefore(pageid, {\n                                title: it.title.includes(\"““””\") ? it.title : \"““””\" + it.title.replace(new RegExp(\"<em>|</em>\", \"g\"), \"\").replace(new RegExp(s, \"g\"), \"<strong><span style=\\\"color: #1E90FF\\\">\" + s + \"</span></strong>\"),\n                                desc: it.desc,\n                                url: it.url,\n                                pic_url: it.pic_url,\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \"text_1\",\n                                extra: {\n                                    id: \"__app\" + MY_PAGE + \"@\" + param.j\n                                }\n                            })\n                        }\n                    } catch (e) {}\n\n                }\n                if (param.i >= param.all) {\n                    deleteItem(pageid)\n                } else {\n                    updateItem({\n                        title: \"加载第\" + MY_PAGE + \"页中，进度：\" + (param.i + 1) + \"/\" + param.all,\n                        url: \"\",\n                        col_type: \"text_center_1\",\n                        desc: \"\",\n                        pic_url: \"\",\n                        extra: {\n                            id: pageid\n                        }\n                    })\n                }\n            },\n            param: {\n                all: data.length,\n                i: 0,\n                j: -1\n            }\n        })\n    }\n} else {\n    if (MY_PAGE == 1) {\n\n        header = {\n            'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Mobile Safari/537.36',\n            'Host': 'top.baidu.com',\n            'Accept': 'application/json, text/plain, */*',\n            'Accept-Language': 'zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7',\n            'Accept-Encoding': 'gzip, deflate, br',\n            'Referer': 'https://top.baidu.com/board?tab=novel',\n        }\n\n        let json = request('https://top.baidu.com/api/board?platform=wise&tab=teleplay&tag=%7B%22category%22:%22%E5%85%A8%E9%83%A8%E7%B1%BB%E5%9E%8B%22,%22country%22:%22%E6%AC%A7%E7%BE%8E%22%7D', {\n            headers: header\n        });\n\n        let list = JSON.parse(json).data.cards[0].content;\n\n        for (let i = 0; i < list.length; i++) {\n            let name = list[i].word + '    (' + list[i].show[2] + ')';\n            let des = list[i].desc;\n            d.push({\n                title: i == \"0\" ? '““””<span style=\"color:#ff3300\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : i == \"1\" ? '““””<span style=\"color:#ff6600\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : i == \"2\" ? '““””<span style=\"color:#ff9900\">' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name : '““””<span>' + (parseInt(i) + 1).toString() + '</span>' + \"\\t\\t\\t\" + name,\n                url: $('#noLoading#').lazyRule((name) => {\n                    name = name.split('    (')[0];\n                    putMyVar('s', name);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, name),\n                desc: des,\n                col_type: \"text_1\"\n            });\n        }\n    }\n    setResult(d);\n}","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"规则列表\",\"path\":\"data\",\"rule\":\"let rules = [{\\n    name: \\\"UP云搜\\\",\\n    find: function(s) {\\n        let json = request(\\\"https://api.upyunso.com/search?keyword=\\\" + s + \\\"&page=1&s_type=2\\\", {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://www.upyunso.com/search.html?keyword=\\\" + s + \\\"&page=1&s_type=2\\\"\\n            }\\n        });\\n        json = JSON.parse(base64Decode(json));\\n        let d = []\\n        for (let i = 0; i < json.result.items.length; i++) {\\n            let it = json.result.items[i];\\n            let u = it.page_url;\\n            if (u.startsWith(\\\"download\\\")) {\\n                u = \\\"x5Rule://https://www.upyunso.com/\\\" + u + \\\"@\\\" + $.toString(() => {\\n                    let url = location.href\\n                    if (url.startsWith(\\\"https://www.aliyundrive.com/\\\")) {\\n                        return 'hiker://page/detail?rule=云盘汇影&url=' + url + '??fypage';\\n                    }\\n                });\\n            } else {\\n                continue;\\n            }\\n            d.push({\\n                title: it.title,\\n                url: u,\\n                desc: \\\"““””<font color=#f13b66a>UP云搜</font>&nbsp;收录时间：\\\" + it.insert_time + \\\"<br>\\\" + (it.content || []).map(i1 => i1.title).join(\\\"<br>\\\"),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"猫狸盘搜\\\",\\n    find: function(s) {\\n        let html = request(\\\"https://www.alipansou.com/search?k=\\\" + s, {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://www.alipansou.com\\\"\\n            }\\n        });\\n        let arr = pdfa(html, \\\"#app&&a\\\");\\n        //log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = \\\"<div>\\\" + arr[i] + \\\"</div>\\\";\\n            let u = pdfh(it, \\\"a&&href\\\");\\n            //log(u);\\n            if (!u.includes(\\\"/s/\\\")) {\\n                continue;\\n            }\\n            u = \\\"https://www.alipansou.com\\\" + u;\\n            d.push({\\n                title: pdfh(it, \\\"template&&Text\\\"),\\n                url: $(u).lazyRule(() => {\\n                    let html = request(input);\\n                    var _links = html.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\n                    //log(_links);\\n                    if (_links.length > 0) {\\n                        return 'hiker://page/detail?rule=云盘汇影&url=' + _links[0] + '??fypage';\\n                    } else {\\n                        return input;\\n                    }\\n                }),\\n                desc: \\\"““””<font color=#f13b66a>猫狸盘搜</font>&nbsp;\\\" + pdfh(it, \\\"template,1&&Text\\\"),\\n            });\\n        }\\n        return d;\\n    }\\n}, {\\n    name: \\\"易搜\\\",\\n    find: function(s) {\\n        let html = request(\\\"https://yiso.fun/api/search?name=\\\" + s + \\\"&pageNo=1\\\", {\\n            headers: {\\n                \\\"Referer\\\": \\\"https://yiso.fun/info?searchKey=\\\" + s\\n            }\\n        });\\n        let arr = JSON.parse(html).data.list;\\n        log(arr);\\n        let d = [];\\n        for (let i = 0; i < arr.length; i++) {\\n            let it = arr[i];\\n            let u = it.url;\\n            if (u == null || !u.includes(\\\"aliyun\\\")) {\\n                continue;\\n            }\\n            d.push({\\n                title: \\\"““””\\\" + it.name,\\n                url: 'hiker://page/detail?rule=云盘汇影&url=' + u + '??fypage',\\n                desc: \\\"““””<font color=#f13b66a>易搜</font>&nbsp;\\\" + (it.gmtShare || it.gmtCreate),\\n            });\\n        }\\n        return d;\\n    }\\n}];\\n\\n//并发规则数\\nlet size = 10;\\n\\n$.exports = function(page, rule) {\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"天翼小站","author":"apk","version":2,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"宁可少字，不要错字。\",\n    col_type: \"input\"\n});\nsetResult(d);","searchFind":"body&&article;a&&Text;a&&href;*;*;*","search_url":"https://yun.hei521.cn/index.php/search/**","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"聚云盘Plus","author":"小棉袄🌞","version":12,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet urls = {\n    \"KK小站\": \"https://kkxz.vip/\",\n    \"橘子盘搜\": \"https://www.nmme.cc\",\n    \"新剧场\": \"https://www.xinjuc.com/\",\n    \"SN\": \"http://sxjjj.com/apps/index.html?id=2060sn\",\n    \"易搜\": \"web://https://yiso.fun/\",\n};\nlet {\n    load\n} = $.require(\"hiker://page/data\");\nlet arr = load();\nfor (let it of arr) {\n    let obj = {};\n    urls[it.name] = it.url;\n}\nurls[\"添加导入\"] = \"hiker://page/add#noHistory#\";\nurls[\"分享数据\"] = $().lazyRule(() => {\n    let {\n        load\n    } = $.require(\"hiker://page/data\");\n    let arr = load();\n    if (arr.length == 0) {\n        return \"toast://还没有新增过引擎哦\"\n    } else {\n        return \"copy://云口令，复制整条口令打开软件即可导入\\n\" + base64Encode(JSON.stringify(arr)) + \"@import=js:'hiker://page/im?rule=\" + MY_RULE.title + \"&b=1&a='+input\"\n    }\n});\n\n\nlet keys = Object.keys(urls);\nlet url = getItem(\"u\", urls[keys[0]]);\nfor (let it of keys) {\n    d.push({\n        title: url == urls[it] ? \"<b>““\" + it + \"””</b>\" : \"““””<b>\" + it + \"</b>\",\n        url: $(\"#noLoading#\").lazyRule((url) => {\n            if (!url.startsWith(\"http\")) {\n                return url;\n            }\n            setItem(\"u\", url);\n            refreshPage();\n            return \"hiker://empty\";\n        }, urls[it]),\n        col_type: \"scroll_button\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n}\nlet isXj = (typeof(MY_NAME) != 'undefined' && MY_NAME == '嗅觉浏览器');\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: isXj ? \"screen-100&&float\" : \"screen-140&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.startsWith(origin) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"添加引擎\",\"path\":\"add\",\"rule\":\"js:\\nvar d = [];\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"name\\\");\\n    clearMyVar(\\\"url\\\");\\n}));\\nd.push({\\n    title: \\\"\\\",\\n    url: \\\"\\\",\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入网站名称\\\",\\n    extra: {\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"name\\\", input);\\n        })\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: \\\"\\\",\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入网站地址\\\",\\n    extra: {\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"url\\\", input);\\n        })\\n    }\\n});\\nd.push({\\n    title: \\\"添加保存\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n        let url = getMyVar(\\\"url\\\", \\\"\\\");\\n        if (name == \\\"\\\" || url == \\\"\\\") {\\n            return \\\"toast://请输入完整信息\\\"\\n        }\\n        let {\\n            add\\n        } = $.require(\\\"hiker://page/data\\\");\\n        add(name, url);\\n        refreshPage();\\n        return \\\"toast://已添加\\\"\\n    }),\\n    col_type: \\\"text_center_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\"\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据管理\",\"path\":\"data\",\"rule\":\"$.exports = {\\n    load: function() {\\n        return storage0.getItem(\\\"data\\\", []);\\n    },\\n    add: function(name, url) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        for (let it of data) {\\n            if (it.name == name) {\\n                return\\n            }\\n        }\\n        data.push({\\n            name: name,\\n            url: url\\n        });\\n        storage0.setItem(\\\"data\\\", data);\\n    },\\n    addAll: function(list) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        let names = data.map(it => it.name);\\n        let count = 0;\\n        for (let it of list) {\\n            if (!names.includes(it.name)) {\\n                data.push(it);\\n                count++;\\n            }\\n        }       \\n        storage0.setItem(\\\"data\\\", data);\\n        return count;\\n    },\\n    remove: function(name) {\\n        let data = storage0.getItem(\\\"data\\\", []);\\n        data = data.filter(it => it.name != name);\\n        storage0.setItem(\\\"data\\\", data);\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"im\",\"rule\":\"js:\\nvar d = [];\\nlet a = getParam(\\\"a\\\", \\\"\\\");\\nif (a != \\\"\\\") {\\n    a = base64Decode(a);\\n}\\nsetPageTitle(MY_RULE.title + \\\"批量导入\\\")\\nputMyVar(\\\"im\\\", a);\\nd.push({\\n    title: \\\"\\\",\\n    url: \\\"\\\",\\n    col_type: \\\"input\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: a,\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"im\\\", input);\\n        }),\\n        titleVisible: false,\\n        type: 'textarea',\\n        height: 3,\\n        highlight: true\\n    }\\n});\\n\\nlet save = () => {\\n    let a = getMyVar(\\\"im\\\", \\\"[]\\\");\\n    if (a == \\\"\\\" || !a.startsWith(\\\"[\\\")) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let list = JSON.parse(a);\\n    let {\\n        addAll\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let count = addAll(list);\\n    back(true);\\n    return \\\"toast://已添加\\\" + count + \\\"条地址\\\"\\n};\\nd.push({\\n    title: \\\"导入\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(save),\\n    col_type: \\\"text_center_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\"\\n});\\n\\nif (getParam(\\\"b\\\", \\\"0\\\") == \\\"1\\\") {\\n    confirm({\\n        title: \\\"温馨提示\\\",\\n        content: \\\"确定立即导入\\\" + MY_RULE.title + \\\"数据？\\\",\\n        confirm: $.toString(save)\\n    });\\n}\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小纸条网盘","author":"MrFly","version":3,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://u.gitcafe.net/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://u.gitcafe.net/favicon.ico"},{"last_chapter_rule":"","title":"大佬网盘","author":"tee&MrFly","version":3,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"综合;视频;音频;图片;电子书","class_url":"all;video;audio:image;doc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://dalao.ru/w/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":"#app&&van-row,3:;template&&Text;a&&href;template,1&&Text;*;van-card&&thumb","search_url":"https://www.alipansou.com/search?k=**","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://dalao.ru/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"网盘","author":"","version":0,"type":"other","url":"https://v1.hitokoto.cn","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles='咕咕@@https://www.h2ero.com/&&小白盘@@https://www.xiaobaipan.com/&&云盘精灵@@https://www.yunpanjingling.com/&&十月搜索@@http://www.shiyue.org/&&史莱姆@@http://www.slimego.cn/&&坑搜网@@http://www.kengso.com/&&热盘搜@@http://www.repanso.com/&&盘么么@@http://www.panmeme.com/&&盘搜啦@@http://www.pansoula.com/&&58网盘@@https://m.58wangpan.com/&&西部维度@@http://wx.xingtuhua.com/&&56网盘@@https://m.56wangpan.com/&&V盘@@http://www.vpansou.com/&&探索云@@http://tansuo233.com/&&搜度网盘@@http://m.sodu123.com/&&99百度云@@http://www.99baiduyun.com&&fa盘搜@@https://www.fastsoso.cn/&&文件搜@@http://wjsou.com/&&轻舟网@@https://www.qzhou.com.cn/&&百度云@@http://www.baiduyunsousou.com/#&&云铺子@@http://www.yunpz.net/&&网盘传奇@@https://jidanso.com/&&搜网盘@@http://m.sowangpan.com/&&SOSO云盘@@https://www.sosoyunpan.com/&&盘131@@http://m.pan131.com/&&找云盘@@http://m.zhaoyunpan.cn/&&猪猪盘@@http://www.zhuzhupan.com/&&电驴盘@@http://www.verypan.com/';\nvar t=titles.split(\"&&\");var res={};var d=[];var hitokoto={};eval(\"hitokoto=\"+getResCode());\n\nd.push({title:hitokoto.hitokoto,url:\"https://api.lyiqk.cn/menhera\",desc:\"\",col_type:\"pic_1\",pic_url:\"https://api.lyiqk.cn/menhera?t=\"+new Date().getTime()});\n\nfor(var i=0;i<t.length && i<19;i++){var k=t[i].split(\"@@\");if(k.length<2)continue;var r={};r.title=k[0];r.url=k[1];r.col_type='text_3';d.push(r);}\n\nfor(var i=2;i<t.length;i++){var k=t[i].split(\"@@\");if(k.length<2)continue;var r={};r.title=k[0];r.url=k[1];r.col_type='text_3';d.push(r);}\n\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"奈斯搜索","author":"tee&MrFly","version":2,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"综合;视频;音频;图片;电子书","class_url":"all;video;audio:image;doc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.niceso.fun\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","searchFind":".search-left-container&&.search-item;h2&&Text;a&&href;.search-note&&Text;.search-des&&Text;*","search_url":"https://www.niceso.fun/search/?type=all&page=fypage&q=**","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.niceso.fun/static/img/logo.png"},{"last_chapter_rule":"","title":"网盘合集","author":"","version":6,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nif (getItem(\"f\", \"0\") == \"0\") {\n    d.push($.require(\"hiker://page/about2\"));\n    d.push({\n        title: \"确定\",\n        url: $(\"#noLoading#\").lazyRule(() => {\n            setItem(\"f\", \"1\");\n            refreshPage();\n            return \"hiker://empty\";\n        }),\n        col_type: \"text_center_1\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n} else {\n    d.push({\n        title: '‘‘’’<strong><font color=\"#FFB6C1\">关于</front></strong>',\n        url: \"hiker://page/about\",\n        col_type: \"text_center_1\"\n    })\n    let pans = [{\n        name: \"123pan\",\n        pic: \"http://alist.joegu.tk/d/rules/logologin.69298531_edit_5944200447530.png\"\n    }, {\n        name: \"夸克网盘\",\n        pic: \"http://alist.joegu.tk/d/rules/%E5%A4%B8%E5%85%8B_5.8.6.223.png\"\n    }, {\n        name: \"天翼云盘\",\n        pic: \"https://android-artworks.25pp.com/fs08/2020/07/28/8/110_2f359e5a49e69d8aea074212198b9383_con.png\"\n    }, {\n        name: \"Pikpak\",\n        pic: \"http://alist.joegu.tk/d/rules/PikPak_1.22.5.png\"\n    }];\n    if (getItem(\"dev\", \"0\") == \"1\") {\n        pans.push({\n            name: \"百度网盘\",\n            pic: \"http://alist.joegu.tk/d/rules/%E7%99%BE%E5%BA%A6%E7%BD%91%E7%9B%98_11.30.2.png\"\n        });\n    }\n    pans.forEach(item => {\n        d.push({\n            title: item.name,\n            col_type: \"icon_2_round\",\n            img: item.pic,\n            url: \"hiker://page/\" + item.name + (item.name == \"夸克网盘\" ? \"?page=fypage\": \"\"),\n            extra: {\n                //newWindow: true\n            }\n        })\n    })\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.extend({\n    audio: [\"mp3\", \"flac\", \"ogg\", \"m4a\", \"wav\", \"opus\"],\n    movie: [\"mp4\", \"mkv\", \"avi\", \"mov\", \"rmvb\", \"webm\", \"flv\", \"m4v\", \"m3u8\", \"ts\"],\n    img: [\"jpg\", \"png\", \"jpeg\", \"gif\", \"svg\", \"raw\"]\n})","pages":"[{\"col_type\":\"movie_3\",\"name\":\"123pan\",\"path\":\"123pan\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    const {\\n        fileList,\\n        getIcon\\n    } = $.require(\\\"hiker://page/code\\\")\\n    d.push({\\n        title: \\\"⚙️设置\\\",\\n        url: \\\"hiker://page/settings\\\",\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    if (getItem(\\\"token\\\", \\\"\\\") != \\\"\\\") {\\n        var paths = storage0.getMyVar(\\\"paths123\\\", [{\\n            name: \\\"根目录\\\",\\n            id: \\\"0\\\"\\n        }])\\n        if (paths.length > 1) {\\n            d.push({\\n                title: \\\"<\\\",\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((paths) => {\\n                    paths.pop()\\n                    storage0.putMyVar(\\\"paths123\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths)\\n            })\\n        }\\n        paths.forEach((item, index) => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((item, paths, index) => {\\n                    putMyVar(\\\"id\\\", item.id)\\n                    storage0.putMyVar(\\\"paths123\\\", paths.slice(0, index + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, item, paths, index)\\n            })\\n        })\\n        fileList(paths[paths.length - 1].id).data.InfoList.forEach(item => {\\n            var img = getIcon(item)\\n            if (item.Type == 1) {\\n                var url = $().lazyRule((id, name, paths) => {\\n                    paths.push({\\n                        name: name,\\n                        id: id\\n                    })\\n                    storage0.putMyVar(\\\"paths123\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, item.FileId, item.FileName, paths)\\n            } else {\\n                var url = item.DownloadUrl\\n            }\\n            d.push({\\n                title: item.FileName,\\n                url: url,\\n                img: img,\\n                col_type: \\\"avatar\\\"\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: \\\"未登录\\\",\\n            url: \\\"hiker://page/settings\\\",\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n} catch (e) {\\n    log(e.message)\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"code\",\"path\":\"code\",\"rule\":\"$.exports.fileList = function(id) {\\n    let list = request(buildUrl(\\\"https://www.123pan.com/api/file/list/new\\\", {\\n        \\\"driveId\\\": 0,\\n        \\\"limit\\\": 100,\\n        \\\"orderBy\\\": \\\"fileId\\\",\\n        \\\"OrderDirection\\\": \\\"asc\\\",\\n        \\\"ParentFileId\\\": id,\\n        \\\"trashed\\\": false\\n    }), {\\n        headers: {\\n            \\\"Authorization\\\": \\\"Bearer \\\" + getItem(\\\"token\\\")\\n        }\\n    })\\n    return JSON.parse(list)\\n}\\n$.exports.getIcon = function(content) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let root = \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/\\\";\\n    if (content.Type == 1) {\\n        img = root + \\\"文件夹.svg\\\"\\n    } else {\\n        let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|css|doc|epub|exc|htm|xlsx'.split('|');\\n        let fileName = content.FileName\\n        let hzm = getHzm(fileName)\\n        if (files.includes(hzm)) {\\n            img = root + hzm + '.svg';\\n        } else {\\n            img = root + \\\"文件.svg\\\"\\n        }\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\"},{\"col_type\":\"text_2\",\"name\":\"settings\",\"path\":\"settings\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"账号(手机号)\\\",\\n    url: $(getItem(\\\"username\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"username\\\", input)\\n    })\\n})\\nd.push({\\n    title: \\\"密码\\\",\\n    url: $(getItem(\\\"passwd\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"passwd\\\", input)\\n    })\\n})\\nd.push({\\n    title: \\\"登陆\\\",\\n    url: $().lazyRule(() => {\\n        let res = JSON.parse(post(\\\"https://www.123pan.com/api/user/sign_in\\\", {\\n            body: {\\n                \\\"passport\\\": getItem(\\\"username\\\", \\\"\\\"),\\n                \\\"password\\\": getItem(\\\"passwd\\\", \\\"\\\")\\n            }\\n        }))\\n        if (res.message == \\\"success\\\") {\\n            setItem(\\\"token\\\", res.data.token)\\n            back()\\n            return \\\"toast://登陆成功\\\"\\n        } else {\\n            return \\\"toast://\\\" + res.message\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"百度网盘\",\"path\":\"百度网盘\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"设置\\\",\\n    url: \\\"hiker://page/login1\\\",\\n    col_type: \\\"text_1\\\"\\n})\\nif (getItem(\\\"access_token\\\", \\\"\\\") != \\\"\\\") {\\n    try {\\n        const {\\n            getIcon,\\n            getHzm,\\n            getLink\\n        } = $.require(\\\"hiker://page/code1\\\")\\n        let paths = storage0.getMyVar(\\\"pathsbaidu\\\", [{\\n            path: \\\"/\\\",\\n            name: \\\"家\\\"\\n        }])\\n        paths.forEach((item, i) => {\\n            d.push({\\n                title: item.name,\\n                url: $().lazyRule((paths, i) => {\\n                    storage0.putMyVar(\\\"pathsbaidu\\\", paths.slice(0, i + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, i),\\n                col_type: \\\"scroll_button\\\"\\n            })\\n        })\\n        let res = JSON.parse(request(buildUrl(\\\"https://pan.baidu.com/rest/2.0/xpan/file\\\", {\\n            \\\"access_token\\\": getItem(\\\"access_tokenbaidu\\\"),\\n            \\\"method\\\": \\\"list\\\",\\n            \\\"dir\\\": paths[paths.length - 1].path,\\n            \\\"web\\\": \\\"web\\\",\\n            \\\"limit\\\": 0,\\n            \\\"limit\\\": 200\\n        })))\\n        res.list.forEach(item => {\\n            if (item.isdir == 1) {\\n                var url = $().lazyRule((item, paths) => {\\n                    paths.push({\\n                        path: item.path,\\n                        name: item.server_filename\\n                    })\\n                    storage0.putMyVar(\\\"pathsbaidu\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, item, paths)\\n            } else if ($.movie.includes(getHzm(item.server_filename))) {\\n                var url = getLink(\\\"movie\\\", item.fs_id, item.path)\\n            } else if ($.audio.includes(getHzm(item.server_filename))) {\\n                var url = getLink(\\\"audio\\\", item.fs_id, item.path)\\n            } else if ($.img.includes(getHzm(item.server_filename))) {\\n                var url = getLink(\\\"img\\\", item.fs_id, item.path)\\n            } else {\\n                var url = getLink(\\\"\\\", item.fs_id, item.path)\\n            }\\n            d.push({\\n                title: item.server_filename,\\n                img: getIcon(item),\\n                url: url,\\n                col_type: \\\"avatar\\\"\\n            })\\n        })\\n    } catch (e) {\\n        log(e.message)\\n        toast(\\\"出现错误，请查看日志\\\")        \\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"code1\",\"path\":\"code1\",\"rule\":\"$.exports.getIcon = function(content) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let root = \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/\\\";\\n    if (content.isdir == 1) {\\n        img = root + \\\"文件夹.svg\\\"\\n    } else {\\n        let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|css|doc|epub|exc|htm|xlsx'.split('|');\\n        let fileName = content.server_filename\\n        let hzm = getHzm(fileName)\\n        if (files.includes(hzm)) {\\n            img = root + hzm + '.svg';\\n        } else {\\n            img = root + \\\"文件.svg\\\"\\n        }\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\\n$.exports.getLink = function(ext, id, path) {\\n    return $().lazyRule((ext, id, path) => {\\n        if (getItem(\\\"jk\\\", \\\"0\\\") == \\\"1\\\") {\\n            var res = JSON.parse(request(buildUrl(\\\"https://pan.baidu.com/api/filemetas\\\", {\\n                \\\"access_token\\\": getItem(\\\"access_token\\\"),\\n                \\\"dlink\\\": \\\"1\\\",\\n                \\\"web\\\": \\\"5\\\",\\n                \\\"origin\\\": \\\"dlna\\\",\\n                \\\"target\\\": `[\\\\\\\"${path}\\\\\\\"]`\\n            }))).info[0].dlink\\n        } else {\\n            var res = JSON.parse(request(buildUrl(\\\"https://pan.baidu.com/rest/2.0/xpan/multimedia\\\", {\\n                \\\"access_token\\\": getItem(\\\"access_token\\\"),\\n                \\\"method\\\": \\\"filemetas\\\",\\n                \\\"fsids\\\": `[${id}]`,\\n                \\\"dlink\\\": \\\"1\\\"\\n            }), {\\n                headers: {\\n                    \\\"User-Agent\\\": \\\"pan.baidu.com\\\"\\n                }\\n            })).list[0].dlink + \\\"&access_token=\\\" + getItem(\\\"access_token\\\")\\n        }\\n        if (ext == \\\"movie\\\") {\\n            return JSON.stringify({\\n                urls: [res + \\\"#isVideo=true#\\\"],\\n                headers: {\\n                    \\\"User-Agent\\\": \\\"pan.baidu.com\\\"\\n                }\\n            })\\n        } else if (ext == \\\"audio\\\") {\\n            return JSON.stringify({\\n                urls: [res + \\\"#isMusic=true#\\\"],\\n                headers: {\\n                    \\\"User-Agent\\\": \\\"pan.baidu.com\\\"\\n                }\\n            })\\n        } else if (ext == \\\"img\\\") {\\n            return res + `#.jpg;{User-Agent@pan.baidu.com}`\\n        } else {\\n            return \\\"download://\\\" + res + `;{User-Agent@pan.baidu.com}`\\n        }\\n    }, ext, id, path)\\n}\"},{\"col_type\":\"text_2\",\"name\":\"login1\",\"path\":\"login1\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"获取token\\\",\\n    url: \\\"https://openapi.baidu.com/oauth/2.0/authorize?response_type=code&client_id=iYCeC9g08h5vuP9UqvPHKKSVrKFXGa1v&redirect_uri=https://tool.nn.ci/baidu/callback&scope=basic,netdisk&qrcode=1\\\"\\n})\\nd.push({\\n    title: \\\"登陆\\\",\\n    url: $(\\\"\\\", \\\"填写获取到的token\\\").input(() => {\\n        let res = JSON.parse(request(buildUrl(\\\"https://openapi.baidu.com/oauth/2.0/token\\\", {\\n            \\\"grant_type\\\": \\\"refresh_token\\\",\\n            \\\"refresh_token\\\": input,\\n            \\\"client_id\\\": \\\"iYCeC9g08h5vuP9UqvPHKKSVrKFXGa1v\\\",\\n            \\\"client_secret\\\": \\\"jXiFMOPVPCWlO2M5CwWQzffpNPaGTRBG\\\"\\n        })))\\n        if (!res.access_token) {\\n            log(res)\\n            return \\\"toast://错误！！！\\\"\\n        } else {\\n            setItem(\\\"access_tokenbaidu\\\", res.access_token)\\n           // setItem(\\\"refresh_token\\\", res.refresh_token)\\n            back()\\n        }\\n    })\\n})\\nd.push({\\n    title: getItem(\\\"jk\\\", \\\"0\\\") == \\\"0\\\" ? \\\"官方接口：不是vip会限速，稳定\\\" : \\\"非官方接口：可能不限速，不稳定\\\",\\n    url: $().lazyRule(() => {\\n        setItem(\\\"jk\\\", getItem(\\\"jk\\\", \\\"0\\\") == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"Pikpak\",\"path\":\"Pikpak\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"登陆\\\",\\n    col_type: \\\"text_2\\\",\\n    url: \\\"hiker://page/settings2\\\"\\n})\\nif (getItem(\\\"access_token\\\", \\\"\\\") != \\\"\\\") {\\n    try {\\n        const {\\n            getHzm\\n        } = $.require(\\\"hiker://page/code2\\\")\\n        let paths = storage0.getMyVar(\\\"pathspikpak\\\", [{\\n            \\\"id\\\": \\\"\\\",\\n            \\\"name\\\": \\\"家\\\"\\n        }])\\n        d.push({\\n            title: \\\"添加磁链\\\",\\n            col_type: \\\"text_2\\\",\\n            url: $(\\\"\\\", \\\"输入磁力链接\\\").input(() => {\\n                return \\\"pikpakapp://mypikpak.com/xpan/main_tab?tab=1&add_url=\\\" + encodeURIComponent(input)\\n            })\\n        })\\n        paths.forEach((item, i) => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((paths, i) => {\\n                    storage0.putMyVar(\\\"pathspikpak\\\", paths.slice(0, i + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, i)\\n            })\\n        })\\n        let list = JSON.parse(request(buildUrl(\\\"https://api-drive.mypikpak.com/drive/v1/files\\\", {\\n            \\\"parent_id\\\": paths[paths.length - 1].id,\\n            \\\"thumbnail_size\\\": \\\"SIZE_LARGE\\\",\\n            \\\"with_audit\\\": \\\"true\\\",\\n            \\\"limit\\\": \\\"1000\\\",\\n            \\\"filters\\\": '{\\\"phase\\\":{\\\"eq\\\":\\\"PHASE_TYPE_COMPLETE\\\"},\\\"trashed\\\":{\\\"eq\\\":false}}',\\n            \\\"page_token\\\": \\\"\\\"\\n        }), {\\n            headers: {\\n                \\\"Authorization\\\": \\\"Bearer \\\" + getItem(\\\"access_token\\\")\\n            }\\n        }))\\n        list.files.forEach(item => {\\n            if (item.kind == \\\"drive#folder\\\") {\\n                var urll = $().lazyRule((paths, item) => {\\n                    paths.push({\\n                        id: item.id,\\n                        name: item.name\\n                    })\\n                    storage0.putMyVar(\\\"pathspikpak\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, item)\\n            } else if ($.movie.includes(getHzm(item.name))) {\\n\\n                var ext = \\\"#isVideo=true#\\\"\\n            } else if ($.audio.includes(getHzm(item.name))) {\\n                var ext = \\\"#isMusic=true#\\\"\\n            } else if ($.img.includes(getHzm(item.name))) {\\n                var ext = \\\"#.jpg\\\"\\n            } else {\\n                var ext = \\\"\\\"\\n            }\\n            var url = $().lazyRule((item, ext) => {\\n                let u = `https://api-drive.mypikpak.com/drive/v1/files/${item.id}?_magic=2021&thumbnail_size=SIZE_LARGE`\\n                let res = JSON.parse(request(u, {\\n                    headers: {\\n                        \\\"Authorization\\\": \\\"Bearer \\\" + getItem(\\\"access_token\\\")\\n                    }\\n                }));\\n                //log(res);\\n                if (res.links && res.links[\\\"application/octet-stream\\\"]) {\\n                    let url = res.links[\\\"application/octet-stream\\\"].url;\\n                    if (url) {\\n                        return url + ext\\n                    }\\n                }\\n                for (item of res.medias) {\\n                    try {\\n                        let tmp = item.link\\n                        if (tmp.url) {\\n                            return tmp.url + ext\\n                        }\\n                    } catch (e) {}\\n                }\\n            }, item, ext)\\n            d.push({\\n                title: item.name,\\n                img: item.icon_link,\\n                col_type: \\\"avatar\\\",\\n                url: item.kind == \\\"drive#folder\\\" ? urll : url\\n            })\\n        })\\n    } catch (e) {\\n        toast(\\\"检测到错误\\\")\\n        log(e.message)\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"code2\",\"path\":\"code2\",\"rule\":\"$.exports.login = function(username, password) {\\n    let res = JSON.parse(post(\\\"https://user.mypikpak.com/v1/auth/signin\\\", {\\n        body: {\\n            \\\"captcha_token\\\": \\\"\\\",\\n            \\\"client_id\\\": \\\"YNxT9w7GMdWvEOKa\\\",\\n            \\\"client_secret\\\": \\\"dbw2OtmVEeuUvIptb1Coyg\\\",\\n            \\\"username\\\": username,\\n            \\\"password\\\": password\\n        }\\n    }))\\n    if (res.access_token) {\\n        setItem(\\\"access_token\\\", res.access_token)\\n        setItem(\\\"refresh_token\\\", res.refresh_token)\\n        return true\\n    } else {\\n        log(res)\\n        return false\\n    }\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\"},{\"col_type\":\"text_2\",\"name\":\"settings2\",\"path\":\"settings2\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"账号(邮箱)\\\",\\n    url: $(getItem(\\\"username\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"username\\\", input)\\n        refreshPage()\\n    })\\n})\\nd.push({\\n    title: \\\"密码\\\",\\n    url: $(getItem(\\\"passwd\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"passwd\\\", input)\\n        refreshPage()\\n    })\\n})\\nd.push({\\n    title: \\\"登陆\\\",\\n    url: $().lazyRule(() => {\\n        const {\\n            login\\n        } = $.require(\\\"hiker://page/code2\\\")\\n        log(getItem(\\\"username\\\"))\\n        if (login(getItem(\\\"username\\\"), getItem(\\\"passwd\\\"))) {\\n            back()\\n            return \\\"toast://登陆成功\\\"\\n        } else {\\n            return \\\"toast://登陆失败\\\"\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"天翼云盘\",\"path\":\"天翼云盘\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    if (fileExist(\\\"189.txt\\\")) {\\n        const {\\n            getFiles,\\n            getIcon\\n        } = $.require(\\\"hiker://page/code3\\\")\\n        var paths = storage0.getMyVar(\\\"pathsty\\\", [{\\n            \\\"id\\\": -11,\\n            \\\"name\\\": \\\"家\\\"\\n        }])\\n        paths.forEach((item, i) => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $().lazyRule((paths, i) => {\\n                    storage0.putMyVar(\\\"pathsty\\\", paths.slice(0, i + 1))\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, i)\\n            })\\n        })\\n        let list = getFiles(paths[paths.length - 1].id)\\n        list.fileListAO.folderList.forEach(item => {\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"avatar\\\",\\n                img: \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/文件夹.svg\\\",\\n                url: $().lazyRule((paths, id, name) => {\\n                    paths.push({\\n                        id: id,\\n                        name: name\\n                    })\\n                    storage0.putMyVar(\\\"pathsty\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, paths, item.id, item.name)\\n            })\\n        })\\n        list.fileListAO.fileList.forEach(item => {\\n            var img = getIcon(item.name)\\n            d.push({\\n                title: item.name,\\n                col_type: \\\"avatar\\\",\\n                img: img,\\n                url: $().lazyRule((id, name) => {\\n                    const {\\n                        getHzm\\n                    } = $.require(\\\"hiker://page/code\\\")\\n                    let cookie = readFile(\\\"189.txt\\\")\\n                    let u = \\\"https://cloud.189.cn/api/portal/getFileInfo.action\\\"\\n                    let res = JSON.parse(request(buildUrl(u, {\\n                        \\\"fileId\\\": id\\n                    }), {\\n                        headers: {\\n                            \\\"Cookie\\\": cookie,\\n                            \\\"Accept\\\": \\\"application/json;charset=UTF-8\\\",\\n                            \\\"User-Agent\\\": PC_UA\\n                        }\\n                    }))\\n                    if ($.movie.includes(getHzm(name))) {\\n                        return JSON.stringify({\\n                            urls: [\\\"https:\\\" + res.downloadUrl + \\\"#isVideo=true#\\\"],\\n                            headers: {\\n                                \\\"Cookie\\\": cookie.replace(/;/g, \\\"；；\\\"),\\n                                \\\"User-Agent\\\": PC_UA.replace(/;/g, \\\"；；\\\")\\n                            }\\n                        })\\n                    } else if ($.audio.includes(getHzm(name))) {\\n                        return JSON.stringify({\\n                            urls: [\\\"https:\\\" + res.downloadUrl + \\\"#isVideo=true#\\\"],\\n                            headers: {\\n                                \\\"Cookie\\\": cookie.replace(/;/g, \\\"；；\\\"),\\n                                \\\"User-Agent\\\": PC_UA.replace(/;/g, \\\"；；\\\")\\n                            }\\n                        })\\n                    } else if ($.img.includes(getHzm(name))) {\\n                        return \\\"https:\\\" + res.downloadUrl + `#.jpg@User-Agent=${PC_UA}@Cookie=${cookie}`\\n                    } else {\\n                        return \\\"download://https:\\\" + res.downloadUrl + `@User-Agent=${PC_UA}@Cookie=${cookie}`\\n                    }\\n                }, item.id, item.name)\\n            })\\n        })\\n    } else {\\n        d.unshift({\\n            title: \\\"登陆\\\",\\n            url: \\\"hiker://page/login3\\\",\\n            col_type: \\\"text_center_1\\\"\\n        })\\n    }\\n} catch (e) {\\n    d.unshift({\\n        title: \\\"登陆\\\",\\n        url: \\\"hiker://page/login3\\\",\\n        col_type: \\\"text_center_1\\\"\\n    })\\n    log(e.message)\\n    toast(\\\"程序可能出错了，请查看日志\\\")\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"code3\",\"path\":\"code3\",\"rule\":\"$.exports.getFiles = function(id) {\\n    let u = \\\"https://cloud.189.cn/api/open/file/listFiles.action\\\"\\n    let res = request(buildUrl(u, {\\n        \\\"pageSize\\\": 1000,\\n        \\\"pageNum\\\": 1,\\n        \\\"mediaType\\\": 0,\\n        \\\"folderId\\\": id,\\n        \\\"iconOption\\\": 5,\\n        \\\"orderBy\\\": \\\"lastOpTime\\\",\\n        \\\"descending\\\": \\\"true\\\",\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"189.txt\\\"),\\n            \\\"Accept\\\": \\\"application/json;charset=UTF-8\\\",\\n            \\\"User-Agent\\\": PC_UA\\n        }\\n    })\\n    var json = res.replace(/\\\\\\\"id\\\\\\\":(\\\\d+)/g, '\\\"id\\\":\\\"$1\\\"') //解决js的精度问题\\n    return JSON.parse(json)\\n}\\n$.exports.getIcon = function(fileName) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let root = \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/\\\";\\n    let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|css|doc|epub|exc|htm|xlsx'.split('|');\\n    let hzm = getHzm(fileName)\\n    if (files.includes(hzm)) {\\n        img = root + hzm + '.svg';\\n    } else {\\n        img = root + \\\"文件.svg\\\"\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"login3\",\"path\":\"login3\",\"rule\":\"js:\\nvar d = [];\\naddListener('onClose', () => {\\n    let c = getVar(\\\"https://cloud.189.cn/web/main\\\");\\n    log(c);\\n    saveFile(\\\"189.txt\\\", c);\\n    clearVar(\\\"https://cloud.189.cn/web/main\\\");\\n})\\nd.push({\\n    url: \\\"https://cloud.189.cn/web/login.html\\\",\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            var url = location.href\\n            if (url.includes(\\\"https://cloud.189.cn/web/main\\\")) {\\n                let cookie = fba.getCookie(url);\\n                if (cookie != null && cookie.length > 0) {\\n                    fba.putVar(\\\"https://cloud.189.cn/web/main\\\", cookie);\\n                    alert(\\\"已获取到cookie\\\");\\n                    fba.back();                  \\n                }\\n            }\\n        }),\\n        ua: PC_UA,\\n        canBack: true\\n    }\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"夸克网盘\",\"path\":\"夸克网盘\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    if (fileExist(\\\"quark.txt\\\")) {\\n        const {\\n            getIcon,\\n            getHzm,\\n            getLink\\n        } = $.require(\\\"hiker://page/code4\\\")\\n        var cookie = readFile(\\\"quark.txt\\\")\\n        let userinfo = JSON.parse(request(\\\"https://pan.quark.cn/account/info\\\", {\\n            headers: {\\n                \\\"Cookie\\\": cookie\\n            }\\n        }))\\n        let paths = storage0.getMyVar(\\\"paths\\\", [{\\n            \\\"id\\\": \\\"0\\\",\\n            \\\"name\\\": \\\"根目录\\\"\\n        }])\\n        if (MY_PAGE == 1) {\\n            d.push({\\n                title: userinfo.data.nickname,\\n                img: userinfo.data.avatarUri,\\n                url: \\\"hiker://page/settings4\\\",\\n                col_type: \\\"avatar\\\"\\n            })\\n            paths.forEach((item, i) => {\\n                d.push({\\n                    title: item.name,\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $().lazyRule((paths, i) => {\\n                        storage0.putMyVar(\\\"paths\\\", paths.slice(0, i + 1))\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }, paths, i)\\n                })\\n            })\\n        }\\n        let res = JSON.parse(request(buildUrl(\\\"https://drive.quark.cn/1/clouddrive/file/sort\\\", {\\n            \\\"pdir_fid\\\": paths[paths.length - 1].id,\\n            \\\"fr\\\": \\\"pc\\\",\\n            \\\"pr\\\": \\\"ucpro\\\",\\n            \\\"_size\\\": 10,\\n            \\\"_fetch_total\\\": \\\"1\\\",\\n            \\\"_sort\\\": \\\"file_type:asc,file_name:asc\\\",\\n            \\\"_page\\\": getParam(\\\"page\\\")\\n        }), {\\n            headers: {\\n                \\\"Cookie\\\": cookie,\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Referer\\\": \\\"https://pan.quark.cn/\\\"\\n            }\\n        }))\\n        res.data.list.forEach(item => {\\n            if (!item.file) {\\n                var url = $().lazyRule((item, paths) => {\\n                    paths.push({\\n                        id: item.fid,\\n                        name: item.file_name\\n                    })\\n                    storage0.putMyVar(\\\"paths\\\", paths)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, item, paths)\\n            } else if ($.movie.includes(getHzm(item.file_name))) {\\n                var url = getLink(item, cookie, \\\"movie\\\")\\n            } else if ($.audio.includes(getHzm(item.file_name))) {\\n                var url = getLink(item, cookie, \\\"audio\\\")\\n            } else if ($.img.includes(getHzm(item.file_name))) {\\n                var url = getLink(item, cookie, \\\"img\\\")\\n            } else {\\n                var url = getLink(item, cookie)\\n            }\\n            d.push({\\n                title: item.file_name,\\n                img: getIcon(item),\\n                url: url,\\n                col_type: \\\"avatar\\\"\\n            })\\n        })\\n    } else {\\n        if (MY_PAGE == 1) {\\n            d.push({\\n                title: \\\"登陆\\\",\\n                col_type: \\\"text_1\\\",\\n                url: \\\"hiker://page/settings4\\\"\\n            })\\n        }\\n    }\\n} catch (e) {\\n    log(e.message)\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"code4\",\"path\":\"code4\",\"rule\":\"$.exports.getIcon = function(content) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let root = \\\"https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/\\\";\\n    if (!content.file) {\\n        img = root + \\\"文件夹.svg\\\"\\n    } else {\\n        let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip|css|doc|epub|exc|htm|xlsx'.split('|');\\n        let fileName = content.file_name\\n        let hzm = getHzm(fileName)\\n        if (files.includes(hzm)) {\\n            img = root + hzm + '.svg';\\n        } else {\\n            img = root + \\\"文件.svg\\\"\\n        }\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\\n$.exports.getLink = function(item, cookie, ext) {\\n    var url = $().lazyRule((fid, cookie, ext) => {\\n        let res = JSON.parse(post(\\\"https://drive.quark.cn/1/clouddrive/file/download?pr=ucpro&fr=pc\\\", {\\n            headers: {\\n                \\\"Cookie\\\": cookie,\\n                \\\"Accept\\\": \\\"application/json, text/plain, */*\\\",\\n                \\\"Referer\\\": \\\"https://pan.quark.cn/\\\"\\n            },\\n            body: JSON.stringify({\\n                \\\"fids\\\": [fid]\\n            })\\n        }))\\n        if (ext == \\\"movie\\\") {\\n            return JSON.stringify({\\n                urls: [res.data[0].download_url + \\\"#isVideo=true#\\\"],\\n                headers: {\\n                    \\\"Cookie\\\": cookie.replace(/;/g, \\\"；；\\\"),\\n                    \\\"Referer\\\": \\\"https://pan.quark.cn/\\\"\\n                }\\n            })\\n        } else if (ext == \\\"audio\\\") {\\n            return JSON.stringify({\\n                urls: [res.data[0].download_url + \\\"#isMusic=true#\\\"],\\n                headers: {\\n                    \\\"Cookie\\\": cookie.replace(/;/g, \\\"；；\\\"),\\n                    \\\"Referer\\\": \\\"https://pan.quark.cn/\\\"\\n                }\\n            })\\n        } else if (ext == \\\"img\\\") {\\n            return res.data[0].download_url + `@Referer=https://pan.quark.cn/@Cookie=${cookie}`\\n        } else {\\n            return \\\"download://\\\" + res.data[0].download_url + `@Referer=https://pan.quark.cn/@Cookie=${cookie}`\\n        }\\n    }, item.fid, cookie, ext)\\n    return url\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"settings4\",\"path\":\"settings4\",\"rule\":\"js:\\nvar d = [];\\naddListener('onClose', () => {\\n    saveFile(\\\"quark.txt\\\", getVar(\\\"https://pan.quark.cn/list#/list/all\\\"))\\n    clearVar(\\\"https://pan.quark.cn/list#/list/all\\\");\\n})\\nd.push({\\n    url: \\\"https://pan.quark.cn/\\\",\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            var url = location.href\\n            if (url == \\\"https://pan.quark.cn/list#/list/all\\\") {\\n                let cookie = fba.getCookie(url);\\n                if (cookie != null && cookie.length > 0) {\\n                    fba.putVar(url, cookie);\\n                    alert(\\\"已获取到cookie\\\");\\n                    fba.back();\\n                }\\n            }\\n        }),\\n        ua: PC_UA,\\n        canBack: true\\n    }\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"关于\",\"path\":\"about\",\"rule\":\"js:\\nvar d = [];\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"c\\\");\\n}));\\nd.push($.require(\\\"hiker://page/about2\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let c = parseInt(getMyVar(\\\"c\\\", \\\"1\\\"))\\n        if (c >= 5) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"确定要开启开发者模式吗？注意开启该模式则表示后续您的所有操作均为主观能动操作，所产生的一切问题与责任均由您自己承担\\\",\\n                confirm: $.toString(() => {\\n                    setItem(\\\"dev\\\", \\\"1\\\");\\n                    return \\\"toast://已开启开发者模式\\\"\\n                })\\n            });\\n            return \\\"hiker://empty\\\"\\n        } else {\\n            putMyVar(\\\"c\\\", c + 1 + \\\"\\\");\\n            return \\\"hiker://empty\\\";\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"关于2\",\"path\":\"about2\",\"rule\":\"$.exports = {\\n    title: \\\"本规则基于开源项目：<a href=\\\\\\\"https://github.com/alist-org/alist\\\\\\\">Alist</a>，探索不使用服务器实现Alist逻辑，本规则所有代码全部开源，仅限个人使用，仅供研究、学习和测试，禁止转载分享到第三方平台\\\",\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"rich_text\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\"\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/55.png"},{"firstHeader":"class","last_chapter_rule":"","title":"盘古侠搜索","author":"鸭鸭","version":1,"type":"video","url":"hiker://empty##https://www.lzpan.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M0%20517.551134v-12.58228c0.838819-5.032912%205.032912-7.549368%208.388187-10.904643C132.533354%20369.080225%20257.517339%20244.09624%20382.501325%20119.951073c13.421099-13.421099%2020.970467-13.421099%2034.391566%200C541.876876%20244.935059%20666.860862%20369.080225%20791.006029%20494.064211c13.421099%2013.421099%2013.421099%2020.970467%200%2033.552748l-40.263298%2040.263297c-13.421099%2013.421099-20.970467%2013.421099-34.391566%200C616.53174%20468.89965%20516.712316%20369.080225%20416.892891%20269.260801c-13.421099-13.421099-20.970467-13.421099-34.391566%200-75.493682%2074.654864-150.148546%20150.148546-224.80341%20224.80341-13.421099%2013.421099-13.421099%2020.970467%200%2033.552748C270.09962%20640.018664%20382.501325%20753.259187%20494.90303%20865.660892c12.58228%2012.58228%2020.131649%2012.58228%2033.552747%200l5.032913-5.032912c10.904643-10.904643%2010.904643-19.29283%200-30.197473L418.570528%20715.512346l-77.171319-77.17132c-10.904643-10.904643-10.904643-19.29283%200-30.197473l44.45739-44.45739c10.065824-10.065824%2020.131649-10.065824%2030.197473%200C504.130035%20651.762125%20593.044817%20740.676907%20681.959598%20830.430507c10.065824%2010.065824%2010.065824%2020.131649%200%2029.358655-52.006759%2052.006759-104.013518%20104.852337-156.859095%20156.859095-10.065824%2010.065824-20.131649%2010.065824-31.036292-1.677637l-160.214371-160.214371C226.481047%20746.548638%20118.273436%20638.341026%2010.065824%20530.133415c-3.355275-3.355275-8.388187-6.71055-10.065824-12.582281z%22%20fill%3D%22%23595656%22%20%2F%3E%3Cpath%20d%3D%22M504.968854%200h12.58228c4.194093%200.838819%207.549368%205.032912%2010.065825%207.549368l485.676024%20485.676024c12.58228%2012.58228%2012.58228%2020.970467%200%2034.391567-86.398326%2088.075963-174.474288%20175.313107-261.711433%20263.38907-14.259918%2014.259918-21.809286%2014.259918-35.230385%200-99.819425-99.819425-199.638849-199.638849-299.458274-298.619455-14.259918-14.259918-20.131649-14.259918-35.230385%200l-77.17132%2077.171319c-12.58228%2012.58228-20.970467%2012.58228-33.552748%200-14.259918-14.259918-29.358654-28.519836-43.618572-43.618572-10.065824-10.065824-10.065824-19.29283%200-29.358654l156.020277-156.020277c10.904643-10.904643%2020.131649-10.904643%2031.875111%200.838819l299.458274%20299.458273c14.259918%2014.259918%2020.970467%2014.259918%2036.069203%200L863.983255%20527.616959c13.421099-13.421099%2013.421099-20.131649%200-33.552748C728.094627%20357.336764%20591.367179%20220.609317%20454.639732%2083.881869c-15.098736-15.098736-15.098736-21.809286%200-36.908022C468.060831%2033.552748%20481.481931%2020.970467%20494.90303%207.549368c3.355275-3.355275%205.871731-6.71055%2010.065824-7.549368z%22%20fill%3D%22%232E5887%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"Webdav","author":"Joe&小棉袄🌞","version":23,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/main\")","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"/*\n你想自定义的文件格式\ntext：文本，自动打开，\naudio：音频，自动播放，\nmovie：视频，自动播放\nimg：图片，自动预览\nsubtitle：字幕，手动开关\n*/\n$.extend({\n    text: [\"htm\", \"html\", \"xml\", \"java\", \"properties\", \"sql\", \"js\", \"md\", \"json\", \"conf\", \"ini\", \"vue\", \"php\", \"py\", \"bat\", \"gitignore\", \"yml\", \"go\", \"sh\", \"c\", \"cpp\", \"h\", \"hpp\", \"tsx\"],\n    audio: [\"mp3\", \"flac\", \"ogg\", \"m4a\", \"wav\", \"opus\"],\n    movie: [\"mp4\", \"mkv\", \"avi\", \"mov\", \"rmvb\", \"webm\", \"flv\", \"m4v\", \"m3u8\"],\n    img: [\"jpg\", \"png\", \"jpeg\", \"gif\", \"svg\", \"raw\"],\n    subtitle: [\"vtt\", \"srt\", \"ass\"]\n})","pages":"[{\"col_type\":\"text_1\",\"name\":\"设置\",\"path\":\"settings\",\"rule\":\"js:\\n/*addListener('onClose', $.toString(() => {\\n    //saveFile(\\\"hiker://files/rules/webdav/info.json\\\", JSON.stringify([getItem(\\\"dav\\\"), getItem(\\\"username\\\"), getItem(\\\"passwd\\\")]))\\n    //clearMyVar(\\\"path\\\")\\n    //refreshPage()\\n}))*/\\nvar d = [];\\nd.push({\\n    title: \\\"webdav地址：\\\" + getItem(\\\"dav\\\", \\\"请输入WebDav地址\\\"),\\n    url: $(getItem(\\\"dav\\\", \\\"\\\"), \\\"请输入正确格式的webdav链接！！！\\\").input(() => {\\n        if (!input.startsWith(\\\"http\\\")) {\\n            return \\\"toast://请输入正确的webdav链接！！！\\\"\\n        } else {\\n            if (input[input.length - 1] == \\\"/\\\") {\\n                url = input.substring(0, input.length - 1)\\n                setItem(\\\"dav\\\", url)\\n            } else {\\n                setItem(\\\"dav\\\", input)\\n            }\\n        }\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_1\\\"\\n})\\nd.push({\\n    title: \\\"账户\\\",\\n    url: $(getItem(\\\"user\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"user\\\", input)\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_2\\\"\\n})\\nd.push({\\n    title: \\\"密码\\\",\\n    url: $(getItem(\\\"passwd\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"passwd\\\", input)\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_2\\\"\\n})\\nd.push({\\n    title: \\\"测试连接\\\",\\n    url: $().lazyRule(() => {\\n        const {\\n            getFiles\\n        } = $.require(\\\"hiker://page/code\\\")\\n        if (getFiles(getItem(\\\"dav\\\") + \\\"/\\\")) {\\n            return \\\"toast://连接成功\\\"\\n        } else {\\n            return \\\"toast://连接失败，请检查账户密码\\\"\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nlet icon = getItem(\\\"iconStyle\\\", \\\"默认\\\")\\nlet detail = getItem(\\\"detail\\\", \\\"开\\\")\\nlet subtitle = getItem(\\\"subtitle\\\", \\\"开\\\")\\nlet timestamp = getItem(\\\"time\\\", \\\"0\\\")\\nlet newVersion;\\nlet myVersion = MY_PARAMS.version || 999;\\ntry {\\n    res = JSON.parse(fetch(\\\"http://hiker.nokia.press/hikerule/dev/getbyid?id=5210\\\"))\\n    newVersion = res.result.ver\\n} catch (e) {\\n    toast(\\\"道长仓库抽风了，本次未检测到新版信息\\\");\\n    newVersion = myVersion;\\n}\\nlet isUpdate = Number(newVersion) <= Number(myVersion);\\nlet isVer = Number(newVersion) === Number(myVersion);\\nd.push({\\n    col_type: \\\"line_blank\\\"\\n}, {\\n    title: isUpdate ? \\\"已是最新版\\\" : \\\"🆙新版本\\\",\\n    url: \\\"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQV2ViZGF244CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTUyMTAmYXV0aD1hYjIzMDUyYi1jMGQ2LTU4ZmMtOTU1NS1hMjUwMmEwMGEzODc=\\\",\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"设置图标：\\\" + icon,\\n    url: $().lazyRule((icon) => {\\n        setItem(\\\"iconStyle\\\", icon == \\\"默认\\\" ? \\\"蓝莓\\\" : \\\"默认\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }, icon),\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"显示详细：\\\" + detail,\\n    url: $().lazyRule((detail) => {\\n        setItem(\\\"detail\\\", detail == \\\"开\\\" ? \\\"关\\\" : \\\"开\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }, detail),\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"字幕功能：\\\" + subtitle,\\n    url: $().lazyRule((subtitle) => {\\n        setItem(\\\"subtitle\\\", subtitle == \\\"开\\\" ? \\\"关\\\" : \\\"开\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }, subtitle),\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"时间格式：\\\" + (timestamp == \\\"0\\\" ? \\\"2022/08/20 17:14:31\\\" : \\\"Sat, 20 Aug 2022 09:14:31 GMT\\\"),\\n    url: $().lazyRule((timestamp) => {\\n        setItem(\\\"time\\\", timestamp == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }, timestamp),\\n    col_type: \\\"text_1\\\"\\n}, {\\n    url: $().rule(() => {\\n        setResult([{\\n            title: `\\n            <p>本篇文章只针对设置，其他的使用方法已经在规则中说明清除了</p> <p><ins><ins>前提条件：已经更新7.9版本</ins></ins></p> <p>海阔视界首页频道规则【Webdav】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=5210&amp;auth=ab23052b-c0d6-58fc-9555-a2502a00a387</p> <h1 id=\\\"webdav%E6%98%AF%E4%BB%80%E4%B9%88\\\" tabindex=\\\"-1\\\">Webdav是什么</h1> <p>webdav就是一种网盘文件传输协议，常用于小众软件的数据备份。本规则可以管理webdav的文件，支持浏览、播放、下载、上传、删除等操作</p> <h1 id=\\\"%E6%89%93%E5%BC%80%E8%AE%BE%E7%BD%AE\\\" tabindex=\\\"-1\\\">打开设置</h1> <p><img src=\\\"http://alist.joegu.tk/d/hiker/Screenshot_20220821_082550_com.example.hikerview.jpg\\\" alt=\\\"Screenshot_20220821_082550_com.example.hikerview\\\" /></p> <p>将你的webdav链接和账户密码填进去（这里推荐使用坚果云，优点:稳定;缺点:容量少，价格贵。也可以自己搭建webdav系统，例如alist和cloudreve，需要一定的动手能力）</p> <h2 id=\\\"%E8%AE%BE%E7%BD%AE%E5%9B%BE%E6%A0%87\\\" tabindex=\\\"-1\\\">设置图标</h2> <p>本规则内置两种风格的图标，分别为道长的和蓝莓的，自己选择</p> <h2 id=\\\"%E6%98%BE%E7%A4%BA%E8%AF%A6%E7%BB%86\\\" tabindex=\\\"-1\\\">显示详细</h2> <p>可以列出当前文件夹或文件的创建时间。<br /> <strong><strong>问题：</strong></strong><br /> 不能自动播放下一集</p> <h2 id=\\\"%E5%AD%97%E5%B9%95\\\" tabindex=\\\"-1\\\">字幕</h2> <p>字幕功能如果打开，那么如果视频与字幕的文件名相同，那么就会自动挂载上。如果当前文件夹有这个字幕文件，但是名字不同，就会跳出选择框选择</p> <h1 id=\\\"%E8%BF%94%E5%9B%9E%E4%B8%BB%E7%95%8C%E9%9D%A2\\\" tabindex=\\\"-1\\\">返回主界面</h1> <p><img src=\\\"http://alist.joegu.tk/d/hiker/Screenshot_20220821_140705_com.example.hikerview.jpg\\\" alt=\\\"Screenshot_20220821_140705_com.example.hikerview\\\" /><br /> 可以看见有操作栏，可以上传文件，新建文件夹和删除文件三个操作</p> <p>下面是你的文件，你可以像浏览文件管理器一样使用他</p> <h1 id=\\\"%E9%AB%98%E7%BA%A7%E8%AE%BE%E7%BD%AE\\\" tabindex=\\\"-1\\\">高级设置</h1> <p>点击编辑规则，划到底部的预处理<br /> <img src=\\\"http://alist.joegu.tk/d/hiker/Screenshot_20220821_141135_com.example.hikerview.jpg\\\" alt=\\\"Screenshot_20220821_141135_com.example.hikerview\\\" /><br /> 根据注释修改，我写的几个文件格式已经很完整了，如果有朋友认为不好，可以自行修改<br /> 格式：[“类型1”,“类型2”]</p> <p>都完成了，enjoy💞</p>\\n            `,\\n            col_type: \\\"rich_text\\\"\\n        }])\\n    }),\\n    title: \\\"查看使用说明\\\",\\n    desc: \\\"Powered by Joe&小棉袄\\\",\\n    col_type: \\\"text_center_1\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"代码\",\"path\":\"code\",\"rule\":\"$.exports.getFiles = function(path) {\\n    try {\\n        if (!path || path == \\\"\\\") {\\n            return false\\n        }\\n        let webdav = buildWebDav(path, getItem(\\\"user\\\", \\\"\\\"), getItem(\\\"passwd\\\", \\\"\\\"))\\n        let res = webdav.list()\\n        res = JSON.parse(res)\\n        return res\\n    } catch (e) {\\n        log(e.message)\\n        return false\\n    }\\n}\\n$.exports.fetchFile = function(path) {\\n    let res = request(path, {\\n        headers: {\\n            \\\"authorization\\\": \\\"Basic \\\" + base64Encode(getItem(\\\"user\\\") + \\\":\\\" + getItem(\\\"passwd\\\"))\\n        }\\n    })\\n    return res\\n}\\n$.exports.getIcon = function(content) {\\n    let {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let iconStyles = [{\\n        name: '默认',\\n        url: 'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型/'\\n    }, {\\n        name: '蓝莓',\\n        url: 'https://gitcode.net/qq_32394351/dr/-/raw/master/img/文件类型2/'\\n    }];\\n    let iconStyle = getItem('iconStyle', '默认');\\n    let nowStyle = iconStyles.find(x => x.name === iconStyle);\\n    let iconRoot = nowStyle ? nowStyle.url : iconStyles[0].url;\\n    let root = iconRoot;\\n    if (content.dir) {\\n        img = root + \\\"文件夹.svg\\\"\\n    } else {\\n        let files = 'ai|apk|avi|css|dmg|exe|flv|gif|hiker|html|iso|jpg|js|json|log|mov|mp3|mp4|otf|php|png|ppt|psd|table|txt|wav|xls|zip'.split('|');\\n        let fileName = content.name\\n        let hzm = getHzm(fileName)\\n        if (files.includes(hzm)) {\\n            img = root + hzm + '.svg';\\n        } else {\\n            img = root + \\\"文件.svg\\\"\\n        }\\n    }\\n    return img\\n}\\n$.exports.getHzm = function(fileName) {\\n    return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n}\\n$.exports.removeExt = function(file) {\\n    return file.split('.').slice(0, -1).join('.')\\n};\\n$.exports.getSub = function(list) {\\n    const {\\n        getHzm\\n    } = $.require(\\\"hiker://page/code\\\")\\n    let s = []\\n    list.forEach(item => {\\n        if ($.subtitle.includes(getHzm(item.name))) {\\n            s.push({\\n                title: item.name,\\n                url: item.url\\n            })\\n        }\\n    })\\n    return s\\n}\\n$.exports.download = function(path, name) {\\n    let webdav = buildWebDav(path, getItem(\\\"user\\\", \\\"\\\"), getItem(\\\"passwd\\\", \\\"\\\"))\\n    let p = \\\"hiker://files/cache/_fileSelect_\\\" + name;\\n    webdav.download(name, p);\\n    return getPath(p);\\n}\\n$.exports.deleteFile = function(path, name) {\\n    let webdav = buildWebDav(path, getItem(\\\"user\\\", \\\"\\\"), getItem(\\\"passwd\\\", \\\"\\\"))\\n    webdav.delete(name)\\n}\\n$.exports.sorts = function(list, method) {\\n    if (method.includes(\\\"名称\\\")) {\\n        list.sort(function(a, b) {\\n            return a.name.localeCompare(b.name)\\n        })\\n    } else if (method.includes(\\\"时间\\\")) {\\n        list.sort(function(a, b) {\\n            return a.modifyTimestamp - b.modifyTimestamp\\n        })\\n    }\\n    if (method.includes(\\\"反\\\")) {\\n        list.reverse();\\n    }\\n    return list\\n}\\n$.exports.getInfo = function() {\\n    return JSON.parse(readFile(\\\"hiker://files/rules/webdav/info.json\\\"))\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"main\",\"rule\":\"js:\\nvar d = [];\\nconst {\\n    getFiles,\\n    download,\\n    deleteFile,\\n    getIcon,\\n    sorts\\n} = $.require(\\\"hiker://page/code\\\")\\nvar path = getMyVar(\\\"path\\\", getItem(\\\"dav\\\") + \\\"/\\\")\\nlet files = getFiles(path)\\nif (files) {\\n    let paths = getMyVar(\\\"path\\\").replace(getItem(\\\"dav\\\"), \\\"\\\")\\n    paths = paths.split(\\\"/\\\")\\n    let temp = \\\"\\\"\\n    sorts(files, getMyVar(\\\"sort\\\", \\\"默认\\\"))\\n    d.push({\\n        title: getMyVar(\\\"more\\\", \\\"0\\\") == \\\"0\\\" ? \\\"∧\\\" : \\\"∨\\\",\\n        col_type: \\\"scroll_button\\\",\\n        url: $().lazyRule((path) => {\\n            putMyVar(\\\"more\\\", getMyVar(\\\"more\\\", \\\"0\\\") == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\")\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, path)\\n    }, {\\n        title: \\\"..\\\",\\n        url: $().lazyRule((paths) => {\\n            paths.pop()\\n            putMyVar(\\\"path\\\", getItem(\\\"dav\\\") + paths.join(\\\"/\\\"))\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, paths),\\n        col_type: \\\"scroll_button\\\"\\n    }, {\\n        title: \\\"🏠\\\",\\n        url: $().lazyRule(() => {\\n            putMyVar(\\\"path\\\", getItem(\\\"dav\\\"))\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }),\\n        col_type: \\\"scroll_button\\\"\\n    })\\n    paths.forEach(item => {\\n        if (item != \\\"\\\") {\\n            temp += \\\"/\\\" + item\\n            d.push({\\n                title: decodeURIComponent(item),\\n                url: $().lazyRule((temp) => {\\n                    putMyVar(\\\"path\\\", getItem(\\\"dav\\\") + temp)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, temp),\\n                col_type: \\\"scroll_button\\\"\\n            })\\n        }\\n    });\\n    if (getMyVar(\\\"more\\\", \\\"0\\\") == \\\"1\\\") {\\n        let sorr = [\\\"默认\\\", \\\"名称\\\", \\\"时间\\\"]\\n        d.push({\\n            title: \\\"设置\\\",\\n            url: \\\"hiker://page/settings\\\",\\n            img: \\\"hiker://images/设置\\\",\\n            col_type: \\\"icon_small_4\\\",\\n            extra: {\\n                version: MY_RULE.version\\n            }\\n        }, {\\n            title: \\\"上传文件\\\",\\n            url: \\\"fileSelect://\\\" + $.toString((path) => {\\n                let webdav = buildWebDav(path, getItem(\\\"user\\\"), getItem(\\\"passwd\\\"))\\n                let s = input.split(\\\"/\\\")\\n                log(webdav.upload(s[s.length - 1].replace(\\\"_fileSelect_\\\", \\\"\\\"), input));\\n                refreshPage();\\n            }, path),\\n            img: \\\"hiker://images/home_icon_bookmark\\\",\\n            col_type: \\\"icon_small_4\\\",\\n        }, {\\n            title: \\\"新文件夹\\\",\\n            url: $(\\\"\\\", \\\"输入文件夹名称\\\").input((path) => {\\n                let webdav = buildWebDav(path, getItem(\\\"user\\\"), getItem(\\\"passwd\\\"))\\n                webdav.makeDir(input)\\n                refreshPage()\\n                return \\\"hiker://empty\\\"\\n            }, path),\\n            img: \\\"hiker://images/home_icon_fold\\\",\\n            col_type: \\\"icon_small_4\\\"\\n        }, {\\n            title: getMyVar(\\\"delete\\\", \\\"0\\\") == \\\"0\\\" ? \\\"删除文件\\\" : \\\"结束删除\\\",\\n            img: \\\"hiker://images/home_icon_item\\\",\\n            url: $().lazyRule(() => {\\n                putMyVar(\\\"delete\\\", getMyVar(\\\"delete\\\", \\\"0\\\") == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\")\\n                refreshPage()\\n                return \\\"hiker://empty\\\"\\n            }),\\n            col_type: \\\"icon_small_4\\\"\\n        })\\n        sorr.forEach(item => {\\n            var n = getMyVar(\\\"sort\\\", \\\"默认\\\")\\n            if (n == item) {\\n                var title = item + \\\"↓\\\"\\n            } else if (n.includes(\\\"反\\\") && n.includes(item)) {\\n                var title = item + \\\"↑\\\"\\n            } else {\\n                var title = item + \\\"↕\\\"\\n            }\\n            d.push({\\n                title: title,\\n                col_type: \\\"flex_button\\\",\\n                url: $().lazyRule((item) => {\\n                    if (getMyVar(\\\"sort\\\", \\\"默认\\\") == item) {\\n                        putMyVar(\\\"sort\\\", item + \\\"反\\\")\\n                    } else {\\n                        putMyVar(\\\"sort\\\", item)\\n                    }\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }, item)\\n            })\\n        })\\n    }\\n    files.forEach(item => {\\n        let fileName = decodeURIComponent(item.name)\\n        let len = 30;\\n        let len2 = len / 2;\\n        if (fileName.length >= len) {\\n            fileName = fileName.substr(0, len2) + '...' + fileName.substr(fileName.length - len2);\\n        }\\n        let icon = getIcon(item)\\n        if (getMyVar(\\\"delete\\\", \\\"0\\\") == \\\"0\\\") {\\n            var url = $().lazyRule((item, files) => {\\n                const {\\n                    fetchFile,\\n                    getHzm,\\n                    getSub,\\n                    removeExt,\\n                    download\\n                } = $.require(\\\"hiker://page/code\\\")\\n                if (item.dir) {\\n                    putMyVar(\\\"path\\\", item.url)\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                } else if ($.movie.includes(getHzm(item.name))) {\\n                    if (getItem(\\\"subtitle\\\", \\\"开\\\") == \\\"开\\\") {\\n                        let subtitles = getSub(files)\\n                        let names = [\\\"不需要字幕\\\"]\\n                        subtitles.forEach(ds => {\\n                            names.push(ds.title)\\n                        })\\n                        if (subtitles.length != 0) {\\n                            return $(names, 1, \\\"请选择字幕\\\").select((names, subtitles, url) => {\\n                                if (input == \\\"不需要字幕\\\") {\\n                                    return JSON.stringify({\\n                                        urls: [url],\\n                                        headers: {\\n                                            \\\"Authorization\\\": \\\"Basic \\\" + base64Encode(getItem(\\\"username\\\") + \\\":\\\" + getItem(\\\"passwd\\\"))\\n                                        }\\n                                    })\\n                                } else {\\n                                    return JSON.stringify({\\n                                        urls: [url],\\n                                        subtitle: subtitles[names.indexOf(input) - 1].url,\\n                                        headers: {\\n                                            \\\"Authorization\\\": \\\"Basic \\\" + base64Encode(getItem(\\\"username\\\") + \\\":\\\" + getItem(\\\"passwd\\\"))\\n                                        }\\n                                    })\\n                                }\\n                            }, names, subtitles, item.url)\\n                        } else {\\n                            return item.playUrl + \\\"#isVideo=true#\\\"\\n                        }\\n                    } else {\\n                        return item.playUrl + \\\"#isVideo=true#\\\"\\n                    }\\n                } else if (getHzm(item.name) == \\\"md\\\") {\\n                    require(\\\"https://gitlab.com/hjdhnx/hiker/-/raw/main/js/marked.min.js\\\")\\n                    return \\\"hiker://page/preview?content=\\\" + base64Encode(marked.parse(fetchFile(item.url)))\\n                } else if ($.text.includes(getHzm(item.name))) {\\n                    return \\\"hiker://page/preview?content=\\\" + base64Encode(fetchFile(item.url))\\n                } else if ($.audio.includes(getHzm(item.name))) {\\n                    return item.playUrl + \\\"#isMusic=true#\\\"\\n                } else if ($.img.includes(getHzm(item.name))) {\\n                    let p = download(getMyVar(\\\"path\\\", getItem(\\\"dav\\\")), item.name)\\n                    return p\\n                } else {\\n                    return \\\"download://\\\" + item.playUrl\\n                }\\n            }, item, files)\\n        } else {\\n            var url = $(\\\"确认删除？\\\").confirm((url, deleteFile, path) => {\\n                deleteFile(getMyVar(\\\"path\\\", getItem(\\\"dav\\\")), path)\\n                refreshPage()\\n                return \\\"toast://删除成功\\\"\\n            }, item.url, deleteFile, item.name)\\n        }\\n        d.push({\\n            title: fileName,\\n            img: icon,\\n            url: url,\\n            col_type: \\\"avatar\\\"\\n        })\\n        if (getItem(\\\"detail\\\", \\\"开\\\") == \\\"开\\\") {\\n            d.push({\\n                title: \\\"““””<small>““””<font color='#aaaaaa'>\\\" + (getItem(\\\"time\\\", \\\"0\\\") == \\\"0\\\" ? item.modifyTimeStr : item.modifyTime) + \\\"</font></small>\\\",\\n                url: url,\\n                col_type: \\\"text_1\\\"\\n            })\\n        }\\n    })\\n} else if (getItem(\\\"dav\\\", \\\"\\\") == \\\"\\\" || getItem(\\\"username\\\", \\\"\\\") == \\\"\\\" || getItem(\\\"passwd\\\", \\\"\\\") == \\\"\\\") {\\n    d.push({\\n        title: \\\"当前未设置账号，点我设置\\\",\\n        url: \\\"hiker://page/settings\\\",\\n        col_type: \\\"text_center_1\\\"\\n    })\\n} else {\\n    let paths = getMyVar(\\\"path\\\").replace(getItem(\\\"dav\\\"), \\\"\\\")\\n    paths = paths.split(\\\"/\\\")\\n    d.push({\\n        title: \\\"设置\\\",\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://page/settings\\\"\\n    }, {\\n        title: \\\"出错了，点击刷新\\\",\\n        url: $().lazyRule((paths) => {\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, paths),\\n        col_type: \\\"text_center_1\\\"\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"预览\",\"path\":\"preview\",\"rule\":\"js:\\nlet content = base64Decode(getParam(\\\"content\\\"))\\nsetResult([{\\n    title: content,\\n    col_type: \\\"long_text\\\"\\n}])\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/7.svg"},{"last_chapter_rule":"","title":"Alist V3","author":"Joe","version":2,"type":"tool","url":"hiker://empty?page=fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"home\")","searchFind":"","search_url":"","group":"⑥②☁️网盘","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.extend({\n    text: [\"htm\", \"html\", \"xml\", \"java\", \"properties\", \"sql\", \"js\", \"md\", \"json\", \"conf\", \"ini\", \"vue\", \"php\", \"py\", \"bat\", \"gitignore\", \"yml\", \"go\", \"sh\", \"c\", \"cpp\", \"h\", \"hpp\", \"tsx\", \"txt\", \"epub\", \"azw3\", \"mobi\", \"pdf\", \"chm\"],\n    audio: [\"mp3\", \"flac\", \"ogg\", \"m4a\", \"wav\", \"opus\"],\n    movie: [\"mp4\", \"mkv\", \"avi\", \"mov\", \"rmvb\", \"webm\", \"flv\", \"m4v\", \"m3u8\", \"ts\"],\n    img: [\"jpg\", \"png\", \"jpeg\", \"gif\", \"svg\", \"raw\"],\n    subtitle: [\"vtt\", \"srt\", \"ass\"],\n    yasuo: [\"zip\", \"rar\", \"jar\"],\n    office: [\"doc\", \"docx\", \"xls\", \"xlsx\", \"ppt\", \"pptx\"]\n})\n// 调试用，请勿擅自开启\n//clearItem(\"list\")","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"home\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    var alist = storage0.getItem(\\\"list\\\", [])\\n    var {\\n        getIcon,\\n        formatDate,\\n        getFileSize\\n    } = $.require(\\\"api\\\")\\n    if (alist.length == 0) {\\n        setResult([{\\n            title: \\\"当前无Alist配置\\\",\\n            url: \\\"hiker://page/config\\\",\\n            col_type: \\\"text_center_1\\\"\\n        }])\\n    } else {\\n        // 设置headers\\n        var headers = {}\\n\\n        var paths = storage0.getMyVar(\\\"paths\\\", [])\\n        if (paths.length == 0) {\\n            // 根目录\\n            var path = \\\"/\\\"\\n        } else {\\n            var path = \\\"/\\\" + paths.join(\\\"/\\\")\\n        }\\n\\n        var selected = parseInt(getItem(\\\"selected\\\", \\\"0\\\"))\\n        var now = alist[selected]\\n\\n        // 有密码的先获取token\\n        if (now.user && now.password) {\\n            let res = JSON.parse(post(now.url + \\\"api/auth/login\\\", {\\n                body: JSON.stringify({\\n                    \\\"username\\\": now.user,\\n                    \\\"password\\\": now.password,\\n                    \\\"otp_code\\\": \\\"\\\"\\n                })\\n            }))\\n            if (res.code == 200) {\\n                headers[\\\"Authorization\\\"] = res.data.token\\n            } else {\\n                toast(\\\"登陆失败\\\")\\n                log(res)\\n                d.push({\\n                    title: \\\"账号密码错误\\\",\\n                    url: \\\"hiker://page/config\\\",\\n                    col_type: \\\"text_center_1\\\"\\n                })\\n                setResult(d)\\n            }\\n        }\\n\\n        if (alist[selected][\\\"browser-password\\\"][path]) {\\n            headers[\\\"Cookie\\\"] = \\\"browser-password=\\\" + alist[selected][\\\"browser-password\\\"][path]\\n        }\\n\\n        // 获取网页设置\\n        var config = JSON.parse(request(now.url + \\\"api/public/settings\\\")).data\\n\\n        if (MY_PAGE == 1) {\\n            d.push({\\n                title: \\\"⚙️设置\\\",\\n                url: \\\"hiker://page/config\\\",\\n                col_type: \\\"scroll_button\\\"\\n            })\\n            alist.forEach((item, i) => {\\n                d.push({\\n                    title: i == selected ? $.require(\\\"api\\\").color(item.name, \\\"red\\\") : item.name,\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $().lazyRule((i) => {\\n                        setItem(\\\"selected\\\", i + \\\"\\\")\\n                        clearMyVar(\\\"paths\\\")\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }, i)\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            })\\n            if (config.search_index && config.search_index != \\\"none\\\") {\\n                d.push({\\n                    title: \\\"🔎 搜索\\\",\\n                    col_type: \\\"scroll_button\\\",\\n                    url: \\\"hiker://page/search?page=fypage&u=\\\" + now.url + \\\"&path=\\\" + path,\\n                    extra: {\\n                        headers: headers,\\n                        now: now\\n                    }\\n                })\\n            }\\n            if (now.user && now.password) {\\n                d.push({\\n                    title: \\\"新建文件夹\\\",\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $(\\\"\\\").input((path, now, headers) => {\\n                        var res = JSON.parse(post(now.url + \\\"api/fs/mkdir\\\", {\\n                            body: JSON.stringify({\\n                                path: path + \\\"/\\\" + input\\n                            }),\\n                            headers: headers\\n                        })).code\\n                        if (res == 200) {\\n                            refreshPage()\\n                            return \\\"toast://创建成功\\\"\\n                        } else {\\n                            return \\\"toast://创建失败\\\"\\n                        }\\n                    }, path, now, headers)\\n                }, {\\n                    title: \\\"新建文件\\\",\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $(\\\"\\\").input((path, now, headers) => {\\n                        headers[\\\"File-Path\\\"] = encodeURI(path + \\\"/\\\" + input)\\n                        var res = JSON.parse(request(now.url + \\\"api/fs/put\\\", {\\n                            body: \\\"\\\",\\n                            headers: headers,\\n                            method: \\\"PUT\\\"\\n                        })).code\\n                        if (res == 200) {\\n                            refreshPage()\\n                            return \\\"toast://创建成功\\\"\\n                        } else {\\n                            return \\\"toast://创建失败\\\"\\n                        }\\n                    }, path, now, headers)\\n                }, {\\n                    title: \\\"添加aria2任务\\\",\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $(\\\"\\\", \\\"多条用回车隔开\\\").input((path, now, headers) => {\\n                        var res = JSON.parse(post(now.url + \\\"api/fs/add_aria2\\\", {\\n                            body: JSON.stringify({\\n                                path: path,\\n                                urls: input.split(\\\"\\\\n\\\")\\n                            }),\\n                            headers: headers\\n                        })).code\\n                        if (res == 200) {\\n                            refreshPage()\\n                            return \\\"toast://创建成功\\\"\\n                        } else {\\n                            return \\\"toast://创建失败\\\"\\n                        }\\n                    }, path, now, headers)\\n                })\\n            }\\n\\n            // 网站详情\\n            if (getItem(\\\"detail\\\", \\\"开\\\") == \\\"开\\\") {\\n                d.push({\\n                    title: `${config.site_title} ${config.version}`,\\n                    img: config.logo,\\n                    url: \\\"hiker://empty\\\",\\n                    col_type: \\\"avatar\\\"\\n                })\\n                if (config.announcement != \\\"\\\") {\\n                    d.push({\\n                        title: `‘‘’’<small>${config.announcement}</small>`,\\n                        col_type: \\\"text_1\\\",\\n                        url: \\\"hiker://empty\\\",\\n                        extra: {\\n                            lineVisible: false\\n                        }\\n                    })\\n                }\\n            }\\n\\n            d.push({\\n                title: config.home_icon,\\n                url: $().lazyRule(() => {\\n                    clearMyVar(\\\"paths\\\")\\n                    refreshPage()\\n                    return \\\"hiker://empty\\\"\\n                }),\\n                col_type: \\\"scroll_button\\\"\\n            })\\n\\n            // 加载路径        \\n            paths.forEach((item, index) => {\\n                d.push({\\n                    title: item,\\n                    col_type: \\\"scroll_button\\\",\\n                    url: $().lazyRule((item, paths, index) => {\\n                        storage0.putMyVar(\\\"paths\\\", paths.slice(0, index + 1))\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }, item, paths, index)\\n                })\\n            })\\n        }\\n        // 获取文件列表\\n        var list = JSON.parse(post(now.url + \\\"api/fs/list\\\", {\\n            body: JSON.stringify({\\n                \\\"path\\\": path,\\n                \\\"password\\\": alist[selected][\\\"browser-password\\\"][path],\\n                \\\"page\\\": MY_PAGE,\\n                \\\"per_page\\\": parseInt(config.default_page_size),\\n                \\\"refresh\\\": false\\n            }),\\n            headers: headers\\n        }))\\n        if (list.code == 200 && list.data.content) {\\n            list.data.content.forEach(item => {\\n                var desc = formatDate(item.modified) + \\\" \\\" + getFileSize(item.size)\\n                var url = $().lazyRule((item, u, path) => {\\n                    var url = encodeURI(u + \\\"d\\\" + path + \\\"/\\\" + item.name + \\\"?sign=\\\" + item.sign)\\n                    const type_dict = {\\n                        0: \\\"download://\\\" + url,\\n                        2: url + \\\"#isVideo=true#\\\",\\n                        3: url + \\\"#isMusic=true#\\\",\\n                        4: \\\"download://\\\" + url,\\n                        5: url + \\\"#.jpg\\\"\\n                    }\\n                    if (item.is_dir) {\\n                        var paths = storage0.getMyVar(\\\"paths\\\", [])\\n                        paths.push(item.name)\\n                        storage0.putMyVar(\\\"paths\\\", paths)\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    } else if ($.require(\\\"api\\\").getHzm(item.name) == \\\"pdf\\\") {\\n                        return \\\"x5://https://alist-org.github.io/pdf.js/web/viewer.html?file=\\\" + url\\n                    } else if ($.office.includes($.require(\\\"api\\\").getHzm(item.name))) {\\n                        return $([\\\"微软\\\", \\\"谷歌\\\"]).select((url) => {\\n                            if (input == \\\"微软\\\") {\\n                                return \\\"x5://https://view.officeapps.live.com/op/view.aspx?src=\\\" + url\\n                            } else {\\n                                return \\\"x5://https://docs.google.com/gview?&embedded=true&url=\\\" + url\\n                            }\\n                        }, url)\\n                    } else {\\n                        return type_dict[item.type]\\n                    }\\n                }, item, now.url, path)\\n                var longClick = [{\\n                    title: \\\"下载\\\",\\n                    js: $.toString((item, u, path) => {\\n                        return \\\"download://\\\" + encodeURI(u + \\\"d\\\" + path + \\\"/\\\" + item.name + \\\"?sign=\\\" + item.sign)\\n                    }, item, now.url, path)\\n                }, {\\n                    title: \\\"用其他软件打开\\\",\\n                    js: $.toString((item, u, path) => {\\n                        downloadFile(encodeURI(u + \\\"d\\\" + path + \\\"/\\\" + item.name + \\\"?sign=\\\" + item.sign), \\\"hiker://files/cache/\\\" + item.name)\\n                        return \\\"openFile://\\\" + \\\"hiker://files/cache/\\\" + item.name\\n                    }, item, now.url, path)\\n                }]\\n                if (now.user && now.password) {\\n                    longClick.push({\\n                        title: \\\"删除\\\",\\n                        js: $.toString((item, headers, path, now) => {\\n                            return $(\\\"确认删除？\\\").confirm((item, headers, path, now) => {\\n                                var res = JSON.parse(post(now.url + \\\"api/fs/remove\\\", {\\n                                    headers: headers,\\n                                    body: JSON.stringify({\\n                                        dir: path,\\n                                        names: [item.name]\\n                                    })\\n                                })).code\\n                                if (res == 200) {\\n                                    refreshPage()\\n                                    return \\\"toast://删除成功\\\"\\n                                } else {\\n                                    return \\\"toast://删除失败\\\"\\n                                }\\n                            }, item, headers, path, now)\\n                        }, item, headers, path, now)\\n                    }, {\\n                        title: \\\"重命名\\\",\\n                        js: $.toString((item, headers, path, now) => {\\n                            return $(item.name).input((item, headers, path, now) => {\\n                                var res = JSON.parse(post(now.url + \\\"api/fs/rename\\\", {\\n                                    headers: headers,\\n                                    body: JSON.stringify({\\n                                        path: path + \\\"/\\\" + item.name,\\n                                        name: input\\n                                    })\\n                                })).code\\n                                if (res == 200) {\\n                                    refreshPage()\\n                                    return \\\"toast://重命名成功\\\"\\n                                } else {\\n                                    return \\\"toast://重命名失败\\\"\\n                                }\\n                            }, item, headers, path, now)\\n                        }, item, headers, path, now)\\n                    })\\n                }\\n                d.push({\\n                    title: item.name,\\n                    col_type: getItem(\\\"style\\\", \\\"avatar\\\"),\\n                    img: getIcon(item),\\n                    desc: desc,\\n                    url: url,\\n                    extra: {\\n                        longClick: longClick\\n                    }\\n                })\\n                if (getItem(\\\"style\\\", \\\"avatar\\\") == \\\"avatar\\\") {\\n                    d.push({\\n                        title: `‘‘’’<small><font color='#aaaaaa'>${desc}</font></small>`,\\n                        col_type: \\\"text_1\\\",\\n                        url: url\\n                    })\\n                }\\n            })\\n        } else if (list.message == \\\"password is incorrect or you have no permission\\\") {\\n            d.push({\\n                title: \\\"浏览密码错误\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"\\\", \\\"输入密码\\\").input((alist, selected, path) => {\\n                    alist[selected][\\\"browser-password\\\"][path] = input\\n                    storage0.setItem(\\\"list\\\", alist)\\n                    refreshPage()\\n                }, alist, selected, path)\\n            })\\n        } else if (list.code != 200) {\\n            toast(\\\"出错了\\\")\\n            log(list.message)\\n        }\\n    }\\n} catch (e) {\\n    setResult([{\\n        title: \\\"设置\\\",\\n        url: \\\"hiker://page/config\\\",\\n        col_type: \\\"text_center_1\\\"\\n    }])\\n    log(e.message)\\n    toast(\\\"程序出现错误，请重试\\\")\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"设置\",\"path\":\"config\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"显示网站详情:\\\" + getItem(\\\"detail\\\", \\\"开\\\"),\\n    url: $().lazyRule(() => {\\n        setItem(\\\"detail\\\", getItem(\\\"detail\\\", \\\"开\\\") == \\\"开\\\" ? \\\"关\\\" : \\\"开\\\")\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"切换样式:\\\" + getItem(\\\"style\\\", \\\"avatar\\\"),\\n    url: $([\\\"movie_3\\\", \\\"movie_1_left_pic\\\", \\\"movie_1_vertical_pic\\\", \\\"card_pic_3\\\", \\\"avatar\\\"]).select(() => {\\n        setItem(\\\"style\\\", input)\\n        refreshPage()\\n        return \\\"toast://已切换\\\"\\n    }),\\n    col_type: \\\"text_2\\\"\\n})\\nd.push({\\n    col_type: \\\"line_blank\\\"\\n})\\nd.push({\\n    title: \\\"➕ 新增Alist网站\\\",\\n    url: $(\\\"\\\", \\\"名称\\\").input(() => {\\n        if (input == \\\"\\\") {\\n            return \\\"toast://名称不能为空\\\"\\n        } else if (storage0.getItem(\\\"list\\\", []).map(function(i) {\\n                return i.name\\n            }).includes(input)) {\\n            return \\\"toast://已经有相同的网站了\\\"\\n        } else {\\n            return $(\\\"\\\", \\\"链接 示例:http://127.0.0.1/\\\").input((name) => {\\n                if (!input.includes(\\\"http\\\")) {\\n                    return \\\"toast://链接格式错误\\\"\\n                } else {\\n                    if (input[input.length - 1] != \\\"/\\\") {\\n                        input += \\\"/\\\"\\n                    }\\n                    var list = storage0.getItem(\\\"list\\\", [])\\n                    list.push({\\n                        name: name,\\n                        url: input,\\n                        \\\"browser-password\\\": {}\\n                    })\\n                    storage0.setItem(\\\"list\\\", list)\\n                    refreshPage()\\n                }\\n            }, input)\\n        }\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nvar list = storage0.getItem(\\\"list\\\", [])\\nlist.forEach((item, i) => {\\n    d.push({\\n        title: item.name,\\n        desc: item.url,\\n        url: $([\\\"删除\\\", \\\"修改名称\\\", \\\"修改链接\\\", \\\"修改账户密码\\\"]).select((a, i) => {\\n            var list = storage0.getItem(\\\"list\\\", [])\\n            switch (input) {\\n                case \\\"删除\\\":\\n                    return $(\\\"确认删除？\\\").confirm((list, i) => {\\n                        list.splice(i, 1)\\n                        storage0.setItem(\\\"list\\\", list)\\n                        clearItem(\\\"selected\\\")\\n                        refreshPage()\\n                    }, list, i)\\n                    break;\\n                case \\\"修改名称\\\":\\n                    return $(list[i].name).input((list, i) => {\\n                        if (input == \\\"\\\") {\\n                            return \\\"toast://名称不能为空\\\"\\n                        } else if (storage0.getItem(\\\"list\\\", []).map(function(i) {\\n                                return i.name\\n                            }).includes(input)) {\\n                            return \\\"toast://已经有相同的网站了\\\"\\n                        } else {\\n                            list[i].name = input\\n                            storage0.setItem(\\\"list\\\", list)\\n                            refreshPage()\\n                        }\\n                    }, list, i)\\n                    break\\n                case \\\"修改链接\\\":\\n                    return $(list[i].url).input((list, i) => {\\n                        if (!input.includes(\\\"http\\\")) {\\n                            return \\\"toast://链接格式错误\\\"\\n                        } else if (input[input.length - 1] != \\\"/\\\") {\\n                            return \\\"toast://链接格式错误\\\"\\n                        } else {\\n                            list[i].url = input\\n                            storage0.setItem(\\\"list\\\", list)\\n                            refreshPage()\\n                        }\\n                    }, list, i)\\n                    break\\n                case \\\"修改账户密码\\\":\\n                    return $(list[i][\\\"user\\\"] ? list[i][\\\"user\\\"] : \\\"\\\", \\\"账号\\\").input((list, i) => {\\n                        return $(list[i][\\\"password\\\"] ? list[i][\\\"password\\\"] : \\\"\\\", \\\"密码\\\").input((user, list, i) => {\\n                            list[i][\\\"user\\\"] = user\\n                            list[i][\\\"password\\\"] = input\\n                            storage0.setItem(\\\"list\\\", list)\\n                            refreshPage()\\n                        }, input, list, i)\\n                    }, list, i)\\n            }\\n        }, item, i),\\n        col_type: \\\"text_1\\\"\\n    })\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"代码\",\"path\":\"api\",\"rule\":\"$.exports = {\\n    color: function(text, color) {\\n        return `‘‘’’<strong><font color=\\\"${color}\\\">${text}</front></strong>`\\n    },\\n    getIcon: function(content) {\\n        if (content.is_dir) {\\n            img = \\\"https://lanmeiguojiang.com/tubiao/more/274.png\\\"\\n        } else {\\n            let fileName = content.name.toLowerCase()\\n            let hzm = $.require(\\\"api\\\").getHzm(fileName)\\n            if (content.thumb && content.type != 0) {\\n                img = content.thumb\\n            } else if ($.movie.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/30.png\\\"\\n            } else if ($.audio.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/40.png\\\"\\n            } else if ($.text.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/78.png\\\"\\n            } else if ($.img.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/38.png\\\"\\n            } else if ($.yasuo.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/201.png\\\"\\n            } else if ($.office.includes(hzm)) {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/185.png\\\"\\n            } else {\\n                img = \\\"https://lanmeiguojiang.com/tubiao/more/239.png\\\"\\n            }\\n        }\\n        return img\\n    },\\n    formatDate: function(time) {\\n        return time.split(\\\"T\\\")[0] + \\\" \\\" + time.split(\\\"T\\\")[1].split(\\\".\\\")[0].split(\\\"Z\\\")[0].split(\\\"+\\\")[0]\\n    },\\n    getFileSize: function(size) {\\n        if (size <= 0) {\\n            return \\\"\\\";\\n        }\\n        let unitForm = [\\\"Byte\\\", \\\"KB\\\", \\\"MB\\\", \\\"GB\\\", \\\"TB\\\"];\\n        for (let i = 0, len = unitForm.length; i < len; i++) {\\n            if (size > 1024) {\\n                size /= 1024;\\n                continue;\\n            } else {\\n                return size.toFixed(2).replace(/(\\\\.00)$/, \\\"\\\") + unitForm[i];\\n            }\\n        }\\n        return \\\"ERROR:数值过大\\\";\\n    },\\n    getHzm: function(fileName) {\\n        return fileName.substr(fileName.lastIndexOf(\\\".\\\") + 1)\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\nvar d = [];\\nvar {\\n    getIcon,\\n    getFileSize\\n} = $.require(\\\"api\\\")\\nvar url = getParam(\\\"u\\\")\\nvar now = MY_PARAMS.now\\nvar headers = MY_PARAMS.headers\\nif (MY_PAGE == 1) {\\n    d.unshift({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            putMyVar(\\\"kw\\\", input)\\n            refreshPage()\\n        }),\\n        col_type: \\\"input\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"kw\\\", \\\"\\\")\\n        }\\n    })\\n}\\nvar path = getParam(\\\"path\\\")\\nif (getMyVar(\\\"kw\\\", \\\"\\\") != \\\"\\\") {\\n    var list = JSON.parse(post(url + \\\"api/fs/search\\\", {\\n        headers: headers,\\n        body: JSON.stringify({\\n            \\\"parent\\\": getParam(\\\"path\\\"),\\n            \\\"keywords\\\": getMyVar(\\\"kw\\\", \\\"\\\"),\\n            \\\"page\\\": MY_PAGE,\\n            \\\"per_page\\\": 100\\n        })\\n    }))\\n    if (list.code == 200 && list.data.content) {\\n        list.data.content.forEach(item => {\\n            var desc = getFileSize(item.size)\\n            var url = $().lazyRule((item, u, path, headers) => {\\n                var sign = JSON.parse(post(u + \\\"api/fs/get\\\", {\\n                    headers: headers,\\n                    body: JSON.stringify({\\n                        \\\"path\\\": item.parent + \\\"/\\\" + item.name\\n                    })\\n                })).data.sign\\n                var url = encodeURI(u + \\\"d\\\" + item.parent + \\\"/\\\" + item.name + \\\"?sign=\\\" + sign)\\n                const type_dict = {\\n                    0: \\\"download://\\\" + url,\\n                    2: url + \\\"#isVideo=true#\\\",\\n                    3: url + \\\"#isMusic=true#\\\",\\n                    4: \\\"download://\\\" + url,\\n                    5: url + \\\"#.jpg\\\"\\n                }\\n                if (item.is_dir) {\\n                    var paths = [item.parent + \\\"/\\\" + item.name]\\n                    storage0.putMyVar(\\\"paths\\\", paths)\\n                    back()\\n                    return \\\"hiker://empty\\\"\\n                } else if ($.require(\\\"api\\\").getHzm(item.name) == \\\"pdf\\\") {\\n                    return \\\"x5://https://alist-org.github.io/pdf.js/web/viewer.html?file=\\\" + url\\n                } else if ($.office.includes($.require(\\\"api\\\").getHzm(item.name))) {\\n                    return $([\\\"微软\\\", \\\"谷歌\\\"]).select((url) => {\\n                        if (input == \\\"微软\\\") {\\n                            return \\\"x5://https://view.officeapps.live.com/op/view.aspx?src=\\\" + url\\n                        } else {\\n                            return \\\"x5://https://docs.google.com/gview?&embedded=true&url=\\\" + url\\n                        }\\n                    }, url)\\n                } else {\\n                    return type_dict[item.type]\\n                }\\n            }, item, now.url, path, headers)\\n            var longClick = [{\\n                title: \\\"下载\\\",\\n                js: $.toString((item, u, path) => {\\n                    return \\\"download://\\\" + encodeURI(u + \\\"d\\\" + path + \\\"/\\\" + item.name + \\\"?sign=\\\" + item.sign)\\n                }, item, now.url, path)\\n            }, {\\n                title: \\\"用其他软件打开\\\",\\n                js: $.toString((item, u, path, headers) => {\\n                    var sign = JSON.parse(post(u + \\\"api/fs/get\\\", {\\n                        headers: headers,\\n                        body: JSON.stringify({\\n                            \\\"path\\\": item.parent + \\\"/\\\" + item.name\\n                        })\\n                    })).data.sign\\n                    downloadFile(encodeURI(u + \\\"d\\\" + path + \\\"/\\\" + item.name + \\\"?sign=\\\" + sign), \\\"hiker://files/cache/\\\" + item.name)\\n                    return \\\"openFile://\\\" + \\\"hiker://files/cache/\\\" + item.name\\n                }, item, now.url, path, headers)\\n            }]\\n            if (now.user && now.password) {\\n                longClick.push({\\n                    title: \\\"删除\\\",\\n                    js: $.toString((item, headers, path, now) => {\\n                        return $(\\\"确认删除？\\\").confirm((item, headers, path, now) => {\\n                            var res = JSON.parse(post(now.url + \\\"api/fs/remove\\\", {\\n                                headers: headers,\\n                                body: JSON.stringify({\\n                                    dir: path,\\n                                    names: [item.name]\\n                                })\\n                            })).code\\n                            if (res == 200) {\\n                                refreshPage()\\n                                return \\\"toast://删除成功\\\"\\n                            } else {\\n                                return \\\"toast://删除失败\\\"\\n                            }\\n                        }, item, headers, path, now)\\n                    }, item, headers, path, now)\\n                }, {\\n                    title: \\\"重命名\\\",\\n                    js: $.toString((item, headers, path, now) => {\\n                        return $(item.name).input((item, headers, path, now) => {\\n                            var res = JSON.parse(post(now.url + \\\"api/fs/rename\\\", {\\n                                headers: headers,\\n                                body: JSON.stringify({\\n                                    path: path + \\\"/\\\" + item.name,\\n                                    name: input\\n                                })\\n                            })).code\\n                            if (res == 200) {\\n                                refreshPage()\\n                                return \\\"toast://操作成功\\\"\\n                            } else {\\n                                return \\\"toast://操作失败\\\"\\n                            }\\n                        }, item, headers, path, now)\\n                    }, item, headers, path, now)\\n                })\\n            }\\n            d.push({\\n                title: item.name,\\n                col_type: getItem(\\\"style\\\", \\\"avatar\\\"),\\n                img: getIcon(item),\\n                desc: desc,\\n                url: url,\\n                extra: {\\n                    longClick: longClick\\n                }\\n            })\\n            if (getItem(\\\"style\\\", \\\"avatar\\\") == \\\"avatar\\\") {\\n                d.push({\\n                    title: `‘‘’’<small><font color='#aaaaaa'>${desc}</font></small>`,\\n                    col_type: \\\"text_1\\\",\\n                    url: url\\n                })\\n            }\\n        })\\n    } else if (list.code != 200) {\\n        log(\\\"出错了\\\")\\n        log(list.message)\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://cdn.jsdelivr.net/gh/alist-org/logo@main/logo.svg"},{"firstHeader":"sort","last_chapter_rule":"","title":"道长仓库Pro","author":"@LoyDgIk","version":155,"type":"tool","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    const {\n        getApi,\n        color,\n        small,\n        getFile,\n        htmlTag,\n        api,\n        md\n    } = $.require(\"hiker://page/utiliy\");\n\nconst lsg=$.require(\"hiker://page/localStorage?rule=道长仓库Pro\");\nlet classA = getVar(\"Warehouse.class\", \"0\");\nlet listUrl = getApi(\"usersUrl\") + classA,\n    myUrl = getApi(\"devSelf\");\n// myUrl = getApi(\"rulesAllUrl\");\nputVar(\"Warehouse.filter\", \"\");\nvar noWait=true;//无需重试\nvar timeout=500;\nvar tmp_headers={\n    timeout:timeout\n};\ntry{\n    var userList = JSON.parse(request(listUrl,tmp_headers)).result,\n        nowCon = 0,\n        ruleCount = JSON.parse(request(getApi(\"ruleCountUrl\"),tmp_headers)).result;\n}catch(e){\n    noWait=false;\n    setResult([{\n        title:'仓库同时访问量过大或网络差，繁忙中...\\n请耐心等待稍后再试',\n        desc:'点击尝试重新访问',\n        col_type:'text_1',\n        url:$('#noLoading#').lazyRule(()=>{\n            refreshPage(false);\n            return 'toast://已刷新'\n        })\n    }]);\n}\nif(noWait){\n    let data = [];\n    let classTab = [\n        [\"上次活跃\", \"0\"],\n        [\"规则数\", \"1\"],\n        [\"注册时间\", \"-1\"]\n    ]\n    for (let item of classTab) {\n        data.push({\n            title: item[1] === classA ? \"““\" + item[0] + \"””\" : item[0],\n            url: $(\"#noLoading#\").lazyRule((key) => {\n                putVar(\"Warehouse.class\", key);\n                refreshPage(false);\n                return \"hiker://empty\";\n            }, item[1]),\n            col_type: \"scroll_button\"\n        });\n    }\n    data.push({\n        title: \"全部规则\",\n        url: \"hiker://page/AllPublicRule?url=hiker://empty#fypage#noHistory##noRecordHistory#\",\n        col_type: \"scroll_button\"\n    });\n    data.push({\n        title: \"刷新依赖\",\n        url: $('#noLoading#').lazyRule((jsonUrl)=>{\n            jsonUrl = jsonUrl+'2505';\n            // log(jsonUrl);\n            let text = request(jsonUrl);\n            if(!/version/.test(text)){\n                return 'toast://服务器正忙,请稍候再试...'\n            }\n            deleteCache(jsonUrl);\n            try {\n                require(jsonUrl);\n                confirm({title:'刷新成功提示',content:\"toast://已刷新,当前版本信息:\\n\"+JSON.stringify(version)})\n                return 'hiker://empty'\n            }catch (e) {\n                return 'toast://糟糕，本地缓存插件被清除了，但是服务器通讯失败!'\n            }\n        },getApi(\"importUrl\")),\n        col_type: \"scroll_button\"\n    });\n    data.push({\n        title:\"通免:\"+color(lsg.getItem(\"通免\",\"X5\"),\"#ff7000\"),\n        col_type:\"scroll_button\",\n        url:$('#noLoading#').lazyRule(()=>{\n            const lsg=$.require(\"hiker://page/localStorage?rule=道长仓库Pro\");\n            if(lsg.getItem(\"通免\",\"X5\")==\"X5\"){\n                lsg.setItem(\"通免\",\"WEB\");\n            }else{\n                lsg.setItem(\"通免\",\"X5\");\n            }\n            refreshPage(false);\n            return \"toast://已设置仓库通免模式为:\"+lsg.getItem(\"通免\");\n        })\n    });\n    data.push({\n        title:\"排序:\"+color(getItem(\"排序\",\"时间\"),\"#ff7000\"),\n        col_type:\"scroll_button\",\n        url:$('#noLoading#').lazyRule((color)=>{\n            let next=getItem(\"排序\",\"时间\")==='时间'?'归并':'时间';\n            setItem(\"排序\",next);\n            //refreshPage(false);\n            updateItem('sort',{title:\"排序:\"+color(next,\"#ff7000\")})\n            return \"toast://已设置仓库开发者规则排序模式为:\"+next;\n        },color),\n        extra:{\n            id:'sort'\n        }\n    });\n    data.push({\n        title:color(\"仓库公告\",\"#ff7000\"),\n        col_type:\"scroll_button\",\n        url:$('hiker://empty#noHistory##noRecordHistory#').rule((md)=>{\n            require(md);\n            let d = [];\n            let 仓库公告=\"暂无公告\";\n            try{\n                仓库公告=fetch('https://gitcode.net/qq_32394351/dr/-/raw/master/js/仓库公告.md');\n            }catch(e){}\n            if(仓库公告) {\n                d.push({\n                    title: marked.parse(仓库公告),\n                    col_type: 'rich_text',\n                    url: 'hiker://empty'\n                });\n            }\n            setResult(d);\n        },md)\n    });\n\n    data.push({\n        title:color(\"升级仓库\",\"#15ab21\"),\n        col_type:\"scroll_button\",\n        url:$('#noLoading#').lazyRule(()=>{\n            const {getApi} = $.require(\"hiker://page/utiliy\");\n            let ruleHead = '海阔视界首页频道规则【道长仓库Pro】￥home_rule_url￥';\n            let url = getApi('importUrl')+\"1094\";\n            let importUrl = 'rule://'+base64Encode(ruleHead+url);\n            return importUrl\n        })\n    });\n\n    data.push({\n        title:color(\"升级$扩展\",\"#15ab21\"),\n        col_type:\"scroll_button\",\n        url:$('#noLoading#').lazyRule(()=>{\n            const {getApi} = $.require(\"hiker://page/utiliy\");\n            let ruleHead = '海阔视界，网页插件￥js_url￥$hiker@';\n            let url = getApi('importUrl')+\"5111\";\n            let importUrl = 'rule://'+base64Encode(ruleHead+url);\n            return importUrl\n        })\n    });\n\n    addListener('onClose', $.toString(() => {\n        clearVar(\"Warehouse.class\");\n    }));\n    let {\n        username,\n        password,\n        user\n    } = getFile();\n\n    let is_login = false;\n    let is_manager = false;\n    if (username !== void 0 && password !== void 0) {\n        myUrl += '?qq=' + username + '&password=' + password;\n        let code_str = request(myUrl,tmp_headers);\n        let code = {};\n        try{\n            code=JSON.parse(code_str);\n        }catch(e){}\n        if (code.status === 0&& code.result.active) {\n            is_login = true;\n            if(code.result.is_manager){\n                is_manager = true;\n                putVar('house.is_manager','真');\n                putVar('house.username',username);\n                putVar('house.password',password);\n            }else{\n                putVar('house.is_manager','');\n                clearVar('house.username');\n                clearVar('house.password');\n            }\n        }\n    }\n    if (is_login) {\n        try{\n            nowCon = JSON.parse(request(getApi(\"nowConUrl\"),tmp_headers)).result;\n        }catch(e){\n            nowCon='未知';\n        }\n        let devData = userList.find(item => item.qq === username);\n        data.push({\n            title: '<strong><span style=\"color: #ff7000\">' + devData.name + '</span></strong>&nbsp;&nbsp;&nbsp;&nbsp;<small><u>规则管理 ></u></small>',\n            pic_url: devData.avatar,\n            col_type: \"avatar\",\n            url: \"hiker://page/devManage#noHistory##noRecordHistory#\",\n            extra: {\n                //username: username,\n                //password: password,\n                dev: devData\n            }\n        });\n        data.push({\n            col_type: 'text_1',\n            title: small(\"现有 \" + color(userList.length, \"#ff7000\") + \" 名开发者，\" + color(ruleCount[0], \"#ff7000\") + \" 条公开规则，\" + color(ruleCount[1], \"#ff7000\") + \" 条集芳阁规则。在线:\"+color(nowCon, \"#ff7000\")),\n            url: \"toast://喵喵喵?\",\n        });\n    } else {\n        data.push({\n            title: small(color(\"开发者登录\", \"#00BFFF\")),\n            col_type: 'text_center_1',\n            desc: small(\"现有\" + color(userList.length, \"#ff7000\") + \"名开发者，\" + color(ruleCount[0], \"#ff7000\") + \"条公开规则，\" + color(0, \"#ff7000\") + \"条集芳阁规则。\"),\n            url: \"hiker://page/devLogin\"\n        });\n    }\n    if (Array.isArray(user) && user.length === 2) {\n        let userlogin = request(api.dis_login, {\n            headers: {\n                'content-type': 'application/json'\n            },\n            body: JSON.stringify({\n                \"params\": {\n                    \"qq\": user[0],\n                    \"auth_code\": user[1]\n                }\n            }),\n            method: 'POST',\n            timeout:timeout\n        });\n        userlogin = JSON.parse(userlogin).result;\n        if (userlogin.status === 0) {\n            userlogin = userlogin.result\n            data.push({\n                title: userlogin.name + \"&nbsp;&nbsp;\" + userlogin.qq + \"&nbsp;&nbsp;&nbsp;&nbsp;<small><u>更换账号 ></u></small>\",\n                col_type: 'avatar',\n                pic_url: userlogin.avatar_url,\n                url: \"hiker://page/Userregistration\"\n            });\n            data.splice(3,0,{\n                title: userlogin.has_reply?\"🆕回复\":\"🔔回复\",\n                url: \"hiker://page/MyReply?url=hiker://empty#fypage#noHistory##noRecordHistory#\",\n                col_type: \"scroll_button\",\n                extra:{\n                    auth_code:user[1],\n                    qq:user[0]\n                }\n            });\n        } else {\n            data.push({\n                title: userlogin.detail,\n                col_type: 'text_center_1',\n                desc: \"““””<small><u>重新获取验证码 ></u></small>\",\n                url: \"hiker://page/Userregistration\"\n            });\n        }\n    } else {\n        data.push({\n            title: \"评论登录/注册\",\n            col_type: 'text_center_1',\n            desc: \"\",\n            url: \"hiker://page/Userregistration\"\n        });\n    }\n    for (var item of userList) {\n        data.push({\n            title: item.name + \"(\" + item.rule_num + \")\",\n            desc: item.id + ':' + item.nick_name,\n            pic_url: item.avatar,\n            url: \"hiker://page/rules#noHistory#\",\n            extra: {\n                avatarUrl: item.avatar,\n                qq: item.qq,\n                id:item.id,\n                can_upload:item.can_upload\n            }\n        });\n    }\n\n    data.push({\n        col_type: 'long_text'\n    });\n    setResult(data);\n    let img = [\n        [\n            \"hiker://files/icon/赞.svg\", \"https://bafybeiaeetwbc3thoy22y5zd7al6rndeqbrbwhszqb6oitnf7a5zvsz5pe.ipfs.cf-ipfs.com/\"\n        ],\n        [\n            \"hiker://files/icon/踩.svg\", \"https://bafybeiehxynphaafe4mukacs7we4d6lrb35kppdiffjv4vwnsq22nfqnl4.ipfs.cf-ipfs.com/\"\n        ],\n        [\n            \"hiker://files/icon/评论.svg\", \"https://bafybeifhxi5rdnxq5xly7r4qdbwico2343smelxdqoytalguctgc2ojsdy.ipfs.cf-ipfs.com/\"\n        ]\n    ]\n    for (let item of img) {\n        if (!fileExist(item[0])) {\n            writeFile(item[0], request(item[1]));\n        }\n    }\n}","searchFind":"js:\nvar d = [];\nconst {\n    api,\n    getApi,\n    localRuleVer    \n} = $.require(\"hiker://page/utiliy\");\nvar html = request(getApi(\"search\") + \"?key=\" + MY_URL.replace(\"hiker://empty#\", \"\")); // 获取源码\nvar rule_list = JSON.parse(html).result;\nlet filter = getVar(\"Warehouse.filter\", \"\");\nif (filter !== \"\") {\n    rule_list = rule_list.filter(item => item.author === filter);\n}\nif (rule_list.length === 0) {\n    d.push({\n        title: '共搜索到' + rule_list.length + \"条记录\",\n        desc: '详情请找道长,qq 434857005',\n        url: \"hiker://empty\",\n        col_type: 'text_center_1'\n    });\n}\nlet homeList = JSON.parse(request(api.home));\n\nfor (let item of rule_list) {\n    //let lver=localRuleVer(homeList, item);\n    let label = \"\",\n        lver = -2;\n    if (item.data_type === \"home_rule_url\") {\n        lver = localRuleVer(homeList, item);\n        if (lver === -1) {\n            label = \"🆕\";\n        } else if (lver < item.ver) {\n            label = \"🆙\";\n        }\n    }\n    d.push({\n        title: label+item.name,\n        desc: item.type,\n        content: item.author/*+\"\\n本地版本:\"+lver+\"\\t\\t云端版本:\"+item.ver*/+ '\\n更新于:' + item.last_update,\n        url: \"hiker://page/ruleDetail#noHistory##noRecordHistory#\",\n        extra: {\n            lver: lver,\n            id: item.id\n        },\n        pic_url: item.pic_url\n    });\n\n}\n\nsetResult(d);","search_url":"hiker://empty#**","titleColor":"#ff228be6","group":"⑥③🛠️工具","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"mobile","preRule":"$.require('hiker://page/libs?rule=道长仓库Pro');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"utiliy\",\"rule\":\"js:\\nlet host = \\\"http://hiker.nokia.press\\\";\\n//let host = \\\"http://192.168.3.94:8079\\\";\\nlet home = base64Decode(\\\"aGlrZXI6Ly9ob21l\\\");\\nvar api = {\\n    host: host+\\\"/hikerule\\\",\\n    usersUrl: \\\"/dev/users?order=\\\", //用户列表\\n    ruleCountUrl: \\\"/dev/rulecount\\\", //获取规则数量\\n    rulesUrl: \\\"/dev/get\\\", //用户对应的规则列表仅仅获取公开\\n    rulesAllUrl: \\\"/dev/getall\\\", //开发者对应的规则列表可获取私有\\n    devSelf:'/dev/getself',//获取开发者信息\\n    manCanUpload:'/set_can_upload/',//超管设置开发者是否可上传\\n    manRuleSafe:'/set_rule_safe/',//超管设置规则安全性\\n    manRuleGood:'/set_rule_good/',//超管设置规则优质性\\n    importUrl: \\\"/rulelist.json?id=\\\", //规则详情可导入\\n    infoSetUrl: \\\"/dev/set_info\\\",\\n    nowConUrl: \\\"/sql_info/get_now_con\\\",\\n    infoGetUrl: \\\"/dev/get_info?name=\\\",\\n    settingsGetUrl: \\\"/dev/get_settings?name=\\\",\\n    gupload: \\\"/dev/gupload\\\",\\n    gtimeover: \\\"/dev/gtimeover\\\",\\n    getbyid: \\\"/dev/getbyid\\\",\\n    ruleListJson: \\\"/rulelist.json\\\",\\n    auth: \\\"/dev/get_auth\\\",\\n    timeover: \\\"/dev/timeover\\\",\\n    share: \\\"/dev/share\\\",\\n    genAuth: \\\"/dev/gen_auth\\\",\\n    deleteUrl: \\\"/dev/delete\\\",\\n    jsonList: \\\"/dev/json_list\\\",\\n    search: \\\"/dev/search\\\",\\n    new_dev: \\\"/dev_regist/new\\\",\\n    new_getId: \\\"/dev_regist/get_id\\\",\\n    new_confirm: \\\"/dev_regist/confirm\\\",\\n    modify_pwd: \\\"/modify/password\\\",\\n    modify_name: \\\"/modify/name\\\",\\n    modify_ava: \\\"/modify/avatar\\\",\\n    user: \\\"/dev/user/\\\",\\n    get_rule_note: \\\"/modify/get_rule_note/\\\",\\n    set_rule_pic: \\\"/modify/rule_pic/\\\",\\n    set_rule_note: \\\"/modify/rule_note/\\\"\\n}\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.mapColType = function(target, type, n) {\\n    for (let i = 0; i < n; i++) {\\n        target.push({\\n            col_type: type\\n        });\\n    }\\n}\\nvar getApi = function(k) {\\n    return api.host + api[k];\\n};\\n$.exports.getApi=getApi;\\n$.exports.md=getApi('importUrl')+\\\"3187\\\";\\n$.exports.localRuleVer = function(localRuleList, rule) {\\n    let localRule;\\n    for (let i = 0; i < localRuleList.length; i++) {\\n        let item = localRuleList[i];\\n        let au = item.author || \\\"\\\";\\n        let sameAu=au.length > 0 && rule.author.includes(au);\\n        sameAu=true;//不判断作者默认为true\\n        if (item.title === rule.name && sameAu) {\\n            localRule = item;\\n            break;\\n        }\\n    }\\n    if (localRule === void 0) {\\n        return -1;\\n    } else {\\n        return localRule.version;\\n    }\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\n\\n$.exports.sleep = function(timeout){\\n    java.lang.Thread.sleep(timeout);\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.getFile = function() {\\n    var File = request(\\\"hiker://files/WarehouseUSER.json\\\") || \\\"{}\\\";\\n    try {\\n        return JSON.parse(File);\\n    } catch (e) {\\n        writeFile(\\\"hiker://files/WarehouseUSER.json\\\", \\\"{}\\\");\\n        return {};\\n    }\\n}\\n$.exports.getUserDate =function(){\\n    var File = request(\\\"hiker://files/WarehouseUSERA.json\\\") || \\\"[]\\\";\\n    try {\\n        return JSON.parse(File);\\n    } catch (e) {\\n        writeFile(\\\"hiker://files/WarehouseUSERA.json\\\", \\\"[]\\\");\\n        return [];\\n    }\\n}\\n$.exports.existFile = function(spath, ipath, headers) {\\n    let scode = request(spath);\\n    if (!scode) {\\n        writeFile(spath, request(ipath, headers));\\n    }\\n}\\n\\nlet newApi = {\\n    \\\"dis_new\\\": \\\"/hikerule/new_rule_discuss/\\\",\\n    \\\"dis_verify\\\": \\\"/hikerule/rule_discuss/get_yzm\\\",\\n    \\\"dis_get\\\": \\\"/hikerule/rule_discuss/\\\",\\n    \\\"dis_set\\\": \\\"/hikerule/modify/can_discuss/\\\",\\n    \\\"dis_new_user\\\": \\\"/hikerule/rule_discuss/new_user\\\",\\n    \\\"dis_login\\\":\\\"/hikerule/rule_discuss/user_login\\\",\\n    \\\"dis_dev_discuss\\\":\\\"/hikerule/modify/dev_can_discuss\\\",\\n    \\\"dis_dev_control\\\":\\\"/hikerule/rule_discuss/remove/\\\",\\n    \\\"all_rule\\\":\\\"/hikerule/get_rules\\\",\\n    \\\"dis_get_reply\\\":\\\"/hikerule/get_reply_rule_discuss\\\",\\n    \\\"dis_reply\\\":\\\"/hikerule/dev_new_rule_discuss/\\\",\\n}\\n\\nfunction setApi(object) {\\n    let target = {};\\n    for (let key in object) {\\n        target[key]=host+object[key]\\n    }\\n    return target;\\n}\\n\\n$.exports.api = setApi(newApi);\\n$.exports.api.host=host;\\n$.exports.api.home=home;\"},{\"col_type\":\"movie_3\",\"name\":\"开发者登录\",\"path\":\"devLogin\",\"rule\":\"js:\\nsetPageTitle(\\\"开发者登录\\\");\\nconst {\\n    getApi,\\n    htmlTag,\\n    mapColType,\\n    small,\\ngetFile\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nvar data = [];\\naddListener('onClose', $.toString(()=>{\\n    clearVar(\\\"WarehouseUsername\\\");\\n    clearVar(\\\"WarehousePassword\\\");\\n}))\\ndata.push({\\n    title: '账号',\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('WarehouseUsername',''),\\n        type:\\\"number\\\",\\n        onChange: 'putVar(\\\"WarehouseUsername\\\",input)'\\n    }\\n}, {\\n    title: '密码',\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('WarehousePassword', ''),\\n        type: \\\"password\\\",\\n        onChange: 'putVar(\\\"WarehousePassword\\\",input)'\\n    }\\n});\\n\\ndata.push({\\n    title:\\\"&nbsp;&nbsp;<a href='hiker://page/Register'>注册</a>\\\",\\n    col_type:\\\"rich_text\\\"\\n});\\nmapColType(data, \\\"line_blank\\\", 1);\\nlet user = getFile();\\ndata.push({\\n    title: htmlTag(\\\"b\\\", \\\"登录\\\"),\\n    url: $().lazyRule((url, f)=> {\\n        let username = getVar('WarehouseUsername', ''),\\n            password = getVar('WarehousePassword', '');\\n        if(username === \\\"\\\" && password ===\\\"\\\"){\\n            return \\\"toast://账号和密码不能为空\\\"\\n        }\\n        let myUrl = url + '?qq=' + username + '&password=' + password;\\n        let code_str = request(myUrl);\\n        let code = JSON.parse(code_str);\\n        if (code.status == 0) {\\n            f.username=username;\\n            f.password=password\\n            writeFile('hiker://files/WarehouseUSER.json', JSON.stringify(f));\\n            back();\\n            return \\\"toast://登录成功\\\";\\n        }else{\\n            return \\\"toast://账号或密码错误\\\";\\n        }\\n    }, getApi(\\\"rulesAllUrl\\\"),user),\\n    col_type: 'text_center_1'\\n});\\nsetResult(data);\"},{\"col_type\":\"icon_2_round\",\"name\":\"开发者管理\",\"path\":\"devManage\",\"rule\":\"js:\\nsetPageTitle(\\\"规则管理\\\");\\naddListener('onClose', 'clearVar(\\\"Warehouse.back\\\",\\\"\\\");');\\nif (getVar(\\\"Warehouse.back\\\") === \\\"1\\\") {\\n    back();\\n}\\nconst {\\n    getApi,\\n    color,\\n    small,\\n    getFile,\\n    existFile,\\n    mapColType,\\n    api\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    dev\\n} = MY_PARAMS;\\nlet {\\n    username,\\n    password,\\n} = getFile();\\n//existFile(\\\"hiker://files/rules/dzHouse/html/开发者分享.html\\\", \\\"https://erp.scwinbao.com/hikerule/rulelist.json?id=539\\\");\\nlet ruleList = JSON.parse(request(getApi(\\\"rulesAllUrl\\\") + '?qq=' + username + '&password=' + password)).result;\\nlet MOBILE_UA = 'Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Mobile Safari/537.36';\\nlet infoSetUrl = getApi(\\\"infoSetUrl\\\");\\nlet infoGetUrl = getApi(\\\"infoGetUrl\\\") + username;\\nlet settingsGetUrl = getApi(\\\"settingsGetUrl\\\") + username;\\nputMyVar(\\\"dev_set_info\\\", [username, password, infoSetUrl, MOBILE_UA, infoGetUrl].join(\\\"$$\\\"));\\nlet data = [];\\ndata.push({\\n    title: '““””<big>仓库设置</big>&nbsp;&nbsp;&nbsp;<small><u>（ 个人资料 >）</u></small>',\\n    desc: '““””您共有 <span style=\\\"color: #ff7000\\\">' + ruleList.length + '</span>' + \\\" 条规则。\\\\n点击规则可进行分享、删除、导入操作及查看详情\\\",\\n    url: \\\"hiker://page/PersonalData#noHistory##noRecordHistory#\\\",\\n    extra:{id:dev.id},\\n    col_type: 'text_1'\\n});\\nmapColType(data, \\\"line\\\", 2);\\ndata.push({\\n    title: small(color(\\\"更改公告✍\\\", \\\"#34b1ff\\\")),\\n    // url: \\\"x5://file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/dev_info_edit.html\\\",\\n    url: \\\"hiker://page/devInfoEdit\\\",\\n    col_type: 'text_3'\\n});\\ndata.push({\\n    title: small(color(\\\"更多分享📲\\\", \\\"#34b1ff\\\")),\\n    //url: \\\"x5://file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/开发者分享.html\\\",\\n    url: \\\"hiker://page/moreShare\\\",\\n    col_type: 'text_3'\\n});\\ndata.push({\\n    title: small(color(\\\"升级依赖📥\\\", \\\"#34b1ff\\\")),\\n    url: $(\\\"升级会重新从仓库拉取相关的静态页面到本地\\\\n确认升级吗?\\\").confirm((host) => {\\n        writeFile(\\\"hiker://files/rules/dzHouse/html/开发者分享.html\\\", request(host+'/hikerule/rulelist.json?id=539'));\\n        writeFile(\\\"hiker://files/rules/dzHouse/html/dev_info_edit.html\\\", request(host+'/hikerule/rulelist.json?id=402'));\\n        writeFile(\\\"hiker://files/rules/dzHouse/html/dev_info_get.html\\\", request(host+'/hikerule/rulelist.json?id=404'));\\n        refreshPage(false);\\n        return \\\"toast://已重置开发者分享,简介查看,简介编辑等静态文件\\\";\\n    },api.host),\\n    col_type: 'text_3'\\n});\\nlet devSetBack;\\ntry {\\n    devSetBack = JSON.parse(request(settingsGetUrl));\\n} catch (e) {\\n    devSetBack = {};\\n}\\n\\nfunction setSettingItem(basic) {\\n    let temp = {\\n        title: basic.title,\\n        col_type: basic.col_type,\\n        url: $(basic.confirm).confirm((url, msg) => {\\n            let back = request(url);\\n            let ret = JSON.parse(back);\\n            if (ret.status == 0) {\\n                refreshPage(true);\\n                return \\\"toast://\\\" + msg[0];\\n            } else {\\n                refreshPage(false);\\n                return \\\"toast://\\\" + msg[1] + \\\"\\\\n\\\" + ret.detail;\\n            }\\n        }, basic.url, basic.msg)\\n    };\\n    return temp;\\n}\\nif (devSetBack.status == 0) {\\n    let devSettings = devSetBack.result;\\n    let share = {\\n        col_type: \\\"text_3\\\"\\n    };\\n    if (devSettings.share_public) {\\n        share.title = small(color(\\\"公开上传\\\", \\\"green\\\") + color(\\\"(私藏)\\\", \\\"#00bfff\\\"));\\n        share.url = getApi(\\\"gupload\\\") + \\\"?qq=\\\" + username + \\\"&password=\\\" + password + \\\"&flag=1\\\";\\n        share.confirm = \\\"是否确认私藏以后提交的规则?\\\";\\n        share.msg = [\\\"已私藏\\\", \\\"私藏失败\\\"];\\n    } else {\\n        share.title = small(color(\\\"私密上传\\\", \\\"red\\\") + color(\\\"(公开)\\\", \\\"#adff2f\\\"));\\n        share.url = getApi(\\\"gupload\\\") + \\\"?qq=\\\" + username + \\\"&password=\\\" + password;\\n        share.confirm = \\\"是否确认公开以后提交的规则?\\\";\\n        share.msg = [\\\"已公开\\\", \\\"公开失败\\\"];\\n    }\\n    data.push(setSettingItem(share));\\n    let timeOver = {\\n        col_type: \\\"text_3\\\"\\n    };\\n    if (devSettings.time_over) {\\n        timeOver.title = small(color(\\\"短时秘钥\\\", \\\"green\\\") + color(\\\"(永久)\\\", \\\"#00bfff\\\"));\\n        timeOver.url = getApi(\\\"gtimeover\\\") + \\\"?qq=\\\" + username + \\\"&password=\\\" + password + \\\"&flag=1\\\";\\n        timeOver.confirm = \\\"是否确认以后的私藏规则分享不过期?\\\";\\n        timeOver.msg = [\\\"已设为永久\\\", \\\"设为永久失败\\\"];\\n    } else {\\n        timeOver.title = small(color(\\\"永久秘钥\\\", \\\"red\\\") + color(\\\"(过期)\\\", \\\"#adff2f\\\"));\\n        timeOver.url = getApi(\\\"gtimeover\\\") + \\\"?qq=\\\" + username + \\\"&password=\\\" + password;\\n        timeOver.confirm = \\\"确认要以后分享的私藏规则自动到期?\\\";\\n        timeOver.msg = [\\\"已设为过期\\\", \\\"设为过期失败\\\"];\\n    }\\n    data.push(setSettingItem(timeOver));\\n    let discuss = {\\n        col_type: \\\"text_3\\\"\\n    };\\n    if (devSettings.can_discuss) {\\n        discuss.title = small(color(\\\"允许评论\\\", \\\"red\\\") + color(\\\"(不许)\\\", \\\"#adff2f\\\"));\\n        discuss.url = api.dis_dev_discuss + \\\"?qq=\\\" + username + \\\"&password=\\\" + password+ \\\"&flag=1\\\";\\n        discuss.confirm = \\\"是否确认以后上传的规则允许评论?\\\";\\n        discuss.msg = [\\\"已设为不许\\\", \\\"设置失败\\\"];\\n\\n    } else {\\n        discuss.title = small(color(\\\"不许评论\\\", \\\"green\\\") + color(\\\"(允许)\\\", \\\"#00bfff\\\"));\\n        discuss.url = api.dis_dev_discuss + \\\"?qq=\\\" + username + \\\"&password=\\\" + password;\\n        discuss.confirm = \\\"是否确认以后上传的规则允许评论?\\\";\\n        discuss.msg = [\\\"已设为允许\\\", \\\"设置失败\\\"];\\n    }\\n    data.push(setSettingItem(discuss));\\n}\\nmapColType(data, \\\"line\\\", 2);\\nfor (let item of ruleList) {\\n    let my_t_excode1 = '';\\n    let my_t_excode2 = '';\\n    if (item.state != 'public') {\\n        my_t_excode1 += '㊙️';\\n    } else {\\n        my_t_excode1 += '';\\n    }\\n    data.push({\\n        title: my_t_excode1 + item.name + my_t_excode2,\\n        url: \\\"hiker://page/manageRule#noHistory##noRecordHistory#\\\",\\n        extra: {\\n            id: item.id,\\n            //username: username,\\n            //password: password\\n        },\\n        pic_url: item.pic,\\n    })\\n}\\nif (ruleList.length === 0) {\\n    data.push({\\n        title: \\\"<h5 style='text-align:center'>快来上传你的第一条规则吧！</h5>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n}\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"规则详细-dev\",\"path\":\"manageRule\",\"rule\":\"js:\\n    const {\\n        getApi,\\n        color,\\n        small,\\n        getFile,\\n        existFile,\\n        mapColType,\\n        htmlTag,\\n        api,\\n        md,\\n    } = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    id\\n} = MY_PARAMS;\\nlet {\\n    username,\\n    password,\\n} = getFile();\\naddListener('onClose', $.toString(() => {\\n    refreshPage(false);\\n}));\\nlet dataItem = JSON.parse(request(getApi(\\\"getbyid\\\") + \\\"?id=\\\" + id)).result;\\nsetPageTitle(\\\"编辑「\\\" + dataItem.name + \\\"」\\\");\\nlet reqByGet = \\\"?id=\\\" + dataItem.id + \\\"&qq=\\\" + username + \\\"&password=\\\" + password;\\nlet ruleListJson = getApi(\\\"ruleListJson\\\") + \\\"?id=\\\";\\nlet data = [];\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"版本\\\"),\\n    desc: \\\"““””云端版本:\\\" + color(dataItem.ver, \\\"#5cff2c\\\") + \\\"\\\\n上次提交于: [\\\" + color(dataItem.last_update, \\\"#ff7000\\\") + \\\"]\\\",\\n    url: $(\\\"<开发者>\\\\n\\\" + dataItem.author + \\\"\\\\n<名称>\\\\n\\\" + dataItem.name + \\\"\\\\n<云端版本>\\\\n\\\" + dataItem.ver + \\\"\\\\n<更新时间>\\\\n[\\\" + dataItem.last_update + \\\"]\\\").confirm(() => {}),\\n    col_type: 'text_1'\\n});\\nlet dataType = {\\n    home_rule_url: '首页云规则',\\n    publish: '提交云仓库规则',\\n    js_url: '网页插件规则',\\n    html: '静态页面',\\n    config: '主页配置'\\n};\\n\\nlet basic = {\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://empty\\\"\\n};\\nlet dataTypeTips = dataType[dataItem.data_type] || '未知规则:' + dataItem.data_type;\\n\\nbasic.title = htmlTag(\\\"big\\\", \\\"类型\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(\\\"(id:\\\" + dataItem.id + \\\")\\\");\\nbasic.desc = \\\"数据类型：\\\" + color(dataTypeTips, \\\"#cb54ff\\\") + \\\"\\\\n分享状态为：\\\" + dataItem.state;\\nif ([\\\"html\\\", \\\"config\\\", \\\"js_url\\\"].includes(dataItem.data_type)) {\\n    basic.desc += \\\"\\\\n““”” =>\\\" + small(\\\"点此预览\\\");\\n    basic.url = ruleListJson + dataItem.id;\\n}\\nlet auth = \\\"\\\";\\nif (dataItem.state == \\\"private\\\") {\\n    let auth_back = JSON.parse(request(getApi(\\\"auth\\\") + reqByGet));\\n    basic.title = basic.title + \\\"\\\\n\\\" + small(color(auth_back.result, \\\"grey\\\"));\\n    auth = '&auth=' + auth_back.result;\\n    basic.url = basic.url === \\\"hiker://empty\\\" ? basic.url : basic.url + auth;\\n}\\ndata.push(basic);\\nlet notes = request(getApi(\\\"get_rule_note\\\") + id);\\nnotes = JSON.parse(notes).result;\\nrequire(md);\\nlet notesHtml=\\\"\\\"\\ntry{\\n    notesHtml=marked.parse(notes);\\n}catch(e){}\\nif (notes !== false) {\\n    data.push({\\n        title: htmlTag(\\\"big\\\", \\\"备注\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(htmlTag(\\\"u\\\", \\\"查看完整公告 >\\\")),\\n        desc: notes,\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://page/info\\\",\\n        extra: {\\n            text: notesHtml,\\n            name: dataItem.name,\\n            // type: \\\"long_text\\\"\\n            type: \\\"rich_text\\\"\\n        }\\n    });\\n}\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"操作\\\"),\\n    col_type: \\\"text_1\\\",\\n    url: \\\"toast://你才是最帅的那个人！\\\"\\n});\\nlet importUrl, ruleCode, shareUrl, backCode = \\\"\\\";\\nlet subUrl = ruleListJson + dataItem.id + auth;\\nif (!dataItem.is_json) {\\n    backCode = request(subUrl);\\n}\\nswitch (dataItem.data_type) {\\n    case \\\"home_rule_url\\\":\\n        ruleCode = \\\"海阔视界首页频道规则【\\\" + dataItem.name + \\\"】￥home_rule_url￥\\\" + ruleListJson + dataItem.id + auth;\\n        importUrl = \\\"rule://\\\" + base64Encode(ruleCode)\\n        break;\\n    case 'publish':\\n        ruleCode = '海阔视界规则分享，当前分享的是：' + dataItem.name + '￥publish￥' + base64Encode(backCode);\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break;\\n    case 'js_url':\\n        ruleCode = '海阔视界规则分享，当前分享的是：网页插件￥js_url￥' + dataItem.name + '@base64://' + base64Encode(backCode);\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break;\\n    case 'html':\\n        let file_tmp = dataItem.name.split('.');\\n        let file_path = file_tmp.length > 1 ? file_tmp[file_tmp.length - 1] + \\\"/\\\" + dataItem.name : dataItem.name;\\n        ruleCode = \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/\\\" + file_path + \\\"@\\\" + ruleListJson + dataItem.id + auth;\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break\\n    case \\\"config\\\":\\n        importUrl = $().rule(password => {\\n            eval(fetch(\\\"hiker://assets/home.js\\\"));\\n            HikerHome.load(\\\"import\\\", password);\\n        }, backCode);\\n        break;\\n}\\nlet my_col_type = \\\"text_2\\\";\\nif (importUrl) {\\n    data.push({\\n        title: \\\"导入规则\\\",\\n        url: importUrl,\\n        col_type: my_col_type\\n    });\\n    if(dataItem.is_json_list&&/home_rule_url|html/.test(dataItem.data_type)){\\n        data.push({\\n            title: '““””<span style=\\\"color: #ff7000\\\">导入道德经</span>',\\n            url: $().lazyRule((dataItem,subUrl)=>{\\n                // let title = \\\"H-\\\"+dataItem.name+\\\".\\\"+dataItem.author;\\n                let title = \\\"J-\\\"+dataItem.name.split('.')[0];\\n                let subObj = {\\n                    title: title,\\n                    url: subUrl,\\n                    desc: \\\"hiker://files/rules/dzHouse/ruleCache/\\\"+title+\\\".json\\\",\\n                    code: \\\"\\\",\\n                    active: false,//禁用并发更新\\n                }\\n                let shareText = base64Encode(JSON.stringify(subObj));\\n                var pastes = getPastes();\\n                var url = sharePaste(shareText,pastes.slice(-1)[0]);\\n                let import_rule= \\\"轻合集订阅：\\\"+title+'\\\\n'+url;\\n                copy(import_rule);\\n                const path = 'hiker://files/rules/dzHouse/ruleCache/sub.json';\\n                $.rc(config.lib.sub);\\n                return 订阅导入(path)\\n            },dataItem,subUrl),\\n            col_type: my_col_type\\n        });\\n    }\\n}\\nif (ruleCode) {\\n    data.push({\\n        title: \\\"分享规则\\\",\\n        url: \\\"copy://\\\" + ruleCode,\\n        col_type: my_col_type\\n    });\\n}\\n\\nfunction setSettingItem(basic, pattern) {\\n    let temp = {\\n        title: basic.title,\\n        col_type: basic.col_type,\\n        url: $(basic.confirm).confirm((url, msg, pattern) => {\\n            let backA = request(url);\\n            let ret = JSON.parse(backA);\\n            if (ret.status == 0) {\\n                pattern ? back() : refreshPage(false);\\n                return \\\"toast://\\\" + msg[0];\\n            } else {\\n                pattern ? back() : refreshPage(false);\\n                return \\\"toast://\\\" + msg[1] + \\\"\\\\n\\\" + ret.detail;\\n            }\\n        }, basic.url, basic.msg, pattern)\\n    };\\n    return temp;\\n}\\nif (dataItem.state == 'private') {\\n    data.push({\\n        title: \\\"设为公开\\\",\\n        url: $(getApi(\\\"share\\\") + reqByGet + \\\"&flag\\\" + \\\"#noLoading#\\\").lazyRule(() => {\\n            request(input);\\n            refreshPage(false);\\n            return \\\"toast://已设为公开\\\";\\n        }),\\n        col_type: my_col_type\\n    }, {\\n        title: \\\"随机密钥\\\",\\n        col_type: my_col_type,\\n        url: $(getApi(\\\"genAuth\\\") + reqByGet + \\\"#noLoading#\\\").lazyRule(() => {\\n            let back = request(input);\\n            let ret = JSON.parse(back);\\n            if (ret.status == 0) {\\n                refreshPage(false);\\n                return \\\"toast://已生成随机密码\\\\n\\\" + ret.result\\n            } else {\\n                refreshPage(true);\\n                return \\\"toast://随机密码生成失败\\\"\\n            }\\n        })\\n    });\\n    let timeOver = {\\n        col_type: my_col_type\\n    };\\n    if (dataItem.time_over) {\\n        timeOver.title = small(color(\\\"短时密钥\\\", \\\"green\\\") + color(\\\"(→永久)\\\", \\\"red\\\"));\\n        timeOver.url = getApi(\\\"timeover\\\") + reqByGet + \\\"&flag=1\\\";\\n        timeOver.confirm = \\\"是否确认以后的私藏规则分享不过期?\\\";\\n        timeOver.msg = [\\\"已设为永久\\\", \\\"设为永久失败\\\"];\\n    } else {\\n        timeOver.title = small(color(\\\"永久密钥\\\", \\\"red\\\") + color(\\\"(→短时)\\\", \\\"green\\\"));\\n        timeOver.url = getApi(\\\"timeover\\\") + reqByGet;\\n        timeOver.confirm = \\\"确认要以后分享的私藏规则自动到期?\\\";\\n        timeOver.msg = [\\\"已设为过期\\\", \\\"设为过期失败\\\"];\\n    }\\n    data.push(setSettingItem(timeOver));\\n} else if (dataItem.state == 'public') {\\n    data.push({\\n        title: \\\"设为私有\\\",\\n        url: $(getApi(\\\"share\\\") + reqByGet + \\\"&flag=1#noLoading#\\\").lazyRule(() => {\\n            request(input);\\n            refreshPage(false);\\n            return \\\"toast://已设为私有\\\";\\n        }),\\n        col_type: my_col_type\\n    });\\n}\\ndata.push(setSettingItem({\\n    title: \\\"删除数据\\\",\\n    confirm: \\\"是否确认删除\\\",\\n    msg: [\\\"已删除\\\", \\\"删除失败\\\"],\\n    url: getApi(\\\"deleteUrl\\\") + reqByGet,\\n    col_type: my_col_type\\n}, true));\\ndata.push({\\n    title: \\\"设置图标\\\",\\n    url: $(dataItem.pic_url, \\\"输入图标地址\\\").input(api => {\\n        if (input === \\\"\\\") {\\n            return \\\"toast://你在逗我链接哪?\\\"\\n        }\\n        let result = request(api + \\\"&rule_pic=\\\" + input);\\n        result = JSON.parse(result);\\n        if (result.status !== 0) {\\n            return \\\"toast://\\\" + result.detail;\\n        }\\n        return \\\"toast://修改成功\\\";\\n    }, getApi(\\\"set_rule_pic\\\") + dataItem.id + reqByGet),\\n    col_type: my_col_type\\n});\\n\\ndata.push({\\n    title: dataItem.can_discuss ? \\\"禁止评论\\\" : \\\"开启评论\\\",\\n    url: $(api.dis_set + dataItem.id + reqByGet + \\\"&state=\\\" + (dataItem.can_discuss ? \\\"\\\" : 1)).lazyRule((can_discuss) => {\\n        request(input);\\n        refreshPage(false);\\n        return can_discuss ? \\\"toast://已禁止评论\\\" : \\\"toast://已开启评论\\\";\\n    }, dataItem.can_discuss),\\n    col_type: my_col_type\\n});\\nMY_PARAMS.name = dataItem.name;\\nMY_PARAMS.username=username;\\nMY_PARAMS.password=password;\\ndata.push({\\n    title: \\\"设置备注\\\",\\n    url: \\\"hiker://page/set_rule_notes\\\",\\n    extra: MY_PARAMS,\\n    col_type: my_col_type\\n});\\nif (dataItem.is_json && dataItem.data_type === \\\"home_rule_url\\\" && !dataItem.is_json_list) {\\n    data.push({\\n        title: '进入频道',\\n        url: $( /*\\\"#noLoading#\\\"*/ ).lazyRule((name,home) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === name);\\n            if (hasRule) {\\n                putVar(\\\"Warehouse.back\\\", \\\"1\\\");\\n                back();\\n                return home+\\\"s@\\\" + name;\\n            } else {\\n                return \\\"toast://未安装\\\";\\n            }\\n        }, dataItem.name,api.home),\\n        col_type: my_col_type\\n    });\\n}\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\ndata.push({\\n    title: dataItem.good_num,\\n    pic_url: \\\"hiker://files/icon/赞.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://empty\\\"\\n});\\ndata.push({\\n    title: dataItem.bad_num,\\n    pic_url: \\\"hiker://files/icon/踩.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://empty\\\"\\n});\\ndata.push({\\n    title: \\\"评论\\\",\\n    pic_url: \\\"hiker://files/icon/评论.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://page/Reply#noHistory##noRecordHistory#\\\",\\n    extra: {\\n        ruleId: dataItem.id,\\n        name: dataItem.author,\\n        password: password,\\n        username: username\\n    }\\n});\\nlet totalSum = dataItem.good_num + dataItem.bad_num;\\n\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"评论(\\\" + totalSum + \\\")\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(htmlTag(\\\"u\\\", \\\"查看全部评论(控评) >\\\")),\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://page/Comment\\\",\\n    extra: {\\n        url: \\\"hiker://empty#fypage#noHistory##noRecordHistory#\\\",\\n        id: dataItem.id,\\n        totalSum: totalSum,\\n        no_active: true,\\n        username: username,\\n        password: password\\n    }\\n});\\n//const longestSum=120;\\nlet icon = {\\n    \\\"good\\\": \\\"👍\\\",\\n    \\\"bad\\\": \\\"👎\\\",\\n    \\\"reply\\\": \\\"开发者🗣\\\"\\n}\\nif (totalSum === 0) {\\n    data.push({\\n        title: \\\"<h5 style='text-align:center'>一条评论也没有，快来抢沙发吧！</h5>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n} else {\\n    let commentList = JSON.parse(request(api.dis_get + dataItem.id + \\\"?limit=5\\\")).result;\\n    for (let item of commentList) {\\n        let Reply = item.discuss_type===\\\"reply\\\"&&item.reply_to_name!==false&&item.reply_to_id!==false?\\\"‘‘回复@\\\"+item.reply_to_name+\\\" #\\\"+item.discuss_id+\\\"’’\\\\n\\\":\\\"\\\";\\n        data.push({\\n            title: item.name + \\\"&nbsp;&nbsp;<font color='gray'><small>#\\\" + item.id + \\\"</small><font>\\\",\\n            col_type: \\\"avatar\\\",\\n            url: \\\"hiker://page/Reply\\\",\\n            extra:{\\n                ruleId: dataItem.id,\\n                name: item.name,\\n                password: password,\\n                username: username,\\n                replyId:item.id\\n            },\\n            pic_url: item.avatar_url\\n        });\\n        data.push({\\n            title: item.discuss_text,\\n            desc: Reply+item.create_date + \\\"·\\\" + icon[item.discuss_type],\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/info\\\",\\n            extra: {\\n                name: item.name,\\n                type: \\\"long_text\\\",\\n                text: item.discuss_text\\n            },\\n            pic_url: item.avatar_url\\n        });\\n    }\\n}\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nsetResult(data);\"},{\"col_type\":\"icon_2_round\",\"name\":\"规则列表\",\"path\":\"rules\",\"rule\":\"js:\\n    addListener('onClose',$.toString(()=>{\\n        clearVar(\\\"Warehouse.back\\\");\\n        clearVar(\\\"Warehouse.filter\\\");\\n        clearVar(\\\"Warehouse.type\\\");\\n        if(getVar('Warehouse.can_upload','')){\\n            log('操作过禁止上传:'+getVar('Warehouse.can_upload'));\\n            clearVar(\\\"Warehouse.can_upload\\\");\\n            refreshPage(true);\\n        }\\n    }));\\n\\nif (getVar(\\\"Warehouse.back\\\") === \\\"1\\\") {\\n    back(false);\\n}\\n\\nconst {\\n    getApi,\\n    api,\\n    color,\\n    small,\\n    localRuleVer,\\n    htmlTag,\\n    md\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nconst { mergeSort } = $.require(\\\"hiker://page/sort\\\");\\nlet {\\n    avatarUrl,\\n    qq,\\n    id,\\n    can_upload\\n} = MY_PARAMS;\\nlet dataType = getVar(\\\"Warehouse.type\\\",\\\"\\\");\\nlet backCode = JSON.parse(request(getApi(\\\"rulesUrl\\\") + \\\"?name=\\\" + qq+\\\"&data_type=\\\"+dataType));\\nlet devName = backCode.dev_name;\\nputVar(\\\"Warehouse.filter\\\", devName);\\nlet ruleList = backCode.result;\\nlet subUrl = getApi(\\\"jsonList\\\") + \\\"?name=\\\" + qq;\\nlet hasSub = hasHomeSub(subUrl);\\nlet devInfo = \\\"这个人很懒,什么都没写哦~\\\";\\nlet tmpJson = JSON.parse(request(getApi(\\\"infoGetUrl\\\") + qq));\\nif (tmpJson.status == 0) {\\n    devInfo = tmpJson.result || devInfo;\\n}\\nlet subFlag = hasSub ? '🆗' : '📡';\\nlet data = [];\\nrequire(md);\\ndevInfo=marked.parse(devInfo);\\ndata.push({\\n    title: \\\"““””\\\" + devName + \\\"\\\\n\\\\n\\\" + small(htmlTag(\\\"u\\\", \\\"点击查看完整公告\\\")),\\n    desc: small(devInfo),\\n    url: 'hiker://page/info',\\n    extra: {\\n        text: devInfo,\\n        name: devName,\\n        type:\\\"rich_text\\\"\\n    },\\n    pic_url: avatarUrl,\\n    col_type: 'movie_1_vertical_pic'\\n});\\ndata.push({\\n    title: \\\"<big>订阅管理</big>&nbsp;&nbsp;<small>(当前\\\" + (hasSub ? \\\"已订阅\\\" : \\\"未订阅\\\") + \\\")</small>\\\",\\n    col_type: \\\"rich_text\\\"\\n});\\n\\nlet sub_code = '海阔视界合集规则订阅￥home_sub￥' + devName + \\\"合集@@\\\" + subUrl;\\nlet rulesCode = '海阔视界合集规则￥home_rule_url￥' + subUrl;\\ndata.push({\\n    title: '““””<span style=\\\"color: #ff7000\\\">一键订阅</span>',\\n    desc: '订阅““””<span style=\\\"color: #5cff2c\\\">' + devName + '</span>的所有单规则，合集需单独订阅',\\n    url: sub_code,\\n    col_type: 'text_2'\\n});\\ndata.push({\\n    title: '““””<span style=\\\"color: #ff7000\\\">导入全部</span>',\\n    url: rulesCode,\\n    col_type: 'text_2'\\n});\\ndata.push({\\n    title: '““””<span style=\\\"color: #ff7000\\\">导入轻合集</span>',\\n    url: $().lazyRule((devName,subUrl,avatarUrl)=>{\\n        const {genRule}=$.require(\\\"hiker://page/genApi\\\");\\n        log(\\\"轻合集图标链接:\\\"+avatarUrl);\\n        let import_rule=genRule(\\\"轻合集.\\\"+devName,subUrl,avatarUrl);\\n        //copy(import_rule);\\n        let ruleCode=parsePaste(import_rule.split(\\\"\\\\n\\\")[0]);\\n        //return \\\"hiker://empty\\\"\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        return importUrl\\n    },devName,subUrl,avatarUrl),\\n    col_type: 'text_2'\\n});\\ndata.push({\\n    title: '““””<span style=\\\"color: #ff7000\\\">导入道德经</span>',\\n    url: $().lazyRule((devName,subUrl,avatarUrl)=>{\\n        let title = \\\"H-\\\"+devName;\\n        let subObj = {\\n            title: title,\\n            url: subUrl,\\n            desc: \\\"hiker://files/rules/dzHouse/ruleCache/\\\"+title+\\\".json\\\",\\n            code: \\\"\\\",\\n            active: false,//禁用并发更新\\n        }\\n        let shareText = base64Encode(JSON.stringify(subObj));\\n        var pastes = getPastes();\\n        var url = sharePaste(shareText,pastes.slice(-1)[0]);\\n        let import_rule= \\\"轻合集订阅：\\\"+title+'\\\\n'+url;\\n        copy(import_rule);\\n        const path = 'hiker://files/rules/dzHouse/ruleCache/sub.json';\\n        $.rc(config.lib.sub);\\n        return 订阅导入(path)\\n    },devName,subUrl,avatarUrl),\\n    col_type: 'text_2'\\n});\\nlet can_upload_api = getApi(\\\"manCanUpload\\\")+id;\\nif(getVar('house.is_manager')){\\n    let tips = can_upload?'能':'否';\\n    // log('tips:'+tips);\\n    // log('can_upload:'+can_upload);\\n    data.push({\\n        title:'⚠能否上传:'+(getVar('Warehouse.can_upload')||tips),\\n        col_type:'scroll_button',\\n        url:'hiker://empty'\\n    });\\n    function setUpload(flag,can_upload_api) {\\n        flag = flag || '';\\n        try {\\n            let code = fetch(can_upload_api, {\\n                headers: {\\\"User-Agent\\\": MOBILE_UA},\\n                body: {\\n                    \\\"params\\\":\\n                        {\\n                            \\\"username\\\": getVar('house.username'),\\n                            \\\"password\\\": getVar('house.password'),\\n                            \\\"can_upload\\\": !!flag\\n                        }\\n                }\\n            });\\n            code = JSON.parse(code).result;\\n            if (code.status === 0) {\\n                return code.detail\\n            } else {\\n                return '操作失败:' + code.detail\\n            }\\n        } catch (e) {\\n            return '操作失败:' + e.message\\n        }\\n    }\\n    data.push({\\n        title:'🚫禁止上传',\\n        col_type:'scroll_button',\\n        url:$('禁止该开发者上传规则?你的操作将被系统记录').confirm((id,can_upload_api,setUpload)=>{\\n            let ret = setUpload(false,can_upload_api);\\n            if(!/操作失败/.test(ret)){\\n                putVar('Warehouse.can_upload','否');\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },id,can_upload_api,setUpload)\\n    });\\n    data.push({\\n        title:'✅允许上传',\\n        col_type:'scroll_button',\\n        url:$('允许该开发者上传规则?你的操作将被系统记录').confirm((id,can_upload_api,setUpload)=>{\\n            let ret = setUpload(true,can_upload_api);\\n            if(!/操作失败/.test(ret)){\\n                putVar('Warehouse.can_upload','是');\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },id,can_upload_api,setUpload)\\n    });\\n}\\ndata.push({\\n    title: \\\"<small>提示：开发者单独分享的合集文件只能单独导入。</small>\\\",\\n    col_type: \\\"rich_text\\\"\\n});\\ndata.push({\\n    title: \\\"<big>规则列表</big>&nbsp;&nbsp;<small>(共\\\" + ruleList.length + \\\"条)</small>\\\",\\n    col_type: \\\"rich_text\\\"\\n});\\nlet dataTypeList = {\\n    \\\"\\\":\\\"全部\\\",\\n    \\\"home_rule_url\\\": '小程序',\\n    //\\\"publish\\\": '提交云仓库规则',\\n    \\\"js_url\\\": '网页插件',\\n    \\\"html\\\": '静态页面',\\n    \\\"config\\\": '主题'\\n};\\nfor(let key in dataTypeList){\\n    data.push({\\n        title:dataType===key?\\\"““\\\"+dataTypeList[key]+\\\"””\\\":dataTypeList[key],\\n        url:$(\\\"#noLoading#\\\").lazyRule((key)=>{\\n            putVar(\\\"Warehouse.type\\\",key);\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        },key),\\n        col_type:\\\"scroll_button\\\"\\n    });\\n}\\nif (ruleList.length > 20) {\\n    data.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(name => \\\"hiker://search?s=\\\" + input + \\\"&rule=\\\" + name, MY_RULE.title),\\n        col_type: \\\"input\\\",\\n        desc: \\\"搜索当前开发者的规则\\\"\\n    });\\n}\\nlet homeList = JSON.parse(request(api.home));\\nlet mRuleList = [];\\nfor (var item of ruleList) {\\n    var name = item.name;\\n    if (item.is_tap) {\\n        let location = JSON.parse(request(getApi(\\\"ruleListJson\\\") + \\\"?id=\\\" + item.id));\\n        item.id = location.id;\\n        item.name = location.name;\\n        item.author = location.author;\\n        item.data_type = location.data_type;\\n        item.ver = location.ver\\n    }\\n    item.version = item.ver;\\n    let label = \\\"\\\",\\n        lver = -2;\\n    if (item.is_json && item.data_type === \\\"home_rule_url\\\") {\\n        lver = localRuleVer(homeList, item);\\n        if (lver === -1) {\\n            label = \\\"🆕\\\";\\n        } else if (lver < item.ver) {\\n            label = \\\"🆙\\\";\\n        }\\n    }\\n    mRuleList.push({\\n        title: label + name,\\n        url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#\\\",\\n        extra: {\\n            lver: lver,\\n            id: item.id\\n        },\\n        pic_url: item.pic,\\n    });\\n}\\n/* 归并排序 Start */\\nif(getItem(\\\"排序\\\",\\\"时间\\\")==='归并'){\\n    mRuleList = mergeSort(mRuleList);\\n}\\n/* 归并排序 End */\\ndata.push.apply(data, mRuleList)\\nsetResult(data);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"规则详细-user\",\"path\":\"ruleDetail\",\"rule\":\"js:\\n    const {\\n        getApi,\\n        color,\\n        small,\\n        htmlTag,\\n        api,\\n        md\\n    } = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    id,\\n    lver,\\n    isAll\\n} = MY_PARAMS;\\nif(getParam(\\\"id\\\")){\\n    isAll=true;\\n    id=getParam(\\\"id\\\");\\n    lver=lver||'未获取版本号';\\n}\\naddListener('onClose', $.toString((isAll) => {\\n    if(!isAll){\\n        refreshPage(false);\\n    }\\n},isAll));\\nlet dataItem = JSON.parse(request(getApi(\\\"getbyid\\\") + \\\"?id=\\\" + id)).result;\\nsetPageTitle(\\\"「\\\" + dataItem.name + \\\"」\\\")\\nlet ruleListJson = getApi(\\\"ruleListJson\\\") + \\\"?id=\\\";\\nlet data = [];\\nvar hasSub = false;\\n\\nif (dataItem.is_json_list) {\\n    hasSub = hasHomeSub(ruleListJson + dataItem.id);\\n} else if (!dataItem.is_json_list && dataItem.data_type == 'home_rule_url') {\\n    hasSub = hasHomeSub(ruleListJson + dataItem.id + '&debug=true');\\n}\\n\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"版本\\\"),\\n    desc: \\\"““””开发者：\\\" + color(dataItem.author, \\\"#228BE6\\\") + \\\"\\\\n云端版本：\\\" + color(dataItem.ver, \\\"#5cff2c\\\") + \\\"\\\\t\\\\t本地版本：\\\" + color(lver, \\\"#5cff2c\\\") + \\\"\\\\n更新于: [\\\" + color(dataItem.last_update, \\\"#ff7000\\\") + \\\"]\\\",\\n    url: $(\\\"<开发者>\\\\n\\\" + dataItem.author + \\\"\\\\n<名称>\\\\n\\\" + dataItem.name + \\\"\\\\n<云端版本>\\\\n\\\" + dataItem.ver + \\\"\\\\n<本地版本>\\\\n\\\" + lver + \\\"\\\\n<更新时间>\\\\n[\\\" + dataItem.last_update + \\\"]\\\").confirm(() => {}),\\n    col_type: 'text_1'\\n});\\nlet dataType = {\\n    home_rule_url: '首页云规则',\\n    publish: '提交云仓库规则',\\n    js_url: '网页插件规则',\\n    html: '静态页面',\\n    config: '主页配置'\\n};\\n\\nlet basic = {\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://empty\\\"\\n};\\nlet dataTypeTips = dataType[dataItem.data_type] || '未知规则：' + dataItem.data_type;\\n\\nlet safe_tip=dataItem.is_safe?\\\"安全\\\":\\\"危险\\\";\\nlet good_tip = dataItem.is_good?small(color(\\\"【优质规则】\\\",'#ff7000')):\\\"\\\";\\nlet not_safe_note=dataItem.not_safe_note;\\nbasic.title = htmlTag(\\\"big\\\", \\\"类型\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(\\\"(id:\\\" + dataItem.id + \\\")\\\")+\\\"\\\\t\\\\t\\\\t\\\" + small(\\\"(风险检测:\\\" +safe_tip+\\\")\\\")+good_tip;\\nbasic.desc = \\\"数据类型：\\\" + color(dataTypeTips, \\\"#cb54ff\\\") + \\\"\\\\n分享状态为：\\\" + dataItem.state;\\nif ([\\\"html\\\", \\\"config\\\", \\\"js_url\\\"].includes(dataItem.data_type)) {\\n    basic.desc += \\\"\\\\n““”” =>\\\" + small(\\\"点此预览\\\");\\n    basic.url = ruleListJson + dataItem.id;\\n}\\n\\ndata.push(basic);\\nlet hasSubs = \\\"\\\";\\nif (hasSub) {\\n    hasSubs = \\\"\\\\t\\\\t\\\\t\\\" + small(\\\"已订阅\\\")\\n}\\n\\nlet notes = request(getApi(\\\"get_rule_note\\\") + id);\\nnotes = JSON.parse(notes).result;\\nrequire(md);\\nlet notesHtml=\\\"\\\"\\ntry{\\n    notesHtml=marked.parse(notes);\\n}catch(e){}\\n\\nif (notes !== false) {\\n    data.push({\\n        title: htmlTag(\\\"big\\\", \\\"备注\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(htmlTag(\\\"u\\\", \\\"查看完整公告 >\\\")),\\n        desc: notes,\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://page/info\\\",\\n        extra: {\\n            text: notesHtml,\\n            name: dataItem.name,\\n            // type: \\\"long_text\\\"\\n            type: \\\"rich_text\\\"\\n        }\\n    });\\n}\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"操作\\\") + hasSubs,\\n    col_type: \\\"text_1\\\",\\n    url: \\\"toast://你才是最帅的那个人！\\\"\\n});\\nlet importUrl, ruleCode, shareUrl, backCode = \\\"\\\";\\nif (!dataItem.is_json) {\\n    backCode = request(ruleListJson + dataItem.id);\\n}\\nswitch (dataItem.data_type) {\\n    case \\\"home_rule_url\\\":\\n        ruleCode = \\\"海阔视界首页频道规则【\\\" + dataItem.name + \\\"】￥home_rule_url￥\\\" + ruleListJson + dataItem.id;\\n        importUrl = \\\"rule://\\\" + base64Encode(ruleCode)\\n        break;\\n    case 'publish':\\n        ruleCode = '海阔视界规则分享，当前分享的是：' + dataItem.name + '￥publish￥' + base64Encode(backCode);\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break;\\n    case 'js_url':\\n        ruleCode = '海阔视界规则分享，当前分享的是：网页插件￥js_url￥' + dataItem.name + '@base64://' + base64Encode(backCode);\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break;\\n    case 'html':\\n        let file_tmp = dataItem.name.split('.');\\n        let file_path = file_tmp.length > 1 ? file_tmp[file_tmp.length - 1] + \\\"/\\\" + dataItem.name : dataItem.name;\\n        ruleCode = \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/\\\" + file_path + \\\"@\\\" + ruleListJson + dataItem.id;\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        break\\n    case \\\"config\\\":\\n        importUrl = $().rule(password => {\\n            eval(fetch(\\\"hiker://assets/home.js\\\"));\\n            HikerHome.load(\\\"import\\\", password);\\n        }, backCode);\\n        break;\\n}\\nlet my_col_type = \\\"text_2\\\";\\nlet my_col_type2 = \\\"text_3\\\";\\nif (importUrl) {\\n    data.push({\\n        title: \\\"导入规则\\\",\\n        url: dataItem.is_safe?importUrl:'toast://风险规则禁止导入!!!',\\n        col_type: my_col_type\\n    });\\n}\\nif (ruleCode) {\\n    data.push({\\n        title: \\\"分享口令\\\",\\n        url: \\\"copy://\\\" + ruleCode,\\n        col_type: my_col_type\\n    });\\n}\\n\\nif (importUrl) {\\n    if (dataItem.is_json_list && !hasSub) {\\n        let sub_rule_code = '海阔视界合集规则订阅￥home_sub￥' + dataItem.name + \\\"@@\\\" + ruleListJson + dataItem.id;\\n        let sub_url = 'rule://' + base64Encode(sub_rule_code);\\n        data.push({\\n            title: '订阅合集',\\n            url: sub_url,\\n            col_type: my_col_type2\\n        });\\n        data.push({\\n            title: '““””<span style=\\\"color: #ff7000\\\">导入轻合集</span>',\\n            url: $().lazyRule((dataItem,subUrl)=>{\\n                const {genRule}=$.require(\\\"hiker://page/genApi\\\");\\n                let import_rule=genRule(dataItem.name+\\\".\\\"+dataItem.author,subUrl);\\n                //copy(import_rule);\\n                let ruleCode=parsePaste(import_rule.split(\\\"\\\\n\\\")[0]);\\n                //return \\\"hiker://empty\\\"\\n                importUrl = 'rule://' + base64Encode(ruleCode);\\n                return importUrl\\n            },dataItem,ruleListJson + dataItem.id),\\n            col_type: my_col_type2\\n        });\\n        data.push({\\n            title: '““””<span style=\\\"color: #ff7000\\\">导入道德经</span>',\\n            url: $().lazyRule((dataItem,subUrl)=>{\\n                // let title = \\\"H-\\\"+dataItem.name+\\\".\\\"+dataItem.author;\\n                let title = \\\"J-\\\"+dataItem.name.split('.')[0];\\n                let subObj = {\\n                    title: title,\\n                    url: subUrl,\\n                    desc: \\\"hiker://files/rules/dzHouse/ruleCache/\\\"+title+\\\".json\\\",\\n                    code: \\\"\\\",\\n                    active: false,//禁用并发更新\\n                }\\n                let shareText = base64Encode(JSON.stringify(subObj));\\n                var pastes = getPastes();\\n                var url = sharePaste(shareText,pastes.slice(-1)[0]);\\n                let import_rule= \\\"轻合集订阅：\\\"+title+'\\\\n'+url;\\n                copy(import_rule);\\n                const path = 'hiker://files/rules/dzHouse/ruleCache/sub.json';\\n                $.rc(config.lib.sub);\\n                return 订阅导入(path)\\n            },dataItem,ruleListJson + dataItem.id),\\n            col_type: my_col_type2\\n        });\\n        data.push({\\n            title: \\\"<small>提示：开发者单独分享的合集文件只能单独导入。</small>\\\",\\n            col_type: \\\"rich_text\\\"\\n        });\\n    } else if (!dataItem.is_json_list && !hasSub && dataItem.data_type == 'home_rule_url') {\\n        let sub_rule_code = '海阔视界单规则订阅￥home_sub￥' + dataItem.name + \\\"@@\\\" + ruleListJson + dataItem.id + '&debug=true';\\n        let sub_url = 'rule://' + base64Encode(sub_rule_code);\\n        data.push({\\n            title: '订阅规则',\\n            url: sub_url,\\n            col_type: my_col_type\\n        })\\n    }\\n}\\nif (dataItem.is_json && dataItem.data_type === \\\"home_rule_url\\\" && !dataItem.is_json_list) {\\n    data.push({\\n        title: '进入频道',\\n        url: $( /*\\\"#noLoading#\\\"*/ ).lazyRule((name,home) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === name);\\n            if (hasRule) {\\n                putVar(\\\"Warehouse.back\\\", \\\"1\\\");\\n                back();\\n                return home+\\\"s@\\\" + name;\\n            } else {\\n                return \\\"toast://未安装\\\";\\n            }\\n        }, dataItem.name,api.home),\\n        col_type: my_col_type\\n    })\\n}\\nlet man_rule_safe = getApi(\\\"manRuleSafe\\\")+dataItem.id;\\nlet man_rule_good = getApi(\\\"manRuleGood\\\")+dataItem.id;\\n// dataItem.is_safe;\\nif(getVar('house.is_manager')){\\n    function setIsSafe(flag,man_rule_safe) {\\n        flag = flag || '';\\n        try {\\n            let code = fetch(man_rule_safe, {\\n                headers: {\\\"User-Agent\\\": MOBILE_UA},\\n                body: {\\n                    \\\"params\\\":\\n                        {\\n                            \\\"username\\\": getVar('house.username'),\\n                            \\\"password\\\": getVar('house.password'),\\n                            \\\"is_safe\\\": !!flag\\n                        }\\n                }\\n            });\\n            code = JSON.parse(code).result;\\n            if (code.status === 0) {\\n                return code.detail\\n            } else {\\n                return '操作失败:' + code.detail\\n            }\\n        } catch (e) {\\n            return '操作失败:' + e.message\\n        }\\n    }\\n    function setIsGood(flag,man_rule_good) {\\n        flag = flag || '';\\n        try {\\n            let code = fetch(man_rule_good, {\\n                headers: {\\\"User-Agent\\\": MOBILE_UA},\\n                body: {\\n                    \\\"params\\\":\\n                        {\\n                            \\\"username\\\": getVar('house.username'),\\n                            \\\"password\\\": getVar('house.password'),\\n                            \\\"is_good\\\": !!flag\\n                        }\\n                }\\n            });\\n            code = JSON.parse(code).result;\\n            if (code.status === 0) {\\n                return code.detail\\n            } else {\\n                return '操作失败:' + code.detail\\n            }\\n        } catch (e) {\\n            return '操作失败:' + e.message\\n        }\\n    }\\n    data.push({\\n        title:'🚫风险',\\n        col_type:'scroll_button',\\n        url:$('标记该规则为风险?风险规则无法被导入').confirm((id,man_rule_safe,setIsSafe)=>{\\n            let ret = setIsSafe(false,man_rule_safe);\\n            if(!/操作失败/.test(ret)){\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },dataItem.id,man_rule_safe,setIsSafe)\\n    });\\n    data.push({\\n        title:'✅正常',\\n        col_type:'scroll_button',\\n        url:$('标记该规则为正常?').confirm((id,man_rule_safe,setIsSafe)=>{\\n            let ret = setIsSafe(true,man_rule_safe);\\n            if(!/操作失败/.test(ret)){\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },dataItem.id,man_rule_safe,setIsSafe)\\n    });\\n    data.push({\\n        title:'♥非优质',\\n        col_type:'scroll_button',\\n        url:$('标记该规则为非优质?').confirm((id,man_rule_good,setIsGood)=>{\\n            let ret = setIsGood(false,man_rule_good);\\n            if(!/操作失败/.test(ret)){\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },dataItem.id,man_rule_good,setIsGood)\\n    });\\n    data.push({\\n        title:'💖优质',\\n        col_type:'scroll_button',\\n        url:$('标记该规则为优质?').confirm((id,man_rule_good,setIsGood)=>{\\n            let ret = setIsGood(true,man_rule_good);\\n            if(!/操作失败/.test(ret)){\\n                refreshPage(false);\\n            }\\n            return 'toast://'+ret\\n        },dataItem.id,man_rule_good,setIsGood)\\n    });\\n}\\n\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\ndata.push({\\n    title: dataItem.good_num,\\n    pic_url: \\\"hiker://files/icon/赞.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://page/MakeAcomment#noHistory##noRecordHistory#\\\",\\n    extra: {\\n        id: dataItem.id,\\n        name: dataItem.name\\n    }\\n});\\ndata.push({\\n    title: dataItem.bad_num,\\n    pic_url: \\\"hiker://files/icon/踩.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://page/MakeAcomment#noHistory##noRecordHistory#\\\",\\n    extra: {\\n        id: dataItem.id,\\n        name: dataItem.name,\\n        defaultType:\\\"bad\\\"\\n    }\\n});\\ndata.push({\\n    title: \\\"评论\\\",\\n    pic_url: \\\"hiker://files/icon/评论.svg\\\",\\n    col_type: \\\"icon_small_3\\\",\\n    url: \\\"hiker://page/MakeAcomment#noHistory##noRecordHistory#\\\",\\n    extra: {\\n        id: dataItem.id,\\n        name: dataItem.name\\n    }\\n});\\nlet totalSum = dataItem.good_num + dataItem.bad_num;\\n\\ndata.push({\\n    title: htmlTag(\\\"big\\\", \\\"评论(\\\" + totalSum + \\\")\\\") + \\\"\\\\t\\\\t\\\\t\\\" + small(htmlTag(\\\"u\\\", \\\"查看全部评论 >\\\")),\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://page/Comment\\\",\\n    extra: {\\n        url: \\\"hiker://empty#fypage#noHistory##noRecordHistory#\\\",\\n        id: dataItem.id,\\n        totalSum: totalSum,\\n        no_active: false\\n    }\\n});\\n//const longestSum=120;\\nlet icon = {\\n    \\\"good\\\": \\\"👍\\\",\\n    \\\"bad\\\": \\\"👎\\\",\\n    \\\"reply\\\":\\\"开发者🗣\\\"\\n}\\nif (totalSum === 0) {\\n    data.push({\\n        title: \\\"<h5 style='text-align:center'>一条评论也没有，快来抢沙发吧！</h5>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n} else {\\n    let commentList = JSON.parse(request(api.dis_get + dataItem.id + \\\"?limit=5\\\")).result;\\n    for (let item of commentList) {\\n        let Reply = item.discuss_type===\\\"reply\\\"&&item.reply_to_name!==false&&item.reply_to_id!==false?\\\"‘‘回复@\\\"+item.reply_to_name+\\\" #\\\"+item.discuss_id+\\\"’’\\\\n\\\":\\\"\\\";\\n        data.push({\\n            title: item.name + \\\"&nbsp;&nbsp;<font color='gray'><small>#\\\" + item.id + \\\"</small><font>\\\",\\n            col_type: \\\"avatar\\\",\\n            //url: \\\"toast://\\\" + item.qq,\\n            url:\\\"mqqwpa://im/chat?chat_type=wpa&uin=\\\"+item.qq,\\n            pic_url: item.avatar_url\\n        });\\n        data.push({\\n            title: item.discuss_text,\\n            desc: Reply+item.create_date + \\\"·\\\" + icon[item.discuss_type],\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/info\\\",\\n            extra:{\\n                name:item.name,\\n                type:\\\"long_text\\\",\\n                text:item.discuss_text\\n            },\\n            pic_url: item.avatar_url\\n        });\\n    }\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n}\\n\\nsetResult(data);\"},{\"col_type\":\"rich_text\",\"name\":\"查看\",\"path\":\"info\",\"rule\":\"js:\\nsetPageTitle(\\\"查看「\\\"+MY_PARAMS.name+\\\"」\\\")\\nsetResult([{\\n    title: MY_PARAMS.text,\\n    col_type:MY_PARAMS.type\\n}]);\"},{\"col_type\":\"movie_3\",\"name\":\"开发者注册\",\"path\":\"Register\",\"rule\":\"js:\\nsetPageTitle(\\\"开发者注册\\\");\\nconst {\\n    getApi,\\n    htmlTag,\\n    mapColType,\\n    small\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nvar data = [];\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.Password\\\");\\n    clearVar(\\\"Warehouse.Username\\\");\\n    clearVar(\\\"Warehouse.Description\\\");\\n    clearVar(\\\"Warehouse.UserAddress\\\");\\n}));\\naddListener('onRefresh', $.toString(()=>{\\n    putVar(\\\"Warehouse.Wait\\\", \\\"\\\");\\n}));\\ndata.push({\\n    title: '账号',\\n    desc: \\\"请输入账号(必填)\\\",\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('Warehouse.Username', ''),\\n        type: \\\"number\\\",\\n        onChange: 'putVar(\\\"Warehouse.Username\\\",input)'\\n    }\\n}, {\\n    title: '密码',\\n    desc: \\\"请输入密码(必填)\\\",\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('Warehouse.Password', ''),\\n        type: \\\"password\\\",\\n        onChange: 'putVar(\\\"Warehouse.Password\\\",input)'\\n    }\\n});\\nmapColType(data, \\\"line_blank\\\", 1);\\ndata.push({\\n    title: '昵称',\\n    desc: \\\"请输入昵称(必填)\\\",\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('Warehouse.UserAddress', ''),\\n        onChange: 'putVar(\\\"Warehouse.UserAddress\\\",input)'\\n    }\\n}, {\\n    title: '描述',\\n    desc: \\\"说说为什么要注册吧\\\\n(可以增加通过概率,选填)\\\",\\n    col_type: 'input',\\n    extra: {\\n        defaultValue: getVar('Warehouse.Description', ''),\\n        type: \\\"textarea\\\",\\n        onChange: 'putVar(\\\"Warehouse.Description\\\",input)'\\n    }\\n})\\n\\nmapColType(data, \\\"line_blank\\\", 1);\\n\\ndata.push({\\n    title: htmlTag(\\\"b\\\", \\\"注册\\\"),\\n    url: $(getApi(\\\"new_dev\\\")+\\\"#noLoading#\\\").lazyRule((getId, confirm) => {\\n        let username = getVar('Warehouse.Username', \\\"\\\"),\\n            password = getVar('Warehouse.Password', \\\"\\\"),\\n            description = getVar('Warehouse.Description', \\\"\\\"),\\n            name = getVar(\\\"Warehouse.UserAddress\\\", \\\"\\\");\\n        if ([username, password, name].includes(\\\"\\\")) {\\n            return \\\"toast://账号,密码和昵称不能为空\\\";\\n        }\\n        showLoading(\\\"正在提交申请表\\\");\\n        let result = request(input, {\\n            headers: {\\n                'content-type': 'application/json'\\n            },\\n            body: JSON.stringify({\\n                \\\"params\\\": {\\n                    \\\"reason\\\": description,\\n                    \\\"name\\\": name,\\n                    \\\"password\\\": password,\\n                    \\\"qq\\\": username\\n                }\\n            }),\\n            method: 'post'\\n        });\\n        result = JSON.parse(result).result;\\n        hideLoading();\\n        if (result.status !== 0) {\\n            return \\\"toast://\\\" + result.detail;\\n        }\\n        let idresult = JSON.parse(request(getId + \\\"?qq=\\\" + username));\\n        if (idresult.status !== 0) {\\n            return \\\"toast://\\\" + idresult.detail;\\n        }\\n        \\n        return $(\\\"\\\", \\\"输入邮箱验证码\\\\n\\\" + result.detail).input((confirm, id, account) => {\\n            showLoading(\\\"请耐心等待\\\");\\n            try {\\n                let result = request(confirm, {\\n                    headers: {\\n                        'content-type': 'application/json'\\n                    },\\n                    body: JSON.stringify({\\n                        \\\"params\\\": {\\n                            \\\"regist_id\\\": id,\\n                            \\\"yzm\\\": input\\n                        }\\n                    }),\\n                    method: 'POST'\\n                });\\n                result = JSON.parse(result).result;\\n                if (result.status !== 0) {\\n                    hideLoading();\\n                    return \\\"toast://\\\" + result.detail;\\n                } else {\\n                    putVar(\\\"WarehouseUsername\\\", account[0]);\\n                    putVar(\\\"WarehousePassword\\\", account[1]);\\n                    hideLoading();\\n                    back();\\n                    return \\\"toast://成功提交注册注册\\\\n\\\"+result.detail;\\n                }\\n            } catch (e) {\\n                hideLoading();\\n                return \\\"toast://出错了呐\\\";\\n            }\\n        }, confirm, idresult.result, [username, password]);\\n    }, getApi(\\\"new_getId\\\"), getApi(\\\"new_confirm\\\")),\\n    col_type: 'text_center_1'\\n});\\nsetResult(data);\"},{\"col_type\":\"text_1\",\"name\":\"个人资料\",\"path\":\"PersonalData\",\"rule\":\"js:\\nsetPageTitle(\\\"个人资料\\\");\\nvar data=[];\\nconst {\\n    getApi,\\n    getFile,\\n    api\\n} = $.require(\\\"hiker://page/utiliy\\\");\\n\\ndata.push({\\n    col_type:\\\"line_blank\\\"\\n});\\n\\nlet {username,password} = getFile();\\nlet dev = JSON.parse(request(getApi(\\\"user\\\")+MY_PARAMS.id)).result;\\ndata.push({\\n    title:\\\"头像\\\",\\n    desc:dev.avatar,\\n    url:\\\"hiker://page/modify_PersonalData#noHistory##noRecordHistory#\\\",\\n    extra:{\\n        dev:dev,\\n        username:username,\\n        password:password,\\n        Pattern:0\\n    },\\n    col_type:\\\"text_1\\\"\\n});\\n\\n\\ndata.push({\\n    title:\\\"昵称\\\",\\n    desc:dev.name,\\n    url:\\\"hiker://page/modify_PersonalData#noHistory##noRecordHistory#\\\",\\n    extra:{\\n        dev:dev,\\n        username:username,\\n        password:password,\\n        Pattern:1\\n    },\\n    col_type:\\\"text_1\\\"\\n});\\n\\ndata.push({\\n    title:\\\"密码\\\",\\n    url:\\\"hiker://page/modify_PersonalData#noHistory##noRecordHistory#\\\",\\n    extra:{\\n        dev:dev,\\n        username:username,\\n        password:password,\\n        Pattern:2\\n    },\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    col_type:\\\"line_blank\\\"\\n});\\ndata.push({\\n    title:\\\"账号：\\\"+username,\\n    url:\\\"copy://\\\"+username,\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    title:\\\"UID：\\\"+dev.id,\\n    url:\\\"copy://\\\"+dev.id,\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    col_type:\\\"line_blank\\\"\\n});\\ndata.push({\\n    title:\\\"提交云仓库规则\\\",\\n    url:$(\\\"#noLoading#\\\").lazyRule((host)=>{\\n        let code=request(host+\\\"/hikerule/rulelist.json?id=145\\\");\\n        let word=\\\"￥publish￥\\\"+base64Encode(code);\\n        return \\\"rule://\\\"+base64Encode(word);\\n    },api.host),\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    title:\\\"同步提交云仓库账号密码\\\",\\n    url:\\\"rule://\\\"+base64Encode(\\\"￥publish_account￥\\\"+username+\\\"@\\\"+password),\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    col_type:\\\"line_blank\\\"\\n});\\ndata.push({\\n    title:\\\"你一共发布了「\\\"+dev.rule_num+\\\"」条规则\\\",\\n    url:\\\"hiker://empty\\\",\\n    col_type:\\\"text_1\\\"\\n});\\ndata.push({\\n    col_type:\\\"line_blank\\\"\\n});\\nlet user = getFile();\\ndata.push({\\n    title:\\\"注销登录\\\",\\n    url:$(\\\"确认注销登录?\\\").confirm(f => {\\n        f.username=\\\"\\\";\\n        f.password=\\\"\\\";\\n        writeFile('hiker://files/WarehouseUSER.json', JSON.stringify(f));\\n        putVar(\\\"Warehouse.back\\\",\\\"1\\\");\\n        back();\\n        return \\\"toast://已注销\\\";\\n    },user),\\n    col_type:\\\"text_center_1\\\"\\n});\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"更改个人资料\",\"path\":\"modify_PersonalData\",\"rule\":\"js:\\nconst {\\n    getApi,\\n    color,\\n    small,\\n    getFile,\\n    htmlTag\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    dev,\\n    username,\\n    password,\\n    Pattern\\n} = MY_PARAMS;\\nvar data = [];\\nlet path = \\\"?qq=\\\" + username + \\\"&password=\\\" + password;\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.m.petName\\\");\\n    clearVar(\\\"Warehouse.m.avatar\\\");\\n    clearVar(\\\"Warehouse.m.Password.c\\\");\\n    clearVar(\\\"Warehouse.m.Password.x\\\");\\n    clearVar(\\\"Warehouse.m.Password.y\\\");\\n}));\\nfunction m_petName() {\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        col_type: 'input',\\n        desc: \\\"请输入新昵称\\\",\\n        extra: {\\n            titleVisible: false,\\n            defaultValue: getVar('Warehouse.m.petName', '')||dev.name,\\n            onChange: 'putVar(\\\"Warehouse.m.petName\\\",input)'\\n        }\\n    });\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        title: \\\"保存\\\",\\n        url: $(getApi(\\\"modify_name\\\") + path).lazyRule(() => {\\n            let newPetName = getVar('Warehouse.m.petName', '');\\n            if (newPetName == \\\"\\\") {\\n                return \\\"toast://你还什么都没填啊!\\\";\\n            }\\n            let result = request(input + \\\"&name=\\\" + encodeURIComponent(newPetName));\\n            result = JSON.parse(result);\\n            if (result.status === 0) {\\n                back();\\n                return \\\"toast://修改成功\\\";\\n            } else {\\n                return \\\"toast://\\\" + result.detail;\\n            }\\n        }),\\n        col_type: 'text_center_1'\\n    });\\n}\\n\\nfunction m_avatar() {\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        col_type: 'input',\\n        desc: \\\"请输入新的头像链接\\\",\\n        extra: {\\n            titleVisible: false,\\n            defaultValue: getVar('Warehouse.m.avatar', '') || dev.avatar,\\n            onChange: 'putVar(\\\"Warehouse.m.avatar\\\",input)'\\n        }\\n    });\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        title: \\\"保存\\\",\\n        url: $(getApi(\\\"modify_ava\\\") + path).lazyRule(() => {\\n            let newAvatar = getVar('Warehouse.m.avatar', '');\\n            \\n            let result = request(input + \\\"&avatar_url=\\\" + encodeURIComponent(newAvatar));\\n            result = JSON.parse(result);\\n            if (result.status === 0) {\\n                back();\\n                return \\\"toast://修改成功\\\";\\n            } else {\\n                return \\\"toast://\\\" + result.detail;\\n            }\\n        }),\\n        col_type: 'text_center_1'\\n    });\\n}\\n\\nfunction m_pwd() {\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        title:\\\"原密码\\\",\\n        col_type: 'input',\\n        desc: \\\"请输入原密码\\\",\\n        extra: {\\n            type:\\\"password\\\",\\n            defaultValue: getVar('Warehouse.m.Password.y', ''),\\n            onChange: 'putVar(\\\"Warehouse.m.Password.y\\\",input)'\\n        }\\n    });\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        title:\\\"新密码\\\",\\n        col_type: 'input',\\n        desc: \\\"请输入新密码\\\",\\n        extra: {\\n            type:\\\"password\\\",\\n            defaultValue: getVar('Warehouse.m.Password.x', ''),\\n            onChange: 'putVar(\\\"Warehouse.m.Password.x\\\",input)'\\n        }\\n    });\\n    data.push({\\n        title:\\\"重复新密码\\\",\\n        col_type: 'input',\\n        desc: \\\"请重复新密码\\\",\\n        extra: {\\n            type:\\\"password\\\",\\n            titleVisible: false,\\n            defaultValue: getVar('Warehouse.m.Password.c', ''),\\n            onChange: 'putVar(\\\"Warehouse.m.Password.c\\\",input)'\\n        }\\n    });\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    data.push({\\n        title: \\\"保存\\\",\\n        url: $(getApi(\\\"modify_pwd\\\")+path).lazyRule((password,username) => {\\n            let old_password = getVar('Warehouse.m.Password.y', '');\\n            let new_password = getVar('Warehouse.m.Password.x', '');\\n            let new_password_again = getVar('Warehouse.m.Password.c', '');\\n            if (old_password!==password) {\\n                return \\\"toast://原密码错误\\\";\\n            }\\n            if(new_password===\\\"\\\"){\\n                return \\\"toast://请输入新密码\\\";\\n            }\\n            if(new_password!==new_password_again){\\n                return \\\"toast://两次密码不同\\\"\\n            }\\n            let result = request(input + \\\"&new_password=\\\" + new_password+\\\"&new_password_re=\\\"+new_password_again);\\n            result = JSON.parse(result);\\n            if (result.status === 0) {\\n                writeFile(\\\"hiker://files/WarehouseUSER.json\\\",JSON.stringify({\\n                    username:username,\\n                    password:new_password\\n                }));\\n                back();\\n                return \\\"toast://修改成功\\\";\\n            } else {\\n                return \\\"toast://\\\" + result.detail;\\n            }\\n        },password,username),\\n        col_type: 'text_center_1'\\n    });\\n}\\n\\nswitch (Pattern) {\\n    case 0:\\n        setPageTitle(\\\"修改头像\\\");\\n        m_avatar();\\n        break;\\n    case 1:\\n        setPageTitle(\\\"修改昵称\\\");\\n        m_petName();\\n        break;\\n    case 2:\\n        setPageTitle(\\\"修改密码\\\");\\n        m_pwd();\\n        break;\\n}\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"编辑规则备注\",\"path\":\"set_rule_notes\",\"rule\":\"js:\\nlet data = [];\\nconst {\\n    getApi\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    id,\\n    username,\\n    password,\\n    name\\n} = MY_PARAMS;\\nsetPageTitle(\\\"备注「\\\"+name+\\\"」\\\");\\naddListener('onClose',\\\"clearVar('Warehouse.rule.notes', '')\\\");\\nlet notes=request(getApi(\\\"get_rule_note\\\")+id);\\nnotes=JSON.parse(notes).result;\\ndata.push({\\n    desc: \\\"规则备注......\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('Warehouse.rule.notes', '')||notes||\\\"\\\",\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        onChange: 'putVar(\\\"Warehouse.rule.notes\\\",input)'\\n    }\\n});\\n\\ndata.push({\\n    title: \\\"保存\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: $(getApi(\\\"set_rule_note\\\") + id).lazyRule((username, password) => {\\n        let notes = getVar('Warehouse.rule.notes', '');\\n        let result = request(input, {\\n            headers: {\\n                'content-type': 'application/json'\\n            },\\n            body: JSON.stringify({\\n                \\\"params\\\": {\\n                    \\\"qq\\\": username,\\n                    \\\"password\\\": password,\\n                    \\\"note\\\":notes\\n                }\\n            }),\\n            method: 'POST'\\n        });\\n        result = JSON.parse(result).result;\\n        if (result.status !== 0) {\\n            return \\\"toast://\\\" + result.detail;\\n        }\\n        back(false);\\n        return \\\"toast://修改成功\\\";\\n    }, username, password)\\n});\\nsetResult(data);\"},{\"col_type\":\"line\",\"name\":\"评论列表\",\"path\":\"Comment\",\"rule\":\"js:\\nsetPageTitle(\\\"评论列表\\\");\\nconst {\\n    api\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet data = [];\\nlet {\\n    totalSum,\\n    id,\\n    no_active,\\n    username,\\n    password\\n} = MY_PARAMS;\\nlet page = parseInt(MY_URL.split(\\\"#\\\")[1]);\\nlet discuss_type = getVar(\\\"Warehouse.comment.discuss_type\\\", \\\"\\\");\\nif (page === 1) {\\n    data.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    addListener('onClose', $.toString(() => {\\n        putVar(\\\"Warehouse.comment.discuss_type\\\", \\\"\\\");\\n    }));\\n    data.push({\\n        title: \\\"全部\\\" + (discuss_type === \\\"\\\" ? \\\"◉\\\" : \\\"○\\\"),\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            putVar(\\\"Warehouse.comment.discuss_type\\\", \\\"\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: 'text_4'\\n\\n    });\\n    data.push({\\n        title: \\\"👍赞\\\" + (discuss_type === \\\"good\\\" ? \\\"◉\\\" : \\\"○\\\"),\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            putVar(\\\"Warehouse.comment.discuss_type\\\", \\\"good\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: 'text_4'\\n\\n    });\\n    data.push({\\n        title: \\\"👎踩\\\" + (discuss_type === \\\"bad\\\" ? \\\"◉\\\" : \\\"○\\\"),\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            putVar(\\\"Warehouse.comment.discuss_type\\\", \\\"bad\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: 'text_4'\\n    });\\n    data.push({\\n        title: \\\"回复\\\" + (discuss_type === \\\"reply\\\" ? \\\"◉\\\" : \\\"○\\\"),\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            putVar(\\\"Warehouse.comment.discuss_type\\\", \\\"reply\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: 'text_4'\\n    });\\n}\\n\\n\\nlet icon = {\\n    \\\"good\\\": \\\"👍\\\",\\n    \\\"bad\\\": \\\"👎\\\",\\n    \\\"reply\\\":\\\"开发者🗣\\\"\\n}\\nlet control=(pid,active)=>void 0;\\nif(no_active){\\n    control=function(pid,active){\\n        data.push({\\n            title:active?\\\"隐藏评论\\\":\\\"展示评论\\\",\\n            url:$(api.dis_dev_control+pid+\\\"?qq=\\\" + username + \\\"&password=\\\" + password+\\\"#noLoading#\\\").lazyRule(()=>{\\n                let result=JSON.parse(request(input));\\n                refreshPage(false)\\n                return \\\"toast://\\\"+result.detail;\\n            }),\\n            col_type:\\\"text_2\\\"\\n        });\\n        data.push({\\n            title:\\\"删除评论\\\",\\n            url:$(\\\"确认删除该评论?\\\").confirm((input)=>{\\n                let result=JSON.parse(request(input));\\n                refreshPage(false)\\n                return \\\"toast://\\\"+result.detail;\\n            },api.dis_dev_control+pid+\\\"?qq=\\\" + username + \\\"&password=\\\" + password+\\\"&delete=1\\\"),\\n            col_type:\\\"text_2\\\"\\n        });\\n        data.push({\\n            col_type:\\\"line\\\"\\n        });\\n        data.push({\\n            col_type:\\\"line\\\"\\n        });\\n    }\\n}\\nif (totalSum === 0) {\\n    data.push({\\n        title: \\\"<h5 style='text-align:center'>一条评论也没有，快来抢沙发吧！</h5>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n} else {\\n    let commentList = JSON.parse(request(api.dis_get + id + \\\"?limit=5&page=\\\" + page + \\\"&no_active=\\\" + no_active + \\\"&discuss_type=\\\" + discuss_type)).result;\\n    for (let item of commentList) {\\n        let Reply = item.discuss_type===\\\"reply\\\"&&item.reply_to_name!==false&&item.reply_to_id!==false?\\\"‘‘回复@\\\"+item.reply_to_name+\\\" #\\\"+item.discuss_id+\\\"’’\\\\n\\\":\\\"\\\";\\n        data.push({\\n            title: item.name + \\\"&nbsp;&nbsp;<font color='gray'><small>#\\\" + item.id + \\\"</small><font>\\\",\\n            col_type: \\\"avatar\\\",\\n            //url: no_active?\\\"hiker://page/Reply\\\":\\\"toast://\\\" + item.qq,\\n\\t\\t       url:no_active?\\\"hiker://page/Reply\\\":\\\"mqqwpa://im/chat?chat_type=wpa&uin=\\\"+item.qq,\\n            extra:{\\n                ruleId: id,\\n                name: item.name,\\n                password: password,\\n                username: username,\\n                replyId:item.id\\n            },\\n            pic_url: item.avatar_url\\n        });\\n        data.push({\\n            title: item.discuss_text,\\n            desc: Reply+item.create_date + \\\"·\\\" + icon[item.discuss_type],\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/info\\\",\\n            extra:{\\n                name:item.name,\\n                type:\\\"long_text\\\",\\n                text:item.discuss_text\\n            },\\n            pic_url: item.avatar_url\\n        });\\n        control(item.id,item.active);\\n    }\\n    if (commentList.length === 0) {\\n        data.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n    }\\n}\\n\\nsetResult(data)\"},{\"col_type\":\"movie_3\",\"name\":\"发表评论\",\"path\":\"MakeAcomment\",\"rule\":\"js:\\nlet data = [];\\nconst {\\n    api,\\n    getFile\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    id,\\n    name,\\n    defaultType\\n} = MY_PARAMS;\\nlet user=getFile().user||[\\\"\\\",\\\"\\\"];\\n\\nsetPageTitle(\\\"评论(\\\" + name + \\\")\\\");\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.comment.type\\\");\\n    clearVar(\\\"Warehouse.comment.text\\\");\\n    clearVar(\\\"Warehouse.comment.qq\\\");\\n    refreshPage(false);\\n}));\\nlet type = getVar(\\\"Warehouse.comment.type\\\") || defaultType||\\\"good\\\";\\ndata.push({\\n    desc: \\\"评论......\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('Warehouse.comment.text', ''),\\n        type: \\\"textarea\\\",\\n        height:7,\\n        onChange: 'putVar(\\\"Warehouse.comment.text\\\",input)'\\n    }\\n});\\ndata.push({\\n    title:\\\"账号：\\\"+(user[0]||\\\"\\\"),\\n    desc:\\\"验证码：\\\"+(user[1]||\\\"\\\"),\\n    url:\\\"hiker://page/Userregistration\\\",\\n    col_type: 'text_1',\\n    \\n});\\n\\ndata.push({\\n    title:  (type === \\\"good\\\" ? \\\"◉\\\" : \\\"○\\\")+\\\" 👍\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        putVar(\\\"Warehouse.comment.type\\\", \\\"good\\\");\\n        refreshPage();\\n        return \\\"hiker://empty\\\";\\n    }),\\n    col_type: 'text_2'\\n\\n});\\ndata.push({\\n    title:  (type === \\\"bad\\\" ? \\\"◉\\\" : \\\"○\\\")+\\\" 👎\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        putVar(\\\"Warehouse.comment.type\\\", \\\"bad\\\");\\n        refreshPage();\\n        return \\\"hiker://empty\\\";\\n    }),\\n    col_type: 'text_2'\\n});\\n\\ndata.push({\\n    title: \\\"提交\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: $(api.dis_new + id).lazyRule((Account) => {\\n        let text = getVar('Warehouse.comment.text', '');\\n        let [qq,auth_code] = Account;\\n        let type = getVar('Warehouse.comment.type') || 'good';\\n        qq=qq||\\\"\\\";\\n        auth_code=auth_code||\\\"\\\";\\n        if(qq==\\\"\\\"||auth_code==\\\"\\\"){\\n            return \\\"toast://未登录账号\\\";\\n        }\\n        if(text==\\\"\\\"){\\n            return \\\"toast://你还什么都没写啊\\\";\\n        }\\n        function r(p) {\\n            let result = request(input, {\\n                headers: {\\n                    'content-type': 'application/json'\\n                },\\n                body: JSON.stringify(p),\\n                method: 'POST'\\n            });\\n            return JSON.parse(result).result;\\n        }\\n        let p = {\\n            \\\"params\\\": {\\n                \\\"discuss_text\\\": text,\\n                \\\"qq\\\": qq,\\n                \\\"discuss_type\\\": type,\\n                \\\"auth_code\\\": auth_code\\n            }\\n        }\\n        let result = r(p);\\n        if(result.status===0){\\n            back(false);\\n        }\\n        return \\\"toast://\\\"+result.detail;\\n\\n    },user)\\n});\\n\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"伪用户注册\",\"path\":\"Userregistration\",\"rule\":\"js:\\nconst {\\n    api,\\n    getFile,\\n    getUserDate\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet data = [];\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nsetPageTitle(\\\"用户列表管理\\\");\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.m.qq\\\");\\n    clearVar(\\\"Warehouse.m.yzm\\\");\\n}));\\nlet user = getFile();\\nlet userName = user.user || [\\\"\\\"];\\nuserName = userName[0];\\ndata.push({\\n    title: \\\"““””<big>(添加/验证)账号</big>\\\",\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://empty\\\"\\n});\\n\\ndata.push({\\n    title: \\\"获取\\\",\\n    col_type: 'input',\\n    desc: \\\"请输入qq\\\",\\n    url: $.toString((a, b) => {\\n        let qq = input;\\n        if (qq == \\\"\\\") {\\n            return \\\"toast://你还什么都没填啊!\\\";\\n        }\\n        showLoading(\\\"获取中...\\\")\\n        return $(\\\"#noLoading#\\\").lazyRule((qq, a, b) => {\\n        try {\\n            let result = request(a, {\\n                headers: {\\n                    'content-type': 'application/json'\\n                },\\n                body: JSON.stringify({\\n                    \\\"params\\\": {\\n                        \\\"qq\\\": qq\\n                    }\\n                }),\\n                method: 'POST'\\n            });\\n            result = JSON.parse(result).result;\\n            if (result.status === 0) {\\n                hideLoading();\\n                return \\\"toast://\\\" + result.detail;\\n            } else {\\n                let result2 = JSON.parse(request(b + \\\"?qq=\\\" + qq));\\n                hideLoading();\\n                return \\\"toast://\\\" + result2.detail;\\n            }\\n        } catch (e) {\\n            hideLoading();\\n            throw e;\\n        }\\n        }, qq, a, b);\\n\\n    }, api.dis_new_user, api.dis_verify),\\n    extra: {\\n        type: \\\"number\\\",\\n        defaultValue: getVar('Warehouse.m.qq', '') || userName,\\n        onChange: 'putVar(\\\"Warehouse.m.qq\\\",input)'\\n    }\\n});\\n\\ndata.push({\\n    col_type: 'input',\\n    desc: \\\"请输入验证码\\\",\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('Warehouse.m.yzm', ''),\\n        onChange: 'putVar(\\\"Warehouse.m.yzm\\\",input)'\\n    }\\n});\\ndata.push({\\n    col_type: 'rich_text',\\n    title: \\\"<small>提示：1.每天只能获取5次验证码.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.<s>验证码有效期持续一周左右</s>(暂时不会，忘记验证码可通过QQ号获取)</small>\\\"\\n});\\n\\nlet userList = getUserDate();\\ndata.push({\\n    title: \\\"验证/登录\\\",\\n    url: $(\\\"确定保存，验证码填错，无法评论哦\\\").confirm((f, l, login) => {\\n        let qq = getVar('Warehouse.m.qq', '');\\n        let yzm = getVar('Warehouse.m.yzm', '');\\n        if (qq == \\\"\\\" || yzm == \\\"\\\") {\\n            return \\\"toast://qq或验证码为空\\\";\\n        }\\n        let result = request(login, {\\n            headers: {\\n                'content-type': 'application/json'\\n            },\\n            body: JSON.stringify({\\n                \\\"params\\\": {\\n                    \\\"qq\\\": qq,\\n                    \\\"auth_code\\\": yzm\\n                }\\n            }),\\n            method: 'POST'\\n        });\\n        result = JSON.parse(result).result;\\n        if (result.status === 0) {\\n            f.user = [qq, yzm];\\n            writeFile(\\\"hiker://files/WarehouseUSER.json\\\", JSON.stringify(f));\\n            let index = l.findIndex(item => item[0] === qq);\\n            if (index > -1) {\\n                l.splice(index, 1, [qq, yzm]);\\n            } else if (l.length < 6) {\\n                l.push([qq, yzm]);\\n            } else {\\n                l.splice(0, 1);\\n                l.push([qq, yzm]);\\n            }\\n            writeFile(\\\"hiker://files/WarehouseUSERA.json\\\", JSON.stringify(l));\\n            back();\\n            return \\\"toast://验证成功\\\";\\n        }\\n        return \\\"toast://\\\" + result.detail;\\n    }, user, userList, api.dis_login),\\n    col_type: 'text_center_1'\\n});\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\ndata.push({\\n    title: \\\"““””<big>账号列表</big>\\\\t\\\\t\\\\t<small>(保留5条记录)</small>\\\",\\n    col_type: \\\"text_1\\\",\\n    url: \\\"hiker://empty\\\"\\n});\\nuserList.reverse();\\n\\nfor (let item of userList) {\\n    data.push({\\n        title: \\\"账号：\\\" + item[0] + (userName === item[0] ? \\\"\\\\t\\\\t\\\\t““[当前账号]””\\\" : \\\"\\\"),\\n        desc: \\\"验证码：\\\" + item[1],\\n        url: $(\\\"是否切换为该[\\\" + item[0] + \\\"]账号\\\").confirm((f, item) => {\\n            f.user = item;\\n            writeFile(\\\"hiker://files/WarehouseUSER.json\\\", JSON.stringify(f));\\n            back();\\n            return \\\"toast://切换成功\\\";\\n        }, user, item),\\n        col_type: \\\"text_1\\\"\\n    });\\n}\\ndata.push({\\n    col_type: \\\"line_blank\\\"\\n});\\ndata.push({\\n    title: \\\"退出账号\\\",\\n    url: $(\\\"确认退出登录状态\\\").confirm((f) => {\\n        f.user = [];\\n        writeFile(\\\"hiker://files/WarehouseUSER.json\\\", JSON.stringify(f));\\n        back();\\n        return \\\"toast://退出成功\\\";\\n    }, user),\\n    col_type: 'text_center_1'\\n});\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"列表排序算法\",\"path\":\"sort\",\"rule\":\"js:\\n/* 规则列表排序 [ UP、NEW、无更新 ] 顺序 */\\n/* 归并排序 Start */\\nfunction mergeSort(arr) {\\n    var len = arr.length;\\n    if (len < 2) {\\n        return arr;\\n    }\\n    var middle = Math.floor(len / 2),\\n        left = arr.slice(0, middle),\\n        right = arr.slice(middle);\\n    return merge(mergeSort(left), mergeSort(right));\\n}\\nfunction merge(left, right) {\\n    var result = [];\\n    var isThisVersionList = [];\\n\\n    while (left.length > 0 && right.length > 0) {\\n        if (left[0].title.includes(\\\"🆙\\\")) {\\n            result.push(left.shift());\\n        } else if (right[0].title.includes(\\\"🆙\\\")) {\\n            result.push(right.shift());\\n        } else if (left[0].title.includes(\\\"🆕\\\")) {\\n            result.push(left.shift());\\n        } else if (right[0].title.includes(\\\"🆕\\\")) {\\n            result.push(right.shift());\\n        } else {\\n            isThisVersionList.push(left.shift());\\n            isThisVersionList.push(right.shift());\\n        }\\n    }\\n\\n    while (isThisVersionList.length) result.push(isThisVersionList.shift());\\n\\n    while (left.length)\\n        result.push(left.shift());\\n\\n    while (right.length)\\n        result.push(right.shift());\\n\\n    return result;\\n}\\n$.exports.mergeSort = mergeSort;\\n/* 归并排序 End */\"},{\"col_type\":\"icon_2_round\",\"name\":\"全部公开规则\",\"path\":\"AllPublicRule\",\"rule\":\"js:\\n    const {\\n        api,\\n        localRuleVer,\\n        getApi\\n    } = $.require(\\\"hiker://page/utiliy\\\");\\nconst {\\n    mergeSort\\n} = $.require(\\\"hiker://page/sort\\\");\\nlet dataType = getVar(\\\"Warehouse.type\\\", \\\"\\\");\\nlet order = getVar(\\\"Warehouse.order\\\", \\\"0\\\");\\nlet sort = getVar(\\\"Warehouse.sort\\\", \\\"0\\\");\\nlet good = getVar(\\\"Warehouse.good\\\", \\\"\\\");\\nlet page = MY_URL.split(\\\"#\\\")[1] || 1;\\nlet ruleList = JSON.parse(request(api.all_rule + \\\"?data_type=\\\" + dataType + \\\"&page=\\\" + page + \\\"&limit=20&order=\\\" + order + \\\"&sort=\\\" + sort+ \\\"&is_good=\\\" + good)).result;\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.type\\\");\\n    clearVar(\\\"Warehouse.order\\\");\\n    clearVar(\\\"Warehouse.sort\\\");\\n    clearVar(\\\"Warehouse.good\\\");\\n    clearVar(\\\"Warehouse.back\\\");\\n}));\\nlet data = [];\\nif (getVar(\\\"Warehouse.back\\\") === \\\"1\\\") {\\n    back();\\n}\\nfunction tab(arr, type, contrast) {\\n    for (let item of arr) {\\n        data.push({\\n            title: item[1] === contrast ? \\\"““\\\" + item[0] + \\\"””\\\" : item[0],\\n            url: $(\\\"#noLoading#\\\").lazyRule((key, type) => {\\n                putVar(type, key);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\";\\n            }, item[1], type),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    data.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n}\\nif (page === \\\"1\\\") {\\n    tab([\\n        [\\\"全部\\\", \\\"\\\"],\\n        [\\\"小程序\\\", \\\"home_rule_url\\\"],\\n        [\\\"提交云仓库规则\\\", \\\"publish\\\"],\\n        [\\\"网页插件\\\", \\\"js_url\\\"],\\n        [\\\"静态页面\\\", \\\"html\\\"],\\n        [\\\"主题\\\", \\\"config\\\"]\\n    ], \\\"Warehouse.type\\\", dataType);\\n    tab([\\n        [\\\"时间\\\", \\\"0\\\"],\\n        [\\\"ID\\\", \\\"1\\\"],\\n        [\\\"好评度\\\", \\\"2\\\"],\\n        [\\\"差评度\\\", \\\"3\\\"],\\n        [\\\"回复数\\\", \\\"4\\\"]\\n    ], \\\"Warehouse.order\\\", order);\\n    tab([\\n        [\\\"倒序\\\", \\\"0\\\"],\\n        [\\\"正序\\\", \\\"1\\\"]\\n    ], \\\"Warehouse.sort\\\", sort);\\n    tab([\\n        [\\\"不论\\\", \\\"\\\"],\\n        [\\\"优质\\\", \\\"1\\\"]\\n    ], \\\"Warehouse.good\\\", good);\\n    data.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(name => \\\"hiker://search?s=\\\" + input + \\\"&rule=\\\" + name, MY_RULE.title),\\n        col_type: \\\"input\\\",\\n        desc: \\\"搜索全部规则\\\"\\n    });\\n}\\n\\nlet homeList = JSON.parse(request(api.home));\\nlet mRuleList = [];\\nfor (var item of ruleList) {\\n    var name = item.name;\\n    if (item.is_tap) {\\n        let location = JSON.parse(request(getApi(\\\"ruleListJson\\\") + \\\"?id=\\\" + item.id));\\n        item.id = location.id;\\n        item.name = location.name;\\n        item.author = location.author;\\n        item.data_type = location.data_type;\\n        item.ver = location.ver\\n    }\\n    item.version = item.ver;\\n    let label = \\\"\\\",\\n        lver = -2;\\n    if (item.is_json && item.data_type === \\\"home_rule_url\\\") {\\n        lver = localRuleVer(homeList, item);\\n        if (lver === -1) {\\n            label = \\\"🆕\\\";\\n        } else if (lver < item.ver) {\\n            label = \\\"🆙\\\";\\n        }\\n    }\\n    mRuleList.push({\\n        title: label + name,\\n        url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#\\\",\\n        extra: {\\n            lver: lver,\\n            id: item.id,\\n            isAll:true\\n        },\\n        pic_url: item.pic,\\n    })\\n}\\n/* 归并排序 Start */\\n//mRuleList = mergeSort(mRuleList);\\n/* 归并排序 End */\\ndata.push.apply(data, mRuleList)\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"回复\",\"path\":\"Reply\",\"rule\":\"js:\\nlet data = [];\\nconst {\\n    api\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    replyId,\\n    ruleId,\\n    name,\\n    password,\\n    username\\n} = MY_PARAMS;\\n\\n\\nsetPageTitle(\\\"回复(\\\" + name + \\\")\\\");\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"Warehouse.comment.text\\\");\\n    refreshPage(false);\\n}));\\n\\ndata.push({\\n    desc: \\\"回复......\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getVar('Warehouse.comment.text', ''),\\n        type: \\\"textarea\\\",\\n        height:7,\\n        onChange: 'putVar(\\\"Warehouse.comment.text\\\",input)'\\n    }\\n});\\n\\n\\ndata.push({\\n    title: \\\"提交\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: $(api.dis_reply + ruleId).lazyRule((password, username, ruleId) => {\\n        let text = getVar('Warehouse.comment.text', '');\\n        if (password == \\\"\\\" || username == \\\"\\\") {\\n            return \\\"toast://未登录账号\\\";\\n        }\\n        if (text == \\\"\\\") {\\n            return \\\"toast://你还什么都没写啊\\\";\\n        }\\n        let result = request(input, {\\n            headers: {\\n                'content-type': 'application/json'\\n            },\\n            body: JSON.stringify({\\n                \\\"params\\\": {\\n                    \\\"discuss_text\\\": text,\\n                    \\\"qq\\\": username,\\n                    \\\"password\\\": password,\\n                    \\\"discuss_id\\\": ruleId\\n                }\\n            }),\\n            method: 'POST'\\n        });\\n        result = JSON.parse(result).result;\\n        if (result.status === 0) {\\n            back(false);\\n        }\\n        return \\\"toast://\\\" + result.detail;\\n\\n    }, password, username, replyId)\\n});\\n\\nsetResult(data);\"},{\"col_type\":\"movie_3\",\"name\":\"我的回复\",\"path\":\"MyReply\",\"rule\":\"js:\\nconst {\\n    api\\n} = $.require(\\\"hiker://page/utiliy\\\");\\nlet {\\n    auth_code,\\n    qq\\n} = MY_PARAMS;\\nlet page = parseInt(MY_URL.split(\\\"#\\\")[1]);\\nlet data=[];\\nlet commentList = JSON.parse(request(api.dis_get_reply + \\\"?limit=5&page=\\\" + page + \\\"&qq=\\\" + qq + \\\"&auth_code=\\\" + auth_code)).result;\\nif (commentList.length === 0) {\\n    data.push({\\n        title: \\\"<h5 style='text-align:center'>别拉了一条也不剩了</h5>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n} else {\\n    for (let item of commentList) {\\n        data.push({\\n            title: item.name + \\\"&nbsp;&nbsp;<font color='gray'><small>#\\\" + item.id + \\\"</small><font>\\\",\\n            col_type: \\\"avatar\\\",\\n            url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#\\\",\\n            extra: {\\n                lver: \\\"回复进入不支持查看\\\",\\n                id: item.rule_id[0]\\n            },\\n            pic_url: item.avatar_url\\n        });\\n        data.push({\\n            title: item.discuss_text,\\n            desc: item.create_date + \\\"·\\\"+item.rule_id[1]+\\\"·\\\"+\\\"开发者🗣\\\",\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/info\\\",\\n            extra:{\\n                name:item.name,\\n                type:\\\"long_text\\\",\\n                text:item.discuss_text\\n            },\\n            pic_url: item.avatar_url\\n        });\\n    }\\n    \\n}\\nsetResult(data);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"更多分享\",\"path\":\"moreShare\",\"rule\":\"js:\\n    addListener('onClose', $.toString(()=>{\\n        clearVar(\\\"house.upload_code\\\");\\n    }));\\nconst {color,small,api, getFile} = $.require(\\\"hiker://page/utiliy\\\");\\nlet houseFile = getFile||false;\\nlet put_url = api.host+'/hikerule/dev/put';\\nif(!houseFile){\\n    setItem('is_house_vip', 'false');\\n}\\nlet house_data = houseFile();\\n// log(house_data.username+'-'+house_data.password);\\nvar canup = house_data.username.length >= 6 && house_data.password.length > 2;\\nlog('可以上传?'+canup);\\nlet d = [];\\nlet file_type = [{name:'静态文件',value:'html'},{name:'网页插件',value:'js_url'},{name:'主页配置',value:'config'}]; //上传类型\\nlet file_redirect = [{name:'本地',value:'false'},{name:'直链302',value:'true'}]; //是否重定向\\nlet file_ua = [{name:'电脑',value:'pc'},{name:'手机',value:'mobile'}];\\nlet file_type_title = file_type.map((item) => {\\n    let name = getItem('house.file_type','静态文件');\\n    if(item.name===name){\\n        return '👉'+item.name;\\n    }else{\\n        return item.name;\\n    }\\n});\\nlet file_redirect_title = file_redirect.map((item) => {\\n    let name = getItem('house.file_redirect','本地');\\n    if(item.name===name){\\n        return '👉'+item.name;\\n    }else{\\n        return item.name;\\n    }\\n});\\nlet file_ua_title = file_ua.map((item) => {\\n    let name = getItem('house.file_ua','电脑');\\n    if(item.name===name){\\n        return '👉'+item.name;\\n    }else{\\n        return item.name;\\n    }\\n});\\nd.push({col_type: 'x5_webview_single', extra: {js: 'console.log(\\\"我加载了\\\")'}});\\nd.push({\\n    title: '获取',\\n    desc: \\\"文件路径,支持hiker,file,http,主题\\\",\\n    extra: {\\n        onChange: \\\"putVar('house.web_url',input)\\\",\\n        titleVisible: true,\\n        id:'filePath',\\n        defaultValue:getVar('house.web_url')\\n    },\\n    url:$.toString(() => {\\n        let input = getVar('house.web_url','');\\n        if(input.length<2){\\n            return 'toast://链接不可以为空'\\n        } else if(/^hiker:|^file:|^http:|^https:|^\\\\/storage\\\\/|^\\\\/sdcard\\\\//.test(input)){\\n            if(/^\\\\/storage\\\\/|^\\\\/sdcard\\\\//.test(input)){\\n                input = 'file://'+input;\\n            }\\n            log('正常链接:'+input);\\n            let ua = getItem('house.file_ua')==='电脑'?'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36':'Mozilla/5.0 (Linux; Android 9; MI 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36';\\n            let web_url_arr = input.split(';');\\n            let web_url = web_url_arr[0];\\n            let headers = {\\n                'Referer':'https://blog.csdn.net',\\n                'User-Agent':ua,\\n                'Accept':'application/json, text/javascript, */*; q=0.01',\\n                'Accept-Language':'zh-CN',\\n            };\\n            if(web_url_arr.length>=3&&web_url_arr[2].length>2){ //设置编码\\n                headers['content-type'] = 'charset='+web_url_arr[2].toUpperCase();\\n            }\\n            let params = {headers:headers,withHeaders:false,redirect:false};\\n            if(web_url_arr.length>=2&&web_url_arr[1].length>2){ // 设置请求方法\\n                params['method'] = web_url_arr[1].toUpperCase();\\n            }\\n            log('开始获取源码');\\n            try {\\n                /*\\n                requestAsync(web_url,params,function (key,code) {\\n                    let back_code = code;\\n                    if(back_code.length>20){\\n                        putVar('house.upload_code',back_code);\\n                        refreshPage(true);\\n                        return 'toast://源码已获取,并部分插入到文本区域'\\n                    }else{\\n                        return 'toast://错误，本次获取到空文本，疑似你没有此文件!';\\n                    }\\n                });\\n                */\\n                let back_code = getItem('house.file_ua')==='电脑'?fetch(web_url,params):request(web_url,params);\\n                if(back_code.length>20){\\n                    putVar('house.upload_code',back_code);\\n                    refreshPage(true);\\n                    return 'toast://源码已获取,并部分插入到文本区域'\\n                }else{\\n                    return 'toast://错误，本次获取到空文本，疑似你没有此文件!';\\n                }\\n            }catch (e) {\\n                log(e.message);\\n                return 'toast://发生了错误:\\\\n'+e.message;\\n            }\\n        }else if(/主题￥|元素￥/.test(input)){\\n            log('主题链接');\\n            let web_url_arr = input.split('￥');\\n            let web_url = web_url_arr[web_url_arr.length-1];\\n            let back_code = parsePaste(web_url);\\n            if(back_code.length>20) {\\n                putVar('house.upload_code',back_code);\\n                refreshPage(true);\\n                return 'toast://源码已获取,并部分插入到文本区域'\\n            }else{\\n                return 'toast://错误，本次获取返回为:\\\\n'+back_code;\\n            }\\n        }else{\\n            return 'toast://非法链接:\\\\n'+getVar('house.web_url');\\n        }\\n    }),\\n    col_type: \\\"input\\\"\\n});\\nd.push({\\n    title: \\\"选择文件路径\\\",\\n    url:$('#noLoading#').lazyRule(()=>{\\n        /*\\n        let fp = 'https://gitcode.net/qq_32394351/dr/-/raw/master/js/fileSelect.js';\\n        let f = require(fp);\\n        */\\n        let fp=config.lib.fileSelect;\\n        let f=$.rc(fp);\\n        return f.fileSelectionUri({\\n            callback: $.toString(() => {\\n                let target = findItem(\\\"filePath\\\").extra;\\n                updateItem(\\\"filePath\\\", {\\n                    extra: Object.assign(target, {\\n                        defaultValue: PATH\\n                    })\\n                });\\n                putVar('house.web_url',PATH);\\n                return true;\\n            }),\\n            onClickType:'confirm',\\n            fileType: \\\".js|.txt|.hiker|.json|.html\\\",\\n            pattern: 0,\\n            requireUrl:fp,\\n            initialPath:getPath('hiker://files/rules/dzHouse/').slice(7),\\n            memory:'true',\\n        });\\n    }),\\n    col_type: \\\"text_center_1\\\",\\n});\\nd.push({\\n    title:'上传类型',\\n    desc:'上传文件的类型,当前为:'+color(getItem('house.file_type','静态文件'),'#ff7000'),\\n    col_type:'text_1',\\n    url:$(file_type_title,2).select(() => {\\n        setItem('house.file_type',input.replace('👉',''));\\n        refreshPage(true);\\n        return 'toast://你选择了:'+input;\\n    })\\n});\\n\\nd.push({\\n    title:'文件定位',\\n    desc:'文件是否属于重定向,当前为:'+color(getItem('house.file_redirect','本地'),'#ff7000'),\\n    col_type:'text_1',\\n    url:$(file_redirect_title,2).select(() => {\\n        setItem('house.file_redirect',input.replace('👉',''));\\n        refreshPage(true);\\n        return 'toast://你选择了:'+input;\\n    })\\n});\\n\\nd.push({\\n    title:'设备UA',\\n    desc:'发起网页请求头标识,当前为:'+color(getItem('house.file_ua','电脑'),'#ff7000'),\\n    col_type:'text_1',\\n    url:$(file_ua_title,2).select(() => {\\n        setItem('house.file_ua',input.replace('👉',''));\\n        refreshPage(true);\\n        return 'toast://你选择了:'+input;\\n    })\\n});\\nfunction compare(name) {\\n    return function(item) {\\n        return item.name === name;\\n    }\\n}\\nd.push({\\n    title:'🗄️环境',\\n    col_type:'flex_button',\\n    url:$().lazyRule((file_type,compare)=>{\\n        log('查看环境变量');\\n        try {\\n            let up_code = getVar('house.upload_code','');\\n            let ftype =  file_type.filter(compare(getItem('house.file_type','静态文件')))[0].value;\\n            let redirect = getItem('house.file_redirect','本地')!=='本地';\\n            let code = !redirect?up_code:input;\\n            let env = {\\n                web_url:getVar('house.web_url',''),\\n                device:getItem('house.file_ua','电脑'),\\n                ftype:ftype||\\\"\\\",\\n                redirect:redirect,\\n                code:code.substring(0,40)||\\\"\\\",\\n            }\\n            log(env);\\n            return 'toast://'+JSON.stringify(env);\\n            // alert(JSON.stringify(env));\\n        }catch (e) {\\n            return 'toast://'+e.message;\\n            // alert(e.message);\\n        }\\n    },file_type,compare)\\n});\\n\\nd.push({\\n    title:'📃教程',\\n    col_type:'flex_button',\\n    url:$().x5Rule(()=>{\\n        let msg = '欢迎使用开发者更多分享工具\\\\n1.输入网址为本地文件路径,hiker://或者file://开头\\\\n2.点击网址输入栏后面的按钮\\\\n3.看文本预览区是否正确\\\\n4.点击上传按钮提交到仓库';\\n        alert(msg);\\n    })\\n});\\n\\nd.push({\\n    title:'🗑️清空',\\n    col_type:'flex_button',\\n    url:$().lazyRule(()=>{\\n        clearVar('house.upload_code');\\n        refreshPage(true);\\n        return 'toast://已清除预览区域内容'\\n    })\\n});\\n\\nd.push({\\n    title:'📲示例',\\n    col_type:'flex_button',\\n    url:$().lazyRule(()=>{\\n        let demo_code = getItem('house.demo','0');\\n        if(demo_code=='0'){\\n            putVar('house.web_url','hiker://files/rules/dzHouse/html/资源网书签.html');\\n            demo_code = parseInt(demo_code)+1;\\n            setItem('house.demo',demo_code+'');\\n        }else{\\n            putVar('house.web_url','file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/资源网书签.html');\\n            setItem('house.demo','0');\\n        }\\n        refreshPage(true);\\n        return 'toast://已设置示例地址'\\n    })\\n});\\n\\nd.push({\\n    title:'📤上传',\\n    col_type:'flex_button',\\n    url:$().lazyRule((canup,house_data,put_url,file_type) =>{\\n        function compare(name) {\\n            return function(item) {\\n                return item.name === name;\\n            }\\n        }\\n        const {getNowFormatDate}=$.require(\\\"hiker://page/utiliy\\\");\\n        let up_code = getVar('house.upload_code','');\\n        if(up_code.length < 2){\\n            return 'toast://源码区无内容，请先访问一个静态页面'\\n        }\\n        if(!canup){\\n            return 'toast://你不是开发者，没有提交到仓库的权利!'\\n        }\\n        let input = getVar('house.web_url','');\\n        let web_url = input.split(';')[0];\\n        let fileName = '';\\n        if(/^hiker:|^file:|^http:|^https:|^\\\\/storage\\\\/|^\\\\/sdcard\\\\//.test(web_url)){\\n            fileName = web_url.split('/')[web_url.split('/').length-1];\\n        }else if(/主题￥|元素￥/.test(input)){\\n            let bkarr = up_code.split('￥');\\n            if(bkarr.length<3){\\n                return 'toast://云剪贴板内容有误'\\n            }\\n            switch (bkarr[1]) {\\n                case 'my_home_theme':\\n                    fileName = up_code.split('「')[1].split('」')[0];\\n                    break;\\n                case 'my_home_single':\\n                    fileName = up_code.split('「')[1].split('」')[0];\\n                    break;\\n                case 'js_url':\\n                    fileName = up_code.split('￥')[2].split('@')[0];\\n                    break;\\n            }\\n        }else{\\n            return 'toast://错误，网页链接无内容!';\\n        }\\n        let ua = getItem('house.file_ua')==='电脑'?'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.146 Safari/537.36':'Mozilla/5.0 (Linux; Android 9; MI 6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36';\\n        let headers = {\\n            'Referer':'https://blog.csdn.net',\\n            \\\"content-type\\\": \\\"application/json\\\",\\n            'User-Agent':ua,\\n            'Accept':'application/json, text/javascript, */*; q=0.01',\\n            'Accept-Language':'zh-CN',\\n        };\\n        let toCompare = '';\\n        if(fileName.endsWith('.html')){\\n            toCompare = '静态文件';\\n        }else if(/主题/.test(fileName)){\\n            toCompare = '主页配置'\\n        }\\n        let ftype =  file_type.filter(compare(toCompare||getItem('house.file_type','静态文件')))[0].value;\\n        let redirect = getItem('house.file_redirect','本地')!=='本地';\\n        if(redirect&&!web_url.startsWith('http')){\\n            return 'toast://直链302重定向网址链接必须http开头';\\n        }\\n        let code = !redirect?up_code:web_url;\\n        let data = {\\\"params\\\":\\n                {\\\"data\\\": {rule_name: fileName, \\\"rule_type\\\": '更多分享', \\\"version\\\":getNowFormatDate(),\\\"rule_value\\\": code,\\n                        data_type:ftype, is_redirect:redirect,deviceUa:getItem('house.file_ua'),\\n                    },\\n                    \\\"name\\\": house_data.username,\\n                    \\\"password\\\": house_data.password}\\n        };\\n        let upparams = {headers:headers,body:JSON.stringify(data),withHeaders:false,redirect:false,method:'POST'};\\n        let backmsg = getItem('house.file_ua')==='电脑'?fetch(put_url,upparams):request(put_url,upparams);\\n        try{\\n            let result = JSON.parse(backmsg).result;\\n            let detail = result.detail;\\n            return 'toast://'+detail;\\n        }catch (e) {\\n            log(e.message);\\n            return 'toast://发生了错误\\\\n'+e.message;\\n        }\\n    },canup,house_data,put_url,file_type)\\n});\\n\\nd.push({\\n    title:'长文本预览区域',\\n    col_type:'text_1',\\n    url:'hiker://empty',\\n    extra: {textSize: 11,lineVisible:false}\\n});\\n\\nd.push({\\n    title:getVar('house.upload_code','').substring(0,10240),\\n    col_type:'long_text',\\n    extra: {textSize: 11}\\n});\\nsetPageTitle(\\\"更多分享\\\");\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"轻合集生成接口\",\"path\":\"genApi\",\"rule\":\"js:\\nfunction genRule(name,url,icon){\\n    icon=icon||'https://z3.ax1x.com/2021/11/16/IWJhxf.png';\\n    const {getNowFormatDate,api,getApi}=$.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    String.prototype.replaceAll = function(old,new_str){\\n        return this.split(old).join(new_str);\\n    };\\n    let muban = getApi('importUrl')+\\\"1690\\\";\\n    let muban_word={name:\\\"@轻合集\\\",url:\\\"@地址\\\",ver:\\\"@版本\\\",icon:\\\"@图标\\\"};\\n    let muban_code = fetch(muban);\\n    muban_code=muban_code.replaceAll(muban_word.name,name).replaceAll(muban_word.ver,getNowFormatDate()).replaceAll(muban_word.url,url).replaceAll(muban_word.icon,icon);\\n    let import_code=\\\"海阔视界规则分享，当前分享的是：小程序，无根树，花正清，不断荤腥不戒淫￥home_rule_v2￥base64://@\\\"+name+\\\"@\\\"+base64Encode(muban_code);\\n    var pastes = getPastes();\\n    var url = sharePaste(import_code,pastes.slice(-1)[0]);\\n    let import_rule= url+\\\"\\\\n\\\\n小程序：\\\"+name;\\n    return import_rule;\\n}\\n$.exports.genRule=genRule;\"},{\"col_type\":\"movie_3\",\"name\":\"全局解析免嗅\",\"path\":\"globalParse\",\"rule\":\"js:\\n    function getHeaders(playUrl){\\n        let headers = {};\\n        let refer=playUrl.split(\\\"//\\\")[0]+\\\"//\\\"+playUrl.split(\\\"//\\\")[1].split(\\\"/\\\")[0];\\n        if(/lecloud\\\\.com|bilivideo\\\\.com/.test(playUrl)){\\n            headers = {\\\"Referer\\\": 'https://www.bilibili.com/',\\\"User-Agent\\\":\\\"Mozilla/5.0\\\"}\\n        }else if(/mgtv\\\\.com/.test(playUrl)){\\n            headers = {\\\"Referer\\\": refer,\\\"User-Agent\\\":\\\"Mozilla/5.0\\\"}\\n        }else if(/ixigua\\\\.com/.test(playUrl)){\\n            headers = {\\\"Referer\\\": 'https://www.ixigua.com/',\\\"User-Agent\\\":\\\"Mozilla/5.0\\\"}\\n        }else{\\n            headers = {\\\"Referer\\\": refer,'User-Agent':'Dart/2.13 (dart:io)'}\\n        }\\n        return headers\\n    }\\nfunction isPic(str){\\n    return /\\\\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(str);\\n}\\nfunction isVideo(playUrl,rechange){\\n    //注意.php不可以被排除否则融兴解析不了 |.php$\\n    //如果是播放地址就直接返回地址加上UA，不是的话就返回false\\n    // let t1 = new Date().getTime();\\n    let cacheRegx = new RegExp('file:///storage/emulated/(.*?)\\\\\\\\.m3u8|hiker://files/(.*?)\\\\\\\\.m3u8');\\n    if(cacheRegx.test(playUrl)){\\n        return playUrl\\n    }\\n    function getHost(url){\\n        // fba的parseLazy太慢了千万别用\\n        try {\\n            return url.match(/^http(s)?:\\\\/\\\\/(.*?)\\\\//)[0].slice(0,-1);\\n        }catch (e) {\\n            return false\\n        }\\n        /*\\n        if(typeof(log)==='undefined'){\\n            return  fba.parseLazyRule($$$().lazyRule((url)=>{\\n                return getHome(url)\\n            },url))\\n        }else {\\n            return getHome(url)\\n        }\\n        */\\n    }\\n    let pUrl=playUrl.split(\\\";\\\")[0];//获取抠掉海阔ua等参数的网页播放链接\\n    let host = getHost(pUrl); // 获取域名\\n    if(!host){//判断无域名直接不是视频\\n        return false\\n    }\\n    function print(data){\\n        if(typeof(log)==='undefined'){\\n            return  fba.log(data)\\n        }else {\\n            return log(data)\\n        }\\n    }\\n    rechange=typeof(rechange)===\\\"function\\\"?rechange:function(playUrl){return playUrl};\\n    let exceptWords = '.js$|.css$|.ts$|.html$|.htm$|.gif$|.jpg$|.jpeg$|.png$|.ico$|.svg$|.txt$'.split('|').map(it=>'\\\\\\\\'+it).join('|');\\n    var exceptKeys = new RegExp(exceptWords);\\n    let exceptWords1 = 'referer=|url='.split('|').map(it=>it).join('|');\\n    var exceptKeys1 = new RegExp(exceptWords1);\\n    let replaceWords = 'playm3u8|m3u8\\\\.tv'.split('|').map(it=>it).join('|');\\n    let replaceKeys = new RegExp(replaceWords,'g');\\n    let videoWords = \\\"/video/tos|.mp4$|.m3u8$|.flv$|.avi$|.3gp$|.mpeg$|.wmv$|.mov$|rmvb|.dat$|.mp3$|.m4a$|qqBFdownload|mime=video%2F|mime_type=video_|type=m3u8|pt=m3u8\\\".split('|').map((it)=>{\\n        //type=mp4\\n        if(it.startsWith(\\\".\\\")){\\n            return '\\\\\\\\'+it\\n        }else{\\n            return it\\n        }\\n    }).join(\\\"|\\\");\\n    let videoKeys = new RegExp(videoWords);\\n    let rUrl = pUrl.replace(host,'');//获取除开域名的剩余链接\\n    let pUrl2=pUrl.split(\\\"&\\\")[0].split(\\\"?\\\")[0];//获取不带参数的网页链接\\n    let rurl2 = pUrl2.replace(host,'');//获取除开域名的剩余不带参数链接\\n    let hasKey = videoKeys.test(rUrl)||videoKeys.test(rurl2);\\n    let parUrl = pUrl.replace(pUrl.split(\\\"?\\\")[0],''); // 分割问号后剩余参数的完整链接\\n    let excKey = exceptKeys1.test(parUrl);\\n    if(rUrl.split('?').length>2){\\n        let rUrl3=rUrl.split(\\\"?\\\")[1];//获取?分割后的第一段\\n        hasKey = hasKey||videoKeys.test(rUrl3);\\n    }\\n    if(hasKey&&!excKey){\\n        let tips = '检测到疑似多媒体的地址:';\\n        print(\\\"js中\\\"+tips+pUrl);\\n        print(\\\"分割问号后:\\\"+parUrl);\\n    }\\n    // log('1:'+(videoKeys.test(pUrl)||videoKeys.test(pUrl2)||videoKeys.test(pUrl.replace(replaceKeys,\\\"\\\").split(\\\"&\\\")[0].split(\\\"?\\\")[0])));\\n    // log('2:'+!exceptKeys.test(pUrl.split(\\\"?\\\")[0].split('&')[0]));\\n    // log('3:'+!exceptKeys1.test(pUrl.replace(pUrl.split(\\\"?\\\")[0],'')));\\n    if ((hasKey||videoKeys.test(rUrl.replace(replaceKeys,\\\"\\\").split(\\\"&\\\")[0].split(\\\"?\\\")[0]) )&& !exceptKeys.test(pUrl2)&&!exceptKeys1.test(pUrl2)) {\\n        if(!(/User-Agent|Referer@/.test(playUrl))){\\n            if(/lecloud\\\\.com|bilivideo/.test(playUrl)){\\n                playUrl+=\\\";{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}\\\";\\n            }else if(/ixigua\\\\.com/.test(playUrl)){\\n                playUrl+=\\\"#isvideo=true#;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n            }\\n            else if(/mgtv\\\\.com|byteamone/.test(playUrl)){\\n                playUrl+=\\\";{User-Agent@Mozilla/5.0}\\\";\\n            }else if(/ptwo\\\\.wkfile\\\\.com/.test(playUrl)&&/url=/.test(playUrl)){\\n                playUrl=playUrl.split(\\\"url=\\\")[1]+\\\";{Referer@https://fantuan.tv}\\\"\\n            }\\n            // 处理大师兄之类的app\\n            // else{\\n            //     playUrl+=\\\";{User-Agent@Mozilla/5.0}\\\";\\n            // }\\n        }\\n        playUrl=rechange(playUrl);\\n        if(!/#isVideo=true#/.test(playUrl)){\\n            playUrl+=\\\"#isVideo=true#\\\";\\n        }\\n        // let t2 = new Date().getTime();\\n        // print('判断isVideo耗时:'+(t2-t1));\\n        return playUrl;\\n    }else{\\n        // let t2 = new Date().getTime();\\n        // print('判断isVideo耗时:'+(t2-t1));\\n        return false;\\n    }\\n}\\nfunction comParse(parStr,ej,onlyback,html){\\n    //列表，标题，图片，描述，链接，内容\\n    ej = ej||false;//有二级\\n    onlyback=onlyback||false;//只返回数据\\n    html = html||getResCode();\\n    html = typeof(html)==='string'?html:html.html;\\n    return $.toString((parStr,ej,onlyback,html,isPic)=>{\\n        let t=parStr.split(\\\";\\\");\\n        let d=[];\\n        // let list=pdfa(getResCode(),t[0]);\\n        let list=pdfa(html,t[0]);\\n        let lazy = $('').lazyRule(()=>{\\n            const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n            return lazyParse(input)\\n        });\\n        for(let i in list){\\n            let _pic = t[2]?pd(list[i],t[2]):'';\\n            if(isPic(_pic)&&!/@Referer=/.test(_pic)){\\n                _pic+='@Referer='\\n            }\\n            let it={\\n                title:pdfh(list[i],t[1]),\\n                pic_url:_pic,\\n                desc:pdfh(list[i],t[3]),\\n                url:ej?pd(list[i],t[4]):pd(list[i],t[4])+lazy\\n            };\\n            if(t.length>5){//内容，用于搜索\\n                it.content=pdfh(list[i],t[5])\\n            }\\n            d.push(it);\\n        }\\n        if(onlyback){\\n            return d\\n        }else{\\n            setResult(d)\\n        }\\n    },parStr,ej,onlyback,html,isPic)\\n}\\n\\nfunction isBadVideo(videoUrl) {//是坏的视频\\n    let dmPath = 'hiker://files/cache/diaomao.txt';//吊毛模式过滤文件路径\\n    let dmUrls;\\n    try {\\n        dmUrls = request(dmPath).trim().split('\\\\n').filter(it => it && !it.startsWith('//'));\\n    } catch (e) {\\n        dmUrls = [];\\n    }\\n\\n    function hasDm(videoUrl, dmUrls) {//播放地址是否为吊毛视频\\n        if (dmUrls.length < 1) {\\n            return false\\n        }\\n        function print(str){\\n            if(typeof(log)!=='undefined'){\\n                log(str);\\n            }else{\\n                fba.log(str);\\n            }\\n        }\\n        for (let dmUrl of dmUrls) {\\n            if ((new RegExp(dmUrl)).test(videoUrl)) {//播放地址包含吊毛标志的地址\\n                print('吊毛视频,自动过滤:'+videoUrl);\\n                return true\\n            }\\n        }\\n        print('非吊毛视频,可播放:'+videoUrl);\\n        return false\\n    }\\n\\n    function isDm(ret) {\\n        if (!ret) {\\n            return true\\n        }\\n        return hasDm(ret.split('#')[0].split(';')[0], dmUrls)\\n    }\\n    return isDm(videoUrl)\\n}\\n\\nfunction lazyParse(playUrl,ms,tm,rechange){\\n    // log('调用仓库免嗅探传参超时为:'+ms);\\n    tm = parseInt(tm)||5000;\\n    const {isVideo,getHeaders,isBadVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n    let realUrl = isVideo(playUrl,rechange);\\n    //log(realUrl);\\n    if(typeof(realUrl)=='string'){//bool值就是失败\\n        try{\\n            let rurl=realUrl.split(\\\";\\\")[0].split(\\\"#\\\")[0];\\n            return JSON.parse(request(rurl,{timeout:tm})).url\\n        }catch(e){\\n            return realUrl\\n        }\\n        //return realUrl\\n    }\\n\\n    //log(\\\"访问超时:\\\"+tm);\\n    log(\\\"尝试道长仓库x5免嗅:\\\"+playUrl);\\n    clearVar(\\\"_x5jxUrl\\\");\\n    let bad=$(\\\"网络不佳或者疑似对方网站挂了，你要查看其网页吗？\\\").confirm((playUrl)=>{\\n        log(\\\"网站看起来挂了:\\\"+playUrl);\\n        return playUrl\\n    },playUrl);\\n    try{\\n        var back=request(playUrl,{headers: getHeaders(playUrl),timeout:tm});\\n        //var back=fetch(playUrl,{headers: {'User-Agent': PC_UA}});\\n        if(!back){\\n            log(\\\"网站\\\"+playUrl+\\\"确实啥也没返回\\\");\\n            return bad\\n        }else if(/#EXTINF/.test(back)){\\n            //let lcache=\\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8\\\";\\n            //writeFile(lcache,back);\\n            //return lcache+\\\"##\\\"+playUrl+\\\"#isVideo=true#\\\"\\n            playUrl=cacheM3u8(playUrl);\\n            return playUrl\\n        }else if((!/触发了防盗链|未授权|接口防盗/.test(back))&&(!/http|url/.test(back))&&(!/msg|code|html/.test(back))){\\n            log(back);\\n            return 'toast://疑似对方数据加密了，具体数据看日志'\\n        }\\n    }catch(e){\\n        log(e.message);\\n        return bad\\n    }\\n    try {\\n        back=JSON.parse(back);\\n        let realUrl=back.url;\\n        if(typeof(realUrl)==\\\"undefined\\\"||!realUrl){\\n            log(back);\\n            return \\\"toast://道长仓库解析失败！返回播放地址为空\\\"\\n        } else if(typeof(isVideo(realUrl,rechange))=='string'){\\n            return isVideo(realUrl,rechange);\\n        }else{\\n            return realUrl+\\\"#isVideo=true#\\\";\\n        }\\n        //else{\\n        //realUrl+=\\\";{User-Agent@Mozilla/5.0}\\\";\\n        // }\\n    }catch (e) {\\n        log(\\\"检测到解析口非json错误:\\\"+e.message+',开始x5免嗅探');\\n        // require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/lsg.js');//引用本地储存插件\\n        const lsg=$.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\");//引用子页面本地储存插件\\n        let local_ms = lsg.getItem('timeout');\\n        let ms = parseInt(ms)||parseInt(local_ms)||5000;\\n        let max_count=Math.ceil(ms/250);\\n        log(\\\"本次嗅探超时:\\\"+ms+\\\"共计待抓包:\\\"+max_count+\\\"次\\\");\\n        showLoading('嗅探中，若失败就切换web嗅探...');\\n        let _x5 = $.toString((isVideo,rechange,playUrl,max_count,PC_UA,isBadVideo)=>{\\n            try {\\n                if(typeof(fba)=='undefined'||!fba){\\n                    var fba = fy_bridge_app;\\n                }\\n                try {\\n                    if(typeof(request)=='undefined'||!request){\\n                        eval(fba.getInternalJs());\\n                    }\\n                }catch (e) {\\n                    fba.log(e.message);\\n                }\\n                fba.putVar(\\\"_x5jxUrl\\\",playUrl);\\n                if(window.count == null){\\n                    window.count=1;\\n                }\\n                let text='';\\n                try {\\n                    text=document.querySelector(\\\"body\\\").innerText;\\n                }catch (e) {fba.log(e.message)}\\n                if(/触发了防盗链|未授权|接口防盗/.test(text)&&window.count===1){\\n                    fba.log(\\\"检测到有授权，开始过授权\\\");\\n                    //location.reload();\\n                    location.href=fba.getVar(\\\"_x5jxUrl\\\");\\n                }\\n                window.count++;\\n                // fba.log('count:'+window.count+',max_count:'+max_count);\\n                if( window.count >= max_count){\\n                    fba.log(\\\"超过\\\"+max_count*250+\\\"毫秒未获取到资源地址，跳到源网页,以下是加载过的地址\\\");\\n                    try {\\n                        let text=document.querySelector(\\\"body\\\").innerText;\\n                        // fba.log(text);\\n                    }catch (e) {fba.log(e.message)}\\n                    fba.log(JSON.stringify(_getUrls()));\\n                    return fba.getVar(\\\"_x5jxUrl\\\");\\n                }\\n                function muteMe(elem) {\\n                    try {\\n                        elem.pause();\\n                    }\\n                    catch (e) {\\n                    }\\n                }\\n                var videos = document.querySelectorAll(\\\"video\\\"), audios = document.querySelectorAll(\\\"audio\\\"), v2 = document.querySelectorAll(\\\"embed\\\"), v3 = document.querySelectorAll(\\\"#player\\\");\\n                try {\\n                    [].forEach.call(videos, function (video) {\\n                        muteMe(video);\\n                    });\\n                } catch (e) {}\\n                try {\\n                    [].forEach.call(audios, function (audio) {\\n                        muteMe(audio);\\n                    });\\n                } catch (e) {}\\n                try {\\n                    [].forEach.call(v2, function (v) {\\n                        muteMe(v);\\n                    });\\n                } catch (e) {}\\n                try {\\n                    [].forEach.call(v3, function (v) {\\n                        muteMe(v);\\n                    });\\n                } catch (e) {}\\n                var urls = _getUrls();\\n                // fba.log(JSON.stringify(urls));\\n                try {\\n                    for(let i in urls) {\\n                        let u=urls[i];\\n                        try{u=decodeURIComponent(u);}catch(e){\\n                            u=unescape(u);\\n                        }\\n                        //\\n                        if(/url=http/.test(u)){\\n                            u = u.split(\\\"url=\\\").slice(-1)[0];\\n                            // fba.log(\\\"url分割:\\\"+u);\\n                        }else if(/url=\\\\//.test(u)&&/\\\\.m3u8/.test(u)){\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\n                            u = host+u.split(\\\"url=\\\").slice(-1)[0];\\n                            // fba.log(\\\"url分割:\\\"+u);\\n                        }\\n                        else if(/vid=http/.test(u)){\\n                            u = u.split(\\\"vid=\\\").slice(-1)[0];\\n                            fba.log(\\\"vid分割:\\\"+u);\\n                        }else if(/vid=\\\\//.test(u)&&/\\\\.m3u8/.test(u)){\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\n                            u = host+u.split(\\\"vid=\\\").slice(-1)[0];\\n                            fba.log(\\\"vid分割:\\\"+u);\\n                        }\\n                        else if(/\\\\?(.*)=http/.test(u)&&/\\\\.m3u8/.test(u)){\\n                            u = \\\"http\\\"+u.split(/\\\\?(.*)=http/).slice(-1)[0];\\n                            fba.log(\\\"其他分割:\\\"+u);\\n                        }\\n                        //|index\\\\.m3u8$\\n                        else if(/\\\\/1\\\\.m3u8/.test(u)){\\n                            continue;\\n                        }\\n                        u=u.replace(/&from=.*|&next=.*|&jump=.*/,'');\\n                        let realUrl = isVideo(u,rechange);\\n                        if(typeof(realUrl)=='string'&&!isBadVideo(u)){//过滤吊毛视频\\n                            //fy_bridge_app.setWebUa(PC_UA);\\n                            if(typeof(fba.getHeaderUrl)!=='undefined'&&typeof(rechange)!=='function'){\\n                                // let backUrl = fba.getHeaderUrl(u.replace(\\\";{\\\",\\\"#isVideo=true#;{\\\"));\\n                                let backUrl = fba.getHeaderUrl(urls[i]).replace(';{','#ignoreImg=true##isVideo=true#;{');\\n                                let u1 = backUrl.split('#ignoreImg')[0];\\n                                let u2 = '#ignoreImg'+backUrl.split('#ignoreImg')[1];\\n                                u1 = u1.replace(/&from=.*|&next=.*|&jump=.*/,'');\\n                                if(/url=http/.test(u1)){\\n                                    u1 = u1.split(\\\"url=\\\").slice(-1)[0];\\n                                }else if(/url=\\\\//.test(u1)&&/\\\\.m3u8/.test(u1)){\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\n                                    u1 = host1+u1.split(\\\"url=\\\").slice(-1)[0];\\n                                    // fba.log(\\\"url分割:\\\"+u);\\n                                }\\n                                else if(/vid=http/.test(u1)){\\n                                    u1 = u1.split(\\\"vid=\\\").slice(-1)[0];\\n                                }else if(/vid=\\\\//.test(u1)&&/\\\\.m3u8/.test(u1)){\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\n                                    u1 = host1+u1.split(\\\"vid=\\\").slice(-1)[0];\\n                                }\\n                                else if(/\\\\?(.*)=http/.test(u1)&&/\\\\.m3u8/.test(u1)){\\n                                    u1 = \\\"http\\\"+u1.split(/\\\\?(.*)=http/).slice(-1)[0];\\n                                }\\n                                backUrl = u1 + u2;\\n                                // fba.log('返回自动加cookie链接:'+backUrl);\\n                                fba.log('返回链接:'+u+'并自动加了cookie,具体cookie在视频播放处查看');\\n                                return backUrl;\\n                            }\\n                            else{\\n                                fba.log(\\\"返回仓库x5免嗅结果:\\\"+realUrl);\\n                                return realUrl\\n                            }\\n                        }\\n                    }\\n                }catch (e) {\\n                    fba.log(e.message)\\n                }\\n            }catch (e) {\\n                // fy_bridge_app.log('x5大范围错误:'+e.message);\\n                alert('x5大范围错误:'+e.message);\\n                return 'toast://报错结束x5'\\n            }\\n        },isVideo,rechange,playUrl,max_count,PC_UA,isBadVideo);\\n        let useWeb=lsg.getItem(\\\"通免\\\",\\\"X5\\\")===\\\"WEB\\\";\\n        //log(\\\"仓库使用web通免替代x5:\\\"+useWeb);\\n        let ruleHead=useWeb&&parseInt(getAppVersion())>=2339?\\\"webRule://\\\":\\\"x5Rule://\\\";\\n        let x5Url = ruleHead+playUrl+ '@' +_x5;\\n        return x5Url\\n    }\\n}\\n\\nfunction x5ParsePro(x5list,x5Timeout,isVideo){\\n    let bpath = 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/海阔嗅探器.html';\\n    let bcode = fetch(bpath);\\n    if(!bcode||!/fy_bridge_app/.test(bcode)){\\n        log('本地未安装嗅探器，开始安装');\\n        const {api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n        let html = fetch(api.host+'/rulelist.json?id=2055');\\n        if(/海阔视界/.test(html)){\\n            writeFile(bpath,html);\\n        }else{\\n            writeFile(bpath,fetch('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/html/getVideo.html'))\\n        }\\n    }\\n    x5Timeout = parseInt(x5Timeout)||5000;\\n    let max_count=(x5Timeout/250); //根据超时自动计算了可执行的次数\\n    putVar('x5List',JSON.stringify(x5list));\\n    let _x5 = $.toString((isVideo, max_count,x5Timeout,isBadVideo) => {\\n        //初始化fba和requst\\n        if (typeof (fba) == 'undefined' || !fba) {\\n            var fba = fy_bridge_app;\\n        }\\n        try {\\n            if (typeof (request) == 'undefined' || !request) {\\n                eval(fba.getInternalJs());\\n            }\\n        } catch (e) {\\n            fba.log(e.message);\\n        }\\n        //------------------\\n        try {\\n            if (window.count == null) {\\n                window.count = 1;\\n            }\\n            let text='';\\n            try {\\n                text=document.querySelector(\\\"body\\\").innerText;\\n            }catch (e) {fba.log(e.message)}\\n            if(/触发了防盗链|未授权|接口防盗/.test(text)&&window.count==1){\\n                location.reload();\\n                fba.log(\\\"检测到有授权，开始过授权\\\");\\n            }\\n            window.count++;\\n            // fba.log('count:' + window.count + ',max_count:' + max_count);\\n            if (window.count >= max_count) {\\n                fba.clearVar('x5List');\\n                fba.hideLoading();\\n                let fmsg = '道长仓库通免解析失败,原因:超时'+x5Timeout+'毫秒';\\n                fba.log(fmsg);\\n                return 'toast://'+fmsg;\\n            }\\n        }catch (e) {\\n            fba.log(e.message);\\n        }\\n\\n        function muteMe(elem) {\\n            try {\\n                elem.pause();\\n            } catch (e) {\\n            }\\n        }\\n\\n        var videos = document.querySelectorAll(\\\"video\\\"), audios = document.querySelectorAll(\\\"audio\\\"),\\n            v2 = document.querySelectorAll(\\\"embed\\\"), v3 = document.querySelectorAll(\\\"#player\\\");\\n        try {\\n            [].forEach.call(videos, function (video) {\\n                muteMe(video);\\n            });\\n        } catch (e) {\\n        }\\n        try {\\n            [].forEach.call(audios, function (audio) {\\n                muteMe(audio);\\n            });\\n        } catch (e) {\\n        }\\n        try {\\n            [].forEach.call(v2, function (v) {\\n                muteMe(v);\\n            });\\n        } catch (e) {\\n        }\\n        try {\\n            [].forEach.call(v3, function (v) {\\n                muteMe(v);\\n            });\\n        } catch (e) {\\n        }\\n        var urls = _getUrls();\\n        try {\\n            for (let i in urls) {\\n                let u=urls[i];\\n                //u=decodeURIComponent(u);\\n                try{u=decodeURIComponent(u);}catch(e){\\n                    u=unescape(u);\\n                }\\n                if(/url=http/.test(u)){\\n                    u = u.split(\\\"url=\\\").slice(-1)[0];\\n                }else if(/vid=http/.test(u)){\\n                    u = u.split(\\\"vid=\\\").slice(-1)[0];\\n                }else if(/\\\\?(.*)=http/.test(u)){\\n                    u = \\\"http\\\"+u.split(/\\\\?(.*)=http/).slice(-1)[0];\\n                    //fba.log(\\\"其他分割:\\\"+u);\\n                }else if(/\\\\/1\\\\.m3u8$/.test(u)){\\n                    continue;\\n                }\\n                u=u.replace(/&from=.*|&next=.*|&jump=.*/,'');\\n                let realUrl = isVideo(u);\\n                if (realUrl&&!isBadVideo(u)) {//过滤吊毛\\n                    fba.log(\\\"仓库x5免嗅结果:\\\" + realUrl);\\n                    fba.clearVar('x5List');\\n                    return realUrl\\n                }\\n            }\\n        } catch (e) {\\n            fba.log(e.message)\\n        }\\n    }, isVideo, max_count,x5Timeout,isBadVideo);\\n    const lsg=$.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\");\\n    let useWeb=lsg.getItem(\\\"通免\\\",\\\"X5\\\")===\\\"WEB\\\";\\n    //log(\\\"仓库使用web通免替代x5:\\\"+useWeb);\\n    let ruleHead=useWeb&&parseInt(getAppVersion())>=2339?\\\"webRule://\\\":\\\"x5Rule://\\\";\\n    return ruleHead+bpath+'@' + _x5;\\n}\\n\\nfunction LazyParseFast(playUrlList,getTimeout,x5Timeout){\\n    const {isVideo,getHeaders,x5ParsePro} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n    // log('开始执行'+playUrlList.length+'个地址的批量嗅探:'+playUrlList);\\n    log('开始执行'+playUrlList.length+'个地址的批量嗅探');\\n    let playUrls = playUrlList.map((it)=>{\\n        return {\\n            url:it.split(\\\";\\\")[0],\\n            options: {\\n                headers: {\\n                    //\\\"User-Agent\\\": \\\"Dart/2.13 (dart:io)\\\",\\n                    \\\"User-Agent\\\":\\\"Mozilla/5.0\\\"\\n                },\\n                timeout: getTimeout\\n            }\\n        }\\n    });\\n    let bhtml = batchFetch(playUrls);\\n    let videos = [];\\n    let x5list = [];\\n    for(let i in bhtml){\\n        let order = parseInt(i)+1;\\n        let tname=order+'号解析网址:';\\n        //log(tname);\\n        let turl=playUrlList[i].split(\\\";\\\")[0];\\n        let jname=playUrlList[i].split(\\\";\\\").length>1?playUrlList[i].split(\\\";\\\")[1]:\\\"\\\";\\n        tname+=jname;\\n        let backcode = bhtml[i];\\n        if((!/url|http/.test(backcode))&&(!/#EXTINF/.test(backcode))){\\n            log(tname+turl+'有问题,可能加密或者挂了');\\n            continue;\\n        }else if(/#EXTINF/.test(backcode)){\\n            //let lcache=\\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video_\\\"+tname+\\\".m3u8\\\";\\n            //writeFile(lcache,backcode);\\n            //videos.push(lcache);\\n            let pUrl=cacheM3u8(turl);\\n            videos.push(pUrl);\\n            continue;\\n        }\\n        try {\\n            let url = JSON.parse(backcode).url;\\n            if(/^http/.test(url)){\\n                let realVideo = isVideo(url);\\n                if(typeof(realVideo)=='string'){\\n                    log(tname+'已解析出视频:'+realVideo);\\n                    if(jname){\\n                        realVideo+=\\\"★\\\"+jname\\n                    }\\n                    videos.push(realVideo);\\n                }else{\\n                    log(tname+'解析出不知道什么东西:'+url);\\n                    url+=\\\"#isVideo=true#\\\";\\n                    if(jname){\\n                        url+=\\\"★\\\"+jname\\n                    }\\n                    videos.push(url);\\n                }\\n            }else{\\n                log(tname+'为json接口且无返回视频地址数据:'+playUrlList[i]+'\\\\n'+backcode);\\n            }\\n        }catch (e) {\\n            log(tname+'为x5接口,加入x5嗅探列表');\\n            x5list.push(playUrlList[i]);\\n        }\\n    }\\n    // log(videos);\\n    if(videos.length>0){\\n        if(getVar('dp.cacheVideo','true')==='true'&&parseInt(getAppVersion())>=2255)\\n        {\\n            log(\\\"尊敬的魔断用户，视频缓存已启用，请尽情享受看剧时光\\\");\\n            let videosCache=videos.map((it)=>{\\n                let headers={};\\n                if(it.split(\\\";\\\").length>1){\\n                    let head = it.split(';')[1];\\n                    if(/@/.test(head)&&/{|}/.test(head)){\\n//head = head.replace(/{|}/g,'');\\n                        head = head.split(\\\"{\\\")[1].split(\\\"}\\\")[0];\\n                        head = head.split('&&');\\n                        for(let i in head){\\n                            let key = head[i].split('@')[0];\\n                            let value =head[i].split('@')[1].replace(/;/,'；；');\\n                            headers[key] = value;\\n                        }\\n                    }\\n                }\\n                return {\\n                    url:it.split(\\\";\\\")[0].split(\\\"★\\\")[0],\\n                    options:{\\n                        headers:headers\\n                    }\\n                }\\n            });\\n            var data=batchCacheM3u8(videosCache);\\n            data=data.map((it,id)=>{\\n                let extra=\\\"\\\";\\n                if(videos[id].split(\\\";\\\").length>1){\\n                    extra=\\\";\\\"+videos[id].split(\\\";\\\")[1];\\n                }else if(videos[id].split(\\\"★\\\").length>1){\\n                    extra=\\\"★\\\"+videos[id].split(\\\"★\\\")[1];\\n                }\\n\\n                if(it+\\\"\\\"!=\\\"null\\\"){\\n                    return it+extra\\n                }else{\\n                    return videos[id]\\n                }\\n            });\\n            //log(data);\\n            return data\\n            //return videos\\n        }else{\\n            return videos\\n        }\\n    }\\n    log('共有'+x5list.length+'个x5地址进行轮流嗅探');\\n    //没有的话就开始依次x5嗅探\\n    showLoading('嗅探中，若失败就切换web嗅探...');\\n    return x5ParsePro(x5list,x5Timeout,isVideo);\\n}\\nvar lazy=$('').lazyRule(()=>{\\n    try{\\n        realUrl=input;\\n        eval(\\\"var config_dp =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n        eval(fetch(config_dp.cj));\\n        log(input+'->正在断插魔改版解析...');\\n        // 加入超时设置，建议在首页设置\\n        return aytmParse(realUrl)\\n    }catch(e){\\n        return input\\n    }\\n});\\n$.exports.isPic=isPic;\\n$.exports.isVideo=isVideo;\\n$.exports.isBadVideo=isBadVideo;\\n$.exports.comParse=comParse;\\n$.exports.getHeaders=getHeaders;\\n$.exports.lazyParse=lazyParse;\\n$.exports.x5ParsePro=x5ParsePro;\\n$.exports.LazyParseFast=LazyParseFast;\\n$.exports.lazy=lazy;\"},{\"name\":\"任务仓库接口\",\"path\":\"taskCall\",\"rule\":\"js:\\nString.prototype.strip = function () { return this.replace(/(^\\\\s*)|(\\\\s*$)/g, \\\"\\\"); };\\nfunction task_req(task_api,task) { // 通用发送仓库post调用任务请求\\n    const {getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let result = request(task_api, {\\n        headers: {\\n            'content-type': 'application/json'\\n        },\\n        body: JSON.stringify({\\n            \\\"params\\\": {\\n                \\\"data\\\": {\\n                    \\\"type\\\": task.mode||'run',\\n                    \\\"func\\\": task.func||'',\\n                    \\\"params\\\": task.params||[]\\n                },\\n                \\\"auth\\\": {\\n                    \\\"name\\\": house_data.username||\\\"\\\",\\n                    \\\"password\\\": house_data.password||\\\"\\\"\\n                }\\n            }\\n        }),\\n        method: 'POST'\\n    });\\n    return JSON.parse(result).result;\\n}\\n\\nfunction task_upload(task){ // 通用任务发布新增及修改功能\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let api_url = api.host+'/hikerule/task/add';\\n    let house_data = houseFile();\\n    let result = request(api_url, {\\n        headers: {\\n            'content-type': 'application/json'\\n        },\\n        body: JSON.stringify({\\n            \\\"params\\\": {\\n                \\\"data\\\": {\\n                    \\\"name\\\": task.name,\\n                    \\\"pycode\\\": task.pycode,\\n                    \\\"note\\\": task.note,\\n                    \\\"test_code\\\": task.test_code,\\n                },\\n                \\\"auth\\\": {\\n                    \\\"name\\\": house_data.username||\\\"\\\",\\n                    \\\"password\\\": house_data.password||\\\"\\\"\\n                }\\n            }\\n        }),\\n        method: 'POST'\\n    });\\n    return JSON.parse(result).result;\\n}\\n\\nfunction task_call(id,func,params){\\n    const {api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let task_api = api.host+'/hikerule/task/run/'+id;\\n    let task = {\\n        mode:'call',\\n        func:func,\\n        params:params||[]\\n    };\\n    return task_req(task_api,task);\\n}\\n\\nfunction task_rename(id,new_task_name){\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let task_api = api.host+'/hikerule/task/rename/'+id;\\n    task_api = task_api+'?name='+house_data.username+'&password='+house_data.password+'&task_name='+new_task_name;\\n    try {\\n        let result = JSON.parse(fetch(task_api,{}));\\n        if(result.status==0){\\n            return  result.detail\\n        }else{\\n            return result.result+''+result.detail\\n        }\\n    }catch (e) {\\n        log(e.message);\\n        return ''+e.message\\n    }\\n}\\n\\nfunction task_change_state(id){\\n    const {api,getFile} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let houseFile = getFile||false;\\n    if(!houseFile){\\n        setItem('is_house_vip', 'false');\\n    }\\n    let house_data = houseFile();\\n    let task_api = api.host+'/hikerule/task/change_state/'+id;\\n    task_api = task_api+'?name='+house_data.username+'&password='+house_data.password;\\n    try {\\n        let result = JSON.parse(fetch(task_api,{}));\\n        if(result.status==0){\\n            return  result.detail\\n        }else{\\n            return result.result+''+result.detail\\n        }\\n    }catch (e) {\\n        log(e.message);\\n        return ''+e.message\\n    }\\n}\\n\\nfunction task_run(id){\\n    const {api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n    let task_api = api.host+'/hikerule/task/run/'+id;\\n    let task = {};\\n    return task_req(task_api,task);\\n}\\n\\n$.exports.taskCall = task_call;\\n$.exports.taskRun = task_run;\\n$.exports.taskReq = task_req;\\n$.exports.taskUpload = task_upload;\\n$.exports.taskRename = task_rename;\\n$.exports.taskChangeState = task_change_state;\"},{\"col_type\":\"movie_3\",\"name\":\"全局储存\",\"path\":\"localStorage\",\"rule\":\"let localStorage = (function() {\\n    evalPrivateJS(\\\"jwUKwNTiPGcWSLCXB5XtAXwb6LQbVyHD+0XJ7l07ce0=\\\");\\n    //pathto=undefined;\\n    evalPrivateJS(\\\"4C0YxRYnGCYkgFRXtpl/Cz5zL5hh4jCCztb+ng+WokymQ8oUrzS9lA8yxC5aFadnSEmyHKMbraflRqXCnNRHDlk6ue8yHTO16lBPrpwgs5jf0PhrAtoTJIE0ZHn9mKaQ4Jd2erqb4I55beWIeugKsDs211SzINQ5yJgSh1dVuNzzxRGJg40FmTuVmXVfN1xg2WIGHBEmkVnGxmORhPONA+Q5VwPmdp41/hze3eIsUvho7VCBgK4raJmPalIRBBVlCVgn8FkWmfKqZo+VW+oBcH7hrcrsSlCSjBangT/7syWHxKYhehU0kaMYjnWFg1Em0cmNRtomCsHz1B8q32OeQHoawdWxzKOaMHOXDBjRojA8E/ah0WROyziqRSxl/m8dhBd0f9phYz/5SU/zJD52X/9EC16WVVdpSW33akRHRslPpRlTWF9+AyRmRw0eZOEs1o9QMPAQUfAxbYyFHgztw/O2dJRpHyTmiBiaaqTcivx6v9zyvBz04wI1AaSCui+dTuU3lu5xdEt3Ajt6Z3iDXOVcEP0EDF7474PQU6JEZuwe97Sch4bi1wB1XHZSfItdlYYoGed3LLpbmDAIRciv0rAop8VmQcTt2K3Lfh1RDYY0YtvRcH49OvpDRH/xa5Fc8MY3DrFoA7qcoF4eCgiVBfBgJR68+LpQK7tOkg8k9ec+3NSxJThcl8d6yNwxT9Tk17zeJgd6MoyYZIpWQLlF6YvbOdEWhjmnA78wC0hWz+Xm6hQMSqtFw+bhFf7cBGU3aatPFmdCY2EdXfh0IYW85wdOyMfiwW7/vVTp9iE00I3F09wGHkGKhVbLueAkYe7zzJXR7thaFor6H7qLmJjbRQk9evNtBQXNR7DifiXuQf2lt7nOH80SWm1fDHHzjmPsNIps2TXGT+iwVV69g/tWipVQ6D8BTx+cCQp47nmTIrY+qN4kh2FYh5LlwXdgIyy1VIuC3x053ewAIIUmlY9niEpqYt+1fFPXOCtCGtYbSd37vVR1EOj2k5Gu/+9JWg2qvwl1twelg1J0txarIi4kTbTrvrnFLN92pofpZQUfoWo4ce7HWNdbu4JKEraLQUfdfGEPd1TIufuuRVa39eq9GZySDuBL60MPdldxKw1zo+fB5ZY+YMj3LL2gGtDbs98+AsRV9LJWmUmsx91hmJtFUMWD3xnj8HMZWs0NPlCFUr9485KqTpo5kRzGfF+k/Nl2Jzrv5cvkqtUnLgKpXEOj/se/oDzOArQKI5TNUbvYwcwcdjjMSfjK68Krwhs+n6SmWZ4ZdgRHgAK5MoFi3XmLV47P3vSRWu5zyEsMk4y3uuCFiuRPRlu4Q5pJvuOem7H7ULiIhCemv5DgkGtDL1cGL4EQhYRB6ISzVvsb2EaP9wQE6DVRnM7O+pnSzet6lzp3pFdGnbox1LRfC60utXZ+CjIm4iEMmtbB2N5zDShGbeM3XUbJQdCBis8XIrhh2biB5hBCVwn3Y3ett7GDPVtoi1GRjz+JbgM+YR928KbdWS5tFaMM3Kj3Xv6otIxzMBnDC9uW3d+IXx6vLPJ0JRuh3yP7pTla6c3iR4p9nWYDqJ+ZSmprHFnDOzsLWmFjapje/MqwMJd6Tk3nAWwicMOPuYpMyqIF04fl4mqgtsHLSMWRRNHPZjETQ9gRmeDYe6aRtlW02qL2olDENqLQMtAdoirNWRcP9VL3Td8HaUO6fSlGNabMakJD/00XChOSUOIP+7fM7V0/l1bLWPtEz1i7LygTV7pdGoDntqSCEnJrByhBAzLRg5QIc9438IhKmyfn0/3awoD1Ir780eyp/XcI6xNcw6Tv/ETfHg0e7iYC0UYcJIE5QUXv0s+YoGIEq5GIzKub8HNjSTUpsvnkVx+dbe2jRn3Yb9W7JCZ5YS6F5MyUVspjMD7NYc+DWjUL2b2sVyAfeYpC8Uhah9tumavbBv7a3a9kgFbq58lrHxzY7iJQVigzq3e1a2BSb0PcW1aJ8BD7NkNphKYayTxykgwilERL8jqqBEniHVdBxDJYLb+Xw3alLmltuTEV6KGtBntBX+yz36RPDMyGIKe+3fzcxfnCDn20ModVVkVNozPqMXZ0G5L4aLTAQakYKUjsVMQjAhQkTlHBeO/aLPx9sxl++j1Z5rLgG12TN4XJ1eicvw4AVE58Loraq0QiE0cS7PH1pbrZWrft7LYGiyBShor7+0jioUh1pdWq2qMYLqeMEeuCROQt57mFrOjyPH49qp97cWOrgeg2WyfWSDGQPje5+P0yQoCpD/D3RAMuWmb9wlBtcq2j8WJPt91E3kKawuQIyvd2r2Ujx4+HTNtVKb9kMLOO85I65bNGBH+4irSy5gQYlE26A2cSGIcLKQRlvJoMna7L/9wyry4HzOrzkrAvLdgsSNlYjpHQERiOI80sJ5jNCCnfw013F+A+sAfLmyS/BDLNQ1qaQ3p6h8/JqAfhX5OGHgSiRVOCEjuaDB/MwZNCu3QL9ehhoAj7uOf8Pkr3mIjbhh9Hijsjx191+0e2JQrFa01AVJKEVtuPtIc2h/1pPKMvyenxjTO2OxPnjjt+84nIKKhxDJ/ghPt7iv8PmTJ0lKKyPRssl8f/QdHdxupb6jTsI6UKmz9Y46PMBuD6P3wh8qp36O6oibNDiQd1sE10vJh9z1FysKIe8EqMpnNdEmG2TfEBxRpmQrhKEqee0p6+a6sQo8cVlRJkKQAYKawcaNES5Xc6dQY5nqeiq8sUizf1spfHeHelDu1M6BRXuCjFafXhz8i3lPWgYqVpfx13igVCRf47UH652yLnsmepCBWgyBTWAcOyF1Qx8YGtZnob1TN+6xEwzpcWVy7QO9P92sKA9SK+/NHsqf13COt0JHCtTV1OlTQW+JAKyxe1Hl7+s95z3KCgFKQS+3As1JV7Na+g+LCR2Ievu8d5D0L7GwoDreUv4374LRaFkNsHOqWbU9nhQjdMVr7a/i8O/4hbptaSzqqkgYFiNFU/omW5qwIz7sp4nscITRE3gua6bzklMZ8ECn1iqAWt0a6geki5DaL8qYapTCChjlWsExqFuxiWP35TUCddEd8ACbMGs+gQFyDOozfBDG17dZO0mCwW+PzCL2jbICDNai5/jm1Qr6ML56jzUaIDz0GLPTSaex1UDDwkQ9o7mXWC0R7jWnzbkHRWcomVbWmGqL1rjdoacs/R9ujqUuBA6A5VL/qkQ1xHL42EXooprC8wrrfR68zMMFxOwU7CYHJ7bhG/Q4rNsXDBcMo1Adiq9LXbXm/QJj0u/jgZGssz0nnKKUFJcxzuANK96zWwf1DXasUcOoEuEatm1rmP5wrBJmW/ZwT6aBBiR2OSJ0xr8tQ6ObmdKjyb+1eEXb1437R2IdhDUdk5PRztH2YFt2pmuL4/LmILFAvPdiyMtDHNj+Kh4sV4MlXbWPrrI97YBOFpFlX+gnewKKfFZkHE7dity34dUQ2Gne6sAGx1zxyjZv5KBM26lRHF45XqFNJ1RQ3hMymJHsyYNsMO41BWrGv19PA468ecw9HcRN0whjUTgns8ZVaC4hiJsgY07aAEBHm90/uhhjO/Wmb7wuVadhl9RnHeQjpx4gwCrLz5i5s5It1sBwfDb0Fe+PCpLkc+wIINK2Y86kPthR6gJwW75zuoN5C0CAiDwfU73vaAZahzf4VLNlM0U04OtHYBi13YgPoNmGHRelZVEy2KuKVZghD14vSlY+JrMBDdm2y2thFV+BrihL7+fQ5wcYnxGelawDuoSR5+bDDkr6RL40L4xyfAhxlrOn0uA28ghGeWguaWKEv5nBrrveu1ueVy1MvGUYBY+IlEr8NdDNRdmEzXt39kGld86xOfAH/xL1VmugaXOGaPB2qc7WDRkW6k5F6n3PkIzdPXyONKp1DkOg3ocSMZMTs6GKj9C3vODZ6ZQpwNDYLMT+CmEL18GRjXNcZlP/LnhiAIscYTL1+iHWDYvRmvPMwtOHhCnEXIU3FTbP+6QRGA6qydbnneqVhXowcLmbMIz16IC1kwhZj75/M53sKYX2zRgOSTAfNSD/5lZYSNUxJfKTDgiaFEggrCrd+3Cc+chzslI3zDXEKTrvlcX2InC9uH+fsypyHw+AvY2OmBGQMIIc8fE3tNO0gBTVqXsdsE76YwHr29dzQckusuyJsBfSVclrvsNCZ1PQDL8H3cRs3HE9nUkx5bbJYWsPxb825gnEpWU9Z9Ktzvsli7/heOlDKpHxJb1uCrWqf8gRnWmq3zfSSrUXBHSLu62MrkXTjWgapUVxMGkrnzR0E4PMy1bFcyDpEQe15TayWBM1B6jrIG+0DRR9OaCUPwD7exNmjZb9M81us+AIRfyzJPZGmfHuT9SNzFfNuQdFZyiZVtaYaovWuN2irI3zQatKCDnQIXpr0VhG0Gop8c/zroWBoN/aVKmn8skSFvADOjoZAixg6K1y9wFi8peCmimFZ3ZzCVsG6EU9Svlbq5+wn7D6y+dAYdaPms4gwCrLz5i5s5It1sBwfDbz4X4VxqIpcTC9NaYKqA7GKK+aTrZWUwwN21QOtr8eqxSgJ1U9eCOcWXQd+p36Gy4fY+t9c2CsVNbNl1ghxa9bI8U6e6FTd/vvBaq9jrKditq4mNCaiogmfPK6M48UYI8jZMCdd/9C8BqvUj4bYU5byWASEG6BBGdK8Klfi/a4LWt3ivC4u9QBTfb/vCmNJi/QAfabcPG+UsWmsYNRK+g8hMcsuBmhh48NphRvebVQqq6ncKxc1nFHWMW5M6of+z8c1HddnieDP9GaBsq+ysljKslYrt989PY9xsbmkr3X/oCfiFU4NfcOhee++ngW0XpZAVt1I2Qnc1alwbnoNqMMhXIB95ikLxSFqH226Zq9sG/trdr2SAVurnyWsfHNjuIlBWKDOrd7VrYFJvQ9xbVomKqQjuh9dzf2nvVrBzbEF0CZY6izkY/RQY5r9k93/y2NG7o07nMYjOtZYYeNUoik7GbK/HzQl1S7s/FChnt9M6fE0UyuPmttO98hqzxQbteMalMtSce2WLcjyXVGfpqdBkYym4gZByccS6antt4oLdluWSSJsHX1IcXhQy6oJ+Ahjw9hFYwXLHPLoCo3jEliUAK4179wtYtHsO0abLx4+hmtM5Fz7wUVahBA9supOTf/FD4siZMMof5W3vm5DedhqGANlht3mI6RmIhv48QVtneMsUzYC4NDhZD4M5R6p7GXBqcpu3FaEF/0I0e3LceX1HN+iDqKRPuGzvpac/1tsGPIteADxu9OYoap2z3F1CzSg/Uua8l/KEztAKDcvbhNU/YUc2lhgxgfdb4e+P9TZ7RaX82s627u0CbFsfGE/1hLpb5Mc2vk1uDGrdIcbWA6xhpYAHYhEYUl9c75Y/R/0gl6r9+m6cI0BvBY5Aa5NBRc6UMvsO/POw5Ccr79sJziceaV3YwrYEkjp6Ki+OYrGu954AA+dJ9WsvNGBFGMrKAfQ9VUC/ATkJfTloMltDeV5Ao9zkaay3dKAa5/PxAGRDAUcQLDF7uVXbD1vFgE/+RXiwzS5N7cr3aFBdRY7XAmFz/fb0/KSpR8CQ/lokpmM2mltJ9vGPgiqb5nZl9Ku7d2GlgAdiERhSX1zvlj9H/SBujBPoO1fpoOu5F35cdHa5kSFvADOjoZAixg6K1y9wFlj0Ez5ksUW3WU63E7e4qtDUCKWwjjU5f0Fd57VyVzpC6CdCScBjYSzT9rZLVskq61aOWrDDUNKqAQ3+nX/BBW3cQTEcOVdc15ngVXcSS/aK2QFMdiKQlqm15fErJdwqyeza7hflKTiCzUdu5VGlFW9qCt8syHoosA2NzfosJdTdN8bWHnoDr5N25et+p/nvjjOzZRaLYoY/fr/k5hqptOk=\\\");\\n    return $.exports;\\n})();\"},{\"col_type\":\"movie_3\",\"name\":\"编辑公告\",\"path\":\"devInfoEdit\",\"rule\":\"js:\\naddListener('onClose', $.toString(()=>{\\n    putMyVar(\\\"devInfo\\\",''); //清除历史公告\\n}));\\nsetPageTitle('编辑公告');\\n// let {nowJx,MyJiexi,jxsRoute} = MY_PARAMS;\\nconst {color,small,api, getFile,getApi} = $.require(\\\"hiker://page/utiliy\\\");\\n// let houseFile = getFile||false;\\nvar dev_info_url = getApi('infoGetUrl');\\n// log(dev_info_url);\\nvar get_info = function(qq){\\n    qq = qq||'434857005';\\n    let dev_info_url = dev_info_url+qq;\\n    let back_code = JSON.parse(request(dev_info_url));\\n    let dev_info=back_code.result||back_code.detail;\\n    return dev_info;\\n};\\nvar before_refresh = function(){\\n    let dev_set_info = getMyVar(\\\"dev_set_info\\\").split('$$');\\n    let dev_info_url = dev_set_info.slice(-1)[0];\\n    let back_code = JSON.parse(request(dev_info_url));\\n    let dev_info=back_code.result||back_code.detail;\\n    putMyVar(\\\"devInfo\\\",dev_info);\\n    return dev_info\\n};\\nlet d = [];\\nd.push({\\n    title:'编辑公告',\\n    desc:'支持md语法,点击进入学习Md语法\\\\n保存公告按钮在文本框最下面',\\n    col_type:'text_1',\\n    url:'https://www.runoob.com/markdown/md-tutorial.html'\\n});\\nd.push({\\n    title:'返回',\\n    col_type:'text_2',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        back(false);\\n        return 'hiker://empty'\\n    })\\n});\\nif(!getMyVar('devInfo')){\\n    before_refresh();\\n}\\nlet empty = 'hiker://empty';\\nd.push({\\n    title:'阅览查阅',\\n    col_type:'text_2',\\n    // url:$(getMyVar('devInfo')).confirm()\\n    url:$(empty).rule(()=>{\\n        require(\\\"https://gitlab.com/hjdhnx/hiker/-/raw/main/js/marked.min.js\\\");\\n       let devInfo=\\\"\\\";\\n       try{\\n          devInfo=marked.parse(getMyVar('devInfo'));\\n       }catch(e){}\\n        setResult([\\n            {\\n                title:devInfo,\\n                col_type:'rich_text',\\n            }\\n        ]);\\n    })\\n});\\nd.push({\\n    desc: \\\"快来编辑你的公告吧~\\\",\\n    col_type: 'input',\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getMyVar('devInfo', '')||\\\"\\\",\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        onChange: 'putMyVar(\\\"devInfo\\\",input)'\\n    }\\n});\\nd.push({\\n    title:\\\"保存公告\\\",\\n    col_type: 'text_center_1',\\n    url:$('确认保存公告吗？将会与道长仓库服务器通讯').confirm(()=>{\\n        let dev_set_info = getMyVar(\\\"dev_set_info\\\").split('$$');\\n        let input_text = getMyVar('devInfo', '');\\n        if(input_text.length >= 4){\\n            let info_set_url= dev_set_info[2];\\n            let send_data = {\\\"params\\\":\\n                    {\\\"data\\\": {\\\"info\\\": input_text},\\n                        \\\"name\\\": dev_set_info[0],\\n                        \\\"password\\\": dev_set_info[1]}\\n            };\\n            // log(send_data);\\n            let par2 = {headers:{'content-type':'application/json;charset=UTF-8','User-Agent':dev_set_info[3]},body:JSON.stringify(send_data),method:'POST'};\\n            // par2 = JSON.stringify(par2); //x5里面请求才需要编码\\n            try {\\n                let back_ret = request(info_set_url, par2);\\n                back_ret = JSON.parse(back_ret).result;\\n                if(back_ret.status===0){\\n                    // refreshPage();\\n                    return 'toast://保存成功\\\\n'+back_ret.detail;\\n                }else{\\n                    return 'toast://保存失败\\\\n'+back_ret.detail;\\n                }\\n            }catch (e) {\\n                return 'toast://错误\\\\n'+e.message;\\n            }\\n        }else{\\n            confirm({title:'道长提示',content:'虽然你很懒，但是公告至少写4个字吧！'});\\n            return 'hiker://empty'\\n        }\\n    })\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"预处理依赖文件\",\"path\":\"libs\",\"rule\":\"if(getAppVersion()>=3200){\\n  try{\\n  rc(\\\"hiker://files/rules/js/$hiker.js\\\", -1);\\n  //$.setRoot('https://hjdhnx.coding.net/public/hiker/hiker/git/files/master/js/');\\n  $.setRoot();\\n  $.setLib({\\n    lsg: \\\"lsg.js\\\", //本地储存\\n    file: \\\"file.js\\\", //文件os\\n    fileSelect: \\\"fileSelect.js\\\", //文件选择器\\n    dt: \\\"dt.js\\\", //动态分类\\n    dr: \\\"dr.js\\\", //dr模板依赖\\n    drpre: \\\"drpre.js\\\", //dr模板预处理\\n    drup: \\\"drup.js\\\", //dr模板自动更新\\n    drmatch: \\\"drmatch.js\\\", //dr模板自动模板匹配\\n    drm: \\\"drm.js\\\", //dr模板小程序\\n    cms: \\\"cms.js\\\", //cms模板依赖\\n    cmspre: \\\"cmspre.js\\\", //cms预处理\\n    cmsm: \\\"cmsm.js\\\", //cms模板小程序\\n    libcheck: \\\"libcheck.js\\\", //dr检测依赖\\n    ruleEditor: \\\"ruleEditor.js\\\", //写页源神器小程序\\n    houseLazy: \\\"houseLazy.js\\\", //仓库通免\\n    lazy: \\\"lazy.js\\\", //香免\\n    sub: \\\"sub.js\\\", //道德经订阅\\n    hikerUi: \\\"hikerUi.js\\\", //海阔组件依赖\\n  });\\n  }catch(e){\\n      //toast('请尝试点击仓库主页的升级仓库旁边的按钮升级$扩展，否则某些功能不能正常使用');\\n      confirm({\\n          title: '提示-点击确定可以导入',\\n          content: '请尝试点击仓库主页的升级仓库旁边的按钮升级$扩展，否则某些功能不能正常使用',\\n          confirm: $.toString(()=>{\\n              const {getApi} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n              let ruleHead = '海阔视界，网页插件￥js_url￥$hiker@';\\n              let url = getApi('importUrl')+\\\"5111\\\";\\n              let importUrl = 'rule://'+base64Encode(ruleHead+url);\\n              return importUrl\\n          }),\\n          cancel: $.toString(()=>{\\n              \\n          }),\\n      })\\n  }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/other/30.svg"},{"last_chapter_rule":"","title":"规则查重工具","author":"Reborn","version":4,"type":"other","url":"hiker://fyAll","col_type":"text_2","class_name":"规则查重","class_url":"home","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\n\n// 所有开关  开则 true  关则 false\n// 规则去重开关\nlet clearDuplicate = true;\n\nvar keyList = [];\n// TODO 优化能匹配 hiker://xxx 的链接\nvar domainRegExp = new RegExp(\"([a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\\\\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+\\\\.?)\");\n// domainRegExp = new RegExp(\"[hiker|http|https]://(.*?)/\");\nfunction isKeyInList(key) {\n    if (keyList.indexOf(key) > -1) {\n        return true;\n    }\n    return false;\n}\n\nlet rules = JSON.parse(getResCode());\n// let url = getUrl();\nlet url = \"hiker://home\";\n/hiker:\\/\\/(.*)/.test(url);\nlet category = RegExp.$1;\nswitch (category) {\n    case \"home\":\n        for (let i = 0; i < rules.length; i++) {\n            let rule = rules[i];\n            let key = domainRegExp.test(rule.url) === true ? RegExp.$1 : \"\";\n            // TODO 修复匹配出 fypage.html 的问题\n            if (key === \"\" || key === \"fypage.html\" || isKeyInList(key) === true) {\n                continue;\n            }\n            keyList.push(key);\n        }\n        break;\n    case \"bookmark\":\n        break;\n    default:\n        setError(\"未知分类，无法解析\");\n        break;\n}\n\nvar mRulesList = new Array(keyList.length);\nfor (let i = 0; i < mRulesList.length; i++) {\n    let rulesTemp = rules;\n    mRulesList[i] = rulesTemp.filter(item => {\n        let result = false;\n        try {\n            result = item.url.indexOf(keyList[i]) > -1;\n        } catch (e) {  result = false;  }\n        return result;\n    });\n}\n\nvar keyNum = 0;\nvar itemsTemp = [];\nfor (let i = 0; i < mRulesList.length; i++) {\n    let mRules = mRulesList[i];\n    if (mRules.length >= 2) {\n        itemsTemp.push({\n            title: keyList[i],\n            col_type: \"text_1\"\n        });\n        keyNum++;\n        for (let j = 0; j < mRules.length; j++) {\n            let rule = mRules[j];\n            itemsTemp.push({\n                title: rule.title,\n                url: \"hiker://home@\" + rule.title,\n            });\n        }\n    }\n}\n\nif (clearDuplicate === true){\n    var obj = {};\n    itemsTemp = itemsTemp.reduce((current, next) => {\n        obj[next.title] ? \"\" : obj[next.title] = true && current.push(next);\n        return current;\n    }, []);\n}\n\nitems.push({\n    title: \"总规则数：\" + rules.length + \"，当前待处理：\" + keyNum + \" 组\",\n    desc: \"少掉的规则去哪里了？当然是不重复的规则啦！\\n(然而还有一部分是匹配失败的结果🙈️...)\",\n    col_type: \"pic_1\"\n});\n\nwhile (itemsTemp.length) items.push(itemsTemp.shift());\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js: // From Zruiry\nvar jsonZr = JSON.parse(fetch('hiker://home'));\r\nvar res = {};\nvar d = [];\nvar n = 0;\nfor (var i = 0; i <jsonZr.length; i++) {\n    if ((jsonZr[i].title + JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) + JSON.stringify(jsonZr[i].url).match(/.*?hiker.*?/)).includes(getUrl().split('#')[1]))\n    n++;\n}\nd.push({\n    title: '您的本地共有' + jsonZr.length + '条规则',\n    content: \"共搜索到\" + n + \"条结果\",\n});\nfor (var i = 0; i <jsonZr.length; i++) {\n    var r = {};\n    r.title = jsonZr[i].title;\n    var ruleAuthor = jsonZr[i].author;\n    var ruleGroup = jsonZr[i].group;\n    var ruleUrl = JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//);\n    r.desc = \"规则版本：\" + jsonZr[i].version;\n    if (jsonZr[i].author == null || jsonZr[i].author == undefined || jsonZr[i].author == '') {\n       ruleAuthor = \"未知\";\n} \n    if(JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == null || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == undefined || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == '') {\n        ruleUrl = \"无法识别\";\n}\n    if (JSON.stringify(jsonZr[i].url).includes(\"hiker\")) {\n       ruleUrl = jsonZr[i].url;\n}\n    if (jsonZr[i].group == null || jsonZr[i].group == undefined || jsonZr[i].group == '') {\n       ruleGroup = \"暂无分组\";\n}\n    r.content = \"规则作者：\" + ruleAuthor + \"\\n所在分组：\" + ruleGroup + \"\\n站点网址：\" + ruleUrl;\n    r.url = 'hiker://home@' + jsonZr[i].title;\n    r.img = 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime() / i * (i + 1);\n    if ((jsonZr[i].title + JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) + JSON.stringify(jsonZr[i].url).match(/.*?hiker.*?/)).includes(getUrl().split('#')[1]))\n    d.push(r);\n}\r\nres.data = d;\r\nsetSearchResult(res);\r","search_url":"hiker://bookmark#**","titleColor":"#ffff7000","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Github加速","author":"小棉袄🌞","version":0,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"\",\n    url: \"https://ghproxy.com/\",\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"TG搜索","author":"@LoyDgIk","version":6,"type":"tool","url":"hiker://empty#noRefresh#","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet layout = [];\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    title: '<h1 style=\"text-align: center;\"><font color=\"#FEBD6F\">meow*TG</font><br><font color=\"#FB6C73\">最懂你的TG搜索~Meow</font></h1>',\n    col_type: \"rich_text\"\n});\nlayout.push({\n    col_type: \"input\",\n    url: \"input?'hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key='+encodeURIComponent(input):'toast://请输入内容'\",\n    title: \"🔍\"\n});\nconst id = Date.now() + MY_RULE.title + \"关键词\";\nlayout.push({\n    col_type: \"blank_block\",\n    extra: {\n        id: id\n    }\n});\nsetResult(layout);\n\ntry {\n    let data = JSON.parse(request(\"https://meow.tg/api/results/keywords\"));\n    let keyList = [];\n    keyList.push({\n        title: \"<strong>🎈近期热门关键词：</strong>\",\n        col_type: \"rich_text\",\n    });\n    data.keywords.forEach(key => {\n        keyList.push({\n            title: key,\n            col_type: \"flex_button\",\n            url:\"hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key=\"+encodeURIComponent(key)\n        });\n    });\n    addItemAfter(id, keyList);\n}catch(e){\n    log(e.toString())\n}\n","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"搜索\",\"rule\":\"js:\\nlet data = \\\"{}\\\";\\nlet source = MY_PARAMS.sourceName;\\nlet zhName = MY_PARAMS.zhName;\\nlet avatar = MY_PARAMS.avatar;\\nlet page = Number(getMyVar(\\\"page\\\", \\\"0\\\")) + MY_PAGE;\\nlet keyword = getMyVar(\\\"key\\\", getParam(\\\"key\\\"));\\nlet perPage = 10;\\nlet layout = [];\\nif (source) {\\n    data = request(buildUrl(\\\"https://meow.tg/api/results/querySource\\\", {\\n        keyword: keyword,\\n        page: page,\\n        perPage: perPage,\\n        sourceName: source\\n    }));\\n} else {\\n    data = request(buildUrl(\\\"https://meow.tg/api/results/query\\\", {\\n        keyword: keyword,\\n        page: page,\\n        perPage: perPage\\n    }));\\n}\\naddListener(\\\"onClose\\\", \\\"clearMyVar('page');clearMyVar('key');\\\");\\ndata = JSON.parse(data);\\nif (MY_PAGE === 1) {\\n    if (avatar) {\\n        layout.push({\\n            col_type: \\\"card_pic_3\\\",\\n            url: \\\"hiker://empty\\\",\\n        }, {\\n            col_type: \\\"card_pic_3\\\",\\n            url: \\\"hiker://empty\\\",\\n            pic_url: avatar\\n        });\\n        layout.push({\\n            col_type: \\\"big_blank_block\\\"\\n        });\\n    }\\n    if (zhName) {\\n        layout.push({\\n            title: \\\"““””<strong><big>\\\" + zhName + \\\"</big></strong>\\\",\\n            col_type: \\\"text_center_1\\\",\\n            url: \\\"hiker://empty\\\",\\n            extra: {\\n                lineVisible: false\\n            }\\n        });\\n        layout.push({\\n            col_type: \\\"big_blank_block\\\"\\n        });\\n    }\\n    layout.push({\\n        col_type: \\\"input\\\",\\n        url: \\\"if(input){putMyVar('key',encodeURIComponent(input));refreshPage();}else{'toast://请输入关键词'}\\\",\\n        title: \\\"🔍\\\",\\n        extra: {\\n            defaultValue: decodeURIComponent(keyword)\\n        }\\n    });\\n    layout.push({\\n        col_type: \\\"text_2\\\",\\n        url: \\\"hiker://empty\\\",\\n        title: \\\"总计\\\" + data.total,\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    let pageNum = Math.ceil(data.total / perPage);\\n    layout.push({\\n        col_type: \\\"text_2\\\",\\n        url: $(\\\"\\\", \\\"最大:\\\" + pageNum).input((m) => {\\n            let n = Number(input);\\n            if (Number.isNaN(n)) {\\n                return \\\"toast://请输入数字\\\";\\n            }\\n            if (n > m || n < 1) {\\n                return \\\"toast://数字不对哦\\\";\\n            }\\n            putMyVar(\\\"page\\\", (n - 1) + \\\"\\\");\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }, pageNum),\\n        title: \\\"共\\\" + pageNum + \\\"页\\\",\\n    });\\n\\n\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n}\\nif (data.finalList && data.finalList.length > 0) {\\n    setPageTitle(\\\"「\\\" + decodeURIComponent(getParam(\\\"key\\\")) + \\\"」#\\\" + page);\\n}\\n\\n\\nfor (let item of data.finalList) {\\n    layout.push({\\n        col_type: \\\"avatar\\\",\\n        pic_url: item.source.avatar,\\n        //url: \\\"tg://resolve?domain=\\\" + item.source.name_en + \\\"&post=\\\" + item.results.id,\\n        url: \\\"hiker://empty\\\",\\n        title: item.source.name_zh || item.source.name_en\\n    });\\n    layout.push({\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"tg://resolve?domain=\\\" + item.source.name_en + \\\"&post=\\\" + item.results.id,\\n        title: \\\"跳转\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"flex_button\\\",\\n        url: \\\"hiker://page/详细#noRecordHistory##noHistory##fullTheme#?name=\\\" + item.source.name_zh,\\n        title: \\\"详细\\\",\\n        extra: {\\n            uniqueID: item.results.uniqueID,\\n        }\\n    });\\n    layout.push({\\n        col_type: \\\"rich_text\\\",\\n        title: \\\"<pre><code>\\\" + item.results.text + \\\"</code></pre>\\\" /*<br><big>匹配情况</big><br>\\\"+(item.results.highLight[0]||\\\"\\\").replace(/style=\\\"background:/g,'color=\\\"').replace(/\\\\n/g,\\\"<br>\\\")*/ ,\\n    });\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"详细\",\"path\":\"详细\",\"rule\":\"js:\\nlet data = request(\\\"https://meow.tg/api/results/detail/\\\" + MY_PARAMS.uniqueID);\\n\\n\\ndata = JSON.parse(data);\\nsetPageTitle(\\\"详细\\\");\\nlet layout = [];\\n\\nlayout.push({\\n    col_type: \\\"card_pic_3\\\",\\n    url: \\\"hiker://empty\\\",\\n}, {\\n    col_type: \\\"card_pic_3\\\",\\n    url: \\\"hiker://empty\\\",\\n    pic_url: data.source.avatar\\n});\\nlayout.push({\\n    col_type: \\\"big_blank_block\\\"\\n});\\nlayout.push({\\n    title: \\\"““””<strong><big>\\\" + data.source.name_zh + \\\"</big></strong>\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"big_blank_block\\\"\\n});\\nlayout.push({\\n    col_type: \\\"text_2\\\",\\n    url: \\\"tg://resolve?domain=\\\" + data.source.name_en + \\\"&post=\\\" + data.detail.messageID,\\n    title: \\\"进入频道\\\"\\n});\\nlayout.push({\\n    col_type: \\\"text_2\\\",\\n    url: data.source.previewLink,\\n    title: \\\"进入预览\\\"\\n});\\n\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    url: $.toString(() => input ? \\\"hiker://page/搜索?page=fypage&key=\\\" + encodeURIComponent(input) : \\\"请输入内容\\\"),\\n    title: \\\"🔍\\\",\\n    extra:{\\n        sourceName: encodeURIComponent(data.source.name_en),\\n        avatar: data.source.avatar,\\n        zhName: data.source.name_zh\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>🐱搜索结果：</strong><br>\\\" + data.detail.rawText.replace(/\\\\n/g, \\\"<br>\\\")\\n});\\nlet links = data.detail.rawText.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\nif (links.length) {\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"line\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"rich_text\\\",\\n        title: \\\"<strong>🥳阿里链接：</strong>\\\",\\n        url: \\\"hiker://empty\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    \\n\\n    links.forEach((link, index) => {\\n        layout.push({\\n            title: '🔗 ' + (links.length > 1 ? '链接' + (index + 1) + '：' : '') + link,\\n            url: 'hiker://page/detail?rule=云盘汇影&url=' + link + '??fypage',\\n            col_type: \\\"text_1\\\"\\n        });\\n    })\\n}\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\n\\nlayout.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"⚡智能搜索建议⚡\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>🎈可能感兴趣的关键词：</strong>\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\ndata.wordList.forEach(key => {\\n    layout.push({\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"hiker://page/搜索#noRecordHistory##noHistory#?page=fypage&key=\\\" + encodeURIComponent(key),\\n        title: key\\n    });\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<strong>😘推荐结果：</strong>\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\ndata.recommends.forEach(item => {\\n    layout.push({\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://page/详细#noRecordHistory##noHistory##fullTheme#\\\",\\n        title: item._source.rawText,\\n        extra: {\\n            uniqueID: item._source.uniqueID,\\n        }\\n    });\\n});\\nsetResult(layout);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI生成器","author":"","version":18,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"终极大招，输入网站地址生成规则\",\n    url: \"\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入要生成的小程序名\",\n    pic_url: \"\",\n    extra: {\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"r1\", input);\n        }),\n        defaultValue: getMyVar(\"r1\", \"\")\n    }\n});\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入网站地址，如https://cn.bing.com/\",\n    pic_url: \"\",\n    extra: {\n        type: \"textarea\",\n        height: 2,\n        highlight: true,\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"rule\", input);\n        }),\n        defaultValue: getMyVar(\"rule\", \"\")\n    }\n});\n\nd.push({\n    title: \"生成规则\",\n    url: $(\"#noLoading#\").lazyRule((rule1) => {\n        let url = getMyVar(\"rule\", \"\");\n        let r1 = getMyVar(\"r1\", \"\");\n        if (url == \"\" || r1 == \"\") {\n            return \"toast://请先在上面输入网站地址和名称\";\n        }\n        if (url.includes(\"@\")) {\n            return \"toast://网站地址格式不对\";\n        }\n        let arr = storage0.getItem(\"list\", []);\n        arr = arr.filter(it => it.url != url);\n        arr.push({\n            name: r1,\n            url: url\n        });\n        storage0.setItem(\"list\", arr);\n        refreshPage();\n        rule = JSON.parse(fetch(\"hiker://home@\" + rule1));\n        rule.find_rule = \"js:\\nvar 网站 = '{RULE}';\\neval(JSON.parse(fetch('hiker://page/home')).rule)\";\n        rule.url = \"hiker://empty\";\n        return \"海阔视界￥home_rule￥\" + JSON.stringify(rule)\n            .replace(\"{RULE}\", url)\n            .replace(rule1, r1);\n    }, MY_RULE.title),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"来个示例\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        putMyVar(\"rule\", \"https://cn.bing.com/\");\n        putMyVar(\"r1\", \"必应AI\");\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\nlet arr = storage0.getItem(\"list\", []).reverse();\nfor (let it of arr) {\n    d.push({\n        title: it.name,\n        url: $(\"#noLoading#\").lazyRule((item) => {\n            putMyVar(\"rule\", item.url);\n            putMyVar(\"r1\", item.name);\n            refreshPage();\n            return \"toast://已填充\"\n        }, it),\n        col_type: \"flex_button\",\n        extra: {\n            longClick: [{\n                title: \"删除\" + it.name,\n                js: $.toString((u) => {\n                    let arr = storage0.getItem(\"list\", []);\n                    arr = arr.filter(it => it.url != u);\n                    storage0.setItem(\"list\", arr);\n                    refreshPage();\n                    return \"toast://已删除\"\n                }, it.url)\n            }, {\n                title: \"跳转\" + it.name,\n                js: $.toString((u) => {                    \n                    return \"hiker://home@\" + u\n                }, it.name)\n            }, {\n                title: \"删除全部\",\n                js: $.toString(() => {\n                    clearItem(\"list\");\n                    refreshPage();\n                    return \"toast://已删除\"\n                })\n            }]\n        }\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            if (!white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"轻合集生成器","author":"道长","version":10,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\n    const {genRule}=$.require(\\\"hiker://page/genApi?rule=道长仓库Pro\\\");\\nconst {color, small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\naddListener('onClose', $.toString(()=>{\\n    clearVar(\\\"house.qhj\\\");\\n}));\\nlet d=[];\\nd.push(\\n    {\\n        title:\\\"轻合集生成小程序1.1.0\\\",\\n        col_type:\\\"text_1\\\",\\n        url:$(\\\"按照对应格式输入就行了,要来个示例吗？\\\\n支持本地文件与在线文件\\\").confirm(()=>{\\n            putVar(\\\"house.qhj\\\",\\\"轻合集.逐风者@http://hiker.nokia.press/hikerule/dev/json_list?name=510381049\\\");\\n            refreshPage(true);\\n        })\\n    });\\nlet sel_title = ['共享','自用'].map((it) => {\\n    let qhj_mode = getItem('house.qhj_mode','共享');\\n    if(it===qhj_mode){\\n        return '👉'+it;\\n    }else{\\n        return it;\\n    }\\n});\\nd.push(\\n    {\\n        title:\\\"当前模式:\\\"+color(getItem('house.qhj_mode','共享'),'#ff7000'),\\n        col_type:\\\"text_1\\\",\\n        url:$(sel_title,2).select(() => {\\n            setItem('house.qhj_mode',input.replace('👉',''));\\n            refreshPage(true);\\n            return 'toast://已设置生成模式为:'+input\\n        })\\n});\\n\\nd.push({\\n    title: '生成',\\n    desc: \\\"轻合集.dz@http://hiker.nokia.press/hikerule/dev/json_list?name=510381049\\\",\\n    extra: {\\n        onChange: \\\"putVar('house.qhj',input)\\\",\\n        titleVisible: true,\\n        defaultValue:getVar('house.qhj')\\n    },\\n    url:$.toString((genRule) => {\\n        // 定义字符串替换全部函数\\n        if(getVar('house.qhj')&&getVar('house.qhj').includes('@')) {\\n            let new_name = getVar('house.qhj').split('@')[0];\\n            let new_url = getVar('house.qhj').split('@')[1];\\n            if(!new_url.startsWith('http')){\\n                if(new_url.startsWith('/storage/')||new_url.startsWith('/sdcard/')){\\n                    new_url = 'file://'+new_url;\\n                }else if(new_url.startsWith('hiker://')){\\n\\n                }else {\\n                    return 'toast://文件地址有误'\\n                }\\n            }\\n            if(getItem('house.qhj_mode','共享')==='共享'){\\n                if(!new_url.startsWith('http')){\\n                    let text = fetch(new_url);\\n                    if(text&&text.length>2){//本地有内容且两个字符以上\\n                        try {\\n                            JSON.parse(text);\\n                            const {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/taskCall?rule=道长仓库Pro\\\");\\n                            log('开始执行任务仓库获取文件外链');\\n                            let result = taskCall(15,'uploadText',[new_name+'.json',text]);\\n                            let short_url = new_url;\\n                            log('返回状态码:'+result.status);\\n                            if (result.status == 0) {\\n                                short_url = result.result[0];\\n                                log(short_url);\\n                            }\\n                            let import_rule=genRule(new_name,short_url);\\n                            copy(import_rule);\\n                            putVar(\\\"import_rule\\\",import_rule);\\n                            refreshPage(true);\\n                            return 'toast://成功生成轻合集:' + new_name+'并复制到剪切板';\\n                        }catch (e) {\\n\\n                        }\\n                    }\\n                }\\n            }\\n            let import_rule=genRule(new_name,new_url);\\n            copy(import_rule);\\n            putVar(\\\"import_rule\\\",import_rule);\\n            refreshPage(true);\\n            return 'toast://成功生成轻合集:' + new_name+'并复制到剪切板';\\n        }else{\\n            return 'toast://你个憨批，本道不陪你玩了';\\n        }\\n    },genRule),\\n    col_type: \\\"input\\\"\\n});\\nd.push({\\n    title:\\\"复制剪切板口令\\\",\\n    desc:\\\"生成后会自动复制,这里留个复制历史记录\\\",\\n    col_type:\\\"text_1\\\",\\n    url:$().lazyRule(()=>{\\n        copy(getVar(\\\"import_rule\\\"));\\n        return \\\"hiker://empty\\\"\\n    })\\n});\\nd.push({\\n    title: '““””<span style=\\\"color: #ff7000\\\">导入轻合集</span>',\\n    url: $().lazyRule((import_rule)=>{\\n        if(!import_rule){\\n            return 'toast://没有历史口令，无法导入';\\n        }\\n        let ruleCode=parsePaste(import_rule.split(\\\"\\\\n\\\")[0]);\\n        importUrl = 'rule://' + base64Encode(ruleCode);\\n        return importUrl\\n    },getVar(\\\"import_rule\\\")),\\n    col_type: 'text_1'\\n});\\nd.push({\\n    title:getVar(\\\"import_rule\\\"),\\n    col_type:\\\"long_text\\\"\\n});\\n\\nsetResult(d)\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"装逼生成","author":"","version":19,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://cc.bjadjty.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"骚话连篇","author":"道长","version":2,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nvar list = [];\nlet html=request('https://www.hjna.com/juzi/248859.html');\nlet arr=pdfa(html,'.entry-content&&p:not(:has(a))');\narr.forEach(it=>{\n    let t=pdfh(it,'body&&Text');\n    t = t.split('、')[1];\n    list.push({\n    title: t,\n    url:'copy://'+t ,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n});\nd.push({\n    title:'保存到本地',\n    col_type:'text_2',\n    url:$('#noLoading#').lazyRule((list)=>{\n        if(list.length>0){\n        list = list.map(x=>x.title).join('\\n');\n        let p='hiker://files/rules/dzHouse/txt/骚话.txt';\n        writeFile(p,list);\n        return 'toast://已保存至:'+p\n        }\n        return 'hiker://empty'\n    },list)\n});\nlet code = `骚话连篇,@js:let data=request('hiker://files/rules/dzHouse/txt/骚话.txt').split(\\\\n');data[Math.floor(Math.random() * data.length)]`;\nd.push({\n    title: '复制一言接口代码',\n    url: 'copy://'+code,\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd = d.concat(list);\nsetResult(d)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/20.png"},{"last_chapter_rule":"","title":"Iconfont","author":"TyrantGenesis","version":1,"type":"other","url":"https://www.iconfont.cn/api/collections.json?type=fyclass&sort=fysort&limit=8&page=fypage","col_type":"movie_3","class_name":"所有图标库&官方图标库&多色图标库&单色图标库","class_url":"3&1&2&4","area_name":"","area_url":"","sort_name":"时间&点赞数&收藏数&图标数&访问量","year_name":"","sort_url":"time&like&favorite&icon&visit","year_url":"","find_rule":"js:\n$.require('hiker://page/Iconfont').baseParse()","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"name\":\"Iconfont\",\"path\":\"Iconfont\",\"rule\":\"const Iconfont = {\\n    empty: 'hiker://empty',\\n    d: [],\\n    files: {\\n        likes: \\\"hiker://files/rules/js/TyrantGenesis_Iconfont收藏.js\\\",\\n    },\\n    collectionListParse: (list) => {\\n        list.forEach(item => {\\n            Iconfont.d.push(\\n                {\\n                    title: item.User.nickname,\\n                    url: $(Iconfont.empty).rule((id) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.userParse(id)\\n                        setResult(Iconfont.d)\\n                    }, item.User.id),\\n                    pic_url: 'https:'+item.User.avatar+'@Referer=https://www.iconfont.cn/',\\n                    col_type: 'avatar',\\n                },\\n                {\\n                    title: '图标集：'+item.name,\\n                    url: $(Iconfont.empty).rule((id) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.collectionParse(id)\\n                        setResult(Iconfont.d)\\n                    }, item.id),\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false,\\n                    },\\n                }\\n            )\\n            item.icons.forEach(icon => {\\n                let svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(icon.show_svg)\\n                Iconfont.d.push({\\n                    title: icon.name,\\n                    url: $(Iconfont.empty).rule((name, show_svg) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.iconParse(name, show_svg)\\n                        setResult(Iconfont.d)\\n                    }, icon.name, icon.show_svg),\\n                    pic_url: svg_url,\\n                    col_type: 'icon_5',\\n                })\\n            })\\n            Iconfont.d.push({\\n                col_type: 'line_blank'\\n            })\\n        })\\n    },\\n    userParse: (uid) => {\\n        const url = 'https://www.iconfont.cn/api/user/collections.json?uid='+uid+'&type=icon'\\n        const json = JSON.parse(fetch(url))\\n        const list = json.data.collections\\n\\n        list.forEach(item => {\\n            if (item.has_secret === 0) {\\n                Iconfont.d.push({\\n                    title: '图标集：'+item.name,\\n                    url: $(Iconfont.empty).rule((id) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.collectionParse(id)\\n                        setResult(Iconfont.d)\\n                    }, item.id),\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false,\\n                    },\\n                })\\n                item.icons.forEach(icon => {\\n                    let svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(icon.show_svg)\\n                    Iconfont.d.push({\\n                        title: icon.name,\\n                        url: $(Iconfont.empty).rule((name, show_svg) => {\\n                            const Iconfont = $.require('hiker://page/Iconfont')\\n                            Iconfont.iconParse(name, show_svg)\\n                            setResult(Iconfont.d)\\n                        }, icon.name, icon.show_svg),\\n                        pic_url: svg_url,\\n                        col_type: 'icon_5',\\n                    })\\n                })\\n                Iconfont.d.push({\\n                    col_type: 'line_blank'\\n                })\\n            }\\n        })\\n    },\\n    iconParse: (name, svg_url) => {\\n        let true_svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(svg_url)\\n        Iconfont.d.push(\\n            {\\n                url: 'copy://'+true_svg_url,\\n                pic_url: true_svg_url,\\n                col_type: 'pic_1_full',\\n            },\\n            {\\n                title: '复制图标',\\n                url: 'copy://'+true_svg_url,\\n                col_type: 'text_center_1',\\n            },\\n            {\\n                title: '复制SVG',\\n                url: 'copy://'+svg_url,\\n                col_type: 'text_center_1',\\n            },\\n            {\\n                title: '收藏图标',\\n                url: $(true_svg_url).lazyRule((name, svg_url) => {\\n                    const Iconfont = $.require('hiker://page/Iconfont')\\n                    let attention = name+'$$$'+svg_url\\n\\n                    if (! fileExist(Iconfont.files.likes)) {\\n                        writeFile(Iconfont.files.likes, attention)\\n                    } else {\\n                        writeFile(Iconfont.files.likes, fetch(Iconfont.files.likes)+\\\"\\\\n\\\"+attention)\\n                    }\\n                    refreshPage(false)\\n                    return \\\"toast://收藏成功\\\"\\n                }, name, svg_url),\\n                col_type: 'text_center_1',\\n            },\\n        )\\n    },\\n    collectionParse: (id) => {\\n        const url = 'https://www.iconfont.cn/api/collection/detail.json?id='+id\\n        const json = JSON.parse(fetch(url))\\n        const list = json.data.icons\\n\\n        list.forEach(icon => {\\n            let svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(icon.show_svg)\\n            Iconfont.d.push({\\n                title: icon.name,\\n                url: $(Iconfont.empty).rule((name, show_svg) => {\\n                    const Iconfont = $.require('hiker://page/Iconfont')\\n                    Iconfont.iconParse(name, show_svg)\\n                    setResult(Iconfont.d)\\n                }, icon.name, icon.show_svg),\\n                pic_url: svg_url,\\n                col_type: 'icon_5',\\n            })\\n        })\\n    },\\n    baseParse: () => {\\n        const json = JSON.parse(getResCode())\\n\\n        if (parseInt(MY_PAGE) === 1) {\\n            Iconfont.d.push(\\n                {\\n                    url: $(Iconfont.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.iconSearchParse()\\n                        setResult(Iconfont.d)\\n                    }),\\n                    pic_url: 'https://iconfont.tyrantg.com/search.svg',\\n                    title: '单图标搜索',\\n                    col_type: \\\"icon_4\\\",\\n                },\\n                {\\n                    url: $(Iconfont.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.collectionSearchParse()\\n                        setResult(Iconfont.d)\\n                    }),\\n                    pic_url: 'https://iconfont.tyrantg.com/collection.svg',\\n                    title: '图标集搜索',\\n                    col_type: \\\"icon_4\\\",\\n                },\\n                {\\n                    url: $(Iconfont.empty).rule(() => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.likesParse()\\n                        setResult(Iconfont.d)\\n                    }),\\n                    pic_url: 'https://iconfont.tyrantg.com/like.svg',\\n                    title: '收藏图标',\\n                    col_type: \\\"icon_4\\\",\\n                },\\n                // {\\n                //     url: $(Iconfont.empty+\\\"#fullTheme#$$fypage\\\").rule(() => {\\n                //         const Iconfont = $.require('hiker://page/Iconfont')\\n                //         Iconfont.likesParse()\\n                //         setResult(Iconfont.d)\\n                //     }),\\n                //     pic_url: 'https://iconfont.tyrantg.com/tool.svg',\\n                //     title: '工具',\\n                //     col_type: \\\"icon_4\\\",\\n                // },\\n                {\\n                    col_type: 'line_blank'\\n                }\\n            )\\n        }\\n\\n        Iconfont.collectionListParse(json.data.lists)\\n        setResult(Iconfont.d)\\n    },\\n    collectionSearchParse: () => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('searchValue')\\n        }))\\n\\n        const page = MY_URL.split('$$')[1]\\n\\n        if (parseInt(page) === 1) {\\n            Iconfont.d.push({\\n                title: '搜索',\\n                url: $.toString(() => {\\n                    setItem('searchValue', input)\\n                    refreshPage(false)\\n                    return \\\"hiker://empty\\\"\\n                }),\\n                desc: '请输入关键词',\\n                col_type: 'input',\\n                extra: {\\n                    defaultValue: getItem('searchValue', ''),\\n                    onChange: $.toString(() => {\\n                        if (getItem('searchValue', '') && !input) {\\n                            clearItem('searchValue')\\n                            refreshPage(false)\\n                            return \\\"hiker://empty\\\"\\n                        }\\n                    })\\n                }\\n            })\\n        }\\n\\n        const url = 'https://www.iconfont.cn/api/collections.json?type=3&sort=time&limit=8&page='+page+'&keyword='+getItem('searchValue', '')\\n        const json = JSON.parse(fetch(url))\\n        Iconfont.collectionListParse(json.data.lists)\\n        setResult(Iconfont.d)\\n    },\\n    iconSearchParse: () => {\\n        addListener('onClose', $.toString(() => {\\n            clearItem('searchValue')\\n        }))\\n\\n        const page = MY_URL.split('$$')[1]\\n\\n        if (parseInt(page) === 1) {\\n            Iconfont.d.push({\\n                title: '搜索',\\n                url: $.toString(() => {\\n                    setItem('searchValue', input)\\n                    refreshPage(false)\\n                    return \\\"hiker://empty\\\"\\n                }),\\n                desc: '请输入关键词',\\n                col_type: 'input',\\n                extra: {\\n                    defaultValue: getItem('searchValue', ''),\\n                    onChange: $.toString(() => {\\n                        if (getItem('searchValue', '') && !input) {\\n                            clearItem('searchValue')\\n                            refreshPage(false)\\n                            return \\\"hiker://empty\\\"\\n                        }\\n                    })\\n                }\\n            })\\n        }\\n\\n        if (getItem('searchValue', '') !== '') {\\n            const json = JSON.parse(fetch('https://www.iconfont.cn/api/icon/search.json', {\\n                headers: {\\n                    Cookie: 'ctoken=ctoken;',\\n                },\\n                method: 'POST',\\n                body: {\\n                    q: getItem('searchValue', ''),\\n                    sortType: 'updated_at',\\n                    page: page,\\n                    pageSize: 60,\\n                    ctoken: 'ctoken',\\n                }\\n            }))\\n\\n            const list = json.data.icons\\n\\n            list.forEach(icon => {\\n                let svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(icon.show_svg)\\n                Iconfont.d.push({\\n                    title: icon.name,\\n                    url: $(Iconfont.empty).rule((name, show_svg) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.iconParse(name, show_svg)\\n                        setResult(Iconfont.d)\\n                    }, icon.name, icon.show_svg),\\n                    pic_url: svg_url,\\n                    col_type: 'icon_5',\\n                })\\n            })\\n        }\\n    },\\n    likesParse: () => {\\n        const list = fetch(Iconfont.files.likes).split(\\\"\\\\n\\\")\\n\\n        list.forEach((icon, index) => {\\n            if (icon) {\\n                let [name, svg] = icon.split('$$$')\\n                let svg_url = 'https://iconfont.tyrantg.com/api/illustrate.svg?svg_string='+encodeURIComponent(svg)\\n\\n                Iconfont.d.push({\\n                    title: name,\\n                    url: $(Iconfont.empty).rule((name, svg) => {\\n                        const Iconfont = $.require('hiker://page/Iconfont')\\n                        Iconfont.iconParse(name, svg)\\n                        setResult(Iconfont.d)\\n                    }, name, svg),\\n                    pic_url: svg_url,\\n                    col_type: 'icon_5',\\n                    extra: {\\n                        longClick: [\\n                            {\\n                                title: '置顶图标',\\n                                js: $.toString((list, index) => {\\n                                    const Iconfont = $.require('hiker://page/Iconfont')\\n                                    const current = list[index]\\n                                    list.splice(index, 1)\\n                                    list.unshift(current)\\n                                    writeFile(Iconfont.files.likes, list.join(\\\"\\\\n\\\"))\\n                                    refreshPage(false)\\n                                    return \\\"toast://置顶成功\\\"\\n                                }, list, index)\\n                            },\\n                            {\\n                                title: '取消收藏',\\n                                js: $.toString((list, index) => {\\n                                    const Iconfont = $.require('hiker://page/Iconfont')\\n                                    list.splice(index, 1)\\n                                    writeFile(Iconfont.files.likes, list.join(\\\"\\\\n\\\"))\\n                                    refreshPage(false)\\n                                    return \\\"toast://取消成功\\\"\\n                                }, list, index)\\n                            },\\n                        ],\\n                    },\\n                })\\n            }\\n        })\\n    },\\n    toolParse: () => {\\n\\n    },\\n}\\n\\n$.exports = Iconfont\\n\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/icon.svg"},{"last_chapter_rule":"","title":"蓝莓图标.dz","author":"道长&蓝莓果酱UX","version":16,"type":"picture","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst canUse = $.require(\"hiker://page/deng\");\nif (canUse) {\n    \nconst {color, small} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nlet host = 'https://lanmeiguojiang.com/tubiao/';\nlet names = '影视&音乐&Q版&可爱&更多&其它'.split('&');\nlet keys = 'movie&music&q&ke&more&messy'.split('&');\nlet d=[];\nfor(let i in names){\n    d.push({\n        title:names[i]===getVar('lm.icon','影视')?color(names[i],'#00bbf0'):names[i],\n        url:$().lazyRule((name,key)=>{\n            putVar('lm.icon',name);\n            putVar('lm.iconKey',key);\n            refreshPage(true);\n            return 'hiker://empty'\n        },names[i],keys[i]),\n        col_type:'scroll_button'\n    });\n}\nlet max = 1;\nlet ext = '.svg';\nswitch (getVar('lm.icon','影视')){\n    case '影视':\n        max = 146;\n        break;\n    case '音乐':\n        max = 152;\n        break;\n    case 'Q版':\n        max = 169;\n        ext = '.png';\n        break;\n    case '可爱':\n        max = 178;\n        ext = '.png';\n        break;\n    case '更多':\n        max = 343;\n        ext = '.png';\n        break;\n    case '其它':\n        max = 104;\n        ext = '.svg';\n        break;\n    default:\n        max = 1;\n}\nfor(let j=1;j<=max;j++){\n    let pic = host+getVar('lm.iconKey','movie')+'/'+j+ext;\n    d.push({\n        // col_type: 'icon_small_4',\n        col_type: 'icon_round_4',\n        title:j+ext,\n        pic_url:pic,\n        url:$('#noLoading#').lazyRule((pic)=>{\n            copy(pic);\n            return 'hiker://empty'\n        },pic)\n    });\n}\nsetResult(d);\n\n}","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"deng\",\"path\":\"deng\",\"rule\":\"function canUse() {\\n    //如果更新了规则也要限流，可以修改key\\n    let key = \\\"lock2\\\"\\n    //等待分钟数\\n    let waitMin = 5\\n    \\n    let min = Math.round(Math.random() * 1000 * 60 * waitMin)\\n    let unlock = new Date().getTime() + min;\\n    let time = getItem(key, \\\"\\\");\\n    if (time == \\\"\\\") {\\n        setItem(key, \\\"\\\" + unlock)\\n        let st = new Date(unlock).toLocaleString().replace(/:\\\\d{1,2}$/, ' ');\\n\\n        let msg = \\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\使用需知<br><br>这是您第一次使用/更新该版本规则，下面为使用介绍，请仔细阅读。本规则将在\\\" + st + \\\"解锁使用。<br><br>ⓐ本小程序图标分为影视图标、音乐图标、其它、更多以及Q版图标<br>ⓑ影视图标共146个、音乐图标共152个、Q版图标共138个、更多图标343个、其它图标若干，欢迎大家前来挑选自己喜爱的一个<br>ⓒ使用方法：你喜欢哪个图标点下对应图标就会自动复制图标链接，然后粘贴到你想添加的位置即可<br>ⓓ本小程序的图标数量和类型会不定期增加届时请及时到仓库导入新版<br>ⓔ如遇到重复图标/不显示图标/少号图标请及时到仓库或者论坛反馈<br>ⓕ请仔细阅读以上内容并且到时间后重新访问本规则或者等待时间到了刷新本页面即可。<br><br>Tips:图标为本人精心挑选，种类多、图标优美、风格百态，本次新增更多图383个！\\\"\\n        setResult([{\\n            title: msg,\\n            col_type: \\\"rich_text\\\"\\n        }])\\n        return false\\n    } else if (parseInt(time) < new Date().getTime()) {\\n        return true\\n    } else {\\n        let st = new Date(parseInt(time)).toLocaleString().replace(/:\\\\d{1,2}$/, ' ');\\n\\n        let msg = \\\"\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\使用需知<br><br>这是您第一次使用/更新该小程序规则，下面为使用介绍，请仔细阅读。本规则将在\\\" + st + \\\"解锁使用。<br><br>ⓐ本小程序图标分为影视图标、音乐图标、其它、更多以及Q版图标<br>ⓑ影视图标共146个、音乐图标共152个、Q版图标共138个、更多图标343个、其它图标若干，欢迎大家前来挑选自己喜爱的一个<br>ⓒ使用方法：你喜欢哪个图标点下对应图标就会自动复制图标链接，然后粘贴到你想添加的位置即可<br>ⓓ本小程序的图标数量和类型会不定期增加届时请及时到仓库导入新版<br>ⓔ如遇到重复图标/不显示图标/少号图标请及时到仓库或者论坛反馈<br>ⓕ请仔细阅读以上内容并且到时间后重新访问本规则或者等待时间到了刷新本页面即可。<br><br>Tips:图标为本人精心挑选，种类多、图标优美、风格百态，本次新增更多图383个！\\\"\\n        setResult([{\\n            title: msg,\\n            col_type: \\\"rich_text\\\"\\n        }])\\n        return false\\n    }\\n}\\n$.exports = canUse();\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/2.png"},{"last_chapter_rule":"","title":"比价.拒绝套路","author":"小棉袄🌞","version":9,"type":"tool","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"_x52\")\n}))\nd.push({\n    title: \"查看曲线\",\n    url: $.toString(() => {\n        putVar(\"_x52\", input)\n        return \"hiker://page/x5\"\n    }),\n    col_type: \"input\",\n    desc: \"请输入京东、淘宝商品链接\",\n    pic_url: \"\",\n});\nd.push({\n    col_type: \"line_blank\"\n});\nd.push({\n    col_type: \"big_blank_block\"\n});\n\nd.push({\n    title: \"<big>使用说明</big>\",\n    url: \"\",\n    col_type: \"rich_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"<p>在上方的输入框里输入商品的网址或商品口令查询历史价格。拒绝节日降价套路！</p>\",\n    url: \"\",\n    col_type: \"rich_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"\\\",\\n    url: \\\"http://www.hisprice.cn/his.php?hisurl=\\\" + getVar(\\\"_x52\\\"),\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            document.querySelector(\\\"#recommDivId\\\").style.display = \\\"none\\\";\\n            document.querySelector(\\\"#otherTopInfoId\\\").style.display = \\\"none\\\";\\n            document.querySelector(\\\"body .box .head-search .pop1\\\").style.display = \\\"none\\\";\\n            setTimeout(() => {\\n                document.querySelector(\\\"#recommDivId\\\").style.display = \\\"none\\\";\\n                document.querySelector(\\\"#otherTopInfoId\\\").style.display = \\\"none\\\";\\n                document.querySelector(\\\"body .box .head-search .pop1\\\").style.display = \\\"none\\\";\\n            }, 1000)\\n        })\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"查快递","author":"Joe","version":1,"type":"video","url":"hiker://empty","col_type":"rich_text","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/home\")","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"//clearItem(\"kuaidi\")","pages":"[{\"col_type\":\"movie_3\",\"name\":\"代码\",\"path\":\"api\",\"rule\":\"$.exports.getInfo = function(id) {\\n    var res = post(\\\"https://uapi.woobx.cn/app/showapi\\\", {\\n        body: {\\n            \\\"params\\\": {\\n                \\\"nu\\\": id,\\n                \\\"com\\\": \\\"auto\\\"\\n            },\\n            \\\"path\\\": \\\"64-19\\\"\\n        }\\n    })\\n    return JSON.parse(res)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"home\",\"rule\":\"var d = [];\\nd.push({\\n    title: `““””<strong><big>添加快递</big></strong>`,\\n    url: $(\\\"\\\", \\\"输入快递单号，多个请用,连接\\\").input(() => {\\n        var list = storage0.getItem(\\\"kuaidi\\\", [])\\n        let s = input.split(\\\",\\\")\\n        s.forEach(item => {\\n            if (list.includes(item)) {\\n                toast(\\\"你已添加过相同的快递号了\\\")\\n            } else {\\n                list.push(item)\\n                storage0.setItem(\\\"kuaidi\\\", list)\\n                refreshPage()\\n                toast(\\\"添加成功\\\")\\n            }\\n        })\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n})\\nvar kuaidi = storage0.getItem(\\\"kuaidi\\\", [])\\nif (kuaidi.length == 0) {\\n    d.push({\\n        title: \\\"<strong>还没有快递，快去添加吧</strong>\\\",\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"rich_text\\\"\\n    })\\n} else {\\n    function color(text) {\\n        text += \\\"\\\";\\n        if (text.indexOf(\\\"““””\\\") === 0) {\\n            text.replace(\\\"““””\\\", \\\"\\\");\\n        }\\n        return \\\"““””<font color='red'>\\\" + text + \\\"</font>\\\";\\n    }\\n    kuaidi.forEach((item, index) => {\\n        let isClicked = getMyVar(\\\"n\\\", kuaidi[0]) == item\\n        d.push({\\n            title: isClicked ? color(item) : item,\\n            url: isClicked ? $(\\\"确认删除此快递？\\\").confirm((i) => {\\n                var list = storage0.getItem(\\\"kuaidi\\\", [])\\n                list.splice(i, 1)\\n                storage0.setItem(\\\"kuaidi\\\", list)\\n                clearMyVar(\\\"n\\\")\\n                refreshPage()\\n                toast(\\\"删除成功！！！\\\")\\n            }, index) : $().lazyRule((i) => {\\n                putMyVar(\\\"n\\\", i + \\\"\\\")\\n                refreshPage()\\n                return \\\"toast://切换成功\\\"\\n            }, item),\\n            col_type: \\\"scroll_button\\\"\\n        })\\n    })\\n    let res = $.require(\\\"hiker://page/api\\\").getInfo(getMyVar(\\\"n\\\", kuaidi[0]))\\n    d.push({\\n        img: res.data.showapi_res_body.logo,\\n        title: res.data.showapi_res_body.expTextName,\\n        url: \\\"copy://\\\" + res.data.showapi_res_body.tel,\\n        col_type: \\\"avatar\\\"\\n    }, {\\n        title: res.data.showapi_res_body.msg,\\n        desc: \\\"更新时间：\\\" + res.data.showapi_res_body.updateStr,\\n        url: \\\"hiker://empty@lazyRule=.js:refreshPage();'hiker://empty'\\\",\\n        col_type: \\\"text_center_1\\\"\\n    }, {\\n        col_type: \\\"line_blank\\\"\\n    })\\n    var RegExp = /(1[3|4|5|7|8][\\\\d]{9}|0[\\\\d]{2,3}-[\\\\d]{7,8}|400[-]?[\\\\d]{3}[-]?[\\\\d]{4})/g;\\n    res.data.showapi_res_body.data.forEach(item => {\\n        d.push({\\n            title: item.context.replace(RegExp, `<a href=\\\"copy://$&\\\">$&</a>`),\\n        }, {\\n            title: `““””<small>${item.time}</small>`,\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://empty\\\"\\n        })\\n    })\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"亮健好药","author":"香雅情","version":0,"type":"other","url":"https://m.360lj.com/classify.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nvar html = getResCode();\nvar conts = parseDomForArray(html, '.mui-control-content&&.v-table-view');\nfor (var i = 0; i < conts.length; i++) {\n    var list = parseDomForArray(conts[i], '.btn_list&&a');\n    items.push({\n        title: parseDomForHtml(conts[i], 'span&&Text'),\n        col_type: 'text_1'\n    });\n    for (var j = 0; j < list.length; j++) {\n        var title = parseDomForHtml(list[j], 'a&&title');\n        var url = parseDom(list[j], 'a&&href');\n        items.push({\n            title: title,\n            //pic_url: img,\n            url: url.replace('.html','-0-fypage-0-1-0-0-0-0-0.html'),\n            //desc: desc\n            col_type: 'text_3'\n        });\n    }\n}\nsetHomeResult({\n    data: items\n});","searchFind":"js:\nvar items = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, '.item_list&&li');\n\nfor (var i = 0; i < list.length; i++) {\n    var title = parseDomForHtml(list[i], 'h3&&Text');\n    var img = parseDom(list[i], 'img&&src');\n    var url = parseDom(list[i], 'a&&href');\n    var content = parseDomForHtml(list[i], '.shop_info--h3&&Text');\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $(url).rule(() => {\n            var items = [];\n            var html = getResCode();\n            var list = parseDomForArray(html, '.producer_img&&img')\n            for (var i = 0; i < list.length; i++) {\n                var img = parseDom(list[i], 'img&&src');\n                items.push({\n                    title: '',\n                    desc: '',\n                    pic_url: img,\n                    url: img,\n                    col_type: 'pic_2'\n                });\n            }\n            items.push({\n                title: '说明书',\n                col_type: 'text_center_1'\n            });\n            var descr = parseDomForHtml(html, \".direction&&Html\").replace('&amp;nbsp', ' ');\n            items.push({\n                title: descr,\n                col_type: 'rich_text'\n            });\n            setHomeResult({\n                data: items\n            });\n        }),\n        content: content,\n        col_type: 'movie_1_vertical_pic'\n    });\n}\n\nsetHomeResult({\n    data: items\n});","search_url":"https://m.360lj.com/Search-0-0-fypage-0-1-0-0-0-0-0.html?strSearch=**","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"js:\nvar items = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, '.item_list&&li');\n\nfor (var i = 0; i < list.length; i++) {\n    var title = parseDomForHtml(list[i], 'h3&&Text');\n    var img = parseDom(list[i], 'img&&src');\n    var url = parseDom(list[i], 'a&&href');\n    var desc = parseDomForHtml(list[i], '.shop_info--h3&&Text');\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $(url).rule(() => {\n            var items = [];\n            var html = getResCode();\n            var list = parseDomForArray(html, '.producer_img&&img')\n            for (var i = 0; i < list.length; i++) {\n                var img = parseDom(list[i], 'img&&src');\n                items.push({\n                    title: '',\n                    desc: '',\n                    pic_url: img,\n                    url: img,\n                    col_type: 'pic_2'\n                });\n            }\n            items.push({\n                title: '说明书',\n                col_type: 'text_center_1'\n            });\n            var descr = parseDomForHtml(html, \".direction&&Html\").replace('&amp;nbsp', ' ');\n            items.push({\n                title: descr,\n                col_type: 'rich_text'\n            });\n            setHomeResult({\n                data: items\n            });\n        }),\n        desc: desc,\n        col_type: 'movie_1_vertical_pic'\n    });\n}\n\nsetHomeResult({\n    data: items\n});","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"薅羊毛·Q","author":"发粪涂墙","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\n\naddListener(\"onClose\", $.toString(() => {\n    clearVar('解析口')\n}))\n\nd.push({\n    title: '开始',\n    col_type: 'input',\n    desc: '请输入要扒解析的播放页地址',\n    url: $.toString(() => {\n        clearVar('解析口')\n        putMyVar('链接', input)\n        refreshPage(true)\n        return 'hiker://empty'\n\n    }),\n    extra: {\n        defaultValue: getMyVar('链接', ''),\n        onChange: \"putMyVar('链接',input)\"\n    }\n});\nif (getMyVar('链接', '') != '') {\n    d.push({\n        col_type: \"x5_webview_single\",\n        url: getMyVar('链接'),\n        desc: \"0\",\n        extra: {\n            showProgress: false,\n            blockRules: ['.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4', '.flv', '.mp3'],\n            js: $.toString(() => {\n                try {\n                    var urls = window._getUrls()\n                    if (!fba.getVar('解析口')) {\n                        for (var i in urls) {\n                            if (!urls[i].match(/gif/) && urls[i].match(/youku|mgtv|ixigua|qq.com|qiyi|migu/)) {\n                                fba.log(urls[i])\n                                fba.putVar('解析口', urls[i].match(/.*?=/)[0])\n                                fba.refreshPage(true)\n                                window.fas = true;\n                            }\n                        }\n                    }\n                } catch (e) {\n                    alert(e.message)\n                }\n            })\n        }\n    })\n\nd.push({\n    title: getVar('解析口', '点开始等待几秒，不显示就是不支持各种插的解析'),\n    url: 'copy://' + getVar('解析口', ''),\n    col_type: \"text_1\",\n});\n}\nsetResult(d)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/14/zA0sNF.png"},{"firstHeader":"class","last_chapter_rule":"","title":"工具游戏","author":"","version":0,"type":"other","url":"hiker://bookmark","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n'一个工具箱@@http://www.atoolbox.net/@@ http://api.btstu.cn/sjbz/?lx=dongman?glideCache=skip',\n'一个木函@@https://web.woobx.cn/@@ http://www.dmoe.cc/random.php?glideCache=skip',\n'云极客工具@@https://www.ygktool.cn/#home@@ http://api.btstu.cn/sjbz/?lx=m_dongman?glideCache=skip',\n'孟坤工具箱@@http://tool.mkblog.cn/',\n'兔二工具@@https://www.tool2.cn/#daohangtxPhone',\n'公众号封面获取@@http://www.gjw123.com/tools-getWxArticleImages',\n'QQ头像获取@@http://www.gjw123.com/tools-qqnumberimg',\n'竖排文字生成@@https://m.fuhaoku.net/tool/shupaiwenzi.html',\n'blibli封面获取@@https://tools.miku.ac/bilibili_cover_get',\n'网页源码查看@@https://tools.miku.ac/get_html',\n'亲戚关系计算器@@https://tools.miku.ac/relatives_name',\n'身份证解析@@https://tools.miku.ac/chinese_id',\n'常用电话列表@@https://www.iamwawa.cn/dianhua.html',\n'公众号音频提取@@http://www.xmyeditor.com/tools/music.html',\n'文件扩展名对照@@https://shulijp.com/info/dzb/filename.html',\n'QQ强制对话@@http://www.gjw123.com/tools-qiangzhi',\n'实时台风预警@@http://www.gjw123.com/tools-taifeng',\n'跳转代码生成@@https://www.qtool.net/jumpcode',\n'文本翻转@@http://www.atoolbox.net/Tool.php?Id=759',\n'在线字典@@https://zidian.51240.com/',\n'简繁互转@@http://hy.httpcn.com/jfzh/',\n'书法字典@@http://hy.httpcn.com/shufa/',\n'近义词反义词@@https://jinyifanyi.51240.com/',\n'字典查询@@https://zidian.51240.com',\n'成语查询@@http://wap.5156edu.com/cy/more.html',\n'快递查询@@https://mkuaidi.911cha.com',\n'汇率查询@@https://mhuilv.911cha.com',\n'日历查询@@http://yun.rili.cn/wnl/m/index.html',\n'列车查询@@http://m.264.cn/huoche',\n'歌词查询@@https://www.90lrc.cn',\n'汇率查询@@https://mhuilv.911cha.com/',\n'快递查询@@https://m.kuaidihelp.com/',\n'区号查询@@https://mquhao.911cha.com/',\n'邮政查询@@https://myoubian.911cha.com/',\n'药品查询@@http://wapypk.39.net/',\n'星座查询@@https://3g.d1xz.net/astro/xingzuochaxun.aspx',\n'万年历查询@@https://m.wannianli.tianqi.com/',\n'魂斗罗@@https://www.yikm.net/play?id=4137&n=L2Zjcm9tL3NqL0NvbnRyYSAoVSkgWyFdLm5lcw==&t=%E9%AD%82%E6%96%97%E7%BD%97',\n'坦克大战@@https://www.yikm.net/play?id=4275&n=L2Zjcm9tL3h5eC9CYXR0bGUgQ2l0eSAoSikgWyFdLm5lcw==&t=%E5%9D%A6%E5%85%8B%E5%A4%A7%E6%88%98',\n'超级马里奥@@https://www.yikm.net/play?id=3501&n=L2Zjcm9tL2R6bXgvU3VwZXIgTWFyaW8gQnJvcy4gKFcpIFshXS5uZXM=&t=%E8%B6%85%E7%BA%A7%E9%A9%AC%E9%87%8C%E5%A5%A5',\n'冒险岛@@https://www.yikm.net/play?id=3175&n=L2Zjcm9tL2R6bXgvVGFrYWhhc2hpIE1laWppbiBubyBCb3VrZW4gU2hpbWEgKEopIFshXS5uZXM=&t=%E5%86%92%E9%99%A9%E5%B2%9B',\n'激龟快打@@https://www.yikm.net/play?id=3882&n=L2Zjcm9tL2dkL1RlZW5hZ2UgTXV0YW50IEhlcm8gVHVydGxlcyAtIFRvdXJuYW1lbnQgRmlnaHRlcnMgKEUpIFshXS5uZXM=&t=%E6%BF%80%E9%BE%9F%E5%BF%AB%E6%89%93',\n'热血格斗@@https://www.yikm.net/play?id=4714&n=L2Zjcm9tL3lkYnMvTmVra2V0c3UgS2FrdXRvdSBEZW5zZXRzdSAoSikgWyFdLm5lcw==&t=%E7%83%AD%E8%A1%80%E6%A0%BC%E6%96%97',\n'雪人兄弟@@https://www.yikm.net/play?id=4511&n=L2Zjcm9tL3h5eC9Tbm93IEJyb3MuIChKKS5uZXM=&t=%E9%9B%AA%E4%BA%BA%E5%85%84%E5%BC%9F',\n'热血曲棍球@@https://www.yikm.net/play?id=4713&n=L2Zjcm9tL3lkYnMvSWtlIElrZSEgTmVra2V0c3UgSG9ja2V5LWJ1IC0gU3ViZXR0ZSBLb3JvbmRlIERhaSBSYW50b3UgKEopIFshXS5uZXM=&t=%E7%83%AD%E8%A1%80%E6%9B%B2%E6%A3%8D%E7%90%83',\n'魂斗罗力量@@https://www.yikm.net/play?id=4141&n=L2Zjcm9tL3NqL0NvbnRyYSBGb3JjZSAoVSkgWyFdLm5lcw==&t=%E9%AD%82%E6%96%97%E7%BD%97%E5%8A%9B%E9%87%8F',\n'热血物语@@https://www.yikm.net/play?id=4715&n=L2Zjcm9tL3lkYnMvRG93bnRvd24gLSBOZWtrZXRzdSBNb25vZ2F0YXJpIChKKS5uZXM=&t=%E7%83%AD%E8%A1%80%E7%89%A9%E8%AF%AD(%E6%97%A5%E7%89%88)',\n'西游记@@https://www.yikm.net/play?id=3486&n=L2Zjcm9tL2R6bXgvU2FpeXV1a2kgV29ybGQgKEopLm5lcw==&t=%E8%A5%BF%E6%B8%B8%E8%AE%B0(%E6%97%A5%E7%89%88)',\n'快风旋打@@https://www.yikm.net/play?id=3321&n=L2Zjcm9tL2R6bXgvTWlnaHR5IEZpbmFsIEZpZ2h0IChKKSBbIV0ubmVz&t=%E5%BF%AB%E6%89%93%E6%97%8B%E9%A3%8E',\n'冒险岛@@https://www.yikm.net/play?id=3178&n=L2Zjcm9tL2R6bXgvSHVkc29uJ3MgQWR2ZW50dXJlIElzbGFuZCBJSSAoVSkgWyFdLm5lcw==&t=%E5%86%92%E9%99%A9%E5%B2%9B2(%E7%BE%8E%E7%89%88)',\n'冒险岛@@https://www.yikm.net/play?id=3180&n=L2Zjcm9tL2R6bXgvSHVkc29uJ3MgQWR2ZW50dXJlIElzbGFuZCBJSUkgKFUpIFshXS5uZXM=&t=%E5%86%92%E9%99%A9%E5%B2%9B3(%E7%BE%8E%E7%89%88)',\n'冒险岛@@https://www.yikm.net/play?id=3181&n=L2Zjcm9tL2R6bXgvVGFrYWhhc2hpIE1laWppbiBubyBCb3VrZW4gU2hpbWEgSVYgKEopLm5lcw==&t=%E5%86%92%E9%99%A9%E5%B2%9B4',\n'热血足球@@https://www.yikm.net/play?id=4723&n=L2Zjcm9tL3lkYnMvTmludGVuZG8gV29ybGQgQ3VwIChVKSBbIV0ubmVz&t=%E7%83%AD%E8%A1%80%E8%B6%B3%E7%90%83(%E7%BE%8E%E7%89%88)',\n'西游记@@https://www.yikm.net/play?id=3488&n=L2Zjcm9tL2R6bXgvV2hvbXAnRW0gKFUpIFshXS5uZXM=&t=%E8%A5%BF%E6%B8%B8%E8%AE%B02(%E7%BE%8E%E7%89%88)',\n'冒险岛外传@@https://www.yikm.net/play?id=3997&n=L2Zjcm9tL3NqL1Rha2FoYXNoaSBNZWlqaW4gbm8gQnVndXR0ZSBIb25leSAoSikgWyFdLm5lcw==&t=%E5%86%92%E9%99%A9%E5%B2%9B%E5%A4%96%E4%BC%A0-%E9%AB%98%E6%A1%A5%E5%90%8D%E4%BA%BA%E7%9A%84%E6%99%BA%E5%8A%9B%E6%8C%91%E6%88%',\n\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nfor (var i = 0; i < t.length && i < 3; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.desc = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'movie_3';\n d.push(r);\n}\n\nfor (var i = 3; i < t.length; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n if (k.length < 2) continue;\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.col_type = 'text_3';\n d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"无花果工具箱","author":"勇士","version":2,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，滑动返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://tool.whgpc.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://tool.whgpc.com/images/logo.png"},{"last_chapter_rule":"","title":"奇妙工具箱","author":"小棉袄🌞","version":7,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet vip = getItem(\"vip\", \"0\") == \"1\";\nd.push({\n    title: vip ? \"欢迎您，尊贵的会员！\" : \"您还不是会员\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        confirm({\n            title: \"说明\",\n            content: \"本工具箱所有功能免费无广告使用，为激励作者不断更新和新增优秀功能，因此搞了一个会员制，本会员制为分享制，只需要分享软件或者官方公众号给您的朋友，然后点击确定按钮即可，会员领取方案为无人售票制度，点击确定按钮即可\",\n            confirm: $.toString(() => {\n                confirm({\n                    title: \"领取会员\",\n                    content: \"确定领取会员吗？确认您已分享软件或者官方公众号给您的朋友，确认请点击下方的确定按钮\",\n                    confirm: $.toString(() => {\n                        setItem(\"vip\", \"1\");\n                        refreshPage();\n                        return \"toast://恭喜，您已成为会员！\"\n                    })\n                });\n                return \"hiker://empty\"\n            })\n        });\n        return \"hiker://empty\"\n    }),\n    col_type: \"avatar\",\n    desc: \"\",\n    pic_url: vip ? \"http://gh.haikuoshijie.cn/https://github.com/qiusunshine/hiker-rules/blob/master/plugins/%E5%86%A0%E5%86%9B3.png\" : \"hiker://images/account\"\n});\n\nd.push({\n    title: \"磁力云播\",\n    url: \"hiker://empty\",\n    desc: \"““””<small>基于迅雷SDK，支持磁力、电驴、种子、FTP、HTTP、RTMP等多种格式</small>\",\n    col_type: \"text_center_1\",\n    extra: {\n        lineVisible: false\n    }\n});\n\nd.push({\n    title: \"播放\",\n    url: $.toString(() => {\n        return input;\n    }),\n    col_type: \"input\",\n    desc: \"请输入链接\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"视频提取\",\n    desc: \"直接输入网页地址即可提取播放、下载视频\",\n    url: \"hiker://empty\",\n    col_type: \"text_center_1\",\n    extra: {\n        lineVisible: false\n    }\n});\n\nd.push({\n    title: \"提取\",\n    url: $.toString(() => {\n        return \"video://\" + input;\n    }),\n    col_type: \"input\",\n    desc: \"请输入网页链接\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"电子书阅读器(txt)\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        let r = fetch(\"hiker://home@本地资源管理\");\n        if (r && r.length > 5) {\n            return \"hiker://home@本地资源管理\";\n        } else {\n            confirm({\n                title: \"温馨提示\",\n                content: \"当前未导入扩展插件，点击下方确定按钮导入\",\n                confirm: $.toString(() => {\n                    return \"海阔视界首页频道规则【本地资源管理】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3559\"\n                })\n            });\n            return \"hiker://empty\"\n        }\n    }),\n    col_type: \"card_pic_2\",\n    pic_url: \"hiker://images/home_pic4\",\n});\nd.push({\n    title: \"epub转换器\",\n    url: \"web://https://convertio.co/zh/\",\n    col_type: \"card_pic_2_2\",\n    pic_url: \"hiker://images/home_pic3\"\n});\nd.push({\n    title: \"WebDav\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        let r = fetch(\"hiker://home@Webdav\");\n        log(r);\n        if (r && r.length > 5) {\n            return \"hiker://home@Webdav\";\n        } else {\n            confirm({\n                title: \"温馨提示\",\n                content: \"当前未导入扩展插件，点击下方确定按钮导入\",\n                confirm: $.toString(() => {\n                    return \"海阔视界首页频道规则【Webdav】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=5210\"\n                })\n            });\n            return \"hiker://empty\"\n        }\n    }),\n    col_type: \"card_pic_2_2\",\n    pic_url: \"hiker://images/home_pic2\"\n});\nd.push({\n    title: \"图片提取器\",\n    url: \"hiker://page/pic\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"““””<span style=\\\"color: #aaaaaa\\\"><small>扩展插件来自小棉袄、LoyDgIk、Joe等</small></span>\",\n    url: \"hiker://empty\",\n    col_type: \"text_center_1\",\n    extra: {\n        lineVisible: false\n    }\n});\n\nd.push({\n    col_type: \"line_blank\",\n    extra: {\n        id: \"qmgjx\"\n    }\n});\n\nsetResult(d);\ntry {\n    MY_URL = \"https://haikuoshijie.cn/\";\n    let html = request(MY_URL);\n    let arr = pdfa(html, \".post-list&&li\");\n    addItemAfter(\"qmgjx\", arr.map(it => {\n        return {\n            title: pdfh(it, \"h3--time&&Text\"),\n            url: \"x5://\" + pd(it, \"a&&href\"),\n            col_type: \"text_1\",\n            desc: pdfh(it, \".index-time&&Text\") + \"   \" + pdfh(it, \".post-meta&&span&&Text\")\n        }\n    }))\n} catch (e) {}","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"pic\",\"path\":\"pic\",\"rule\":\"js:\\nvar d = [];\\nlet x = getItem(\\\"x\\\", \\\"否\\\");\\nlet desc = x == \\\"是\\\" ? \\\"float&&300\\\" : \\\"float&&1\\\";\\nd.push({\\n    col_type: \\\"x5_webview_single\\\",\\n    url: \\\"\\\",\\n    desc: desc,\\n    title: \\\"\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            function getimgs() {\\n                var videoElements = document.getElementsByTagName(\\\"img\\\");\\n                if (videoElements == null) {\\n                    return [];\\n                }\\n                let urls = [];\\n                for (let i = 0; i < videoElements.length; i++) {\\n                    if (videoElements[i].width > 70 && videoElements[i].height > 70) {\\n                        const src = videoElements[i].src;\\n                        if (src == null || src.length < 5 || urls.includes(src) || src.indexOf(\\\"data:\\\") == 0) {\\n                            continue;\\n                        }\\n                        //log(src);\\n                        urls.push(new URL(src).toString());\\n                    }\\n                }\\n                return urls;\\n            }\\n\\n            function check() {\\n                try {\\n                    let urls = getimgs();\\n                    //fba.log(\\\"getimgs：\\\" + urls.length);\\n                    if (window.checkedUrls == null) {\\n                        window.checkedUrls = [];\\n                    }\\n                    let checkedUrls = window.checkedUrls;\\n                    urls = urls.filter(it => {\\n                        return !checkedUrls.includes(it)\\n                    });\\n\\n                    if (urls.length > 0) {\\n                        let pics = urls.filter(it => it != null && it != \\\"\\\")\\n                            .map(it => {\\n                                let u = fba.getHeaderUrl(it);\\n                                let uu = u.split(\\\";\\\");\\n                                let pic = u;\\n                                if (uu.length > 1) {\\n                                    let u1 = uu[0];\\n                                    let u2 = uu[1].slice(1, -1).split(\\\"&&\\\");\\n                                    let referer = null;\\n                                    let ua = null;\\n                                    let cookie0 = null;\\n                                    for (let ii of u2) {\\n                                        let it2 = ii.split(\\\"@\\\");\\n                                        if (it2[0] == \\\"Referer\\\") {\\n                                            referer = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                        if (it2[0] == \\\"User-Agent\\\") {\\n                                            ua = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                        if (it2[0] == \\\"Cookie\\\") {\\n                                            cookie0 = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                    }\\n                                    pic = u1;\\n                                    if (referer) {\\n                                        pic = pic + \\\"@Referer=\\\" + referer;\\n                                    }\\n                                    if (ua) {\\n                                        pic = pic + \\\"@User-Agent=\\\" + ua;\\n                                    }\\n                                    if (cookie0) {\\n                                        pic = pic + \\\"@Cookie=\\\" + cookie0\\n                                    }\\n\\n                                } else {\\n                                    pic = it;\\n                                }\\n                                return {\\n                                    pic: pic,\\n                                    url: u\\n                                }\\n                            });\\n                        fba.log(pics.length + \\\"\\\");\\n                        fba.parseLazyRuleAsync($$$().lazyRule((urls) => {\\n                            //log(urls);\\n\\n                            let arr = urls.map(it => {\\n                                return {\\n                                    title: \\\"\\\",\\n                                    url: it.pic,\\n                                    pic_url: it.pic,\\n                                    col_type: \\\"card_pic_3\\\",\\n                                    extra: {\\n                                        cls: \\\"pics\\\"\\n                                    }\\n                                }\\n                            });\\n                            addItemBefore(\\\"pic_line\\\", arr);\\n                        }, pics), function() {\\n\\n                        });\\n                        for (let it of urls) {\\n                            window.checkedUrls.push(it);\\n                        }\\n                    }\\n\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                }\\n                setTimeout(check, 300);\\n            }\\n            check();\\n        })\\n    }\\n});\\n\\n\\nd.push({\\n    title: \\\"提取\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"i\\\", input);\\n        deleteItemByCls(\\\"pics\\\");\\n        refreshX5WebView(input);\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入网页地址\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"i\\\", \\\"\\\")\\n    }\\n});\\nd.push({\\n    title: \\\"显示网页组件：\\\" + x,\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let x = getItem(\\\"x\\\", \\\"否\\\");\\n        let next = x == \\\"否\\\" ? \\\"是\\\" : \\\"否\\\";\\n        setItem(\\\"x\\\", next);\\n        let desc = x == \\\"否\\\" ? \\\"float&&300\\\" : \\\"float&&1\\\";\\n        updateItem(\\\"pic_tip\\\", {\\n            title: \\\"显示网页组件：\\\" + next\\n        });\\n        refreshX5Desc(desc);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        id: \\\"pic_tip\\\"\\n    }\\n});\\n\\nd.push({\\n    col_type: \\\"line_blank\\\",\\n    extra: {\\n        id: \\\"pic_line\\\"\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"简易文件管理","author":"@LoyDgIk","version":0,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/Main\");","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"Main\",\"path\":\"Main\",\"rule\":\"js:\\nlet d = [];\\n\\nd.push({\\n    title: \\\"设置\\\",\\n    url: \\\"hiker://page/设置#noRefresh#\\\",\\n    pic_url: \\\"https://lanmeiguojiang.com/tubiao/movie/73.svg\\\",\\n    col_type: \\\"avatar\\\",\\n\\n});\\n//let k = \\\"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/LoyDgIk/选择文件.js\\\";\\nlet k = \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\";\\nlet f = require(k);\\n\\nf.fileSelection({\\n    callback: $.toString(() => {\\n        //根据文件扩展名，用不同小程序打开\\n        /*if (TYPE === \\\".json\\\") {\\n            return 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json=' + base64Encode(\\\"file://\\\" + PATH)\\n        } else if (TYPE === \\\".html\\\") {\\n            return \\\"web://file://\\\" + PATH;\\n        } else if ([\\\".js\\\", \\\".txt\\\"].includes(TYPE)) {\\n            return \\\"editFile://file://\\\" + PATH\\n        } else if ([\\\".jpg\\\", \\\".svg\\\", \\\".mp3\\\", \\\".mp4\\\", \\\".m3u8\\\"].includes(TYPE)) {\\n            return \\\"file://\\\" + PATH\\n        } else if (\\\".hiker\\\" === TYPE) {\\n            return \\\"rule://\\\" + base64Encode(request(\\\"file://\\\" + PATH));\\n        } else {\\n            return $(\\\"无法打开，是否使用其他应用打开？\\\").confirm(path => \\\"openFile://file://\\\" + path, PATH);\\n        }*/\\n        let waylist=readFile(\\\"waylist.json\\\",0);\\n        if(!waylist){\\n            waylist=$.require(\\\"Default\\\");\\n        }else{\\n            try{\\n                waylist=JSON.parse(waylist);\\n            }catch{\\n                \\n            }\\n        }\\n        let g=waylist.find(x=>x.type.includes(TYPE));\\n        if(!g) return $(\\\"无法打开，是否使用其他应用打开？\\\").confirm(path => \\\"openFile://file://\\\" + path, PATH);\\n        if(g.way.startsWith(\\\"<js>\\\")){\\n            return eval(g.way.replace(\\\"<js>\\\",\\\"\\\"));\\n        }else{\\n            return g.way.replace(/\\\\{\\\\{\\\\PATH}\\\\}/g,PATH).replace(/\\\\{\\\\{\\\\TYPE}\\\\}/g,TYPE);\\n        }\\n    }),\\n    initialPath: getItem(\\\"初始目录\\\", getPath(\\\"hiker://files/\\\").slice(7)),\\n    rootDirPath: \\\"/storage/emulated/0/\\\",\\n    //onClickType: \\\"confirm\\\",\\n    memoryPath: true,\\n    requireUrl: k,\\n    canCreate: true,\\n    store:\\\"cc\\\",\\n    //cHomeTips: \\\"是否使用海阔小程序打开[${name}]?\\\",\\n    //cSearchTips: \\\"是否使用海阔小程序打开[${path}]?\\\",\\n    notShowHide: !getItem(\\\"显示隐藏文件\\\", \\\"1\\\"),\\n}, d);\"},{\"col_type\":\"movie_3\",\"name\":\"设置\",\"path\":\"设置\",\"rule\":\"js:\\nlet layout = [];\\nlayout.push({\\n    title: \\\"<strong>基础设置</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    title: \\\"显示隐藏文件(夹)\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let s = getItem(\\\"显示隐藏文件\\\", \\\"1\\\");\\n        setItem(\\\"显示隐藏文件\\\", s ? \\\"\\\" : \\\"1\\\");\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\";\\n    }),\\n    pic_url: getItem(\\\"显示隐藏文件\\\", \\\"1\\\") ? \\\"https://lanmeiguojiang.com/tubiao/messy/55.svg\\\" : \\\"https://lanmeiguojiang.com/tubiao/messy/63.svg\\\",\\n    col_type: \\\"text_icon\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    title: \\\"““””\\\"+\\\"初始目录\\\".fontcolor(\\\"gray\\\"),\\n    url: $().input(() => {\\n        let path=getPath(input).slice(7);\\n        if(!fileExist(\\\"file://\\\"+path)){\\n            return \\\"toast://不存在该目录\\\";\\n        }\\n        setItem(\\\"初始目录\\\", path);\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\";\\n    }),\\n    desc: getItem(\\\"初始目录\\\", getPath(\\\"hiker://files/\\\").slice(7)),\\n    col_type: \\\"text_1\\\"\\n});\\nlayout.push({\\n    title: \\\"““””\\\"+\\\"自定义打开方式\\\".fontcolor(\\\"gray\\\"),\\n    url: \\\"hiker://page/自定义打开方式\\\",\\n    col_type: \\\"text_1\\\",\\n    extra:{\\n        lineVisible: false\\n    }\\n});\\n/*\\nlayout.push({\\n    title: \\\"<strong>自定义打开方式</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});*/\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"默认\",\"path\":\"Default\",\"rule\":\"$.exports=[{\\n    type:[\\\".json\\\"],\\n    way:\\\"<js>'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json=' + base64Encode('file://' + PATH)\\\"\\n    \\n},{\\n    type:[\\\".html\\\"],\\n    way: \\\"web://file://{{PATH}}\\\"\\n    \\n},{\\n    type:[\\\".jpg\\\", \\\".svg\\\", \\\".mp3\\\", \\\".mp4\\\", \\\".m3u8\\\"],\\n    way:\\\"file://{{PATH}}\\\"\\n    \\n},{\\n    type:[\\\".hiker\\\"],\\n    way:\\\"<js>'rule://' + base64Encode(request('file://' + PATH))\\\"\\n    \\n},{\\n    type:[\\\".js\\\", \\\".py\\\"],\\n    way:\\\"editFile://file://{{PATH}}\\\"\\n    \\n},/* {\\n    type:[\\\".txt\\\"],\\n    way:\\\"<js>'hiker://page/txtParser.view#noHistory##noRecordHistory#?rule=本地资源管理&path=' + encodeURIComponent(PATH)\\\"\\n    \\n},*/{\\n    type:[\\\".epub\\\"],\\n    way:\\\"<js>'hiker://page/epubParser.view#noHistory##noRecordHistory#?rule=本地资源管理&path=' + encodeURIComponent(PATH)\\\"\\n    \\n}];\\n\"},{\"col_type\":\"movie_3\",\"name\":\"自定义打开方式\",\"path\":\"自定义打开方式\",\"rule\":\"js:\\nlet waylist = readFile(\\\"waylist.json\\\", 0);\\nif (!waylist) {\\n    waylist = $.require(\\\"Default\\\");\\n    saveFile(\\\"waylist.json\\\", JSON.stringify(waylist), 0);\\n} else {\\n    try {\\n        waylist = JSON.parse(waylist);\\n    } catch {\\n\\n    }\\n}\\nlet d = [];\\nd.push({\\n    title: \\\"创建\\\",\\n    url: $(\\\"\\\", \\\"输入扩展名\\\").input(() => {\\n        if (!input) return \\\"toast://创建失败\\\";\\n        return $(\\\"\\\", \\\"输入方式\\\").input((type) => {\\n            if (!input) return \\\"toast://创建失败\\\";\\n            let arr = type.split(\\\"|\\\");\\n            let waylist = readFile(\\\"waylist.json\\\", 0);\\n            waylist = JSON.parse(waylist);\\n            waylist.push({\\n                type: arr,\\n                way: input\\n            });\\n            saveFile(\\\"waylist.json\\\", JSON.stringify(waylist), 0);\\n            refreshPage(false);\\n            return \\\"toast://创建完成\\\";\\n        }, input);\\n    }),\\n    col_type: \\\"text_center_1\\\"\\n});\\nwaylist.forEach((v, i) => {\\n    d.push({\\n        title: \\\"扩展名：\\\" + v.type.join(\\\"|\\\"),\\n        desc: \\\"方式：\\\" + v.way,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_1\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    d.push({\\n        title: \\\"修改扩展名\\\",\\n        url: $(v.type.join(\\\"|\\\")).input((i) => {\\n            if (!input) return \\\"toast://修改失败\\\";\\n            let arr = input.split(\\\"|\\\");\\n            let waylist = readFile(\\\"waylist.json\\\", 0);\\n            waylist = JSON.parse(waylist);\\n            waylist[i].type = arr;\\n            saveFile(\\\"waylist.json\\\", JSON.stringify(waylist), 0);\\n            refreshPage(false);\\n            return \\\"toast://修改完成\\\";\\n        }, i),\\n        col_type: \\\"text_3\\\"\\n    });\\n    d.push({\\n        title: \\\"修改方式\\\",\\n        url: $(v.way).input((i) => {\\n            if (!input) return \\\"toast://修改失败\\\";\\n            let waylist = readFile(\\\"waylist.json\\\", 0);\\n            waylist = JSON.parse(waylist);\\n            waylist[i].way = input;\\n            saveFile(\\\"waylist.json\\\", JSON.stringify(waylist), 0);\\n            refreshPage(false);\\n            return \\\"toast://修改完成\\\"\\n        }, i),\\n        col_type: \\\"text_3\\\"\\n    });\\n    d.push({\\n        title: \\\"删除\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((i) => {\\n            let waylist = readFile(\\\"waylist.json\\\", 0);\\n            waylist = JSON.parse(waylist);\\n            waylist.splice(i,1);\\n            saveFile(\\\"waylist.json\\\", JSON.stringify(waylist), 0);\\n            refreshPage(false);\\n            return \\\"toast://修改完成\\\"\\n        }, i),\\n        col_type: \\\"text_3\\\"\\n    });\\n    d.push({\\n        col_type: \\\"line\\\"\\n    });\\n});\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"本地资源管理","author":"@LoyDgIk","version":73,"type":"tool","url":"hiker://empty","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nif (!getItem(\":startUse\", false)) {\n    toast(\":-)初次见面，请多关照\");\n    confirm({\n        title: \"使用须知\",\n        content: \"1.普通用户：本程序只提供本地阅读服务，不提供网络内容。\\n\\n2.开发者：提供多线程下载支持。\\n\\n3.如何获取内容?\\n通过「聚漫」「道长合集」等第三方小程序下载。\",\n        confirm: \"setItem(':startUse','1');refreshPage();'toast://感谢您的理解'\",\n        cancel: \"'toast://很遗憾，不能为您服务。\\\\n长按标题可删除。'\"\n    });\n    setResult([]);\n} else if (MY_RULE.title !== \"本地资源管理\") {\n    confirm({\n        title: \"警告⚠\",\n        content: \"不能改名哦！\",\n        confirm: $.toString(() => {\n            MY_RULE.title = \"本地资源管理\";\n            toast(\"已帮你改回原名，请重新导入\");\n            return \"rule://\" + base64Encode(\"海阔视界￥home_rule￥\" + JSON.stringify(MY_RULE));\n        }),\n        cancel: \"'toast://很遗憾，不能为您服务。\\\\n长按标题可删除。'\"\n    });\n    setResult([]);\n} else {\n    $.require(\"hiker://page/Main.view\");\n}","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"#f.File工具\",\"path\":\"File.js\",\"rule\":\"const File = java.io.File;\\nconst {\\n    Files,\\n    Paths,\\n    StandardCopyOption,\\n    StandardOpenOption\\n} = java.nio.file;\\nconst javaString = java.lang.String;\\nlet javaScope = new JavaImporter(java.io, java.lang, java.lang.reflect, java.util.Vector);\\n\\nfunction deleteFiles(fileName) {\\n    let file = new File(fileName);\\n    if (!file.exists()) {\\n        //log(\\\"删除文件失败：\\\" + fileName + \\\"文件不存在\\\");\\n        return false;\\n    } else {\\n        if (file.isFile()) {\\n            return deleteFile(fileName);\\n        } else {\\n            return deleteDirectory(fileName);\\n        }\\n\\n    }\\n\\n}\\n/**\\n * 删除单个文件\\n * \\n * @param fileName\\n *            被删除文件的文件名\\n * @return 单个文件删除成功返回true,否则返回false\\n */\\nfunction deleteFile(fileName) {\\n    let file = new File(fileName);\\n    if (file.isFile() && file.exists()) {\\n        file.delete();\\n        //log(\\\"删除单个文件\\\" + fileName + \\\"成功！\\\");\\n        return true;\\n    } else {\\n        //log(\\\"删除单个文件\\\" + fileName + \\\"失败！\\\");\\n        return false;\\n    }\\n\\n}\\n/**\\n * 删除目录（文件夹）以及目录下的文件\\n * \\n * @param dir\\n *            被删除目录的文件路径\\n * @return 目录删除成功返回true,否则返回false\\n */\\nfunction deleteDirectory(dir) {\\n    // 如果dir不以文件分隔符结尾，自动添加文件分隔符\\n    if (!dir.endsWith(File.separator)) {\\n        dir = dir + File.separator;\\n    }\\n    let dirFile = new File(dir);\\n    // 如果dir对应的文件不存在，或者不是一个目录，则退出\\n    if (!dirFile.exists() || !dirFile.isDirectory()) {\\n        //log(\\\"删除目录失败\\\" + dir + \\\"目录不存在！\\\");\\n        return false;\\n    }\\n    let flag = true;\\n    // 删除文件夹下的所有文件(包括子目录)\\n    let files = dirFile.listFiles();\\n    for (let i = 0; i < files.length; i++) {\\n        // 删除子文件\\n        if (files[i].isFile()) {\\n            flag = deleteFile(files[i].getAbsolutePath());\\n            if (!flag) {\\n                break;\\n            }\\n        } else { // 删除子目录\\n            flag = deleteDirectory(files[i].getAbsolutePath());\\n            if (!flag) {\\n                break;\\n            }\\n        }\\n    }\\n    if (!flag) {\\n        //log(\\\"删除目录失败\\\");\\n        return false;\\n    }\\n    // 删除当前目录\\n    if (dirFile.delete()) {\\n        //log(\\\"删除目录\\\" + dir + \\\"成功！\\\");\\n        return true;\\n    } else {\\n        //log(\\\"删除目录\\\" + dir + \\\"失败！\\\");\\n        return false;\\n    }\\n}\\n\\n//copy单个文件\\nfunction copyFile(source, target, isCover) {\\n    let sourcePath = Paths.get(source);\\n    let targetPath = Paths.get(target);\\n    let isExist = Files.exists(targetPath);\\n    if (Files.isDirectory(sourcePath) || (isExist && !isCover) || (isExist && Files.isDirectory(targetPath))) {\\n        return false;\\n    }\\n    try {\\n        if (!isExist) {\\n            Files.createDirectories(targetPath.getParent());\\n        }\\n        if (isCover === true) {\\n            Files.copy(sourcePath, targetPath, StandardCopyOption.REPLACE_EXISTING, StandardCopyOption.COPY_ATTRIBUTES);\\n        } else {\\n            Files.copy(sourcePath, targetPath, StandardCopyOption.COPY_ATTRIBUTES);\\n        }\\n    } catch (e) {\\n        return false;\\n    }\\n}\\n\\nfunction getFileTime(path) {\\n    let file = new File(path);\\n    let lastModified = file.lastModified();\\n    let date = new Date(lastModified);\\n    return date.getTime();\\n}\\n\\nfunction getName(path) {\\n    return new File(path).getName() + \\\"\\\";\\n}\\n\\nfunction getFilePath(path, type, expand) {\\n    type = type || \\\"file\\\";\\n    if (![\\\"file\\\", \\\"dir\\\"].includes(type)) throw new Error(\\\"类型错误\\\");\\n    let fileType = type === \\\"file\\\" ? \\\"isFile\\\" : \\\"isDirectory\\\";\\n    let file = new File(path);\\n    let array = file.listFiles() || [];\\n    let pathList = [];\\n    for (let i = 0; i < array.length; i++) {\\n        if (array[i][fileType]()) {\\n            pathList.push({\\n                name: array[i].getName() + \\\"\\\",\\n                path: array[i].getPath() + \\\"\\\",\\n                lastModified: Number(array[i].lastModified()),\\n\\n            });\\n        }\\n    }\\n    if (expand) {\\n        pathList = pathList.filter(it => it.name.endsWith(expand));\\n    }\\n    return pathList;\\n}\\n\\nfunction renameFile(fromPath, name) {\\n    let fromFile = new File(fromPath);\\n    let toFile = new File(fromFile.getParent() + \\\"/\\\" + name);\\n    try {\\n        if (!fromFile.exists()) {\\n            return false;\\n        }\\n        if (toFile.exists()) {\\n            if (!deleteFlies(toPath)) {\\n                return false;\\n            }\\n        }\\n        Files.move(fromFile.toPath(), toFile.toPath(), StandardCopyOption.REPLACE_EXISTING);\\n        return true;\\n    } catch (e) {\\n        log(e.toString());\\n        return false;\\n    }\\n}\\n\\nfunction moveFiles(fromPath, toPath) {\\n    let fromFile = new File(fromPath);\\n    let toFile = new File(toPath);\\n    try {\\n        if (!fromFile.exists()) {\\n            return false;\\n        }\\n        if (toFile.exists()) {\\n            if (!deleteFlies(toPath)) {\\n                return false;\\n            }\\n        }\\n        Files.move(fromFile.toPath(), toFile.toPath(), StandardCopyOption.REPLACE_EXISTING);\\n        return true;\\n    } catch (e) {\\n        log(e.toString());\\n        return false;\\n    }\\n}\\n\\nfunction fileWrite(path, content) {\\n    writeFile(\\\"file://\\\" + path, content)\\n}\\n\\nfunction fileWriteAppend(path, content) {\\n    let file = new File(path);\\n    let paths = file.toPath();\\n    if (file.exists()) {\\n        Files.write(paths, new javaString(content).getBytes(), StandardOpenOption.APPEND);\\n    } else {\\n        writeFile(\\\"file://\\\" + path, content);\\n    }\\n}\\n\\nfunction getTotalSizeOfFilesInDir(file) {\\n    if (file.isFile()) {\\n        return file.length();\\n    }\\n    let children = file.listFiles();\\n    let total = 0;\\n    if (children != null) {\\n        for (let child of children) {\\n            total += getTotalSizeOfFilesInDir(child);\\n        }\\n    }\\n    return total;\\n}\\n\\nfunction getFileSize(filePath) {\\n    //Byte\\n    let size = getTotalSizeOfFilesInDir(new File(filePath));\\n    if (size < 0) {\\n        return null;\\n    }\\n    let unitForm = [\\\"Byte\\\", \\\"KB\\\", \\\"MB\\\", \\\"GB\\\", \\\"TB\\\"];\\n    for (let i = 0, len = unitForm.length; i < len; i++) {\\n        if (size > 1024) {\\n            size /= 1024;\\n            continue;\\n        } else {\\n            return size.toFixed(2).replace(/(\\\\.00)$/, \\\"\\\") + unitForm[i];\\n        }\\n    }\\n    return \\\"ERROR:数值过大\\\";\\n}\\n//完整合并\\n/*\\nfunction fileCombine(filesInput, fileOut, extension, intercept) {\\n    with(javaScope) {\\n        const TMP_BUFFER_SIZE = 0x30000;\\n        const BUFFER_SIZE = 0x300000;\\n        //合并临时文件\\n        let inputFile = new File(filesInput);\\n        let tmpFile = new File(fileOut + \\\".tmp\\\");\\n        let tos = new BufferedOutputStream(new FileOutputStream(tmpFile));\\n        let inputFiles = inputFile.listFiles();\\n        let tbys = Array.newInstance(Byte.TYPE, TMP_BUFFER_SIZE);\\n        for (let file of inputFiles) {\\n            if (file.getName().endsWith(extension)) {\\n                let is = new FileInputStream(file);\\n                let len = 0;\\n                while ((len = is.read(tbys)) != -1) {\\n                    tos.write(tbys, 0, len);\\n                }\\n                is.close();\\n            }\\n        }\\n        tos.close();\\n        //规则替换规则;\\n        let outFile = new File(fileOut);\\n        if (typeof intercept === \\\"function\\\") {\\n            let tis = new FileInputStream(tmpFile);\\n            let os = new BufferedOutputStream(new FileOutputStream(outFile));\\n            let len = 0;\\n            let bys = Array.newInstance(Byte.TYPE, BUFFER_SIZE);\\n            while ((len = tis.read(bys)) != -1) {\\n                let nbys = intercept(new String(bys,0,len));\\n                os.write(nbys, 0, nbys.length);\\n            }\\n            tmpFile.delete();\\n            tis.close();\\n            os.close();\\n        } else {\\n            if (outFile.exists()) {\\n                outFile.delete();\\n            }\\n            tmpFile.renameTo(outFile);\\n        }\\n    }\\n}*/\\n//残\\nfunction fileRule(filesInput, fileOut, intercept) {\\n    with(javaScope) {\\n        const BUFFER_SIZE = 0x300000;\\n        let tmpFile = new File(filesInput);\\n        if (!(tmpFile.exists() && tmpFile.isFile())) {\\n            return false;\\n        }\\n        let outFile = new File(fileOut);\\n\\n        let tis = new FileInputStream(tmpFile);\\n        let os = new BufferedOutputStream(new FileOutputStream(outFile));\\n        let len = 0;\\n        let bys = Array.newInstance(Byte.TYPE, BUFFER_SIZE);\\n        while ((len = tis.read(bys)) != -1) {\\n            let nbys = intercept(new String(bys, 0, len));\\n            os.write(nbys, 0, nbys.length);\\n        }\\n        tmpFile.delete();\\n        tis.close();\\n        os.close();\\n        return true;\\n    }\\n}\\n\\nfunction readFile(path) {\\n    try {\\n        let paths = Paths.get(path);\\n        if (!Files.exists(paths)) return \\\"\\\";\\n        return String(new javaString(Files.readAllBytes(paths)));\\n    } catch {\\n        return \\\"\\\";\\n    }\\n}\\n$.exports = {\\n    getFileTime: (path) => getFileTime(path),\\n    getFilePath: (path, type, expand) => getFilePath(path, type, expand),\\n    deleteFiles: (path) => deleteFiles(path),\\n    renameFile: (path, name) => renameFile(path, name),\\n    moveFiles: (fromPath, toPath) => moveFiles(fromPath, toPath),\\n    fileWrite: (path, content) => fileWrite(path, content),\\n    fileWriteAppend: (path, content) => fileWriteAppend(path, content),\\n    getName: (path) => getName(path),\\n    getFileSize: (filePath) => getFileSize(filePath),\\n    fileRule: (filesInput, fileOut, intercept) => fileRule(filesInput, fileOut, intercept),\\n    copyFile: (source, target, isCover) => copyFile(source, target, isCover),\\n    readFile: (path) => readFile(path)\\n}\"},{\"col_type\":\"text_2\",\"name\":\"#v.下载列表-普通下载\",\"path\":\"download.view\",\"rule\":\"js:\\nconst viewConfig = Object.assign({\\n    chapterList: [],\\n    info: {},\\n    defaultView: \\\"0\\\"\\n}, MY_PARAMS);\\nviewConfig.info = Object.assign({\\n    ruleName: \\\"\\\",\\n    bookName: \\\"\\\",\\n    bookTopPic: \\\"\\\",\\n    parseCode: \\\"\\\",\\n    type: \\\"comic\\\",\\n}, viewConfig.info);\\nlet {\\n    chapterList,\\n    info,\\n    defaultView\\n} = viewConfig;\\nsetPageTitle(\\\"选择器|\\\" + info.bookName)\\n\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Tool = $.require(\\\"hiker://page/Tool.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nconst def_DoVi_Style = Config.def_DoVi_Style;\\nconst MY_ID = info.ruleName + \\\"//\\\" + info.bookName;\\n\\n\\nlet isStart = getMyVar(MY_ID + \\\":isStart\\\");\\nlet viewMode = getMyVar(MY_ID + \\\":viewMode\\\", defaultView);\\nlet isReverse = getMyVar(MY_ID + \\\":isReverse\\\", \\\"0\\\");\\nlet tagFilter = getMyVar(MY_ID + \\\":tagFilter\\\", Config.def_DoVi_Type);\\n\\naddListener(\\\"onClose\\\", $.toString((MY_ID) => {\\n    clearMyVar(MY_ID + \\\":loadingTeam\\\");\\n    clearMyVar(MY_ID + \\\":viewMode\\\");\\n    clearMyVar(MY_ID + \\\":completed\\\");\\n    clearMyVar(MY_ID + \\\":batchTeam\\\");\\n    clearMyVar(MY_ID + \\\":tagFilter\\\");\\n    clearMyVar(MY_ID + \\\":pageNum\\\");\\n}, MY_ID));\\n\\nlet layout = [];\\n\\nif (isStart === \\\"1\\\") {\\n    putMyVar(MY_ID + \\\":viewMode\\\", defaultView);\\n    viewMode = \\\"1\\\";\\n}\\n\\nlet backupChapterList = chapterList;\\nif (typeof chapterList === \\\"string\\\") {\\n    chapterList = JSON.parse(request(\\\"file://\\\" + chapterList) || \\\"[]\\\");\\n}\\nlet chapterAll = chapterList;\\nchapterList = chapterList.map((item, CID) => {\\n    item.CID = CID;\\n    return item;\\n});\\nlet pageNum = Number(getMyVar(MY_ID + \\\":pageNum\\\", \\\"1\\\"));\\nlet chapterChunk = [chapterList].concat(Tool.chunk(chapterList, Config.viewPageSize));\\nchapterList = chapterChunk[pageNum] || [];\\n\\nfunction setType() {\\n    let set = (tag, put) => {\\n        putMyVar(put, tag);\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\"\\n    };\\n    layout.push({\\n        title: 0 == pageNum ? \\\"““””\\\" + (\\\"全部(\\\" + chapterAll.length + \\\")\\\").fontcolor(\\\"#23AD6F\\\") : \\\"全部(\\\" + chapterAll.length + \\\")\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(set, 0, MY_ID + \\\":pageNum\\\"),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n    for (let i = 1; i < chapterChunk.length; i++) {\\n        let tagText = (i - 1) * Config.viewPageSize + \\\"-\\\" + ((i - 1) * Config.viewPageSize + chapterChunk[i].length);\\n        layout.push({\\n            title: i == pageNum ? \\\"““””\\\" + tagText.fontcolor(\\\"#23AD6F\\\") : tagText,\\n            url: $(\\\"#noLoading#\\\").lazyRule(set, i, MY_ID + \\\":pageNum\\\"),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    layout.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n    layout.push({\\n        title: tagFilter === \\\"0\\\" ? \\\"““””\\\" + \\\"全部\\\".fontcolor(\\\"#23AD6F\\\") : \\\"全部\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(set, \\\"0\\\", MY_ID + \\\":tagFilter\\\"),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n    layout.push({\\n        title: tagFilter === \\\"1\\\" ? \\\"““””\\\" + \\\"未下载\\\".fontcolor(\\\"#23AD6F\\\") : \\\"未下载\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(set, \\\"1\\\", MY_ID + \\\":tagFilter\\\"),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n    layout.push({\\n        title: tagFilter === \\\"2\\\" ? \\\"““””\\\" + \\\"已下载\\\".fontcolor(\\\"#23AD6F\\\") : \\\"已下载\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(set, \\\"2\\\", MY_ID + \\\":tagFilter\\\"),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n}\\nlet chapterTeam = [];\\nlet record = [];\\nif (info.type === \\\"comic\\\") {\\n    let lazy = $(\\\"#noLoading#\\\").lazyRule(() => {\\n        const File = $.require(\\\"hiker://page/File.js\\\");\\n        let filelist = File.getFilePath(input);\\n        let piclist = filelist.map((item, i) => \\\"file://\\\" + input + \\\"/\\\" + (i + 1) + \\\".jpg\\\");\\n        return \\\"pics://\\\" + piclist.join(\\\"&&\\\");\\n    });\\n\\n    function comFun(i, item) {\\n        let rootPath = Config.comicPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\" + i + \\\"$A$\\\" + item.title;\\n        return {\\n            title: \\\"““\\\" + item.title + \\\"””\\\",\\n            url: rootPath + lazy,\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i,\\n            },\\n            col_type: def_DoVi_Style\\n        }\\n    }\\n    File.getFilePath(Config[info.type + \\\"Path\\\"] + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName, \\\"dir\\\").forEach((file) => {\\n        let att = Tool.split(file.name, \\\"$\\\", 2);\\n        if (att.length === 3 && att[1] === (\\\"A\\\")) {\\n            record.push(att[2]);\\n        }\\n    });\\n} else {\\n    function comFun(i, item) {\\n        return {\\n            title: \\\"““\\\" + item.title + \\\"””\\\",\\n            url: \\\"hiker://page/NovelMainBody#autoPage##readTheme#\\\",\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i,\\n                path: Config.novelPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\" + i + \\\"$A$\\\" + item.title + \\\".txt\\\",\\n                title: item.title\\n            },\\n            col_type: def_DoVi_Style\\n        }\\n    }\\n    File.getFilePath(Config[info.type + \\\"Path\\\"] + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName, \\\"file\\\", \\\".txt\\\").forEach((file) => {\\n        let att = Tool.split(file.name, \\\"$\\\", 2);\\n        if (att.length === 3 && att[1] === (\\\"A\\\")) {\\n            record.push(att[2].slice(0, att[2].lastIndexOf(\\\".\\\")));\\n        }\\n    });\\n}\\n\\nfunction clickDownload(item, info, MY_ID, i) {\\n    let loadingTeam = JSON.parse(getMyVar(MY_ID + \\\":loadingTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n    let ElementIndex = loadingTeam.indexOf(i);\\n    if (ElementIndex > -1) return \\\"toast://正在下载\\\";\\n\\n    loadingTeam.push(i);\\n    putMyVar(MY_ID + \\\":loadingTeam\\\", JSON.stringify(loadingTeam));\\n    updateItem({\\n        title: \\\"‘‘\\\" + item.title + \\\"’’\\\",\\n        extra: {\\n            id: MY_ID + \\\"#\\\" + i\\n        }\\n    });\\n    let result = \\\"toast://下载失败\\\";\\n    try {\\n        toast(\\\"开始下载:\\\" + item.title);\\n        let download = $.require(\\\"hiker://page/Download.exe.js\\\");\\n        result = download(item, info, MY_ID, i);\\n        updateItem({\\n            title: \\\"““\\\" + item.title + \\\"””\\\",\\n            url: \\\"toast://已下载\\\",\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i\\n            }\\n        });\\n    } catch (e) {\\n        updateItem({\\n            title: item.title,\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i\\n            }\\n        });\\n        log(e.toString());\\n    } finally {\\n        loadingTeam.splice(ElementIndex, 1);\\n        putMyVar(MY_ID + \\\":loadingTeam\\\", JSON.stringify(loadingTeam));\\n    }\\n    return result;\\n}\\n\\nfunction singleView() {\\n    layout.push({\\n        title: \\\"反转列表\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((isReverse, MY_ID) => {\\n            putMyVar(MY_ID + \\\":isReverse\\\", isReverse === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, isReverse, MY_ID),\\n        pic_url: \\\"https://img.icons8.com/?id=33nvDqbHH7HW&size=48&format=gif&token=\\\",\\n        col_type: \\\"icon_2\\\"\\n    });\\n    layout.push({\\n        title: \\\"批量下载\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((MY_ID) => {\\n            let loadingTeam = JSON.parse(getMyVar(MY_ID + \\\":loadingTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n            if (loadingTeam.length > 0) return \\\"toast://还有任务没有完成\\\";\\n            if (getAppVersion() < 2594) return \\\"toast://未开放\\\";\\n            putMyVar(MY_ID + \\\":viewMode\\\", \\\"1\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n\\n        }, MY_ID),\\n        pic_url: \\\"https://img.icons8.com/?format=gif&id=0uafaMNzxj88&token=\\\",\\n        col_type: \\\"icon_2\\\"\\n    });\\n    setType();\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    let loadingTeam = JSON.parse(getMyVar(MY_ID + \\\":loadingTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n    for (let i = 0, item = chapterList[0]; i < chapterList.length; item = chapterList[++i]) {\\n        let is_download = record.includes(item.title);\\n        if (is_download && tagFilter !== \\\"1\\\") {\\n            chapterTeam.push(comFun(item.CID, item));\\n        } else if (!is_download && tagFilter !== \\\"2\\\") {\\n            chapterTeam.push({\\n                title: loadingTeam.includes(item.CID) ? \\\"‘‘\\\" + item.title + \\\"’’\\\" : item.title,\\n                url: $(\\\"#noLoading#\\\").lazyRule(clickDownload, item, info, MY_ID, item.CID),\\n                extra: {\\n                    id: MY_ID + \\\"#\\\" + item.CID\\n                },\\n                col_type: def_DoVi_Style\\n            });\\n        }\\n    }\\n}\\n\\nfunction clickChoose(title, MY_ID, i) {\\n    let isStart = getMyVar(MY_ID + \\\":isStart\\\");\\n    if (isStart === \\\"1\\\") return \\\"toast://正在下载...\\\";\\n    let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n    let ElementIndex = batchTeam.indexOf(i);\\n    if (ElementIndex > -1) {\\n        updateItem({\\n            title: title,\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i\\n            }\\n        });\\n        batchTeam.splice(ElementIndex, 1);\\n    } else {\\n        updateItem({\\n            title: \\\"‘‘\\\" + title + \\\"’’\\\",\\n            extra: {\\n                id: MY_ID + \\\"#\\\" + i\\n            }\\n        });\\n        batchTeam.push(i);\\n    }\\n    putMyVar(MY_ID + \\\":batchTeam\\\", JSON.stringify(batchTeam));\\n    return \\\"hiker://empty\\\";\\n}\\n\\nfunction batchView() {\\n    layout.push({\\n        title: \\\"单选下载\\\",\\n        pic_url: \\\"https://img.icons8.com/?id=PIicvF6ebzMn&size=48&format=gif&token=\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((MY_ID) => {\\n            if (getMyVar(MY_ID + \\\":isStart\\\") === \\\"1\\\") return \\\"toast://正在批量下载\\\";\\n            putMyVar(MY_ID + \\\":viewMode\\\", \\\"0\\\");\\n            clearMyVar(MY_ID + \\\":batchTeam\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, MY_ID),\\n        col_type: \\\"icon_small_4\\\"\\n    });\\n    let start = Config.viewPageSize * Math.max(pageNum - 1, 0);\\n    let end = start + chapterList.length;\\n    layout.push({\\n        title: \\\"选择全部\\\",\\n        pic_url: \\\"https://img.icons8.com/?format=gif&id=1HVcHLoNzrit&token=\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((start, end, MY_ID) => {\\n            const Tool = $.require(\\\"hiker://page/Tool.js\\\");\\n            let chooseTeam = Tool.range(start, end);\\n            let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n            batchTeam = Array.from(new Set(batchTeam.concat(chooseTeam)));\\n            let completed = JSON.parse(getMyVar(MY_ID + \\\":completed\\\", \\\"[]\\\") || \\\"[]\\\");\\n            batchTeam = batchTeam.filter((i) => !completed.includes(i));\\n            putMyVar(MY_ID + \\\":batchTeam\\\", JSON.stringify(batchTeam));\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, start, end, MY_ID),\\n        col_type: \\\"icon_small_4\\\"\\n    });\\n    layout.push({\\n        title: \\\"取消全部\\\",\\n        pic_url: \\\"https://img.icons8.com/?format=gif&id=HzEjPpI3NL8D&token=\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((start, end, MY_ID) => {\\n            const Tool = $.require(\\\"hiker://page/Tool.js\\\");\\n            let chooseTeam = new Set(Tool.range(start, end));\\n            let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n            batchTeam = batchTeam.filter(x => !chooseTeam.has(x));\\n            putMyVar(MY_ID + \\\":batchTeam\\\", JSON.stringify(batchTeam));\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, start, end, MY_ID),\\n        col_type: \\\"icon_small_4\\\"\\n    });\\n    layout.push({\\n        title: \\\"确认选中\\\",\\n        pic_url: \\\"https://img.icons8.com/?format=gif&id=tMrvtc6T9hVb&token=\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((MY_ID) => {\\n            if (getMyVar(MY_ID + \\\":isStart\\\", \\\"-1\\\") !== \\\"-1\\\") {\\n                return \\\"toast://正在下载...\\\";\\n            }\\n            let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n            return batchTeam.length === 0 ? \\\"toast://你还什么都没有选\\\" : \\\"hiker://page/Batch.view#noRefresh##noHistory##noRecordHistory#\\\";\\n        }, MY_ID),\\n        extra: {\\n            newWindow: true,\\n            windowId: MY_ID + \\\"//批量下载\\\",\\n            MY_ID: MY_ID,\\n            chapterList: backupChapterList,\\n            info: info\\n        },\\n        col_type: \\\"icon_small_4\\\"\\n    });\\n    setType();\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n    let completed = [];\\n    for (let i = 0, item = chapterList[0]; i < chapterList.length; item = chapterList[++i]) {\\n        let is_download = record.includes(item.title);\\n        if (is_download && tagFilter !== \\\"1\\\") {\\n            completed.push(item.CID);\\n            chapterTeam.push(comFun(item.CID, item));\\n        } else if (!is_download && tagFilter !== \\\"2\\\") {\\n            chapterTeam.push({\\n                title: batchTeam.includes(item.CID) ? \\\"‘‘\\\" + item.title + \\\"’’\\\" : item.title,\\n                url: $(\\\"#noLoading#\\\").lazyRule(clickChoose, item.title, MY_ID, item.CID),\\n                extra: {\\n                    id: MY_ID + \\\"#\\\" + item.CID\\n                },\\n                col_type: def_DoVi_Style\\n            });\\n        }\\n    }\\n    putMyVar(MY_ID + \\\":completed\\\", JSON.stringify(completed));\\n}\\nswitch (viewMode) {\\n    case \\\"0\\\":\\n        singleView();\\n        break;\\n    case \\\"1\\\":\\n        batchView();\\n        break;\\n}\\nif (isReverse === \\\"1\\\") {\\n    chapterTeam.reverse();\\n}\\nlayout.push.apply(layout, chapterTeam);\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.批量下载器\",\"path\":\"Batch.view\",\"rule\":\"js:\\nlet {\\n    chapterList,\\n    info,\\n    MY_ID\\n} = MY_PARAMS;\\nsetPageTitle(\\\"下载器|\\\"+info.bookName);\\naddListener(\\\"onClose\\\", $.toString((MY_ID) => {\\n    clearMyVar(MY_ID + \\\":isStart\\\");\\n    clearMyVar(MY_ID + \\\":status\\\");\\n    clearMyVar(MY_ID + \\\":batchTeam\\\");\\n    refreshPage();\\n}, MY_ID));\\n\\nlet isStart = getMyVar(MY_ID + \\\":isStart\\\", \\\"0\\\");\\nlet status = getMyVar(MY_ID + \\\":status\\\", \\\"0\\\");\\nlet layout = [];\\n\\nlet batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\nif(typeof chapterList === \\\"string\\\"){\\n    chapterList = JSON.parse(request(\\\"file://\\\"+chapterList)||\\\"[]\\\");\\n}\\nlet chapterTeam = batchTeam.map(v => {\\n    let chapterItem = chapterList[v];\\n    chapterItem.CID = v;\\n    return chapterItem;\\n});\\nif (isStart === \\\"0\\\") {\\n    layout.push({\\n        title: \\\"开始下载[\\\" + chapterTeam.length + \\\"]\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((chapterTeam, info, MY_ID) => {\\n            putMyVar(MY_ID + \\\":isStart\\\", \\\"1\\\");\\n            refreshPage(false);\\n            let download = $.require(\\\"hiker://page/BatchStatistics.js\\\");\\n            return download(chapterTeam, info, MY_ID) || \\\"toast://下载错误\\\";\\n        }, chapterTeam, info, MY_ID),\\n        col_type: \\\"text_center_1\\\",\\n        extra: {\\n            id: MY_ID + \\\"||开始下载\\\"\\n        }\\n    });\\n    layout.push({\\n        title: \\\"任务列表：\\\",\\n        col_type: \\\"rich_text\\\",\\n    });\\n    for (let item of chapterTeam) {\\n        layout.push({\\n            title: item.title,\\n            url: \\\"hiker://empty\\\",\\n            col_type: \\\"text_2\\\"\\n        });\\n    }\\n\\n} else {\\n    layout.push({\\n        title: \\\"下载进度:0/\\\"+chapterTeam.length,\\n        desc: \\\"““””▇▇▇▇▇▇▇▇▇▇\\\".fontcolor(\\\"#e5e1e4\\\")+\\\" 0%\\\",\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\",\\n        extra: {\\n            id: MY_ID + \\\"||下载进度\\\",\\n            lineVisible: false\\n        }\\n    });\\n    layout.push({\\n        title: \\\"后台下载\\\",\\n        url: \\\"func://background\\\",\\n        col_type: \\\"text_2\\\"\\n    });\\n\\n    layout.push({\\n        title: [\\\"[取消下载]\\\", \\\"[正在停止...]\\\", \\\"[返回]\\\", \\\"[处理失败]\\\", \\\"[重新开始]\\\"][status],\\n        url: $(\\\"#noLoading#\\\").lazyRule((MY_ID) => {\\n            let status = getMyVar(MY_ID + \\\":status\\\", \\\"0\\\");\\n            if (status === \\\"0\\\") {\\n                putMyVar(MY_ID + \\\":status\\\", \\\"1\\\");\\n                updateItem({\\n                    title: \\\"[正在停止...]\\\",\\n                    extra: {\\n                        id: MY_ID + \\\"||下载控制\\\"\\n                    }\\n                });\\n                return \\\"toast://正在取消下载任务\\\";\\n            } else if (status === \\\"1\\\") {\\n                return \\\"toast://正在暂停...\\\";\\n            } else if (status === \\\"2\\\") {\\n                back();\\n                return \\\"toast://已退出下载器\\\";\\n            } else if ([\\\"3\\\", \\\"4\\\"].includes(status)) {\\n                clearMyVar(MY_ID + \\\":isStart\\\");\\n                clearMyVar(MY_ID + \\\":status\\\");\\n                clearMyVar(MY_ID + \\\":log\\\");\\n                refreshPage();\\n                return \\\"toast://重新点击下载\\\"\\n            }\\n        }, MY_ID),\\n        col_type: \\\"text_2\\\",\\n        extra: {\\n            id: MY_ID + \\\"||下载控制\\\"\\n        }\\n    });\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n    layout.push({\\n        title: \\\"<strong>下载日志</strong>\\\".big(),\\n        col_type: \\\"rich_text\\\",\\n        \\n    });\\n    layout.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: MY_ID + \\\"||日志\\\"\\n        }\\n    });\\n    layout.push({\\n        title:\\\"““””$>\\\"+\\\"开始下载......\\\".fontcolor(\\\"#00ff00\\\"),\\n        url:\\\"hiker://empty\\\",\\n        col_type: \\\"text_1\\\",\\n        extra: {\\n            id: MY_ID + \\\"#log#0\\\",\\n            lineVisible:false\\n        }\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#fg.批量下载统计\",\"path\":\"BatchStatistics.js\",\"rule\":\"const Tool = $.require(\\\"hiker://page/Tool.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nfunction task(taskParam) {\\n    let result = $.require(\\\"hiker://page/Batch.exe.js\\\")(taskParam);\\n    return result;\\n}\\n\\n$.exports = function(chapterTeam, info, MY_ID) {\\n    if (chapterTeam.length === 0) {\\n        return \\\"toast://空的下载队列\\\";\\n    }\\n    var count = 0;\\n    var taskCount = chapterTeam.length;\\n    var successCID = [];\\n    var failName = [];\\n    var logCount = 1;\\n    var taskTeam = chapterTeam.map(chapterItem => ({\\n        func: task,\\n        id: chapterItem.title,\\n        param: {\\n            chapterItem: chapterItem,\\n            info: info,\\n            MY_ID: MY_ID\\n        }\\n    }));\\n    let logNum = Config.logNum;\\n\\n    function putLog(text) {\\n        log(text);\\n        if (logCount >= logNum) {\\n            deleteItem(MY_ID + \\\"#log#\\\" + (logCount - 10));\\n        }\\n        addItemAfter(MY_ID + \\\"||日志\\\", {\\n            url: \\\"hiker://empty\\\",\\n            title: \\\"$>\\\" + text,\\n            col_type: \\\"text_1\\\",\\n            extra: {\\n                lineVisible: false,\\n                id: MY_ID + \\\"#log#\\\" + logCount\\n            }\\n        });\\n        logCount++;\\n    }\\n\\n    function listener(perch, id, error, CID) {\\n        count++;\\n        let isSuccess = false;\\n        if (error !== null) {\\n            failName.push(id);\\n            putLog(\\\"[listener]下载失败：\\\" + id + \\\"<ERROR@ \\\" + error + \\\">\\\");\\n        } else if (CID >= 0) {\\n            successCID.push(CID);\\n            let ratio = (count / taskCount).toFixed(4);\\n            let stripCount = Math.ceil(ratio * 10);\\n            isSuccess = true;\\n            updateItem({\\n                title: \\\"下载进度：\\\" + successCID.length + \\\"/\\\" + taskCount,\\n                desc: \\\"““””\\\" + \\\"▇\\\".repeat(stripCount).fontcolor(\\\"#ffac2d\\\") + \\\"▇\\\".repeat(10 - stripCount).fontcolor(\\\"#e5e1e4\\\") + \\\" \\\" + (ratio * 100) + \\\"%\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载进度\\\"\\n                }\\n            });\\n            putLog(\\\"[listener]已完成下载：\\\" + id);\\n        } else if (CID === -1) {\\n            failName.push(id);\\n            putLog(\\\"[listener]已停止：\\\" + id);\\n        }\\n        if (taskCount !== count) return;\\n        if (successCID.length === taskCount) {\\n            updateItem({\\n                desc: \\\"““””\\\" + \\\"▇\\\".repeat(10).fontcolor(\\\"#00ff00\\\") + \\\" 100%\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载进度\\\"\\n                }\\n            });\\n        }\\n        let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n        let status = getMyVar(MY_ID + \\\":status\\\", \\\"0\\\");\\n        let failTeam = batchTeam.filter(v => !successCID.includes(v));\\n        putMyVar(MY_ID + \\\":batchTeam\\\", JSON.stringify(failTeam));\\n        if (failTeam.length > 0 && status !== \\\"1\\\") {\\n            putMyVar(MY_ID + \\\":status\\\", \\\"3\\\");\\n            putLog(\\\"下载失败:[\\\" + failName.join(\\\"]，[\\\") + \\\"]。\\\");\\n            updateItem({\\n                title: \\\"[处理失败]\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载控制\\\"\\n                }\\n            });\\n        } else if (failTeam.length > 0 && status === \\\"1\\\") {\\n            putMyVar(MY_ID + \\\":status\\\", \\\"4\\\");\\n            putLog(\\\"[listener]#已停止所有任务，但已有进度不会消失#\\\");\\n            updateItem({\\n                title: \\\"[重新开始]\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载控制\\\"\\n                }\\n            });\\n        } else {\\n            putMyVar(MY_ID + \\\":status\\\", \\\"2\\\");\\n            putLog(\\\"下载任务[\\\" + info.bookName + \\\"]已全部成功完成\\\");\\n            updateItem({\\n                title: \\\"[返回]\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载控制\\\"\\n                }\\n            });\\n        }\\n        toast(\\\"下载任务[\\\" + info.bookName + \\\"]已完成\\\");\\n    }\\n    let taskTeamChunk = [];\\n    if (Config.threadNum > 0) {\\n        taskTeamChunk = Tool.chunk(taskTeam, Config.threadNum);\\n    } else {\\n        taskTeamChunk = [taskTeam];\\n    }\\n    for (let taskList of taskTeamChunk) {\\n        be(taskList, {\\n            func: listener\\n        });\\n        let status = getMyVar(MY_ID + \\\":status\\\", \\\"0\\\");\\n        if (status === \\\"1\\\") {\\n            let batchTeam = JSON.parse(getMyVar(MY_ID + \\\":batchTeam\\\", \\\"[]\\\") || \\\"[]\\\");\\n            let status = getMyVar(MY_ID + \\\":status\\\", \\\"0\\\");\\n            let failTeam = batchTeam.filter(v => !successCID.includes(v));\\n            putMyVar(MY_ID + \\\":batchTeam\\\", JSON.stringify(failTeam));\\n            putMyVar(MY_ID + \\\":status\\\", \\\"4\\\");\\n            putLog(\\\"[listener]#已停止所有任务，但已有进度不会消失#\\\");\\n            updateItem({\\n                title: \\\"[重新开始]\\\",\\n                extra: {\\n                    id: MY_ID + \\\"||下载控制\\\"\\n                }\\n            });\\n            return \\\"hiker://empty\\\";\\n        }\\n\\n    }\\n\\n    return \\\"hiker://empty\\\";\\n};\"},{\"col_type\":\"movie_3\",\"name\":\"#fg.批量主程序\",\"path\":\"Batch.exe.js\",\"rule\":\"const File = $.require(\\\"hiker://page/File.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\nconst Tool = $.require(\\\"hiker://page/Tool.js\\\");\\n\\nfunction comic(taskParam) {\\n    let {\\n        chapterItem,\\n        info,\\n        MY_ID,\\n    } = taskParam;\\n    if (getMyVar(MY_ID + \\\":status\\\", \\\"\\\") === \\\"1\\\") {\\n        return -1;\\n    }\\n    let mainPath = Config.comicPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\";\\n    let chapterPath = mainPath + chapterItem.CID + \\\"$B$\\\" + chapterItem.title + \\\"/\\\";\\n    let picList;\\n    try {\\n        let getPicList = new Function(\\\"input\\\", \\\"url\\\", \\\"return \\\" + info.parseCode);\\n        picList = getPicList(chapterItem.url, chapterItem.url);\\n        if (typeof picList === \\\"string\\\") {\\n            picList = picList.replace(\\\"pics://\\\", \\\"\\\").split(\\\"&&\\\");\\n        }\\n    } catch (e) {\\n        e.message = \\\"<漫画图片解析错误：\\\" + e.message + \\\">\\\";\\n        throw e;\\n    }\\n    const L = picList.length;\\n    if (L === 0) {\\n        throw new Error(\\\"<漫画图片解析错误：图片链接返回为空>\\\");\\n    }\\n    if (info.bookTopPic) {\\n        try {\\n            let bookTopPic = Tool.hikerPic(info.bookTopPic);\\n            requireDownload(bookTopPic[0], mainPath + info.bookName + \\\".jpg\\\", bookTopPic[1]);\\n        } catch (e) {\\n            log(\\\"<封面下载错误：\\\" + e.message + \\\">\\\");\\n        }\\n    }\\n    var schedule = new Map([\\n        [L, () => log(chapterItem.title + \\\"已下载100%\\\")],\\n        [~~(0.90 * L), () => log(chapterItem.title + \\\"已下载90%+\\\")],\\n        [~~(0.75 * L), () => log(chapterItem.title + \\\"已下载75%+\\\")],\\n        [~~(0.50 * L), () => log(chapterItem.title + \\\"已下载50%+\\\")],\\n        [~~(0.25 * L), () => log(chapterItem.title + \\\"已下载25%+\\\")]\\n    ]);\\n    let errorNum = 0;\\n    for (var i = 0; i < L; i++) {\\n        try {\\n            let pic = Tool.hikerPic(picList[i]);\\n            requireDownload(pic[0], chapterPath + (i + 1) + \\\".jpg\\\", pic[1]);\\n            schedule.has(i + 1) && schedule.get(i + 1)();\\n            if (getMyVar(MY_ID + \\\":status\\\", \\\"\\\") === \\\"1\\\") {\\n                return -1;\\n            }\\n            errorNum = 0;\\n        } catch (e) {\\n            if(errorNum < 5){\\n                errorNum++;\\n                i--;\\n                \\n                continue;\\n            }else{\\n                throw e;\\n            }\\n        }\\n    }\\n    File.renameFile(chapterPath, chapterItem.CID + \\\"$A$\\\" + chapterItem.title);\\n    return chapterItem.CID;\\n}\\n\\nfunction novel(taskParam) {\\n    let {\\n        chapterItem,\\n        info,\\n        MY_ID,\\n    } = taskParam;\\n    if (getMyVar(MY_ID + \\\":status\\\", \\\"\\\") === \\\"1\\\") {\\n        return -1;\\n    }\\n    let mainPath = Config.novelPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\";\\n    let chapterPath = mainPath + chapterItem.CID + \\\"$A$\\\" + chapterItem.title + \\\".txt\\\";\\n    let content = \\\"\\\";\\n    try {\\n        let getContent = new Function(\\\"input\\\", \\\"url\\\", \\\"return \\\" + info.parseCode);\\n        content = getContent(chapterItem.url, chapterItem.url);\\n    } catch (e) {\\n        e.message = \\\"<小说正文解析错误：\\\" + e.message + \\\">\\\";\\n        throw e;\\n    }\\n    if (!content) {\\n        throw new Error(\\\"<小说正文解析错误：正文返回为空>\\\");\\n    }\\n    if (info.bookTopPic) {\\n        try {\\n            let bookTopPic = Tool.hikerPic(info.bookTopPic);\\n            requireDownload(bookTopPic[0], mainPath + info.bookName + \\\".jpg\\\", bookTopPic[1]);\\n        } catch (e) {\\n            log(\\\"<封面下载错误：\\\" + e.message + \\\">\\\");\\n        }\\n    }\\n    File.fileWrite(chapterPath, content.replace(/<script>.*?<\\\\/script>/gmi, \\\"\\\").trimRight());\\n    //File.renameFile(chapterPath, chapterItem.CID + \\\"$A$\\\" + chapterItem.title);\\n    return chapterItem.CID;\\n}\\nvar $exe = {\\n    comic: comic,\\n    novel: novel\\n};\\n$.exports = function(taskParam) {\\n    return $exe[taskParam.info.type](taskParam);\\n};\"},{\"col_type\":\"movie_3\",\"name\":\"#fg.普通主程序\",\"path\":\"Download.exe.js\",\"rule\":\"const File = $.require(\\\"hiker://page/File.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\nconst Tool = $.require(\\\"hiker://page/Tool.js\\\");\\n\\nfunction novel(item, info, MY_ID, order) {\\n    let mainPath = Config.novelPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\";\\n    let chapterPath = mainPath + order + \\\"$A$\\\" + item.title + \\\".txt\\\";\\n    let content = \\\"\\\";\\n    try {\\n        let getContent = new Function(\\\"input\\\", \\\"url\\\", \\\"return \\\" + info.parseCode);\\n        content = getContent(item.url, item.url) || \\\"\\\";\\n    } catch (e) {\\n        e.message = \\\"<小说正文解析错误> \\\" + e.message;\\n        throw e;\\n    }\\n    if (!content) {\\n        toast(\\\"小说为空\\\");\\n        throw new Error(\\\"<小说正文解析错误：正文返回为空>\\\");\\n    }\\n    if (info.bookTopPic) {\\n        try {\\n            let bookTopPic = Tool.hikerPic(info.bookTopPic);\\n            requireDownload(bookTopPic[0], mainPath + info.bookName + \\\".jpg\\\", bookTopPic[1]);\\n        } catch (e) {\\n            log(\\\"<封面下载错误> \\\" + e.message);\\n        }\\n    }\\n    File.fileWrite(chapterPath, content.replace(/<script>.*?<\\\\/script>/gmi, \\\"\\\").trimRight());\\n    //File.renameFile(chapterPath, order + \\\"$A$\\\" + item.title + \\\".txt\\\");\\n    return \\\"toast://\\\" + info.bookName + \\\"@\\\" + item.title + \\\" 下载完成\\\";\\n}\\n\\nfunction comic(item, info, MY_ID, order) {\\n    let mainPath = Config.comicPath + \\\"/\\\" + info.ruleName + \\\"/\\\" + info.bookName + \\\"/\\\";\\n    let chapterPath = mainPath + order + \\\"$B$\\\" + item.title + \\\"/\\\";\\n    let picList = [];\\n    try {\\n        let getPicList = new Function(\\\"input\\\", \\\"return\\\" + info.parseCode);\\n        picList = getPicList(item.url);\\n        if (typeof picList === \\\"string\\\") {\\n            picList = picList.replace(\\\"pics://\\\", \\\"\\\").split(\\\"&&\\\");\\n        }\\n    } catch (e) {\\n        e.message = \\\"<漫画图片解析错误> \\\" + e.message;\\n        throw e;\\n    }\\n\\n    const L = picList.length;\\n    if (L === 0) {\\n        toast(\\\"图片链接为空\\\");\\n        throw new Error(\\\"<漫画图片解析错误：图片链接返回为空>\\\");\\n    }\\n    if (info.bookTopPic) {\\n        try {\\n            let bookTopPic = Tool.hikerPic(info.bookTopPic);\\n            requireDownload(bookTopPic[0], mainPath + info.bookName + \\\".jpg\\\", bookTopPic[1]);\\n        } catch (e) {\\n            log(\\\"<封面下载错误> \\\" + e.message);\\n        }\\n    }\\n    var schedule = new Map([\\n        [L, () => log(item.title + \\\"已下载100%\\\")],\\n        [~~(0.90 * L), () => log(item.title + \\\"已下载90%+\\\")],\\n        [~~(0.75 * L), () => log(item.title + \\\"已下载75%+\\\")],\\n        [~~(0.50 * L), () => log(item.title + \\\"已下载50%+\\\")],\\n        [~~(0.25 * L), () => log(item.title + \\\"已下载25%+\\\")]\\n    ]);\\n    let errorNum = 0;\\n    for (var i = 0; i < L; i++) {\\n        try {\\n            let pic = Tool.hikerPic(picList[i]);\\n            requireDownload(pic[0], chapterPath + (i + 1) + \\\".jpg\\\", pic[1]);\\n            schedule.has(i + 1) && schedule.get(i + 1)();\\n            errorNum = 0;\\n        } catch (e) {\\n            if (errorNum < 10) {\\n                i--;\\n                errorNum++;\\n                continue;\\n            } else {\\n                throw e;\\n            }\\n        }\\n    }\\n\\n    File.renameFile(chapterPath, order + \\\"$A$\\\" + item.title);\\n    return \\\"toast://\\\" + info.bookName + \\\"@\\\" + item.title + \\\" 下载完成\\\";\\n}\\nvar $exe = {\\n    comic: comic,\\n    novel: novel\\n};\\n$.exports = function(item, info, MY_ID, order) {\\n    return $exe[info.type](item, info, MY_ID, order);\\n};\"},{\"col_type\":\"movie_3\",\"name\":\"#f.通用工具\",\"path\":\"Tool.js\",\"rule\":\"$.exports = {\\n    split(text, target, count) {\\n        count = count === undefined ? 1 : count;\\n        let array = [text];\\n        for (let i = 0; i < count; i++) {\\n            text = array[i];\\n            let index = text.indexOf(target);\\n            if (index === -1) {\\n                break;\\n            }\\n            array[i] = text.slice(0, index);\\n            array[i + 1] = text.slice(index + target.length);\\n        }\\n        return array;\\n    },\\n    chunk(arr, size) {\\n        var result = [];\\n        for (var i = 0, len = arr.length; i < len; i += size) {\\n            result.push(arr.slice(i, i + size));\\n        }\\n        return result;\\n    },\\n    hikerPic(url) {\\n        var headers = {};\\n        let urls = url.split(\\\"@\\\");\\n        let picUrl = urls.shift();\\n        let length = urls.length;\\n        for (let i = 0; i < length; i++) {\\n            let [key, value] = urls[i].split(\\\"=\\\");\\n            headers[key] = value;\\n        }\\n        return [picUrl, headers];\\n    },\\n    range(start, end) {\\n        return Array(end - start).fill(0).map((el, i) => start + i);\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#j.Config\",\"path\":\"Config.json\",\"rule\":\"js:\\nconst File = $.require(\\\"hiker://page/File.js?rule=本地资源管理\\\");\\n\\nlet localConfig = {};\\n\\ntry {\\n    localConfig = JSON.parse(File.readFile(getPath(\\\"hiker://files/rules/files/本地资源管理/config.json\\\").slice(7)));\\n} catch (e) {\\n    deleteFile(\\\"config.json\\\");\\n}\\nconst Config = Object.assign({\\n    homePath: getPath(\\\"hiker://files/localManager\\\").slice(7),\\n    logNum: 10,\\n    threadNum: 16,\\n    def_isPaginate: \\\"1\\\", //1默认开启分页，0默认关闭\\n    viewPageSize: 200,\\n    def_Pic: \\\"hiker://images/home_pic4\\\",\\n    def_Lord_Type: \\\"comic\\\",\\n    def_View_Style: \\\"text_1\\\",\\n    def_DoVi_Style: \\\"text_2\\\",\\n    def_DoVi_Type: \\\"1\\\", //0全部, 1未完成，2已完成\\n}, localConfig);\\nconst PATHS = {\\n    novelPath: \\\"/小说/\\\",\\n    comicPath: \\\"/漫画/\\\",\\n    novelFullPath: \\\"/小说合并/\\\",\\n    externalImportPath: \\\"/外导小说/\\\"\\n}\\n\\n\\nObject.keys(PATHS).forEach(key => Config[key] = Config.homePath + PATHS[key]);\\n$.exports = Config;\"},{\"col_type\":\"movie_3\",\"name\":\"#v.主页面\",\"path\":\"Main.view\",\"rule\":\"js:\\nfunction main() {\\n    var layout = [];\\n    const File = $.require(\\\"hiker://page/File.js\\\");\\n    const Config = $.require(\\\"hiker://page/Config.json\\\");\\n    let type = getMyVar(\\\".type\\\", getItem(\\\"main:type\\\") || Config.def_Lord_Type);\\n    let tgnum = getMyVar(\\\".tgnum\\\", \\\"0\\\");\\n    addListener(\\\"onClose\\\", $.toString((MY_ID) => {\\n        clearMyVar(\\\"searchKey\\\");\\n        clearMyVar(\\\".tgnum\\\");\\n    }));\\n    layout.push({\\n        title: type === \\\"comic\\\" ? \\\"◉漫画\\\" : \\\"○漫画\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((type) => {\\n            if (type === \\\"comic\\\") return \\\"hiker://empty\\\";\\n            putMyVar(\\\".type\\\", \\\"comic\\\");\\n            setItem(\\\"main:type\\\", \\\"comic\\\");\\n            clearMyVar(\\\".tgnum\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, type),\\n        col_type: \\\"text_3\\\",\\n    });\\n    layout.push({\\n        title: type === \\\"novel\\\" ? \\\"◉小说\\\" : \\\"○小说\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((type) => {\\n            if (type === \\\"novel\\\") return \\\"hiker://empty\\\";\\n            putMyVar(\\\".type\\\", \\\"novel\\\");\\n            setItem(\\\"main:type\\\", \\\"novel\\\");\\n            clearMyVar(\\\".tgnum\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, type),\\n        col_type: \\\"text_3\\\",\\n    });\\n    layout.push({\\n        title: type === \\\"txt\\\" ? \\\"◉TXT\\\" : \\\"○TXT\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((type) => {\\n            if (type === \\\"txt\\\") return \\\"hiker://page/NovelCollected.view#noRecordHistory##noHistory#\\\";\\n            putMyVar(\\\".type\\\", \\\"txt\\\");\\n            setItem(\\\"main:type\\\", \\\"txt\\\");\\n            clearMyVar(\\\".tgnum\\\");\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, type),\\n        col_type: \\\"text_3\\\"\\n    });\\n    if (type === \\\"txt\\\") {\\n        txtView = $.require(\\\"hiker://page/externalimportTxt.view\\\");\\n        return txtView(layout);\\n    }\\n    let tag = File.getFilePath(Config[type + \\\"Path\\\"], \\\"dir\\\");\\n    if (tag.length === 0) {\\n        layout.push({\\n            col_type: \\\"line_blank\\\",\\n        });\\n        layout.push({\\n            title: \\\"设置\\\",\\n            url: \\\"hiker://page/Setting.view#noRefresh##noRecordHistory##noHistory#\\\",\\n            col_type: \\\"text_2\\\",\\n            extra: {\\n                version: MY_RULE.version\\n            }\\n        });\\n\\n        layout.push({\\n            title: \\\"““帮助””\\\",\\n            url: \\\"hiker://page/help.view#noRefresh##noRecordHistory##noHistory#?keyword=novelComic\\\",\\n            col_type: \\\"text_2\\\"\\n        });\\n        layout.push({\\n            title: '<h1 style=\\\"text-align: center;\\\">啥都没有耶</h1>',\\n            col_type: \\\"rich_text\\\"\\n        });\\n        return setResult(layout);\\n    }\\n    layout.push({\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        desc: \\\"搜你想要的#\\\" + type + \\\"#......\\\",\\n        title: \\\"🔍\\\",\\n        col_type: \\\"input\\\",\\n        extra: {\\n            rules: $.toString((tag, type) => {\\n                let arr1 = [];\\n                for (let i = 0; i < tag.length; i++) {\\n                    arr1.push({\\n                        \\\"title\\\": tag[i].name,\\n                        \\\"search_url\\\": \\\"hiker://empty?isAll=1&searchTerms=**&type=\\\" + type,\\n                        \\\"searchFind\\\": \\\"js:$.require('hiker://page/Search.view?rule='+MY_RULE._title);\\\"\\n                    });\\n                }\\n\\n                return JSON.stringify(arr1);\\n            }, tag, type),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        }\\n    });\\n\\n    layout.push({\\n        title: \\\"‘‘⚙设置’’\\\",\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"hiker://page/Setting.view#noRefresh##noRecordHistory##noHistory#\\\",\\n        extra: {\\n            version: MY_RULE.version\\n        }\\n    });\\n\\n\\n    for (let i in tag) {\\n        let it = tag[i];\\n        if (tgnum === i) {\\n            layout.push({\\n                title: \\\"““\\\" + it.name + \\\"””\\\",\\n                col_type: \\\"scroll_button\\\",\\n                url: $([\\\"删除该目录\\\", \\\"跳转小程序\\\"], 1, \\\"选择操作\\\").select((it) => {\\n                    if (\\\"跳转小程序\\\" === input) {\\n                        return \\\"hiker://home@\\\" + it.name;\\n                    } else {\\n                        //return then([\\\"该操作不会删除小程序，但该小程序下载的所有漫画将被删除\\\"]);\\n                        return $(\\\"该操作不会删除小程序，但该小程序下载的所有 漫画/小说 将被删除\\\").confirm((path) => {\\n                            const File = $.require(\\\"hiker://page/File.js\\\");\\n                            if (File.deleteFiles(path)) {\\n                                clearMyVar(\\\".tgnum\\\");\\n                                refreshPage();\\n                                return \\\"toast://删除成功\\\";\\n                            } else {\\n                                return \\\"toast://删除失败\\\";\\n                            }\\n                        }, it.path);\\n                    }\\n                }, it)\\n            });\\n        } else {\\n            layout.push({\\n                title: it.name,\\n                col_type: \\\"scroll_button\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule(i => {\\n                    putMyVar(\\\".tgnum\\\", i);\\n                    refreshPage();\\n                    return \\\"hiker://empty\\\";\\n                }, i),\\n            });\\n        }\\n    }\\n    let path = tag[tgnum].path;\\n    let mhlist = File.getFilePath(path, \\\"dir\\\");\\n\\n    if (mhlist.length === 0) {\\n        layout.push({\\n            title: \\\"““””\\\" + \\\"啥都没有耶\\\".big(),\\n            url: \\\"hiker://empty\\\",\\n            col_type: \\\"text_center_1\\\",\\n            extra: {\\n                lineVisible: false\\n            }\\n        });\\n        return setResult(layout);\\n    }\\n    let pageUrl = type === \\\"novel\\\" ? \\\"hiker://page/NovelBrowser.view\\\" : \\\"hiker://page/ComicBrowser.view\\\";\\n    for (let item of mhlist) {\\n        let pic = fileExist(\\\"file://\\\" + item.path + \\\"/\\\" + item.name + \\\".jpg\\\") ? item.path + \\\"/\\\" + item.name + \\\".jpg\\\" : Config.def_Pic;\\n        layout.push({\\n            title: item.name,\\n            pic_url: pic,\\n            url: pageUrl + \\\"?rule=\\\" + MY_RULE.title,\\n            extra: Object.assign(item, {\\n                longClick: [{\\n                    title: \\\"删除\\\",\\n                    js: $.toString((path) => {\\n                        return $.require(\\\"longPress.js\\\").deleteFileForBook(path)\\n                    }, item.path)\\n                }],\\n                id: item.path\\n            })\\n        });\\n    }\\n    setResult(layout);\\n}\\n\\nmain();\"},{\"col_type\":\"text_1\",\"name\":\"#v.漫画章节列表\",\"path\":\"ComicBrowser.view\",\"rule\":\"js:\\nif (getParam(\\\"hasParams\\\") === \\\"true\\\") {\\n    MY_PARAMS = {\\n        path: decodeURIComponent(getParam(\\\"path\\\")),\\n        name: decodeURIComponent(getParam(\\\"name\\\"))\\n    }\\n}\\nlet path = MY_PARAMS.path;\\nsetPageTitle(\\\"CV|\\\" + MY_PARAMS.name)\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Tool = $.require(\\\"hiker://page/Tool.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nvar layout = [];\\nlet mode = getMyVar(\\\".mode\\\", \\\"0\\\");\\nlet isReverse = getMyVar(\\\".isReverse\\\", \\\"0\\\");\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\".mode\\\");\\n    clearMyVar(\\\".isReverse\\\");\\n}));\\nconst comicStatus=new Map([[\\\"A\\\",\\\"\\\"],[\\\"B\\\",\\\"‘‘[未完成]’’\\\"]]);\\nfunction getTitle(title) {\\n    let titles = Tool.split(title, \\\"$\\\", 2);\\n    return comicStatus.get(titles[1])+titles[2] || title;\\n}\\nlayout.push({\\n    title: \\\"删除整本\\\",\\n    url: $(\\\"确认删除整本漫画？\\\").confirm((path) => {\\n        const File = $.require(\\\"hiker://page/File.js\\\");\\n        if (File.deleteFiles(path)) {\\n            back();\\n            return \\\"toast://删除成功\\\";\\n        } else {\\n            return \\\"toast://删除失败\\\";\\n        }\\n    }, path),\\n    col_type: \\\"text_2\\\"\\n});\\nlayout.push({\\n    title: [\\\"看漫画\\\", \\\"删除章节\\\"][mode],\\n    url: $(\\\"#noLoading#\\\").lazyRule((mode) => {\\n        putMyVar(\\\".mode\\\", mode === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\"\\n    }, mode),\\n    col_type: \\\"text_2\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n})\\nlet mhlist = File.getFilePath(path, \\\"dir\\\");\\nmhlist.sort((a, b) => {\\n    a = (a.name.match(/\\\\d+/) || [])[0] || 0;\\n    b = (b.name.match(/\\\\d+/) || [])[0] || 0;\\n    return a - b;\\n});\\n\\nlayout.push({\\n    title: \\\"““””\\\" + \\\"章节 \\\".big() + (\\\"共有:\\\" + mhlist.length + \\\"章\\\").small(),\\n    url: $(\\\"#noLoading#\\\").lazyRule((isReverse) => {\\n        putMyVar(\\\".isReverse\\\", isReverse === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\"\\n    }, isReverse),\\n    col_type: \\\"text_1\\\"\\n});\\nlet array = [];\\nlet lazy = $(\\\"#noLoading#\\\").lazyRule(() => {\\n    const File = $.require(\\\"hiker://page/File.js\\\");\\n    let filelist = File.getFilePath(input);\\n    let piclist = filelist.map((item, i) => \\\"file://\\\" + input + \\\"/\\\" + (i + 1) + \\\".jpg\\\");\\n    return \\\"pics://\\\" + piclist.join(\\\"&&\\\");\\n})\\nif (mode === \\\"0\\\") {\\n    for (let item of mhlist) {\\n        array.push({\\n            title: getTitle(item.name),\\n            url: item.path+lazy,\\n            col_type: Config.def_View_Style\\n        });\\n    }\\n} else {\\n    for (let item of mhlist) {\\n        let name = getTitle(item.name);\\n        array.push({\\n            title: name,\\n            url: $(\\\"确认删除[\\\" + name + \\\"]？\\\").confirm((path) => {\\n                const File = $.require(\\\"hiker://page/File.js\\\");\\n                if (File.deleteFiles(path)) {\\n                    refreshPage(true);\\n                    return \\\"toast://删除成功\\\";\\n                } else {\\n                    return \\\"toast://删除失败\\\";\\n                }\\n            }, item.path),\\n            col_type: Config.def_View_Style\\n        });\\n    }\\n}\\nif (isReverse === \\\"1\\\") {\\n    array.reverse();\\n}\\nlayout.push.apply(layout, array);\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.聚合搜索\",\"path\":\"Search.view\",\"rule\":\"js:\\nconst File = $.require(\\\"hiker://page/File.js?rule=\\\" + MY_RULE._title);\\nconst Config = $.require(\\\"hiker://page/Config.json?rule=\\\" + MY_RULE._title);\\nlet comicRuleDirs = File.getFilePath(Config[getParam(\\\"type\\\") + \\\"Path\\\"], \\\"dir\\\");\\nif (getParam(\\\"isAll\\\") === \\\"1\\\") {\\n    comicRuleDirs = comicRuleDirs.filter(item => item.name === MY_RULE.title);\\n}\\n\\nlet searchResult = [];\\nlet searchTerms= getParam(\\\"searchTerms\\\");\\nlet searchTest;\\n\\nif (!getSearchMode()) {\\n    let termsArr = searchTerms.split(\\\"\\\").map(t => t.replace(/\\\\*|\\\\.|\\\\?|\\\\+|\\\\$|\\\\^|\\\\[|\\\\]|\\\\(|\\\\)|\\\\{|\\\\}|\\\\||\\\\/|\\\\\\\\/g, k => \\\"\\\\\\\\\\\" + k));\\n    let reg = new RegExp(termsArr.join(\\\".*\\\"), \\\"i\\\");\\n    searchTest = text => reg.test(text);\\n} else {\\n    searchTest = text => searchContains(text, searchTerms, false);\\n}\\n\\nlet pageUrl = getParam(\\\"type\\\") === \\\"novel\\\" ? \\\"hiker://page/NovelBrowser.view\\\" : \\\"hiker://page/ComicBrowser.view\\\";\\nfor (let sonDir of comicRuleDirs) {\\n    let comicList = File.getFilePath(sonDir.path, \\\"dir\\\");\\n    for (let comic of comicList) {\\n        if (searchTest(comic.name)) {\\n            searchResult.push({\\n                title: comic.name,\\n                pic_url: comic.path + \\\"/\\\" + comic.name + \\\".jpg\\\",\\n                url: pageUrl + \\\"?rule=\\\" + MY_RULE._title,\\n                desc: sonDir.name,\\n                extra: comic\\n            });\\n        }\\n    }\\n\\n}\\nsetResult(searchResult);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.设置\",\"path\":\"Setting.view\",\"rule\":\"js:\\nsetPageTitle(MY_RULE.title + \\\"|设置\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nlet layout = [];\\n\\nlayout.push({\\n    title: \\\"<strong>基础设置</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"目录路径\\\",\\n    url: \\\"hiker://page/Setting/More.view#noRefresh##noRecordHistory##noHistory#?settingType=contents\\\",\\n    desc: Config.homePath,\\n    col_type: \\\"text_1\\\"\\n});\\nlayout.push({\\n    title: \\\"设置默认封面\\\",\\n    desc: Config.def_Pic,\\n    url: \\\"hiker://page/Setting/More.view#noRefresh##noRecordHistory##noHistory#?settingType=defaultPic\\\",\\n    col_type: \\\"text_1\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nlayout.push({\\n    title: \\\"<strong>下载器设置</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\n\\nfunction setNum(key, test) {\\n    let Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n    input = parseInt(input);\\n    if (Number.isNaN(input)) return \\\"toast://请输入数字\\\";\\n    if (!test(input)) return \\\"toast://不符合条件\\\";\\n    Config[key] = input;\\n    saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n    refreshPage(false);\\n    return \\\"toast://修改成功\\\";\\n}\\nlayout.push({\\n    title: \\\"log数\\\",\\n    url: $(Config.logNum, \\\"0<N<100\\\").input(setNum, \\\"logNum\\\", it => it > 0 && it < 100),\\n    desc: \\\"\\\" + Config.logNum,\\n    col_type: \\\"text_1\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"分批下载数(0不开启)\\\",\\n    url: $(\\\"\\\" + Config.threadNum, \\\"N>-1\\\").input(setNum, \\\"threadNum\\\", it => it > -1),\\n    desc: \\\"\\\" + Config.threadNum,\\n    col_type: \\\"text_1\\\",\\n    extra: {\\n        lineVisible: false,\\n    }\\n});\\n\\n\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"<strong>小说阅读器设置</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"默认开启分页阅读\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((def_isPaginate) => {\\n        let Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n\\n        Config.def_isPaginate = def_isPaginate === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\";\\n\\n        saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n        refreshPage(false);\\n        return \\\"hiker://empty\\\";\\n    }, Config.def_isPaginate),\\n    desc: Config.def_isPaginate === \\\"0\\\" ? \\\"不开启\\\" : \\\"开启\\\",\\n    col_type: \\\"text_1\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"每页最大章数\\\",\\n    url: $(Config.viewPageSize, \\\"30<N<500\\\").input(setNum, \\\"viewPageSize\\\", it => it > 30 && it < 500),\\n    desc: \\\"\\\" + Config.viewPageSize,\\n    col_type: \\\"text_1\\\"\\n});\\nlayout.push({\\n    title: \\\"替换规则\\\",\\n    url: \\\"hiker://page/Setting/More.view#noRecordHistory##noHistory##noRefresh#?settingType=replaceRule\\\",\\n    col_type: \\\"text_1\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nlayout.push({\\n    title: \\\"<strong>其他设置</strong>\\\".big(),\\n    col_type: \\\"rich_text\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    title: \\\"规则发布页\\\",\\n    url: \\\"hiker://page/ruleDetail#noHistory##noRecordHistory#?rule=道长仓库Pro\\\",\\n    extra: {\\n        lver: MY_PARAMS.version || \\\"获取版本失败，自行查看\\\",\\n        id: \\\"3559\\\"\\n    },\\n    col_type: \\\"text_1\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"恢复默认设置\\\",\\n    url: $(\\\"确认恢复默认设置？\\\").confirm(() => {\\n        deleteFile(\\\"config.json\\\");\\n        refreshPage(false);\\n        return \\\"toast://恢复完成\\\";\\n    }),\\n    col_type: \\\"text_1\\\"\\n});\\nlayout.push({\\n    title: \\\"清理缓存\\\",\\n    url: \\\"hiker://page/Setting/More.view#noRecordHistory##noHistory#?settingType=cache\\\",\\n    col_type: \\\"text_1\\\"\\n});\\nlet tid = Date.now();\\nlayout.push({\\n    title: \\\"检测更新\\\",\\n    col_type: \\\"text_1\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((oldVersion, tid) => {\\n        try {\\n            let newVersion = JSON.parse(request(\\\"http://hiker.nokia.press/hikerule/dev/getbyid?id=3559\\\", {\\n                timeout: 2000\\n            })).result.ver;\\n            if (newVersion <= oldVersion) {\\n                updateItem(tid + \\\"#设置_更新\\\", {\\n                    title: \\\"已经是最新版本了\\\"\\n                });\\n                return \\\"toast://已经是最新版本了\\\";\\n            } else {\\n                updateItem(tid + \\\"#设置_更新\\\", {\\n                    title: \\\"有新版本还未更新\\\"\\n                });\\n                toast(\\\"有新版本还未更新\\\");\\n                return \\\"rule://5rW36ZiU6KeG55WM77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTM1NTk=\\\";\\n            }\\n        } catch (e) {\\n            updateItem(tid + \\\"#设置_更新\\\", {\\n                title: \\\"信息获取失败\\\"\\n            });\\n            return \\\"toast://更新信息获取失败\\\";\\n        }\\n    }, MY_PARAMS.version, tid),\\n    extra: {\\n        id: tid + \\\"#设置_更新\\\"\\n    }\\n});\\nlayout.push({\\n    title: \\\"关于如何调用\\\",\\n    url: \\\"https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&inviteCode=1HFyBJ&from=246610&biz=ka\\\",\\n    desc: \\\"详细点击加入频道，频道里@LoyDgIk\\\",\\n    col_type: \\\"text_1\\\"\\n});\\n/*\\nlayout.push({\\n    title: \\\"清除小说分页记录\\\",\\n    url: $(\\\"确认清除小说分页记录？\\\").confirm(() => {\\n        deleteFile(\\\"novelFootprint.json\\\");\\n        return \\\"toast://清除完成\\\";\\n    }),\\n    col_type: \\\"text_1\\\"\\n});\\n*/\\nsetResult(layout);\"},{\"col_type\":\"text_1\",\"name\":\"#v.小说章节列表\",\"path\":\"NovelBrowser.view\",\"rule\":\"js:\\nif (getParam(\\\"hasParams\\\") === \\\"true\\\") {\\n    MY_PARAMS = {\\n        path: decodeURIComponent(getParam(\\\"path\\\")),\\n        name: decodeURIComponent(getParam(\\\"name\\\"))\\n    }\\n}\\nlet path = MY_PARAMS.path;\\nsetPageTitle(\\\"NV|\\\" + MY_PARAMS.name);\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Tool = $.require(\\\"hiker://page/Tool.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\nconst bookInfo = Object.assign({\\n    foot: 0,\\n    isReplace: true\\n}, JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\nlet id = \\\"#\\\" + new Date().getTime();\\nvar layout = [];\\nlet mode = getMyVar(\\\".mode\\\", \\\"0\\\");\\nlet mode2 = getMyVar(\\\".mode2\\\", Config.def_isPaginate);\\n\\nlet isReverse = getMyVar(\\\".isReverse\\\", \\\"0\\\");\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\".mode\\\");\\n    clearMyVar(\\\".mode2\\\");\\n    clearMyVar(\\\".isReverse\\\");\\n    clearMyVar(\\\".pageNum\\\");\\n}));\\n\\nfunction getTitle(title) {\\n    let titles = Tool.split(title, \\\"$\\\", 2);\\n    return titles[2] !== undefined ? titles[2].slice(0, titles[2].lastIndexOf(\\\".\\\")) : title;\\n}\\nlayout.push({\\n    title: \\\"删除整本\\\",\\n    url: $(\\\"确认删除整本小说？\\\").confirm((path) => {\\n        const File = $.require(\\\"hiker://page/File.js\\\");\\n        if (File.deleteFiles(path)) {\\n            back();\\n            return \\\"toast://删除成功\\\";\\n        } else {\\n            return \\\"toast://删除失败\\\";\\n        }\\n    }, path),\\n    col_type: \\\"text_2\\\"\\n});\\n\\nlayout.push({\\n    title: [\\\"看小说\\\", \\\"删除章节\\\"][mode],\\n    url: $(\\\"#noLoading#\\\").lazyRule((mode) => {\\n        putMyVar(\\\".mode\\\", mode === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\"\\n    }, mode),\\n    col_type: \\\"text_2\\\"\\n});\\n\\nlayout.push({\\n    title: \\\"‘‘更多功能 >’’\\\",\\n    url: \\\"hiker://empty\\\",\\n    col_type: \\\"scroll_button\\\"\\n});\\n\\nfunction txt(paths) {\\n    showLoading(\\\"正在合并...\\\");\\n    const File = $.require(\\\"hiker://page/File.js\\\");\\n    const Tool = $.require(\\\"hiker://page/Tool.js\\\");\\n    const Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\n    let filelist = File.getFilePath(paths.path, \\\"file\\\", \\\".txt\\\");\\n    let listLength = filelist.length;\\n    if (listLength === 0) {\\n        hideLoading();\\n        return \\\"toast://空的章节\\\";\\n    }\\n    const bookInfo = Object.assign({\\n        selected: [],\\n        isReplace: true\\n    }, JSON.parse(request(\\\"file://\\\" + paths.path + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\n    let bufilelist = [];\\n    for (let i = 0; i < listLength; i++) {\\n        let file = filelist[i];\\n        let fileInfo = Tool.split(file.name, \\\"$\\\", 2);\\n        bufilelist.push({\\n            name: fileInfo[2].slice(0, fileInfo[2].lastIndexOf(\\\".\\\")),\\n            path: \\\"file://\\\" + file.path,\\n            id: Number(fileInfo[0]) || 0\\n        });\\n    }\\n    bufilelist.sort((a, b) => a.id - b.id);\\n    let entirePath = paths.path.replace(Config.novelPath, Config.novelFullPath) + \\\".txt\\\";\\n    let entirePathto = bookInfo.isReplace ? entirePath + \\\".tmp\\\" : entirePath;\\n\\n    if (fileExist(\\\"file://\\\" + entirePath)) {\\n        toast(\\\"初始化文件\\\");\\n        if (!File.deleteFiles(entirePath)) {\\n            hideLoading();\\n            return \\\"toast://初始化失败\\\";\\n        } else {\\n            toast(\\\"初始化成功\\\");\\n        }\\n    }\\n\\n    for (let i = 0; i < listLength; i++) {\\n        let item = bufilelist[i];\\n        let content = request(item.path);\\n        File.fileWriteAppend(entirePathto, item.name + \\\"\\\\n　　\\\" + content.replace(/^\\\\s+|\\\\s+$/gm, \\\"\\\").replace(/&nbsp;/g,\\\"\\\").split(/\\\\n+/).join(\\\"\\\\r　　\\\") + \\\"\\\\n\\\\n\\\");\\n    }\\n    if (bookInfo.isReplace) {\\n        let ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n        let len = ruleList.length;\\n        let replacePattern = [\\\"replace\\\", \\\"replaceAll\\\"];\\n        let flag = File.fileRule(entirePathto, entirePath, (javaString) => {\\n            for (let i = 0; i < len; i++) {\\n                let replaceRule = ruleList[i];\\n                if (!bookInfo.selected.includes(replaceRule.id)) {\\n                    continue;\\n                }\\n                let replace = replacePattern[0 + replaceRule.isRegex];\\n                javaString = javaString[replace](replaceRule.pattern, replaceRule.replacement);\\n            }\\n            return javaString.getBytes();\\n        });\\n        if (!flag) {\\n            hideLoading();\\n            return \\\"toast://合并失败\\\";\\n        }\\n\\n    }\\n    hideLoading();\\n    return \\\"toast://合并完成\\\";\\n}\\nlayout.push({\\n    title: \\\"合并小说\\\",\\n    url: $(\\\"确定合并?\\\\n会覆盖已有TXT\\\").confirm(txt, MY_PARAMS),\\n    col_type: \\\"scroll_button\\\"\\n});\\nlayout.push({\\n    title: [\\\"☐分页\\\", \\\"☑分页\\\"][mode2],\\n    url: $(\\\"#noLoading#\\\").lazyRule((mode2) => {\\n        putMyVar(\\\".mode2\\\", mode2 === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n        refreshPage(true);\\n        return \\\"hiker://empty\\\";\\n    }, mode2),\\n    col_type: \\\"scroll_button\\\"\\n});\\nlayout.push({\\n    title: \\\"净化\\\",\\n    url: \\\"hiker://page/NovelCustom.view#noRecordHistory##noHistory##noRefresh#\\\",\\n    extra: MY_PARAMS,\\n    col_type: \\\"scroll_button\\\"\\n});\\nlayout.push({\\n    title: \\\"外部查看\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((path) => {\\n        const Config = $.require(\\\"hiker://page/Config.json\\\");\\n        let entirePath = path.replace(Config.novelPath, Config.novelFullPath) + \\\".txt\\\";\\n        if (fileExist(\\\"file://\\\" + entirePath)) {\\n            toast(\\\"调用第三方应用打开文件\\\");\\n            return \\\"openFile://file://\\\" + entirePath\\n        } else {\\n            return \\\"toast://本地暂无可供外部打开的txt文件，请先合并小说！\\\"\\n        }\\n    }, path),\\n    col_type: \\\"scroll_button\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\n\\nlet mhlist = File.getFilePath(path, \\\"file\\\", \\\".txt\\\");\\nmhlist.sort((a, b) => {\\n    a = (a.name.match(/\\\\d+/) || [])[0] || 0;\\n    b = (b.name.match(/\\\\d+/) || [])[0] || 0;\\n    return a - b;\\n});\\nlet chapterList = [];\\nlet chapterCount = mhlist.length;\\n\\nif (mode2 === \\\"1\\\") {\\n    let mhlistChunk = Tool.chunk(mhlist, Config.viewPageSize);\\n    let viewPageCount = mhlistChunk.length;\\n    let defPage = (viewPageCount - 1 < bookInfo.foot ? 0 : bookInfo.foot) || 0;\\n    let pageNum = Number(getMyVar(\\\".pageNum\\\", \\\"\\\" + defPage));\\n    chapterList = mhlistChunk[pageNum] || [];\\n    layout.push({\\n        title: \\\"““””\\\" + \\\"章节 \\\".big() + (\\\"本页:\\\" + chapterList.length + \\\" 共有:\\\" + chapterCount + \\\"章 当前:\\\" + (pageNum + 1) + \\\"/\\\" + viewPageCount).small(),\\n        url: $(\\\"#noLoading#\\\").lazyRule((isReverse) => {\\n            putMyVar(\\\".isReverse\\\", isReverse === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n            refreshPage(true);\\n            return \\\"hiker://empty\\\"\\n        }, isReverse),\\n        col_type: \\\"text_1\\\"\\n    });\\n    layout.push({\\n        title: \\\"跳集\\\",\\n        url: $(chapterCount, \\\"输入跳转章节 1-\\\" + chapterCount).input((chapterCount, pageNum, viewPageSize, path) => {\\n            let inputNum = Number(input);\\n            if (Number.isNaN(inputNum) || inputNum < 0 || inputNum > chapterCount) {\\n                return \\\"toast://请输入正确范围内的数字\\\";\\n            }\\n            inputNum = Math.floor((inputNum + viewPageSize) / viewPageSize) - 1;\\n            if (pageNum === inputNum) return \\\"toast://正在当前页面\\\";\\n            putMyVar(\\\".pageNum\\\", \\\"\\\" + inputNum);\\n            const bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n            bookInfo.foot = inputNum;\\n            writeFile(\\\"file://\\\" + path, JSON.stringify(bookInfo));\\n            refreshPage(false);\\n        }, chapterCount, pageNum, Config.viewPageSize, path),\\n        col_type: \\\"text_5\\\"\\n    });\\n    layout.push({\\n        title: \\\"跳页\\\",\\n        url: $(pageNum + 1, \\\"跳转页数 1-\\\" + viewPageCount).input((viewPageCount, pageNum, path) => {\\n            let inputNum = Number(input) - 1;\\n            if (Number.isNaN(inputNum) || inputNum < 0 || inputNum > viewPageCount - 1) {\\n                return \\\"toast://请输入正确范围内的数字\\\";\\n            }\\n            if (pageNum === inputNum) return \\\"toast://正在当前页面\\\";\\n            putMyVar(\\\".pageNum\\\", \\\"\\\" + inputNum);\\n            const bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n            bookInfo.foot = inputNum;\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            refreshPage(false);\\n        }, viewPageCount, pageNum, path),\\n        col_type: \\\"text_5\\\"\\n    });\\n    layout.push({\\n        title: \\\"上一页\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((pageNum, path) => {\\n            let inputNum = pageNum - 1;\\n            if (inputNum < 0) {\\n                return \\\"toast://已经是第一页了\\\";\\n            }\\n            putMyVar(\\\".pageNum\\\", \\\"\\\" + inputNum);\\n            const bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n            bookInfo.foot = inputNum;\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, pageNum, path),\\n        col_type: \\\"text_5\\\"\\n    });\\n    layout.push({\\n        title: \\\"下一页\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((viewPageCount, pageNum, path) => {\\n            let inputNum = pageNum + 1;\\n            if (inputNum > viewPageCount - 1) {\\n                return \\\"toast://已经是最后一页了\\\";\\n            }\\n            putMyVar(\\\".pageNum\\\", \\\"\\\" + inputNum);\\n            const bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n            bookInfo.foot = inputNum;\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, viewPageCount, pageNum, path),\\n        col_type: \\\"text_5\\\"\\n    });\\n    layout.push({\\n        title: \\\"末页\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((viewPageCount, pageNum, path) => {\\n            let inputNum = viewPageCount - 1;\\n            if (pageNum === inputNum || inputNum === -1) {\\n                return \\\"toast://已经是最后一页了\\\";\\n            }\\n            putMyVar(\\\".pageNum\\\", \\\"\\\" + inputNum);\\n            const bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n            bookInfo.foot = inputNum;\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, viewPageCount, pageNum, path),\\n        col_type: \\\"text_5\\\"\\n    });\\n} else {\\n    chapterList = mhlist;\\n    layout.push({\\n        title: \\\"““””\\\" + \\\"章节 \\\".big() + (\\\"共有:\\\" + chapterCount + \\\"章\\\").small(),\\n        url: $(\\\"#noLoading#\\\").lazyRule((isReverse) => {\\n            putMyVar(\\\".isReverse\\\", isReverse === \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n            refreshPage(true);\\n            return \\\"hiker://empty\\\"\\n        }, isReverse),\\n        col_type: \\\"text_1\\\"\\n    });\\n}\\nlet array = [];\\nif (mode === \\\"0\\\") {\\n    for (let item of chapterList) {\\n        let name = getTitle(item.name);\\n        array.push({\\n            title: name,\\n            url: \\\"hiker://page/NovelMainBody#autoPage##readTheme#\\\",\\n            extra: {\\n                path: item.path,\\n                dirPath: path,\\n                title: name,\\n            },\\n            col_type: Config.def_View_Style\\n        });\\n    }\\n} else {\\n    for (let item of chapterList) {\\n        let name = getTitle(item.name);\\n        array.push({\\n            title: name,\\n            url: $(\\\"确认删除[\\\" + name + \\\"]？\\\").confirm((path) => {\\n                const File = $.require(\\\"hiker://page/File.js\\\");\\n                if (File.deleteFiles(path)) {\\n                    refreshPage(true);\\n                    return \\\"toast://删除成功\\\";\\n                } else {\\n                    return \\\"toast://删除失败\\\";\\n                }\\n            }, item.path),\\n            col_type: Config.def_View_Style\\n        });\\n    }\\n}\\nif (isReverse === \\\"1\\\") {\\n    array.reverse();\\n}\\nlayout.push.apply(layout, array);\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.小说正文阅读\",\"path\":\"NovelMainBody\",\"rule\":\"js:\\nvar layout = [];\\nlet content = request(\\\"file://\\\" + MY_PARAMS.path);\\n//content = content.replace(/\\\\n|\\\\r/g, \\\"<br>\\\").replace(/(&nbsp;)+/g,\\\" \\\");\\nconst bookInfo = Object.assign({\\n    selected: [],\\n    isReplace: true\\n}, JSON.parse(request(\\\"file://\\\" + MY_PARAMS.dirPath + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\n\\nif (bookInfo.isReplace) {\\n    let javaString = java.lang.String(content);\\n    let ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n    let replacePattern = [\\\"replace\\\", \\\"replaceAll\\\"];\\n    for (let i = 0, len = ruleList.length; i < len; i++) {\\n        let replaceRule = ruleList[i];\\n        if (!bookInfo.selected.includes(replaceRule.id)) {\\n            continue;\\n        }\\n        let replace = replacePattern[0 + replaceRule.isRegex];\\n        javaString = javaString[replace](replaceRule.pattern, replaceRule.replacement);\\n    }\\n    content = String(javaString);\\n}\\ncontent = \\\"　　\\\" + content.replace(/^\\\\s+|\\\\s+$/gm, \\\"\\\").split(/\\\\n+/).join(\\\"<br>　　\\\");\\n\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: (\\\"<strong>\\\" + MY_PARAMS.title + \\\"</strong>\\\").big(),\\n});\\n\\nlayout.push({\\n    title: content,\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(layout);\"},{\"col_type\":\"text_1\",\"name\":\"#v.合并TXT\",\"path\":\"NovelCollected.view\",\"rule\":\"js:\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\nlet rulelDir = File.getFilePath(Config.novelFullPath, \\\"dir\\\");\\nsetPageTitle(\\\"合并TXT\\\");\\nlet layout = [];\\n\\nfunction operation(path) {\\n    switch (input) {\\n        case \\\"分享\\\":\\n            return \\\"share://\\\" + path;\\n            break;\\n        case \\\"删除\\\":\\n            const File = $.require(\\\"hiker://page/File.js\\\");\\n            if (File.deleteFiles(path)) {\\n                refreshPage();\\n                return \\\"toast://删除成功\\\";\\n            } else {\\n                return \\\"toast://删除失败\\\";\\n            }\\n            break;\\n        case \\\"海阔预览\\\":\\n            return \\\"hiker://page/txtParser.view\\\";\\n            break;\\n        case \\\"打开方式\\\":\\n            return \\\"openFile://file://\\\" + path;\\n            break;\\n    }\\n}\\nfor (let rulePaths of rulelDir) {\\n    let novels = File.getFilePath(rulePaths.path, \\\"file\\\", \\\".txt\\\");\\n    for (let novel of novels) {\\n        layout.push({\\n            title: novel.name,\\n            url: $([\\\"分享\\\", \\\"删除\\\", \\\"海阔预览\\\", \\\"打开方式\\\"], 1).select(operation, novel.path),\\n            desc: \\\"来源：\\\" + rulePaths.name,\\n            col_type: \\\"text_1\\\",\\n            extra: {\\n                path: novel.path\\n            }\\n        });\\n    }\\n}\\nif (layout.length === 0) {\\n    layout.push({\\n        title: '<h1 style=\\\"text-align: center;\\\">啥都没有耶</h1>',\\n        col_type: \\\"rich_text\\\"\\n    });\\n}\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.更多设置\",\"path\":\"Setting/More.view\",\"rule\":\"js:\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nconst settingType = MY_PARAMS.settingType || getParam(\\\"settingType\\\");\\n\\nlet layout = [];\\nlet id = \\\"#\\\" + new Date().getTime();\\nswitch (settingType) {\\n    case \\\"cache\\\":\\n        setPageTitle(\\\"清除缓存|设置\\\");\\n        const knownList = new Map([\\n            [File.getName(Config.novelPath), \\\"#管理器#小说缓存目录[不建议清除]\\\"],\\n            [File.getName(Config.comicPath), \\\"#管理器#漫画缓存目录[不建议清除]\\\"],\\n            [File.getName(Config.externalImportPath), \\\"#管理器#导入的TXT目录[不建议清除]\\\"],\\n            [File.getName(Config.novelFullPath), \\\"#管理器#小说合并目录[可以清除]\\\"],\\n            [\\\"dr章节缓存\\\", \\\"道长模板临时缓存[建议清除]\\\"]\\n        ]);\\n\\n        let cacheDir = File.getFilePath(Config.homePath, \\\"dir\\\");\\n\\n        function cleanCache(path) {\\n            const File = $.require(\\\"hiker://page/File.js\\\");\\n            if (File.deleteFiles(path)) {\\n                refreshPage(false);\\n                return \\\"toast://清除完成\\\";\\n            } else {\\n                return \\\"toast://清除失败\\\";\\n            }\\n        }\\n        for (let cache of cacheDir) {\\n            layout.push({\\n                title: cache.name,\\n                desc: \\\"大小：\\\" + File.getFileSize(cache.path) + \\\"\\\\n描述：\\\" + (knownList.get(cache.name) || \\\"未知目录[风险未知]\\\"),\\n                col_type: \\\"text_1\\\",\\n                url: $(\\\"确认清除 \\\" + cache.name + \\\" ?\\\").confirm(cleanCache, cache.path)\\n            });\\n        }\\n        layout.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n        layout.push({\\n            title: \\\"全部清除(\\\" + File.getFileSize(Config.homePath) + \\\")\\\",\\n            col_type: \\\"text_center_1\\\",\\n            url: $(\\\"确认清除全部缓存数据?\\\").confirm(cleanCache, Config.homePath)\\n        });\\n        break;\\n    case \\\"defaultPic\\\":\\n        setPageTitle(\\\"默认封面|设置\\\");\\n        if (getMyVar(\\\":defaultPicBack\\\")) {\\n            back();\\n            clearMyVar(\\\":defaultPicBack\\\");\\n            break;\\n        }\\n\\n        function setDefaultPic(url) {\\n            let Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n            Config.def_Pic = url;\\n            saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n            back();\\n            return \\\"toast://修改成功\\\";\\n        }\\n        let start = 1;\\n        if (typeof(MY_NAME) !== \\\"undefined\\\" && MY_NAME === \\\"嗅觉浏览器\\\") {\\n            start = 4;\\n        }\\n        for (let i = start; i <= 4; i++) {\\n            layout.push({\\n                title: \\\"图片\\\" + i,\\n                col_type: \\\"movie_3\\\",\\n                pic_url: \\\"hiker://images/home_pic\\\" + i,\\n                url: $(\\\"#noLoading#\\\").lazyRule(setDefaultPic, \\\"hiker://images/home_pic\\\" + i)\\n            });\\n        }\\n        layout.push({\\n            title: \\\"自定义➕\\\",\\n            col_type: \\\"text_3\\\",\\n            url: $([\\\"自定义url\\\", \\\"选择文件路径\\\"]).select(() => {\\n                if (input === \\\"自定义url\\\") {\\n                    return $(\\\"\\\", \\\"输入图片的路径或者链接\\\").input(() => {\\n                        let Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n                        Config.def_Pic = input;\\n                        saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n                        back();\\n                        return \\\"toast://修改成功\\\";\\n                    });\\n                } else {\\n                    let requireUrl = \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\";\\n                    let fileSelect = require(requireUrl);\\n                    return fileSelect.fileSelectionUri({\\n                        callback: $.toString(() => {\\n                            let Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n                            Config.def_Pic = \\\"file://\\\" + PATH;\\n                            saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n                            putMyVar(\\\":defaultPicBack\\\", \\\"true\\\");\\n                            back();\\n                            return \\\"toast://修改成功\\\";\\n                        }),\\n                        requireUrl: requireUrl,\\n                        fileType: \\\".jpg|.jpeg|.gif|.png|.svg|.bmp\\\",\\n                        onClickType: \\\"confirm\\\",\\n                        memory: \\\"selectPathCache2\\\"\\n                    });\\n                }\\n            })\\n        });\\n        break;\\n    case \\\"replaceRule\\\":\\n        if (MY_PARAMS.isRefresh) {\\n            addListener(\\\"onClose\\\", $.toString(() => refreshPage()));\\n        }\\n        setPageTitle(\\\"替换规则|设置\\\");\\n        let ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n        layout.push({\\n            title: \\\"新建替换\\\",\\n            url: \\\"hiker://page/editReplaceRule.view#noRecordHistory##noHistory##noRefresh#?isNew=true\\\",\\n            col_type: \\\"text_3\\\"\\n        });\\n        layout.push({\\n            title: \\\"导出规则\\\",\\n            url: $(\\\"确认导出\\\" + ruleList.length + \\\"条规则？\\\\n({homePtah}/replaceRule.json)\\\").confirm((num) => {\\n                const Config = $.require(\\\"hiker://page/Config.json\\\");\\n                let savePta = Config.homePath + \\\"/replaceRule.json\\\";\\n                writeFile(savePta, readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n                log(\\\"\\\\n路径：\\\" + savePta + \\\"\\\\n导出规则 \\\" + num + \\\" 条\\\");\\n                return \\\"share://\\\" + savePta;\\n            }, ruleList.length),\\n            col_type: \\\"text_3\\\"\\n        });\\n\\n        function importRule(isback) {\\n            input = typeof PATH === \\\"undefined\\\" ? input : PATH;\\n            input = input.startsWith(\\\"file://\\\") ? input : \\\"file://\\\" + input\\n            let ruleText = request(input);\\n            if (!ruleText) return \\\"toast://获取文件为空\\\";\\n            try {\\n                let newRuleList = JSON.parse(ruleText);\\n                let ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n                let newCount = 0,\\n                    updateCount = 0;\\n                for (let i in newRuleList) {\\n                    let newRule = newRuleList[i];\\n                    if (!newRule.hasOwnProperty(\\\"replacement\\\") || !newRule.hasOwnProperty(\\\"pattern\\\") || !newRule.hasOwnProperty(\\\"name\\\") || (newRule.scopeContent === undefined ? false : !newRule.scopeContent)) {\\n                        continue;\\n                    }\\n                    let id = newRule.id;\\n                    newRule.id = id || new Date().getTime();\\n                    let idIndex = ruleList.findIndex(rule => rule.id === id);\\n                    if (idIndex > -1) {\\n                        updateCount++;\\n                        ruleList.splice(idIndex, 1, newRule);\\n                    } else {\\n                        newCount++;\\n                        ruleList.push(newRule);\\n                    }\\n                }\\n                saveFile(\\\"replaceRule.json\\\", JSON.stringify(ruleList));\\n                if (isback) {\\n                    back();\\n                } else {\\n                    refreshPage();\\n                }\\n                log(\\\"\\\\n路径：\\\" + input + \\\"\\\\n总规则数：\\\" + newRuleList.length + \\\"\\\\n更新规则 \\\" + updateCount + \\\" 条\\\\t新增规则 \\\" + newCount + \\\" 条\\\");\\n                toast(\\\"导入成功\\\");\\n            } catch (e) {\\n                log(e.toString());\\n                if (isback) back();\\n                toast(\\\"导入失败\\\");\\n            }\\n        }\\n        layout.push({\\n            title: \\\"导入规则\\\",\\n            url: $([\\\"外部文件\\\", \\\"内部文件\\\"], 1, \\\"规则导入\\\").select((importRule) => {\\n                if (input === \\\"外部文件\\\") {\\n                    return \\\"fileSelect://\\\" + $.toString(importRule);\\n                } else {\\n                    let requireUrl = \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\";\\n                    let fileSelect = require(requireUrl);\\n                    return fileSelect.fileSelectionUri({\\n                        callback: $.toString(importRule, true),\\n                        requireUrl: requireUrl,\\n                        fileType: \\\".json\\\",\\n                        onClickType: \\\"confirm\\\",\\n                        memory: \\\"selectPathCache\\\"\\n                    });\\n                }\\n            }, importRule),\\n            col_type: \\\"text_3\\\"\\n        });\\n        layout.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n        for (let i = 0, len = ruleList.length; i < len; i++) {\\n            let replaceRule = ruleList[i];\\n            layout.push({\\n                title: replaceRule.name,\\n                col_type: \\\"text_1\\\",\\n                url: \\\"hiker://empty\\\",\\n                extra: {\\n                    cls: id + \\\".\\\" + i,\\n                    lineVisible: false\\n                }\\n            });\\n            layout.push({\\n                title: \\\"删除\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((id, index) => {\\n                    var ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n                    let g = ruleList.splice(index, 1);\\n\\n                    saveFile(\\\"replaceRule.json\\\", JSON.stringify(ruleList));\\n                    //deleteItemByCls(id + \\\".\\\" + index);\\n                    refreshPage(false);\\n                    toast(\\\"删除成功\\\");\\n                    return \\\"hiker://empty\\\";\\n                }, id, i),\\n                extra: {\\n                    cls: id + \\\".\\\" + i\\n                },\\n                col_type: \\\"text_2\\\"\\n            });\\n            layout.push({\\n                title: \\\"编辑\\\",\\n                url: \\\"hiker://page/editReplaceRule.view#noRecordHistory##noHistory##noRefresh#?index=\\\" + i,\\n                col_type: \\\"text_2\\\",\\n                extra: {\\n                    cls: id + \\\".\\\" + i\\n                }\\n            });\\n            layout.push({\\n                col_type: \\\"line_blank\\\",\\n                extra: {\\n                    cls: id + \\\".\\\" + i\\n                }\\n            });\\n        }\\n        break;\\n    case \\\"contents\\\":\\n        let f = require(\\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\");\\n        setPageTitle(\\\"目录设置|设置\\\");\\n        layout.push({\\n            title: \\\"选择文件夹\\\",\\n            url: JSON.stringify(f.fileSelectionUri({\\n                callback: $.toString((id) => {\\n                    let target = findItem(id).extra;\\n                    updateItem(id, {\\n                        extra: Object.assign(target, {\\n                            defaultValue: PATH\\n                        })\\n                    });\\n                    return true;\\n                }, id),\\n                initialPath: Config.homePath,\\n                requireUrl: \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\",\\n                pattern: 1\\n            })),\\n            col_type: \\\"input\\\",\\n            desc: \\\"支持hiker://files路径(该操作不会初始化目录)\\\",\\n            extra: {\\n                defaultValue: Config.homePath,\\n                onChange: $.toString((id) => {\\n                    putMyVar(id, input);\\n                }, id),\\n                id: id\\n            }\\n        });\\n        layout.push({\\n            col_type: \\\"line_blank\\\"\\n        });\\n        layout.push({\\n            title: \\\"确认\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((id) => {\\n                let input = getMyVar(id, findItem(id).extra.defaultValue || \\\"\\\");\\n                const Config = $.require(\\\"hiker://page/Config.json\\\");\\n                if (input.startsWith(\\\"hiker://files/\\\")) input = getPath(input).slice(7);\\n                if (input.endsWith(\\\"/\\\")) input=input.replace(/\\\\/$/,\\\"\\\");\\n                if (Config.homePath == input) return \\\"toast://已经是当前目录\\\";\\n                Config = JSON.parse(readFile(\\\"config.json\\\", 0) || \\\"{}\\\");\\n                Config.homePath = input;\\n                saveFile(\\\"config.json\\\", JSON.stringify(Config), 0);\\n                back();\\n                return \\\"toast://已保存\\\";\\n            }, id),\\n            col_type: \\\"text_center_1\\\",\\n        });\\n\\n        break;\\n}\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.编辑替换规则\",\"path\":\"editReplaceRule.view\",\"rule\":\"js:\\nconst isNew = MY_PARAMS.isNew || getParam(\\\"isNew\\\");\\nconst index = MY_PARAMS.index || Number(getParam(\\\"index\\\"));\\nlet layout = [];\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\".editReplaceRule.name\\\");\\n    clearMyVar(\\\".editReplaceRule.isRegex\\\");\\n    clearMyVar(\\\".editReplaceRule.pattern\\\");\\n    clearMyVar(\\\".editReplaceRule.replacement\\\");\\n    clearMyVar(\\\".editReplaceRule.first\\\");\\n    //clearMyVar(\\\".editReplaceRule.scope\\\");\\n}));\\nlet ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\nlet id = \\\"#\\\" + new Date().getTime();\\n//let replaceRule = isNew == \\\"true\\\"?{}:ruleList[index];\\nif (isNew == \\\"true\\\") {\\n    replaceRule = {\\n        id: new Date().getTime(),\\n        isRegex: false,\\n    }\\n} else {\\n    replaceRule = ruleList[index];\\n}\\n//首次初始化\\nif(getMyVar(\\\".editReplaceRule.first\\\",\\\"\\\")==\\\"\\\"){\\n    putMyVar(\\\".editReplaceRule.isRegex\\\", \\\"\\\" + replaceRule.isRegex);\\n    putMyVar(\\\".editReplaceRule.first\\\",\\\"1\\\");\\n}\\nlayout.push({\\n    title: \\\"拷贝\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let att = [\\\"name\\\", \\\"isRegex\\\", \\\"pattern\\\", \\\"replacement\\\"];\\n        let json = {};\\n        att.forEach(key => {\\n            let value = getMyVar(\\\".editReplaceRule.\\\" + key, \\\"\\\");\\n            if (key === \\\"isRegex\\\") {\\n                value = value === \\\"true\\\" ? true : false;\\n            }\\n            json[key] = value;\\n        });\\n        copy(JSON.stringify(json));\\n        return \\\"hiker://empty\\\";\\n    }),\\n    col_type: \\\"text_2\\\"\\n});\\nlayout.push({\\n    title: \\\"粘贴\\\",\\n    url: $(\\\"{{clipboard}}\\\").input(() => {\\n        try {\\n            let json = JSON.parse(input);\\n            if (Array.isArray(json) || json.pattern == undefined) return;\\n            let att = [\\\"name\\\", \\\"isRegex\\\", \\\"pattern\\\", \\\"replacement\\\"];\\n            att.forEach(key => {\\n                putMyVar(\\\".editReplaceRule.\\\" + key, String(json[key]));\\n            });\\n            refreshPage(false);\\n        } catch (e) {\\n            log(e.toString());\\n        }\\n    }),\\n    col_type: \\\"text_2\\\"\\n});\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    desc: \\\"替换规则名称\\\",\\n    extra: {\\n        titleVisible: false,\\n        defaultValue: getMyVar(\\\".editReplaceRule.name\\\", replaceRule.name),\\n        onChange: 'putMyVar(\\\".editReplaceRule.name\\\",input);'\\n    }\\n});\\n\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    desc: \\\"替换规则\\\",\\n    extra: {\\n        titleVisible: false,\\n        type: \\\"textarea\\\",\\n        height: -1,\\n        defaultValue: getMyVar(\\\".editReplaceRule.pattern\\\", replaceRule.pattern),\\n        onChange: 'putMyVar(\\\".editReplaceRule.pattern\\\", input);'\\n    }\\n});\\nlayout.push({\\n    title: \\\"是否使用正则表达式：\\\" + getMyVar(\\\".editReplaceRule.isRegex\\\"),\\n    url: $(\\\"#noLoading#\\\").lazyRule((id) => {\\n        let isRegex = getMyVar(\\\".editReplaceRule.isRegex\\\") === \\\"true\\\" ? false : true;\\n        updateItem({\\n            extra: {\\n                id: id\\n            },\\n            title: \\\"是否使用正则表达式：\\\" + isRegex\\n        });\\n        putMyVar(\\\".editReplaceRule.isRegex\\\", \\\"\\\" + isRegex);\\n        return \\\"hiker://empty\\\";\\n    }, id),\\n    col_type: \\\"text_1\\\",\\n    extra: {\\n        id: id\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    desc: \\\"替换为\\\",\\n    extra: {\\n        titleVisible: false,\\n        type: \\\"textarea\\\",\\n        height: -1,\\n        defaultValue: getMyVar(\\\".editReplaceRule.replacement\\\", replaceRule.replacement),\\n        onChange: 'putMyVar(\\\".editReplaceRule.replacement\\\",input);'\\n    }\\n});\\nlayout.push({\\n    title: \\\"保存\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((replaceRule, isNew, index) => {\\n        let pattern = getMyVar(\\\".editReplaceRule.pattern\\\", \\\"\\\");\\n        if (!pattern) {\\n            return \\\"toast://替换规则不能为空\\\";\\n        }\\n        Object.assign(replaceRule, {\\n            name: getMyVar(\\\".editReplaceRule.name\\\", \\\"\\\"),\\n            isRegex: getMyVar(\\\".editReplaceRule.isRegex\\\") === \\\"true\\\" ? true : false,\\n            pattern: pattern,\\n            replacement: getMyVar(\\\".editReplaceRule.replacement\\\", \\\"\\\")\\n        });\\n        let ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\n        if (isNew == \\\"true\\\") {\\n            ruleList.push(replaceRule);\\n        } else {\\n            ruleList.splice(index, 1, replaceRule);\\n        }\\n        saveFile(\\\"replaceRule.json\\\", JSON.stringify(ruleList));\\n        back();\\n        return \\\"toast://保存成功\\\";\\n    }, replaceRule, isNew, index),\\n    col_type: \\\"text_center_1\\\",\\n});\\n\\n/*\\nlayout.push({\\n    col_type: \\\"input\\\",\\n    desc: \\\"替换范围\\\",\\n    extra: {\\n        titleVisible: false,\\n        type: \\\"textarea\\\",\\n        height: -1,\\n        defaultValue: \\\"\\\",\\n        onChange: 'putMyVar(\\\".editReplaceRule.scope\\\",input);'\\n    }\\n});\\n\\n*/\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.小说个性化净化\",\"path\":\"NovelCustom.view\",\"rule\":\"js:\\nsetPageTitle(\\\"替换规则|\\\" + MY_PARAMS.name);\\nlet ruleList = JSON.parse(readFile(\\\"replaceRule.json\\\") || \\\"[]\\\");\\nlet id = \\\"#\\\" + new Date().getTime();\\n\\nconst bookInfo = Object.assign({\\n    foot: 0,\\n    isReplace: true,\\n    selected: []\\n}, JSON.parse(request(\\\"file://\\\" + MY_PARAMS.path + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\n\\nlet layout = [];\\nlayout.push({\\n    title: [\\\"☐净化\\\", \\\"☑净化\\\"][0 + bookInfo.isReplace],\\n    url: $(\\\"#noLoading#\\\").lazyRule(($id, path) => {\\n\\n        var bookInfo = JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\");\\n        let isReplace = bookInfo.isReplace===undefined?true:bookInfo.isReplace;\\n        bookInfo.isReplace = !isReplace;\\n        writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n        updateItem($id, {\\n            title: isReplace ? \\\"☐净化\\\" : \\\"☑净化\\\",\\n        });\\n        return \\\"hiker://empty\\\";\\n    }, id + \\\"#-1\\\", MY_PARAMS.path),\\n    extra: {\\n        id: id + \\\"#-1\\\"\\n    },\\n    col_type: \\\"text_2\\\"\\n});\\nlayout.push({\\n    title: \\\"编辑规则\\\",\\n    url: \\\"hiker://page/Setting/More.view#noRecordHistory##noHistory##noRefresh#?settingType=replaceRule\\\",\\n    col_type: \\\"text_2\\\",\\n    extra:{\\n        isRefresh: true\\n    }\\n});\\nfor (let i = 0, len = ruleList.length; i < len; i++) {\\n    let replaceRule = ruleList[i];\\n    let isTrue = bookInfo.selected.includes(replaceRule.id);\\n    layout.push({\\n        title: (isTrue ? \\\"●\\\" : \\\"○\\\") + replaceRule.name,\\n        col_type: \\\"text_1\\\",\\n        url: \\\"hiker://empty\\\",\\n        y: 0,\\n        extra: {\\n            isTrue: isTrue,\\n            id: id + i,\\n            lineVisible: false\\n        }\\n    });\\n    layout.push({\\n        title: \\\"开启\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(($id, replaceRule, path) => {\\n            if (findItem($id).extra.isTrue) {\\n                return \\\"toast://已开启\\\";\\n            }\\n            const bookInfo = Object.assign({\\n                selected: []\\n            }, JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\n            bookInfo.selected.push(replaceRule.id);\\n            updateItem($id, {\\n                title: \\\"●\\\" + replaceRule.name,\\n                extra: {\\n                    isTrue: true,\\n                    id: $id,\\n                    lineVisible: false\\n                }\\n            });\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            return \\\"hiker://empty\\\";\\n        }, id + i, replaceRule, MY_PARAMS.path),\\n        col_type: \\\"text_2\\\"\\n    });\\n    layout.push({\\n        title: \\\"关闭\\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule(($id, replaceRule, path) => {\\n            if (!findItem($id).extra.isTrue) {\\n                return \\\"toast://已关闭\\\";\\n            }\\n            const bookInfo = Object.assign({\\n                selected: []\\n            }, JSON.parse(request(\\\"file://\\\" + path + \\\"/bookInfo.json\\\") || \\\"{}\\\"));\\n            bookInfo.selected.splice(bookInfo.selected.indexOf(replaceRule.id), 1);\\n            updateItem($id, {\\n                title: \\\"○\\\" + replaceRule.name,\\n                extra: {\\n                    isTrue: false,\\n                    id: $id,\\n                    lineVisible: false\\n                }\\n            });\\n            writeFile(\\\"file://\\\" + path + \\\"/bookInfo.json\\\", JSON.stringify(bookInfo));\\n            return \\\"hiker://empty\\\";\\n        }, id + i, replaceRule, MY_PARAMS.path),\\n        col_type: \\\"text_2\\\"\\n    });\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#v.外导TXT\",\"path\":\"externalimportTxt.view\",\"rule\":\"js:\\nfunction txtView(layout) {\\n    const File = $.require(\\\"hiker://page/File.js\\\");\\n    const Config = $.require(\\\"hiker://page/Config.json\\\");\\n    let files = File.getFilePath(Config.externalImportPath, undefined, \\\".txt\\\");\\n    setPageTitle(\\\"TXT阅读器\\\");\\n    //let layout = [];\\n    layout.push({\\n        url: '\\\"hiker://page/txtSearch.view#noRefresh#?searchTerms=\\\"+encodeURIComponent(input)',\\n        desc: \\\"TXT搜索\\\",\\n        title: \\\"🔍\\\",\\n        col_type: \\\"input\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"searchKeyByTxt\\\", \\\"\\\"),\\n            onChange: \\\"putMyVar('searchKeyByTxt',input)\\\"\\n        }\\n    });\\n    layout.push({\\n        title: \\\"导入TXT\\\",\\n        col_type: \\\"text_2\\\",\\n        url: $([\\\"系统选择器\\\", \\\"海阔选择器\\\"], 1, \\\"选择器类型\\\").select(() => {\\n            if (input === \\\"系统选择器\\\") {\\n                return \\\"fileSelect://\\\" + $.toString(() => {\\n                    if (!/(\\\\.txt)$/i.test(input)) {\\n                        toast(\\\"选择了错误的文件类型\\\");\\n                        return;\\n                    }\\n                    const Config = $.require(\\\"hiker://page/Config.json\\\");\\n                    let novelName = input.match(/\\\\/([^\\\\/]*?)(\\\\.txt)$/i)[1].replace(\\\"_fileSelect_\\\", \\\"\\\");\\n                    let topath = Config.externalImportPath + novelName + \\\".txt\\\";\\n                    let path = input.replace(\\\"file://\\\", \\\"\\\");\\n                    if (fileExist(\\\"file://\\\" + topath)) {\\n                        confirm({\\n                            title: \\\"导入提示\\\",\\n                            content: \\\"已存在[\\\" + novelName + \\\"]是否覆盖?\\\",\\n                            confirm: $.toString((path, topath) => {\\n                                const File = $.require(\\\"hiker://page/File.js\\\");\\n                                File.copyFile(path, topath, true);\\n                                if (fileExist(\\\"file://\\\" + topath + \\\".json\\\")) {\\n                                    File.deleteFiles(topath + \\\".json\\\");\\n                                }\\n                                refreshPage(false);\\n                                return \\\"toast://导入成功\\\";\\n                            }, path, topath)\\n                        });\\n                        return;\\n                    } else {\\n                        const File = $.require(\\\"hiker://page/File.js\\\");\\n                        File.copyFile(path, topath);\\n                        if (fileExist(\\\"file://\\\" + topath + \\\".json\\\")) {\\n                            File.deleteFiles(topath + \\\".json\\\");\\n                        }\\n                        refreshPage(false);\\n                        toast(\\\"导入成功\\\");\\n                        return;\\n                    }\\n                });\\n            } else {\\n                let requireUrl = \\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5099\\\";\\n                let fileSelect = require(requireUrl);\\n                return fileSelect.fileSelectionUri({\\n                    callback: $.toString(() => {\\n                        const Config = $.require(\\\"hiker://page/Config.json\\\");\\n                        let novelName = PATH.match(/\\\\/([^\\\\/]*?)(\\\\.txt)$/i)[1];\\n                        let topath = Config.externalImportPath + novelName + \\\".txt\\\";\\n                        let path = PATH;\\n                        if (fileExist(\\\"file://\\\" + topath)) {\\n                            return $(\\\"已存在[\\\" + novelName + \\\"]是否覆盖?\\\").confirm((path, topath) => {\\n                                const File = $.require(\\\"hiker://page/File.js\\\");\\n                                File.copyFile(path, topath, true);\\n                                if (fileExist(\\\"file://\\\" + topath + \\\".json\\\")) {\\n                                    File.deleteFiles(topath + \\\".json\\\");\\n                                }\\n                                back();\\n                                return \\\"toast://导入成功\\\";\\n                            }, path, topath);\\n                        } else {\\n                            const File = $.require(\\\"hiker://page/File.js\\\");\\n                            File.copyFile(path, topath);\\n                            if (fileExist(\\\"file://\\\" + topath + \\\".json\\\")) {\\n                                File.deleteFiles(topath + \\\".json\\\");\\n                            }\\n                            back();\\n                            return \\\"toast://导入成功\\\";\\n                        }\\n                    }),\\n                    requireUrl: requireUrl,\\n                    fileType: \\\".txt\\\",\\n                    onClickType: \\\"confirm\\\",\\n                    memory: \\\"selectPathCache1\\\"\\n                });\\n            }\\n        }),\\n        extra: {\\n            lineVisible: false\\n        }\\n    });\\n    let options = [\\\"阅读\\\", \\\"分享\\\", \\\"删除\\\", \\\"打开方式\\\"];\\n\\n    let pattern = getMyVar(\\\":txtPattern\\\", options[0]);\\n    let id = Date.now() + \\\":模式\\\";\\n    layout.push({\\n        title: pattern,\\n        col_type: \\\"text_2\\\",\\n        url: $(options, 1, \\\"操作模式\\\").select((id) => {\\n            putMyVar(\\\":txtPattern\\\", input);\\n            updateItem(id, {\\n                title: input\\n            });\\n        }, id),\\n        extra: {\\n            id: id\\n        }\\n    })\\n    layout.push({\\n        col_type: \\\"line_blank\\\"\\n    });\\n\\n    function operation(path, name) {\\n        let pattern = getMyVar(\\\":txtPattern\\\", \\\"阅读\\\");\\n        switch (pattern) {\\n            case \\\"分享\\\":\\n                return \\\"share://\\\" + path;\\n                break;\\n            case \\\"删除\\\":\\n                return $(\\\"确认删除[\\\" + name + \\\"]\\\").confirm((path) => {\\n                    const File = $.require(\\\"hiker://page/File.js\\\");\\n                    if (File.deleteFiles(path)) {\\n                        if (fileExist(\\\"file://\\\" + path + \\\".json\\\")) {\\n                            File.deleteFiles(path + \\\".json\\\");\\n                        }\\n                        //refreshPage();\\n                        deleteItem(path)\\n                        return \\\"toast://删除成功\\\";\\n                    } else {\\n                        return \\\"toast://删除失败\\\";\\n                    }\\n                }, path);\\n                break;\\n            case \\\"阅读\\\":\\n                return \\\"hiker://page/txtParser.view?rule=\\\" + MY_RULE.title;\\n                break;\\n            case \\\"打开方式\\\":\\n                return \\\"openFile://file://\\\" + path;\\n                break;\\n        }\\n    }\\n\\n    for (let novel of files) {\\n        layout.push({\\n            title: novel.name,\\n            url: $(\\\"#noLoading#\\\").lazyRule(operation, novel.path, novel.name),\\n            desc: \\\"大小：\\\" + File.getFileSize(novel.path) + \\\"\\\\n修改时间：\\\" + $.dateFormat(novel.lastModified, \\\"yyyy-MM-dd HH:mm:ss\\\"),\\n            col_type: \\\"text_1\\\",\\n            extra: {\\n                path: novel.path,\\n                isCache: true,\\n                title: novel.name,\\n                id: novel.path,\\n                longClick: [{\\n                    title: \\\"分享\\\",\\n                    js: JSON.stringify(\\\"share://\\\" + novel.path)\\n                }, {\\n                    title: \\\"阅读\\\",\\n                    js: JSON.stringify(\\\"hiker://page/txtParser.view?rule=\\\" + MY_RULE.title)\\n                }, {\\n                    title: \\\"打开方式\\\",\\n                    js: JSON.stringify(\\\"openFile://file://\\\" + novel.path)\\n                }, {\\n                    title: \\\"删除\\\",\\n                    js: $.toString((path) => {\\n                        return $.require(\\\"longPress.js\\\").deleteFileForTxt(path)\\n                    }, novel.path)\\n                }]\\n            }\\n        });\\n    }\\n    if (files.length === 0) {\\n        layout.push({\\n            title: \\\"设置\\\",\\n            url: \\\"hiker://page/Setting.view#noRefresh##noRecordHistory##noHistory#\\\",\\n            col_type: \\\"text_2\\\",\\n            extra: {\\n                version: MY_RULE.version\\n            }\\n        });\\n\\n        layout.push({\\n            title: \\\"““帮助””\\\",\\n            url: \\\"hiker://page/help.view#noRefresh##noRecordHistory##noHistory#?keyword=txt\\\",\\n            col_type: \\\"text_2\\\"\\n        });\\n        layout.push({\\n            title: '<h1 style=\\\"text-align: center;\\\">啥都没有耶</h1>',\\n            col_type: \\\"rich_text\\\"\\n        });\\n    }\\n    setResult(layout);\\n}\\nif ($.importParam === undefined) {\\n    $.exports = txtView;\\n} else if ($.importParam === null) {\\n    setResult(txtView([]));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#v.TXT解析器\",\"path\":\"txtParser.view\",\"rule\":\"js:\\n(function() {\\n    let regs = $.require(\\\"hiker://page/regularChapter.f\\\");\\n    let path = decodeURIComponent(getParam(\\\"path\\\") || \\\"\\\") || MY_PARAMS.path;\\n    let charst = decodeURIComponent(getParam(\\\"charst\\\") || \\\"\\\") || MY_PARAMS.charst || \\\"UTF-8\\\";\\n    let isCache = MY_PARAMS.isCache;\\n    if (!path.startsWith(\\\"file://\\\")) {\\n        path = \\\"file://\\\" + path;\\n    }\\n    if(MY_PARAMS.title){\\n        setPageTitle(MY_PARAMS.title);\\n    }else{\\n        setPageTitle($.require(\\\"hiker://page/File.js\\\").getName(path));\\n    }\\n    let layout = [];\\n    let chapterNames = [];\\n    let intervals = [];\\n    let hasPreface = false;\\n    if (fileExist(path + \\\".json\\\") && isCache) {\\n        try {\\n\\n            let c = JSON.parse(request(path + \\\".json\\\"));\\n            chapterNames = c.chapterNames;\\n            intervals = c.intervals;\\n            hasPreface = c.hasPreface;\\n            layout.push({\\n                title: \\\"重新解析目录\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((path) => {\\n                    deleteFile(path);\\n                    refreshPage();\\n                    return \\\"hiker://empty\\\";\\n                }, path+\\\".json\\\"),\\n                extra: {\\n                    lineVisible:false\\n                }\\n            });\\n            layout.push({\\n                col_type:\\\"line_blank\\\"\\n            });\\n        } catch (e) {\\n            log(e.toString());\\n            setResult([{\\n                title: \\\"““””<strong>目录解析失败(重新解析)</strong>\\\".big(),\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((path) => {\\n                    deleteFile(path);\\n                    refreshPage();\\n                    return \\\"hiker://empty\\\";\\n                }, path+\\\".json\\\"),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            }]);\\n            return;\\n        }\\n\\n    } else {\\n        showLoading(\\\"正在解析目录\\\");\\n        let txt = request(path, {\\n            headers: {\\n                //\\\"content-type\\\": \\\"text/plain; charst=\\\" + charst\\n            }\\n        });\\n        let pattern = regs.getTocRule(txt);\\n        if (!pattern) {\\n            hideLoading();\\n            setResult([{\\n                title: \\\"““””<strong>目录解析失败</strong>\\\".big(),\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                    back(false);\\n                    return \\\"hiker://empty\\\";\\n                }),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            }]);\\n            return;\\n        }\\n        let matcher = pattern.matcher(txt);\\n        let pointer = 0;\\n        while (matcher.find()) {\\n            let start = matcher.start();\\n            let end = matcher.end();\\n            let t = matcher.group();\\n            if (pointer === 0 && start > 30) {\\n                hasPreface = true;\\n            }\\n            chapterNames.push(t);\\n            intervals.push([pointer, start]);\\n            pointer = end;\\n        }\\n        intervals.push([pointer, txt.length]);\\n        if (isCache) {\\n            writeFile(path + \\\".json\\\", JSON.stringify({\\n                chapterNames: chapterNames,\\n                intervals: intervals,\\n                hasPreface: hasPreface\\n            }));\\n        }\\n        hideLoading();\\n    }\\n\\n\\n    if (hasPreface) {\\n        let interval = intervals[0];\\n        layout.push({\\n            title: \\\"序言\\\",\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/TXTViewer.view#autoPage##readTheme#\\\",\\n            extra: {\\n                chapterName: \\\"序言\\\",\\n                start: interval[0],\\n                end: interval[1],\\n                path: path,\\n                charst: charst\\n            }\\n        });\\n    }\\n    for (let i = 0; i < chapterNames.length; i++) {\\n        let name = chapterNames[i];\\n        let interval = intervals[i + 1];\\n        layout.push({\\n            title: name,\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/TXTViewer.view#autoPage##readTheme#\\\",\\n            extra: {\\n                start: interval[0],\\n                end: interval[1],\\n                chapterName: name,\\n                path: path,\\n                charst: charst\\n            }\\n        });\\n    }\\n    setResult(layout);\\n})()\"},{\"col_type\":\"movie_3\",\"name\":\"#v.TXT查看器\",\"path\":\"TXTViewer.view\",\"rule\":\"js:\\nlet path = MY_PARAMS.path;\\nlet charst = MY_PARAMS.charst;\\nlet txt = request(path, {\\n    headers: {\\n       //\\\"content-type\\\": \\\"text/plain; charst=\\\" + charst\\n    }\\n});\\n\\nlet targetTexts = txt.substring(MY_PARAMS.start, MY_PARAMS.end);\\n\\nlet content = targetTexts.split(/(\\\\n|\\\\r)+/).filter(it => it.length > 1).join(\\\"<br>\\\");\\nlet layout = [];\\nlayout.push({\\n    col_type: \\\"rich_text\\\",\\n    title: (\\\"<strong>\\\" + MY_PARAMS.chapterName + \\\"</strong>\\\").big(),\\n});\\n\\nlayout.push({\\n    title: content,\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"#j.章节正则\",\"path\":\"regularChapter.f\",\"rule\":\"js:\\nlet rules = [{\\n        \\\"id\\\": -1,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"目录(去空白)\\\",\\n        \\\"rule\\\": \\\"(?<=[　\\\\\\\\s])(?:序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\\\\\\\s{0,4}[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\\\\\\\s{0,4}(?:章|节(?!课)|卷|集(?![合和]))).{0,30}$\\\",\\n        \\\"example\\\": \\\"第一章 假装第一章前面有空白但我不要\\\",\\n        \\\"serialNumber\\\": 0\\n    },\\n    {\\n        \\\"id\\\": -2,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"目录\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}(?:序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\\\\\\\s{0,4}[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\\\\\\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?![分赛游])|篇(?!张))).{0,30}$\\\",\\n        \\\"example\\\": \\\"第一章 标准的粤语就是这样\\\",\\n        \\\"serialNumber\\\": 1\\n    },\\n    {\\n        \\\"id\\\": -3,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"目录(匹配简介)\\\",\\n        \\\"rule\\\": \\\"(?<=[　\\\\\\\\s])(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\\\\\\\s{0,4}[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\\\\\\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?![分赛游])|回(?![合来事去])|场(?![和合比电是])|篇(?!张))).{0,30}$\\\",\\n        \\\"example\\\": \\\"简介 老夫诸葛村夫\\\",\\n        \\\"serialNumber\\\": 2\\n    },\\n    {\\n        \\\"id\\\": -4,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"目录(古典、轻小说备用)\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}(?:序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|第?\\\\\\\\s{0,4}[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]+?\\\\\\\\s{0,4}(?:章|节(?!课)|卷|集(?![合和])|部(?![分赛游])|回(?![合来事去])|场(?![和合比电是])|话|篇(?!张))).{0,30}$\\\",\\n        \\\"example\\\": \\\"第一章 比上面只多了回和话\\\",\\n        \\\"serialNumber\\\": 3\\n    },\\n    {\\n        \\\"id\\\": -5,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"数字(纯数字标题)\\\",\\n        \\\"rule\\\": \\\"(?<=[　\\\\\\\\s])\\\\\\\\d+\\\\\\\\.?[ 　\\\\\\\\t]{0,4}$\\\",\\n        \\\"example\\\": \\\"12\\\",\\n        \\\"serialNumber\\\": 4\\n    },\\n    {\\n        \\\"id\\\": -6,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"大写数字(纯数字标题)\\\",\\n        \\\"rule\\\": \\\"(?<=[　\\\\\\\\s])[〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,12}[ 　\\\\\\\\t]{0,4}$\\\",\\n        \\\"example\\\": \\\"一百七十\\\",\\n        \\\"serialNumber\\\": 4\\n    },\\n    {\\n        \\\"id\\\": -7,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"数字 分隔符 标题名称\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}\\\\\\\\d{1,5}[:：,.， 、_—\\\\\\\\-].{1,30}$\\\",\\n        \\\"example\\\": \\\"1、这个就是标题\\\",\\n        \\\"serialNumber\\\": 5\\n    },\\n    {\\n        \\\"id\\\": -8,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"大写数字 分隔符 标题名称\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}(?:序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|[〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8})[ 、_—\\\\\\\\-].{1,30}$\\\",\\n        \\\"example\\\": \\\"一、只有前面的数字有差别\\\",\\n        \\\"serialNumber\\\": 6\\n    },\\n    {\\n        \\\"id\\\": -9,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"正文 标题/序号\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}正文[ 　]{1,4}.{0,20}$\\\",\\n        \\\"example\\\": \\\"正文 我奶常山赵子龙\\\",\\n        \\\"serialNumber\\\": 7\\n    },\\n    {\\n        \\\"id\\\": -10,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"Chapter/Section/Part/Episode 序号 标题\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}(?:[Cc]hapter|[Ss]ection|[Pp]art|ＰＡＲＴ|[Nn][oO]\\\\\\\\.|[Ee]pisode|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)\\\\\\\\s{0,4}\\\\\\\\d{1,4}.{0,30}$\\\",\\n        \\\"example\\\": \\\"Chapter 1 MyGrandmaIsNB\\\",\\n        \\\"serialNumber\\\": 8\\n    },\\n    {\\n        \\\"id\\\": -11,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"Chapter(去简介)\\\",\\n        \\\"rule\\\": \\\"^[ 　\\\\\\\\t]{0,4}(?:[Cc]hapter|[Ss]ection|[Pp]art|ＰＡＲＴ|[Nn][Oo]\\\\\\\\.|[Ee]pisode)\\\\\\\\s{0,4}\\\\\\\\d{1,4}.{0,30}$\\\",\\n        \\\"example\\\": \\\"Chapter 1 MyGrandmaIsNB\\\",\\n        \\\"serialNumber\\\": 9\\n    },\\n    {\\n        \\\"id\\\": -12,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"特殊符号 序号 标题\\\",\\n        \\\"rule\\\": \\\"(?<=[\\\\\\\\s　])[【〔〖「『〈［\\\\\\\\[](?:第|[Cc]hapter)[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,10}[章节].{0,20}$\\\",\\n        \\\"example\\\": \\\"【第一章 后面的符号可以没有\\\",\\n        \\\"serialNumber\\\": 10\\n    },\\n    {\\n        \\\"id\\\": -13,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"特殊符号 标题(成对)\\\",\\n        \\\"rule\\\": \\\"(?<=[\\\\\\\\s　]{0,4})(?:[\\\\\\\\[〈「『〖〔《（【\\\\\\\\(].{1,30}[\\\\\\\\)】）》〕〗』」〉\\\\\\\\]]?|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)[ 　]{0,4}$\\\",\\n        \\\"example\\\": \\\"『加个直角引号更专业』\\\",\\n        \\\"serialNumber\\\": 11\\n    },\\n    {\\n        \\\"id\\\": -14,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"特殊符号 标题(单个)\\\",\\n        \\\"rule\\\": \\\"(?<=[\\\\\\\\s　]{0,4})(?:[☆★✦✧].{1,30}|(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外)[ 　]{0,4}$\\\",\\n        \\\"example\\\": \\\"☆、晋江作者最喜欢的格式\\\",\\n        \\\"serialNumber\\\": 12\\n    },\\n    {\\n        \\\"id\\\": -15,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"章/卷 序号 标题\\\",\\n        \\\"rule\\\": \\\"^[ \\\\\\\\t　]{0,4}(?:(?:内容|文章)?简介|文案|前言|序章|楔子|正文(?!完|结)|终章|后记|尾声|番外|[卷章][\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8})[ 　]{0,4}.{0,30}$\\\",\\n        \\\"example\\\": \\\"卷五 开源盛世\\\",\\n        \\\"serialNumber\\\": 13\\n    },\\n    {\\n        \\\"id\\\": -16,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"顶格标题\\\",\\n        \\\"rule\\\": \\\"^\\\\\\\\S.{1,20}$\\\",\\n        \\\"example\\\": \\\"不超过20个字顶格写的都是标题\\\",\\n        \\\"serialNumber\\\": 14\\n    },\\n    {\\n        \\\"id\\\": -17,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"双标题(前向)\\\",\\n        \\\"rule\\\": \\\"(?m)(?<=[ \\\\\\\\t　]{0,4})第[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$(?=[\\\\\\\\s　]{0,8}第[\\\\\\\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章)\\\",\\n        \\\"example\\\": \\\"第一章 真正的标题并假装换行第一章 这个不要\\\",\\n        \\\"serialNumber\\\": 15\\n    },\\n    {\\n        \\\"id\\\": -18,\\n        \\\"enable\\\": false,\\n        \\\"name\\\": \\\"双标题(后向)\\\",\\n        \\\"rule\\\": \\\"(?m)(?<=[ \\\\\\\\t　]{0,4}第[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$[\\\\\\\\s　]{0,8})第[\\\\\\\\d零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}章.{0,30}$\\\",\\n        \\\"example\\\": \\\"第一章 这个标题不要并假装换行第一章真正的标题\\\",\\n        \\\"serialNumber\\\": 16\\n    },\\n    {\\n        \\\"id\\\": -19,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"书名 括号 序号\\\",\\n        \\\"rule\\\": \\\"^.{1,20}[(（][\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}[)）][ 　\\\\t]{0,4}$\\\",\\n        \\\"example\\\": \\\"标题后面数字有括号(12)\\\",\\n        \\\"serialNumber\\\": 17\\n    },\\n    {\\n        \\\"id\\\": -20,\\n        \\\"enable\\\": true,\\n        \\\"name\\\": \\\"书名 序号\\\",\\n        \\\"rule\\\": \\\"^.{1,20}[\\\\\\\\d〇零一二两三四五六七八九十百千万壹贰叁肆伍陆柒捌玖拾佰仟]{1,8}[ 　\\\\t]{0,4}$\\\",\\n        \\\"example\\\": \\\"标题后面数字没有括号124\\\",\\n        \\\"serialNumber\\\": 18\\n    }\\n];\\nlet Matcher = java.util.regex.Matcher;\\nlet Pattern = java.util.regex.Pattern;\\n\\nfunction getTocRule(content) {\\n    let maxCs = 1;\\n    let tocPattern = null;\\n    for (let tocRule of rules) {\\n        if (!tocRule.enable) continue;\\n        let pattern = Pattern.compile(tocRule.rule, Pattern.MULTILINE);\\n        let matcher = pattern.matcher(content);\\n        let cs = 0;\\n        while (matcher.find()) {\\n            cs++;\\n        }\\n        if (cs >= maxCs) {\\n            maxCs = cs;\\n            tocPattern = pattern;\\n        }\\n    }\\n    return tocPattern;\\n}\\n$.exports.getTocRule = getTocRule;\"},{\"col_type\":\"movie_3\",\"name\":\"#V.帮助\",\"path\":\"help.view\",\"rule\":\"js:\\nlet helpText = {\\n    \\\"txt\\\": `\\n        <h1 id=\\\"txt是什么\\\">TXT是什么?</h1>\\n        <p><a href=\\\"https://baike.baidu.com/item/txt/1217330\\\">我已经帮你百度了</a>；简单来说就是一种储存小说的文件(扩展名:txt)。</p>\\n        <h1 id=\\\"如何用该小程序阅读txt小说\\\">如何用该小程序阅读txt小说?</h1>\\n        <p>在主页面 ◉TXT 界面下，点击导入TXT，选择目标小说文件(txt文件，<em>该操作不会删除txt文件，而是copy一份到小程序的路径下</em>)，导入后再在 ◉TXT 界面下选择想要阅读的小说即可。</p>\\n\\n    `,\\n    \\\"novelComic\\\": `\\n        <h1 id=\\\"这个小程序有什么用？\\\">这个小程序有什么用？</h1>\\n        <ul>\\n        <li><u>代码上为其他小程序(漫画类/小说类)提供下载接口。</u></li>\\n        <li><u>本体充当阅读器，可以浏览用该小程序提供的下载接口(上面)，下载的漫画/小说。</u></li>\\n        <li><u>提供TXT格式小说文件解析功能。</u>\\n        <h1 id=\\\"为什么列表里什么都没用\\\">为什么列表里什么都没用?</h1>\\n        <u>初次使用，没有很正常吧。🤔</u>\\n        <h1 id=\\\"该如何添加漫画或小说\\\">该如何添加漫画(或小说)?</h1>\\n        <u> 在一个有下载功能的小程序(漫画类/小说类)中下载一本漫画/小说，返回该规则即可浏览。</u></li>\\n        </ul>\\n    `\\n};\\nsetPageTitle(\\\"帮助\\\");\\nlet keyword = getParam(\\\"keyword\\\");\\nlet text;\\nif (keyword === undefined || !(text = helpText[keyword])) {\\n    setResult([{\\n        title: '<h1 style=\\\"text-align: center;\\\">资料不见咯</h1>',\\n        col_type: \\\"rich_text\\\"\\n    }]);\\n} else {\\n    setResult([{\\n        title: text,\\n        col_type: \\\"rich_text\\\"\\n    }]);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"#v.TXT搜索\",\"path\":\"txtSearch.view\",\"rule\":\"js:\\nconst File = $.require(\\\"hiker://page/File.js\\\");\\nconst Config = $.require(\\\"hiker://page/Config.json\\\");\\n\\nlet searchTerms = decodeURIComponent(getParam(\\\"searchTerms\\\"));\\nsetPageTitle(\\\"「\\\" + searchTerms + \\\"」的搜索结果\\\");\\nlet data = File.getFilePath(Config.externalImportPath, undefined, \\\".txt\\\");\\nlet termsArr = searchTerms.split(\\\"\\\").map(t => t.replace(/\\\\*|\\\\.|\\\\?|\\\\+|\\\\$|\\\\^|\\\\[|\\\\]|\\\\(|\\\\)|\\\\{|\\\\}|\\\\||\\\\/|\\\\\\\\/g, k => \\\"\\\\\\\\\\\" + k));\\nlet reg = new RegExp(termsArr.join(\\\".*\\\"), \\\"i\\\");\\nlet searchResult = [];\\nfor (let txt of data) {\\n    if (reg.test(txt.name)) {\\n        searchResult.push({\\n            title: txt.name,\\n            url: \\\"hiker://page/txtParser.view\\\",\\n            desc: txt.path,\\n            extra: {\\n                path: txt.path,\\n                isCache: true,\\n                title: txt.name\\n            }\\n        });\\n    }\\n}\\nif (searchResult.length === 0) {\\n    searchResult.push({\\n        col_type:\\\"big_big_blank_block\\\",\\n    },{\\n        col_type:\\\"big_big_blank_block\\\",\\n    },{\\n        col_type:\\\"big_big_blank_block\\\",\\n    },{\\n        col_type:\\\"big_big_blank_block\\\",\\n    },{\\n        title: '<h2 style=\\\"text-align: center;\\\">🔎没有找到相关书籍</h2>',\\n        col_type: \\\"rich_text\\\"\\n    });\\n}\\nsetResult(searchResult);\"},{\"col_type\":\"movie_3\",\"name\":\"#f.长按\",\"path\":\"longPress.js\",\"rule\":\"js:\\n$.exports = {\\n    deleteFileForBook(path) {\\n        //return $(\\\"所有的 漫画/小说 章节将被删除\\\\m确认删除？\\\").confirm((path) => {\\n        const File = $.require(\\\"hiker://page/File.js\\\");\\n        if (File.deleteFiles(path)) {\\n            deleteItem(path)\\n            return \\\"toast://删除成功\\\";\\n        } else {\\n            return \\\"toast://删除失败\\\";\\n        }\\n        //}, path);\\n    },\\n    deleteFileForTxt(path) {\\n        const File = $.require(\\\"hiker://page/File.js\\\");\\n        if (File.deleteFiles(path)) {\\n            if (fileExist(\\\"file://\\\" + path + \\\".json\\\")) {\\n                File.deleteFiles(path + \\\".json\\\");\\n            }\\n            deleteItem(path);\\n            return \\\"toast://删除成功\\\";\\n        } else {\\n            return \\\"toast://删除失败\\\";\\n        }\\n    }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/58.png"},{"last_chapter_rule":"","title":"金山词霸","author":"斜风细雨不须归","version":9,"type":"tool","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"_x52\")\n}))\nd.push({\n    title: \"翻译\",\n    url: $.toString(() => {\n        putVar(\"_x52\", input)\n        return \"hiker://page/x5\"\n    }),\n    col_type: \"input\",\n    desc: \"请输入英文单词\",\n    pic_url: \"\",\n});\nd.push({\n    col_type: \"line_blank\"\n});\nd.push({\n    col_type: \"big_blank_block\"\n});\n\nd.push({\n    title: \"<big>使用说明</big>\",\n    url: \"\",\n    col_type: \"rich_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"<p>在上方的输入框里输入英文单词</p>\",\n    url: \"\",\n    col_type: \"rich_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"\\\",\\n    url: \\\"http://m.iciba.com/\\\" + getVar(\\\"_x52\\\"),\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            document.querySelector(\\\"#recommDivId\\\").style.display = \\\"none\\\";\\n            document.querySelector(\\\"#otherTopInfoId\\\").style.display = \\\"none\\\";\\n            document.querySelector(\\\"body .box .head-search .pop1\\\").style.display = \\\"none\\\";\\n            setTimeout(() => {\\n                document.querySelector(\\\"#recommDivId\\\").style.display = \\\"none\\\";\\n                document.querySelector(\\\"#otherTopInfoId\\\").style.display = \\\"none\\\";\\n                document.querySelector(\\\"body .box .head-search .pop1\\\").style.display = \\\"none\\\";\\n            }, 1000)\\n        })\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=707994924&s=640"},{"last_chapter_rule":"","title":"🌒二十四节气","author":"小🔥星","version":0,"type":"tool","url":"https://24jieqi.hdjr.org/?Year=fyAll","col_type":"movie_1_vertical_pic_blur","class_name":"2022年&2023年&2024年&2025年","class_url":"2022&2023&2024&2025","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.JqDiv;li,2&&Text;img&&src;img&&alt;a&&href","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.main&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'img&&src'+ \"@Referer=\",\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://hdimg.zejiri.net/hdjr/statics/css/logo.jpg"},{"last_chapter_rule":"","title":"十万个为什么","author":"","version":20,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://10why.net/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"电脑dll文件下载","author":"","version":20,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.dll-files.com/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"博客rss","author":"","version":20,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://getpodcast.xyz/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"vpn订阅","author":"香雅情&道长","version":14,"type":"tool","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nString.prototype.replaceAll = function(old,new_str){\n        return this.split(old).join(new_str);\n};\nvar res = {};\nvar d = [];\nvar cookie='';\nvar html = '';\nvar domain='https://ikuuu.co';\nvar myset = getVar('ikuuu_settings','');\nputVar2(\"exteriorUrl\",myset);\nif(myset.length>0) {\n    var costom = JSON.parse(myset);\n    try {\n        var settings = fetch(costom.path) || '{}';\n        settings = JSON.parse(settings);\n        cookie = settings.cookie || '';\n    } catch (e) {\n        cookie = '';\n    }\n}\n\nfunction add0(m){return m<10?'0'+m:m }\nfunction formatDate(needTime){\n  \t //needTime是整数，否则要parseInt转换\n   \t   var time = new Date(needTime*1000);\n   \t   var y = time.getFullYear();\n  \t   var m = time.getMonth()+1;\n  \t   var d = time.getDate();\n  \t   var h = time.getHours();\n \t  var mm = time.getMinutes();\n \t  var s = time.getSeconds();\n  \t  return y+'-'+add0(m)+'-'+add0(d)+' '+add0(h)+':'+add0(mm)+':'+add0(s);\n}\n\nfunction get_subs(html){\n    let fn_str = parseDomForHtml(html,'body&&script,-2&&Html').match(/function[\\s\\S]*}/mg)[0];\n    // let keys = fn_str.match(/(?<=client == \\').*?(?=\\')/g);\n    let keys = fn_str.match(/client == \\'.*?(?=\\')/g); // 对内部split(\"'\")[1]\n    // let values = fn_str.match(/(?<=oneclickImport\\(\\'.*?\\'.*?\\').*?(?=\\'\\))/g);\n    let values = fn_str.match(/oneclickImport\\(\\'.*?\\'.*?\\'.*?(?=\\'\\))/g); // 对内部split(\"'\")[3]\n    let subs = {};\n    for(var i=0;i<keys.length;i++){\n        // subs[keys[i]] = values[i];\n        subs[keys[i].split(\"'\")[1]] = values[i].split(\"'\")[3];\n    }\n    return subs;\n}\nif(cookie.indexOf(\"Cookie@\")>-1){\ncookie=cookie.split(\"Cookie@\")[1].replace(\"}\",\"\").replaceAll(\"；； \",\";\");\n}\nfunction get_import(html,subs){\n    subs = subs||{};\n    let btns = parseDomForArray(html,'.buttons&&a');\n    // setError(btns.length);\n    for(var i=0;i<btns.length;i++){\n        try {\n            let other_text =  parseDomForHtml(btns[i],'a&&Text');\n            let other_link = parseDomForHtml(btns[i],'a&&data-clipboard-text');\n            if(other_link){\n                subs[other_text] = other_link;\n            }\n        }catch (e) {}\n    }\n    return subs\n}\n\nfunction render(){\n    var ti = parseDomForHtml(html,'.d-sm-none&&Text')+'\\n';\nfor (var i = 0;i<4;i++){\nvar txt=parseDomForHtml(html, \".main-content&&.row&&.card,\"+i+\"&&Text\");\nvar ti=ti+ txt +' '+'\\n';}\n//setError(ti);\nd.push({\n            title: ti,\n            col_type: 'long_text'\n});\n\nd.push({\n    title: '点击签到',\n    url:`hiker://empty@lazyRule=.js:var chec=JSON.parse(fetch('`+domain+`/user/checkin', {headers:{'User-Agent':MOBILE_UA,'Cookie':'`+cookie+`','X-Requested-With':'XMLHttpRequest','Origin':'`+domain+`'},body:'',method:'POST'})).msg;refreshPage();'toast://'+chec`,\n    col_type: 'text_2'\n});\n\nd.push({\n            title: '订阅列表',\n            url:'/',\n            col_type: 'text_center_1'\n});\nlet subs = get_subs(html);\n//setError('subs:'+JSON.stringify(subs));\n//log({'ikuuu-subs':subs});\nsubs = get_import(html,subs);\n//setError('subs:'+JSON.stringify(subs));\n\nfor(var key in subs){\n    d.push({\n            title: key,\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"订阅复制成功!\\n\"+value)\n                },subs[key]),\n            col_type: key.indexOf('复制')>-1?'text_center_1':'text_3'\n    });\n}\n}\n\nfunction render_free(){\n    d.push({\n            title: '““””<small><font color=\"#f4a460\">以下为长期免费优质节点(国内被墙,先飞再更)</font></small>',\n            url:'https://t.me/s/SSRSUB',\n            col_type: 'text_center_1'\n        });\n    let free_list = {\n        ss:'https://raw.githubusercontent.com/ssrsub/ssr/master/ss-sub',\n        v2ray:'https://raw.githubusercontent.com/ssrsub/ssr/master/v2ray',\n        ssr:'https://raw.githubusercontent.com/ssrsub/ssr/master/ssrsub',\n        Trojan:'https://raw.githubusercontent.com/ssrsub/ssr/master/trojan',\n        Surge:'https://raw.githubusercontent.com/ssrsub/ssr/master/Surge.conf',\n        Clash:'https://raw.githubusercontent.com/ssrsub/ssr/master/Clash.yml',\n    };\n    for(var key in free_list){\n        d.push({\n            title: '““””<small><font color=\"#8000ff\">'+key+'</font></small>',\n            // title: key,\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"订阅复制成功!\\n\"+value)\n                },free_list[key]),\n            col_type: 'text_2'\n    });\n    }\n}\n\nd.push({\n        desc:\"0\",\n        col_type:\"x5_webview_single\"\n});\n\nlet x5_url = 'hiker://empty@rule=js:putVar2(\"cKey\",\"DZexteriorQuote\");setResult([{url:\"file:///sdcard/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/newPlan.html\",desc:\"100%&&float\",col_type:\"x5_webview_single\"}])';\n\nd.push({\n    title: '设置',\n    col_type: 'icon_round_small_4',\n    pic_url:'https://z3.ax1x.com/2021/06/18/RpbLdO.png',\n    url: x5_url\n});\nlet is_login = false;\nif(cookie){\n    html =fetch(domain+'/user',{headers:{\"User-Agent\":MOBILE_UA,\"Referer\":domain+\"/auth/login\",\"Cookie\":cookie}});\n    if(html.indexOf('退出登录')>-1){\n        is_login = true;\n        let exp_date=cookie.split(\"expire_in=\")[1].split(\";\")[0];\n       d.push({\n            title: '““””<small>本地cookie过期时间为:\\n'+formatDate(parseInt(exp_date))+'</small>',\n            url:domain+'/user',\n            col_type: 'text_center_1'\n        });\n        render();\n    }\n}\nif(!is_login){\n    d.push({\n            title: '““””<small>cookie未设置或者已过期，请重新设置cookie后再刷新\\n点击进入网页登录后用海阔查看源码\\n复制整个含cookie文本然后回来粘贴进设置</small>',\n            url:domain+'/user',\n            col_type: 'text_center_1'\n        });\n}\nrender_free();\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var newPlanUrls={};\nnewPlanUrls.localUrl = \"hiker://files/NewPlanConfigFile.json\";\nnewPlanUrls.newPlanJsUrl = \"hiker://files/rules/js/home1.9.js\"\nnewPlanUrls.htmlUrl = \"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/html/newPlan.html\";\n if(!fetch(newPlanUrls.newPlanJsUrl)){\nwriteFile(newPlanUrls.newPlanJsUrl,fetch(\"https://erp.scwinbao.com/hikerule/rulelist.json?id=841\"));\n}\n\nif(!fetch(newPlanUrls.htmlUrl)){\nwriteFile(newPlanUrls.htmlUrl,fetch(\"https://erp.scwinbao.com/hikerule/rulelist.json?id=866\"));\n}\n\nputVar2(\"newPlanUrls\",JSON.stringify(newPlanUrls));\nvar costom={\n    path:\"hiker://files/rules/ikuuu/settings.json\",\n    input:[\n        {\n            id:\"cookie\",\n            type:\"text\",\n            placeholder:\"cookie\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n        {\n            id:\"username\",\n            type:\"text\",\n            placeholder:\"用户名\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n        {\n            id:\"password\",\n            type:\"password\",\n            placeholder:\"密码\",\n\t\t       force:true,\n\t\t       defaultValue:\"\",\n        },\n    ],\n    fill:true\n};\nputVar2(\"exteriorUrl\",JSON.stringify(costom)); //固定写法\nputVar2(\"ikuuu_settings\",JSON.stringify(costom)); //自定义写法","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"布谷TV(磁力)","author":"Joe","version":3,"type":"video","url":"https://www.bugutv.net/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"4K UHD电影&4K电影&4K剧集&杜比视界&精选合辑&4K纪录片&演示片&4K演示片&杜比演示片&DTS演示片&8K演示片&蓝光资源&蓝光电影&蓝光剧集&3D蓝光&蓝光纪录片&蓝光演唱会&即将发布","class_url":"4kuhd&4kmovie&4ktv&dolbyvision&4kzhuanti&4kdocu&4kdemo&4kdemo/4ktv-4ktv&4kdemo/dolbydomo&4kdemo/dtsdomo&4kdemo/8kdemo&bluraymovie&bluraymovie/bluray-movie&bluraymovie/bluraytv&bluraymovie/3dmovie&bluraymovie/documentary&bluraymovie/audiotest&will","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&article');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a,1&&title'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            pic_url: parseDom(list[j], 'img&&data-src') + '@Referer=',\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, \"body&&.post\");\nlog(list.length)\ntry {\n    for (var i in list) {\n        d.push({\n            title: pdfh(list[i], \"a&&title\"),\n            url: pdfh(list[i], \"a&&href\"),\n            pic_url: pd(list[i], 'img&&data-src') + '@Referer=',\n            desc: pd(list[i], \"time&&Text\")\n        });\n    }\n} catch (e) {\n    throw \"看来出了点问题，20秒后重试，或搜索为空\"\n}\nsetResult(d);","search_url":"/page/fypage?cat&s=**","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode()\nrequire(\"http://hiker.nokia.press/hikerule/rulelist.json?id=4831\")\nvar img = pdfa(html, \"body&&.wp-block-image\")\nvar detail = pdfa(html, \".entry-content&&p\")\nvar list = 磁力通免(html, \"magnet\")\nd.push({\n    title: '磁力云播列表 共' + list.length + \"个\",\n    col_type: 'text_center_1'\n});\nfor (var i in list) {\n    d.push({\n        title: list[i],\n        url: list[i],\n        img: \"https://lanmeiguojiang.com/tubiao/movie/81.svg\",\n        col_type: \"avatar\"\n    })\n}\nd.push({\n    img: pd(img[0], \"img&&src\"),\n    url: pd(img[0], \"img&&src\"),\n    col_type: \"pic_1_full\"\n});\nfor (var i in detail) {\n    d.push({\n        title: pdfh(detail[i], \"p&&Text\"),\n        col_type: \"rich_text\"\n    })\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"KOTOMI.磁力","author":"狗浩啊","version":0,"type":"video","url":"https://moe4sale.in/?kw=&page=fypage","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&td:not(.pubDate):not(:matches(未知|种子|源|磁力));a&&Text;;;a&&href","searchFind":"body&&td:not(.pubDate):not(.popularity):not(:matches(未知|种子|源|磁力));a&&Text;a&&href;;;","search_url":"https://moe4sale.in/?kw=**&page=fypage","group":"⑥③🛠️工具","detail_col_type":"text_center_1","detail_find_rule":"body&&.alert,1&&.content;.alert,0&&p,4&&Text;;;.alert,0&&p,4&&a,0&&href","sdetail_col_type":"text_center_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"聚磁力","author":"","version":104,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (MY_PAGE == 1) {\n    el.push({\n        title: '““””<small><font color=#20b2aa>数据来源于对应的网站，软件和规则不提供任何内容！</font></small>',\n        desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除！</font></small>',\n        url: MY_URL,\n        col_type: 'text_center_1'\n    });\n}\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://gitcode.net/weixin_55360308/hiker/-/raw/master/undefined.json?inline=false')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://peco-img.uc.cn/image/quark_baike/upload/2021/cRoxOU1fllfv4na/2fcbe69daae490fb4514bd6ef31a833d.jpg"},{"last_chapter_rule":"","title":"聚影外挂","author":"道长","version":11,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    var d=[];\nlet jkpath='hiker://files//rules/Src/Juying/jiekou.json';\nlet jxpath='hiker://files//rules/Src/Juying/myjiexi.json';\nlet jks=JSON.parse(fetch(jkpath)||'[]');\nlet jxs=JSON.parse(fetch(jxpath)||'[]');\nlet expand = ['xpath','biubiu'];\nlet apijks = jks.filter(it=>!expand.includes(it.type));\nd.push({\n    title:'本地共计聚影资源接口数:'+apijks.length+'/'+jks.length,\n    desc:'聚影私有解析数:'+jxs.length,\n    col_type:'text_1',\n    url:$('#noLoading#').lazyRule((jkpath)=>{\n        let status = fetch('hiker://home@JSON编辑器');\n        let hasJsonEditor = (status && status !== 'null');\n        if(!hasJsonEditor){\n            return 'editFile://'+jkpath;\n        }else{\n            return 'hiker://page/interface#noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(jkpath);\n        }\n    },jkpath)\n});\nconst {color, small} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nd.push({\n    title:'一键去重',\n    col_type:'icon_2',\n    pic_url:'https://lanmeiguojiang.com/tubiao/messy/10.svg',\n    url:$('原理是根据接口里的url作为唯一id保留第一条记录,可去除资源接口和解析接口。此操作不可逆，是否继续?').confirm((jks,jkpath,jxs,jxpath)=>{\n        let newJks = [];\n        let newJxs = [];\n        jks.forEach((it)=>{\n            if(newJks.findIndex(its=>(its.url||'').trim().includes((it.url||'').trim()))===-1){\n                it.url = (it.url||'').trim();\n                newJks.push(it);\n            }\n        });\n        jxs.forEach((it)=>{\n            if(newJxs.findIndex(its=>(its.parse||'').trim().includes((it.parse||'').trim()))===-1){\n                it.parse = (it.parse||'').trim();\n                newJxs.push(it);\n            }\n        });\n        let delcnt = jks.length - newJks.length;\n        let delcnt2 = jxs.length - newJxs.length;\n        if(delcnt > 0 || delcnt2 > 0){\n            writeFile(jkpath,JSON.stringify(newJks));\n            writeFile(jxpath,JSON.stringify(newJxs));\n            refreshPage(false);\n            return `toast://去重成功,共计去重${delcnt}个资源接口,${delcnt2}个解析接口\\n剩余${newJks.length}个资源接口,${newJxs.length}个解析接口`\n        }else{\n            return 'toast://很棒，没有重复的接口!'\n        }\n\n    },jks,jkpath,jxs,jxpath),\n});\nd.push({\n    title:'超时设置:'+getMyVar('timeout','5000'),\n    url:$(getMyVar('timeout','5000'),'请输入超时毫秒整数').input(()=>{\n        if(!Number(input)){\n            return 'toast://输入有误'\n        }\n        putMyVar('timeout',Number(input)+'');\n        refreshPage(false);\n        return 'toast://已保存'\n    }),\n    pic_url:'https://lanmeiguojiang.com/tubiao/messy/12.svg',\n    col_type:'icon_2'\n});\nlet dx_test = '❤️接口多选测试';\nd.push({\n    title:dx_test,\n    col_type:'text_center_1',\n    url:$('hiker://empty#noRecordHistory##noHistory#').rule((dx_test,jkpath,color)=>{\n        setPageTitle(dx_test);\n        addListener('onClose', $.toString(() => {\n            refreshPage(false);//\n        }));\n        let d=[];\n        let jks=JSON.parse(fetch(jkpath)||'[]');\n        let expand = ['xpath','biubiu'];\n        let jxs = jks.filter(it=>!expand.includes(it.type));\n        // let jxs = jks.filter(it=>!expand.includes(it.type)).map(it=>it.name);\n        let data = storage0.getMyVar('jx_selected')||[];\n        let dx_filter = getItem('dx_filter','全部');\n        if(dx_filter === '已选'){\n            jxs = jxs.filter(it=>data.includes(it.url));\n        }else if(dx_filter=== '未选'){\n            jxs = jxs.filter(it=>!data.includes(it.url));\n        }\n        d=jxs.map((it)=>{\n            return {\n                title:(Array.isArray(data)&&data.includes(it.url))?color(it.name,'#12b668'):it.name,\n                // url:'toast://功能开发中',\n                url:$('#noLoading#').lazyRule((it,color)=>{\n                    let data = storage0.getMyVar('jx_selected');\n                    if(Array.isArray(data)){\n                        if(data.includes(it.url)){\n                            log('包含:'+it.url);\n                            data.splice(data.indexOf(it.url),1);\n                        }else{\n                            data.push(it.url)\n                        }\n                        storage0.putMyVar('jx_selected', data)\n                    }else{\n                        storage0.putMyVar('jx_selected', [it.url])\n                    }\n                    if(storage0.getMyVar('jx_selected').includes(it.url)){\n                        updateItem(it.url,{\n                            title:color(it.name,'#12b668')\n                        })\n                    }else{\n                        updateItem(it.url,{\n                            title:it.name\n                        })\n                    }\n                    return 'hiker://empty'\n                },it,color),\n                col_type:'text_3',\n                desc:JSON.stringify(it),\n                extra:{\n                    id:it.url,\n                }\n            }\n        });\n        let op=[];\n        op.push({\n            title:'全选',\n            url:$('#noLoading#').lazyRule((jxs,color)=>{\n                storage0.putMyVar('jx_selected', jxs.map(it=>it.url));\n                jxs.forEach(it=>{\n                    updateItem({title: color(it.name,'#12b668'), extra: {id: it.url}});\n                });\n                return 'hiker://empty'\n            },jxs,color),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'全不选',\n            url:$('#noLoading#').lazyRule((jxs)=>{\n                storage0.putMyVar('jx_selected', []);\n                jxs.forEach(it=>{\n                    updateItem({title: it.name, extra: {id: it.url}});\n                });\n                return 'hiker://empty'\n            },jxs),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'反选',\n            url:$('#noLoading#').lazyRule((jxs,color)=>{\n                let oldSel = storage0.getMyVar('jx_selected', []);\n                function getDifferentData(arrA, arrB) {\n                    return arrA.concat(arrB).filter(function (v, i, arr) {\n                        return arr.indexOf(v) === arr.lastIndexOf(v);\n                    });\n                }\n                let jxSel = jxs.map(it=>it.url);\n                let newSel = getDifferentData(jxSel,oldSel);\n                // log(newSel);\n                storage0.putMyVar('jx_selected', newSel);\n                newSel.forEach(it=>{\n                    let t = jxs.filter(its=>its.url===it)[0];\n                    updateItem(it,{title: color(t.name,'#12b668')});\n                    // updateItem({title: color(jxs.filter(its=>its.url===it)[0].title,'#12b668'), extra: {id: it}});\n                });\n                oldSel.forEach(it=>{\n                    let t = jxs.filter(its=>its.url===it)[0];\n                    updateItem(it,{title: t.name});\n                    // updateItem({title: jxs.filter(its=>its.url===it)[0].title, extra: {id: it}});\n                });\n                return 'hiker://empty'\n            },jxs,color),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'搜索词',\n            url:$('#noLoading#').lazyRule(()=>{\n                return $(getMyVar('skey','我的'),'当前搜索词').input(()=>{\n                    if(input){\n                        putMyVar('skey',input);\n                        return 'hiker://empty'\n                    }\n                    return 'hiker://empty'\n                })\n            }),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'测试',\n            url:$('#noLoading#').lazyRule(()=>{\n                let sel = storage0.getMyVar('jx_selected', []);\n                // log(sel);\n                if(sel.length < 1){\n                    return 'toast://啥都没选，测试个鸡毛~'\n                }\n                return $('确认测试已选择的:'+sel[0]+'等'+sel.length+'条接口?').confirm((sel)=>{\n                    return $('hiker://empty').rule((sel)=>{\n                        addListener('onClose', $.toString(() => {\n                            // clearMyVar('jx_selected');\n                            refreshPage(false);//\n                        }));\n                        let jkpath='hiker://files//rules/Src/Juying/jiekou.json';\n                        let jks=JSON.parse(fetch(jkpath)||'[]');\n                        let apijks = jks.filter(it=>sel.includes(it.url));\n                        let skey = getMyVar('skey','我的');\n                        // log(apijks);\n                        let d=[];\n                        d.push({\n                            title:'删除坏的接口',\n                            col_type:'text_2',\n                            url:$().lazyRule(()=>{\n                                let arr = (findItemsByCls('failed')||[]).map((it)=>{return {id:it.extra.id,name:it.extra.name,url:it.extra.url}});\n                                if(arr.length<1){\n                                    return 'toast://很棒,当前测试结果看起来没有坏掉的接口'\n                                }\n                                let tips = arr.map(it=>it.name).join(',');\n                                // log(arr);\n                                return $('当前测试结果共计'+arr.length+'个疑似失效的的资源接口,是否删除?\\n'+tips).confirm((arr)=>{\n                                    let jkpath='hiker://files//rules/Src/Juying/jiekou.json';\n                                    let apijks = JSON.parse(fetch(jkpath) || '[]');\n                                    let deled = [];\n                                    let delurls = [];\n                                    arr.forEach((it)=>{\n                                        log('删除接口:'+it.name+',id:'+it.id);\n                                        deled.push(it.name);\n                                        delurls.push(it.url);\n                                    });\n                                    apijks = apijks.filter(its=>!delurls.includes(its.url));\n                                    let sel = storage0.getMyVar('jx_selected', []);\n                                    sel = sel.filter(its=>!delurls.includes(its));\n                                    deleteItemByCls('failed');\n                                    storage0.putMyVar('jx_selected', sel);\n                                    writeFile(jkpath,JSON.stringify(apijks));\n                                    return 'toast://已删除:'+deled.join(',')\n                                },arr)\n                            }),\n                        });\n                        d.push({\n                            title:'查看坏蛋',\n                            col_type:'text_2',\n                            url:$().lazyRule(()=>{\n                                let arr = (findItemsByCls('failed')||[]).map((it)=>{return {id:it.id,name:it.extra.name,url:it.extra.url}});\n                                if(arr.length<1){\n                                    return 'toast://很棒,当前测试结果看起来没有坏掉的接口'\n                                }\n                                return $('hiker://empty#noHistory##noRecordHistory#').rule((arr)=>{\n                                    setPageTitle('坏蛋列表');\n                                    let d = [];\n                                    d.push({\n                                        title:'共计'+arr.length+'个坏蛋',\n                                        url:'hiker://empty',\n                                        col_type:'text_1'\n                                    });\n                                    d.push({\n                                        title:JSON.stringify(arr),\n                                        col_type:'long_text',\n                                    });\n                                    setResult(d);\n                                },arr);\n                                // return 'toast://暂无功能'\n                            }),\n                        });\n                        d.push({\n                            title:`测试搜索““””<font color=\"red\">${skey}</font> 结果如下:`,\n                            col_type:'text_1',\n                            url:'toast://看下面的!',\n                            extra:{\n                                id:'result'\n                            }\n                        });\n                        setResult(d);\n\n                        function getKey(){//获取所需的key值，当前月日比如0330\n                            let time_str = $.dateFormat(new Date(),\"yyyy-MM-dd HH:mm:ss\");\n                            let tmp = time_str.split(' ')[0].split('-');\n                            return tmp[1] + tmp[2];\n                        }\n\n                        function isIptv(link){//判断是否为Iptv\n                            if(/iptv|Chengcheng/.test(link)){\n                                return true\n                            }\n                            let special = [\n                                'tv.hfys8.vip/api.php/Sntv/vod',//黑锋\n                                'dsxtv.tv.ci/api.php/dsx/vod',//大师兄\n                            ];\n                            for(let url of special){\n                                if(link.includes(url)){\n                                    return true\n                                }\n                            }\n                            return false;\n                        }\n\n                        var count = apijks.length; //设置任务数量\n                        log('开启多任务测试,任务数量:'+count);\n                        var task = function(obj) {\n                            let surl = obj.surl;\n                            let ua = obj.ua;\n                            if(ua==='PC_UA'){\n                                ua = PC_UA;\n                            }else if(ua==='MOBILE_UA'){\n                                ua = MOBILE_UA;\n                            }\n                            var html = fetch(surl,{headers:{\"User-Agent\":ua,},timeout:Number(getMyVar('timeout','5000'))})||'';\n                            let cls;\n                            var hm = html.slice(0,200);\n                            var ret = {};\n                            var json = {};\n                            try {\n                                ret = JSON.parse(html);\n                                cls = 'success';\n                                // log(obj);\n                                if(obj.v1){\n                                    json = ret.data.list;\n                                }else if(obj.v2||obj.iptv){//v2和iptv都是data\n                                    json = ret.data;\n                                }else{\n                                    // log('cms或者app');\n                                    json = ret.list;//cms和app都是html.list\n                                }\n                                if(Array.isArray(json)){//数据可能是个[{}]\n                                    json = json[0]\n                                }\n                                ret = json;\n                                if(obj.name.includes('白云')){\n                                    // log('白云取值为:');\n                                    // log(ret);\n                                }\n                            }catch (e) {\n                                log(obj.name+'解析错误:'+e.message);\n                                cls = 'failed'\n                            }\n                            return {ret:ret,surl:surl,hm:hm,cls:cls}\n                        };\n                        var parseRet = []; //解析结果列表\n                        let tasks = apijks.map((it,idex)=>{\n                            let type = it.type;\n                            let link = it.url;\n                            let surl = link+'?wd='+skey+'&pg=1&ac=list';\n                            if(type){\n                                v1 = type==='v1';\n                                v2 = type==='v2';\n                                app = type==='app'||v2;\n                                iptv = type==='iptv';\n                            }else{\n                                v1 = link.includes('.vod');\n                                v2 = link.includes('app.php');\n                                app = link.includes('/app')||v2;\n                                iptv = isIptv(link);\n                            }\n                            if(v1){\n                                // log(`${obj.name} => v1`);\n                                surl = surl.replace('pg=','limit=20&page=')+'&key='+getKey();\n                            }else if(app){\n                                // log(`${obj.name} => app`);\n                                surl = link+'/search?pg=1&text='+skey+'&token=';\n                            }else if(iptv){\n                                // log(`${obj.name} => iptv`);\n                                // surl = link+'/?ac=list&pg=1&zm='+skey;\n                                surl = link+'/?ac=list&pg=1&wd='+skey;\n                            }\n                            it.surl = surl;\n                            it.v1 = v1;\n                            it.v2 = v2;\n                            it.app = app;\n                            it.iptv = iptv;\n                            log(`${it.name} 搜索链接: ${surl},ua:${it.ua},类型:${type}`);\n                            return {\n                                func: task,\n                                param: it,\n                                id: \"task\"+idex\n                            }\n                        });\n                        function sortByKey(array, key, order) {//对象数组按某个键值排序\n                            return array.sort(function(a, b) {\n                                var x = parseInt(a[key].match(/(\\d+)/)[1]);//修复大于10出问题\n                                var y = parseInt(b[key].match(/(\\d+)/)[1]);\n                                if (order) {\n                                    return ((x < y) ? -1 : ((x > y) ? 1 : 0))\n                                } else {\n                                    return ((x < y) ? ((x > y) ? 1 : 0) : -1)\n                                }\n                            })\n                        }\n                        be(tasks,{\n                            func: function(obj, id, error,ret) {\n                                // log(\"监听到任务\" + id+'已结束,error:'+error+',ret:'+ret);\n                                let hm = (ret.hm||'').trim();\n                                let hm1 = hm.slice(0,10);\n                                error=error||'';\n                                let it = tasks.filter(it=>it.id===id)[0].param;\n                                let data = ret.ret||{};\n                                parseRet.push({\n                                    task:id,\n                                    data:data,\n                                    surl:ret.surl,\n                                    error:error,\n                                    it:it\n                                });\n                                count -= 1; //完成了任务，任务数量-1\n                                //log(obj);\n                                // if (count > 0) {\n                                //     showLoading(\"加载中:\" + count)\n                                // } else {\n                                //     hideLoading();\n                                // }\n\n                                addItemAfter('result',{\n                                    // title:it.name,\n                                    title:data.vod_name||data.title+'\\n'+`‘‘’’<small><font color=#f13b66a>${data.vod_remarks||data.state}</font></small>`,\n                                    pic_url:data.vod_pic||data.pic,\n                                    desc:`${hm1}\\n‘‘’’<font color=#f13b66a>${it.name}</font> (${it.type})`,\n                                    // url:it.url,\n                                    // url:ret.surl,\n                                    url:$('#noLoading#').lazyRule((surl,name,type,id,url)=>{\n                                        return $(['访问','删除'],2,'请选择执行的操作').select((surl,name,type,url,id)=>{\n                                            if(input==='访问'){\n                                                return surl\n                                            }else if(input==='删除'){\n                                                log('删除接口:'+name+'('+type+'),id:'+id);\n                                                deleteItem([id]);\n                                                let jkpath='hiker://files//rules/Src/Juying/jiekou.json';\n                                                let jks=JSON.parse(fetch(jkpath)||'[]');\n                                                let apijks = jks.filter(it=>!(it.url===url));\n                                                writeFile(jkpath,JSON.stringify(apijks));\n                                                // clearMyVar('jx_selected');\n                                                let sel = storage0.getMyVar('jx_selected', []);\n                                                let idex = sel.findIndex(it=>it === url);\n                                                if(idex>-1){\n                                                    sel.splice(idex,1);\n                                                    storage0.putMyVar('jx_selected', sel);\n                                                }\n                                                return 'toast://已删除:'+name\n                                            }\n                                        },surl,name,type,url,id)\n                                    },ret.surl,it.name,it.type,id,it.url),\n                                    // desc:ret.html,\n                                    col_type:'movie_1_vertical_pic',\n                                    extra:{\n                                        id:id,\n                                        ua:it.ua,\n                                        hm:hm,\n                                        cls:ret.cls,\n                                        url:it.url,\n                                        name:it.name,\n                                    }\n                                });\n                            },\n                            param: {//传到监听函数的obj参数里\n                                hi: \"ccc\",\n                            }\n                        });//执行多任务\n                        //log(\"多任务执行结果数:\"+parseRet.length);\n                        /*\n                        parseRet=sortByKey(parseRet,'task',true);//升序排列\n\n                        parseRet.forEach((it)=>{\n                            addItemAfter('result',{\n                                title:it.data.name,\n                                url:it.data.url,\n                                desc:it.task,\n                                col_type:'move_3'\n                            });\n                        });\n\n                         */\n                    },sel)\n                },sel)\n            }),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'修改',\n            col_type:'flex_button',\n            url:$('#noLoading#').lazyRule(()=>{\n                let sel = storage0.getMyVar('jx_selected', []);\n                if(sel.length < 1){\n                    return 'toast://啥都没选，修改个鸡毛~'\n                }\n                if(sel.length !==1 ){\n                    return 'toast://聚影官方未提供批量修改接口，目前只允许单个修改，尽情谅解~'\n                }\n                let data = JSON.parse(findItem(sel[0]).desc||'{}');\n                return $('hiker://empty#noRecordHistory##noHistory#').rule((data)=>{\n                    require(config.依赖.match(/https.*\\//)[0] + \"SrcJySet.js\");\n                    jiekou(\"update\", data);\n                },data)\n            })\n        });\n        op.push({\n            title:'删除',\n            url:$('#noLoading#').lazyRule(()=>{\n                let sel = storage0.getMyVar('jx_selected', []);\n                if(sel.length < 1){\n                    return 'toast://啥都没选，删除个鸡毛~'\n                }\n                return $('确认删除已选择的:'+sel[0]+'等'+sel.length+'条接口?').confirm((sel)=>{\n                    let jkpath='hiker://files//rules/Src/Juying/jiekou.json';\n                    let jks=JSON.parse(fetch(jkpath)||'[]');\n                    let expand = ['xpath','biubiu'];\n                    // let apijks = jks.filter(it=>!expand.includes(it.type));\n                    let apijks = jks.filter(it=>!sel.includes(it.url));\n                    writeFile(jkpath, $.stringify(apijks));\n                    storage0.putMyVar('jx_selected', []);//删除完了清空选中项目\n                    refreshPage(false);\n                    return \"toast://已将〖\" + sel[0] + \"〗等\"+sel.length+\"条接口删除\";\n                },sel)\n            }),\n            col_type:'flex_button'\n        });\n        op.push({\n            title:'操作|筛选 '+color(jxs.length,'#ff7000'),\n            url:'toast://前面按钮是操作，后面按钮是筛选',\n            col_type:'scroll_button'\n        });\n        op.push({\n            title:dx_filter==='全部'?color('全部','#12b668'):'全部',\n            url:$('#noLoading#').lazyRule(()=>{\n                setItem('dx_filter','全部');\n                refreshPage(false);\n                return 'hiker://empty'\n            }),\n            col_type:'scroll_button'\n        });\n        op.push({\n            title:dx_filter==='已选'?color('已选','#12b668'):'已选',\n            url:$('#noLoading#').lazyRule(()=>{\n                setItem('dx_filter','已选');\n                refreshPage(false);\n                return 'hiker://empty'\n            }),\n            col_type:'scroll_button'\n        });\n        op.push({\n            title:dx_filter==='未选'?color('未选','#12b668'):'未选',\n            url:$('#noLoading#').lazyRule(()=>{\n                setItem('dx_filter','未选');\n                refreshPage(false);\n                return 'hiker://empty'\n            }),\n            col_type:'scroll_button'\n        });\n        d=op.concat(d);\n        setResult(d);\n    },dx_test,jkpath,color)\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://gitcode.net/src48597962/hk/-/raw/master/SrcJuying.js\"\n});\n//by.帅√`人才 聚影模板！","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/36.svg"},{"last_chapter_rule":"","title":"配置助手","author":"cy","version":14,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/home')).rule);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"home\",\"rule\":\"var d = [];\\ntry {\\n    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n    eval('configArray=' + setFile);\\n    if (configArray.length == 0) {\\n        showLoading('当前解析为空，快来添加吧！');\\n        d.push({\\n            title: '恢复备份',\\n            desc: '如果因为一些错误，数据被清空了可以尝试恢复~',\\n            url: $('#noLoading#').lazyRule(() => {\\n                setFile = readFile('hiker://files/rules/cy/MyParse_back.json');\\n                eval('configArray=' + setFile);\\n                saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                refreshPage(true);\\n                return \\\"toast://恢复成功\\\";\\n            }),\\n            col_type: 'text_center_1'\\n        });\\n    } else {\\n        // 正常备份\\n        setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n        eval('configArray=' + setFile);\\n        saveFile('hiker://files/rules/cy/MyParse_back.json', JSON.stringify(configArray));\\n    }\\n} catch (e) {\\n    showLoading('配置文件异常！！！');\\n    d.push({\\n        title: '恢复备份',\\n        desc: '如果因为一些错误，数据发生了损坏了可以尝试恢复~',\\n        url: $('#noLoading#').lazyRule(() => {\\n            setFile = readFile('hiker://files/rules/cy/MyParse_back.json');\\n            eval('configArray=' + setFile);\\n            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n            refreshPage(true);\\n            return \\\"toast://恢复成功\\\";\\n        }),\\n        col_type: 'text_center_1'\\n    });\\n    setResult(d);\\n}\\naddListener('onClose', () => {\\n    clearVar('nameArray');\\n    clearVar('urlArray');\\n    clearVar('switch');\\n})\\naddListener('onRefresh', () => {\\n    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n    eval('configArray=' + setFile);\\n    clearVar('delNum');\\n    clearVar('delArray');\\n    clearVar('shareNum');\\n    clearVar('shareArray');\\n    for (let i = 0; i < configArray.length; i++) {\\n        clearVar('isChoose' + i);\\n    }\\n})\\nif (!fileExist('hiker://files/rules/cy/MyParse.json')) {\\n    configArray = [];\\n    saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n}\\nif (!fileExist('hiker://files/rules/cy/MyParse_selection.json')) {\\n    tagsArray = ['qq', 'mgtv', 'bili', 'qiyi', 'youku'];\\n    saveFile('hiker://files/rules/cy/MyParse_selection.json', JSON.stringify(tagsArray));\\n}\\nif (!fileExist('hiker://files/rules/cy/dmSwitch.txt')) {\\n    saveFile('hiker://files/rules/cy/dmSwitch.txt', '开');\\n}\\nif (!fileExist('hiker://files/dm盒子/settings.json')) {\\n    orgSettings = JSON.stringify({\\n        fontSize: 25,\\n        dmFrom: 'par'\\n    });\\n    saveFile('hiker://files/dm盒子/settings.json', orgSettings);\\n}\\nd.push({\\n    title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">添 加 解 析</span></big>',\\n    url: $('#noLoading#').lazyRule(() => {\\n        if (getVar('switch', '关') == '开') {\\n            for (let i = 0; i < 3; i++) {\\n                deleteItem('add')\\n            }\\n            putVar('switch', '关');\\n        } else {\\n            addArray = [{\\n                desc: '解析名称，一行一个',\\n                col_type: 'input',\\n                extra: {\\n                    titleVisible: false,\\n                    type: 'textarea',\\n                    height: -1,\\n                    highlight: true,\\n                    onChange: \\\"putVar('nameArray',input)\\\",\\n                    id: 'add'\\n                }\\n            }, {\\n                desc: '解析，一行一个',\\n                col_type: 'input',\\n                extra: {\\n                    titleVisible: false,\\n                    type: 'textarea',\\n                    height: -1,\\n                    highlight: true,\\n                    onChange: \\\"putVar('urlArray',input)\\\",\\n                    id: 'add'\\n                }\\n            }, {\\n                title: '保存',\\n                url: $().lazyRule(() => {\\n                    nameArray = getVar('nameArray').split('\\\\n');\\n                    urlArray = getVar('urlArray').split('\\\\n');\\n                    dataLength = nameArray.length > urlArray.length ? nameArray.length : urlArray.length;\\n                    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                    eval('configArray=' + setFile);\\n                    for (let i = 0; i < dataLength; i++) {\\n                        jiexiName = i > nameArray.length - 1 ? '未命名' : (nameArray[i] == '' ? '未命名' : nameArray[i]);\\n                        jiexiUrl = i > urlArray.length - 1 ? '空解析' : (urlArray[i] == '' ? '空解析' : urlArray[i]);\\n                        configArray.push({\\n                            name: jiexiName,\\n                            url: jiexiUrl,\\n                            tags: '全部'\\n                        });\\n                    }\\n                    saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                    putVar('switch', '关');\\n                    refreshPage(true);\\n                    return \\\"toast://保存成功\\\"\\n                }),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    id: 'add'\\n                }\\n            }]\\n            addItemAfter('addFunction', addArray);\\n            putVar('switch', '开');\\n        }\\n        return 'toast://已切换switch为:' + getVar('switch', '开')\\n    }),\\n    desc: '简单、无忧、独立的解析管理工具，养老专用',\\n    col_type: 'text_center_1',\\n    extra: {\\n        id: 'addFunction'\\n    }\\n}, {\\n    col_type: 'line_blank'\\n}, {\\n    title: '‘‘’’<font color=\\\"#6EB897\\\">说明</font>',\\n    url: $().lazyRule(() => {\\n        return $('hiker://empty').rule(() => {\\n            let d = [];\\n            d.push({\\n                title: '教程文档',\\n                url: 'https://www.yuque.com/chenying-k73sc/lhcvqd/bsh5e2',\\n                desc: \\\"float&&100%\\\",\\n                col_type: 'x5_webview_single'\\n            });\\n            setResult(d);\\n        });\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: \\\"切换插件\\\",\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        return $(['断插复原', '接管断插'], 2, '请选择你要执行的操作').select(() => {\\n            if (input == '断插复原') {\\n                writeFile(\\\"hiker://files/cache/Parse_Dn.js\\\", JSON.parse(fetch(\\\"hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ\\\")).rule);\\n                return \\\"toast://当前是断插模式\\\";\\n            } else {\\n                writeFile(\\\"hiker://files/cache/Parse_Dn.js\\\", JSON.parse(fetch(\\\"hiker://page/duan?rule=配置助手\\\")).rule);\\n                return \\\"toast://当前是助手已接管解析任务\\\";\\n            }\\n        })\\n    }),\\n    col_type: \\\"scroll_button\\\"\\n}, {\\n    title: '导入辅助',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        html = request('https://netcut.cn/p/a5d1c8e1ecee28d3');\\n        data = html.match(/{.*note_content.*updated_at.*}/)[0];\\n        content = JSON.parse(data).note_content;\\n        upData = JSON.parse(data).updated_at;\\n        putVar('content', content);\\n        confirm({\\n            title: '是否导入',\\n            content: '脚本更新日期\\\\n' + upData,\\n            confirm: () => {\\n                return getVar('content');\\n            },\\n            cancel: () => {\\n                return 'toast://已取消导入';\\n            }\\n        })\\n        return 'hiker://empty';\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '解析模板',\\n    url: `copy://修改★魔断通用模板★\\nfunction (vipUrl) {\\n    // 正常调用-弹幕开关在配置助手里自行设置是否启用\\n    return $.require(\\\"hiker://page/mulParse?rule=配置助手\\\").mulParse(vipUrl);\\n    /*免嗅首发模式\\n    如果想要实现类似魔断的嗅探优先：免嗅加x5、Json多线路的形式，参考注释的示例代码添加免嗅代码（只是示例并不可用），并在最终返回的时候顺序多传入两个参数：一个是免嗅得到的播放地址，一个是这个解析或线路的名字\\n    var parse = \\\"https://player.dxyy.cf/WndexxX.php?url=\\\";\\n    bfurl = $.require(\\\"hiker://page/api?rule=API盒子\\\").parseLLQ(parse, vipUrl);\\n    return $.require(\\\"hiker://page/mulParse?rule=配置助手\\\").mulParse(vipUrl, bfurl, 'llq') + \\\";{User-Agent@&&Referer@}\\\";\\n    */\\n}`,\\n    col_type: 'scroll_button'\\n}, {\\n    title: '源码编辑',\\n    url: \\\"editFile://hiker://files/rules/cy/MyParse.json\\\",\\n    col_type: 'scroll_button'\\n}, {\\n    title: '导出配置',\\n    url: 'share://hiker://files/rules/cy/MyParse.json',\\n    col_type: 'scroll_button'\\n}, {\\n    title: '云板分享',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n        secretContent = base64Encode(base64Encode(setFile));\\n        copy(\\\"助手解析导入口令¥¥\\\" + sharePaste(secretContent));\\n        return 'hiker://empty';\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '云板导入',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        return $('', '增量导入，请放心').input(() => {\\n            if (input.match(/助手解析导入口令¥¥/)) {\\n                link = input.split('¥¥')[1];\\n                secretContent = parsePaste(link);\\n                eval('remoteSetFile=' + base64Decode(base64Decode(secretContent)));\\n                eval('configArray=' + readFile('hiker://files/rules/cy/MyParse.json'));\\n                newArray = configArray.concat(remoteSetFile);\\n                saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(newArray));\\n                refreshPage(true);\\n                return \\\"toast://导入成功\\\"\\n            } else {\\n                return \\\"toast://口令错误\\\"\\n            }\\n        })\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    col_type: 'line_blank'\\n}, {\\n    title: getVar('mode', '配置') == '配置' ? '““””<font color=red>配置</font>' : '配置',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        putVar('mode', '配置');\\n        refreshPage(true);\\n        return 'hiker://empty';\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: getVar('mode', '配置') == '批量工具' ? '““””<font color=red>批量工具</font>' : '批量工具',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        return $(['删除', '分享'], 2, '请选择你要执行的操作').select(() => {\\n            putVar('mode', '批量工具');\\n            if (input == '删除') {\\n                putVar('type', '批量删除');\\n                clearVar('delNum');\\n                clearVar('delArray');\\n            } else {\\n                putVar('type', '批量分享');\\n                clearVar('shareNum');\\n                clearVar('shareArray');\\n            }\\n            setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n            eval('configArray=' + setFile);\\n            for (let i = 0; i < configArray.length; i++) {\\n                clearVar('isChoose' + i);\\n            }\\n            refreshPage(true);\\n            return 'hiker://empty';\\n        })\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: getVar('mode', '配置') == '解析测试' ? '““””<font color=red>解析测试</font>' : '解析测试',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        putVar('mode', '解析测试');\\n        refreshPage(true);\\n        return 'hiker://empty';\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: request('hiker://files/rules/cy/dmSwitch.txt') == 'true' ? '弹幕:开' : '弹幕:关',\\n    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n        var dmSwitch = request('hiker://files/rules/cy/dmSwitch.txt');\\n        if (dmSwitch == 'true') {\\n            saveFile('hiker://files/rules/cy/dmSwitch.txt', 'false');\\n        } else {\\n            saveFile('hiker://files/rules/cy/dmSwitch.txt', 'true');\\n        }\\n        refreshPage(true);\\n        return 'hiker://empty';\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: \\\"弹幕来源：\\\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom,\\n    url: $('#noLoading#').lazyRule(() => {\\n        options = ['fc官弹', 'par', 'fufeng'];\\n        return $(options, 1).select(() => {\\n            curSettings = JSON.parse(readFile('hiker://files/dm盒子/settings.json'));\\n            curSettings.dmFrom = input;\\n            saveFile('hiker://files/dm盒子/settings.json', JSON.stringify(curSettings));\\n            updateItem('弹幕来源', {\\n                title: \\\"弹幕来源：\\\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom,\\n            });\\n            return \\\"toast://切换来源为:\\\" + input;\\n        })\\n    }),\\n    col_type: \\\"scroll_button\\\",\\n    extra: {\\n        id: '弹幕来源'\\n    }\\n});\\ntry {\\n    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n    eval('configArray=' + setFile);\\n    if (getVar('mode', '配置') == '配置') {\\n        d.push({\\n            col_type: 'line_blank'\\n        }, {\\n            title: '去重除白',\\n            url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                eval('configArray=' + setFile);\\n                putVar('lastClean', configArray);\\n                newArray = [];\\n                num = 0;\\n                for (let i = 0; i < configArray.length; i++) {\\n                    if (getVar(configArray[i].url, '0') != '1' && configArray[i].url != '空解析' && configArray[i].url != undefined) {\\n                        newArray.push(configArray[i]);\\n                        putVar(configArray[i].url, '1');\\n                    } else {\\n                        num++;\\n                    }\\n                }\\n                saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(newArray));\\n                JSON.parse(getVar('lastClean', '[]')).forEach(item => {\\n                    clearVar(item.url);\\n                });\\n                refreshPage(true);\\n                return \\\"toast://本次去重数量为\\\\t\\\\t\\\\t\\\" + num;\\n            }),\\n            col_type: 'scroll_button'\\n        }, {\\n            title: '占位符处理',\\n            url: $(['添加', '去除'], 2, '请选择你要执行的操作').select(() => {\\n                setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                eval('configArray=' + setFile);\\n                for (let i = 0; i < configArray.length; i++) {\\n                    if (input == '添加') {\\n                        if (configArray[i].url.match(/\\\\?url=/)) {\\n                            configArray[i].url = configArray[i].url.replace('?url=', '?placeholder=&url=');\\n                        }\\n                    } else {\\n                        if (configArray[i].url.match(/\\\\?placeholder=&url=/)) {\\n                            configArray[i].url = configArray[i].url.replace('?placeholder=&url=', '?url=');\\n                        }\\n                    }\\n                }\\n                saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                refreshPage(true);\\n                return \\\"toast://处理成功\\\";\\n            }),\\n            col_type: 'scroll_button'\\n        }, {\\n            col_type: 'line_blank'\\n        });\\n        tagsArray = JSON.parse(request('hiker://files/rules/cy/MyParse_selection.json'));\\n        tagsArray.forEach(item => {\\n            d.push({\\n                title: item,\\n                url: $().rule((item) => {\\n                    let d = [];\\n                    d.push({\\n                        title: '返回刷新，记得点我！！！',\\n                        url: $('#noLoading#').lazyRule(() => {\\n                            back(true);\\n                            return \\\"toast://刷新成功~\\\";\\n                        }),\\n                        col_type: 'text_1'\\n                    }, {\\n                        title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">添 加 解 析</span></big>',\\n                        url: $('#noLoading#').lazyRule((item) => {\\n                            if (getVar('switch2', '关') == '开') {\\n                                for (let i = 0; i < 3; i++) {\\n                                    deleteItem('add2')\\n                                }\\n                                putVar('switch2', '关');\\n                            } else {\\n                                addArray = [{\\n                                    desc: '解析名称，一行一个',\\n                                    col_type: 'input',\\n                                    extra: {\\n                                        titleVisible: false,\\n                                        type: 'textarea',\\n                                        height: -1,\\n                                        highlight: true,\\n                                        onChange: \\\"putVar('nameArray',input)\\\",\\n                                        id: 'add2'\\n                                    }\\n                                }, {\\n                                    desc: '解析，一行一个',\\n                                    col_type: 'input',\\n                                    extra: {\\n                                        titleVisible: false,\\n                                        type: 'textarea',\\n                                        height: -1,\\n                                        highlight: true,\\n                                        onChange: \\\"putVar('urlArray',input)\\\",\\n                                        id: 'add2'\\n                                    }\\n                                }, {\\n                                    title: '保存',\\n                                    url: $().lazyRule((item) => {\\n                                        nameArray = getVar('nameArray').split('\\\\n');\\n                                        urlArray = getVar('urlArray').split('\\\\n');\\n                                        dataLength = nameArray.length > urlArray.length ? nameArray.length : urlArray.length;\\n                                        setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                                        eval('configArray=' + setFile);\\n                                        for (let i = 0; i < dataLength; i++) {\\n                                            jiexiName = i > nameArray.length - 1 ? '未命名' : (nameArray[i] == '' ? '未命名' : nameArray[i]);\\n                                            jiexiUrl = i > urlArray.length - 1 ? '空解析' : (urlArray[i] == '' ? '空解析' : urlArray[i]);\\n                                            configArray.push({\\n                                                name: jiexiName,\\n                                                url: jiexiUrl,\\n                                                tags: item\\n                                            });\\n                                        }\\n                                        saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                                        putVar('switch2', '关');\\n                                        refreshPage(true);\\n                                        return \\\"toast://保存成功\\\"\\n                                    }, item),\\n                                    col_type: 'text_center_1',\\n                                    extra: {\\n                                        id: 'add2'\\n                                    }\\n                                }]\\n                                addItemAfter('addFunction2', addArray);\\n                                putVar('switch2', '开');\\n                            }\\n                            return 'toast://已切换switch为:' + getVar('switch2', '开')\\n                        }, item),\\n                        desc: '简单、无忧、独立的解析管理工具，养老专用',\\n                        col_type: 'text_center_1',\\n                        extra: {\\n                            id: 'addFunction2'\\n                        }\\n                    });\\n                    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                    eval('var configArray=' + setFile);\\n                    eval('var reg=/' + item + '|全部/;');\\n                    for (let i = 0; i < configArray.length; i++) {\\n                        if (configArray[i].tags == undefined || configArray[i].tags.match(reg)) {\\n                            d.push({\\n                                title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + i + '</span>-' + configArray[i].name + '\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:#99CCFF\\\"><small>#应用:' + configArray[i].tags + '</small></span>',\\n                                desc: configArray[i].url,\\n                                url: $(['编辑', '移位', '删除'], 3, '请选择你要执行的操作').select((i) => {\\n                                    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                                    eval('var configArray=' + setFile);\\n                                    if (configArray[i].tags == undefined) {\\n                                        configArray[i].tags = '全部'\\n                                    }\\n                                    if (input == '编辑') {\\n                                        config = configArray[i].name + ',' + configArray[i].url + '###' + configArray[i].tags;\\n                                        return $(config).input((i, configArray) => {\\n                                            item = {\\n                                                name: input.split(/,|，/)[0],\\n                                                url: input.split(/###/)[0].split(/,|，/)[1],\\n                                                tags: input.split(/###/)[1]\\n                                            }\\n                                            configArray.splice(i, 1, item);\\n                                            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                                            refreshPage(false);\\n                                            return \\\"toast://更新成功\\\"\\n                                        }, i, configArray)\\n                                    } else if (input == '移位') {\\n                                        return $('0', '你想排第几？序号从0开始~').input((i, configArray) => {\\n                                            if (input > configArray.length - 1) {\\n                                                input = configArray.length - 1;\\n                                            } else if (input < 0) {\\n                                                input = 0;\\n                                            }\\n                                            temp = configArray[i];\\n                                            if (i > input) {\\n                                                for (let index = i; index > input; index--) {\\n                                                    configArray[index] = configArray[index - 1];\\n                                                }\\n                                            } else {\\n                                                for (let index = i; index < input; index++) {\\n                                                    configArray[index] = configArray[index + 1];\\n                                                }\\n                                            }\\n                                            configArray[input] = temp;\\n                                            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                                            refreshPage(false);\\n                                            return \\\"toast://移位成功\\\"\\n                                        }, i, configArray)\\n                                    } else {\\n                                        configArray.splice(i, 1);\\n                                        saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                                        refreshPage(false);\\n                                        return \\\"toast://删除成功\\\"\\n                                    }\\n                                }, i),\\n                                col_type: 'text_1'\\n                            });\\n                        }\\n                    }\\n                    setResult(d);\\n                }, item),\\n                col_type: 'scroll_button'\\n            });\\n        });\\n        d.push({\\n            title: '➕',\\n            url: $('#noLoading#').lazyRule(() => {\\n                return $('', '请输入需要解析的标识，比如域名').input(() => {\\n                    tagsArray = JSON.parse(request('hiker://files/rules/cy/MyParse_selection.json'));\\n                    tagsArray.push(input);\\n                    saveFile('hiker://files/rules/cy/MyParse_selection.json', JSON.stringify(tagsArray));\\n                    refreshPage(true);\\n                    return 'toast://添加线路成功~'\\n                })\\n            }),\\n            col_type: 'scroll_button'\\n        }, {\\n            title: '➖',\\n            url: $('#noLoading#').lazyRule(() => {\\n                tagsArray = JSON.parse(request('hiker://files/rules/cy/MyParse_selection.json'));\\n                return $(tagsArray, 3, '请选择你要删除的线路').select((tagsArray) => {\\n                    Array.prototype.indexOf = function (val) {\\n                        for (var i = 0; i < this.length; i++) {\\n                            if (this[i] == val) return i;\\n                        }\\n                        return -1;\\n                    };\\n                    Array.prototype.remove = function (val) {\\n                        var index = this.indexOf(val);\\n                        if (index > -1) {\\n                            this.splice(index, 1);\\n                        }\\n                    };\\n                    tagsArray.remove(input);\\n                    saveFile('hiker://files/rules/cy/MyParse_selection.json', JSON.stringify(tagsArray));\\n                    refreshPage(true);\\n                    return 'toast://已移除线路~'\\n                }, tagsArray)\\n            }),\\n            col_type: 'scroll_button'\\n        });\\n        for (let i = 0; i < configArray.length; i++) {\\n            if (configArray[i].tags == undefined) {\\n                configArray[i].tags = '全部'\\n            }\\n            d.push({\\n                title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + i + '</span>-' + configArray[i].name + '\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:#99CCFF\\\"><small>#应用:' + configArray[i].tags + '</small></span>',\\n                desc: configArray[i].url,\\n                url: $(['编辑', '移位', '删除'], 3, '请选择你要执行的操作').select((i) => {\\n                    setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                    eval('var configArray=' + setFile);\\n                    if (configArray[i].tags == undefined) {\\n                        configArray[i].tags = '全部'\\n                    }\\n                    if (input == '编辑') {\\n                        config = configArray[i].name + ',' + configArray[i].url + '###' + configArray[i].tags;\\n                        return $(config).input((i, configArray) => {\\n                            item = {\\n                                name: input.split(/,|，/)[0],\\n                                url: input.split(/###/)[0].split(/,|，/)[1],\\n                                tags: input.split(/###/)[1]\\n                            }\\n                            configArray.splice(i, 1, item);\\n                            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                            refreshPage(false);\\n                            return \\\"toast://更新成功\\\"\\n                        }, i, configArray)\\n                    } else if (input == '移位') {\\n                        return $('0', '你想排第几？序号从0开始~').input((i, configArray) => {\\n                            if (input > configArray.length - 1) {\\n                                input = configArray.length - 1;\\n                            } else if (input < 0) {\\n                                input = 0;\\n                            }\\n                            temp = configArray[i];\\n                            if (i > input) {\\n                                for (let index = i; index > input; index--) {\\n                                    configArray[index] = configArray[index - 1];\\n                                }\\n                            } else {\\n                                for (let index = i; index < input; index++) {\\n                                    configArray[index] = configArray[index + 1];\\n                                }\\n                            }\\n                            configArray[input] = temp;\\n                            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                            refreshPage(false);\\n                            return \\\"toast://移位成功\\\"\\n                        }, i, configArray)\\n                    } else {\\n                        configArray.splice(i, 1);\\n                        saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                        refreshPage(false);\\n                        return \\\"toast://删除成功\\\"\\n                    }\\n                }, i),\\n                col_type: 'text_1'\\n            });\\n        }\\n    } else if (getVar('mode', '配置') == '批量工具') {\\n        if (getVar('type', '批量删除') == '批量删除') {\\n            d.push({\\n                title: '确认删除\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('delNum', '0') + '</span>\\\\t\\\\t\\\\t条解析',\\n                url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                    if (getVar('delNum', '0') == '0') {\\n                        return 'toast://请先选择要删除的解析！'\\n                    } else {\\n                        delArray = JSON.parse(getVar('delArray'));\\n                        log(delArray);\\n                        setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                        eval('configArray=' + setFile);\\n                        newArray = [];\\n                        for (let i = 0; i < configArray.length; i++) {\\n                            if (!delArray.includes(i)) {\\n                                newArray.push(configArray[i]);\\n                            }\\n                        }\\n                        saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(newArray));\\n                        delNum = getVar('delNum', '0');\\n                        clearVar('delNum');\\n                        clearVar('delArray');\\n                        for (let i = 0; i < configArray.length; i++) {\\n                            clearVar('isChoose' + i);\\n                        }\\n                        refreshPage(true);\\n                        return \\\"toast://共删除\\\" + delNum + '条解析';\\n                    }\\n                }),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    id: 'delBtn'\\n                }\\n            });\\n            index = 0;\\n            configArray.forEach(item => {\\n                d.push({\\n                    title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + index + '</span>-' + item.name,\\n                    desc: item.url,\\n                    url: $('hiker://empty#noLoading#').lazyRule((index, item) => {\\n                        if (getVar('isChoose' + index, 'no') == 'yes') {\\n                            log(index);\\n                            delArray = JSON.parse(getVar('delArray', '[]'));\\n                            delNum = Number(getVar('delNum', '0')) - 1;\\n                            delArray.pop(index);\\n                            putVar('delArray', delArray);\\n                            putVar('delNum', delNum);\\n                            updateItem(index + '', {\\n                                title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + index + '</span>-' + item.name,\\n                            });\\n                            updateItem('delBtn', {\\n                                title: '确认删除\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('delNum', '0') + '</span>\\\\t\\\\t\\\\t条解析'\\n                            });\\n                            putVar('isChoose' + index, 'no');\\n                            return 'hiker://empty';\\n                        } else {\\n                            delArray = JSON.parse(getVar('delArray', '[]'));\\n                            delNum = Number(getVar('delNum', '0')) + 1;\\n                            delArray.push(index);\\n                            log(delArray);\\n                            putVar('delArray', delArray);\\n                            putVar('delNum', delNum);\\n                            updateItem(index + '', {\\n                                title: '‘‘’’<span style=\\\"color:red\\\">' + index + '-' + item.name + '</span>',\\n                            });\\n                            updateItem('delBtn', {\\n                                title: '确认删除\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('delNum', '0') + '</span>\\\\t\\\\t\\\\t条解析'\\n                            });\\n                            putVar('isChoose' + index, 'yes');\\n                            return 'hiker://empty';\\n                        }\\n                    }, index, item),\\n                    col_type: 'text_1',\\n                    extra: {\\n                        id: index + ''\\n                    }\\n                });\\n                index++;\\n            });\\n        } else {\\n            d.push({\\n                title: '确认分享\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('shareNum', '0') + '</span>\\\\t\\\\t\\\\t条解析',\\n                url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                    if (getVar('shareNum', '0') == '0') {\\n                        return 'toast://请先选择要分享的解析！'\\n                    } else {\\n                        shareArray = JSON.parse(getVar('shareArray'));\\n                        log(shareArray);\\n                        eval('configArray=' + readFile('hiker://files/rules/cy/MyParse.json'));\\n                        shareFile = [];\\n                        for (let i = 0; i < configArray.length; i++) {\\n                            if (shareArray.includes(i)) {\\n                                shareFile.push(configArray[i]);\\n                            }\\n                        }\\n                        secretContent = base64Encode(base64Encode(JSON.stringify(shareFile)));\\n                        copy(\\\"助手解析导入口令¥¥\\\" + sharePaste(secretContent));\\n                        clearVar('shareNum');\\n                        clearVar('shareArray');\\n                        for (let i = 0; i < configArray.length; i++) {\\n                            clearVar('isChoose' + i);\\n                        }\\n                        refreshPage(true);\\n                        return \\\"toast://分享成功\\\"\\n                    }\\n                }),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    id: 'shareBtn'\\n                }\\n            });\\n            index = 0;\\n            configArray.forEach(item => {\\n                d.push({\\n                    title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + index + '</span>-' + item.name,\\n                    desc: item.url,\\n                    url: $('hiker://empty#noLoading#').lazyRule((index, item) => {\\n                        if (getVar('isChoose' + index, 'no') == 'yes') {\\n                            log(index);\\n                            shareArray = JSON.parse(getVar('shareArray', '[]'));\\n                            shareNum = Number(getVar('shareNum', '0')) - 1;\\n                            shareArray.pop(index);\\n                            putVar('shareArray', shareArray);\\n                            putVar('shareNum', shareNum);\\n                            updateItem(index + '', {\\n                                title: '‘‘’’<span style=\\\"color:#6EB897\\\">' + index + '</span>-' + item.name,\\n                            });\\n                            updateItem('shareBtn', {\\n                                title: '确认分享\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('shareNum', '0') + '</span>\\\\t\\\\t\\\\t条解析',\\n                            });\\n                            putVar('isChoose' + index, 'no');\\n                            return 'hiker://empty';\\n                        } else {\\n                            shareArray = JSON.parse(getVar('shareArray', '[]'));\\n                            shareNum = Number(getVar('shareNum', '0')) + 1;\\n                            shareArray.push(index);\\n                            log(shareArray);\\n                            putVar('shareArray', shareArray);\\n                            putVar('shareNum', shareNum);\\n                            updateItem(index + '', {\\n                                title: '‘‘’’<span style=\\\"color:red\\\">' + index + '-' + item.name + '</span>',\\n                            });\\n                            updateItem('shareBtn', {\\n                                title: '确认分享\\\\t\\\\t\\\\t‘‘’’<span style=\\\"color:red\\\">' + getVar('shareNum', '0') + '</span>\\\\t\\\\t\\\\t条解析',\\n                            });\\n                            putVar('isChoose' + index, 'yes');\\n                            return 'hiker://empty';\\n                        }\\n                    }, index, item),\\n                    col_type: 'text_1',\\n                    extra: {\\n                        id: index + ''\\n                    }\\n                });\\n                index++;\\n            });\\n        }\\n    } else if (getVar('mode', '配置') == '解析测试') {\\n        setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n        eval('configArray=' + setFile);\\n        configArray.forEach(item => {\\n            jiexi = item.url;\\n            d.push({\\n                title: item.name + '\\\\t\\\\t\\\\t‘‘’’<font color=\\\"#6EB897\\\"><small>➮前往测试</small></font>',\\n                desc: item.url,\\n                url: $().rule((jiexi) => {\\n                    let d = [];\\n                    d.push({\\n                        title: '编辑测试链接',\\n                        url: 'editFile://hiker://files/rules/cy/ceshi.json',\\n                        col_type: 'text_2'\\n                    }, {\\n                        title: '弹幕:' + getVar('dmSwitch', '关'),\\n                        url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                            if (getVar('dmSwitch', '关') == '关') {\\n                                putVar('dmSwitch', '开');\\n                            } else {\\n                                putVar('dmSwitch', '关');\\n                            }\\n                            updateItem('dmSwitch', {\\n                                title: '弹幕:' + getVar('dmSwitch', '关'),\\n                            });\\n                            return 'hiker://empty';\\n                        }),\\n                        col_type: 'text_2',\\n                        extra: {\\n                            id: 'dmSwitch'\\n                        }\\n                    });\\n                    if (!fileExist('hiker://files/rules/cy/ceshi.json')) {\\n                        ceshiData = {\\n                            '腾讯视频': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/15/3/106_3a0d212e17cb95e232ffe155460385cb_con_130x130.png',\\n                                url: 'https://v.qq.com/x/cover/mzc00200rmpaf40/n0036l4tntc.html'\\n                            },\\n                            '优酷': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/16/9/110_8ff06e0c237760cd57d2508fd98c8414_con_130x130.png',\\n                                url: 'https://v.youku.com/v_show/id_XNDc0MDE1NTk1Mg==.html'\\n                            },\\n                            '爱奇艺': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/09/8/110_901f2ef37af2fea25e5d9648f551ce31_con_130x130.png',\\n                                url: 'http://www.iqiyi.com/v_2ga8zts86ys.html'\\n                            },\\n                            '芒果TV': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/15/6/110_1834d296aa5b5666a7d94b1e3479ae64_con_130x130.png',\\n                                url: 'http://www.mgtv.com/b/349253/10424300.html'\\n                            },\\n                            '哔哩哔哩': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/27/4/110_8e2e3d88c45025b380e69817d6fb53b1_con_130x130.png',\\n                                url: 'https://m.bilibili.com/bangumi/play/ep428993'\\n                            },\\n                            '搜狐视频': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/15/9/110_532a51f8431efc377808c1ffff2da36f_con_130x130.png',\\n                                url: 'https://m.tv.sohu.com/v7329441.shtml',\\n                            },\\n                            '西瓜视频': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/27/5/110_a86265882ed18c6190566e9ea25f9698_con_130x130.png',\\n                                url: 'https://www.ixigua.com/6699356792905794055'\\n                            },\\n                            '乐视': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/15/8/2_35b5d4373f4bcba28f39486e4f1164d9_con_130x130.png',\\n                                url: 'https://m.le.com/vplay_76954333.html?from=ajax',\\n                            },\\n                            '1905': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/18/4/110_5f24b1052fed4f7fc73593a8ef27276d_con_130x130.png',\\n                                url: 'https://vip.1905.com/m/play/1429725.shtml'\\n                            },\\n                            '风行视频': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/16/4/110_6f6af9f99b2629e51f0b0a33cdff1d9e_con_130x130.png',\\n                                url: 'http://m.fun.tv/mplay/?mid=95719'\\n                            },\\n                            'PPTV视频': {\\n                                pic: 'https://android-artworks.25pp.com/fs08/2021/09/28/5/110_a455b2951227040ee62955edcfb89d72_con_130x130.png',\\n                                url: 'https://v.pptv.com/show/zVn3dJXt1xV49l4.html'\\n                            },\\n                            '龙腾': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/4.png',\\n                                url: 'LT-1ec3f6754f68586ed7f92c3e995cfca6'\\n                            },\\n                            '人人迷': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/6.png',\\n                                url: 'renrenmi-ab924e11d2d69397'\\n                            },\\n                            '五毒': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/30.png',\\n                                url: 'wuduyun-1649431307021'\\n                            },\\n                            '多多': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/49.png',\\n                                url: 'https://m3u8.cache.suoyo.cc/m3u8/202203/8/aaabd92da26774c68850a023153c80f1ae6fa9be.m3u8'\\n                            },\\n                            '融兴': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/80.png',\\n                                url: 'RongXingVR-4215645581932'\\n                            },\\n                            '雪人': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/q/133.png',\\n                                url: 'xueren-1646823072'\\n                            },\\n                            '旋风云': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/54.png',\\n                                url: 'xfy-529e6457953d545f'\\n                            },\\n                            '瑞丰资源': {\\n                                pic: 'https://lanmeiguojiang.com/tubiao/ke/72.png',\\n                                url: 'https://1.ruifenglb.com/play/1644914595.m3u8'\\n                            },\\n                        };\\n                        saveFile('hiker://files/rules/cy/ceshi.json', JSON.stringify(ceshiData));\\n                    }\\n                    ceshiData = JSON.parse(request('hiker://files/rules/cy/ceshi.json'));\\n                    for (var prop in ceshiData) {\\n                        d.push({\\n                            title: prop,\\n                            img: ceshiData[prop].pic + '@Referer=',\\n                            url: $('').lazyRule((ceshiData, prop, jiexi) => {\\n                                vipUrl = ceshiData[prop].url;\\n                                urls = [\\\"video://\\\" + jiexi + vipUrl];\\n                                names = ['测试']\\n                                if (getVar('dmSwitch', '关') == '开') {\\n                                    return $.require(\\\"hiker://page/videoDm.js?rule=dm盒子\\\").getFor(vipUrl, urls, names);\\n                                } else {\\n                                    return \\\"video://\\\" + jiexi + vipUrl;\\n                                }\\n                            }, ceshiData, prop, jiexi),\\n                            col_type: 'icon_4'\\n                        });\\n                    }\\n                    d.push({\\n                        title: '测试',\\n                        desc: '你还可以任意输入一个视频地址测试当前解析~',\\n                        url: $.toString((jiexi) => {\\n                            vipUrl = getVar('ceshiLink');\\n                            urls = [\\\"video://\\\" + jiexi + vipUrl];\\n                            names = ['测试']\\n                            if (getVar('dmSwitch', '关') == '开') {\\n                                return $.require(\\\"hiker://page/videoDm.js?rule=dm盒子\\\").getFor(vipUrl, urls, names);\\n                            } else {\\n                                return \\\"video://\\\" + jiexi + vipUrl;\\n                            }\\n                        }, jiexi),\\n                        col_type: 'input',\\n                        extra: {\\n                            type: 'textarea',\\n                            height: -1,\\n                            onChange: \\\"putVar('ceshiLink',input)\\\",\\n                        }\\n                    }, {\\n                        title: '删除该解析',\\n                        desc: '请认真考虑~',\\n                        url: $('hiker://empty#noLoading#').lazyRule((jiexi) => {\\n                            Array.prototype.indexOf = function (val) {\\n                                for (var i = 0; i < this.length; i++) {\\n                                    if (this[i].url == val) return i;\\n                                }\\n                                return -1;\\n                            };\\n                            Array.prototype.remove = function (val) {\\n                                var index = this.indexOf(val);\\n                                if (index > -1) {\\n                                    this.splice(index, 1);\\n                                }\\n                            };\\n                            setFile = readFile('hiker://files/rules/cy/MyParse.json');\\n                            eval('configArray=' + setFile);\\n                            configArray.remove(jiexi);\\n                            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n                            // 关闭页面并刷新前一个页面\\n                            back(true);\\n                            return \\\"toast://删除成功~\\\";\\n                        }, jiexi),\\n                        col_type: 'text_center_1'\\n                    });\\n                    setHomeResult(d);\\n                }, jiexi),\\n                col_type: 'text_1'\\n            });\\n        });\\n    }\\n} catch (e) {\\n    showLoading('配置文件异常！！！');\\n    d.push({\\n        title: '恢复备份',\\n        desc: '如果因为一些错误，数据发生了损坏了可以尝试恢复~',\\n        url: $('#noLoading#').lazyRule(() => {\\n            setFile = readFile('hiker://files/rules/cy/MyParse_back.json');\\n            eval('configArray=' + setFile);\\n            saveFile('hiker://files/rules/cy/MyParse.json', JSON.stringify(configArray));\\n            refreshPage(true);\\n            return \\\"toast://恢复成功\\\";\\n        }),\\n        col_type: 'text_center_1'\\n    });\\n    d.push({\\n        title: '配置文件或已损坏~',\\n        desc: '点击前去检查,自行编辑文件修复',\\n        url: \\\"editFile://hiker://files/rules/cy/MyParse.json\\\",\\n        col_type: 'text_center_1'\\n    });\\n}\\nsetResult(d);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"调用路由\",\"path\":\"mulParse\",\"rule\":\"/*\\r\\n vipUrl:官网地址;返回值JSON格式的多线路视频地址\\r\\n调用接口：$.require(\\\"hiker://page/mulParse?rule=配置助手\\\").mulParse(vipUrl);\\r\\n */\\r\\n$.exports.mulParse = function (vipUrl, bfLink, jiexiName) {\\r\\n    if (vipUrl.indexOf('douban') != -1) {\\r\\n        vipUrl = vipUrl.split('?ptag=')[0]\\r\\n    }\\r\\n    log('视频原地址：' + vipUrl);\\r\\n    if (bfLink && jiexiName) {\\r\\n        var urls = bfLink;\\r\\n        var names = jiexiName;\\r\\n    } else {\\r\\n        var urls = [];\\r\\n        var names = [];\\r\\n    }\\r\\n    log(\\\"多线路解析开始\\\")\\r\\n    var list = JSON.parse(readFile(\\\"hiker://files/rules/cy/MyParse.json\\\"));\\r\\n    if (vipUrl.match(/qq/)) {\\r\\n        log('当前线路:qq')\\r\\n        list.forEach(item => {\\r\\n            if (item.tags==undefined||item.tags.match(/qq|全部/)) {\\r\\n                urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n                names.push(item.name);\\r\\n            }\\r\\n        });\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        log('当前线路:mgtv')\\r\\n        list.forEach(item => {\\r\\n            if (item.tags==undefined||item.tags.match(/mgtv|全部/)) {\\r\\n                urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n                names.push(item.name);\\r\\n            }\\r\\n        });\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        log('当前线路:bili')\\r\\n        list.forEach(item => {\\r\\n            if (item.tags==undefined||item.tags.match(/bili|全部/)) {\\r\\n                urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n                names.push(item.name);\\r\\n            }\\r\\n        });\\r\\n    } else if (vipUrl.match(/qiyi/)) {\\r\\n        log('当前线路:qiyi')\\r\\n        list.forEach(item => {\\r\\n            if (item.tags==undefined||item.tags.match(/qiyi|全部/)) {\\r\\n                urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n                names.push(item.name);\\r\\n            }\\r\\n        });\\r\\n    } else if (vipUrl.match(/youku/)) {\\r\\n        log('当前线路:youku')\\r\\n        list.forEach(item => {\\r\\n            if (item.tags==undefined||item.tags.match(/youku|全部/)) {\\r\\n                urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n                names.push(item.name);\\r\\n            }\\r\\n        });\\r\\n    } else {\\r\\n        log('当前线路:other')\\r\\n        list.forEach(item => {\\r\\n            urls.push(\\\"video://\\\" + item.url + vipUrl);\\r\\n            names.push(item.name);\\r\\n        });\\r\\n    }\\r\\n    log(`当前启用解析：${urls.length}个`)\\r\\n    var dmSwitch = request('hiker://files/rules/cy/dmSwitch.txt');\\r\\n    if (dmSwitch == 'true') {\\r\\n        return $.require(\\\"hiker://page/videoDm.js?rule=dm盒子\\\").getFor(vipUrl, urls, names);\\r\\n    } else {\\r\\n        return JSON.stringify({\\r\\n            urls: urls,\\r\\n            names: names\\r\\n        });\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"断插插件\",\"path\":\"duan\",\"rule\":\"function aytmParse(vipUrl) {\\r\\n    return $.require(\\\"hiker://page/mulParse?rule=配置助手\\\").mulParse(vipUrl);\\r\\n}\\r\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/34.png"},{"last_chapter_rule":"","title":"复活器","author":"小棉袄🌞","version":2,"type":"tool","url":"hiker://empty##","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"复活云盘汇影\",\n    url: $().lazyRule(() => {\n        confirm({\n            title: \"注意事项\",\n            content: \"注意此操作会删除云盘汇影所有数据，相当于恢复出厂设置，只用于规则无法进入的情况，请谨慎操作\",\n            confirm: $.toString(() => {\n                deleteFile(\"hiker://files/rules/icy/ali.js\");\n                deleteFile(\"hiker://files/rules/icy/hiker-icy.js\");\n                deleteFile(\"hiker://files/rules/icy/icy-ali-customer.json\");\n                deleteFile(\"hiker://files/rules/icy/icy-ali-token.json\");\n                deleteFile(\"hiker://files/rules/icy/icy-settings-ali.json\");\n                deleteFile(\"hiker://files/rules/icy/zhitiao.js\");\n                deleteFile(\"hiker://files/rules/icy/zhitiao1.js\");\n                confirm({\n                    title: \"只差最后一步\",\n                    content: \"请在软件的更多设置里面清除Cookie（点击确定按钮即可跳转），然后返回回去刷新云盘汇影页面，重新登录账号即可\",\n                    confirm: $.toString(() => {\n                        return \"hiker://settingMore\"\n                    })\n                });\n            })\n        });\n        return \"hiker://empty\";\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"跳转云盘汇影\",\n    url: \"hiker://home@云盘汇影\",\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nfunction clearRequire(name, that) {\n    that.path = getPath(\"hiker://files/rules/files/\" + name + \"/require.json\");\n    evalPrivateJS(\"IeolxpIYyFlsLbYm5cY5LudsuqUZ/r7w+qPp3lhcAz5gSDXKVBg3M4kFOPx6Nh58FdRrMc1We2hcOcGHmMDE2Bho0Wv/ymmQ5+uCKndhaswTAQPzzSeN1EDLBmJbJmee6KUQyYLJBzo0HKc3iiB9jPGqWDLohgarCebEMwmuxq1qQfRrUM7BZmiFgu0ILWOnSUKWwtA9zuH7AGM0zhoyBPC17NpOiIzBt8+xgVp0IaUtM3LMvAW9fX7co76mMCh8K9KpEpUVj2ID3j1Y5wTXIX9BOHMeUnJimwvOT1WK1dAt7RGQTgM93Y7f91ycC4FVKB4hHP44eacoub/5YI9rTsNRQgK9/EMIduPG4m+Aj/WAfqw8y+HXQ8vTJpsHuvu5TqnqkjiRA7D9/wXszx0owm3agBMs2H21zbDxvyiHhkxbVXbqiKUVjJcVn6/sQcTwPXgTKbogm5F8H1yeMQb9UkBhIAZRask2IzHk9AMOx5y80yRyq556ye+jsYze4UDKPqjeJIdhWIeS5cF3YCMstZ+FOBZvRA/Mem27xooKvotUrZ1J5uj5L+PdYuaH+OMsMJUE0D/DgD36zbC6DCYzvTu7RVLgu7n2KWRENGLLWkki6bieiD2PLzlyRfLXTxIblpRn1ZFnT25kEq0vi1HYfQ==\");\n    log(list);\n    if (list.length > 1) {\n        for (let i = 0; i < list.length; i++) {\n            deleteFile(\"file://\" + list[i].file);\n        }\n        toast(\"已清除\" + name + \"的\" + list.length + \"个依赖文件，回去刷新试试吧\");\n    } else {\n        toast(\"没有扫描到\" + name + \"的依赖文件\");\n    }\n    \n}\n\nd.push({\n    col_type: \"line_blank\"\n});\nd.push({\n    title: \"复活道长dr合集\",\n    url: $().lazyRule((clearRequire) => {\n        confirm({\n            title: \"注意事项\",\n            content: \"注意此操作会删除道长dr合集的远程依赖缓存，同时清除dr合集的设置项，点击确定按钮开始执行\",\n            confirm: $.toString((clearRequire) => {\n                clearRequire(\"道长dr合集\", this);\n                deleteFile(\"hiker://files/localStorage/StorageDz.local\");\n            }, clearRequire)\n        });\n        return \"hiker://empty\";\n    }, clearRequire),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"跳转道长dr合集\",\n    url: \"hiker://home@道长dr合集\",\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nd.push({\n    col_type: \"line_blank\"\n});\nd.push({\n    title: \"复活道德经\",\n    url: $().lazyRule((clearRequire) => {\n        confirm({\n            title: \"注意事项\",\n            content: \"注意此操作会删除道德经缓存的当前正在使用的数据\",\n            confirm: $.toString((clearRequire) => {\n                clearRequire(\"道德经\", this);\n                deleteFile(\"hiker://files/rules/dzHouse/ruleCache/cmsData.json\");\n            }, clearRequire)\n        });\n        return \"hiker://empty\";\n    }, clearRequire),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"跳转道德经\",\n    url: \"hiker://home@道德经\",\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    col_type: \"line_blank\"\n});\nd.push({\n    title: \"复活快看APP\",\n    url: $().lazyRule((clearRequire) => {\n        confirm({\n            title: \"注意事项\",\n            content: \"注意此操作会删除已下载的dex文件，重进规则会重新下载\",\n            confirm: $.toString(() => {                \n                deleteFile(\"hiker://files/cache/bidi.dex\");\n                deleteFile(\"hiker://files/cache/libp2p.so\");\n                toast(\"已处理，快试试吧\")\n                return \"hiker://home@快看影视APP\"\n            })\n        });\n        return \"hiker://empty\";\n    }, clearRequire),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"跳转快看APP\",\n    url: \"hiker://home@快看影视APP\",\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"dm盒子","author":"cy","version":23,"type":"tool","url":"hiker://empty##","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\r\nlet el = [];\r\nif (getItem(\"read_policy\") !== \"1\") {\r\n    el.push({\r\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\r\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\r\n        url: $('#noHistory#').lazyRule(() => {\r\n            setItem(\"read_policy\", \"1\")\r\n            refreshPage(false)\r\n            return \"toast://你已同意该协议\"\r\n        }),\r\n        col_type: 'text_center_1'\r\n    })\r\n}\r\n\r\nfunction single_dnpluin_newWindow_init() {\r\n    let base_search_js = 'hiker://files/rules/dzHouse/js/断插元素.js';\r\n    if (!fetch(base_search_js)) {\r\n        writeFile(base_search_js, fetch('http://hiker.nokia.press/hikerule/rulelist.json?id=1790'));\r\n    }\r\n    eval(fetch(base_search_js).replace(base64Decode(\"QGpzOg==\"), \"\"));\r\n    return init_duanPluin()\r\n}\r\nvar helpFrom = 'hiker://page/Instruction_Book.html?rule=dm盒子';\r\nvar APIFrom = 'hiker://page/API.html?rule=dm盒子';\r\ntry {\r\n    var helpFile = JSON.parse(fetch(helpFrom)).rule;\r\n    var APIFile = JSON.parse(fetch(APIFrom)).rule;\r\n    saveFile('hiker://files/cache/Instruction_Book.html', helpFile);\r\n    saveFile('hiker://files/cache/API.html', APIFile);\r\n} catch (e) {\r\n    log('拉取异常')\r\n}\r\n\r\nlet d2 = [{\r\n    title: '<font color=#20b2aa> 侠名：一个简单、纯粹的弹幕收纳盒子...</font>',\r\n    img: 'https://i0.hdslb.com/bfs/album/8f43a507859841947c71a32ecc2a1beb8bb5d022.png@Referer=',\r\n    col_type: 'avatar'\r\n}, {\r\n    img: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Finews.gtimg.com%2Fnewsapp_match%2F0%2F10683661571%2F0.jpg&refer=http%3A%2F%2Finews.gtimg.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1658369890&t=18f955fc2c73ebd658607cc608081cf5',\r\n    title: '弹幕盒子',\r\n    col_type: \"card_pic_1\",\r\n    desc: '0',\r\n    url: $().lazyRule(() => {\r\n        try {\r\n            // 清除远程弹幕通免(香免)\r\n            deleteCache('http://hiker.nokia.press/hikerule/rulelist.json?id=5283');\r\n        } catch (e) {\r\n            return \"toast://出现异常，请重试\";\r\n        }\r\n        return \"toast://公钥缓存清除成功\";\r\n    })\r\n}, {\r\n    title: \"弹幕大小:\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize,\r\n    col_type: \"text_2\",\r\n    url: \"input://////请输入一个合适的数字，默认是25.js:\" + $.toString(() => {\r\n        curSettings = JSON.parse(readFile('hiker://files/dm盒子/settings.json'));\r\n        curSettings.fontSize = input;\r\n        saveFile('hiker://files/dm盒子/settings.json', JSON.stringify(curSettings));\r\n        updateItem('弹幕大小', {\r\n            title: \"弹幕大小：\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize,\r\n        });\r\n        return \"toast://弹幕大小已修改为\" + input;\r\n    }),\r\n    extra: {\r\n        id: '弹幕大小'\r\n    }\r\n}, {\r\n    title: \"弹幕来源：\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom,\r\n    url: $('#noLoading#').lazyRule(() => {\r\n        options = ['fc官弹', 'par', 'fufeng'];\r\n        return $(options, 1).select(() => {\r\n            curSettings = JSON.parse(readFile('hiker://files/dm盒子/settings.json'));\r\n            curSettings.dmFrom = input;\r\n            saveFile('hiker://files/dm盒子/settings.json', JSON.stringify(curSettings));\r\n            updateItem('弹幕来源', {\r\n                title: \"弹幕来源：\" + JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom,\r\n            });\r\n            return \"toast://切换来源为:\" + input;\r\n        })\r\n    }),\r\n    col_type: \"text_2\",\r\n    extra: {\r\n        id: '弹幕来源'\r\n    }\r\n}, {\r\n    title: '使用手册',\r\n    col_type: 'text_3',\r\n    url: 'hiker://page/doc#immersiveTheme#',\r\n    extra: {\r\n        newWindow: false,\r\n        docType:'help'\r\n    }\r\n}, {\r\n    title: '魔断配置',\r\n    col_type: 'text_3',\r\n    url: single_dnpluin_newWindow_init(),\r\n    extra: {\r\n        newWindow: true\r\n    }\r\n}, {\r\n    title: '飞传',\r\n    col_type: 'text_3',\r\n    url: \"input://////请输入官网地址，注意不能带包括'?'在内的后面参数！(或者自行获取到飞瓜弹幕后输入飞瓜).js:\" + $.toString(() => {\r\n        function conversionFunction() {\r\n            var danmuData = JSON.parse(readFile('hiker://files/dm盒子/dm.json'));\r\n            var data = ''\r\n            for (let i = 0; i < danmuData.length; i++) {\r\n                // 弹幕发送时间\r\n                timepoint = danmuData[i].time;\r\n                // 弹幕样式\r\n                ct = 1;\r\n                // 字体大小\r\n                size = 20;\r\n                // 弹幕颜色\r\n                color = 16777215;\r\n                // 弹幕内容\r\n                content = danmuData[i].text;\r\n                if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\u0000') != -1 || content.indexOf('\\b') != -1) {\r\n                    continue;\r\n                }\r\n                tempdata = `<d p=\"${timepoint},${ct},${size},${color},0\">${content}</d>\\n`\r\n                data += tempdata;\r\n            }\r\n            // 最终待写入的弹幕数据\r\n            danmustr = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<i>\\n${data}</i>`;\r\n            // 写入弹幕\r\n            dm = 'hiker://files/dm盒子/dm.xml';\r\n            saveFile(dm, danmustr);\r\n        }\r\n        if (input.match(/youku|qiyi|ixigua|migu|sohu|pptv|le/)) {\r\n            showLoading('正在获取');\r\n            eval(JSON.parse(request('hiker://page/thirdparty?rule=dm盒子')).rule);\r\n            danmufun(input);\r\n            showLoading('正在转换');\r\n            conversionFunction()\r\n        } else if (input.match(/mgtv/)) {\r\n            showLoading('正在获取');\r\n            eval(JSON.parse(request('hiker://page/mgtv?rule=dm盒子')).rule);\r\n            MGdm(input);\r\n        } else if (input.match(/qq.com/)) {\r\n            showLoading('正在获取');\r\n            eval(JSON.parse(request('hiker://page/TX?rule=dm盒子')).rule);\r\n            TXdm(input);\r\n        } else if (input.match(/bili/)) {\r\n            showLoading('正在获取');\r\n            eval(JSON.parse(request('hiker://page/bilibili?rule=dm盒子')).rule);\r\n            bilidm(input);\r\n        } else if (input.match(/飞瓜/)) {\r\n            showLoading('正在转换');\r\n            var danmuData = JSON.parse(readFile('hiker://files/cache/fgdm.json'));\r\n            var data = ''\r\n            for (let i = 0; i < danmuData.length; i++) {\r\n                // 弹幕发送时间\r\n                timepoint = danmuData[i].time;\r\n                // 弹幕样式\r\n                ct = 1;\r\n                // 字体大小\r\n                size = 20;\r\n                // 弹幕颜色\r\n                color = 16777215;\r\n                // 弹幕内容\r\n                content = danmuData[i].text;\r\n                if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\u0000') != -1 || content.indexOf('\\b') != -1) {\r\n                    continue;\r\n                }\r\n                tempdata = `<d p=\"${timepoint},${ct},${size},${color},0\">${content}</d>\\n`\r\n                data += tempdata;\r\n            }\r\n            // 最终待写入的弹幕数据\r\n            danmustr = `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n<i>\\n${data}</i>`;\r\n            // 写入弹幕\r\n            dm = 'hiker://files/dm盒子/dm.xml';\r\n            saveFile(dm, danmustr);\r\n        }\r\n        return 'share://hiker://files/dm盒子/dm.xml';\r\n    })\r\n}, {\r\n    title: 'API文档',\r\n    desc:'调用必看',\r\n    col_type: 'text_center_1',\r\n    url: 'hiker://page/doc#immersiveTheme#',\r\n    extra: {\r\n        newWindow: false,\r\n        docType:'API'\r\n    }\r\n},{\r\n    title: '<big><b>欢迎来到dm盒子：</b></big>\\n<font color=blue><br>我是一个弹幕数据的收纳盒，为解析本身添加公钥来获取弹幕数据，让弹幕可以在海阔的规则里自由流动~支持tx、mgtv、bili等...★)^-^(★</font>',\r\n    col_type: 'rich_text',\r\n    url: $().lazyRule(() => {\r\n        return \"toast://疼，别点！\"\r\n    })\r\n}, {\r\n    title: '““””<small><font color=#20b2aa>数据资源收集于网络，海阔不提供任何资源！</font></small>',\r\n    desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除，请勿传播！</font></small>',\r\n    url: $().lazyRule(() => {\r\n        return \"toast://超过24小时了吗？那删了吧！\"\r\n    })\r\n}]\r\nif (getItem(\"read_policy\") == \"1\") {\r\n    d2.forEach(element => {\r\n        el.push(element)\r\n    });\r\n}\r\nsetResult(el);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"text_5","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"js:\n\nif (!fileExist('hiker://files/dm盒子/settings.json')) {\n\n    orgSettings = JSON.stringify({\n\n        fontSize: 25,\n\n        dmFrom: 'par'\n\n    });\n\n    saveFile('hiker://files/dm盒子/settings.json', orgSettings);\n\n}\n\n\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"TX\",\"path\":\"TX\",\"rule\":\"//官方弹幕函数| \\r\\n$.exports.TXdm = function (realurl) {\\r\\n    if (getItem('TX_from_'+MY_RULE.title, '') == realurl) {\\r\\n        return 'hiker://files/dm盒子/'+'TX_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n    try {\\r\\n        var vid;\\r\\n        // 适配PC端链接（豆瓣电视剧通用）\\r\\n        try {\\r\\n            vid = realurl.split('.html')[0].split('/').pop();\\r\\n            log(vid);\\r\\n        } catch (e) {\\r\\n            // 携带vid参数的移动端链接\\r\\n            vid = realurl.split('=')[1];\\r\\n        }\\r\\n        var data = '';\\r\\n        // 弹幕样式\\r\\n        var ct = 1;\\r\\n        // 字体大小\\r\\n        var size = JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize;\\r\\n        try {\\r\\n            danmuData = JSON.parse(fetch('https://dm.video.qq.com/barrage/base/' + vid, {\\r\\n                headers: {\\r\\n                    'User-Agent': PC_UA,\\r\\n                    \\\"Referer\\\": \\\"https://v.qq.com/\\\"\\r\\n                },\\r\\n                method: \\\"GET\\\"\\r\\n            })).segment_index;\\r\\n        } catch (e) {\\r\\n            // 聚影、豆瓣、搜狗等腾讯电影链接\\r\\n            log('vid参数错误,现将其视为cid重新获取');\\r\\n            data=request('https://pbaccess.video.qq.com/trpc.videosearch.search_cgi.http/load_playsource_list_info?pageNum=0&id='+vid+'&dataType=2&pageContext=need_async%3Dtrue&scene=2&platform=2&appId=10718&site=qq&vappid=34382579&vsecret=e496b057758aeb04b3a2d623c952a1c47e04ffb0a01e19cf&g_tk=&g_vstk=&g_actk=');\\r\\n            vid=JSON.parse(data).data.normalList.itemList[0].videoInfo.firstBlockSites[0].episodeInfoList[0].id;\\r\\n            log('真实vid:'+vid);\\r\\n            danmuData = JSON.parse(fetch('https://dm.video.qq.com/barrage/base/' + vid, {\\r\\n                headers: {\\r\\n                    'User-Agent': PC_UA,\\r\\n                    \\\"Referer\\\": \\\"https://v.qq.com/\\\"\\r\\n                },\\r\\n                method: \\\"GET\\\"\\r\\n            })).segment_index;            \\r\\n        }\\r\\n        url = [];\\r\\n        for (var prop in danmuData) {\\r\\n            url.push({\\r\\n                url: 'https://dm.video.qq.com/barrage/segment/' + vid + '/' + danmuData[prop].segment_name\\r\\n            });\\r\\n        }\\r\\n        batchFetch(url).map(function (a) {\\r\\n            danmuData = JSON.parse(a).barrage_list;\\r\\n            // 弹幕为空\\r\\n            if (JSON.stringify(danmuData) === '[]') {\\r\\n                log('此页为空');\\r\\n            } else {\\r\\n                try {\\r\\n                    for (let i = 0; i < danmuData.length; i++) {\\r\\n                        // 弹幕发送时间\\r\\n                        timepoint = danmuData[i].time_offset / 1000;\\r\\n                        // 弹幕颜色(默认)\\r\\n                        color = 16777215;\\r\\n                        if (danmuData[i].content_style != '') {\\r\\n                            colorHex = danmuData[i].content_style.match(/\\\\[\\\"[\\\\S\\\\s]+(?=\\\",\\\")/)[0].replace('[\\\"', '');\\r\\n                            color = parseInt(colorHex, 16);\\r\\n                        }\\r\\n                        // 弹幕内容\\r\\n                        content = danmuData[i].content;\\r\\n                        if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\\\u0000') != -1 || content.indexOf('\\\\b') != -1) {\\r\\n                            continue;\\r\\n                        }\\r\\n                        tempdata = `<d p=\\\"${Math.round(timepoint)},${ct},${size},${color},0\\\">${content}</d>\\\\n`\\r\\n                        data += tempdata;\\r\\n                    }\\r\\n                } catch (e) {\\r\\n                    log('不知缘由的异常，直接跳过')\\r\\n                }\\r\\n            }\\r\\n        });\\r\\n        // 最终待写入的弹幕数据\\r\\n        danmustr = `<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\\\n<i>\\\\n${data}</i>`;\\r\\n        // 写入弹幕\\r\\n        dm = 'hiker://files/dm盒子/'+'TX_from_'+MY_RULE.title+'.xml';\\r\\n        saveFile(dm, danmustr);\\r\\n        setItem('TX_from_'+MY_RULE.title, realurl);\\r\\n        putVar('dm_share',dm); \\r\\n        return dm;\\r\\n    } catch (e) {\\r\\n        log('出错了')\\r\\n        showLoading('天呐撸，获取失败了呢！');\\r\\n        return 'hiker://files/dm盒子/'+'TX_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"fc文件🥇\",\"path\":\"fc\",\"rule\":\"//fc弹幕系统官弹下载函数|<——网络接口，且用且珍惜，只有小艺和优酷（并不稳定）用到\\r\\n$.exports.fcdm = function (realurl) {\\r\\n    if (getItem('fc_from_' + MY_RULE.title, '') == realurl) {\\r\\n        return 'hiker://files/dm盒子/' + 'fc_from_' + MY_RULE.title + '.xml';\\r\\n    }\\r\\n    try {\\r\\n        file = \\\"https://fc.home999.cc/?url=\\\" + realurl\\r\\n        dm = 'hiker://files/dm盒子/' + 'fc_from_' + MY_RULE.title + '.xml';\\r\\n        var data = '';\\r\\n        var size = JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize;\\r\\n        danmuData = fetch(file, {\\r\\n            timeout: 25000,\\r\\n            headers: {\\r\\n                \\\"User-Agent\\\": PC_UA,\\r\\n                \\\"Referer\\\": \\\"https://fc.home999.cc/\\\",\\r\\n            },\\r\\n            method: \\\"GET\\\"\\r\\n        })\\r\\n        if (danmuData.match(/不支持的视频网址/) || danmuData == '') {\\r\\n            log('获取弹幕失败');\\r\\n            return dm;\\r\\n        }\\r\\n        try {\\r\\n            td=pdfa(danmuData,'i&&d');\\r\\n            for (let i = 0; i < td.length; i++) {\\r\\n                // 弹幕发送时间\\r\\n                timepoint = td[i].match(/[0-9]+/g)[0];\\r\\n                ct = td[i].match(/[0-9]+/g)[1];\\r\\n                color = td[i].match(/[0-9]+/g)[3];\\r\\n                // 弹幕内容\\r\\n                content = pdfh(td[i],'d&&Text');\\r\\n                if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\\\u0000') != -1 || content.indexOf('\\\\b') != -1) {\\r\\n                    continue;\\r\\n                }\\r\\n                tempdata = `<d p=\\\"${Math.round(timepoint)},${ct},${size},${color},0\\\">${content}</d>\\\\n`\\r\\n                data += tempdata;\\r\\n            }\\r\\n            danmustr = `<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\\\n<i>\\\\n${data}</i>`;\\r\\n        } catch (e) {\\r\\n            log('转换失败');\\r\\n            return 'hiker://files/dm盒子/dm.xml';\\r\\n        }\\r\\n        log('或许成功了~');\\r\\n        saveFile(dm, danmustr);\\r\\n        setItem('fc_from_' + MY_RULE.title, realurl);\\r\\n        putVar('dm_share', dm);\\r\\n        return dm;\\r\\n    } catch (e) {\\r\\n        log('弹幕文件解析失败');\\r\\n        return 'hiker://files/dm盒子/' + 'fc_from_' + MY_RULE.title + '.xml';\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"哔哩\",\"path\":\"bilibili\",\"rule\":\"// 官方API\\r\\n$.exports.bilidm = function (realurl) {\\r\\n    if (getItem('bili_from_'+MY_RULE.title, '') == realurl) {\\r\\n        return 'hiker://files/dm盒子/'+'bili_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n    try {\\r\\n        var epid, data, cid;\\r\\n        if (realurl.match(/ep/)) {\\r\\n            epid = realurl.split('ep')[1].split('?')[0];\\r\\n            fetch_url = \\\"https://api.bilibili.com/pgc/view/web/season?ep_id=\\\" + epid;\\r\\n        } else if (realurl.match(/av/)) {\\r\\n            // aid最小单位-单集\\r\\n            aid = realurl.split('av')[1].split('?')[0];\\r\\n            log('aid:' + aid);\\r\\n            fetch_url = \\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid;\\r\\n            cid = JSON.parse(fetch(fetch_url, {\\r\\n                \\\"headers\\\": {\\r\\n                    \\\"User-Agent\\\": PC_UA\\r\\n                },\\r\\n                \\\"referrer\\\": realurl,\\r\\n                \\\"method\\\": \\\"GET\\\",\\r\\n            })).data.cid;\\r\\n            file = 'https://comment.bilibili.com/' + cid + '.xml';\\r\\n            dm = 'hiker://files/dm盒子/'+'bili_from_'+MY_RULE.title+'.xml';\\r\\n            downloadFile(file, dm);\\r\\n            setItem('bili_from_'+MY_RULE.title, realurl);\\r\\n            putVar('dm_share',dm);\\r\\n            return dm;\\r\\n        } else if (realurl.match(/ss|md/)) {\\r\\n            if (realurl.match(/ss/)) {\\r\\n                // 采集到的ss链接多半就是电影，season_id也能代表单集对其处理\\r\\n                season_id = realurl.split('ss')[1].split('?')[0];\\r\\n                log('season_id:' + season_id);\\r\\n            } else {\\r\\n                // 由番剧md查询season_id，再经同样逻辑处理（当做单集处理-未验证）\\r\\n                md = realurl.split('md')[1].split('?')[0];\\r\\n                log('md:' + md);\\r\\n                fetch_url = \\\"https://api.bilibili.com/pgc/review/user?media_id=\\\" + epid;\\r\\n                season_id = JSON.parse(fetch(fetch_url, {\\r\\n                    \\\"headers\\\": {\\r\\n                        \\\"User-Agent\\\": PC_UA\\r\\n                    },\\r\\n                    \\\"referrer\\\": realurl,\\r\\n                    \\\"method\\\": \\\"GET\\\",\\r\\n                })).result.media.season_id;\\r\\n            }\\r\\n            fetch_url = 'https://api.bilibili.com/pgc/web/season/section?season_id=' + season_id;\\r\\n            cid = JSON.parse(fetch(fetch_url, {\\r\\n                \\\"headers\\\": {\\r\\n                    \\\"User-Agent\\\": PC_UA\\r\\n                },\\r\\n                \\\"referrer\\\": realurl,\\r\\n                \\\"method\\\": \\\"GET\\\",\\r\\n            })).result.main_section.episodes[0].cid\\r\\n            file = 'https://comment.bilibili.com/' + cid + '.xml';\\r\\n            dm = 'hiker://files/dm盒子/'+'bili_from_'+MY_RULE.title+'.xml';\\r\\n            downloadFile(file, dm);\\r\\n            setItem('bili_from_'+MY_RULE.title, realurl);\\r\\n            putVar('dm_share',dm); \\r\\n            return dm;\\r\\n        }\\r\\n        data = JSON.parse(fetch(fetch_url, {\\r\\n            \\\"headers\\\": {\\r\\n                \\\"User-Agent\\\": PC_UA\\r\\n            },\\r\\n            \\\"referrer\\\": realurl,\\r\\n            \\\"method\\\": \\\"GET\\\",\\r\\n        }));\\r\\n        try {\\r\\n            data.result.episodes.forEach(ep => {\\r\\n                if (ep.link == realurl) {\\r\\n                    cid = (ep.cid).toString();\\r\\n                    //break;\\r\\n                    throw Error()\\r\\n                }\\r\\n            });\\r\\n        } catch (e) {\\r\\n            file = 'https://comment.bilibili.com/' + cid + '.xml';\\r\\n            dm = 'hiker://files/dm盒子/'+'bili_from_'+MY_RULE.title+'.xml';\\r\\n            downloadFile(file, dm)\\r\\n            setItem('bili_from_'+MY_RULE.title, realurl);\\r\\n            putVar('dm_share',dm); \\r\\n        }\\r\\n        return dm;\\r\\n    } catch (e) {\\r\\n        log('出错了')\\r\\n        showLoading('天呐撸，获取失败了呢！');\\r\\n        return 'hiker://files/dm盒子/'+'bili_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"Instruction_Book.html\",\"path\":\"Instruction_Book.html\",\"rule\":\"<!doctype html>\\n<html>\\n<head>\\n<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>\\n\\n<style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:\\\"Lucida Console\\\",Consolas,\\\"Courier\\\",monospace; --title-bar-height:20px; }\\n.mac-os-11 { --title-bar-height:28px; }\\nhtml { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }\\nbody { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }\\niframe { margin: auto; }\\na.url { word-break: break-all; }\\na:active, a:hover { outline: 0px; }\\n.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }\\n#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }\\n#write.first-line-indent p { text-indent: 2em; }\\n#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }\\n#write.first-line-indent li { margin-left: 2em; }\\n.for-image #write { padding-left: 8px; padding-right: 8px; }\\nbody.typora-export { padding-left: 30px; padding-right: 30px; }\\n.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }\\n.typora-export .task-list-item input { pointer-events: none; }\\n@media screen and (max-width: 500px) {\\n  body.typora-export { padding-left: 0px; padding-right: 0px; }\\n  #write { padding-left: 20px; padding-right: 20px; }\\n  .CodeMirror-sizer { margin-left: 0px !important; }\\n  .CodeMirror-gutters { display: none !important; }\\n}\\n#write li > figure:last-child { margin-bottom: 0.5rem; }\\n#write ol, #write ul { position: relative; }\\nimg { max-width: 100%; vertical-align: middle; image-orientation: from-image; }\\nbutton, input, select, textarea { color: inherit; font: inherit; }\\ninput[type=\\\"checkbox\\\"], input[type=\\\"radio\\\"] { line-height: normal; padding: 0px; }\\n*, ::after, ::before { box-sizing: border-box; }\\n#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }\\n#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }\\np { line-height: inherit; }\\nh1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }\\np { orphans: 4; }\\nh1 { font-size: 2rem; }\\nh2 { font-size: 1.8rem; }\\nh3 { font-size: 1.6rem; }\\nh4 { font-size: 1.4rem; }\\nh5 { font-size: 1.2rem; }\\nh6 { font-size: 1rem; }\\n.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }\\n.hidden { display: none; }\\n.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }\\na { cursor: pointer; }\\nsup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }\\nsup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }\\n#write input[type=\\\"checkbox\\\"] { cursor: pointer; width: inherit; height: inherit; }\\nfigure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }\\nfigure > table { margin: 0px; }\\ntr { break-inside: avoid; break-after: auto; }\\nthead { display: table-header-group; }\\ntable { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }\\ntable.md-table td { min-width: 32px; }\\n.CodeMirror-gutters { border-right: 0px; background-color: inherit; }\\n.CodeMirror-linenumber { user-select: none; }\\n.CodeMirror { text-align: left; }\\n.CodeMirror-placeholder { opacity: 0.3; }\\n.CodeMirror pre { padding: 0px 4px; }\\n.CodeMirror-lines { padding: 0px; }\\ndiv.hr:focus { cursor: none; }\\n#write pre { white-space: pre-wrap; }\\n#write.fences-no-line-wrapping pre { white-space: pre; }\\n#write pre.ty-contain-cm { white-space: normal; }\\n.CodeMirror-gutters { margin-right: 4px; }\\n.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }\\n.md-fences-adv-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }\\n#write .md-fences.mock-cm { white-space: pre-wrap; }\\n.md-fences.md-fences-with-lineno { padding-left: 0px; }\\n#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }\\n.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }\\n.CodeMirror-line, twitterwidget { break-inside: avoid; }\\n.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }\\n.footnotes + .footnotes { margin-top: 0px; }\\n.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }\\nli div { padding-top: 0px; }\\nblockquote { margin: 1rem 0px; }\\nli .mathjax-block, li p { margin: 0.5rem 0px; }\\nli blockquote { margin: 1rem 0px; }\\nli { margin: 0px; position: relative; }\\nblockquote > :last-child { margin-bottom: 0px; }\\nblockquote > :first-child, li > :first-child { margin-top: 0px; }\\n.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }\\n#write .footnote-line { white-space: pre-wrap; }\\n@media print {\\n  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }\\n  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }\\n  .typora-export * { -webkit-print-color-adjust: exact; }\\n  .typora-export #write { break-after: avoid; }\\n  .typora-export #write::after { height: 0px; }\\n  .is-mac table { break-inside: avoid; }\\n  .typora-export-show-outline .typora-export-sidebar { display: none; }\\n}\\n.footnote-line { margin-top: 0.714em; font-size: 0.7em; }\\na img, img a { cursor: pointer; }\\npre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }\\np > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }\\n#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }\\np > .md-image:only-child { display: inline-block; width: 100%; }\\n#write .MathJax_Display { margin: 0.8em 0px 0px; }\\n.md-math-block { width: 100%; }\\n.md-math-block:not(:empty)::after { display: none; }\\n.MathJax_ref { fill: currentcolor; }\\n[contenteditable=\\\"true\\\"]:active, [contenteditable=\\\"true\\\"]:focus, [contenteditable=\\\"false\\\"]:active, [contenteditable=\\\"false\\\"]:focus { outline: 0px; box-shadow: none; }\\n.md-task-list-item { position: relative; list-style-type: none; }\\n.task-list-item.md-task-list-item { padding-left: 0px; }\\n.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }\\n.math { font-size: 1rem; }\\n.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }\\n.md-toc-content { position: relative; margin-left: 0px; }\\n.md-toc-content::after, .md-toc::after { display: none; }\\n.md-toc-item { display: block; color: rgb(65, 131, 196); }\\n.md-toc-item a { text-decoration: none; }\\n.md-toc-inner:hover { text-decoration: underline; }\\n.md-toc-inner { display: inline-block; cursor: pointer; }\\n.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }\\n.md-toc-h2 .md-toc-inner { margin-left: 2em; }\\n.md-toc-h3 .md-toc-inner { margin-left: 4em; }\\n.md-toc-h4 .md-toc-inner { margin-left: 6em; }\\n.md-toc-h5 .md-toc-inner { margin-left: 8em; }\\n.md-toc-h6 .md-toc-inner { margin-left: 10em; }\\n@media screen and (max-width: 48em) {\\n  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }\\n  .md-toc-h4 .md-toc-inner { margin-left: 5em; }\\n  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }\\n  .md-toc-h6 .md-toc-inner { margin-left: 8em; }\\n}\\na.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }\\n.footnote-line a:not(.reversefootnote) { color: inherit; }\\n.md-attr { display: none; }\\n.md-fn-count::after { content: \\\".\\\"; }\\ncode, pre, samp, tt { font-family: var(--monospace); }\\nkbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }\\n.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); }\\ncode { text-align: left; vertical-align: initial; }\\na.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }\\n.os-windows.monocolor-emoji .md-emoji { font-family: \\\"Segoe UI Symbol\\\", sans-serif; }\\n.md-diagram-panel > svg { max-width: 100%; }\\n[lang=\\\"flow\\\"] svg, [lang=\\\"mermaid\\\"] svg { max-width: 100%; height: auto; }\\n[lang=\\\"mermaid\\\"] .node text { font-size: 1rem; }\\ntable tr th { border-bottom: 0px; }\\nvideo { max-width: 100%; display: block; margin: 0px auto; }\\niframe { max-width: 100%; width: 100%; border: none; }\\n.highlight td, .highlight tr { border: 0px; }\\nmark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }\\n.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }\\n.md-expand mark .md-meta { opacity: 0.3 !important; }\\nmark .md-meta { color: rgb(0, 0, 0); }\\n@media print {\\n  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }\\n}\\n.md-diagram-panel .messageText { stroke: none !important; }\\n.md-diagram-panel .start-state { fill: var(--node-fill); }\\n.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }\\n.md-fences.md-fences-math { font-size: 1em; }\\n.md-fences-advanced:not(.md-focus) { padding: 0px; white-space: nowrap; border: 0px; }\\n.md-fences-advanced:not(.md-focus) { background: inherit; }\\n.typora-export-show-outline .typora-export-content { max-width: 1440px; margin: auto; display: flex; flex-direction: row; }\\n.typora-export-sidebar { width: 300px; font-size: 0.8rem; margin-top: 80px; margin-right: 18px; }\\n.typora-export-show-outline #write { --webkit-flex:2; flex: 2 1 0%; }\\n.typora-export-sidebar .outline-content { position: fixed; top: 0px; max-height: 100%; overflow: hidden auto; padding-bottom: 30px; padding-top: 60px; width: 300px; }\\n@media screen and (max-width: 1024px) {\\n  .typora-export-sidebar, .typora-export-sidebar .outline-content { width: 240px; }\\n}\\n@media screen and (max-width: 800px) {\\n  .typora-export-sidebar { display: none; }\\n}\\n.outline-content li, .outline-content ul { margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; list-style: none; }\\n.outline-content ul { margin-top: 0px; margin-bottom: 0px; }\\n.outline-content strong { font-weight: 400; }\\n.outline-expander { width: 1rem; height: 1.42857rem; position: relative; display: table-cell; vertical-align: middle; cursor: pointer; padding-left: 4px; }\\n.outline-expander::before { content: \\\"\\\"; position: relative; font-family: Ionicons; display: inline-block; font-size: 8px; vertical-align: middle; }\\n.outline-item { padding-top: 3px; padding-bottom: 3px; cursor: pointer; }\\n.outline-expander:hover::before { content: \\\"\\\"; }\\n.outline-h1 > .outline-item { padding-left: 0px; }\\n.outline-h2 > .outline-item { padding-left: 1em; }\\n.outline-h3 > .outline-item { padding-left: 2em; }\\n.outline-h4 > .outline-item { padding-left: 3em; }\\n.outline-h5 > .outline-item { padding-left: 4em; }\\n.outline-h6 > .outline-item { padding-left: 5em; }\\n.outline-label { cursor: pointer; display: table-cell; vertical-align: middle; text-decoration: none; color: inherit; }\\n.outline-label:hover { text-decoration: underline; }\\n.outline-item:hover { border-color: rgb(245, 245, 245); background-color: var(--item-hover-bg-color); }\\n.outline-item:hover { margin-left: -28px; margin-right: -28px; border-left: 28px solid transparent; border-right: 28px solid transparent; }\\n.outline-item-single .outline-expander::before, .outline-item-single .outline-expander:hover::before { display: none; }\\n.outline-item-open > .outline-item > .outline-expander::before { content: \\\"\\\"; }\\n.outline-children { display: none; }\\n.info-panel-tab-wrapper { display: none; }\\n.outline-item-open > .outline-children { display: block; }\\n.typora-export .outline-item { padding-top: 1px; padding-bottom: 1px; }\\n.typora-export .outline-item:hover { margin-right: -8px; border-right: 8px solid transparent; }\\n.typora-export .outline-expander::before { content: \\\"+\\\"; font-family: inherit; top: -1px; }\\n.typora-export .outline-expander:hover::before, .typora-export .outline-item-open > .outline-item > .outline-expander::before { content: \\\"−\\\"; }\\n.typora-export-collapse-outline .outline-children { display: none; }\\n.typora-export-collapse-outline .outline-item-open > .outline-children, .typora-export-no-collapse-outline .outline-children { display: block; }\\n.typora-export-no-collapse-outline .outline-expander::before { content: \\\"\\\" !important; }\\n.typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; }\\n.md-inline-math-container mjx-container { zoom: 0.95; }\\n\\n\\n.CodeMirror { height: auto; }\\n.CodeMirror.cm-s-inner { background: inherit; }\\n.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }\\n.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }\\n.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }\\n.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }\\n.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }\\n.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }\\n.cm-s-inner .cm-number { color: rgb(17, 102, 68); }\\n.cm-s-inner .cm-def { color: rgb(0, 0, 255); }\\n.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }\\n.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }\\n.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }\\n.cm-s-inner .cm-string { color: rgb(170, 17, 17); }\\n.cm-s-inner .cm-property { color: rgb(0, 0, 0); }\\n.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }\\n.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }\\n.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }\\n.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }\\n.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }\\n.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }\\n.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }\\n.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }\\n.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }\\n.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }\\n.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }\\n.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }\\n.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }\\n.cm-negative { color: rgb(221, 68, 68); }\\n.cm-positive { color: rgb(34, 153, 34); }\\n.cm-header, .cm-strong { font-weight: 700; }\\n.cm-del { text-decoration: line-through; }\\n.cm-em { font-style: italic; }\\n.cm-link { text-decoration: underline; }\\n.cm-error { color: red; }\\n.cm-invalidchar { color: red; }\\n.cm-constant { color: rgb(38, 139, 210); }\\n.cm-defined { color: rgb(181, 137, 0); }\\ndiv.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }\\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }\\n.cm-s-inner .CodeMirror-activeline-background { background: inherit; }\\n.CodeMirror { position: relative; overflow: hidden; }\\n.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }\\n.CodeMirror-sizer { position: relative; }\\n.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; outline: 0px; }\\n.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }\\n.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: auto hidden; }\\n.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }\\n.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }\\n.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 10px; z-index: 3; overflow-y: hidden; }\\n.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }\\n.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }\\n.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }\\n.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }\\n.CodeMirror-lines { cursor: text; }\\n.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }\\n.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }\\n.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }\\n.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }\\n.CodeMirror-linebackground { position: absolute; inset: 0px; z-index: 0; }\\n.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }\\n.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }\\n.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }\\n.CodeMirror-measure pre { position: static; }\\n.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }\\n.CodeMirror div.CodeMirror-cursor { visibility: hidden; }\\n.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }\\n.cm-searching { background: rgba(255, 255, 0, 0.4); }\\nspan.cm-underlined { text-decoration: underline; }\\nspan.cm-strikethrough { text-decoration: line-through; }\\n.cm-tw-syntaxerror { color: rgb(255, 255, 255); background-color: rgb(153, 0, 0); }\\n.cm-tw-deleted { text-decoration: line-through; }\\n.cm-tw-header5 { font-weight: 700; }\\n.cm-tw-listitem:first-child { padding-left: 10px; }\\n.cm-tw-box { border-style: solid; border-right-width: 1px; border-bottom-width: 1px; border-left-width: 1px; border-color: inherit; border-top-width: 0px !important; }\\n.cm-tw-underline { text-decoration: underline; }\\n@media print {\\n  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }\\n}\\n\\n\\n:root {\\n    --primary-color: #37352f;\\n    --bg-color: #ffffff;\\n    --bg-color-dark: #f7f6f3;\\n    --dark-trait: #e9e9e7;\\n    --light-trait-100: #ecedec;\\n    --light-trait-200: #c70000;\\n    --light-trait-300: #37352f;\\n    --light-trait-400: #f7f6f3;\\n    --text-color: #37352f;\\n    --text-color-secondary: #73726e;\\n    --text-highlight-color: #fff;\\n    --text-highlight-bg: rgba(var(--primary-color-rgb), 0.3);\\n    --select-text-bg-color: #c0e5f4;\\n\\t--search-select-text-color:#448361;\\n    --search-select-bg-color: #edf3ec;\\n    --code-color: #9a6e3a;\\n    --border-radius: 4px;\\n    --font-size: 16px;\\n    --font-family: -apple-system, BlinkMacSystemFont, \\\"Segoe UI\\\", Helvetica, \\\"Apple Color Emoji\\\", Arial, sans-serif, \\\"Segoe UI Emoji\\\", \\\"Segoe UI Symbol\\\";\\n    --monospace: 'SF Mono Medium', 'Fira Code', 'Cousine', 'Consolas', monospace;\\n    --heading-char-color: var(--light-trait-400);\\n    --color-popover-bg-color: var(--text-color);\\n    --rawblock-edit-panel-bd: var(--bg-color-dark);\\n    --control-text-color: #72706b;\\n    --meta-content-color: var(--primary-color);\\n    --primary-btn-border-color: var(--primary-color);\\n    --side-bar-bg-color: var(--bg-color-dark);\\n    --item-hover-bg-color: #e8e7e4;\\n    --active-file-bg-color: #e8e7e4;\\n    --active-file-border-color: var(--bg-color);\\n    --window-border: 1px solid var(--bg-color);\\n    --focus-ring-color: transparent;\\n}\\n\\nhtml {\\n    font-size: var(--font-size);\\n}\\n\\nbody {\\n    font-family: var(--font-family);\\n    -webkit-font-smoothing: antialiased;\\n    color: var(--text-color);\\n    line-height: 1.6;\\n}\\n\\ncode {\\n    color: #ec5757;\\n    background-color: #eeedeb;\\n    padding: 0 2px 0 2px;\\n}\\n\\n#write {\\n    max-width: 860px;\\n    margin: 0 auto;\\n    padding: 30px;\\n    padding-bottom: 100px;\\n}\\n\\n@media only screen and (min-width: 1400px) {\\n    #write {\\n        max-width: 1024px;\\n    }\\n}\\n\\n@media only screen and (min-width: 1800px) {\\n    #write {\\n        max-width: 1200px;\\n    }\\n}\\n\\n#write>ul:first-child, #write>ol:first-child {\\n    margin-top: 30px;\\n}\\n\\na {\\n    color: var(--primary-color);\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n    position: relative;\\n    margin-top: 2rem;\\n    margin-bottom: 1rem;\\n    font-weight: 700;\\n    line-height: 1.4;\\n    cursor: text;\\n}\\n\\nh1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {\\n    text-decoration: none;\\n}\\n\\nh1 tt, h1 code, h2 tt, h2 code, h3 tt, h3 code, h4 tt, h4 code, h5 tt, h5 code, h6 tt, h6 code {\\n    font-size: inherit;\\n}\\n\\nh1 {\\n    padding-bottom: 0.3em;\\n    font-size: 2.2em;\\n    line-height: 1.3;\\n}\\n\\nh2 {\\n    padding-bottom: 0.3em;\\n    font-size: 1.75em;\\n    line-height: 1.225;\\n}\\n\\nh3 {\\n    font-size: 1.4em;\\n    line-height: 1.43;\\n}\\n\\nh4 {\\n    font-size: 1.2em;\\n}\\n\\nh5 {\\n    font-size: 1em;\\n}\\n\\nh6 {\\n    font-size: 1em;\\n    color: var(--light-trait-300);\\n}\\n\\np, blockquote, ul, ol, dl, table {\\n    margin: 0.8em 0;\\n}\\n\\nli>ol, li>ul {\\n    margin: 0 0;\\n}\\n\\nhr {\\n    background-color: var(--light-trait-100);\\n    height: 1.5px;\\n    border: none\\n}\\n\\na,\\n.md-def-url {\\n    color: var(--text-color);\\n    text-decoration: none;\\n    border-bottom:0.05em solid;\\n    border-color: #37352f;\\n    opacity:0.6;\\n    transition: all .1s ease-in; \\n}\\n\\na:hover {\\n    text-decoration: none;\\n    opacity:1;\\n}\\n\\nsup.md-footnote {\\n    background-color: var(--light-trait-400);\\n    color: #888884;\\n}\\n\\nli p.first {\\n    display: inline-block;\\n}\\n\\nul, ol {\\n    padding-left: 30px;\\n}\\n\\nul:first-child, ol:first-child {\\n    margin-top: 0.35%;\\n}\\n\\nul:last-child, ol:last-child {\\n    margin-bottom: 0;\\n}\\n\\nmark, .ty-file-search-match-text, .md-search-hit {\\n    background: #fdebec;\\n\\tcolor: #d44c47;\\n}\\n\\nmark {\\n    border-radius: 4px;\\n    color: #402c1b;\\n    font-weight: inherit;\\n    background-color: #fdecc8;\\n    padding-left: 4px;\\n    padding-right: 4px;\\n    padding-top: 2px;\\n    padding-bottom: 2px;\\n    margin-left: 2px;\\n    margin-right: 2px;\\n}\\n\\n.md-search-hit * {\\n    color: var(--search-select-text-color);\\n}\\n\\n/* Search highlight */\\n.cm-search-hit.CodeMirror-selectedtext, .md-search-hit.md-search-select, .md-search-select {\\n    outline: 0px solid var(--search-select-text-color);\\n}\\n\\n.outline-item.select, .ty-search-item-line.select, .ty-search-item.select {\\n    outline-width: 2px;\\n}\\n\\n.outline-item.select {\\n    outline-offset: 0px;\\n}\\n\\nblockquote {\\n    margin-left: 1.75px;\\n    margin-right: 0px;\\n    border-left: 4px solid var(--text-color);\\n    padding: 10px 14px 7px 22px;\\n}\\n\\nblockquote blockquote {\\n    padding-right: 0;\\n}\\n\\ntable {\\n    padding: 0;\\n    word-break: initial;\\n}\\n\\ntable tr {\\n    border-top: 1px solid var(--dark-trait);\\n    margin: 0;\\n    padding: 0;\\n}\\n\\ntable tr th {\\n    font-weight: bold;\\n    border: 1px solid var(--dark-trait);\\n    border-bottom: 0;\\n    margin: 0;\\n    padding: 6px 13px;\\n}\\n\\ntable tr td {\\n    border: 1px solid var(--dark-trait);\\n    margin: 0;\\n    padding: 6px 13px;\\n}\\n\\ntable tr th:first-child, table tr td:first-child {\\n    margin-top: 0;\\n}\\n\\ntable tr th:last-child, table tr td:last-child {\\n    margin-bottom: 0;\\n}\\n\\n\\nkbd {\\n    font-size: 0.875rem;\\n    background: var(--bg-color-dark);\\n    border: 1px solid var(--dark-trait);\\n    box-shadow: 0 2px 0 var(--dark-trait);\\n    color: var(--text-color-secondary);\\n}\\n\\n.md-fences, code, tt {\\n    border: none;\\n    background-color: #f7f6f3;\\n    border-radius: var(--border-radius);\\n    padding: 2px 4px 0px 4px;\\n    font-size: 0.975em;\\n    font-weight: medium;\\n    font-family: var(--monospace)\\n}\\n.md-fences {\\n    margin-bottom: 15px;\\n    margin-top: 15px;\\n    padding-top: 8px;\\n    padding-bottom: 6px;\\n}\\n\\n#write pre.md-meta-block {\\n    padding: 1rem;\\n    font-size: 85%;\\n    line-height: 1.45;\\n    background-color: var(--bg-color-dark);\\n    border: 0;\\n    border-radius: var(--border-radius);\\n    color: var(--text-color-secondary);\\n    margin-top: 0 !important;\\n}\\n\\n#write .mathjax-block .md-rawblock-tooltip {\\n    border-top-left-radius: var(--border-radius);\\n    border-top-right-radius: var(--border-radius);\\n}\\n\\n#write .mathjax-block .md-math-container {\\n    border-top-left-radius: var(--border-radius);\\n    border-bottom-right-radius: var(--border-radius);\\n    border-bottom-left-radius: var(--border-radius);\\n}\\n\\n#write .md-mathblock-panel .md-rawblock-control:first-of-type {\\n    border-top-left-radius: var(--border-radius);\\n}\\n\\n.md-mathjax-midline {\\n    background-color: var(--bg-color);\\n    color: var(--text-color);\\n}\\n\\n.md-inline-math script {\\n    color: var(--code-color);\\n}\\n\\n.CodeMirror-lines {\\n    padding-left: 4px;\\n}\\n\\n.code-tooltip {\\n    box-shadow: none;\\n    border-radius: var(--border-radius);\\n}\\n\\n#write .code-tooltip {\\n    bottom: initial;\\n    top: 100%;\\n    left: initial;\\n    right: -1px;\\n    background: var(--bg-color-dark);\\n    border: 1px solid var(--dark-trait);\\n    border-top-left-radius: 0;\\n    border-top-right-radius: 0;\\n    border-top: 0;\\n    font-family: var(--monospace);\\n}\\n\\n#write .md-mathblock-panel .code-tooltip {\\n    right: 0;\\n    border: none;\\n}\\n\\n/* TODO */\\n#write .md-task-list-item>input {\\n    -webkit-appearance: initial;\\n    display: inline-block;\\n    text-align: center;\\n    vertical-align: middle;\\n    position: absolute;\\n    border: 1px solid var(--text-color);\\n    /* border-radius: 100%; */\\n    margin-left: -1.45rem;\\n    height: 0.95rem;\\n    width: 0.95rem;\\n    transition: all 0.35s;\\n}\\n\\n#write .md-task-list-item>input:focus {\\n    outline: none;\\n    box-shadow: none;\\n}\\n\\n#write .md-task-list-item>input[checked] {\\n    background: #2eaadc;\\n    border: 1px solid #2eaadc;\\n    text-decoration: line-through;\\n}\\n\\n#write .md-task-list-item>input[checked]::before {\\n    display: inline-block;\\n    vertical-align: middle;\\n    content: '✓';\\n    position: absolute;\\n    margin-top: 0.05rem;\\n    top: 0;\\n    left: 0;\\n    height: 100%;\\n    width: 100%;\\n    text-align: absolute;\\n    color: var(--bg-color);\\n    font-size: 0.75em;\\n    font-weight: 760;\\n}\\n\\n#write .md-task-list-item>input[checked]::after {\\n    text-decoration: line-through;\\n}\\n\\n/* TODO */\\n.md-image>.md-meta {\\n    border-radius: var(--border-radius);\\n    padding: 2px 0px 0px 4px;\\n    font-size: 0.9em;\\n    color: inherit;\\n}\\n\\n.md-toc {\\n    margin-top: 20px;\\n    padding-bottom: 20px;\\n}\\n\\n/* Source mode */\\n.CodeMirror.cm-s-typora-default *, .cm-s-typora-default * {\\n    background: inherit;\\n    color: var(--text-color);\\n    font-family: var(--monospace);\\n    font-size: var(--font-size) !important;\\n    font-style: normal;\\n    font-weight: medium;\\n}\\n\\n.CodeMirror.cm-s-typora-default div.CodeMirror-cursor {\\n    border-left: 2px solid var(--text-color);\\n}\\n\\n.sidebar-tabs {\\n    border-bottom: none;\\n}\\n\\n.outline-expander {\\n    width: 1.5rem;\\n    vertical-align: initial;\\n}\\n\\n.outline-expander:before, .outline-expander:hover:before, .outline-item-open>.outline-item>.outline-expander:before, .outline-item-open>.outline-item>.outline-expander:hover:before {\\n    content: \\\"\\\\f125\\\";\\n    transition: transform 125ms ease-in-out;\\n}\\n\\n.outline-item-open>.outline-item>.outline-expander:hover:before, .outline-item-open>.outline-item>.outline-expander:before {\\n    transform: rotate(90deg);\\n}\\n\\n.outline-label:hover {\\n    text-decoration: none;\\n}\\n\\n#toc-dropmenu {\\n    background: var(--bg-color-dark);\\n}\\n\\n#toc-dropmenu .outline-title {\\n    font-size: 1rem;\\n    text-transform: uppercase;\\n}\\n\\n.dropdown-menu .divider {\\n    display: none;\\n}\\n\\n.context-menu {\\n    border: none!important;\\n    backdrop-filter: saturate(180%) blur(20px) brightness(1.1);\\n    background-color: var(--bg-color-dark);\\n    box-shadow: 0 25.6px 57.6px 0 rgba(0, 0, 0, .22), 0 4.8px 14.4px 0 rgba(0, 0, 0, .18)!important;\\n}\\n\\n.file-node-background {\\n    height: 31px;\\n}\\n\\n.file-node-content:hover .file-node-icon, .file-node-content:hover .file-node-open-state {\\n    visibility: visible;\\n}\\n\\n.file-node-icon {\\n    margin-right: 8px;\\n}\\n\\n.file-library-node:not(.file-node-root):focus>.file-node-content {\\n    outline: none;\\n}\\n\\n/* New file animation */\\n.blink-area {\\n    animation: none;\\n}\\n\\n.file-list-item-summary {\\n    font-size: var(--font-size);\\n    font-family: var(--font-family);\\n}\\n\\n#md-searchpanel input {\\n    border-radius: var(--border-radius);\\n    box-shadow: none;\\n}\\n\\n#md-searchpanel input:focus {\\n    box-shadow: none;\\n    border-color: var(--meta-content-color);\\n}\\n\\n#md-searchpanel .search-type-selection {\\n    width: auto;\\n}\\n\\n#md-searchpanel .btn:not(.close-btn):hover {\\n    box-shadow: none;\\n}\\n\\n.mac-seamless-mode #typora-sidebar {\\n    background-color: var(--side-bar-bg-color);\\n}\\n\\n#md-notification .btn {\\n    border: 0;\\n}\\n\\n/* CODE HIGHLIGHT */\\npre.CodeMirror-line {\\n    color: #999999!important\\n}\\n\\n.cm-variable {\\n    color: #37352f!important;\\n}\\n\\n.cm-keyword {\\n    color: #0277aa !important\\n}\\n\\n.cm-tag {\\n    color: #ff5a5a!important\\n}\\n\\n.cm-variable-3 {\\n    color: #48ff00!important;\\n}\\n\\n.cm-bracket, .cm-error {\\n    color: #ff5a5a!important\\n}\\n\\n.cm-attribute {\\n    color: #0277aa!important;\\n}\\n\\n.cm-def {\\n    color: #dc4a68!important;\\n}\\n\\n.cm-comment {\\n    color: #708090!important;\\n}\\n\\n.cm-string {\\n    color: #669900!important;\\n    font-variant-ligatures: common-ligatures!important;\\n}\\n\\n.cm-tag:not() {\\n    font-weight: 700;\\n}\\n\\n.cm-operator {\\n    color: #9a6e3b!important;\\n}\\n\\n.cm-number {\\n    color: #990055!important;\\n}\\n\\n.cm-meta {\\n    color: var(--text-color) !important;\\n    font-weight: 700!important;\\n}\\n\\n.cm-atom { color: #845dc4; }\\n\\n.cm-builtin {\\n    color: #669900 !important;\\n}\\n\\n.cm-property {\\n    color: var(--text-color) !important;\\n}\\n\\n.cm-variable-2 {\\n    color: var(--text-color) !important;\\n}\\n\\n.cm-variable-3 {\\n    color: #845dc4;\\n}\\n\\n/* CODE HIGHLIGHT */\\n.file-tree-node.active>.file-node-background {\\n    background-color: var(--active-file-bg-color);\\n    border-left: 0px solid #dad9d6!important;\\n    border-color: #dad9d6!important;\\n    background-color: #e8e7e4!important;\\n}\\n\\n.CodeMirror-gutters {\\n    border-right: 1px solid #f1f3f450;\\n    background: inherit;\\n    white-space: nowrap;\\n}\\n\\n.ty-footer, .sidebar-footer, footer {\\n    backdrop-filter: saturate(120%) blur(20px) brightness(0.85);\\n    border: none!important;\\n    background: none;\\n    background-color: #f7f6f3;\\n}\\n\\n.code-tooltip {\\n    border-radius: 4px;\\n    background-color: #313334;\\n    box-shadow: 0 25.6px 57.6px 0 rgba(0, 0, 0, .52), 0 4.8px 14.4px 0 rgba(0, 0, 0, .28)!important;\\n}\\n\\n#sidebar-files-menu {\\n    border-radius: 4px;\\n    border: none!important;\\n    box-shadow: 0 25.6px 57.6px 0 #f7f6f3, 0 4.8px 14.4px 0 rgba(0, 0, 0, .28);\\n}\\n\\n.code-tooltip.md-tooltip-hide.md-hover-tip {\\n    box-shadow: 0 25.6px 57.6px 0 rgba(0, 0, 0, .52), 0 4.8px 14.4px 0 rgba(0, 0, 0, .28);\\n}\\n\\n#typora-sidebar {\\n    border: none !important;\\n}\\n\\n#footer-word-count-info, #spell-check-panel {\\n    border: none!important;\\n    backdrop-filter: saturate(120%) blur(20px) brightness(0.85)!important;\\n    box-shadow: 0 25.6px 57.6px 0 rgba(0, 0, 0, .32), 0 4.8px 14.4px 0 rgba(0, 0, 0, .28)!important;\\n}\\n\\n/* Windows/Linux unibody mode */\\n.megamenu-content,\\n.megamenu-opened header {\\n    color:  var(--primary-color);\\n    background: var(--bg-color-dark);\\n}\\n\\n#recent-file-panel-action-btn {\\n    background: inherit;\\n    border: 1px var(--light-trait-300) solid;\\n}\\n\\n.megamenu-menu-panel table td:nth-child(1) {\\n    color: var(--text-color);\\n    background: var(--bg-color-dark);\\n}\\n\\n.megamenu-menu-panel table td:nth-child(2) {\\n    color: var(--text-color);\\n    background: var(--bg-color-dark);\\n}\\n\\n.megamenu-menu-panel tbody tr:hover td:nth-child(1) {\\n    color: var(--text-color);\\n    background: var( --active-file-bg-color);\\n}\\n\\n.megamenu-menu-panel tbody tr:hover td:nth-child(2) {\\n    color: var(--text-color);\\n    background: var( --active-file-bg-color);\\n}\\n\\n.megamenu-menu-panel input[type='text'] {\\n    background: inherit;\\n    border: 1px var(--control-text-color) solid;\\n}\\n\\n#recent-file-panel-action-btn {\\n    background: inherit;\\n}\\n\\n.megamenu-menu, .megamenu-content {\\n\\tbackground: var(--side-bar-bg-color);\\n\\tcolor: var(--text-color);\\n}\\n\\n#top-titlebar, #top-titlebar * {\\n    background: inherit;\\n\\tcolor: var(--text-color);\\n}\\n\\n.megamenu-menu-header #megamenu-menu-header-title:before {\\n\\tcolor:  var(--text-color);\\n}\\n\\nmegamenu-back-btn {\\n\\tcolor: var(--text-color);\\n\\tborder-color: var(--text-color);\\n}\\n\\n.megamenu-menu-header #megamenu-menu-header-title,\\n.megamenu-menu-header:hover,\\n.megamenu-menu-header:focus {\\n\\tcolor: inherit;\\n}\\n\\n.megamenu-menu-panel table tr:nth-child(2n + 1) {\\n    background-color:  var(--side-bar-bg-color);\\n}\\n\\n\\n</style><title>使用说明</title>\\n</head>\\n<body class='typora-export os-windows'><div class='typora-export-content'>\\n<div id='write'  class=''><blockquote><h1 id='前言'><span>前言</span></h1><p><span>使用说明有点长，请自行选择模块进行跳转阅读。本使用说明不仅写了dm盒子的一些事项，也一定程度上作了关于解析和断插的说明。推荐长按下方的目录索引章节然后在弹框选择打开网页——&gt;（会在浏览器打开并跳转到相应的章节，支持页面缩放）的方式进行阅读。</span></p></blockquote><div class='md-toc' mdtype='toc'><p class=\\\"md-toc-content\\\" role=\\\"list\\\"><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n7\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何为dm盒子\\\">何为dm盒子</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n25\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#如何使用\\\">如何使用</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n26\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#x5公钥和json公钥\\\">x5公钥和json公钥</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n29\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#通免公钥\\\">通免公钥</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n41\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#断插公钥\\\">断插公钥</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n44\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#聚合函数新版已移除\\\">聚合函数【新版已移除】</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n50\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#飞传新\\\">飞传【新】</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n298\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#刷新公钥文件\\\">刷新公钥文件</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n56\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#公钥本质\\\">公钥本质</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n84\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#小白科普\\\">小白科普</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n85\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓解析\\\">何谓解析</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n126\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#解析从哪来\\\">解析从哪来</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n166\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#一份普接清单\\\">一份普接清单</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n189\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓断插------魔断\\\">何谓断插——&gt;魔断</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n192\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#魔断的使用\\\">魔断的使用</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n203\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓cms模板\\\">何谓CMS模板</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n219\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓断插类小程序\\\">何谓断插类小程序</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n222\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓通免小程序\\\">何谓通免小程序</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n224\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#何谓免嗅小程序\\\">何谓免嗅小程序</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n228\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#隐藏操作\\\">隐藏操作</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n229\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#公钥与私钥\\\">公钥与私钥</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h2\\\" data-ref=\\\"n233\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#飞瓜弹幕库\\\">飞瓜弹幕库</a></span><span role=\\\"listitem\\\" class=\\\"md-toc-item md-toc-h1\\\" data-ref=\\\"n258\\\"><a class=\\\"md-toc-inner\\\" href=\\\"#注意事项\\\">注意事项</a></span></p></div><p>&nbsp;</p><p>&nbsp;</p><h1 id='何为dm盒子'><span>何为dm盒子</span></h1><ul><li><p><span>dm盒子，又名弹幕盒子，内部封装了弹幕函数。</span></p></li><li><p><span>dm盒子只是一个收纳dm数据的盒子，不提供在线播放和地址采集功能。</span></p></li><li><p><span>dm盒子提供</span><code>公钥</code><span>可以让解析本身拥有从dm盒子获取数据的能力</span></p><ul><li><span>令所有断插类的小程序都能畅享弹幕——&gt;不再局限于个别的小程序</span></li><li><span>公钥对x5嗅探的普通接口和json接口都支持——&gt;解决优质x5无法使用问题</span></li></ul></li><li><p><span>dm盒子可以供外部小程序简单调用</span></p></li><li><p><span>dm盒子可以支持获取弹幕文件并以xml格式分享——方便在其他设备上支持加载弹幕的播放器上加载播放，例如“弹弹Play”</span></p></li></ul><p><span>如上所述，</span><strong><span>dm盒子打破了小程序之间的壁垒，让弹幕能在各个小程序自由流动</span></strong><span>，如此一来，弹幕功能也就不显得只是一个装饰性的功能了。推荐配合使用的断插类小程序有新番、搜狗Q、cms小程序等等。至于如何获取小程序，看这里：(部分规则由作者限时分享，不可强求~)</span></p><p><span>点击链接查看QQ频道帖子【小白初入门-新手入门，如何获取小程序】：</span><a href='https://qun.qq.com/qqweb/qunpro/share?_wv=3&amp;_wwv=128&amp;appChannel=share&amp;inviteCode=1wBvs1&amp;appChannel=share&amp;contentID=TjUA&amp;businessType=2&amp;from=246610&amp;biz=ka&amp;shareSource=5' target='_blank' class='url'>https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=1wBvs1&appChannel=share&contentID=TjUA&businessType=2&from=246610&biz=ka&shareSource=5</a></p><p>&nbsp;</p><h1 id='如何使用'><span>如何使用</span></h1><h2 id='x5公钥和json公钥'><span>x5公钥和json公钥</span></h2><p><span>点击生成x5公钥和json公钥，按格式填写，添加了公钥的解析口将会复制到剪切板，点击魔断配置然后添加即可使用</span></p><p><span>使用添加了公钥的解析口去解析视频无视规则（特别注意必须关闭新番的弹幕开关；不支持魔断多线路），都可以获取弹幕数据</span></p><h2 id='通免公钥'><span>通免公钥</span></h2><p><span>通免公钥是一个能调取dm盒子数据的嗅探模式的动态解析模板</span></p><p><span>只需要</span><strong><span>替换</span></strong><span>现有通免小程序的动态解析的lazy即可。举个例子例如给1920通免小程序替换lazy：</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/fa98f2386b7f7c73df0fc61d0ef0d90f240fed2f.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622235139668\\\"></p><p><span>成品小程序如下：</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"text\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"text\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><span><span>​</span>x</span></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">https://cmd.im/c465</span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span cm-text=\\\"\\\" cm-zwsp=\\\"\\\">\\n</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">小程序：1920pki</span></pre></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 74px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 74px;\\\"></div></div></div></pre><p><span>但是这个动态解析模板如果套在url加密的通免小程序那么将无法匹配到弹幕数据，例如影视工厂，如下图所示</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/3338d8ce8a67e700bff0bde82579df37cdcc7d3f.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220625091909591\\\"></p><p><span>但动态解析模板依旧可用，依旧会按照弹幕格式拼接链接返回预留的弹幕接口方便自己手动添加弹幕数据（请阅读隐藏操作-飞瓜弹幕库部分），非常适合优质切片路线的通免小程序，那么直接套就是了（如果不懂什么是切片，请阅读小白科普部分）。</span></p><p><mark><span>Tip：通免公钥套用的是通用匹配模板，对于需要大量请求参数比如UA、referer、cookie等的少部分视频嗅探出来的链接无法正常播放。香免暂时搞不定，先用匹配顶着。</span></mark><span>体现在上方小程序的就是芒果线路几乎不可播放，但并不是套这个动态解析芒果线路就无法播放，只是上方小程序的芒果线路所用解析，通用匹配无法嗅探得到可播放链接。像下方小程序就可以（比较不错了）：</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"text\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"text\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre><span>xxxxxxxxxx</span></pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">https://cmd.im/6fhk</span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span cm-text=\\\"\\\" cm-zwsp=\\\"\\\">\\n</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">小程序：ABmoviedmPKI</span></pre></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 74px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 74px;\\\"></div></div></div></pre><p>&nbsp;</p><h2 id='断插公钥'><span>断插公钥</span></h2><p><span>断插公钥是调用断插模式的动态解析模板。</span><mark><span>必须搭配x5公钥或者json公钥套壳的解析口使用才能获取弹幕数据否则就和普通的断插二级差不多，因为如果直接设置断插附加弹幕的模式那么就会和添加了公钥的解析口发生数据冲突，不如直接给接口添加公钥支持，何必让断插动态解析单独实现</span></mark><span>。与通免公钥同理，url加密的通免小程序那么将无法匹配到弹幕数据。此外断插公钥</span><strong><span>只有官方线路才会走断插</span></strong><span>，其余切片和直链线路都是嗅探。</span></p><p>&nbsp;</p><h2 id='聚合函数新版已移除'><span>聚合函数【新版已移除】</span></h2><p><span>json聚合函数，可以达到魔断多线路效果。因为和魔断多线路冲突，添加这个模块便捷生成聚合函数【和魔断一样只支持json】</span></p><p><span>只要按格式输入就可以了，逗号是中文的逗号，#也是中文的（虽然貌似没有区别）【注意：和json公钥同理，聚合函数生成后需要自行修改特殊json的取出url方式，详见公钥本质】</span></p><p><span>输入完后点确定生成的聚合函数会复制到剪贴板，再点击魔断配置快捷跳转粘贴在输入框点击保存即可添加添加聚合函数解析配置。</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/bb5756c70dd143a7e9622dc40dd0517f3c6c9fb4.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220625014919383\\\"></p><p>&nbsp;</p><h2 id='飞传新'><span>飞传【新】</span></h2><p><span>输入官网地址，即可获取弹幕文件并转换为xml格式弹幕文件快捷分享到其它设备支持加载弹幕的播放器进行播放。</span></p><p><span>官网地址建议不要携带后面的参数：</span></p><p><span>例如这样一个官网链接：</span><a href='https://www.iqiyi.com/v_1ynlpqbaip0.html?vfrm=pcw_home&amp;vfrmblk=B&amp;vfrmrst=fcs_0_p11' target='_blank' class='url'>https://www.iqiyi.com/v_1ynlpqbaip0.html?vfrm=pcw_home&vfrmblk=B&vfrmrst=fcs_0_p11</a></p><p><span>你应该输入的是：</span><a href='https://www.iqiyi.com/v_1ynlpqbaip0.html' target='_blank' class='url'>https://www.iqiyi.com/v_1ynlpqbaip0.html</a></p><p><span>推荐使用</span><strong><span>弹弹Play播放器</span></strong><span>，有着完善的弹幕过滤功能，如下：</span></p><p><span>重要的参数设置示例，</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/5bc8fee999ae2319c537e2b67fe183907e02f0bc.png\\\" referrerpolicy=\\\"no-referrer\\\"></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/8c6934ec17bef01ccd3b106ed1cae09fdf11e511.png\\\" referrerpolicy=\\\"no-referrer\\\"></p><p><span>因为获取到的弹幕数量非常多，因此这个设置非常必要！</span></p><blockquote><p><span>最新版的弹弹Play支持串流播放，所以推荐阿里云盘小白羊保存视频到网盘并设置弹弹Play为默认第三方播放器，那么就可以不需要下载视频到本地，而直接网盘播放并加载弹幕</span></p><p><span>【附：弹弹Play默认支持一些动漫站、腾讯、奇异、bili和bili漫游弹幕，其中腾讯和奇异需要手动输入网址，哔哩可以直接搜索】</span></p></blockquote><h2 id='刷新公钥文件'><span>刷新公钥文件</span></h2><p><span>公钥的远程代码基于远程，如果发生变动可能影响使用，这时候可以使用点击dm盒子的首页欢迎图案即可清除缓存</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/bc76b862fcc2d9646fca87e972f4f0f54ff9599b.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220625011929626\\\"></p><p><span>其实不用理会，因为一般情况下不会动远程文件，而且很大可能未来很长很长一段时间都不会有更新，，</span></p><p><span>如若清除缓存后发现通免小程序没有刷新，可以前往使用了通免公钥的相应小程序长按小程序标题，然后在弹框中选择清除缓存即可。</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/219314f73547769adc531dfd3956b22b8a6b6443.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220625233444063\\\"></p><h1 id='公钥本质'><span>公钥本质</span></h1><p><span>其实所谓公钥就是专门为解析调用dm盒子内弹幕数据而写的一个函数，分为x5和json函数，那么知道了公钥本质之后完全不需要借助dm盒子自带的生成公钥模块，可以自己填充接口或许会更便捷。</span><mark><span>只需要记住一点，dm盒子只是一个收纳dm数据的盒子！</span></mark><span>公钥壳子如下：</span></p><ul><li><p><span>x5公钥</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"js\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\" style=\\\"\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★名称★</span></span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><div class=\\\"\\\" style=\\\"position: relative;\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">try</span> {</span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">originUrl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-string\\\">'解析接口'</span><span class=\\\"cm-operator\\\">+</span><span class=\\\"cm-variable-2\\\">vipUrl</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-variable\\\">rc</span>(<span class=\\\"cm-string\\\">\\\"https://chenying2.coding.net/p/hiker/d/jsWithdm/git/raw/master/x5PKI.js\\\"</span>, <span class=\\\"cm-number\\\">24</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>,<span class=\\\"cm-variable-2\\\">originUrl</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">catch</span> (<span class=\\\"cm-def\\\">e</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 273px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 273px;\\\"></div></div></div></pre><p>&nbsp;</p></li><li><p><span>普适性json公钥</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"js\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre>x</pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\" style=\\\"\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★名称★</span></span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">try</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> <span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">bfurl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">JSON</span>.<span class=\\\"cm-property\\\">parse</span>(<span class=\\\"cm-variable\\\">request</span>(<span class=\\\"cm-string\\\">\\\"解析接口\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">vipUrl</span>, {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-property\\\">timeout</span>: <span class=\\\"cm-number\\\">5000</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp;  })).<span class=\\\"cm-property\\\">url</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-variable\\\">rc</span>(<span class=\\\"cm-string\\\">\\\"https://chenying2.coding.net/p/hiker/d/jsWithdm/git/raw/master/jsonPKI.js\\\"</span>, <span class=\\\"cm-number\\\">24</span>);</span></pre><div class=\\\"\\\" style=\\\"position: relative;\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>,<span class=\\\"cm-variable-2\\\">bfurl</span>)<span class=\\\"cm-operator\\\">+</span><span class=\\\"cm-string\\\">\\\";{User-Agent@''&amp;&amp;Referer@''}\\\"</span>;</span></pre></div><div class=\\\"\\\" style=\\\"position: relative;\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">catch</span> (<span class=\\\"cm-def\\\">e</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><div class=\\\"\\\" style=\\\"position: relative;\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre></div></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 322px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 322px;\\\"></div></div></div></pre><p><span>普适性json公钥针对大部分的json解析，json解析返回的数据大部分都可以通过这个公钥取出播放地址,具体情况具体分析。但不管如何，只要记住修改bfurl变量即可</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/13a46e28ed5729bd2bedc0e07076416859c5ed35.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622085914219\\\"></p><p><span>举个比较综合的例子，如下</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"js\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre><span>xxxxxxxxxx</span></pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">bfurl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">JSON</span>.<span class=\\\"cm-property\\\">parse</span>(<span class=\\\"cm-variable\\\">request</span>(<span class=\\\"cm-string\\\">\\\"解析口\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable\\\">vipUrl</span>, {<span class=\\\"cm-property\\\">headers</span>: {<span class=\\\"cm-string cm-property\\\">\\\"User-Agent\\\"</span>: <span class=\\\"cm-string\\\">\\\"例如，Dart/2.14 (dart:io)\\\"</span>,<span class=\\\"cm-string cm-property\\\">\\\"referer\\\"</span>: <span class=\\\"cm-string\\\">\\\"大概率是网站域名\\\"</span>}})).<span class=\\\"cm-property\\\">data</span>.<span class=\\\"cm-property\\\">url</span>;</span></pre></div></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 50px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 50px;\\\"></div></div></div></pre><p><span>header是携带的访问来源信息</span></p><ul><li><span>User-Agent：UA，简单的说就是让解析系统判断你是从哪个浏览器访问的网站页面，更多请自行百度</span></li><li><span>除了UA，还有Referer参数：即来源，简单的说就是让解析系统判断你是从哪里访问的网页，比如是不是从自家网站进行的访问和数据请求</span></li></ul><p><code>JSON.parse(request(&quot;解析口&quot; + vipUrl, {headers: {&quot;User-Agent&quot;: &quot;例如，Dart/2.14 (dart:io)&quot;,&quot;referer&quot;: &quot;大概率是网站域名&quot;}}))</code><span>这一段字符串最终会解析得到json字符串，假设获得的是一段形如下方格式的json字符串：</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"json\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"json\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre><span>xxxxxxxxxx</span></pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\" style=\\\"\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">{</span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'code'</span>:<span class=\\\"cm-number\\\">200</span>,</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'data'</span>:{</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'url'</span>:<span class=\\\"cm-string\\\">'返回的播放链接，也是我们要取出来的播放链接'</span>,</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'msg'</span>:<span class=\\\"cm-string\\\">'sucess，解析商或解析作者或解析购买者预先设定的消息'</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  <span class=\\\"cm-tab\\\" role=\\\"presentation\\\" cm-text=\\\"\\t\\\">    </span>},</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'type'</span>:<span class=\\\"cm-string\\\">'视频的格式类型，例如m3u8、mp4、flv等'</span>,</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-string cm-property\\\">'player'</span>:<span class=\\\"cm-string\\\">'可以理解为推荐使用的播放器'</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 223px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 223px;\\\"></div></div></div></pre><p><span>这一段返回的数据就是</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"js\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre><span>xxxxxxxxxx</span></pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">bfurl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">JSON</span>.<span class=\\\"cm-property\\\">parse</span>(<span class=\\\"cm-variable\\\">request</span>(<span class=\\\"cm-string\\\">\\\"解析口\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable\\\">vipUrl</span>, {<span class=\\\"cm-property\\\">headers</span>: {<span class=\\\"cm-string cm-property\\\">\\\"User-Agent\\\"</span>: <span class=\\\"cm-string\\\">\\\"例如，Dart/2.14 (dart:io)\\\"</span>,<span class=\\\"cm-string cm-property\\\">\\\"referer\\\"</span>: <span class=\\\"cm-string\\\">\\\"大概率是网站域名\\\"</span>}}))</span></pre></div></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 50px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 50px;\\\"></div></div></div></pre><p><span>然后从上方这一段数据中取出data中的url，通过对象</span><strong><span>&#39;.&#39;</span></strong><span>的方式获取，如下</span></p><pre class=\\\"md-fences md-end-block ty-contain-cm modeLoaded\\\" spellcheck=\\\"false\\\" lang=\\\"js\\\"><div class=\\\"CodeMirror cm-s-inner cm-s-null-scroll CodeMirror-wrap\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 10.4px; left: 8px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre><span>xxxxxxxxxx</span></pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\"><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">url</span><span class=\\\"cm-operator\\\">=</span><span class=\\\"cm-variable\\\">bfurl</span>.<span class=\\\"cm-property\\\">data</span>.<span class=\\\"cm-property\\\">url</span></span></pre></div></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 25px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 25px;\\\"></div></div></div></pre><p><span>那么如果将上述两步连起来写，就是上面的综合例子了。</span></p><p>&nbsp;</p></li></ul><h1 id='小白科普'><span>小白科普</span></h1><h2 id='何谓解析'><span>何谓解析</span></h2><ul><li><p><span>解析，简单的说就是解析视频的网页地址并返回一个可播放的视频链接</span></p></li><li><p><span>那负责解析的接口就是解析接口,解析接口大都长这样：</span><strong><span>https://域名/各种路径字符/一长串乱七八糟的字符（Key）/?url=</span></strong></p><ul><li><span>最明显的特点就是以</span><strong><span>?url=结束</span></strong></li><li><strong><span>?url=</span></strong><span>后面接的就是视频的网页地址</span></li></ul><p><span>举个例子：在浏览器的地址栏输入解析接口+视频地址后，回车或刷新，浏览器就会播放视频，如下图所示</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/8dd6e57249226f2b4dc2bbf37c9a91b6e7ff45aa.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622014622874\\\"></p></li><li><p><span>那么原理是什么？根据原理的不同，解析也大致可以分为：</span></p><ul><li><p><span>算法类：通过解析系统内置的vip账号从网站上取出地址</span></p></li><li><p><span>切片类：</span></p><ul><li><span>从算法类解析出的结果中缓存并自动上传到解析系统</span></li><li><span>根据云盘或磁力等多种途径途径获取到资源并上传到解析系统</span></li></ul></li><li><p><span>谈不上谁优谁劣，具体情况具体分析</span></p></li></ul></li><li><p><span>其实我们不关心原理的话，解析口应该分为以下两类：</span></p><ul><li><span>普通解析口：如上方图例就是一个普通解析口，也就是说解析口后面拼接地址后回车刷新就会自动返回视频数据经由浏览器嗅探出结果并开始播放（自带播放器所以可以播放）。</span></li><li><span>json解析口：json接口按上方格式拼接好后回车刷新返回的是一个json字符串，不可以直接播放，必须从中提取出url然后让播放器加载才能播放（json解析口不提供播放器，至于如何取出url可以参照下文的公钥本质部分）。如下图所示返回的就是json字符串（可以自行百度了解什么是json格式）</span><img src=\\\"https://i0.hdslb.com/bfs/album/93113d6c23a9912b475d27850eb2f68512fc8a9d.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622085043523\\\"><span>一般来说影视app使用的都是json解析口，有自建的，有从解析商买的，也有从解析商那里偷来的。因为json返回的数据是明文数据，相应的解析速度可能会更快，具体情况具体分析。</span></li></ul></li><li><p><span>从解析片源的角度来说，可以为两类：</span></p><ul><li><span>官解解析：顾名思义，就是给一个官方网址，返回一个可播放的地址</span></li><li><span>切片解析：解析商自行对视频资源进行切片上传到图床等云端，生成特定的字符串秘钥，只有拥有相应秘钥的解析口才能解析出视频数据，一般来说海外影片都是切片资源</span></li></ul></li></ul><h2 id='解析从哪来'><span>解析从哪来</span></h2><p><span>解析从哪来，无非就以下几种</span></p><ul><li><p><span>从解析商处购买</span></p><ul><li><span>很多影视网站都也是使用的解析为用户提供视频播放服务，而影视网站他们所用的解析大多就来自专门做解析系统的站点</span></li><li><span>当然部分部分影视网站和app是自身独立切片存储不依赖解析，比如小苹果影视、飞瓜or火龙果影视、酷云等app以及哔嘀等影视网站</span></li><li><span>截至目前优质的解析商有扶风、左岸、江湖、飞云等等，|不指路可以自行百度搜索（说一个搜索引擎的小技巧，如果百度啥也搜不到可以换用其他的搜索引擎搜索，同时学会利用时间检索去获取最新的搜索数据，那么基本上可以搜到你想要的东西）</span></li></ul></li><li><p><span>解析商开放的普通接口</span></p><ul><li><span>部分大型的解析商都是有开放免费的优质普通解析口放出。一般来说就官解而言普通接口与json接口相比较基本上就是响应速度和资源是否可见的区别。开放的接口一般不支持切片，具体情况具体分析。</span></li><li><span>不是说开放的普通接口就不好，就比json解析口差，具体问题具体分析。</span><strong><span>不然就不会有x5公钥了</span></strong></li></ul></li><li><p><span>网上网友分享的解析</span></p><ul><li><span>说白了网友分享的解析基本上最终都是来自解析商，当然也有可能是自建的解析系统，是的解析系统可以自建但绝不是一般人考虑的</span></li><li><span>拿网上分享的解析可以从哪里找呢，举个例子比如脚本网站上诸如某某vip视频解析脚本其实都是内置的解析，当然一般来说这些脚本上的解析都是一些比较普通的解析，当然也有可能出现一些优质的解析</span></li><li><span>其实有一个网站帖子就专门收集一些解析，比如：</span><a href='https://www.yqkf100.cn/1725/.html'><span>站长必备！福利！影视vip解析接口汇总！不定期更新-益思俱乐部 (yqkf100.cn)</span></a><span>其实道长仓库里就有一个小程序叫做魔断解析爬虫（数据来源就是这个网址），可以自行在道长仓库搜索并导入</span></li><li><span>一些影视Q群和影视频道可能会出现有人分享解析，而这些解析往往相对算得上比较可用的解析</span></li></ul></li><li><p><span>自行抓取</span></p><ul><li><span>其实解析最终都是来自解析商，很多影视网站和影视app都是使用的解析</span></li><li><span>那么就可以对网站审查网络数据或者抓取app数据从中发现解析口&lt;——&gt;具体的自行百度或从其他的地方了解</span></li><li><span>当然现在的影视网站和影视app大多都是有防盗机制的，所以可能遇到无法抓包的问题</span></li></ul></li></ul><p>&nbsp;</p><h2 id='一份普接清单'><span>一份普接清单</span></h2><p><span>不保证可用性，不保证清晰度，不保证响应速度、不保证...</span></p><p><span>只能保证它们都活了很久..都是老牌子..</span></p><ol start='' ><li><a href='https://jx.m3u8.tv/jiexi/?url=' target='_blank' class='url'>https://jx.m3u8.tv/jiexi/?url=</a></li><li><a href='https://www.8090.la/8090/?url=' target='_blank' class='url'>https://www.8090.la/8090/?url=</a></li><li><a href='https://jx.m3u8.pw/?url=' target='_blank' class='url'>https://jx.m3u8.pw/?url=</a></li><li><a href='https://jx.mmkv.cn/json.php?url=' target='_blank' class='url'>https://jx.mmkv.cn/json.php?url=</a></li></ol><hr /><p><span>下方看资源，上方都还行</span></p><ol start='' ><li><a href='https://api.okjx.cc:3389/jx.php?url=' target='_blank' class='url'>https://api.okjx.cc:3389/jx.php?url=</a></li><li><a href='https://jx.parwix.com:4433/player/?url=' target='_blank' class='url'>https://jx.parwix.com:4433/player/?url=</a></li></ol><p><span>只有一句话，那就是接口在精不在多，很多解析口都是相互套娃，资源来源都是同一个，所以很有可能一个解析解析不出来，其他的解析也解析不出来，因为它们的根源很可能都是同一个。</span></p><p><strong><span>这份清单仅供参考和测试，都只是x5普通接口仅仅为方便了解什么是解析而已。</span></strong></p><p>&nbsp;</p><p>&nbsp;</p><h2 id='何谓断插------魔断'><span>何谓断插——&gt;魔断</span></h2><p><span>了解完解析究竟是一个什么东西之后，那么断插就很好理解了，</span><code>断插是一个工具</code><span>，可以帮你配置好解析，配置好后只要点击封装好的视频影片的官网网址那么就会自动拼接格式并提交请求最后调用播放器播放，不用自己在浏览器拼接然后再刷新从而解放双手，所以断插只是一个</span><code>工具</code><span>，不提供任何内容</span></p><p><span>那魔断又是什么，魔断也只是一个</span><code>工具</code><span>不提供任何内容，可以理解为断插的加强版，能更好的解放双手。魔断又名MyFiled，仓库自取。</span></p><h2 id='魔断的使用'><span>魔断的使用</span></h2><p><span>知道了什么是解析了吧，也知道了什么是魔断了吧？那么如何使用魔断应该是见名知意了，太过详细的不讲，挑一些重点来讲一下入门。首先第一步选择小白一键拉取，无论是真小白还是有有资源认识解析的朋友都推荐第一步直接拉取，然后自己再手动删除和添加自己的解析配置，因为一键拉取会帮你直接把环境都配置好，包括主题等而不用去过多的管这些闲杂事项。</span></p><p><span>下面是一张路线指南图：</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/643102a29b09ab331a46b5029324c8a71e6731a1.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"魔断使用教程\\\"></p><p><span>其中魔断的多线路，初步了解魔断之后可以去熟悉一下，以下是官方解释</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/8a030128998c535b06d26e296ddea93736599b1b.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622205753311\\\"></p><p><span>还有一点很重要的就是备份，如果我有很多解析，怕丢失，可以直接导出！也可以直接导入！（</span><strong><span>魔断主页的横条是可以滑动的</span></strong><span>），如图所示右滑可以看到，只要按格式来那么一般就没有问题。其实点击三角箭头可以弹窗直接选择，也可以发现里边还有批量操作（删除）的功能</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/67667b669c5e469bba8f2c4409526ead9e346e85.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622213927012\\\"></p><p><span>在补充一点：在断插接口设置页面点击任意一个解析可以单独对其进行特定操作：</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/48e4b30795ca735c796b636ca1b5ab0ebbdacf30.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622215236136\\\"></p><p><mark><span>注意的是：dm盒子的公钥和多线路是冲突的</span></mark><span>，剩下的自己摸索，讲到的基本都是核心没讲到的都不是很重要</span></p><h2 id='何谓cms模板'><span>何谓CMS模板</span></h2><p><span>CMS可以简单的理解为一种采集官网视频网址的自动化软件，并按照指定的格式封装存储好后可以通过给出的API接口去访问这些数据，而这类API接口可以称之为cms接口。因为解析是需要视频网址的，所以cms的作用就不言而喻。</span></p><p><span>回到cms模板，cms模板是道长的一个小程序，通过填写cms接口就可以生成cms小程序的一个小程序，也是一个</span><code>工具</code><span>不提供任何实质内容。</span></p><p><span>那cms接口从哪里获取？来源于cms采集资源网、来源于app抓包、网站抓包、一些解析也会放出采集（采集即cms）...</span></p><p><span>其实更直接的方法，可以从写好的cms小程序中提取出cms接口：</span></p><ol start='' ><li><p><span>长按小程序名字，弹窗点击编辑规则，找到小程序链接，即可获得cms接口</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/449889da1c575498f71092328509d4e02b2c446a.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622094817380\\\"></p></li><li><p><span>如果你看不到小程序链接，那是因为没有开发者签名</span></p><p><span>——&gt;找到设置——&gt;选择开发手册与模式——&gt;选择开发者签名——&gt;自定义开发者昵称</span></p><p><span>那么就可以看到了</span></p></li></ol><p><span>下面是一个cms资源网合集的使用教程，里面都是cms小程序可以直接使用</span></p><p><span>点击链接查看QQ频道帖子【用心采集使用方法(非魔断版)】：</span><a href='https://qun.qq.com/qqweb/qunpro/share?_wv=3&amp;_wwv=128&amp;appChannel=share&amp;inviteCode=1wBvs1&amp;appChannel=share&amp;contentID=UgJW&amp;businessType=2&amp;from=246610&amp;biz=ka&amp;shareSource=5' target='_blank' class='url'>https://qun.qq.com/qqweb/qunpro/share?_wv=3&_wwv=128&appChannel=share&inviteCode=1wBvs1&appChannel=share&contentID=UgJW&businessType=2&from=246610&biz=ka&shareSource=5</a></p><p><span>与其寻找cms接口，不如直接使用已有的cms小程序，频道也会有大佬偶尔分享cms小程序</span></p><h2 id='何谓断插类小程序'><span>何谓断插类小程序</span></h2><p><span>顾名思义就是支持断插调用解析的小程序，像cms模板生成的cms小程序就是断插类的小程序</span></p><p><span>还有的大佬写好封装有断插调用方法的网站小程序或者app小程序</span></p><h2 id='何谓通免小程序'><span>何谓通免小程序</span></h2><p><span>通免小程序就是大佬写好的</span><strong><span>不需要断插解析</span></strong><span>的网站小程序或者app小程序，而是直接从源站嗅探获得视频播放链接，也就是说这是原滋原味的小程序，网站内容是啥，他就是啥。也是数量最多的小程序。</span></p><h2 id='何谓免嗅小程序'><span>何谓免嗅小程序</span></h2><p><span>免嗅小程序也是原滋原味的小程序，但相比通免小程序，它不需要从网站嗅探视频播放链接，而是通过解密代码直接获取视频播放链接的url然后直接播放，所以一般来说免嗅小程序会快于通免小程序响应资源的速度。</span></p><p>&nbsp;</p><p>&nbsp;</p><h1 id='隐藏操作'><span>隐藏操作</span></h1><h2 id='公钥与私钥'><span>公钥与私钥</span></h2><p><span>有公钥，那肯定有私钥了啦，不过没给出来罢了，我是不是很坏~</span></p><p><span>净瞎说，dm盒子代码清晰可见，有能力自己改一下公钥就可以得到私钥了~</span></p><p><span>至于原因嘛，那肯定是有原因的，私钥体验未必就比公钥要好，而且</span><mark><span>私钥不一定稳定</span></mark><span>——&gt;所以还是我自己来承受吧！</span></p><h2 id='飞瓜弹幕库'><span>飞瓜弹幕库</span></h2><p><span>公、私钥不重要啦，</span><strong><span>重要的是其实dm盒子内置了飞瓜弹幕库搜索引擎</span></strong><span>。</span></p><p><span>那如何使用呢？步骤如下：</span></p><ol start='' ><li><p><span>选择dm盒子作为搜索引擎，搜索需要获取弹幕数据的视频，这里以人世间为例</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/6b3af93c4b06afd9aa9d74c8f5f7bfb428096be8.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220621234822667\\\"></p></li><li><p><span>搜索到想要的视频结果后，再选择视频相应的集数进行播放——&gt;</span><mark><span>dm盒子只是一个数据收纳盒子，不提供在线视频播放、采集等功能</span></mark><span>——&gt;所以肯定是播放不了的啦——&gt;但是别忘记我们的目的是什么</span></p></li><li><p><span>进入视频播放页面后就可以获取飞瓜弹幕数据了，操作如下：</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/cc4203f7225c409c8ef370cce650de0553a7074e.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622000126124\\\"></p><p><span>复制的弹幕地址就是我们要获取的弹幕数据啦</span></p><p><span>接下来就是找一个支持断插的如cms小程序、或者套有dm盒子二级动态解析模板的通免or免嗅小程序来播放相应的影视剧集</span></p><p><span>到了这一步其实也能猜到了。下面做展示：</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/9ff8eba0c6daacaa4174cdd2ae2d9d71a677110b.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622001122030\\\"></p><p><span>填入弹幕地址之后，那么就会有弹幕数据加载出来了（如图）</span></p><p><img src=\\\"https://i0.hdslb.com/bfs/album/eb42d30cb4c4e030afd57e8ab9f0c351163e7adc.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622001517705\\\"></p><p>&nbsp;</p></li></ol><p><span>那么问题来了啥时候用飞瓜引擎获取弹幕呢，我的建议是当官方弹幕或者其他的第三方弹幕无法获取到或者不能满足的时候使用</span></p><p><span>其实</span><mark><span>更值得一提的应该是，飞瓜弹幕不仅仅只是拥有国内视频的弹幕数据，他还有外片和各种类型片源的弹幕</span></mark><span>，这个时候如果你需要弹幕，那么飞瓜搜索引擎就有大用了！</span></p><p><span>补充一点：弹幕地址是可以移植到任意小程序视频播放地址的，那么自然是</span><strong><span>不需要解析也不需要断插也不需要dm盒子动态解析也能加载弹幕</span></strong><span>了当然有些小程序加载的视频地址是有</span><strong><span>时效性</span></strong><span>的，所以可能会出现播放不了的情况——&gt;移植的时候需要注意下弹幕的格式，如下：（小白尤其注意花括号&#39;{}&#39;的存在）</span><img src=\\\"https://i0.hdslb.com/bfs/album/cd84445879ca6ba7f03936288b99c9d27c2f2803.png\\\" referrerpolicy=\\\"no-referrer\\\" alt=\\\"image-20220622002905582\\\"></p><p><span>可能你发现了上方截图里是有</span><strong><span>预留弹幕接口和dm:&#39;&#39;</span></strong><span>写好的格式存在的，那其实就是因为这个小程序套了dm盒子动态解析或者是断插类型的小程序，可以方便给没有弹幕数据的视频快速添加弹幕而不用自己修改格式。</span></p><p>&nbsp;</p><p>&nbsp;</p><h1 id='注意事项'><span>注意事项</span></h1><ol start='' ><li><p><del><span>公钥没法和魔断并发多线路一起使用。但是针对公钥，dm盒子增加了一个自</span><strong><span>动拼接多线路接口的功能模块</span></strong><span>——&gt;方便将常用的优质接口自动拼接成一个返回多线路的函数接口。事实上这已经足矣，将手头用的多的，好用的json结合聚合在一起就可以了。</span></del></p><p><del><span>Tip：海阔多线路的实现目前都是</span><strong><span>并发</span></strong><span>的方式包括魔断多线路（很费解析），也就是说点击解析一个视频的时候必须先把所有解析都尝试解析获取可播放链接，最后将所有得到的结果返回，组成多线路格式。但是部分解析部分视频资源的链接解析出来后是有时效性的，所以可能链接失效。所以正确的食用方式是多线路出来后如果当前线路能播画质满足就当前线路直接看，如若解析失败马上切换，不推荐看剧中途切换因为大概率链接已经失效（魔断添加了多路缓存，但是实际体验感觉效果并不是很理想，dm盒子的聚合函数也没有提供多线路缓存）</span></del><mark><span>该功能已在新版移除，并替换为“飞传”</span></mark></p></li><li><p><span>带有弹幕数据的解析口解析新番视频时会和新番自带的弹幕数据冲突所以需要关闭新番的弹幕开关</span></p></li><li><p><span>如若使用解析测试、魔断解析测试出现数据错乱的问题可以不用理会，这是正常现象（虽然我并不是很清楚具体原因...），但这并不妨碍你在新番、搜狗Q、cms小程序等断插类小程序中正常使用</span></p></li><li><p><span>逻辑都是先获取弹幕再加载视频（Tencent路线的弹幕数据存储到本地耗时可能相对较长）</span></p></li><li><p><span>普适性json公钥只适合大部分json生成公钥，详细的使用方法参见公钥本质部分</span></p></li><li><p><span>嗅探动态解析模板和断插动态解析模板只适用于url未经加密的通免小程序</span></p><p><del><span>通免模板对于有些小程序的部分解析线路支持并不是很好，有嗅探失败的可能</span></del></p><p><del><mark><span>通免公钥已经替换成了香免强力x5嗅探，香免能播的都能播，不能播的基本上都是网站本身无法播放</span></mark></del></p><p><strong><span>网站和解析的防嗅探能力也在增强，不保证一直更新所以可能会出现嗅探失败的几率</span></strong></p></li><li><p><mark><span>不要更改dm盒子小程序的名字</span></mark><span>，否则其他二级动态解析依赖dm盒子的通免小程序和断插类将无法获取数据并报错</span></p></li></ol><div align=\\\"right\\\">\\n    <h6>\\n        侠名\\n    </h6>\\n    <h6>初版2022/6/25</h6>\\n    <h6>第二版-修订2022/7/12</h6>\\n</div><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p></div></div>\\n</body>\\n</html>\"},{\"col_type\":\"movie_3\",\"name\":\"光芒\",\"path\":\"mgtv\",\"rule\":\"//官方弹幕函数| \\r\\n$.exports.MGdm = function (realurl) {\\r\\n    if (getItem('Mg_from_'+MY_RULE.title, '') == realurl) {\\r\\n        return 'hiker://files/dm盒子/'+'Mg_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n    try {\\r\\n        var vid = realurl.split('/')[5].split('.html')[0];\\r\\n        var cid = realurl.split('/')[4];\\r\\n        var fileNum = 0;\\r\\n        var data = ''\\r\\n        // 字体大小\\r\\n        var size = JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize;\\r\\n        // 容错处理\\r\\n        var errNum = 0;\\r\\n        danmuFrom = JSON.parse(fetch(`https://galaxy.bz.mgtv.com/getctlbarrage?version=3.0.0&vid=${vid}&abroad=0&pid=0&os=&uuid=&deviceid=2cc092cb-f9df-4f4f-a1ce-33c7fe3575cf&cid=393717&ticket=&mac=&platform=0&appVersion=3.0.0&reqtype=form-post&callback=jsonp_1658216873648_19074&allowedRC=1`, {\\r\\n            headers: {\\r\\n                'User-Agent': PC_UA,\\r\\n                'Referer': realurl\\r\\n            },\\r\\n            method: 'GET'\\r\\n        }).match(/{[\\\\S\\\\s]+}/)).data.cdn_version;\\r\\n        // DVD、电影、少部分剧集\\r\\n        if (danmuFrom == undefined) {\\r\\n            var time = 0;\\r\\n            while (true) {\\r\\n                // 请求弹幕\\r\\n                try {\\r\\n                    danmuData = JSON.parse(fetch(`https://galaxy.bz.mgtv.com/cdn/opbarrage?version=3.0.0&vid=${vid}&abroad=0&pid=0&os=&uuid=&deviceid=2cc092cb-f9df-4f4f-a1ce-33c7fe3575cf&cid=${cid}&ticket=&mac=&platform=0&time=${time}&device=0&allowedRC=1&appVersion=3.0.0&reqtype=form-post&callback=jsonp_1658459178998_5150&allowedRC=1`, {\\r\\n                        headers: {\\r\\n                            'User-Agent': PC_UA,\\r\\n                            'Referer': realurl\\r\\n                        },\\r\\n                        method: 'GET'\\r\\n                    }).match(/{[\\\\S\\\\s]+}/)).data;\\r\\n                } catch (e) {\\r\\n                    log('请求失败');\\r\\n                    break;\\r\\n                }\\r\\n                danmu = danmuData.items;\\r\\n                // 直至弹幕为空——真的是，如果弹幕太少导致某一页没有数据那岂不是误杀？？？给他个允许(连续)空值的最大次数吧。。\\r\\n                if (danmu == null) {\\r\\n                    errNum += 1;\\r\\n                    if (errNum > 2) {\\r\\n                        break;\\r\\n                    } else {\\r\\n                        continue;\\r\\n                    }\\r\\n                }\\r\\n                // 如果能获取到数据就将空值次数清0，保证错误空值是连续的，尽可能避免误杀\\r\\n                errNum = 0;\\r\\n                for (let i = 0; i < danmu.length; i++) {\\r\\n                    // 弹幕发送时间\\r\\n                    timepoint = danmu[i].time / 1000;\\r\\n                    // 弹幕样式\\r\\n                    ct = 1;\\r\\n                    if (danmu[i].v2_position) {\\r\\n                        // 顶端弹幕\\r\\n                        ct = 5;\\r\\n                    }\\r\\n                    // 弹幕颜色(默认)\\r\\n                    color = 16777215;\\r\\n                    // 颜色设置——可自行修改替换left为right(原来是左右渐变的颜色，但xml格式本身并不支持，所以二选一吧，left一般颜色比较深，right一般颜色比较浅)\\r\\n                    if (danmu[i].v2_color) {\\r\\n                        color = (danmu[i].v2_color.color_left.r << 16) + (danmu[i].v2_color.color_left.g << 8) + (danmu[i].v2_color.color_left.b);\\r\\n                    }\\r\\n                    // 弹幕内容\\r\\n                    content = danmu[i].content;\\r\\n                    if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\\\u0000') != -1 || content.indexOf('\\\\b') != -1) {\\r\\n                        continue;\\r\\n                    }\\r\\n                    tempdata = `<d p=\\\"${Math.round(timepoint)},${ct},${size},${color},0\\\">${content}</d>\\\\n`\\r\\n                    data += tempdata;\\r\\n                }\\r\\n                time = danmuData.next;\\r\\n            }\\r\\n        } else {\\r\\n            // 一般剧集和综艺\\r\\n            while (true) {\\r\\n                // 请求弹幕\\r\\n                try {\\r\\n                    danmuData = JSON.parse(fetch(`https://bullet-ws.hitv.com/${danmuFrom}/${fileNum}.json`, {\\r\\n                        headers: {\\r\\n                            'User-Agent': PC_UA,\\r\\n                            'Referer': realurl\\r\\n                        },\\r\\n                        method: 'GET'\\r\\n                    })).data;\\r\\n                } catch (e) {\\r\\n                    log('弹幕数据获取完毕');\\r\\n                    break;\\r\\n                }\\r\\n                danmu = danmuData.items;\\r\\n                if (danmu == null) {\\r\\n                    log('这一页没有数据');\\r\\n                    // 差点忘记加1了，死循环要崩溃~\\r\\n                    fileNum += 1;\\r\\n                    continue;\\r\\n                }\\r\\n                for (let i = 0; i < danmu.length; i++) {\\r\\n                    // 弹幕发送时间\\r\\n                    timepoint = danmu[i].time / 1000;\\r\\n                    // 弹幕样式\\r\\n                    ct = 1;\\r\\n                    if (danmu[i].v2_position) {\\r\\n                        // 顶端弹幕\\r\\n                        ct = 5;\\r\\n                    }\\r\\n                    // 弹幕颜色(默认)\\r\\n                    color = 16777215;\\r\\n                    // 颜色设置——可自行修改替换left为right(原来是左右渐变的颜色，但xml格式本身并不支持，所以二选一吧，left一般颜色比较深，right一般颜色比较浅)\\r\\n                    if (danmu[i].v2_color) {\\r\\n                        color = (danmu[i].v2_color.color_left.r << 16) + (danmu[i].v2_color.color_left.g << 8) + (danmu[i].v2_color.color_left.b);\\r\\n                    }\\r\\n                    // 弹幕内容\\r\\n                    content = danmu[i].content;\\r\\n                    if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\\\u0000') != -1 || content.indexOf('\\\\b') != -1) {\\r\\n                        continue;\\r\\n                    }\\r\\n                    tempdata = `<d p=\\\"${Math.round(timepoint)},${ct},${size},${color},0\\\">${content}</d>\\\\n`\\r\\n                    data += tempdata;\\r\\n                }\\r\\n                fileNum += 1;\\r\\n            }\\r\\n        }\\r\\n\\r\\n        // 最终待写入的弹幕数据\\r\\n        danmustr = `<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\\\n<i>\\\\n${data}</i>`;\\r\\n        // 写入弹幕\\r\\n        dm = 'hiker://files/dm盒子/'+'Mg_from_'+MY_RULE.title+'.xml';\\r\\n        saveFile(dm, danmustr);\\r\\n        setItem('Mg_from_'+MY_RULE.title, realurl);\\r\\n        putVar('dm_share',dm); \\r\\n        return dm;\\r\\n    } catch (e) {\\r\\n        log('出错了')\\r\\n        showLoading('天呐撸，获取失败了呢！');\\r\\n        return 'hiker://files/dm盒子/'+'Mg_from_'+MY_RULE.title+'.xml';\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"x5香免解析\",\"path\":\"x5dm.js\",\"rule\":\"$.exports.getFor = function (vipUrl, originUrl) {\\r\\n    // 感谢香佬提供通免——dm魔改\\r\\n    function x5rule(jiexurl, srcurl) {\\r\\n        showLoading(\\\"网页访问检索中，请稍候...\\\");\\r\\n        var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\r\\n            //fba.log(fba.getUrls());\\r\\n            var urls = _getUrls();\\r\\n            if (window.__count == null || window.__count == undefined) {\\r\\n                window.__count = 0\\r\\n            }\\r\\n            if (window.__count >= 23) {\\r\\n                // return srcurl\\r\\n                bfurl = srcurl.split(';')[0];\\r\\n                args = srcurl.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                return JSON.stringify({\\r\\n                    urls: [bfurl],\\r\\n                    names: ['dm盒子'],\\r\\n                    danmu: fba.getVar('dmPath')\\r\\n                }) + args;\\r\\n            }\\r\\n            window.__count = window.__count + 1;\\r\\n            if (window.__count > 1 && window.__count <= 3 && window.__count != null && window.__count != undefined) {\\r\\n                if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\r\\n                    if (!srcurl) {\\r\\n                        fba.log('尝试跳防盗验证一');\\r\\n                        location.href = location.href;\\r\\n                    } else {\\r\\n                        fba.log('尝试跳防盗验证二');\\r\\n                        location.href = srcurl\\r\\n                    }\\r\\n                };\\r\\n            } else if (window.__count > 3 && window.__count != null && window.__count != undefined) {\\r\\n                if (urls.length < 1) {\\r\\n                    fba.hideLoading();\\r\\n                    return 'toast://检索失败，可能链接无法访问。';\\r\\n                } else if (urls.length == 1) {\\r\\n                    fba.log('尝试直链与JSON解析');\\r\\n                    if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\r\\n                        //fy_bridge_app.log(urls[0])\\r\\n                        if (urls[0].indexOf('bilivideo') != -1) {\\r\\n                            // return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\r\\n                            return JSON.stringify({\\r\\n                                urls: [urls[0]],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath'),\\r\\n                                headers: [{\\r\\n                                    'Referer': 'https://www.bilibili.com',\\r\\n                                    'User-Agent': 'Mozilla/5.0'\\r\\n                                }]\\r\\n                            });\\r\\n                        } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\r\\n                            // return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\r\\n                            return JSON.stringify({\\r\\n                                urls: [urls[0] + '#isVideo=true#'],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath'),\\r\\n                                headers: [{\\r\\n                                    'Referer': 'www.mgtv.com',\\r\\n                                    'User-Agent': 'Mozilla/5.0'\\r\\n                                }]\\r\\n                            });\\r\\n                        } else {\\r\\n                            // return urls[0]\\r\\n                            bfurl = urls[0].split(';')[0];\\r\\n                            args = urls[0].match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        }\\r\\n                    } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !location.href.match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\r\\n                        // return location.href;\\r\\n                        bfurl = location.href.split(';')[0];\\r\\n                        args = location.href.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                        return JSON.stringify({\\r\\n                            urls: [bfurl],\\r\\n                            names: ['dm盒子'],\\r\\n                            danmu: fba.getVar('dmPath')\\r\\n                        }) + args;\\r\\n                    } else {\\r\\n                        var html = fba.fetch(location.href, {});\\r\\n                        if (!/\\\\<meta/.test(html) && !/\\\\<html/.test(html)) {\\r\\n                            // return JSON.parse(html).url;\\r\\n                            bfurl = JSON.parse(html).url.split(';')[0];\\r\\n                            args = JSON.parse(html).url.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        } else if (/没有找到站点|网页无法打开|404 Not Found|备案后可继续访问/.test(html)) {\\r\\n                            // return location.href.substring(location.href.indexOf('=http') + 1);\\r\\n                            bfurl = location.href.substring(location.href.indexOf('=http') + 1).split(';')[0];\\r\\n                            args = location.href.substring(location.href.indexOf('=http') + 1).match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        } else {\\r\\n                            // return location.href\\r\\n                            bfurl = location.href.split(';')[0];\\r\\n                            args = location.href.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        }\\r\\n                    };\\r\\n                } else {\\r\\n                    fba.log('日志检索第' + window.__count + '次');\\r\\n                    for (var i in urls) {\\r\\n                        if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !urls[i].match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8|\\\\.css|\\\\.js\\\\?/)) {\\r\\n                            //fy_bridge_app.log(urls[i])\\r\\n                            if (fy_bridge_app.getHeaderUrl) {\\r\\n                                // return fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\");\\r\\n                                bfurl = fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\").split(';')[0];\\r\\n                                args = fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\").match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                                return JSON.stringify({\\r\\n                                    urls: [bfurl],\\r\\n                                    names: ['dm盒子'],\\r\\n                                    danmu: fba.getVar('dmPath')\\r\\n                                }) + args;\\r\\n                            } else {\\r\\n                                if (urls[i].indexOf('bilivideo') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://www.bilibili.com',\\r\\n                                            'User-Agent': 'Mozilla/5.0'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\r\\n                                    // return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i] + '#isVideo=true#'],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'www.mgtv.com',\\r\\n                                            'User-Agent': 'Mozilla/5.0'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('juhaokan') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://www.juhaokan.cc/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('ojbk') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://v.ojbkjx.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('wkfile') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://fantuan.wkfile.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('shenglinyiyang') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://zyz.sdljwomen.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://zyz.sdljwomen.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('peizq.online') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://play.peizq.online/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://play.peizq.online/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else {\\r\\n                                    // return urls[i] + '#isVideo=true#'\\r\\n                                    bfurl = (urls[i] + '#isVideo=true#').split(';')[0];\\r\\n                                    args = (urls[i] + '#isVideo=true#').match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [bfurl],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath')\\r\\n                                    }) + args;\\r\\n                                }\\r\\n                            }\\r\\n                        }\\r\\n                    } //end for i\\r\\n                }\\r\\n            }\\r\\n        }, srcurl);\\r\\n        return video\\r\\n    }\\r\\n    // 判断弹幕线路来源\\r\\n    if (vipUrl.match(/ixigua|migu|sohu|pptv|le|cctv|1905.com/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else {\\r\\n            // 默认Par\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    } else if (vipUrl.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm = $.require('hiker://page/fc?rule=dm盒子').fcdm(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        dm = $.require('hiker://page/mgtv?rule=dm盒子').MGdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    } else if (vipUrl.match(/qq.com/)) {\\r\\n        dm = $.require('hiker://page/TX?rule=dm盒子').TXdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        dm = $.require('hiker://page/bilibili?rule=dm盒子').bilidm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    } else {\\r\\n        showLoading('没有弹幕官网匹配');\\r\\n        putVar('dmPath', getVar('dm_share',''));\\r\\n        return x5rule(originUrl, originUrl);\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"Json路由\",\"path\":\"jsondm.js\",\"rule\":\"$.exports.getFor = function (vipUrl, bfurl) {\\r\\n    if (vipUrl.match(/ixigua|migu|sohu|pptv|le/)) {\\r\\n        dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        from = 'par';\\r\\n    } else if (vipUrl.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm = $.require('hiker://page/fc?rule=dm盒子').fcdm(vipUrl);\\r\\n            from = 'fc官弹';\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n            from = 'par';\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n            from = 'fufeng';\\r\\n        }\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        dm = $.require('hiker://page/mgtv?rule=dm盒子').MGdm(vipUrl);\\r\\n        from = 'mgtv';\\r\\n    } else if (vipUrl.match(/qq.com/)) {\\r\\n        dm = $.require('hiker://page/TX?rule=dm盒子').TXdm(vipUrl);\\r\\n        from = 'Tencent';\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        dm = $.require('hiker://page/bilibili?rule=dm盒子').bilidm(vipUrl);\\r\\n        from = 'bili';\\r\\n    } else {\\r\\n        dm=getVar('dm_share',''); \\r\\n        from = '预留弹幕接口';\\r\\n    }\\r\\n    return JSON.stringify({\\r\\n        urls: [bfurl],\\r\\n        names: [from],\\r\\n        danmu: dm\\r\\n    });\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"香免(通免)\",\"path\":\"dmLazy.js\",\"rule\":\"$.exports.dmLazy = function () {\\r\\n    function x5rule(jiexurl, srcurl) {\\r\\n        showLoading(\\\"网页访问检索中，请稍候...\\\");\\r\\n        var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\r\\n            //fba.log(fba.getUrls());\\r\\n            var urls = _getUrls();\\r\\n            if (window.__count == null || window.__count == undefined) {\\r\\n                window.__count = 0\\r\\n            }\\r\\n            if (window.__count >= 23) {\\r\\n                // return srcurl\\r\\n                bfurl = srcurl.split(';')[0];\\r\\n                args = srcurl.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                return JSON.stringify({\\r\\n                    urls: [bfurl],\\r\\n                    names: ['dm盒子'],\\r\\n                    danmu: fba.getVar('dmPath')\\r\\n                }) + args;\\r\\n            }\\r\\n            window.__count = window.__count + 1;\\r\\n            if (window.__count > 1 && window.__count <= 3 && window.__count != null && window.__count != undefined) {\\r\\n                if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\r\\n                    if (!srcurl) {\\r\\n                        fba.log('尝试跳防盗验证一');\\r\\n                        location.href = location.href;\\r\\n                    } else {\\r\\n                        fba.log('尝试跳防盗验证二');\\r\\n                        location.href = srcurl\\r\\n                    }\\r\\n                };\\r\\n            } else if (window.__count > 3 && window.__count != null && window.__count != undefined) {\\r\\n                if (urls.length < 1) {\\r\\n                    fba.hideLoading();\\r\\n                    return 'toast://检索失败，可能链接无法访问。';\\r\\n                } else if (urls.length == 1) {\\r\\n                    fba.log('尝试直链与JSON解析');\\r\\n                    if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\r\\n                        //fy_bridge_app.log(urls[0])\\r\\n                        if (urls[0].indexOf('bilivideo') != -1) {\\r\\n                            // return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\r\\n                            return JSON.stringify({\\r\\n                                urls: [urls[0]],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath'),\\r\\n                                headers: [{\\r\\n                                    'Referer': 'https://www.bilibili.com',\\r\\n                                    'User-Agent': 'Mozilla/5.0'\\r\\n                                }]\\r\\n                            });\\r\\n                        } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\r\\n                            // return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\r\\n                            return JSON.stringify({\\r\\n                                urls: [urls[0] + '#isVideo=true#'],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath'),\\r\\n                                headers: [{\\r\\n                                    'Referer': 'www.mgtv.com',\\r\\n                                    'User-Agent': 'Mozilla/5.0'\\r\\n                                }]\\r\\n                            });\\r\\n                        } else {\\r\\n                            // return urls[0]\\r\\n                            bfurl = urls[0].split(';')[0];\\r\\n                            args = urls[0].match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        }\\r\\n                    } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !location.href.match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\r\\n                        // return location.href;\\r\\n                        bfurl = location.href.split(';')[0];\\r\\n                        args = location.href.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                        return JSON.stringify({\\r\\n                            urls: [bfurl],\\r\\n                            names: ['dm盒子'],\\r\\n                            danmu: fba.getVar('dmPath')\\r\\n                        }) + args;\\r\\n                    } else {\\r\\n                        var html = fba.fetch(location.href, {});\\r\\n                        if (!/\\\\<meta/.test(html) && !/\\\\<html/.test(html)) {\\r\\n                            // return JSON.parse(html).url;\\r\\n                            bfurl = JSON.parse(html).url.split(';')[0];\\r\\n                            args = JSON.parse(html).url.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        } else if (/没有找到站点|网页无法打开|404 Not Found|备案后可继续访问/.test(html)) {\\r\\n                            // return location.href.substring(location.href.indexOf('=http') + 1);\\r\\n                            bfurl = location.href.substring(location.href.indexOf('=http') + 1).split(';')[0];\\r\\n                            args = location.href.substring(location.href.indexOf('=http') + 1).match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        } else {\\r\\n                            // return location.href\\r\\n                            bfurl = location.href.split(';')[0];\\r\\n                            args = location.href.match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                            return JSON.stringify({\\r\\n                                urls: [bfurl],\\r\\n                                names: ['dm盒子'],\\r\\n                                danmu: fba.getVar('dmPath')\\r\\n                            }) + args;\\r\\n                        }\\r\\n                    };\\r\\n                } else {\\r\\n                    fba.log('日志检索第' + window.__count + '次');\\r\\n                    for (var i in urls) {\\r\\n                        if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8|\\\\/video\\\\/tos\\\\//) && !urls[i].match(/\\\\.html|m3u8\\\\.tv|m3u8\\\\.pw|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8|\\\\.css|\\\\.js\\\\?/)) {\\r\\n                            //fy_bridge_app.log(urls[i])\\r\\n                            if (fy_bridge_app.getHeaderUrl) {\\r\\n                                // return fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\");\\r\\n                                bfurl = fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\").split(';')[0];\\r\\n                                args = fy_bridge_app.getHeaderUrl(urls[i]).replace(\\\";{\\\", \\\"#ignoreImg=true##isVideo=true#;{\\\").match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                                return JSON.stringify({\\r\\n                                    urls: [bfurl],\\r\\n                                    names: ['dm盒子'],\\r\\n                                    danmu: fba.getVar('dmPath')\\r\\n                                }) + args;\\r\\n                            } else {\\r\\n                                if (urls[i].indexOf('bilivideo') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://www.bilibili.com',\\r\\n                                            'User-Agent': 'Mozilla/5.0'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\r\\n                                    // return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i] + '#isVideo=true#'],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'www.mgtv.com',\\r\\n                                            'User-Agent': 'Mozilla/5.0'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('juhaokan') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://www.juhaokan.cc/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('ojbk') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://v.ojbkjx.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('wkfile') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://fantuan.wkfile.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('shenglinyiyang') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://zyz.sdljwomen.com/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://zyz.sdljwomen.com/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else if (urls[i].indexOf('peizq.online') != -1) {\\r\\n                                    // return urls[i] + ';{Referer@https://play.peizq.online/}';\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [urls[i]],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath'),\\r\\n                                        headers: [{\\r\\n                                            'Referer': 'https://play.peizq.online/'\\r\\n                                        }]\\r\\n                                    });\\r\\n                                } else {\\r\\n                                    // return urls[i] + '#isVideo=true#'\\r\\n                                    bfurl = (urls[i] + '#isVideo=true#').split(';')[0];\\r\\n                                    args = (urls[i] + '#isVideo=true#').match(/;[\\\\S\\\\s]+}/g)[0];\\r\\n                                    return JSON.stringify({\\r\\n                                        urls: [bfurl],\\r\\n                                        names: ['dm盒子'],\\r\\n                                        danmu: fba.getVar('dmPath')\\r\\n                                    }) + args;\\r\\n                                }\\r\\n                            }\\r\\n                        }\\r\\n                    } //end for i\\r\\n                }\\r\\n            }\\r\\n        }, srcurl);\\r\\n        return video\\r\\n    }\\r\\n    // 定位真实线路-常规\\r\\n    let ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\\r\\n    if (!input.match(ts)) {\\r\\n        try {\\r\\n            let From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\\r\\n            let 加密 = From.encrypt;\\r\\n            // let 来自 = From.from;\\r\\n            原链 = From.url;\\r\\n            //log(From):\\r\\n            if (加密 == '1') {\\r\\n                原链 = unescape(原链);\\r\\n            } else if (加密 == '2') {\\r\\n                原链 = unescape(base64Decode(原链));\\r\\n            }\\r\\n            if (/\\\\.mp4|\\\\.m3u8|\\\\.flv/.test(原链)) {\\r\\n                showLoading('获取不到官网地址，将直链播放');\\r\\n                return JSON.stringify({\\r\\n                    urls: [原链],\\r\\n                    names: ['预留弹幕接口'],\\r\\n                    danmu: 'hiker://files/dm盒子/dm.xml'\\r\\n                });\\r\\n            } else if (ts.test(原链)) {\\r\\n                官链 = 原链;\\r\\n            } else {\\r\\n                showLoading('获取不到官网地址，将直链播放');\\r\\n                //盗版站地址\\r\\n                return JSON.stringify({\\r\\n                    urls: [playParse.playerS(input)],\\r\\n                    names: ['预留弹幕接口'],\\r\\n                    danmu: 'hiker://files/dm盒子/dm.xml'\\r\\n                });\\r\\n            }\\r\\n        } catch (e) {\\r\\n            // 若发生异常则直接为空链走嗅探\\r\\n            官链 = 'https://empty.html';\\r\\n        }\\r\\n    } else {\\r\\n        官链 = input;\\r\\n    }\\r\\n    // 判断弹幕线路来源\\r\\n    if (官链.match(/ixigua|migu|sohu|pptv|le|cctv|1905.com/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(官链);\\r\\n        } else {\\r\\n            // 默认Par\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(input, input);\\r\\n    } else if (官链.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm = $.require('hiker://page/fc?rule=dm盒子').fcdm(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(官链);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(input, input);\\r\\n    } else if (官链.match(/mgtv/)) {\\r\\n        dm = $.require('hiker://page/mgtv?rule=dm盒子').MGdm(官链);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(input, input);\\r\\n    } else if (官链.match(/qq.com/)) {\\r\\n        dm = $.require('hiker://page/TX?rule=dm盒子').TXdm(官链);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(input, input);\\r\\n    } else if (官链.match(/bili/)) {\\r\\n        dm = $.require('hiker://page/bilibili?rule=dm盒子').bilidm(官链);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(input, input);\\r\\n    } else {\\r\\n        showLoading('没有弹幕官网匹配');\\r\\n        putVar('dmPath', getVar('dm_share',''));\\r\\n        return x5rule(input, input);\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"第三方弹幕库_PAR\",\"path\":\"par\",\"rule\":\"// 第三方弹幕库函数|<——摘自资源网采.xyz，香佬yyds  \\r\\n$.exports.danmufun = function (src) {\\r\\n    var danmu = [];\\r\\n    try {\\r\\n        var json = JSON.parse(request(\\\"https://jx.parwix.com:4433/dmku/?ac=dm&id=\\\" + md5(src.split('\\\"')[0].split('?')[0]).slice(12) + ' P', {}));\\r\\n        if (json.danmuku) {\\r\\n            for (let i = 0; i < json.danmuku.length; i++) {\\r\\n                danmu.push({\\r\\n                    text: json.danmuku[i][4],\\r\\n                    time: json.danmuku[i][0]\\r\\n                });\\r\\n            };\\r\\n        } else {\\r\\n            for (let i = 0; i < json.length; i++) {\\r\\n                danmu.push({\\r\\n                    text: json[i].text,\\r\\n                    time: json[i].time\\r\\n                });\\r\\n            }\\r\\n        }\\r\\n    } catch (e) {\\r\\n        log('出错了')\\r\\n        showLoading('天呐撸，获取失败了呢！');\\r\\n        return 'hiker://files/dm盒子/dm.json';\\r\\n    }\\r\\n    let danmt = JSON.stringify(danmu);\\r\\n    dm = \\\"hiker://files/dm盒子/dm.json\\\"\\r\\n    saveFile(dm, danmt);\\r\\n    return dm;\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"第三方弹幕库_fufeng\",\"path\":\"fufeng\",\"rule\":\"// 第三方弹幕库函数|<——摘自资源网采.xyz，香佬yyds  \\r\\n$.exports.danmufun = function (src) {\\r\\n    var danmu = [];\\r\\n    try {\\r\\n        var json = JSON.parse(request(\\\"https://dmku.byteamone.cn/dmku/?ac=dm&id=\\\" + md5(src.split('\\\"')[0].split('?')[0]).slice(12) + ' P', {}));\\r\\n        if (json.danmuku) {\\r\\n            for (let i = 0; i < json.danmuku.length; i++) {\\r\\n                danmu.push({\\r\\n                    text: json.danmuku[i][4],\\r\\n                    time: json.danmuku[i][0]\\r\\n                });\\r\\n            };\\r\\n        } else {\\r\\n            for (let i = 0; i < json.length; i++) {\\r\\n                danmu.push({\\r\\n                    text: json[i].text,\\r\\n                    time: json[i].time\\r\\n                });\\r\\n            }\\r\\n        }\\r\\n    } catch (e) {\\r\\n        log('出错了')\\r\\n        showLoading('天呐撸，获取失败了呢！');\\r\\n        return 'hiker://files/dm盒子/dm.json';\\r\\n    }\\r\\n    let danmt = JSON.stringify(danmu);\\r\\n    dm = \\\"hiker://files/dm盒子/dm.json\\\"\\r\\n    saveFile(dm, danmt);\\r\\n    return dm;\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"x5仓库解析\",\"path\":\"drDm.js\",\"rule\":\"$.exports.getFor = function (vipUrl, playUrl) {\\r\\n    function x5rule(playUrl, ms, tm, rechange) {\\r\\n        // log('调用仓库免嗅探传参超时为:'+ms);\\r\\n        tm = parseInt(tm) || 5000;\\r\\n        const {\\r\\n            isVideo,\\r\\n            getHeaders,\\r\\n            isBadVideo\\r\\n        } = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\r\\n        let realUrl = isVideo(playUrl, rechange);\\r\\n        //log(realUrl);\\r\\n        if (typeof (realUrl) == 'string') { //bool值就是失败\\r\\n            try {\\r\\n                let rurl = realUrl.split(\\\";\\\")[0].split(\\\"#\\\")[0];\\r\\n                return JSON.parse(request(rurl, {\\r\\n                    timeout: tm\\r\\n                })).url\\r\\n            } catch (e) {\\r\\n                return realUrl\\r\\n            }\\r\\n            //return realUrl\\r\\n        }\\r\\n        //log(\\\"访问超时:\\\"+tm);\\r\\n        log(\\\"尝试道长仓库x5免嗅:\\\" + playUrl);\\r\\n        clearVar(\\\"_x5jxUrl\\\");\\r\\n        let bad = $(\\\"网络不佳或者疑似对方网站挂了，你要查看其网页吗？\\\").confirm((playUrl) => {\\r\\n            log(\\\"网站看起来挂了:\\\" + playUrl);\\r\\n            return playUrl\\r\\n        }, playUrl);\\r\\n        try {\\r\\n            var back = request(playUrl, {\\r\\n                headers: getHeaders(playUrl),\\r\\n                timeout: tm\\r\\n            });\\r\\n            //var back=fetch(playUrl,{headers: {'User-Agent': PC_UA}});\\r\\n            if (!back) {\\r\\n                log(\\\"网站\\\" + playUrl + \\\"确实啥也没返回\\\");\\r\\n                return bad\\r\\n            } else if (/#EXTINF/.test(back)) {\\r\\n                //let lcache=\\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8\\\";\\r\\n                //writeFile(lcache,back);\\r\\n                //return lcache+\\\"##\\\"+playUrl+\\\"#isVideo=true#\\\"\\r\\n                playUrl = cacheM3u8(playUrl);\\r\\n                return playUrl\\r\\n            } else if ((!/触发了防盗链|未授权|接口防盗/.test(back)) && (!/http|url/.test(back)) && (!/msg|code|html/.test(back))) {\\r\\n                log(back);\\r\\n                return 'toast://疑似对方数据加密了，具体数据看日志'\\r\\n            }\\r\\n        } catch (e) {\\r\\n            log(e.message);\\r\\n            return bad\\r\\n        }\\r\\n        log('开始x5免嗅探');\\r\\n        // require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/lsg.js');//引用本地储存插件\\r\\n        const lsg = $.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\"); //引用子页面本地储存插件\\r\\n        let local_ms = lsg.getItem('timeout');\\r\\n        let ms = parseInt(ms) || parseInt(local_ms) || 5000;\\r\\n        let max_count = Math.ceil(ms / 250);\\r\\n        log(\\\"本次嗅探超时:\\\" + ms + \\\"共计待抓包:\\\" + max_count + \\\"次\\\");\\r\\n        showLoading('嗅探中，若失败就切换web嗅探...');\\r\\n        let _x5 = $.toString((isVideo, rechange, playUrl, max_count, PC_UA, isBadVideo) => {\\r\\n            try {\\r\\n                if (typeof (fba) == 'undefined' || !fba) {\\r\\n                    var fba = fy_bridge_app;\\r\\n                }\\r\\n                try {\\r\\n                    if (typeof (request) == 'undefined' || !request) {\\r\\n                        eval(fba.getInternalJs());\\r\\n                    }\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message);\\r\\n                }\\r\\n                fba.putVar(\\\"_x5jxUrl\\\", playUrl);\\r\\n                if (window.count == null) {\\r\\n                    window.count = 1;\\r\\n                }\\r\\n                let text = '';\\r\\n                try {\\r\\n                    text = document.querySelector(\\\"body\\\").innerText;\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message)\\r\\n                }\\r\\n                if (/触发了防盗链|未授权|接口防盗/.test(text) && window.count === 1) {\\r\\n                    fba.log(\\\"检测到有授权，开始过授权\\\");\\r\\n                    //location.reload();\\r\\n                    location.href = fba.getVar(\\\"_x5jxUrl\\\");\\r\\n                }\\r\\n                window.count++;\\r\\n                // fba.log('count:'+window.count+',max_count:'+max_count);\\r\\n                if (window.count >= max_count) {\\r\\n                    fba.log(\\\"超过\\\" + max_count * 250 + \\\"毫秒未获取到资源地址，跳到源网页,以下是加载过的地址\\\");\\r\\n                    try {\\r\\n                        let text = document.querySelector(\\\"body\\\").innerText;\\r\\n                        // fba.log(text);\\r\\n                    } catch (e) {\\r\\n                        fba.log(e.message)\\r\\n                    }\\r\\n                    fba.log(JSON.stringify(_getUrls()));\\r\\n                    return fba.getVar(\\\"_x5jxUrl\\\");\\r\\n                }\\r\\n\\r\\n                function muteMe(elem) {\\r\\n                    try {\\r\\n                        elem.pause();\\r\\n                    } catch (e) {}\\r\\n                }\\r\\n                var videos = document.querySelectorAll(\\\"video\\\"),\\r\\n                    audios = document.querySelectorAll(\\\"audio\\\"),\\r\\n                    v2 = document.querySelectorAll(\\\"embed\\\"),\\r\\n                    v3 = document.querySelectorAll(\\\"#player\\\");\\r\\n                try {\\r\\n                    [].forEach.call(videos, function (video) {\\r\\n                        muteMe(video);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(audios, function (audio) {\\r\\n                        muteMe(audio);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(v2, function (v) {\\r\\n                        muteMe(v);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(v3, function (v) {\\r\\n                        muteMe(v);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                var urls = _getUrls();\\r\\n                // fba.log(JSON.stringify(urls));\\r\\n                try {\\r\\n                    for (let i in urls) {\\r\\n                        let u = urls[i];\\r\\n                        try {\\r\\n                            u = decodeURIComponent(u);\\r\\n                        } catch (e) {\\r\\n                            u = unescape(u);\\r\\n                        }\\r\\n                        //\\r\\n                        if (/url=http/.test(u)) {\\r\\n                            u = u.split(\\\"url=\\\").slice(-1)[0];\\r\\n                            // fba.log(\\\"url分割:\\\"+u);\\r\\n                        } else if (/url=\\\\//.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                            u = host + u.split(\\\"url=\\\").slice(-1)[0];\\r\\n                            // fba.log(\\\"url分割:\\\"+u);\\r\\n                        } else if (/vid=http/.test(u)) {\\r\\n                            u = u.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                            fba.log(\\\"vid分割:\\\" + u);\\r\\n                        } else if (/vid=\\\\//.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                            u = host + u.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                            fba.log(\\\"vid分割:\\\" + u);\\r\\n                        } else if (/\\\\?(.*)=http/.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            u = \\\"http\\\" + u.split(/\\\\?(.*)=http/).slice(-1)[0];\\r\\n                            fba.log(\\\"其他分割:\\\" + u);\\r\\n                        }\\r\\n                        //|index\\\\.m3u8$\\r\\n                        else if (/\\\\/1\\\\.m3u8/.test(u)) {\\r\\n                            continue;\\r\\n                        }\\r\\n                        u = u.replace(/&from=.*|&next=.*|&jump=.*/, '');\\r\\n                        let realUrl = isVideo(u, rechange);\\r\\n                        if (typeof (realUrl) == 'string' && !isBadVideo(u)) { //过滤吊毛视频\\r\\n                            //fy_bridge_app.setWebUa(PC_UA);\\r\\n                            if (typeof (fba.getHeaderUrl) !== 'undefined' && typeof (rechange) !== 'function') {\\r\\n                                // let backUrl = fba.getHeaderUrl(u.replace(\\\";{\\\",\\\"#isVideo=true#;{\\\"));\\r\\n                                let backUrl = fba.getHeaderUrl(urls[i]).replace(';{', '#ignoreImg=true##isVideo=true#;{');\\r\\n                                let u1 = backUrl.split('#ignoreImg')[0];\\r\\n                                let u2 = '#ignoreImg' + backUrl.split('#ignoreImg')[1];\\r\\n                                u1 = u1.replace(/&from=.*|&next=.*|&jump=.*/, '');\\r\\n                                if (/url=http/.test(u1)) {\\r\\n                                    u1 = u1.split(\\\"url=\\\").slice(-1)[0];\\r\\n                                } else if (/url=\\\\//.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                                    u1 = host1 + u1.split(\\\"url=\\\").slice(-1)[0];\\r\\n                                    // fba.log(\\\"url分割:\\\"+u);\\r\\n                                } else if (/vid=http/.test(u1)) {\\r\\n                                    u1 = u1.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                                } else if (/vid=\\\\//.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                                    u1 = host1 + u1.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                                } else if (/\\\\?(.*)=http/.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    u1 = \\\"http\\\" + u1.split(/\\\\?(.*)=http/).slice(-1)[0];\\r\\n                                }\\r\\n                                backUrl = u1 + u2;\\r\\n                                // fba.log('返回自动加cookie链接:'+backUrl);\\r\\n                                fba.log('返回链接:' + u + '并自动加了cookie,具体cookie在视频播放处查看');\\r\\n                                // return backUrl;\\r\\n                                return JSON.stringify({\\r\\n                                    urls: [u1 + '#ignoreImg=true##isVideo=true#'],\\r\\n                                    names: ['dm盒子'],\\r\\n                                    danmu: fba.getVar('dmPath')\\r\\n                                }) + u2.replace('#ignoreImg=true##isVideo=true#;', ';');\\r\\n                            } else {\\r\\n                                fba.log(\\\"返回仓库x5免嗅结果:\\\" + realUrl);\\r\\n                                return realUrl\\r\\n                            }\\r\\n                        }\\r\\n                    }\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message)\\r\\n                }\\r\\n            } catch (e) {\\r\\n                // fy_bridge_app.log('x5大范围错误:'+e.message);\\r\\n                alert('x5大范围错误:' + e.message);\\r\\n                return 'toast://报错结束x5'\\r\\n            }\\r\\n        }, isVideo, rechange, playUrl, max_count, PC_UA, isBadVideo);\\r\\n        let useWeb = lsg.getItem(\\\"通免\\\", \\\"X5\\\") === \\\"WEB\\\";\\r\\n        //log(\\\"仓库使用web通免替代x5:\\\"+useWeb);\\r\\n        let ruleHead = useWeb && parseInt(getAppVersion()) >= 2339 ? \\\"webRule://\\\" : \\\"x5Rule://\\\";\\r\\n        let x5Url = ruleHead + playUrl + '@' + _x5;\\r\\n        return x5Url\\r\\n    }\\r\\n    // 判断弹幕线路来源\\r\\n    if (vipUrl.match(/ixigua|migu|sohu|pptv|le|cctv|1905.com/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else {\\r\\n            // 默认Par\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm = $.require('hiker://page/fc?rule=dm盒子').fcdm(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        dm = $.require('hiker://page/mgtv?rule=dm盒子').MGdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/qq.com/)) {\\r\\n        dm = $.require('hiker://page/TX?rule=dm盒子').TXdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        dm = $.require('hiker://page/bilibili?rule=dm盒子').bilidm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else {\\r\\n        showLoading('没有弹幕官网匹配');\\r\\n        putVar('dmPath', 'hiker://files/dm盒子/dm.xml');\\r\\n        return x5rule(playUrl, 8000);\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"video嗅探解析\",\"path\":\"videoDm.js\",\"rule\":\"$.exports.getFor = function (vipUrl, urls, names,headers) {\\r\\n    if (vipUrl.match(/ixigua|migu|sohu|pptv|le/)) {\\r\\n        dm=$.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n    } else if (vipUrl.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm=$.require('hiker://page/fc?rule=dm盒子').fcdm(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm=$.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm=$.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        dm=$.require('hiker://page/mgtv?rule=dm盒子').MGdm(vipUrl);\\r\\n    } else if (vipUrl.match(/qq.com/)) {\\r\\n        dm=$.require('hiker://page/TX?rule=dm盒子').TXdm(vipUrl);\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        dm=$.require('hiker://page/bilibili?rule=dm盒子').bilidm(vipUrl);\\r\\n    } else {\\r\\n        dm = 'hiker://files/dm盒子/dm.xml';\\r\\n    }\\r\\n    if (headers) {\\r\\n        var headers=headers;\\r\\n    }else{\\r\\n        var headers=[];\\r\\n    }\\r\\n    return JSON.stringify({\\r\\n        names: names,\\r\\n        urls: urls,\\r\\n        danmu: dm,\\r\\n        headers:headers\\r\\n    })\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"video嗅探(通免)\",\"path\":\"dmLazyV.js\",\"rule\":\"$.exports.dmLazy = function () {\\r\\n    // 定位真实线路-常规\\r\\n    let ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\\r\\n    if (!input.match(ts)) {\\r\\n        try {\\r\\n            let From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\\r\\n            let 加密 = From.encrypt;\\r\\n            // let 来自 = From.from;\\r\\n            原链 = From.url;\\r\\n            //log(From)\\r\\n            if (加密 == '1') {\\r\\n                原链 = unescape(原链);\\r\\n            } else if (加密 == '2') {\\r\\n                原链 = unescape(base64Decode(原链));\\r\\n            }\\r\\n            if (/\\\\.mp4|\\\\.m3u8|\\\\.flv/.test(原链)) {\\r\\n                showLoading('获取不到官网地址，将直链播放');\\r\\n                return JSON.stringify({\\r\\n                    urls: [原链],\\r\\n                    names: ['预留弹幕接口'],\\r\\n                    danmu: getVar('dm_share','')\\r\\n                });\\r\\n            } else if (ts.test(原链)) {\\r\\n                官链 = 原链;\\r\\n            } else {\\r\\n                showLoading('获取不到官网地址，将直链播放');\\r\\n                //盗版站地址\\r\\n                return JSON.stringify({\\r\\n                    urls: [playParse.playerS(input)],\\r\\n                    names: ['预留弹幕接口'],\\r\\n                    danmu: getVar('dm_share','')\\r\\n                });\\r\\n            }\\r\\n        } catch (e) {\\r\\n            // 若发生异常则直接为空链走嗅探\\r\\n            官链 = 'hiker://empty';\\r\\n        }\\r\\n    } else {\\r\\n        官链 = input;\\r\\n    }\\r\\n    // 判断弹幕线路来源\\r\\n    if (官链.match(/ixigua|migu|sohu|pptv|le|cctv|1905.com/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm=$.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm=$.require('hiker://page/fufeng?rule=dm盒子').danmufun(官链);\\r\\n        } else {\\r\\n            // 默认Par\\r\\n            dm=$.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        }\\r\\n    } else if (官链.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm=$.require('hiker://page/fc?rule=dm盒子').fcdm(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm=$.require('hiker://page/par?rule=dm盒子').danmufun(官链);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm=$.require('hiker://page/fufeng?rule=dm盒子').danmufun(官链);\\r\\n        }\\r\\n    } else if (官链.match(/mgtv/)) {\\r\\n        dm=$.require('hiker://page/mgtv?rule=dm盒子').MGdm(官链);\\r\\n    } else if (官链.match(/qq.com/)) {\\r\\n        dm=$.require('hiker://page/TX?rule=dm盒子').TXdm(官链);\\r\\n    } else if (官链.match(/bili/)) {\\r\\n        dm=$.require('hiker://page/bilibili?rule=dm盒子').bilidm(官链);\\r\\n    } else {\\r\\n        showLoading('没有弹幕官网匹配');\\r\\n        dm=getVar('dm_share',''); \\r\\n    }\\r\\n    return JSON.stringify({\\r\\n        urls: [\\\"video://\\\" + input],\\r\\n        names: ['dm盒子'],\\r\\n        danmu: dm\\r\\n    })\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"仓库(通免)\",\"path\":\"drDmLazy.js\",\"rule\":\"$.exports.getFor = function (vipUrl, playUrl) {\\r\\n    function x5rule(playUrl, ms, tm, rechange) {\\r\\n        // log('调用仓库免嗅探传参超时为:'+ms);\\r\\n        tm = parseInt(tm) || 5000;\\r\\n        const {\\r\\n            isVideo,\\r\\n            getHeaders,\\r\\n            isBadVideo\\r\\n        } = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\r\\n        let realUrl = isVideo(playUrl, rechange);\\r\\n        //log(realUrl);\\r\\n        if (typeof (realUrl) == 'string') { //bool值就是失败\\r\\n            try {\\r\\n                let rurl = realUrl.split(\\\";\\\")[0].split(\\\"#\\\")[0];\\r\\n                return JSON.parse(request(rurl, {\\r\\n                    timeout: tm\\r\\n                })).url\\r\\n            } catch (e) {\\r\\n                return realUrl\\r\\n            }\\r\\n            //return realUrl\\r\\n        }\\r\\n        //log(\\\"访问超时:\\\"+tm);\\r\\n        log(\\\"尝试道长仓库x5免嗅:\\\" + playUrl);\\r\\n        clearVar(\\\"_x5jxUrl\\\");\\r\\n        let bad = $(\\\"网络不佳或者疑似对方网站挂了，你要查看其网页吗？\\\").confirm((playUrl) => {\\r\\n            log(\\\"网站看起来挂了:\\\" + playUrl);\\r\\n            return playUrl\\r\\n        }, playUrl);\\r\\n        try {\\r\\n            var back = request(playUrl, {\\r\\n                headers: getHeaders(playUrl),\\r\\n                timeout: tm\\r\\n            });\\r\\n            //var back=fetch(playUrl,{headers: {'User-Agent': PC_UA}});\\r\\n            if (!back) {\\r\\n                log(\\\"网站\\\" + playUrl + \\\"确实啥也没返回\\\");\\r\\n                return bad\\r\\n            } else if (/#EXTINF/.test(back)) {\\r\\n                //let lcache=\\\"/storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8\\\";\\r\\n                //writeFile(lcache,back);\\r\\n                //return lcache+\\\"##\\\"+playUrl+\\\"#isVideo=true#\\\"\\r\\n                playUrl = cacheM3u8(playUrl);\\r\\n                return playUrl\\r\\n            } else if ((!/触发了防盗链|未授权|接口防盗/.test(back)) && (!/http|url/.test(back)) && (!/msg|code|html/.test(back))) {\\r\\n                log(back);\\r\\n                return 'toast://疑似对方数据加密了，具体数据看日志'\\r\\n            }\\r\\n        } catch (e) {\\r\\n            log(e.message);\\r\\n            return bad\\r\\n        }\\r\\n        log('开始x5免嗅探');\\r\\n        // require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/lsg.js');//引用本地储存插件\\r\\n        const lsg = $.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\"); //引用子页面本地储存插件\\r\\n        let local_ms = lsg.getItem('timeout');\\r\\n        let ms = parseInt(ms) || parseInt(local_ms) || 5000;\\r\\n        let max_count = Math.ceil(ms / 250);\\r\\n        log(\\\"本次嗅探超时:\\\" + ms + \\\"共计待抓包:\\\" + max_count + \\\"次\\\");\\r\\n        showLoading('嗅探中，若失败就切换web嗅探...');\\r\\n        let _x5 = $.toString((isVideo, rechange, playUrl, max_count, PC_UA, isBadVideo) => {\\r\\n            try {\\r\\n                if (typeof (fba) == 'undefined' || !fba) {\\r\\n                    var fba = fy_bridge_app;\\r\\n                }\\r\\n                try {\\r\\n                    if (typeof (request) == 'undefined' || !request) {\\r\\n                        eval(fba.getInternalJs());\\r\\n                    }\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message);\\r\\n                }\\r\\n                fba.putVar(\\\"_x5jxUrl\\\", playUrl);\\r\\n                if (window.count == null) {\\r\\n                    window.count = 1;\\r\\n                }\\r\\n                let text = '';\\r\\n                try {\\r\\n                    text = document.querySelector(\\\"body\\\").innerText;\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message)\\r\\n                }\\r\\n                if (/触发了防盗链|未授权|接口防盗/.test(text) && window.count === 1) {\\r\\n                    fba.log(\\\"检测到有授权，开始过授权\\\");\\r\\n                    //location.reload();\\r\\n                    location.href = fba.getVar(\\\"_x5jxUrl\\\");\\r\\n                }\\r\\n                window.count++;\\r\\n                // fba.log('count:'+window.count+',max_count:'+max_count);\\r\\n                if (window.count >= max_count) {\\r\\n                    fba.log(\\\"超过\\\" + max_count * 250 + \\\"毫秒未获取到资源地址，跳到源网页,以下是加载过的地址\\\");\\r\\n                    try {\\r\\n                        let text = document.querySelector(\\\"body\\\").innerText;\\r\\n                        // fba.log(text);\\r\\n                    } catch (e) {\\r\\n                        fba.log(e.message)\\r\\n                    }\\r\\n                    fba.log(JSON.stringify(_getUrls()));\\r\\n                    return fba.getVar(\\\"_x5jxUrl\\\");\\r\\n                }\\r\\n\\r\\n                function muteMe(elem) {\\r\\n                    try {\\r\\n                        elem.pause();\\r\\n                    } catch (e) {}\\r\\n                }\\r\\n                var videos = document.querySelectorAll(\\\"video\\\"),\\r\\n                    audios = document.querySelectorAll(\\\"audio\\\"),\\r\\n                    v2 = document.querySelectorAll(\\\"embed\\\"),\\r\\n                    v3 = document.querySelectorAll(\\\"#player\\\");\\r\\n                try {\\r\\n                    [].forEach.call(videos, function (video) {\\r\\n                        muteMe(video);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(audios, function (audio) {\\r\\n                        muteMe(audio);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(v2, function (v) {\\r\\n                        muteMe(v);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                try {\\r\\n                    [].forEach.call(v3, function (v) {\\r\\n                        muteMe(v);\\r\\n                    });\\r\\n                } catch (e) {}\\r\\n                var urls = _getUrls();\\r\\n                // fba.log(JSON.stringify(urls));\\r\\n                try {\\r\\n                    for (let i in urls) {\\r\\n                        let u = urls[i];\\r\\n                        try {\\r\\n                            u = decodeURIComponent(u);\\r\\n                        } catch (e) {\\r\\n                            u = unescape(u);\\r\\n                        }\\r\\n                        //\\r\\n                        if (/url=http/.test(u)) {\\r\\n                            u = u.split(\\\"url=\\\").slice(-1)[0];\\r\\n                            // fba.log(\\\"url分割:\\\"+u);\\r\\n                        } else if (/url=\\\\//.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                            u = host + u.split(\\\"url=\\\").slice(-1)[0];\\r\\n                            // fba.log(\\\"url分割:\\\"+u);\\r\\n                        } else if (/vid=http/.test(u)) {\\r\\n                            u = u.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                            fba.log(\\\"vid分割:\\\" + u);\\r\\n                        } else if (/vid=\\\\//.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            let host = u.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                            u = host + u.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                            fba.log(\\\"vid分割:\\\" + u);\\r\\n                        } else if (/\\\\?(.*)=http/.test(u) && /\\\\.m3u8/.test(u)) {\\r\\n                            u = \\\"http\\\" + u.split(/\\\\?(.*)=http/).slice(-1)[0];\\r\\n                            fba.log(\\\"其他分割:\\\" + u);\\r\\n                        }\\r\\n                        //|index\\\\.m3u8$\\r\\n                        else if (/\\\\/1\\\\.m3u8/.test(u)) {\\r\\n                            continue;\\r\\n                        }\\r\\n                        u = u.replace(/&from=.*|&next=.*|&jump=.*/, '');\\r\\n                        let realUrl = isVideo(u, rechange);\\r\\n                        if (typeof (realUrl) == 'string' && !isBadVideo(u)) { //过滤吊毛视频\\r\\n                            //fy_bridge_app.setWebUa(PC_UA);\\r\\n                            if (typeof (fba.getHeaderUrl) !== 'undefined' && typeof (rechange) !== 'function') {\\r\\n                                // let backUrl = fba.getHeaderUrl(u.replace(\\\";{\\\",\\\"#isVideo=true#;{\\\"));\\r\\n                                let backUrl = fba.getHeaderUrl(urls[i]).replace(';{', '#ignoreImg=true##isVideo=true#;{');\\r\\n                                let u1 = backUrl.split('#ignoreImg')[0];\\r\\n                                let u2 = '#ignoreImg' + backUrl.split('#ignoreImg')[1];\\r\\n                                u1 = u1.replace(/&from=.*|&next=.*|&jump=.*/, '');\\r\\n                                if (/url=http/.test(u1)) {\\r\\n                                    u1 = u1.split(\\\"url=\\\").slice(-1)[0];\\r\\n                                } else if (/url=\\\\//.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                                    u1 = host1 + u1.split(\\\"url=\\\").slice(-1)[0];\\r\\n                                    // fba.log(\\\"url分割:\\\"+u);\\r\\n                                } else if (/vid=http/.test(u1)) {\\r\\n                                    u1 = u1.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                                } else if (/vid=\\\\//.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    let host1 = u1.match(/(.*)\\\\/\\\\/(.*?)\\\\//)[0];\\r\\n                                    u1 = host1 + u1.split(\\\"vid=\\\").slice(-1)[0];\\r\\n                                } else if (/\\\\?(.*)=http/.test(u1) && /\\\\.m3u8/.test(u1)) {\\r\\n                                    u1 = \\\"http\\\" + u1.split(/\\\\?(.*)=http/).slice(-1)[0];\\r\\n                                }\\r\\n                                backUrl = u1 + u2;\\r\\n                                // fba.log('返回自动加cookie链接:'+backUrl);\\r\\n                                fba.log('返回链接:' + u + '并自动加了cookie,具体cookie在视频播放处查看');\\r\\n                                // return backUrl;\\r\\n                                return JSON.stringify({\\r\\n                                    urls: [u1 + '#ignoreImg=true##isVideo=true#'],\\r\\n                                    names: ['dm盒子'],\\r\\n                                    danmu: fba.getVar('dmPath')\\r\\n                                }) + u2.replace('#ignoreImg=true##isVideo=true#;', ';');\\r\\n                            } else {\\r\\n                                fba.log(\\\"返回仓库x5免嗅结果:\\\" + realUrl);\\r\\n                                return realUrl\\r\\n                            }\\r\\n                        }\\r\\n                    }\\r\\n                } catch (e) {\\r\\n                    fba.log(e.message)\\r\\n                }\\r\\n            } catch (e) {\\r\\n                // fy_bridge_app.log('x5大范围错误:'+e.message);\\r\\n                alert('x5大范围错误:' + e.message);\\r\\n                return 'toast://报错结束x5'\\r\\n            }\\r\\n        }, isVideo, rechange, playUrl, max_count, PC_UA, isBadVideo);\\r\\n        let useWeb = lsg.getItem(\\\"通免\\\", \\\"X5\\\") === \\\"WEB\\\";\\r\\n        //log(\\\"仓库使用web通免替代x5:\\\"+useWeb);\\r\\n        let ruleHead = useWeb && parseInt(getAppVersion()) >= 2339 ? \\\"webRule://\\\" : \\\"x5Rule://\\\";\\r\\n        let x5Url = ruleHead + playUrl + '@' + _x5;\\r\\n        return x5Url\\r\\n    }\\r\\n    // 判断弹幕线路来源\\r\\n    if (vipUrl.match(/ixigua|migu|sohu|pptv|le|cctv|1905.com/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else {\\r\\n            // 默认Par\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/youku|qiyi/)) {\\r\\n        if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fc官弹') {\\r\\n            dm = $.require('hiker://page/fc?rule=dm盒子').fcdm(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'par') {\\r\\n            dm = $.require('hiker://page/par?rule=dm盒子').danmufun(vipUrl);\\r\\n        } else if (JSON.parse(readFile('hiker://files/dm盒子/settings.json')).dmFrom == 'fufeng') {\\r\\n            dm = $.require('hiker://page/fufeng?rule=dm盒子').danmufun(vipUrl);\\r\\n        }\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/mgtv/)) {\\r\\n        dm = $.require('hiker://page/mgtv?rule=dm盒子').MGdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/qq.com/)) {\\r\\n        dm = $.require('hiker://page/TX?rule=dm盒子').TXdm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else if (vipUrl.match(/bili/)) {\\r\\n        dm = $.require('hiker://page/bilibili?rule=dm盒子').bilidm(vipUrl);\\r\\n        putVar('dmPath', dm);\\r\\n        return x5rule(playUrl, 8000);\\r\\n    } else {\\r\\n        showLoading('没有弹幕官网匹配');\\r\\n        putVar('dmPath', getVar('dm_share',''));\\r\\n        return x5rule(playUrl, 8000);\\r\\n    }\\r\\n}\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"文档\",\"path\":\"doc\",\"rule\":\"js:\\r\\nd = [];\\r\\ndocType = MY_PARAMS.docType;\\r\\nif (docType == 'help') {\\r\\n    path = 'hiker://files/cache/Instruction_Book.html';\\r\\n} else {\\r\\n    path = 'hiker://files/cache/API.html';\\r\\n}\\r\\nd.push({\\r\\n    col_type: 'x5_webview_single',\\r\\n    url: getPath(path),\\r\\n    desc: 'auto'\\r\\n});\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"API文档\",\"path\":\"API.html\",\"rule\":\"<!doctype html>\\n<html>\\n<head>\\n<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>\\n<title>dm盒子API文档</title><link href='https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext' rel='stylesheet' type='text/css' /><style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:\\\"Lucida Console\\\",Consolas,\\\"Courier\\\",monospace; }\\nhtml { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }\\nbody { margin: 0px; padding: 0px; height: auto; bottom: 0px; top: 0px; left: 0px; right: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }\\niframe { margin: auto; }\\na.url { word-break: break-all; }\\na:active, a:hover { outline: 0px; }\\n.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }\\n#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 40px; }\\n#write.first-line-indent p { text-indent: 2em; }\\n#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }\\n#write.first-line-indent li { margin-left: 2em; }\\n.for-image #write { padding-left: 8px; padding-right: 8px; }\\nbody.typora-export { padding-left: 30px; padding-right: 30px; }\\n.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }\\n.typora-export .task-list-item input { pointer-events: none; }\\n@media screen and (max-width: 500px) {\\n  body.typora-export { padding-left: 0px; padding-right: 0px; }\\n  #write { padding-left: 20px; padding-right: 20px; }\\n  .CodeMirror-sizer { margin-left: 0px !important; }\\n  .CodeMirror-gutters { display: none !important; }\\n}\\n#write li > figure:last-child { margin-bottom: 0.5rem; }\\n#write ol, #write ul { position: relative; }\\nimg { max-width: 100%; vertical-align: middle; image-orientation: from-image; }\\nbutton, input, select, textarea { color: inherit; font: inherit; }\\ninput[type=\\\"checkbox\\\"], input[type=\\\"radio\\\"] { line-height: normal; padding: 0px; }\\n*, ::after, ::before { box-sizing: border-box; }\\n#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }\\n#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }\\np { line-height: inherit; }\\nh1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }\\np { orphans: 4; }\\nh1 { font-size: 2rem; }\\nh2 { font-size: 1.8rem; }\\nh3 { font-size: 1.6rem; }\\nh4 { font-size: 1.4rem; }\\nh5 { font-size: 1.2rem; }\\nh6 { font-size: 1rem; }\\n.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }\\n.hidden { display: none; }\\n.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }\\na { cursor: pointer; }\\nsup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }\\nsup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }\\n#write input[type=\\\"checkbox\\\"] { cursor: pointer; width: inherit; height: inherit; }\\nfigure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }\\nfigure > table { margin: 0px; }\\ntr { break-inside: avoid; break-after: auto; }\\nthead { display: table-header-group; }\\ntable { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }\\ntable.md-table td { min-width: 32px; }\\n.CodeMirror-gutters { border-right: 0px; background-color: inherit; }\\n.CodeMirror-linenumber { user-select: none; }\\n.CodeMirror { text-align: left; }\\n.CodeMirror-placeholder { opacity: 0.3; }\\n.CodeMirror pre { padding: 0px 4px; }\\n.CodeMirror-lines { padding: 0px; }\\ndiv.hr:focus { cursor: none; }\\n#write pre { white-space: pre-wrap; }\\n#write.fences-no-line-wrapping pre { white-space: pre; }\\n#write pre.ty-contain-cm { white-space: normal; }\\n.CodeMirror-gutters { margin-right: 4px; }\\n.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }\\n.md-diagram-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }\\n#write .md-fences.mock-cm { white-space: pre-wrap; }\\n.md-fences.md-fences-with-lineno { padding-left: 0px; }\\n#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }\\n.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }\\n.CodeMirror-line, twitterwidget { break-inside: avoid; }\\n.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }\\n.footnotes + .footnotes { margin-top: 0px; }\\n.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }\\nli div { padding-top: 0px; }\\nblockquote { margin: 1rem 0px; }\\nli .mathjax-block, li p { margin: 0.5rem 0px; }\\nli { margin: 0px; position: relative; }\\nblockquote > :last-child { margin-bottom: 0px; }\\nblockquote > :first-child, li > :first-child { margin-top: 0px; }\\n.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }\\n#write .footnote-line { white-space: pre-wrap; }\\n@media print {\\n  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }\\n  #write { margin-top: 0px; padding-top: 0px; border-color: transparent !important; }\\n  .typora-export * { -webkit-print-color-adjust: exact; }\\n  html.blink-to-pdf { font-size: 13px; }\\n  .typora-export #write { break-after: avoid; }\\n  .typora-export #write::after { height: 0px; }\\n  .is-mac table { break-inside: avoid; }\\n}\\n.footnote-line { margin-top: 0.714em; font-size: 0.7em; }\\na img, img a { cursor: pointer; }\\npre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }\\np > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }\\n#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }\\np > .md-image:only-child { display: inline-block; width: 100%; }\\n#write .MathJax_Display { margin: 0.8em 0px 0px; }\\n.md-math-block { width: 100%; }\\n.md-math-block:not(:empty)::after { display: none; }\\n[contenteditable=\\\"true\\\"]:active, [contenteditable=\\\"true\\\"]:focus, [contenteditable=\\\"false\\\"]:active, [contenteditable=\\\"false\\\"]:focus { outline: 0px; box-shadow: none; }\\n.md-task-list-item { position: relative; list-style-type: none; }\\n.task-list-item.md-task-list-item { padding-left: 0px; }\\n.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }\\n.math { font-size: 1rem; }\\n.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }\\n.md-toc-content { position: relative; margin-left: 0px; }\\n.md-toc-content::after, .md-toc::after { display: none; }\\n.md-toc-item { display: block; color: rgb(65, 131, 196); }\\n.md-toc-item a { text-decoration: none; }\\n.md-toc-inner:hover { text-decoration: underline; }\\n.md-toc-inner { display: inline-block; cursor: pointer; }\\n.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }\\n.md-toc-h2 .md-toc-inner { margin-left: 2em; }\\n.md-toc-h3 .md-toc-inner { margin-left: 4em; }\\n.md-toc-h4 .md-toc-inner { margin-left: 6em; }\\n.md-toc-h5 .md-toc-inner { margin-left: 8em; }\\n.md-toc-h6 .md-toc-inner { margin-left: 10em; }\\n@media screen and (max-width: 48em) {\\n  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }\\n  .md-toc-h4 .md-toc-inner { margin-left: 5em; }\\n  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }\\n  .md-toc-h6 .md-toc-inner { margin-left: 8em; }\\n}\\na.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }\\n.footnote-line a:not(.reversefootnote) { color: inherit; }\\n.md-attr { display: none; }\\n.md-fn-count::after { content: \\\".\\\"; }\\ncode, pre, samp, tt { font-family: var(--monospace); }\\nkbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }\\n.md-comment { color: rgb(162, 127, 3); opacity: 0.8; font-family: var(--monospace); }\\ncode { text-align: left; vertical-align: initial; }\\na.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }\\n.md-inline-math .MathJax_SVG .noError { display: none !important; }\\n.html-for-mac .inline-math-svg .MathJax_SVG { vertical-align: 0.2px; }\\n.md-math-block .MathJax_SVG_Display { text-align: center; margin: 0px; position: relative; text-indent: 0px; max-width: none; max-height: none; min-height: 0px; min-width: 100%; width: auto; overflow-y: hidden; display: block !important; }\\n.MathJax_SVG_Display, .md-inline-math .MathJax_SVG_Display { width: auto; margin: inherit; display: inline-block !important; }\\n.MathJax_SVG .MJX-monospace { font-family: var(--monospace); }\\n.MathJax_SVG .MJX-sans-serif { font-family: sans-serif; }\\n.MathJax_SVG { display: inline; font-style: normal; font-weight: 400; line-height: normal; zoom: 90%; text-indent: 0px; text-align: left; text-transform: none; letter-spacing: normal; word-spacing: normal; overflow-wrap: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; border: 0px; padding: 0px; margin: 0px; }\\n.MathJax_SVG * { transition: none 0s ease 0s; }\\n.MathJax_SVG_Display svg { vertical-align: middle !important; margin-bottom: 0px !important; margin-top: 0px !important; }\\n.os-windows.monocolor-emoji .md-emoji { font-family: \\\"Segoe UI Symbol\\\", sans-serif; }\\n.md-diagram-panel > svg { max-width: 100%; }\\n[lang=\\\"flow\\\"] svg, [lang=\\\"mermaid\\\"] svg { max-width: 100%; height: auto; }\\n[lang=\\\"mermaid\\\"] .node text { font-size: 1rem; }\\ntable tr th { border-bottom: 0px; }\\nvideo { max-width: 100%; display: block; margin: 0px auto; }\\niframe { max-width: 100%; width: 100%; border: none; }\\n.highlight td, .highlight tr { border: 0px; }\\nsvg[id^=\\\"mermaidChart\\\"] { line-height: 1em; }\\nmark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }\\n.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }\\nmark .md-meta { color: rgb(0, 0, 0); opacity: 0.3 !important; }\\n@media print {\\n  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }\\n}\\n\\n\\n.CodeMirror { height: auto; }\\n.CodeMirror.cm-s-inner { background: inherit; }\\n.CodeMirror-scroll { overflow: auto hidden; z-index: 3; }\\n.CodeMirror-gutter-filler, .CodeMirror-scrollbar-filler { background-color: rgb(255, 255, 255); }\\n.CodeMirror-gutters { border-right: 1px solid rgb(221, 221, 221); background: inherit; white-space: nowrap; }\\n.CodeMirror-linenumber { padding: 0px 3px 0px 5px; text-align: right; color: rgb(153, 153, 153); }\\n.cm-s-inner .cm-keyword { color: rgb(119, 0, 136); }\\n.cm-s-inner .cm-atom, .cm-s-inner.cm-atom { color: rgb(34, 17, 153); }\\n.cm-s-inner .cm-number { color: rgb(17, 102, 68); }\\n.cm-s-inner .cm-def { color: rgb(0, 0, 255); }\\n.cm-s-inner .cm-variable { color: rgb(0, 0, 0); }\\n.cm-s-inner .cm-variable-2 { color: rgb(0, 85, 170); }\\n.cm-s-inner .cm-variable-3 { color: rgb(0, 136, 85); }\\n.cm-s-inner .cm-string { color: rgb(170, 17, 17); }\\n.cm-s-inner .cm-property { color: rgb(0, 0, 0); }\\n.cm-s-inner .cm-operator { color: rgb(152, 26, 26); }\\n.cm-s-inner .cm-comment, .cm-s-inner.cm-comment { color: rgb(170, 85, 0); }\\n.cm-s-inner .cm-string-2 { color: rgb(255, 85, 0); }\\n.cm-s-inner .cm-meta { color: rgb(85, 85, 85); }\\n.cm-s-inner .cm-qualifier { color: rgb(85, 85, 85); }\\n.cm-s-inner .cm-builtin { color: rgb(51, 0, 170); }\\n.cm-s-inner .cm-bracket { color: rgb(153, 153, 119); }\\n.cm-s-inner .cm-tag { color: rgb(17, 119, 0); }\\n.cm-s-inner .cm-attribute { color: rgb(0, 0, 204); }\\n.cm-s-inner .cm-header, .cm-s-inner.cm-header { color: rgb(0, 0, 255); }\\n.cm-s-inner .cm-quote, .cm-s-inner.cm-quote { color: rgb(0, 153, 0); }\\n.cm-s-inner .cm-hr, .cm-s-inner.cm-hr { color: rgb(153, 153, 153); }\\n.cm-s-inner .cm-link, .cm-s-inner.cm-link { color: rgb(0, 0, 204); }\\n.cm-negative { color: rgb(221, 68, 68); }\\n.cm-positive { color: rgb(34, 153, 34); }\\n.cm-header, .cm-strong { font-weight: 700; }\\n.cm-del { text-decoration: line-through; }\\n.cm-em { font-style: italic; }\\n.cm-link { text-decoration: underline; }\\n.cm-error { color: red; }\\n.cm-invalidchar { color: red; }\\n.cm-constant { color: rgb(38, 139, 210); }\\n.cm-defined { color: rgb(181, 137, 0); }\\ndiv.CodeMirror span.CodeMirror-matchingbracket { color: rgb(0, 255, 0); }\\ndiv.CodeMirror span.CodeMirror-nonmatchingbracket { color: rgb(255, 34, 34); }\\n.cm-s-inner .CodeMirror-activeline-background { background: inherit; }\\n.CodeMirror { position: relative; overflow: hidden; }\\n.CodeMirror-scroll { height: 100%; outline: 0px; position: relative; box-sizing: content-box; background: inherit; }\\n.CodeMirror-sizer { position: relative; }\\n.CodeMirror-gutter-filler, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-vscrollbar { position: absolute; z-index: 6; display: none; }\\n.CodeMirror-vscrollbar { right: 0px; top: 0px; overflow: hidden; }\\n.CodeMirror-hscrollbar { bottom: 0px; left: 0px; overflow: hidden; }\\n.CodeMirror-scrollbar-filler { right: 0px; bottom: 0px; }\\n.CodeMirror-gutter-filler { left: 0px; bottom: 0px; }\\n.CodeMirror-gutters { position: absolute; left: 0px; top: 0px; padding-bottom: 30px; z-index: 3; }\\n.CodeMirror-gutter { white-space: normal; height: 100%; box-sizing: content-box; padding-bottom: 30px; margin-bottom: -32px; display: inline-block; }\\n.CodeMirror-gutter-wrapper { position: absolute; z-index: 4; background: 0px 0px !important; border: none !important; }\\n.CodeMirror-gutter-background { position: absolute; top: 0px; bottom: 0px; z-index: 4; }\\n.CodeMirror-gutter-elt { position: absolute; cursor: default; z-index: 4; }\\n.CodeMirror-lines { cursor: text; }\\n.CodeMirror pre { border-radius: 0px; border-width: 0px; background: 0px 0px; font-family: inherit; font-size: inherit; margin: 0px; white-space: pre; overflow-wrap: normal; color: inherit; z-index: 2; position: relative; overflow: visible; }\\n.CodeMirror-wrap pre { overflow-wrap: break-word; white-space: pre-wrap; word-break: normal; }\\n.CodeMirror-code pre { border-right: 30px solid transparent; width: fit-content; }\\n.CodeMirror-wrap .CodeMirror-code pre { border-right: none; width: auto; }\\n.CodeMirror-linebackground { position: absolute; left: 0px; right: 0px; top: 0px; bottom: 0px; z-index: 0; }\\n.CodeMirror-linewidget { position: relative; z-index: 2; overflow: auto; }\\n.CodeMirror-wrap .CodeMirror-scroll { overflow-x: hidden; }\\n.CodeMirror-measure { position: absolute; width: 100%; height: 0px; overflow: hidden; visibility: hidden; }\\n.CodeMirror-measure pre { position: static; }\\n.CodeMirror div.CodeMirror-cursor { position: absolute; visibility: hidden; border-right: none; width: 0px; }\\n.CodeMirror div.CodeMirror-cursor { visibility: hidden; }\\n.CodeMirror-focused div.CodeMirror-cursor { visibility: inherit; }\\n.cm-searching { background: rgba(255, 255, 0, 0.4); }\\n@media print {\\n  .CodeMirror div.CodeMirror-cursor { visibility: hidden; }\\n}\\n\\n\\n:root {\\n    --side-bar-bg-color: #fafafa;\\n    --control-text-color: #777;\\n}\\n\\n@include-when-export url(https://fonts.loli.net/css?family=Open+Sans:400italic,700italic,700,400&subset=latin,latin-ext);\\n\\n/* open-sans-regular - latin-ext_latin */\\n  /* open-sans-italic - latin-ext_latin */\\n    /* open-sans-700 - latin-ext_latin */\\n    /* open-sans-700italic - latin-ext_latin */\\n  html {\\n    font-size: 16px;\\n}\\n\\nbody {\\n    font-family: \\\"Open Sans\\\",\\\"Clear Sans\\\", \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n    color: rgb(51, 51, 51);\\n    line-height: 1.6;\\n}\\n\\n#write {\\n    max-width: 860px;\\n  \\tmargin: 0 auto;\\n  \\tpadding: 30px;\\n    padding-bottom: 100px;\\n}\\n\\n@media only screen and (min-width: 1400px) {\\n\\t#write {\\n\\t\\tmax-width: 1024px;\\n\\t}\\n}\\n\\n@media only screen and (min-width: 1800px) {\\n\\t#write {\\n\\t\\tmax-width: 1200px;\\n\\t}\\n}\\n\\n#write > ul:first-child,\\n#write > ol:first-child{\\n    margin-top: 30px;\\n}\\n\\na {\\n    color: #4183C4;\\n}\\nh1,\\nh2,\\nh3,\\nh4,\\nh5,\\nh6 {\\n    position: relative;\\n    margin-top: 1rem;\\n    margin-bottom: 1rem;\\n    font-weight: bold;\\n    line-height: 1.4;\\n    cursor: text;\\n}\\nh1:hover a.anchor,\\nh2:hover a.anchor,\\nh3:hover a.anchor,\\nh4:hover a.anchor,\\nh5:hover a.anchor,\\nh6:hover a.anchor {\\n    text-decoration: none;\\n}\\nh1 tt,\\nh1 code {\\n    font-size: inherit;\\n}\\nh2 tt,\\nh2 code {\\n    font-size: inherit;\\n}\\nh3 tt,\\nh3 code {\\n    font-size: inherit;\\n}\\nh4 tt,\\nh4 code {\\n    font-size: inherit;\\n}\\nh5 tt,\\nh5 code {\\n    font-size: inherit;\\n}\\nh6 tt,\\nh6 code {\\n    font-size: inherit;\\n}\\nh1 {\\n    font-size: 2.25em;\\n    line-height: 1.2;\\n    border-bottom: 1px solid #eee;\\n}\\nh2 {\\n    font-size: 1.75em;\\n    line-height: 1.225;\\n    border-bottom: 1px solid #eee;\\n}\\n\\n/*@media print {\\n    .typora-export h1,\\n    .typora-export h2 {\\n        border-bottom: none;\\n        padding-bottom: initial;\\n    }\\n\\n    .typora-export h1::after,\\n    .typora-export h2::after {\\n        content: \\\"\\\";\\n        display: block;\\n        height: 100px;\\n        margin-top: -96px;\\n        border-top: 1px solid #eee;\\n    }\\n}*/\\n\\nh3 {\\n    font-size: 1.5em;\\n    line-height: 1.43;\\n}\\nh4 {\\n    font-size: 1.25em;\\n}\\nh5 {\\n    font-size: 1em;\\n}\\nh6 {\\n   font-size: 1em;\\n    color: #777;\\n}\\np,\\nblockquote,\\nul,\\nol,\\ndl,\\ntable{\\n    margin: 0.8em 0;\\n}\\nli>ol,\\nli>ul {\\n    margin: 0 0;\\n}\\nhr {\\n    height: 2px;\\n    padding: 0;\\n    margin: 16px 0;\\n    background-color: #e7e7e7;\\n    border: 0 none;\\n    overflow: hidden;\\n    box-sizing: content-box;\\n}\\n\\nli p.first {\\n    display: inline-block;\\n}\\nul,\\nol {\\n    padding-left: 30px;\\n}\\nul:first-child,\\nol:first-child {\\n    margin-top: 0;\\n}\\nul:last-child,\\nol:last-child {\\n    margin-bottom: 0;\\n}\\nblockquote {\\n    border-left: 4px solid #dfe2e5;\\n    padding: 0 15px;\\n    color: #777777;\\n}\\nblockquote blockquote {\\n    padding-right: 0;\\n}\\ntable {\\n    padding: 0;\\n    word-break: initial;\\n}\\ntable tr {\\n    border-top: 1px solid #dfe2e5;\\n    margin: 0;\\n    padding: 0;\\n}\\ntable tr:nth-child(2n),\\nthead {\\n    background-color: #f8f8f8;\\n}\\ntable tr th {\\n    font-weight: bold;\\n    border: 1px solid #dfe2e5;\\n    border-bottom: 0;\\n    margin: 0;\\n    padding: 6px 13px;\\n}\\ntable tr td {\\n    border: 1px solid #dfe2e5;\\n    margin: 0;\\n    padding: 6px 13px;\\n}\\ntable tr th:first-child,\\ntable tr td:first-child {\\n    margin-top: 0;\\n}\\ntable tr th:last-child,\\ntable tr td:last-child {\\n    margin-bottom: 0;\\n}\\n\\n.CodeMirror-lines {\\n    padding-left: 4px;\\n}\\n\\n.code-tooltip {\\n    box-shadow: 0 1px 1px 0 rgba(0,28,36,.3);\\n    border-top: 1px solid #eef2f2;\\n}\\n\\n.md-fences,\\ncode,\\ntt {\\n    border: 1px solid #e7eaed;\\n    background-color: #f8f8f8;\\n    border-radius: 3px;\\n    padding: 0;\\n    padding: 2px 4px 0px 4px;\\n    font-size: 0.9em;\\n}\\n\\ncode {\\n    background-color: #f3f4f4;\\n    padding: 0 2px 0 2px;\\n}\\n\\n.md-fences {\\n    margin-bottom: 15px;\\n    margin-top: 15px;\\n    padding-top: 8px;\\n    padding-bottom: 6px;\\n}\\n\\n\\n.md-task-list-item > input {\\n  margin-left: -1.3em;\\n}\\n\\n@media print {\\n    html {\\n        font-size: 13px;\\n    }\\n    table,\\n    pre {\\n        page-break-inside: avoid;\\n    }\\n    pre {\\n        word-wrap: break-word;\\n    }\\n}\\n\\n.md-fences {\\n\\tbackground-color: #f8f8f8;\\n}\\n#write pre.md-meta-block {\\n\\tpadding: 1rem;\\n    font-size: 85%;\\n    line-height: 1.45;\\n    background-color: #f7f7f7;\\n    border: 0;\\n    border-radius: 3px;\\n    color: #777777;\\n    margin-top: 0 !important;\\n}\\n\\n.mathjax-block>.code-tooltip {\\n\\tbottom: .375rem;\\n}\\n\\n.md-mathjax-midline {\\n    background: #fafafa;\\n}\\n\\n#write>h3.md-focus:before{\\n\\tleft: -1.5625rem;\\n\\ttop: .375rem;\\n}\\n#write>h4.md-focus:before{\\n\\tleft: -1.5625rem;\\n\\ttop: .285714286rem;\\n}\\n#write>h5.md-focus:before{\\n\\tleft: -1.5625rem;\\n\\ttop: .285714286rem;\\n}\\n#write>h6.md-focus:before{\\n\\tleft: -1.5625rem;\\n\\ttop: .285714286rem;\\n}\\n.md-image>.md-meta {\\n    /*border: 1px solid #ddd;*/\\n    border-radius: 3px;\\n    padding: 2px 0px 0px 4px;\\n    font-size: 0.9em;\\n    color: inherit;\\n}\\n\\n.md-tag {\\n    color: #a7a7a7;\\n    opacity: 1;\\n}\\n\\n.md-toc { \\n    margin-top:20px;\\n    padding-bottom:20px;\\n}\\n\\n.sidebar-tabs {\\n    border-bottom: none;\\n}\\n\\n#typora-quick-open {\\n    border: 1px solid #ddd;\\n    background-color: #f8f8f8;\\n}\\n\\n#typora-quick-open-item {\\n    background-color: #FAFAFA;\\n    border-color: #FEFEFE #e5e5e5 #e5e5e5 #eee;\\n    border-style: solid;\\n    border-width: 1px;\\n}\\n\\n/** focus mode */\\n.on-focus-mode blockquote {\\n    border-left-color: rgba(85, 85, 85, 0.12);\\n}\\n\\nheader, .context-menu, .megamenu-content, footer{\\n    font-family: \\\"Segoe UI\\\", \\\"Arial\\\", sans-serif;\\n}\\n\\n.file-node-content:hover .file-node-icon,\\n.file-node-content:hover .file-node-open-state{\\n    visibility: visible;\\n}\\n\\n.mac-seamless-mode #typora-sidebar {\\n    background-color: #fafafa;\\n    background-color: var(--side-bar-bg-color);\\n}\\n\\n.md-lang {\\n    color: #b4654d;\\n}\\n\\n.html-for-mac .context-menu {\\n    --item-hover-bg-color: #E6F0FE;\\n}\\n\\n#md-notification .btn {\\n    border: 0;\\n}\\n\\n.dropdown-menu .divider {\\n    border-color: #e5e5e5;\\n}\\n\\n.ty-preferences .window-content {\\n    background-color: #fafafa;\\n}\\n\\n.ty-preferences .nav-group-item.active {\\n    color: white;\\n    background: #999;\\n}\\n\\n\\n</style>\\n</head>\\n<body class='typora-export os-windows'>\\n<div id='write'  class=''><p><span>API文档</span></p><pre spellcheck=\\\"false\\\" class=\\\"md-fences md-end-block ty-contain-cm modeLoaded md-focus\\\" lang=\\\"js\\\" style=\\\"break-inside: unset;\\\"><div class=\\\"CodeMirror cm-s-inner CodeMirror-wrap CodeMirror-focused\\\" lang=\\\"js\\\"><div style=\\\"overflow: hidden; position: relative; width: 3px; height: 0px; top: 134.4px; left: 25.35px;\\\"><textarea autocorrect=\\\"off\\\" autocapitalize=\\\"off\\\" spellcheck=\\\"false\\\" tabindex=\\\"0\\\" style=\\\"position: absolute; bottom: -1em; padding: 0px; width: 1000px; height: 1em; outline: none;\\\"></textarea></div><div class=\\\"CodeMirror-scrollbar-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-gutter-filler\\\" cm-not-content=\\\"true\\\"></div><div class=\\\"CodeMirror-scroll\\\" tabindex=\\\"-1\\\"><div class=\\\"CodeMirror-sizer\\\" style=\\\"margin-left: 0px; margin-bottom: 0px; border-right-width: 0px; padding-right: 0px; padding-bottom: 0px;\\\"><div style=\\\"position: relative; top: 0px;\\\"><div class=\\\"CodeMirror-lines\\\" role=\\\"presentation\\\"><div role=\\\"presentation\\\" style=\\\"position: relative; outline: none;\\\"><div class=\\\"CodeMirror-measure\\\"><pre>x</pre></div><div class=\\\"CodeMirror-measure\\\"></div><div style=\\\"position: relative; z-index: 1;\\\"></div><div class=\\\"CodeMirror-code\\\" role=\\\"presentation\\\" style=\\\"\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">/*小程序调用，dm通免魔改</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">1、video原生通免lazy</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">2、香免</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">3、道长仓库通免</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">-----------------</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">4、远程调用——不依赖盒子</span></span></pre><div class=\\\"CodeMirror-activeline\\\" style=\\\"position: relative;\\\"><div class=\\\"CodeMirror-activeline-background CodeMirror-linebackground\\\"></div><div class=\\\"CodeMirror-gutter-background CodeMirror-activeline-gutter\\\" style=\\\"left: 0px; width: 0px;\\\"></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">*/</span></span></pre></div><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// video</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">lazy</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">$</span>(<span class=\\\"cm-string\\\">''</span>).<span class=\\\"cm-property\\\">lazyRule</span>(() <span class=\\\"cm-operator\\\">=&gt;</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/dmLazyV.js?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">dmLazy</span>();</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">})</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// 香免</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">lazy</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">$</span>(<span class=\\\"cm-string\\\">''</span>).<span class=\\\"cm-property\\\">lazyRule</span>(() <span class=\\\"cm-operator\\\">=&gt;</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/dmLazy.js?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">dmLazy</span>();</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">})</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// 道长</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">lazy</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">$</span>(<span class=\\\"cm-string\\\">''</span>).<span class=\\\"cm-property\\\">lazyRule</span>(() <span class=\\\"cm-operator\\\">=&gt;</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/drDmLazy.js?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">dmLazy</span>();</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">})</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// *远程文件——不依赖盒子（使用的香免）</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">lazy</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">$</span>(<span class=\\\"cm-string\\\">''</span>).<span class=\\\"cm-property\\\">lazyRule</span>(() <span class=\\\"cm-operator\\\">=&gt;</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-variable\\\">requireCache</span>(<span class=\\\"cm-string\\\">'http://hiker.nokia.press/hikerule/rulelist.json?id=5283'</span>, <span class=\\\"cm-number\\\">24</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">dmLazy</span>();</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">});</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span cm-text=\\\"\\\">​</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// ---------------------------------------------断插/魔断调用---------------------------</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">/*普通x5嗅探解析</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">1、video原生x5——结合配置助手使用，推荐*多线路可与JSON聚合，简单方便</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">2、香免x5</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">3、道长仓库x5</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">*/</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★</span> <span class=\\\"cm-variable\\\">video原生x5</span> <span class=\\\"cm-operator\\\">-</span> <span class=\\\"cm-variable\\\">可嗅探JSON★</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-variable\\\">setFile</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">readFile</span>(<span class=\\\"cm-string\\\">\\\"hiker://files/rules/cy/MyParse.json\\\"</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-variable\\\">eval</span>(<span class=\\\"cm-string\\\">\\\"configArray=\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable\\\">setFile</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">urls</span> <span class=\\\"cm-operator\\\">=</span> [];</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">names</span> <span class=\\\"cm-operator\\\">=</span> [];</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-variable\\\">configArray</span>.<span class=\\\"cm-property\\\">forEach</span>(<span class=\\\"cm-def\\\">item</span> <span class=\\\"cm-operator\\\">=&gt;</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-variable-2\\\">urls</span>.<span class=\\\"cm-property\\\">push</span>(<span class=\\\"cm-string\\\">\\\"video://\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">item</span>.<span class=\\\"cm-property\\\">url</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">vipUrl</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-variable-2\\\">names</span>.<span class=\\\"cm-property\\\">push</span>(<span class=\\\"cm-variable-2\\\">item</span>.<span class=\\\"cm-property\\\">name</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  })</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">\\\"hiker://page/videoDm.js?rule=dm盒子\\\"</span>).<span class=\\\"cm-property\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>, <span class=\\\"cm-variable-2\\\">urls</span>, <span class=\\\"cm-variable-2\\\">names</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★</span> <span class=\\\"cm-variable\\\">香免x5★</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">try</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">originUrl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-string\\\">'解析口'</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">vipUrl</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">\\\"hiker://page/x5dm.js?rule=dm盒子\\\"</span>).<span class=\\\"cm-property\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>, <span class=\\\"cm-variable-2\\\">originUrl</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  } <span class=\\\"cm-keyword\\\">catch</span> (<span class=\\\"cm-def\\\">e</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"toast://解析失败\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★</span> <span class=\\\"cm-variable\\\">道长仓库x5★</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">try</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">originUrl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-string\\\">'解析口'</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">vipUrl</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">\\\"hiker://page/drDm.js?rule=dm盒子\\\"</span>).<span class=\\\"cm-property\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>, <span class=\\\"cm-variable-2\\\">originUrl</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  } <span class=\\\"cm-keyword\\\">catch</span> (<span class=\\\"cm-def\\\">e</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"toast://解析失败\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// JSON解析</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">修改★</span> <span class=\\\"cm-variable\\\">JSON模板★</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-keyword\\\">function</span> (<span class=\\\"cm-def\\\">vipUrl</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">try</span> {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">var</span> <span class=\\\"cm-def\\\">bfurl</span> <span class=\\\"cm-operator\\\">=</span> <span class=\\\"cm-variable\\\">JSON</span>.<span class=\\\"cm-property\\\">parse</span>(<span class=\\\"cm-variable\\\">request</span>(<span class=\\\"cm-string\\\">\\\"解析口\\\"</span> <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-variable-2\\\">vipUrl</span>, {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-property\\\">timeout</span>: <span class=\\\"cm-number\\\">5000</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp;  })).<span class=\\\"cm-property\\\">url</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">if</span> (<span class=\\\"cm-variable-2\\\">bfurl</span> <span class=\\\"cm-operator\\\">==</span> <span class=\\\"cm-atom\\\">undefined</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"toast://parse Error~\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">\\\"hiker://page/jsondm.js?rule=dm盒子\\\"</span>).<span class=\\\"cm-property\\\">getFor</span>(<span class=\\\"cm-variable-2\\\">vipUrl</span>, <span class=\\\"cm-variable-2\\\">bfurl</span>) <span class=\\\"cm-operator\\\">+</span> <span class=\\\"cm-string\\\">\\\";{User-Agent@&amp;&amp;Referer@}\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  } <span class=\\\"cm-keyword\\\">catch</span> (<span class=\\\"cm-def\\\">e</span>) {</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp; &nbsp; &nbsp; &nbsp;<span class=\\\"cm-keyword\\\">return</span> <span class=\\\"cm-string\\\">\\\"toast://parse Error~\\\"</span>;</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"> &nbsp;  }</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\">}</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span cm-text=\\\"\\\">​</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// *单一弹幕函数调用接口——返回值是字符串形式的弹幕地址</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/TX?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">TXdm</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/mgtv?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">MGdm</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/bilibili?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">bilidm</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// par</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/par?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">danmufun</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// fufeng</span></span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/fufeng?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">danmufun</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-comment\\\">// fc</span></span></pre><div class=\\\"\\\" style=\\\"position: relative;\\\"><pre class=\\\" CodeMirror-line \\\" role=\\\"presentation\\\"><span role=\\\"presentation\\\" style=\\\"padding-right: 0.1px;\\\"><span class=\\\"cm-variable\\\">$</span>.<span class=\\\"cm-property\\\">require</span>(<span class=\\\"cm-string\\\">'hiker://page/fc?rule=dm盒子'</span>).<span class=\\\"cm-property\\\">fcdm</span>(<span class=\\\"cm-variable\\\">官链</span>);</span></pre></div></div></div></div></div></div><div style=\\\"position: absolute; height: 0px; width: 1px; border-bottom: 0px solid transparent; top: 2195px;\\\"></div><div class=\\\"CodeMirror-gutters\\\" style=\\\"display: none; height: 2195px;\\\"></div></div></div></pre><p>&nbsp;</p></div>\\n</body>\\n</html>\"}]","proxy":"","icon":"http://img-qn-0.51miz.com/Element/00/90/75/09/31c7bd2f_E907509_088f9c32.png!/quality/90/unsharp/true/compress/true/format/png/fh/320"},{"last_chapter_rule":"","title":"MyFieldᴰⁿ","author":"断念&道长魔改","version":429,"type":"tool","url":"hiker://empty","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"工具","year_url":"","find_rule":"js:\n//log(MOBILE_UA);\n    const {demoData,defaultSets,floors} = $.require(\"hiker://page/demoData?rule=MyFieldᴰⁿ\");\nconst {getOne,unique2,duplicates} = $.require(\"hiker://page/utils?rule=MyFieldᴰⁿ\");\nlet sjTest =[];for(let i in demoData){sjTest=sjTest.concat(demoData[i])}\nthis.d = [];\nconst jxItem = $.require(\"hiker://page/jxItem?rule=MyFieldᴰⁿ\");\nvar Route = $.require(\"hiker://page/Route?rule=MyFieldᴰⁿ\");\neval(getItem('myFunction'));\n// mzPopup();\nvar jxOldV = getVar('jxOldV');\nvar jxNewV = getVar('jxNewV');\nvar versionTips = parseFloat(jxNewV) > parseFloat(jxOldV) ? '‘‘有新版本: v' + jxNewV + '\\n先更新小程序然后点击下方按钮拉取至本地’’' : 'v'+jxOldV;\nd.push({\n    title: '‘‘’’<big><span style=\"color:#0C0000\">魔断 2022',\n    desc: versionTips,\n    url: Route.szParse,\n    //url: 'toast://这是标题',\n    col_type: 'text_center_1'\n});\n\nfunction czGuide() {\n    return $().rule((k) => {\n        setResult([{\n            title: eval(JSON.parse(request(\"hiker://page/Guide?rule=MyFieldᴰⁿ\"))).rule,\n            col_type: 'rich_text'\n        }]);\n    })\n}\naddListener('onClose', $.toString(() => {\n    //clearVar(\"parseUrl.url\");\n    clearItem(\"class\");\n}));\nlet jxsRoute = \"hiker://files/cache/MyJiexi.json\";\nlet MyJiexi = {jiexis:[]};\nlet jiexis = {};\ntry {\n    MyJiexi = JSON.parse(request(jxsRoute));\n    jiexis = MyJiexi.jiexis.filter(it=>it.name===MyJiexi.now)[0];\n}catch (e) {}\nlet jx_extra = {\n    jsLoadingInject: true,\n    titleVisible: true,\n    defaultValue: getVar('parseUrl.url', '') || \"\",\n    onChange: 'putVar(\"parseUrl.url\",input)'\n};\nif(!/嗅探优先|顺序优先/.test(MyJiexi.autoMode)){\n    jx_extra.blockRules = ['baidu.*.png', '.jpg','.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg'];\n}\nd.push({\n    title:'开始解析',\n    col_type: 'input',\n    desc: \"请输解析地址\",\n    url:$.toString(()=>{\n        let url = getVar(\"parseUrl.url\", \"\").trim();\n        let sel = getItem(\"selected\", \"\");\n        let jx = getItem(\"selected\", \"\");\n        if(jx&&jx.length>2&&!jx.startsWith('http')){\n            jx = '';//断插高级方法直接清空解析链接后面调用标题名字\n        }\n        let ex=new RegExp('^http|LT|ruifenglb|suoyo|xfy|renrenmi|RongXingVR|xueren|wuduyun|laodi|Naifeimi|daodm|XMMT|v020c');\n        if (!ex.test(url)&&!/http|function/.test(sel)) {\n            log(getItem(\"selected\", \"\"));\n            return \"toast://还没有输入链接哦\";\n        }\n        let playUrl = jx + url;\n        log(playUrl);\n        if(!ex.test(playUrl)&&!/http|function/.test(sel)){\n            return 'toast://看起来播放地址似乎不对劲?\\n'+playUrl\n        }\n        return $().lazyRule((playUrl,url)=>{\n            let title = getItem(\"selected0\", \"&&\").split(\"&&\")[0].replace(/👉/g,'');\n            log('title:'+title);\n            if(getItem('dn.test_mode')==='断插'&&!/^不选$|^魔断$/.test(title)){\n                eval(\"var config =\" + request(\"hiker://files/cache/MyParseSet.json\"));\n                eval(request(config.cj));\n                let title = getItem(\"selected0\", \"&&\").split(\"&&\")[0].replace(/👉/g,'').replace(/不选/g,'');\n                log('开始调用断插测试,myFiled超时为:'+getItem('dn.timeout','5000'));\n                return aytmParse(url,title,parseInt(getItem('dn.timeout','5000')));\n            }else if(getItem('dn.test_mode')==='断插'&&/^魔断$/.test(title)){\n                eval(\"var config =\" + request(\"hiker://files/cache/MyParseSet.json\"));\n                eval(request(config.cj));\n                log('开始调用魔断拟真测试,myFiled超时为:'+getItem('dn.timeout','5000'));\n                return aytmParse(url,'',parseInt(getItem('dn.timeout','5000')));\n            }\n            else{\n                const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n                return lazyParse(playUrl,parseInt(getItem('dn.timeout','5000')))||'toast://解析失败,具体看日志'\n            }\n        },playUrl,url)\n    }),\n    extra: jx_extra\n});\nvar test_mode = getItem('dn.test_mode','Q神');\nlet sel_title = ['Q神','断插'].map((it) => {\n    return it===test_mode?'👉'+it:it;\n});\n\nd.push({\n    title:'💫'+test_mode,\n    col_type:'scroll_button',\n    url:$(sel_title,2).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);\n        // setItem(\"selected\", url);\n        setItem(\"selected\", \"\"); // 重置解析头\n        setItem(\"selected0\", \"不选&&\"); //切换模式清空选中的解析\n        refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\n\nlet titleArr = [], urlArr = [];\nvar json={title:[],codes:{}};\nif(test_mode==='Q神'){\n    let parseUrlText = request(\"hiker://files/jiexi/jiexi.txt\");\n    let parseUrlArray = parseUrlText.split(/\\n/);\n    parseUrlArray.forEach((it) => {\n        it = it.split(\"&&\");\n        titleArr.push(it[0]);\n        urlArr.push(it[1]);\n    });\n}\nelse if(test_mode==='断插'){\n    let setFile = request('hiker://files/rules/DuanNian/MyParse.json');\n    try {\n        eval('json='+setFile);\n    }catch (e) {\n        log('Json解析发生了错误:'+e.message);\n    }\n    titleArr = json.title;\n    titleArr.forEach((it) => {\n        urlArr.push(json.codes[it]);\n    });\n    //$.stringify(json)\n}\n\nd.push({\n    title:titleArr.length+'',\n    col_type:'scroll_button',\n    url:$(test_mode+'共计解析数量:'+titleArr.length+'个\\n是否随机来个地址进行测试?').confirm((sjTest,getOne)=>{\n        putVar('parseUrl.url', getOne(sjTest));\n        refreshPage(true);\n        return 'toast://地址已给你了'\n    },sjTest,getOne)\n});\n\nlet realTitles = titleArr;\nlet barry = test_mode==='Q神'?['不选']:['不选','魔断'];\ntitleArr = barry.concat(titleArr);\nlet selTitle = getItem(\"selected0\", \"&&\").split(\"&&\")[0];\ntitleArr = titleArr.map((it) => {\n    return it===selTitle?'👉'+it:it;\n});\nd.push({\n    title: '☢️'+selTitle,\n    url: $(titleArr, 3).select((realTitles,urlArr) => {\n        input = input.replace(/👉/g,'');\n        if(input==='不选'){\n            setItem(\"selected\", '');\n            setItem(\"selected0\", input + \"&&\" + '');\n            refreshPage(false);\n            return \"toast://已取消解析口,直接进行直链解析\";\n        }else if(input==='魔断'){\n            setItem(\"selected\", '');\n            setItem(\"selected0\", input + \"&&\" + '');\n            refreshPage(false);\n            return \"toast://已设置为魔断解析，可直接触发备胎模式\";\n        }\n        let i = realTitles.indexOf(input);\n        let url = urlArr[i];\n        log(\"\\n更改接口> \" + url);\n        if(typeof(url)!=='string'){\n            log($.toString(url));\n            setItem(\"selected\", $.toString(url));\n            // return 'toast://暂不支持断插function系列的高级解析测试'\n        }else{\n            setItem(\"selected\", url);\n        }\n        setItem(\"selected0\", input + \"&&\" + url);\n        refreshPage(false);\n        return \"toast://切换解析口为:\"+input;\n    }, realTitles,urlArr),\n    col_type: \"scroll_button\"\n});\nd.push({\n    title:'🍀主题',\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=主题#noHistory##noRecordHistory#\",\n    col_type: \"scroll_button\"\n});\nd.push({\n    title:'🍀解析',\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=解析#noHistory##noRecordHistory#\",\n    col_type: \"scroll_button\"\n});\nvar timeout = getItem('dn.timeout','5000');\nd.push({\n    title:'🕒'+timeout,\n    col_type:'scroll_button',\n    url:$(timeout,'请输入解析超时毫秒').input(()=>{\n        if(!parseInt(input)){\n            return 'toast://超时设置错误，拒绝保存'\n        }\n        setItem('dn.timeout',input||'5000');\n        refreshPage(true);\n        return 'toast://已设置解析超时毫秒:'+getItem('dn.timeout','5000');\n    }),\n});\nd.push({\n    title:'📲导出TXT',\n    col_type:'scroll_button',\n    url:$('确认导出本地明文且复制云剪切板?\\n可完美导出名称地址的通用规则,对function类兼容暂时不是很好').confirm((titleArr,urlArr)=>{\n        //urlArr=urlArr.slice(2);\n        titleArr=titleArr.filter(it=>!/不选|魔断/.test(it));\n        let mode = getItem('dn.test_mode','Q神');\n        if(mode==='断插'||mode==='Q神'){\n            let jxCode = [];\n            titleArr.forEach((it) => {\n                let i = titleArr.indexOf(it);\n                let code = urlArr[i]||'';\n                let outCode = (typeof(code)==='string')?code.trim():base64Encode(code.toString().trim());\n                let outTitle = it.replace(/👉/g,'');\n                if(outTitle.startsWith('http')&&(typeof(outCode)==='undefined'||!outCode)){\n                    jxCode.push(outTitle+','+outTitle);\n                }else{\n                    jxCode.push(outTitle+','+outCode||'')\n                }\n            });\n            let outText = jxCode.join('\\n');\n            let outPath = 'hiker://files/rules/DuanNian/MyParseOut_'+mode+'.txt';\n            writeFile(outPath,outText);\n            let pastes = getPastes();\n            let importUrl = sharePaste(base64Encode(outText),pastes[1]);\n            let importCode = '魔断解析导入口令¥¥'+importUrl;\n            copy(importCode);\n            return 'toast://文件已导出到:'+outPath+'\\n请自行通过MT管理器查看'\n        }else{\n            return 'toast://我不清楚你要做什么?\\n'+mode;\n        }\n    },titleArr,urlArr),\n});\nd.push({\n    title:'📥导入TXT',\n    col_type:'scroll_button',\n    url:$().rule(()=>{\n        let d = [];\n        d.push({\n            title:'导入说明',\n            col_type:'text_1',\n            desc:'支持此插件导出格式的文本进行导入。\\n格式1: 名称,地址 一行一个解析\\n格式2:云剪切板 魔断解析导入口令¥¥剪切板地址',\n            url:'hiker://empty'\n        });\n        d.push({\n            desc: \"txt文本解析规则,一行一个\",\n            col_type: 'input',\n            title:'解析文本',\n            extra: {\n                titleVisible: false,\n                defaultValue: getVar('dn.import_text', ''),\n                type: \"textarea\",\n                height:-1,\n                onChange: 'putVar(\"dn.import_text\",input)'\n            }\n        });\n        d.push({\n            title:'📥导入',\n            col_type:'text_center_1',\n            url:$('确定编辑好了吗?此操作将覆盖本地已有的记录，建议备份后用空文件导入').confirm(()=>{\n                const {defaultSets} = $.require(\"hiker://page/demoData?rule=MyFieldᴰⁿ\");\n                let parseRoute = 'hiker://files/rules/DuanNian/MyParse.json';\n                let jsCode = request(parseRoute)||JSON.stringify({title:[],codes:{},settings:defaultSets});\n                try {\n                    eval('var json =' + jsCode);\n                }\n                catch (e) {\n                    return 'toast://发生错误:\\n'+e.message\n                }\n                let toImport = getVar(\"dn.import_text\");\n                if(/魔断解析导入口令¥¥/.test(toImport)&&toImport.split('¥¥').length>1){\n                    let url = toImport.split('¥¥')[1];\n                    if(!/^http/.test(url)){\n                        return 'toast://剪切板地址有误,导入失败'\n                    }\n                    toImport = parsePaste(url);\n                    toImport = base64Decode(toImport);\n                }\n                //log(toImport);\n                let jiexi = toImport.split('\\n').filter(it=>it.trim());\n               // log(jiexi);\n                let parseTitle = [];\n                let parseCode = {};\n                for (let i in jiexi) {\n                    let title=jiexi[i].split(',')[0];\n                    let code=jiexi[i].split(',')[1];\n                    if(!title||!code){\n                        log('错误解析:'+jiexi[i]);\n                        continue;\n                    }\n                    parseTitle.push(title);\n                    //log(title);\n                    if(!(code.replace(/[\\s]/g,'').startsWith('http'))){\n                        // log(title+'为函数解析');\n                        if(code.replace(/[\\s]/g,'').length>20){//视为function\n                            try {\n                                code = eval(base64Decode(code));\n                                // log(code);\n                            }catch (e) {\n                                code = e.message;\n                            }\n                        }\n                    }\n                    parseCode[title]=code;\n                }\n                let scObject = [\"CityIP\", \"pcUA\", \"cacheM3u8\", \"defaultParseWeb\",\"maoss\", \"LLQ\"];\n                parseTitle = parseTitle?parseTitle.filter(it=>!scObject.includes(it)):[];\n                \n                var newParseTitle = json.title.concat(parseTitle);\n                json.title = Array.from(new Set(newParseTitle));\n                Object.assign(json.codes, parseCode);\n                let newFile = $.stringify(json); //JSON.parse会报错\n                writeFile(parseRoute, newFile);\n                refreshPage(false);\n                return 'toast://已成功导入'+jiexi.length+'条解析';\n            }),\n            extra:{\n                lineVisible:true\n            }\n        });\n        setResult(d);\n    }),\n});\nd.push({\n    title:'☯️查重处理',\n    col_type:'scroll_button',\n    url:$().lazyRule((unique2,duplicates,floors)=>{\n        let parseRoute = 'hiker://files/rules/DuanNian/MyParse.json';\n        let jsCode = request(parseRoute);\n        try {\n            eval('var json =' + jsCode);\n        }\n        catch (e) {\n            return 'toast://本地那个MyParse.json文件有问题,这个功能不给你用了!'\n        }\n        let titles = json.title;\n        let codes = json.codes;\n        let keys= Object.keys(codes);\n        let keys_re_ct = keys.length - unique2(keys).length; // 名称重复\n        let normal_list = [];\n        for(let o in codes){\n            if(typeof(codes[o])!=='undefined'&&typeof(codes[o])!=='function'){\n                normal_list.push(codes[o]);\n            }\n        }\n        let reNorList = unique2(normal_list);\n        let value_re_ct = normal_list.length - reNorList.length; //代码重复\n        let values_re = duplicates(normal_list);//重复的值\n        let ftlist = [];\n        let flags = {};\n        let myFloors = floors;\n        for(let j in codes){//遍历所有\n            let one = codes[j];\n            try {\n                if (typeof(one) !== 'function'&&values_re.includes(one)) {\n                    if (typeof (flags[one]) === 'undefined' || !flags[one]) {\n                        //取出第一个标志\n                        flags[one] = myFloors[0];\n                        myFloors.splice(0, 1);//删除标志列表里的第一个元素\n                    }\n                    ftlist.push({key: flags[one] + j, value: one});\n                } else {\n                    ftlist.push({key: j, value: one});\n                }\n            }catch (e) {\n                log(e.message)\n            }\n        }\n        // log(JSON.stringify(flags));\n        let newCodes = {};\n        for(let k in ftlist){\n            newCodes[ftlist[k].key] = ftlist[k].value;\n        }\n        let tips = '检测到名称复用项目数:'+keys_re_ct+',代码重复项目数量:'+value_re_ct+'\\n需要一键打个标识吗?不支持自动删除,打标志自行解决';\n        return $(tips).confirm((value_re_ct,json,newCodes,parseRoute)=>{\n            if(value_re_ct<1){\n                return 'toast://既然都是0个重复项目了，就不需要我做什么了!'\n            }\n            function compare(){\n                return function (a, b){\n                    const {floors} = $.require(\"hiker://page/demoData?rule=MyFieldᴰⁿ\");\n                    let x = a.substring(0,1);\n                    let y = b.substring(0,1);\n                    return floors.indexOf(y)-floors.indexOf(x);\n                }\n            }\n            json.codes = newCodes;\n            let titles = Object.keys(newCodes);\n            titles = titles.sort(compare());\n            json.title = titles;\n            var newFile = $.stringify(json); //JSON.parse会报错\n            writeFile(parseRoute, newFile);\n            refreshPage(false);\n            return 'toast://已一键打上标志';\n        },value_re_ct,json,newCodes,parseRoute)\n    },unique2,duplicates,floors),\n});\nd.push({\n    title:\"🔄重置B站UA\",\n    col_type: \"scroll_button\",\n    url: \"https://www.bilibili.com/\",\n    extra: {\n        ua: PC_UA\n    }\n});\nd.push({\n    title:\"🗑️批量操作\",\n    col_type: \"scroll_button\",\n    url: $('hiker://empty#noRecordHistory#').rule(()=>{\n        let localHtml = getPath('hiker://files/cache/plscParse.html');\n        let testcode = request(localHtml);\n        if(!testcode||/批量删除\\/导出解析/.test(testcode)){\n            // writeFile(localHtml,request('http://hiker.nokia.press/hikerule/zyw_data/10'));\n            writeFile(localHtml,request('https://gitcode.net/qq_32394351/dr/-/raw/master/dp/batch_delete.html'));\n        }\n        let d = [];\n        d.push({title: \"批量操作解析\", desc: \"auto&&float\", url: localHtml, col_type: \"x5_webview_single\"});\n        setResult(d);\n    }),\n});\nlet web_sel = '爱奇艺/优酷/腾讯/芒果/哔哩哔哩/搜狐/西瓜/PPTV/咪咕/乐视/1905/风行/龙腾/人人迷/五毒/多多/融兴/雪人/旋风云/瑞丰资源'.split('/');\nd.push({\n    title:'‘‘’’<span style=\"color:#00d9ff\">来个测试地址',\n    col_type: \"text_3\",\n    url:$(web_sel,4,'选1条正版|切片地址来解析').select((demoData,getOne)=>{\n        let urls = demoData[input];\n        let url = getOne(urls)||'';\n        if(!url){\n            return 'toast://'+input+'这个网站暂时没有播放例子'\n        }\n        putVar('parseUrl.url', url);\n        refreshPage(false);\n        return 'toast://给你找了个'+input+'的播放地址:\\n'+url;\n    },demoData,getOne)\n});\nd.push({\n    title:'🎯解析测试',\n    col_type:'text_3',\n    url:'hiker://page/jxTest?rule=MyFieldᴰⁿ',\n});\nif(test_mode==='Q神'){\n    d.push({\n        //'#ff7000'\n        title:'‘‘’’<span style=\"color:#ff7000\">Q神插件接口设置',\n        // title: '““Q神插件接口设置””',\n        url: \"hiker://page/EditUrl?rule=MyFieldᴰⁿ\",\n        col_type: 'text_3'\n    });\n}else if(test_mode==='断插'){\n    let url = realTitles.length>0?\"hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noHistory#\":$('别设置了，先拉代码').confirm()\n    d.push({\n        title:'‘‘’’<span style=\"color:#ff7000\">断插接口设置',\n        url: url,\n        col_type: 'text_3'\n    });\n}\nd.push({\n    title:'‘‘’’<span style=\"color:#ff7000\">小白关怀模式: </span><span style=\"color:grey\"><small>不懂不学啥也不会？拯救傻白甜的你</small></span>',\n    url: $('#noLoading##noRecordHistory#').lazyRule(()=>{\n        return 'hiker://page/smallWhite?rule=MyFieldᴰⁿ'\n    }),\n    col_type: 'text_1',\n});\n\njxItem.lqFile();\nlet extra = d.slice(-7,d.length); //断插添加的元素\nd = d.slice(0,-7); // 自己的函数\nextra[0].title='拉取列表(不推荐)'\nextra[0].col_type='text_2'\nextra[1].title='拉取代码(强烈推荐)'\nextra[1].col_type='text_2'\nextra[4].col_type='text_center_1'\nextra[4].url=czGuide();\nextra.splice(2,1);\nd = d.concat(extra);\n// d.splice(d.length-5,1);\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#AEB404","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"Parse_Dn-vue.html\",\"path\":\"Parse_Dn.html\",\"rule\":\"<!DOCTYPE html>\\n<html>\\n<head>\\n    <meta charset=\\\"utf-8\\\">\\n    <meta name=\\\"viewport\\\" content=\\\"width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no\\\" />\\n    <title>Parse_Dn_vue</title>\\n    <script>\\n        const vuePath = 'hiker://files/rules/dzHouse/js/vue.js';\\n        if(typeof(fba)=='undefined'||!fba){\\n            var fba = fy_bridge_app;\\n        }\\n        try {\\n            if(typeof(request)=='undefined'||!request){\\n                eval(fba.getInternalJs());\\n            }\\n            window.request = window.request00 || window.request;\\n            // fba.log(vuePath);\\n            if(!request(vuePath)){\\n                fba.writeFile(vuePath,request('http://hiker.nokia.press/hikerule/rulelist.json?id=1823'));\\n            }\\n            try {\\n                eval(fba.fetch(vuePath));\\n            }catch (e) {\\n                // console.log(e.message);\\n                fba.log(e.message);\\n            }\\n            // fba.log('加载vue组件完毕');\\n        }catch (e) {\\n            alert(e.message);\\n        }\\n    </script>\\n    <!--    <script src=\\\"https://unpkg.com/vue@next\\\"></script>-->\\n    <!--    <script src=\\\"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/rules/dzHouse/js/vue.js\\\"></script>-->\\n    <style>\\n        body {\\n            margin: 0 5px 0 5px;\\n            padding: 0 0px 0 0px;\\n            /*            background: #F9F0DA;*/\\n            font-weight: 0;\\n            font-family: \\\"Microsoft YaHei\\\",\\\"宋体\\\",\\\"Segoe UI\\\", \\\"Lucida Grande\\\", Helvetica, Arial,sans-serif, FreeSans, Arimo;\\n        }\\n        #app{\\n            margin-top:-10px;\\n        }\\n        #tips{\\n            margin-top:-10px;\\n            margin-bottom:5px;\\n        }\\n        .fung{\\n            text-align:center\\n        }\\n        div.box {\\n            margin-top:-1px;\\n            height: 43px;\\n            line-height: 20px;\\n        }\\n        /*输入框尺寸*/\\n        form {\\n            background: transparent;\\n            position: relative;\\n            width: 100%;\\n        }\\n\\n        input, label, select {\\n            border: none;\\n            outline: none;\\n        }\\n        /*字体位置*/\\n        input {\\n            width: 77%;\\n            height: 32px;\\n            padding-left: 66px;\\n            padding-right: 0px;\\n        }\\n\\n        label {\\n            text-align:center;\\n            line-height: 43px;\\n            height: 40px;\\n            width: 60px;\\n            cursor: pointer;\\n            position: absolute;\\n        }\\n\\n        /*小框*/\\n        .bar label {\\n            /*background: #D06B6C;*/\\n            border-radius: 5px 555px 555px 5px;\\n            width: 60px;\\n            font-size: 13px;\\n            top: 0;\\n            left: 3px;\\n        }\\n\\n        /*输入框样式*/\\n        .bar input {\\n            /*border-radius: 5px 555px 555px 5px;\\n             */\\n            border-radius: 4px;\\n        }\\n\\n        /*列表*/\\n        select {\\n            text-align:center;\\n            line-height:40px;\\n            height: 40px;\\n            width: 20px;\\n            cursor: pointer;\\n            position: absolute;\\n        }\\n\\n        /*列表*/\\n        .lieb select{\\n            /*border-radius: 4px;*/\\n            border-radius: 555px 5px 5px 555px;\\n            width: 80px;\\n            text-align:center;\\n            font-size: 13px;\\n            top: 0;\\n            right: 2px;\\n        }\\n\\n        /*头像*/\\n        .round_icon{\\n            width: 40px;\\n            height: 40px;\\n            display: flex;\\n            border-radius: 50%;\\n            align-items: center;\\n            justify-content: center;\\n            overflow: hidden;\\n        }\\n    </style>\\n</head>\\n<body>\\n<div class=\\\"fung\\\">\\n    <a style=\\\"float:left;\\\">\\n        <button  :style=\\\"'border: none;border-radius:10px;background: '+themes.closeBtn.background+';width: 80px; font-size: 18px;color: '+themes.closeBtn.color\\\" onclick=\\\"cancel();\\\">关 闭</button>\\n    </a>\\n    <a class=\\\"btn btn-primary\\\">\\n        <!--        <button  :style=\\\"'border: none;border-radius:10px;background: '+themes.tipsBtn.background+';width: 120px; font-size: 18px;color: '+themes.tipsBtn.color\\\" @click=\\\"showTips=!showTips\\\">{{showTips?\\\"隐藏提示\\\":\\\"显示提示\\\"}}</button>-->\\n        <button  :style=\\\"'border: none;border-radius:10px;background: '+themes.tipsBtn.background+';width: 120px; font-size: 18px;color: '+themes.tipsBtn.color\\\" @click=\\\"showTips=!showTips\\\" v-text=\\\"showTips?'隐藏提示':'显示提示'\\\"></button>\\n    </a>\\n    <a style=\\\"float:right\\\">\\n        <button :style=\\\"'border: none;border-radius:10px;background: '+themes.saveBtn.background+';width: 80px; font-size: 18px;color: '+themes.saveBtn.color\\\" onclick=\\\"clickme('配 置 已 保 存 ！', 1000, '开');\\\">保 存</button>\\n    </a>\\n\\n</div>\\n<br>\\n<div id=\\\"app\\\">\\n    <h6 id=\\\"tips\\\" v-html=\\\"tips\\\" v-show=\\\"showTips\\\"></h6>\\n    <div class=\\\"box bar\\\" v-for=\\\"option in options\\\">\\n        <form>\\n            <!--            <label type=\\\"submit\\\" :style=\\\"'background:'+themes.barlabel.background+';color:'+themes.barlabel.color\\\">{{ option.name }}</label>-->\\n            <label type=\\\"submit\\\" :style=\\\"'background:'+themes.barlabel.background+';color:'+themes.barlabel.color\\\" v-text=\\\"option.name\\\"></label>\\n            <input :style=\\\"'background:'+themes.barInput.background+';border: 3px solid '+themes.barInput.color\\\" type=\\\"text\\\" onclick=\\\"resetSelect(this.id)\\\" :placeholder=\\\"option.placeholder||placeholder\\\" v-model=\\\"option.value\\\" v-bind:id=\\\"option.id\\\">\\n            <div class=\\\"lieb\\\">\\n                <select :style=\\\"'background:'+themes.select.background+';color:'+themes.select.color\\\" :clearable=\\\"true\\\" size=\\\"2\\\" :id=\\\"option.id+'Select'\\\" :name=\\\"option.id\\\" onchange=\\\"getOption(this.id,this.name)\\\"  v-model=\\\"option.value\\\">\\n                    <!--                    <option v-if=\\\"option.id!=='qju'&&option.id!=='cj'\\\" :value=\\\"sel\\\" :key=\\\"index\\\" v-for=\\\"(sel,index) in mySelect\\\">{{ sel }}</option>-->\\n                    <option v-if=\\\"option.id!=='qju'&&option.id!=='cj'\\\" :value=\\\"sel\\\" :key=\\\"index\\\" v-for=\\\"(sel,index) in mySelect\\\" v-text=\\\"sel\\\"></option>\\n                    <!--                    <option v-else-if=\\\"option.id==='qju'\\\" :value=\\\"sel\\\" :key=\\\"index\\\" v-for=\\\"(sel,index) in ['默认'].concat(mySelect)\\\">{{ sel }}</option>-->\\n                    <option v-else-if=\\\"option.id==='qju'\\\" :value=\\\"sel\\\" :key=\\\"index\\\" v-for=\\\"(sel,index) in ['默认'].concat(mySelect)\\\" v-text=\\\"sel\\\"></option>\\n                    <!--                    <option :value=\\\"sel\\\" :key=\\\"index\\\" v-else v-for=\\\"(sel,index) in cjSel\\\">{{ sel }}</option>-->\\n                    <option :value=\\\"sel\\\" :key=\\\"index\\\" v-else v-for=\\\"(sel,index) in cjSel\\\" v-text=\\\"sel\\\"></option>\\n                </select>\\n            </div>\\n        </form>\\n    </div>\\n</div>\\n<div>\\n    <a v-for=\\\"ver in verinfo\\\" style=\\\"float:left;margin-top:1px;margin-right: 20px\\\" v-bind:id='ver.id' onclick=\\\"doOption(this.id)\\\">\\n        <img :src=\\\"ver.avatar\\\" class=\\\"round_icon\\\"  alt=\\\"\\\">\\n        <!--        <span style=\\\"margin-left:10px;line-height:10px;font-size:12px;color: grey;\\\">{{ ver.author }}</span>-->\\n        <span style=\\\"margin-left:10px;line-height:10px;font-size:12px;color: grey;\\\" v-text=\\\"ver.author\\\"></span>\\n    </a>\\n    <a style=\\\"float:right;margin-top:10px;\\\">\\n        <button :style=\\\"'border: none;border-radius:10px;background:'+themes.saveCloseBtn.background+';width: 160px;height:40px; font-size: 18px;color: '+themes.saveCloseBtn.color\\\" onclick=\\\"clickme('配 置 已 保 存 ！', 1000, '关');\\\">保存并关闭界面</button>\\n    </a>\\n</div>\\n<script>\\n    let tips = `提示：<br>①注意插件选项，没有手动导入插件的话不用动它。如设置不当会导致规则无法使用，<br>解决办法：视界打开更多设置→文件管理→点cache→长按MyParseSet.json删除掉；<br>②全局设置如果选择了非默认那么全部的解析会使用这一设置，不想这样的话请填入默认；<br>③绿色保存按钮仅仅保存配置不会关闭设置页面，配置后想保存并关闭设置页面的话请点蓝色按钮；<br>④如果遇到保存按钮点不动或者报错的情况，以下路径挨着删除一遍，然后重新拉取插件，网页再打开此网页[不要先拉代码]。记得备份<br>\\n主插件存放路径: /cache/Parse_Dn.js<br>\\n网页脚本存放路径: /cache/Parse_Dn.html<br>\\n旧断插配置路径:/cache/MyParseSet.json<br>\\n新断插配置路径/rules/DuanNian/MyParse.json<br>\\n主题文件:/cache/MyTheme.json<br>\\n主题文件:/cache/MyTheme.json<br>\\n自动档解析:/cache/MyJiexi.json<br>\\n    ⑤阅读完提示点关闭加载完整设置页面，如出问题无法自行解决点图片进入论坛向我反馈。<br>`;\\n    let placeholder='输入解析名或者URL......';\\n    //#aa96da #fc5185\\n    let themes = {\\n        name:'默认主题',\\n        closeBtn:{color:'#f6f6f6',background:'#aa96da'},\\n        saveBtn:{color:'#F9F0DA',background:'#068006'},\\n        saveCloseBtn:{color:'#F9F0DA',background:'#05BFC5'},\\n        tipsBtn:{color:'#F9F0DA',background:'#05BFC5'},\\n        barlabel:{color:'#F9F0DA',background:'#aa96da'},\\n        barInput:{color:'#aa96da',background:'#ffffd2'},\\n        select:{color:'#F9F0DA',background:'#aa96da'},\\n    };\\n    let themeDef = {\\\"name\\\":\\\"断念原皮\\\",\\\"closeBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#c5464a\\\"},\\\"saveBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#068006\\\"},\\\"saveCloseBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#05BFC5\\\"},\\\"tipsBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#05BFC5\\\"},\\\"barlabel\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#D06B6C\\\"},\\\"barInput\\\":{\\\"color\\\":\\\"#D06B6C\\\",\\\"background\\\":\\\"#F9F0DA\\\"},\\\"select\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#D06B6C\\\"}};\\n    var themeRoute = \\\"hiker://files/cache/MyTheme.json\\\";\\n    if(!fba.fetch(themeRoute)){\\n        fba.writeFile(themeRoute,JSON.stringify({now_theme:'默认主题',themes:[themes,themeDef]}))\\n    }\\n    try {\\n        let myThemes = JSON.parse(fba.fetch(themeRoute));\\n        let nowTheme = myThemes.themes.filter(it=>it.name === myThemes.now_theme);\\n        themes = nowTheme?nowTheme[0]:myThemes.themes[0];\\n    }catch (e) {}\\n\\n    // 断念初始化部分\\n    const allApi=['https://test.rongxingvr.com/test/?url=','http://cache.languang.icu:88/didi.php?url='];\\n    var settings = {\\n        qy: '万能解析Ⓙ',\\n        yk: '万能解析Ⓙ',\\n        tx: '万能解析Ⓙ',\\n        mg: '万能解析Ⓙ',\\n        bl: '万能解析Ⓙ',\\n        sh: '万能解析Ⓙ',\\n        xg: '万能解析Ⓙ',\\n        // al: '万能解析Ⓙ',\\n        pp: '万能解析Ⓙ',\\n        mi: '万能解析Ⓙ',\\n        le: '万能解析Ⓙ',\\n        lt: '万能解析Ⓙ',//龙腾\\n        rr:'万能解析Ⓙ',//人人迷\\n        wd:'万能解析Ⓙ',//五毒云\\n        oth: '道长仓库通免',\\n        one: '1080',\\n        fun: '融兴',\\n        qju: '默认',\\n        cj: 'hiker://files/cache/Parse_Dn.js'\\n    };\\n    var oldRoute = \\\"hiker://files/cache/MyParseSet.json\\\";\\n    var mySet = fba.fetch(oldRoute);\\n    var newRoute = \\\"hiker://files/rules/DuanNian/MyParse.json\\\";\\n    if(!fba.fetch(newRoute)){\\n        fba.writeFile(newRoute,JSON.stringify({settings:settings,title:[\\\"yun1717\\\",\\\"你爹科技\\\",\\\"融兴\\\",\\\"人人迷-优酷\\\"],codes:{\\\"你爹科技\\\":\\\"http://cache.languang.icu:88/didi.php?url=\\\",\\\"融兴\\\":\\\"https://test.rongxingvr.com/test/?url=\\\",\\\"人人迷-优酷\\\":\\\"https://svip.renrenmi.cc:2222/api/?key=nn4j8rukPXSVzR78E9&url=\\\"}}))\\n    }\\n    var newConfig = fba.fetch(newRoute);\\n    var mySelect = [];\\n    function compare(list) {\\n        return function (it) {\\n            return !list.includes(it)\\n        }\\n    }\\n    if(newConfig&&newConfig.length>20){\\n        eval(\\\"newConfig =\\\" + newConfig + \\\";\\\");\\n        let newKeys = Object.keys(newConfig.settings);\\n        let nowKeys = Object.keys(settings);\\n        for(let i in newKeys){//清除多余的节点\\n            if(!nowKeys.includes(newKeys[i])){\\n                delete newConfig.settings[newKeys[i]]\\n            }\\n        }\\n        settings = Object.assign(settings,newConfig.settings);\\n        var ycTitle = ['defaultParse', 'defaultParseWeb','maoss', 'CityIP', 'cacheM3u8', 'pcUA', 'parseLc', 'gparse', 'nparse'];\\n        mySelect = newConfig.title.filter(compare(ycTitle));\\n        // mySelect = mySelect.map((it)=>{\\n        //     let flag = 'Ⓤ';\\n        //     if(typeof(newConfig.codes[it])==='function'){\\n        //         flag = 'Ⓙ';\\n        //     }else if(typeof(newConfig.codes[it])==='undefined'){\\n        //         flag = '';\\n        //     }\\n        //     return flag+it\\n        // });\\n    }\\n    //fba.log(JSON.stringify(mySelect));\\n\\n    let options = [\\n        {\\n            name:'爱奇艺',\\n            id:'qy',\\n            value:settings.qy,\\n            placeholder:'设置爱奇艺'\\n        },\\n        {\\n            name:'优酷',\\n            id:'yk',\\n            value:settings.yk\\n        },\\n        {\\n            name:'腾讯',\\n            id:'tx',\\n            value:settings.tx\\n        },\\n        {\\n            name:'芒果',\\n            id:'mg',\\n            value:settings.mg\\n        },\\n        {\\n            name:'哔哩哔哩',\\n            id:'bl',\\n            value:settings.bl\\n        },\\n        {\\n            name:'搜狐',\\n            id:'sh',\\n            value:settings.sh\\n        },\\n        {\\n            name:'西瓜',\\n            id:'xg',\\n            value:settings.xg\\n        },\\n        {\\n            name:'PPTV',\\n            id:'pp',\\n            value:settings.pp\\n        },\\n        {\\n            name:'咪咕',\\n            id:'mi',\\n            value:settings.mi\\n        },\\n        {\\n            name:'乐视',\\n            id:'le',\\n            value:settings.le\\n        },\\n        {\\n            name:'1905',\\n            id:'one',\\n            value:settings.one\\n        },\\n        {\\n            name:'风行',\\n            id:'fun',\\n            value:settings.fun\\n        },\\n        {\\n            name:'龙腾',\\n            id:'lt',\\n            value:settings.lt\\n        },\\n        {\\n            name:'人人迷',\\n            id:'rr',\\n            value:settings.rr\\n        },\\n        {\\n            name:'五毒',\\n            id:'wd',\\n            value:settings.wd\\n        },\\n        {\\n            name:'其他',\\n            id:'oth',\\n            value:settings.oth\\n        },\\n        {\\n            name:'全局',\\n            id:'qju',\\n            value:settings.qju\\n        },\\n        {\\n            name:'插件',\\n            id:'cj',\\n            value:settings.cj\\n        },\\n    ];\\n\\n    function Did(id){\\n        return document.getElementById(id);\\n    }\\n    function getOption(id,title) {\\n        var obj = Did(id);\\n        Did(title).value = obj.options[obj.selectedIndex].text;\\n        // Did(title).value = obj.options[obj.selectedIndex].text.replace(/Ⓤ|Ⓙ/g,'');\\n    }\\n    function resetSelect(id){\\n        Did(id+\\\"Select\\\").options.selectedIndex = -1;\\n    }\\n\\n    //函数部分\\n\\n    function Toast(msg,duration){\\n        duration=isNaN(duration)?2000:duration;\\n        var m = document.createElement('div');\\n        m.innerHTML = msg;\\n        m.style.cssText=\\\"width:45%; min-width:150px; background:#311; opacity:0.6; height:auto;min-height: 45px; color:#fff; line-height:45px; text-align:center; border-radius:10px; position:fixed; top:60%; left:26%; z-index:999999;\\\";\\n        document.body.appendChild(m);\\n        setTimeout(function() {\\n            var d = 0.5;\\n            m.style.webkitTransition = '-webkit-transform ' + d + 's ease-in, opacity ' + d + 's ease-in';\\n            m.style.opacity = '0';\\n            setTimeout(function() { document.body.removeChild(m) }, d * 1000);\\n        }, duration);\\n    }\\n\\n    function openDnPage(){\\n        fba.open(JSON.stringify({\\n            rule: \\\"=^_^=\\\",\\n            title: \\\"编辑解析\\\",\\n            url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noHistory##noRecordHistory#\\\",\\n            group: \\\"\\\",\\n            col_type: \\\"\\\",\\n            //findRule: \\\"js:this.d=[];$.require(\\\\\\\"hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ\\\\\\\").edit();setResult(d);\\\",\\n            preRule: \\\"\\\",\\n            extra: {}\\n        }));\\n    }\\n    function openTheme(){\\n        fba.open(JSON.stringify({\\n            rule: \\\"=^_^=\\\",\\n            title: \\\"主题管理\\\",\\n            url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=主题#noHistory##noRecordHistory#\\\",\\n            group: \\\"\\\",\\n            col_type: \\\"\\\",\\n            preRule: \\\"\\\",\\n            extra: {}\\n        }));\\n    }\\n    function openJxManage(){\\n        fba.open(JSON.stringify({\\n            rule: \\\"=^_^=\\\",\\n            title: \\\"解析配置管理\\\",\\n            url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=解析#noHistory##noRecordHistory#\\\",\\n            group: \\\"\\\",\\n            col_type: \\\"\\\",\\n            preRule: \\\"\\\",\\n            extra: {}\\n        }));\\n    }\\n    function cancel(){\\n        if(!mySet){\\n            fba.writeFile(oldRoute, JSON.stringify(settings, null, 4));\\n            fba.refreshPage(true);\\n        }else{\\n            fba.back(false);\\n        }\\n    }\\n    function clickme(msg,duration,title){\\n        try{\\n            for(let key in settings){\\n                // fba.log(Did(key)+''+key);\\n                try{\\n                    //settings[key] = Did(key).value.replace(/Ⓤ|Ⓙ/g,'');\\n                    settings[key] = Did(key).value;\\n                }catch(e){\\n                    alert(\\\"未获取到节点:\\\"+key+\\\"\\\\n\\\"+e.message);\\n                }\\n\\n            }\\n            if(mySelect){\\n                Object.assign(newConfig.settings, settings);\\n                fba.writeFile(newRoute, $$$.stringify(newConfig));\\n            }\\n            fba.writeFile(oldRoute, $$$.stringify(settings));\\n            Toast(msg,duration);\\n            if(title===\\\"关\\\"){\\n                fba.back();\\n            }else{\\n                fba.refreshPage(true);\\n            }\\n        }catch(e){\\n            alert(e.message)\\n        }\\n    }\\n\\n    //let width=window.screen.availWidth;\\n    //let widthPx=width-393+52;\\n    //alert(\\\"当前分辨率:\\\"+window.screen.availWidth+\\\"*\\\"+window.screen.height);\\n    var verinfo = [{\\n        id:'dn',\\n        author:'断念',\\n        avatar:'https://s3.ax1x.com/2021/02/22/y7wb9O.jpg',\\n        option:openDnPage,\\n    },\\n        {\\n            id:'dz',\\n            author:'道长',\\n            avatar:'http://q1.qlogo.cn/g?b=qq&nk=434857005&s=640',\\n            option:openTheme\\n        },\\n        {\\n            id:'lm',\\n            author: '蓝莓',\\n            avatar: 'http://q1.qlogo.cn/g?b=qq&nk=2579949378&s=640',\\n            option:openJxManage\\n        }\\n    ];\\n\\n    function doOption(option_id){\\n        let ver = verinfo.filter(it=>it.id===option_id)[0];\\n        ver.option();\\n    }\\n\\n    const RenderHtmlApp = {\\n        data() {\\n            return {\\n                // rawHtml: '<span style=\\\"color: red\\\">这里会显示红色！</span>',\\n                options:options,\\n                verinfo:verinfo,\\n                placeholder:placeholder,\\n                tips:tips,\\n                themes:themes,\\n                mySelect:mySelect,\\n                // cjSel:['请选择插件 (只作用lazyRule)','hiker://files/cache/Parse_Dn.js','hiker://files/rules/dzHouse/js/srcauto.js','hiker://files/rules/js/Parse-V2_Dn.js'],\\n                cjSel:['请选择插件 (只作用lazyRule)','hiker://files/cache/Parse_Dn.js','hiker://files/rules/dzHouse/js/srcauto.js'],\\n                settings:settings,\\n                showTips:false,\\n                //widthPx:widthPx\\n            }\\n        },\\n        methods:{\\n            // changeVal:function(event){\\n            //     getOption(this.id,this.name);\\n            //     this.selOption = event.target.value;\\n            //     alert(\\\"你选中了\\\"+event.target.value);\\n            // }\\n            doOption:doOption\\n        }\\n    }\\n    try {\\n        const app=Vue.createApp(RenderHtmlApp);\\n        app.mount('body');\\n    }catch (e) {\\n        console.log(e.message)\\n    }\\n\\n</script>\\n\\n</body>\\n</html>\"},{\"col_type\":\"movie_3\",\"name\":\"Parse_Dn.js\",\"path\":\"Parse_Dn.js\",\"rule\":\"//============免嗅调用============\\n//－－－=^_^=\\n\\nvar version = \\\"3.49221205\\\";//1205\\n\\nvar updateDate = '2022/12/05/ 13:18';\\nvar _mySet = {\\n    qju: '默认',\\n    oth:'道长仓库通免',\\n    cjcache: 'hiker://files/cache/Parse_Dn.js',\\n    themecache: 'hiker://files/cache/MyTheme.json',\\n    jiexicache: 'hiker://files/cache/MyJiexi.json',\\n    x5cache: 'hiker://files/cache/Parse_Dn.html',\\n    dmCache: 'hiker://files/cache/diaomao.txt',\\n    oldConfig: 'hiker://files/cache/MyParseSet.json',\\n    ckLink: 'https://code.aliyun.com/AI957/Hiker/raw/master/v/',\\n    // cj: 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js',\\n    cj: 'https://gitcode.net/qq_32394351/dr/-/raw/master/dp/Parse_Dn.js',\\n    // x5Url: 'https://code.aliyun.com/AI957/Hiker/raw/master/v/Parse_Dn.html',\\n    x5Url: 'http://dr.nokia.press/html/Parse_Dn-vue.html',\\n    parseRoute: 'hiker://files/rules/DuanNian/MyParse.json',\\n    // x5Route: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/Parse_Dn.html'\\n    x5Route: getPath('hiker://files/cache/Parse_Dn.html'),\\n    batchRoute:getPath('hiker://files/cache/plscParse.html')\\n};\\nvar MyParseS = {};\\nvar mySet = _mySet;\\nif (fileExist(_mySet.parseRoute)) {\\n    eval('var parseFile =' + fetch(_mySet.parseRoute));\\n    MyParseS = parseFile.codes;\\n    mySet = parseFile.settings;\\n}\\nvar parseTitle = [\\n    \\\"yun1717\\\",\\n    \\\"PanGu\\\",\\n    \\\"FuXing\\\",\\n    \\\"isVideo\\\",\\n    \\\"defaultParse\\\",\\n    \\\"道长仓库通免\\\",\\n    \\\"timeOut\\\",\\n    \\\"源码匹配\\\",\\n    \\\"defaultParseWeb\\\",\\n    \\\"OK解析\\\",\\n    \\\"M3U8TV\\\",\\n];\\n//－－－=^_^=\\n\\n//接口设置.\\n\\nvar setUrl = \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noRecordHistory#\\\";\\nvar set_switch = setUrl;\\nvar lazy = `eval('var config_dp =' + fetch(getVar('oldConfig')));eval(fetch(config_dp.cj));aytmParse(input)`;\\n\\n//var parwix = `var yurl='https://daili.mayixiongdi.cn/?url=';Referer': 'https://www.mayixiongdi.cn/ys?id=';'https://daili.mayixiongdi.cn/api.php', 'Referer':'https://daili.mayixiongdi.cn';\\n// 全民https://pcvideoaliyun.tianshangrenjian.mgtv.com.88wuma.com/?url=\\n\\n//－－－备 用－－－\\n/*\\n * 影视工场： https://ysgc.cc/\\n * 江湖: 555电影 https://www.555dy2.com/phone.html ｜ 17看 http://17kanyy.cn/ http://jhjiexi.30vr.cn/?url= ｜ http://api.maizimall.com/index.php?url=\\n * 江湖: http://www.tianshuyun.net/index.php/vod/play/id/448377/sid/1/nid/1.html\\n * 江湖2: http://98hyk.cn/index.php/vod/play/id/72841/sid/1/nid/1.html\\n * 人人迷: https://vip.susou.tv/player/?url= ｜ https://www.momdm.cc/\\n *\\n * wuigen: https://www.5igen.com/dmplayer/player/?url=\\n * 干饭(人人迷): https://jx.zui.cm/?url=\\n * https://2.66movie.top/player/?url=\\n *\\n */\\n\\n\\nvar tools = {\\n    MD5: function(data) {\\n        eval(getCryptoJS());\\n        return CryptoJS.MD5(data).toString(CryptoJS.enc.Hex);\\n    },\\n    AES: function(text, key, iv, isEncrypt) {\\n        eval(getCryptoJS());\\n        var key = CryptoJS.enc.Utf8.parse(key);\\n        var iv = CryptoJS.enc.Utf8.parse(iv);\\n        if (isEncrypt) {\\n            return CryptoJS.AES.encrypt(text, key, {\\n                iv: iv,\\n                mode: CryptoJS.mode.CBC,\\n                padding: CryptoJS.pad.Pkcs7\\n            }).toString();\\n        };\\n        return CryptoJS.AES.decrypt(text, key, {\\n            iv: iv,\\n            padding: CryptoJS.pad.Pkcs7\\n        }).toString(CryptoJS.enc.Utf8);\\n    },\\n    //ascii\\n    nextCharacter: function(asciiValue, k) {\\n        var s = asciiValue;\\n        return String.fromCharCode(s + k);\\n    },\\n    //凯撒\\n    caesarCipher: function(stringValue, k) {\\n        var newString = \\\"\\\";\\n        for (var i = 0; i < stringValue.length; i++) {\\n            newString += this.nextCharacter(stringValue[i].charCodeAt(), k);\\n        }\\n        return newString;\\n    },\\n    nowDate: function() {\\n        var date1 = new Date();\\n        var dateStr = \\\"\\\";\\n        if (date1) {\\n            dateStr = date1.getFullYear();\\n            var month = date1.getMonth() + 1;\\n            var day = date1.getDate();\\n            if (month < 10) {\\n                dateStr += \\\"-0\\\" + month;\\n            } else {\\n                dateStr += \\\"-\\\" + month;\\n            }\\n            if (day < 10) {\\n                dateStr += \\\"-0\\\" + day;\\n            } else {\\n                dateStr += \\\"-\\\" + day;\\n            }\\n        }\\n        return dateStr;\\n    },\\n    nowDateStr:function (){ // 利用$工具获取格式化后的当前时间\\n        return  $.dateFormat(new Date(),\\\"yyyy-MM-dd HH:mm:ss\\\");\\n    },\\n    toJSON: function(json) {\\n        return JSON.stringify(json, (key, value) => {\\n            if (typeof value == 'function') {\\n                return value.toString();\\n            } else {\\n                return value;\\n            }\\n        }, 4);\\n    },\\n    toVNum: function(a) {\\n        var a = a.toString();\\n        var c = a.split('.');\\n        var num_place = [\\\"\\\", \\\"0\\\", \\\"00\\\", \\\"000\\\", \\\"0000\\\"],\\n            r = num_place.reverse();\\n        for (var i = 0; i < c.length; i++) {\\n            var len = c[i].length;\\n            c[i] = r[len] + c[i];\\n        }\\n        var res = c.join('');\\n        return res;\\n    },\\n    cprVersion: function(a, b) {\\n        var _a = parseInt(this.toVNum(a)),\\n            _b = parseInt(this.toVNum(b));\\n        b = isNaN(_b) ? version : b;\\n        if (_a > _b) {\\n            putVar('jxNewV', '有新版本: ' + a);\\n        } else {\\n            clearVar('jxNewV');\\n        }\\n        putVar('jxOldV', b);\\n    },\\n    atob:function (str){\\n        require('https://cdn.jsdelivr.net/npm/js-base64@3.7.2/base64.min.js');\\n        return Base64.atob(str);\\n    },\\n    btoa:function (str){\\n        require('https://cdn.jsdelivr.net/npm/js-base64@3.7.2/base64.min.js');\\n        return Base64.btoa(str);\\n    },\\n    江湖:function (config_url, tem, token) {\\n        require('https://cdn.jsdelivr.net/npm/js-base64@3.7.2/base64.min.js');\\n        var atob=Base64.atob;\\n        var btoa=Base64.btoa;\\n        var config_a = tem || \\\"ffsirllq\\\";\\n        var video = '';\\n        var tem = [];\\n        var config_arry = [];\\n        var config_b = config_a.length;\\n        if (token == 0x1) {\\n            var config_url = atob(config_url);\\n        } else {\\n            var config_url = encodeURIComponent(config_url);\\n        }\\n        var config_c = config_url.length;\\n        for (i = 0x0; i < 0x100; i++) {\\n            tem[i] = config_a[i % config_b].charCodeAt();\\n            config_arry[i] = i;\\n        }\\n        for (j = i = 0x0; i < 0x100; i++) {\\n            j = (j + config_arry[i] + tem[i]) % 0x100;\\n            tmp = config_arry[i];\\n            config_arry[i] = config_arry[j];\\n            config_arry[j] = tmp;\\n        }\\n        for (a = j = i = 0x0; i < config_c; i++) {\\n            a = (a + 0x1) % 0x100;\\n            j = (j + config_arry[a]) % 0x100;\\n            tmp = config_arry[a];\\n            config_arry[a] = config_arry[j];\\n            config_arry[j] = tmp;\\n            k = config_arry[(config_arry[a] + config_arry[j]) % 0x100];\\n            video += String.fromCharCode(config_url[i].charCodeAt() ^ k);\\n        }\\n        log(decodeURIComponent(video));\\n        if (token == 0x1) {\\n            return decodeURIComponent(video);\\n        } else {\\n            return btoa(video);\\n        }\\n    }\\n};\\nif (getVar(\\\"jxOldV\\\", \\\"0\\\") != version) {\\n    putVar('cjCache', _mySet.cjcache);\\n    putVar('x5Cache', _mySet.x5Cache);\\n    putVar('oldConfig', _mySet.oldConfig);\\n    putVar('parseRoute', _mySet.parseRoute);\\n    // let jxNewV = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/ParseVersion.txt');\\n    let jxNewV = fetch('https://gitcode.net/qq_32394351/dr/-/raw/master/dp/ParseVersion.txt');\\n    let jxOldV = (fetch(_mySet.cjcache).split('version = \\\"')[1] + '').split('\\\"')[0];\\n    tools.cprVersion(jxNewV, jxOldV);\\n}\\n\\nvar ParseS = {};\\nvar originalParseS = {\\n    // updateDate: updateDate,\\n    parseLc:'https://code.aliyun.com/AI957/Hiker/raw/master/p/parseLc.js',\\n    CityIP: 'http://pv.sohu.com/cityjson',\\n    pcUA: 'User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36',\\n    cacheM3u8: function(vUrl, ref) {\\n        let paramas = ref?{headers:{Referer:ref}}:{};\\n        return cacheM3u8(url, paramas)\\n    },\\n    isVideo:function(playUrl){\\n        const {isVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n        return isVideo(playUrl)\\n    },\\n    timeOut:function () {\\n        const lsg=$.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\");\\n        return parseInt(lsg.getItem('timeout', '5000'));  //超时\\n    },\\n    源码匹配:function (vipUrl,regex,pos,headers){\\n        if(!regex||!vipUrl){\\n            return 'toast://解析播放链接和正则匹配字符串必填!'\\n        }\\n        if((!pos&&pos!==0)||(pos&&typeof(pos)!=\\\"number\\\")){//match匹配位置\\n            pos = 1\\n        }\\n        headers = headers||{};\\n        headers['User-Agent'] = headers['User-Agent']||MOBILE_UA;\\n        let html = fetch(vipUrl, {headers:headers,timeout:this.timeOut()});\\n        try {\\n            let realUrl = html.match(new RegExp(regex))[pos];\\n            return this.isVideo(realUrl);\\n        } catch (e) {\\n            log(e.message);\\n            return vipUrl;\\n        }\\n    },\\n    defaultParse: function(url,timeout) {\\n        return ParseS.defaultParseWeb(url,timeout);\\n    },\\n    defaultParseWeb: function(playUrl,timeout,extra) {\\n        // log('传入defaultParseWeb的超时:'+timeout);\\n        timeout = parseInt(timeout)||parseInt(getVar('dp.jxTimeout','5000'))||5000;\\n        extra = extra||{};\\n        let playUrlList = extra.playUrlList||[];\\n        if(typeof(playUrlList)==='object'&&playUrlList.length>0){\\n            playUrlList.unshift(playUrl);\\n            let playUrls=playUrlList.slice(0,4);\\n            let names=extra.nameList.slice(0,4);\\n            // log('开始批量解析(已去重,只取前3个备胎，加道长群:486722328获取最新魔断动态):'+names);\\n            playUrls=playUrls.map((it,id)=>it+\\\";\\\"+names[id]);\\n            //log(playUrls);\\n            const {LazyParseFast} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n            let ret = LazyParseFast(playUrls,timeout,timeout);\\n            if(typeof(ret)==='object'&&ret.length>0){\\n                //return ret[0]\\n                //log(ret);\\n                let v = getAppVersion();\\n                if(parseInt(v)>=2194&&ret.length>1){\\n                    let urls = Array.from(new Set(ret));\\n                    names=urls.map((it,id)=>it.split(\\\"★\\\").length>1?it.split(\\\"★\\\")[1]:\\\"线路:\\\"+parseInt(id+1));\\n                    urls=urls.map(it=>it.split(\\\"★\\\")[0]);\\n                    let headers = urls.map((it)=>{\\n                        if(!/;/.test(it)||it.split(';').length<2){\\n                            return {}\\n                        }else{\\n                            let head = it.split(';')[1];\\n                            if(!/@/.test(head)||!/{|}/.test(head)){\\n                                return {}\\n                            }\\n                            head=head.split(\\\"{\\\")[1].split(\\\"}\\\")[0];\\n                            //head = head.replace(/{|}/g,'');\\n                            head = head.split('&&');\\n                            let obj = {};\\n                            for(let i in head){\\n                                let key = head[i].split('@')[0];\\n                                let value = head[i].split('@')[1].replace(/;/,'；；');\\n                                obj[key] = value;\\n                            }\\n                            return obj\\n                        }\\n                    });\\n                    urls = urls.map((it)=>{\\n                        let turl=it.split(';')[0];\\n                        if(it.includes(\\\"#isVideo=true#\\\")&&!turl.includes(\\\"#isVideo=true#\\\")){\\n                            turl+=\\\"#isVideo=true#\\\";\\n                        }\\n                        return turl\\n                    });\\n                    return JSON.stringify({urls:urls,headers:headers,names:names});\\n                }else{\\n                    return ret[0].split(\\\"★\\\")[0]\\n                }\\n            }else{\\n                return ret\\n            }\\n        }else{\\n            const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n            let x5Play=lazyParse(playUrl,timeout);\\n            if(typeof(x5Play)==\\\"undefined\\\"||!x5Play){\\n                return \\\"toast://道长仓库解析失败\\\"\\n            }\\n            let tips=/x5Rule|webRule/.test(x5Play)?\\\"x5/web免嗅开始\\\":\\\"极速免嗅探完毕，地址:\\\"+(/^http/.test(x5Play)?x5Play:'非正常链接');\\n            log(tips);\\n            return x5Play;\\n        }\\n    },\\n    \\\"maoss\\\":\\n        function (jxurl, ref, key) {\\n            return this.猫(jxurl, ref, key)\\n        },\\n    免嗅:function(vipUrl,k){\\n        k=k||[\\\"url\\\",\\\"data.url\\\"];\\n        try{\\n            let rjson=JSON.parse(fetch(vipUrl));\\n            //log(rjson);\\n            let realUrl='';\\n            if(typeof(k)=='string'){\\n                realUrl=eval(`rjson.${k}`);\\n            }else if(Array.isArray(k)){\\n                for(let i of k){\\n                    //log(i);\\n                    realUrl=eval(`rjson.${i}`);\\n                    if(realUrl){\\n                        break;\\n                    }\\n                }\\n            }\\n            if(realUrl.startsWith('/')){\\n                realUrl = 'https://'+realUrl;\\n            }\\n            return this.isVideo(realUrl)||\\\"\\\";\\n        }catch(e){\\n            log(e.message);\\n            return \\\"\\\"\\n        }\\n    },\\n    X5:function(vipUrl,ref){// https://api.52wyb.com/webcloud/?v=http://vip.1905.com/play/691940.shtml http://www.cdcer.net/\\n        let _x5 = $.toString((vipUrl) => {\\n            if(!location.href.includes(vipUrl)){\\n                location.href = vipUrl;\\n            }\\n            if(window.count == null){\\n                window.count=1;\\n            }\\n            window.count++;\\n            if( window.count >= 20){\\n                fba.log(\\\"未获取到资源地址，跳到解析页\\\");\\n                return vipUrl\\n            }\\n            var urls = _getUrls();\\n            for (var i in urls) {\\n                if (!/playm3u8|m3u8\\\\.tv/.test(urls[i]) && urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8|\\\\.flv/)) {\\n                    fba.log(urls[i]);\\n                    return urls[i]\\n                }\\n            }\\n        },vipUrl);\\n        let playUrl = ref?ref:vipUrl;\\n        let x5Url = 'webRule://'+playUrl+ '@' +_x5;\\n        showLoading('魔断.js嗅探中...');\\n        return x5Url\\n    },\\n    '道长':function (vipUrl){\\n        evalPrivateJS('zSWve+eeA6iL+f2fGTI+1pR8jnLd0SiyV6yvgcPMWwBMP5aYpqhTFbISxnvhb0bd5VgizyUMHe4dmsnGhWLBkqfb5HfNbIW4MBMxzLpP/9TjNT8SIQAfjdTj4P8oX35ekKNvGVxDolyfcYrpoKwNoQ==');\\n        return this.免嗅(vipUrl+'&secret='+secret)\\n    },\\n    '猫':function (jxurl, ref, key) {\\n        try {\\n            var getVideoInfo = function (text) {\\n                return tools.AES(text, key, iv);\\n            };\\n            let headers = {headers: {\\\"Referer\\\": ref||''}};\\n            key = key == undefined ? \\\"dvyYRQlnPRCMdQSe\\\" : key;\\n            var html = ref?request(jxurl, headers):request(jxurl);\\n            if (/&btwaf=/.test(html)) {\\n                html = request(jxurl + \\\"&btwaf\\\" + html.match(/&btwaf(.*?)\\\"/)[1], headers);\\n            }\\n            var iv = html.split(\\\"_token = \\\\\\\"\\\")[1].split(\\\"\\\\\\\"\\\")[0];\\n            eval(html.match(/var config = {[\\\\s\\\\S]*?}/)[0] + \\\"\\\");\\n            if (!/^http/.test(config.url)) {\\n                config.url = decodeURIComponent(tools.AES(config.url, key, iv));\\n            }\\n            return config.url;\\n        }\\n        catch (e) {\\n            // return \\\"\\\";\\n            return jxurl;\\n        }\\n    },\\n    LLQ: function(jxurl) {\\n        try {\\n            var api = jxurl.split('?url=')[0] + \\\"api.php\\\";\\n            var b64id = base64Encode(jxurl.split('url=')[1]);\\n            var parseid = tools.caesarCipher(b64id, -1);\\n            var json = JSON.parse(request(api, {\\n                headers: {\\n                    'Referer': jxurl\\n                },\\n                method: 'POST',\\n                body: 'url=' + parseid\\n            }));\\n            url = (json.code == 200 ? base64Decode(tools.caesarCipher(json.url, -1)) : '');\\n            return url;\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n    PanGu: function(vipUrl, data) {\\n        try {\\n            /*var ref = 'https://www.pangujiexi.com/';\\n            var parse = 'https://panguapi.ntryjd.net/jiexi/?url=' + vipUrl;\\n            var api = 'https://panguapi.ntryjd.net/jiexi/api.php';\\n            */\\n            //var ref = 'https://xmystv.com/';\\n            //var parse = 'https://www.99kpw.com/pangu/index.php?url=' + tailUrl;\\n            //var api = 'https://www.99kpw.com/pangu/api.php';\\n            var parse = 'https://www.pangujiexi.com/pangu/?url=' + vipUrl;\\n            var api = 'https://panguapi.ntryjd.net/pangu2021/api.php';\\n            if (data) {\\n                ref = data[0];\\n                parse = data[1];\\n                api = data[2];\\n            }\\n            var Time = (Math.floor(new Date().getTime() / 1000) * 1).toString();\\n            var url = JSON.parse(request(api, {\\n                headers: {\\n                    'Referer': parse\\n                },\\n                body: 'url=' + vipUrl + '&referer=' + base64Encode(parse) + '&ref=1&time=' + Time + '&type=&other=' + base64Encode(vipUrl) + '&ios=0',\\n                method: 'POST'\\n            })).url;\\n            return url;\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n    yun1717: function (vipUrl) {\\n        var isyk = vipUrl.indexOf('youku');\\n        var ref = \\\"https://www.1717yun.com/jx/ty.php?url=\\\" + vipUrl;\\n        var parse = \\\"https://1717yun.com.zh188.net/0828/?url=\\\" + vipUrl;\\n        var api = \\\"https://1717yun.com.zh188.net/1004/..index..php\\\";\\n        return isyk == -1 ? this.PanGu(vipUrl, [ref, parse, api]) : this.PanGu(vipUrl, [ref + ',vip:', parse + ',vip:', api]);\\n    },\\n    OK解析:'https://okjx.cc/?url=',\\n    M3U8TV:'https://jx.m3u8.tv/jiexi/?url=',\\n    道长仓库通免:function (url,timeout){\\n        return ParseS.defaultParseWeb(url,timeout);\\n    },\\n    FuXing: function(vipUrl) {\\n        try {\\n            //if(vipUrl.indexOf('v.youku')!=-1){\\n            //    vipUrl = (JSON.parse(request(vipUrl, {redirect:false, withHeaders:true})).headers.location + '').replace(/\\\\?.*/,'');\\n            //}\\n            var ref = 'https://jx.xuetuiguang.cn/jiexi/?url=' + vipUrl;\\n            var parse = ref;\\n            var api = 'https://jx.xuetuiguang.cn/jiexi/apiu_fx.php';\\n            return this.PanGu(vipUrl, [ref, parse, api]);\\n        } catch (e) {\\n            return '';\\n        }\\n    },\\n};\\n\\nObject.assign(ParseS, originalParseS, MyParseS);\\n//覆盖顺序，第三个覆盖第二个然后覆盖第一个\\n\\n\\nfunction aytmParse(vipUrl,strTitle,timeout,playUrl) {\\n    // 参数1:正版网址地址 参数2 定向解析接口名称 参数3 x5解析超时 参数4 完整的播放链接\\n    strTitle = strTitle||'';\\n    vipUrl = decodeURIComponent(vipUrl);\\n    if(!/miguvideo/.test(vipUrl)){\\n        vipUrl=vipUrl.split('#')[0].split('?')[0];\\n    }\\n    playUrl=decodeURIComponent(playUrl)||vipUrl||'';\\n    // log('传入aytmParse的超时:'+timeout);\\n    timeout = parseInt(timeout)||parseInt(getVar('dp.jxTimeout','5000'))||5000;\\n\\n    //-------------------------------------------------\\n    let jxsRoute = \\\"hiker://files/cache/MyJiexi.json\\\";\\n    let MyJiexi = {};\\n    let jiexis = {};\\n    try {\\n        MyJiexi = JSON.parse(fetch(jxsRoute));\\n        jiexis = MyJiexi.jiexis.filter(it=>it.name===MyJiexi.now)[0];\\n    }catch (e) {}\\n    function getPlayJx(key){\\n        let playUrlList = [];//批量播放地址列表\\n        let nameList = [];\\n        let jxs = jiexis[key]; // 适用于这个网站的解析列表\\n        if(jxs){\\n            for(let i in jxs){\\n                if(typeof ParseS[jxs[i]] == 'string'&&ParseS[jxs[i]].match(/http.*?=/)){\\n                    playUrlList.push(ParseS[jxs[i]]+vipUrl);\\n                    nameList.push(jxs[i]);\\n                }\\n            }\\n        }\\n        // return playUrlList\\n        return {playUrlList:playUrlList,nameList:nameList}\\n    }\\n    function getLazyList(key){//只获取备胎列表的免嗅探解析列表\\n        let parses = [];\\n        let jxs = jiexis[key]||[]; // 适用于这个网站的解析列表\\n        // log(jxs);\\n        if(jxs){\\n            for(let i in jxs){\\n                if(typeof ParseS[jxs[i]] == 'function'&&!/通免/.test(ParseS[jxs[i]].toString())){\\n                    parses.push({\\n                        name:jxs[i],\\n                        // rule:ParseS[jxs[i]]\\n                    })\\n                }\\n            }\\n        }\\n        return parses\\n    }\\n    var extra = {};\\n    var parses = []; //免嗅探列表\\n    //-------------------------------------------------------\\n    if(!strTitle){\\n        if(/LT/.test(vipUrl)){\\n            str = mySet.lt;\\n            extra = getPlayJx('lt');\\n            parses = getLazyList('lt',str);\\n        } else if(/renrenmi/.test(vipUrl)){\\n            str = mySet.rr;\\n            extra = getPlayJx('rr');\\n            parses = getLazyList('rr',str);\\n        }else if(/wuduyun/.test(vipUrl)){\\n            str = mySet.wd;\\n            extra = getPlayJx('wd');\\n            parses = getLazyList('wd',str);\\n        }else if(/yanaifei|xinluan|LT|ruifenglb|suoyo|xfy|renrenmi|RongXingVR|xueren|wuduyun|laodi|Naifeimi|daodm|XMMT|v020c/.test(vipUrl)){\\n            str = mySet.oth;\\n            extra = getPlayJx('oth');\\n            parses = getLazyList('oth',str);\\n        }else{\\n            var host;\\n            try{\\n                host = vipUrl.match(/\\\\.(.*?)\\\\//)[1];\\n            }catch(e){\\n                if(!/^http/.test(playUrl)){\\n                    return \\\"断插调用失败！\\\\n非正常的vip正版地址且未识别原站解析播放地址\\\";\\n                }else{\\n                    return ParseS.道长仓库通免(playUrl,timeout)\\n                }\\n            }\\n            //host = decodeURIComponent(host);\\n            switch (mySet.qju) {\\n                case \\\"默认\\\":\\n                    switch (host) {\\n                        case \\\"qq.com\\\":\\n                            str = mySet.tx;\\n                            extra = getPlayJx('tx');\\n                            parses = getLazyList('tx');\\n                            break;\\n                        case \\\"iqiyi.com\\\":\\n                            str = mySet.qy;\\n                            extra = getPlayJx('qy');\\n                            parses = getLazyList('qy');\\n                            break;\\n                        case \\\"youku.com\\\":\\n                            str = mySet.yk;\\n                            extra = getPlayJx('yk');\\n                            parses = getLazyList('yk');\\n                            break;\\n                        case \\\"alizy\\\":\\n                            str = mySet.al;\\n                            extra = getPlayJx('al');\\n                            parses = getLazyList('alizy');\\n                            break;\\n                        case \\\"mgtv.com\\\":\\n                            str = mySet.mg;\\n                            extra = getPlayJx('mg');\\n                            parses = getLazyList('mg');\\n                            break;\\n                        case \\\"bilibili.com\\\":\\n                            str = mySet.bl;\\n                            extra = getPlayJx('bl');\\n                            parses = getLazyList('bl');\\n                            break;\\n                        case \\\"sohu.com\\\":\\n                            str = mySet.sh;\\n                            extra = getPlayJx('sh');\\n                            parses = getLazyList('sh');\\n                            break;\\n                        case \\\"tv.sohu.com\\\":\\n                            str = mySet.sh;\\n                            extra = getPlayJx('sh');\\n                            parses = getLazyList('sh');\\n                            break;\\n                        case \\\"ixigua.com\\\":\\n                            str = mySet.xg;\\n                            extra = getPlayJx('xg');\\n                            parses = getLazyList('xg');\\n                            break;\\n                        case \\\"pptv.com\\\":\\n                            str = mySet.pp;\\n                            extra = getPlayJx('pp');\\n                            parses = getLazyList('pp');\\n                            break;\\n                        case \\\"miguvideo.com\\\":\\n                            str = mySet.mi;\\n                            extra = getPlayJx('mi');\\n                            parses = getLazyList('mi');\\n                            break;\\n                        case \\\"le.com\\\":\\n                            str = mySet.le;\\n                            extra = getPlayJx('le');\\n                            parses = getLazyList('le');\\n                            break;\\n                        case \\\"1905.com\\\":\\n                            str = mySet.one;\\n                            extra = getPlayJx('one');\\n                            parses = getLazyList('one');\\n                            break;\\n                        case \\\"fun.tv\\\":\\n                            str = mySet.fun;\\n                            extra = getPlayJx('fun');\\n                            parses = getLazyList('fun');\\n                            break;\\n                        default:\\n                            str = mySet.oth;\\n                            extra = getPlayJx('oth');\\n                            parses = getLazyList('oth');\\n                            break;\\n                    }\\n                    break;\\n                default:\\n                    str = mySet.qju;\\n                    break;\\n            }\\n        }\\n    }else{\\n        log('魔断执行定向解析线路头:'+strTitle);\\n        str = strTitle;\\n    }\\n    let withBatch = !!(MyJiexi.isAuto && MyJiexi.autoMode === '速度优先');\\n    let withBatchOrder = !!(MyJiexi.isAuto && /顺序优先|嗅探优先/.test(MyJiexi.autoMode));\\n    let singleBack = MyJiexi.singleBack||false; //吊毛模式。单个结果直接返回，停止后面的\\n    let ignore_mx = MyJiexi.ignore_mx||false; //忽略免嗅,嗅探优先模式使用\\n    let use_mx = !(MyJiexi.autoMode === '嗅探优先' && MyJiexi.ignore_mx); // 只要不是免嗅优先模式下的忽略免嗅,都使用免嗅\\n    let dmPath = 'hiker://files/cache/diaomao.txt';//吊毛模式过滤文件路径\\n    let dmUrls;\\n    try {\\n        dmUrls = fetch(dmPath).trim().split('\\\\n').filter(it=>it&&!it.startsWith('//'));\\n    }catch (e) {\\n        dmUrls = [];\\n    }\\n    function hasDm(videoUrl,dmUrls){//播放地址是否为吊毛视频\\n        if(dmUrls.length<1){\\n            return false\\n        }\\n        for(let dmUrl of dmUrls){\\n            if((new RegExp(dmUrl)).test(videoUrl)){//播放地址包含吊毛标志的地址\\n                return true\\n            }\\n        }\\n        return false\\n    }\\n\\n    function unique2(array){//去重函数\\n        return Array.from(new Set(array));\\n    }\\n    function ArrSet(Arr, id) {//对象数组去重\\n        var obj = {};\\n        const arrays = Arr.reduce((setArr, item) => {\\n            obj[item[id]] ? '' : obj[item[id]] = true && setArr.push(item);\\n            return setArr;\\n        }, []);\\n        return arrays;\\n    }\\n    function sortByKey(array, key, order) {//对象数组按某个键值排序\\n        return array.sort(function(a, b) {\\n            var x = parseInt(a[key].match(/(\\\\d+)/)[1]);//修复大于10出问题\\n            var y = parseInt(b[key].match(/(\\\\d+)/)[1]);\\n            // log('x:'+x+\\\",y:\\\"+y);\\n            if (order) {\\n                return ((x < y) ? -1 : ((x > y) ? 1 : 0))\\n            } else {\\n                return ((x < y) ? ((x > y) ? 1 : 0) : -1)\\n            }\\n        })\\n    }\\n    if (typeof ParseS[str] == 'function') { // 主配置放免嗅才会触发(不太友好,躺平不想优化)\\n        if(/通免/.test(str)){\\n            return ParseS[str](vipUrl,timeout);\\n        }\\n        var url;\\n        var task = function(obj) {\\n            eval('var config_dp =' + fetch(getVar('oldConfig')));\\n            eval(fetch(config_dp.cj));\\n            return aytmParse(obj.vipUrl,obj.name,obj.timeout);\\n        };\\n        let t = (new Date()).getTime();\\n        if (Array.isArray(extra.playUrlList) && extra.playUrlList.length > 0) {\\n            extra.nameList = unique2(extra.nameList);\\n            extra.playUrlList = unique2(extra.playUrlList);\\n        }else{\\n            extra.nameList = [];\\n            extra.playUrlList = [];\\n        }\\n        function getMyUrls(urls){\\n            return urls.map((it) => {\\n                let turl = it.split(';')[0];\\n                if (it.includes(\\\"#isVideo=true#\\\") && !turl.includes(\\\"#isVideo=true#\\\")) {\\n                    turl += \\\"#isVideo=true#\\\";\\n                }\\n                return turl\\n            });\\n        }\\n\\n        function getMyHeaders(urls){\\n            return urls.map((it) => {\\n                if (!/;/.test(it) || it.split(';').length < 2) {\\n                    return {}\\n                } else {\\n                    let head = it.split(';')[1];\\n                    if (!/@/.test(head) || !/{|}/.test(head)) {\\n                        return {}\\n                    }\\n                    head = head.split(\\\"{\\\")[1].split(\\\"}\\\")[0];\\n                    //head = head.replace(/{|}/g,'');\\n                    head = head.split('&&');\\n                    let obj = {};\\n                    for (let i in head) {\\n                        let key = head[i].split('@')[0];\\n                        let value = head[i].split('@')[1].replace(/;/, '；；');\\n                        obj[key] = value;\\n                    }\\n                    return obj\\n                }\\n            });\\n        }\\n\\n        function getMyPlayUrlList(){\\n            if(Array.isArray(extra.playUrlList)){\\n                // return extra.playUrlList.map(it=>'video://'+it.replace('?url=','?id='+t+'&url=').replace('?v=','?id='+t+'&v='));\\n                return extra.playUrlList.map(it=>'video://'+it);\\n            }\\n            return []\\n        }\\n\\n\\n        if(!withBatchOrder||strTitle) {//不开多线路顺序优先或者指定了解析\\n            url = ParseS[str](vipUrl,timeout);\\n        }\\n        else{//开了多线路顺序优先执行免嗅多任务\\n            if(typeof ParseS[str] == 'function'&&!/通免/.test(ParseS[str].toString())){\\n                parses.unshift({name:str}); //把主配置的免嗅探加入到多任务列表\\n            }\\n            parses = ArrSet(parses,'name'); //去重\\n            if(use_mx) { // 如果使用免嗅,先多任务跑免嗅\\n                var count = parses.length; //设置任务数量\\n                log('魔断开启多任务解析,任务数量:' + count);\\n                log('解析列表:' + JSON.stringify(parses));\\n                var parseRet = []; //解析结果列表\\n                let tasks = parses.map((it, idex) => {\\n                    return {\\n                        func: task,\\n                        param: {\\n                            name: it.name,\\n                            // rule:it.rule,\\n                            vipUrl: vipUrl,\\n                            timeout: timeout\\n                        },\\n                        id: \\\"task\\\" + idex\\n                    }\\n                });\\n                showLoading(\\\"魔断并发解析中，剩余解析:\\\" + count);\\n\\n                function isDm(ret) {\\n                    if (!ret) {\\n                        return true\\n                    }\\n                    return hasDm(ret.split('#')[0].split(';')[0], dmUrls)\\n                }\\n\\n                be(tasks, {\\n                    func: function (obj, id, error, ret) {\\n                        log(\\\"监听到任务\\\" + id + '已结束,error:' + error + ',ret:' + ret);\\n                        ret = ret || '';\\n                        parseRet.push({\\n                            task: id,\\n                            ret: ret,\\n                            name: tasks.filter(it => it.id === id)[0].param.name\\n                        });\\n\\n                        if (singleBack) {//吊毛模式开始的话,判断ret有效性\\n                            log('任务' + id + '结果是吊毛?' + isDm(ret));\\n                            if (!isDm(ret) && ParseS.isVideo(ret.split('#')[0].split(';')[0])) {\\n                                hideLoading();\\n                                log('吊毛模式中断解析并返回视频' + ret);\\n                                return 'break'\\n                            }\\n                        }\\n                        count -= 1; //完成了任务，任务数量-1\\n                        //log(obj);\\n                        if (count > 0) {\\n                            showLoading(\\\"魔断并发解析中，剩余解析:\\\" + count)\\n                        } else {\\n                            hideLoading();\\n                        }\\n                    },\\n                    param: {//传到监听函数的obj参数里\\n                        hi: \\\"ccc\\\",\\n                    }\\n                });//执行多任务\\n                // let valuable = parseRet.filter(it=>/m3u8|mp4/.test(it.ret));\\n                log(\\\"多任务执行结果数:\\\" + parseRet.length);\\n                let valuable = [];\\n                parseRet.forEach((it)=>{\\n                    if(it.ret){\\n                        if(/names/.test(it.ret)&&/urls/.test(it.ret)){\\n                            log('尝试聚合解析解包:'+it.ret);\\n                            try {\\n                                let rets = JSON.parse(it.ret.replace(/#isVideo=true#/g,''));\\n                                rets.names.forEach((name,idex)=>{\\n                                    valuable.push({\\n                                        name:name,\\n                                        ret:rets.urls[idex],\\n                                        task:it.task,\\n                                    });\\n                                });\\n                            }catch (e) {\\n                                log('解包发生错误:'+e.message);\\n                            }\\n                        }else if(ParseS.isVideo(it.ret.split('#')[0].split(';')[0])){\\n                            valuable.push(it);\\n                        }else if(it.ret.startsWith('video://')){\\n                            valuable.push(it);\\n                        }\\n                    }\\n                });\\n                // let valuable = parseRet.filter(it => it.ret && ParseS.isVideo(it.ret.split('#')[0].split(';')[0]));\\n                valuable = valuable.filter(it => !isDm(it.ret));//过滤吊毛视频\\n                log('多任务顺序执行有效结果:' + JSON.stringify(valuable));\\n                if (valuable.length > 1) {//多线路\\n                    valuable = sortByKey(valuable, 'task', true);//升序排列\\n                    let urls = valuable.map(it => it.ret);//取出链接,缓存前的\\n                    if (getVar('dp.cacheVideo', 'true') === 'true' && parseInt(getAppVersion()) >= 2255) {//开始缓存\\n                        log(\\\"尊敬的魔断用户，视频缓存已启用，请尽情享受看剧时光\\\");\\n                        let videosCache = urls.map((it) => {\\n                            let headers = {};\\n                            if (it.split(\\\";\\\").length > 1) {\\n                                let head = it.split(';')[1];\\n                                if (/@/.test(head) && /{|}/.test(head)) {\\n                                    //head = head.replace(/{|}/g,'');\\n                                    head = head.split(\\\"{\\\")[1].split(\\\"}\\\")[0];\\n                                    head = head.split('&&');\\n                                    for (let i in head) {\\n                                        let key = head[i].split('@')[0];\\n                                        let value = head[i].split('@')[1].replace(/;/, '；；');\\n                                        headers[key] = value;\\n                                    }\\n                                }\\n                            }\\n                            return {\\n                                url: it.split(\\\";\\\")[0].split(\\\"#\\\")[0],\\n                                options: {\\n                                    headers: headers\\n                                }\\n                            }\\n                        });\\n                        var data = batchCacheM3u8(videosCache);\\n                        data = data.map((it, id) => {\\n                            let extra = \\\"\\\";\\n                            if (urls[id].split(\\\";\\\").length > 1) {\\n                                extra = \\\";\\\" + urls[id].split(\\\";\\\")[1];\\n                            } else if (urls[id].split(\\\"★\\\").length > 1) {\\n                                extra = \\\"★\\\" + urls[id].split(\\\"★\\\")[1];\\n                            }\\n                            if (it + \\\"\\\" !== \\\"null\\\") {\\n                                return it + extra\\n                            } else {\\n                                return urls[id]\\n                            }\\n                        });\\n                        urls = data\\n                    }\\n                    // log('排序完毕后结果:'+JSON.stringify(valuable));\\n                    let names = valuable.map(it => it.name);\\n                    let headers = getMyHeaders(urls);\\n                    urls = getMyUrls(urls);\\n                    if(MyJiexi.autoMode === '嗅探优先'){\\n                        urls = urls.concat(getMyPlayUrlList());\\n                        names = names.concat(extra.nameList);\\n                        // headers = headers.concat(extra.nameList.map((it)=>{return {}}));\\n                    }\\n                    return JSON.stringify({urls: urls, headers: headers, names: names});\\n\\n                } else if (valuable.length === 0) {\\n                    if (extra.nameList.length < 1) {\\n                        hideLoading();\\n                        return 'toast://芭比Q了,多任务免嗅解析全军覆没并且没有可用的json|x5解析了'\\n                    }\\n                    showLoading(\\\"魔断多任务免嗅失败,尝试json|x5\\\");\\n                    //排除第一个\\n                    let extra2 = {\\n                        nameList: extra.nameList,\\n                        playUrlList: extra.playUrlList.slice(1),\\n                    }\\n                    if(MyJiexi.autoMode === '嗅探优先'){\\n                        return JSON.stringify({\\n                            urls: getMyPlayUrlList(),\\n                            names: extra.nameList\\n                        });\\n                    }else{\\n                        return ParseS.defaultParseWeb ? ParseS.defaultParseWeb(extra.playUrlList[0], timeout, extra2) : extra.playUrlList[0];\\n                    }\\n                    // log(extra.playUrlList[0]);\\n                    // log(extra2);\\n\\n                } else {\\n                    // 免嗅后只有一个结果,嗅探优先自动拼x5和json, 顺序优先自动返回一个播放链接\\n                    if(MyJiexi.autoMode === '嗅探优先') {\\n                        let urls = valuable.map(it => it.ret);//取出链接,缓存前的\\n                        let names = valuable.map(it => it.name);\\n                        let headers = getMyHeaders(urls);\\n                        urls = getMyUrls(urls);\\n                        names = names.concat(extra.nameList);\\n                        urls = urls.concat(getMyPlayUrlList());\\n                        // headers = headers.concat(extra.nameList.map((it)=>{return {}}));\\n                        return JSON.stringify({\\n                            urls: urls,\\n                            names: names,\\n                            headers:headers\\n                        });\\n                    }else{\\n                        return valuable[0].ret\\n                    }\\n                }\\n            }else{ // 纯video://分支\\n                if (extra.nameList.length < 1) {\\n                    hideLoading();\\n                    return 'toast://芭比Q了,多任务免嗅解析全军覆没并且没有可用的json|x5解析了'\\n                }\\n                log(\\\"魔断多任务免嗅失败,尝试json|x5\\\");\\n                return JSON.stringify({\\n                    urls: getMyPlayUrlList(),\\n                    names: extra.nameList\\n                });\\n            }\\n        }\\n        if(/^hiker:|^toast:|^rule:|^x5Rule:|^webRule:|^select/.test(url)){\\n            return url;\\n        }\\n        if(!url&&!/^http/.test(vipUrl)){\\n            return 'toast://魔断解析失败>'+vipUrl\\n        }\\n        // log(vipUrl+'免嗅探结果:'+url);\\n        if (/^\\\\//.test(url)) {\\n            url = 'https:' + url\\n        }\\n        // 魔断免嗅截取\\n        // if (/=http/.test(url)) {\\n        //     url = /&url=/.test(url) ? url : 'http' + decodeURIComponent(url.split('=http')[1]);\\n        // }\\n        /*if(url.match(/mgtv.com/g)=='mgtv.com'){\\n            url = url + ';{Referer@https://www.mgtv.com}';\\n        } else */\\n        if (/\\\\.flv/.test(url)&&!/User-Agent/.test(url)) {\\n            url = url + ';{User-Agent@app&&Referer@' + vipUrl + '}';\\n        }\\n        if (url === '' || url === vipUrl) {\\n            return vipUrl;\\n        } else if(!/#isVideo=true#/.test(url)){\\n            return url + '#isVideo=true#';\\n        }else{\\n            return url\\n        }\\n    } else if (typeof ParseS[str] == 'string'&&ParseS[str].match(/http.*?=/)) {\\n        // log(\\\"断插开始通用执行免嗅 defaultParseWeb:\\\"+timeout);\\n        //log(\\\"默认x5\\\"+ParseS.defaultParseWeb);\\n        if(withBatch){ // 速度优先\\n            if(Array.isArray(extra.playUrlList)&&extra.playUrlList.length>0){\\n                extra.playUrlList = extra.playUrlList.filter(it=>it!==(ParseS[str]||str) + vipUrl);\\n                let nameList = extra.nameList;\\n                nameList.unshift(str);\\n                extra.nameList=unique2(nameList);\\n                extra.playUrlList = unique2(extra.playUrlList);\\n            }\\n        }else{\\n            extra = {}\\n        }\\n        return ParseS.defaultParseWeb?ParseS.defaultParseWeb((ParseS[str]||str) + vipUrl,timeout,extra):(ParseS[str]||str) + vipUrl;\\n    } else if(typeof(str)==='string'&&str.length>1&&(typeof ParseS[str]=='undefined'||!ParseS[str])&&!/^http/.test(str)){\\n        return 'toast://请先进行断插配置确保该解析存在!\\\\n检测到无效的解析配置:'+str;\\n    }else {\\n        return ParseS.defaultParse(str + vipUrl,timeout);\\n    }\\n}\\n\\nvar playParse = {\\n    player_xx: function(jurl, Label) {\\n        return $(jurl).lazyRule((k) => {\\n            var jsUrl = JSON.parse(fetch(getVar('oldConfig'))).cj;\\n            var Label = k;\\n            var fa = ['letv', 'pptv', 'qq', 'youku', 'qiyi', 'iqiyi', 'mgtv', 'bilibili', 'sohu', 'migu', 'm1905', 'vip'];\\n            var html = parseDom(request(input), Label);\\n            eval(html.replace(/player_.*?={/, 'pdata={'));\\n            eval(fetch(jsUrl));\\n            if (pdata.url.substr(0, 8).match(/JT..JT../)) {\\n                pdata.url = base64Decode(pdata.url);\\n            }\\n            if (pdata.url.substr(0, 8).match(/%..%../)) {\\n                pdata.url = unescape(pdata.url);\\n            }\\n            if (fa.includes(pdata.from)) {\\n                return aytmParse(pdata.url);\\n            } else {\\n                return pdata.url + '#isVideo=true#';\\n            }\\n        }, Label)\\n    }\\n};\\nfunction mzPopup() {\\n    /*\\n    if (getVar(\\\"ijk-tx\\\", \\\"\\\") == \\\"1\\\") {\\n        setItem(\\\"tixing\\\", \\\"1\\\")\\n        clearVar(\\\"ijk-tx\\\")\\n    }\\n    if (getItem(\\\"tixing\\\", \\\"\\\") == \\\"\\\") {\\n        confirm({\\n            title: '免责声明',\\n            content: '本程序不提供视频解析服务\\\\n所有内容均从用户分享中收集\\\\n仅供测试和学习交流\\\\n\\\\n确定即认可，不再提醒',\\n            confirm: $.toString(() => {\\n                putVar(\\\"ijk-tx\\\", \\\"1\\\");\\n                refreshPage(false);\\n                return \\\"toast://点击了确认\\\"\\n\\n            })\\n        })\\n    }\\n     */\\n}\\n/*\\nif (!getVar(\\\"tixing\\\")) {\\n    mzPopup();\\n    putVar('tixing','ok');\\n}\\n*/\\nfunction saveButton(content,name) {\\n    name = name||'';\\n    var data = content.split('★★★');\\n    if (data.length === 2) {\\n        var _dt = parsePaste(data[0]);\\n        content = _dt.substr(0, 6) !== 'error:' ? _dt : '';\\n    }\\n    data = content.split('★');\\n    var type = data[0];\\n    var arrList = [];\\n    var objCode = {};\\n    if (data.length > 2 && data[0] !== '直链') {\\n        var objKey = data[1];\\n        var objValue = data[2];\\n        if (type === 'MyParseS') {\\n            objValue = base64Decode(objValue);\\n        }\\n        if (objValue.split('function').length > 1) {\\n            eval('objValue=' + objValue);\\n        }\\n        arrList.splice(0, 0, objKey); //添加项目非删除\\n        objCode[objKey] = objValue;\\n\\n    } else if (type === '直链') {\\n        arrList = data;\\n        arrList.splice(0, 1);\\n    } else {\\n        arrList = null;\\n    }\\n    if (arrList != null) {\\n        var parseRoute = getVar('parseRoute');\\n        eval('var json =' + fetch(parseRoute));\\n        Array.prototype.remove = function(val) {\\n            let index = this.indexOf(val);\\n            if (index > -1) {\\n                this.splice(index, 1);\\n            }\\n        };\\n        if(name){//删除名称列表和代码\\n            json.title.remove(name);\\n            delete json.codes[name];\\n        }\\n        arrList = arrList.concat(json.title);\\n        json.title = Array.from(new Set(arrList));\\n        Object.assign(json.codes, objCode);\\n        if (type === '测试') {\\n            eval('var config =' + fetch(getVar('oldConfig')));\\n            eval(fetch(config.cj));\\n            if (typeof ParseS[data[1]] == \\\"function\\\") {\\n                return ParseS[data[1]](data[2]);\\n            } else {\\n                return ParseS.defaultParseWeb(ParseS[data[1]] + data[2]);\\n            }\\n        } else {\\n            writeFile(parseRoute, $.stringify(json));\\n            return \\\"toast://已保存内容\\\";\\n        }\\n    } else {\\n        return \\\"toast://无法识别这个内容呢\\\"\\n    }\\n}\\n// 以下代码千万不要放出来否则报错\\nif (getItem('updateDate') != updateDate) {\\n// if (true) {\\n    // 把function变成string\\n    let functionCode = saveButton + ';'+mzPopup;\\n    // writeFile('hiker://files/cache/plscParse.html', fetch(_mySet.ckLink + 'plscParse.html'));\\n    setItem('myFunction', functionCode);\\n    setItem('updateDate', updateDate);\\n}\\nvar bjItem = {\\n    hfPlugin: function(parseRoute) {\\n        return $('#noLoading#').lazyRule((k) => {\\n            if (fileExist(k)) {\\n                var cjcache = getVar('cjCache');\\n                eval('var json =' + fetch(k));\\n                json.settings.cj = cjcache;\\n                writeFile(k, $.stringify(json));\\n                var oldRoute = getVar('oldConfig');\\n                var oldConfig = json.settings;\\n                oldConfig.cj = cjcache;\\n                writeFile(oldRoute, $.stringify(oldConfig));\\n                refreshPage(false);\\n                return 'toast://恢复成功';\\n            } else {\\n                return 'toast://需要先拉取列表'\\n            }\\n        }, parseRoute)\\n    },\\n    pullCode: function(k) {\\n        return $('#noLoading#').lazyRule((k) => {\\n            var pullMode = k[0];\\n            var parseRoute = k[1];\\n            var parseFile = fetch(parseRoute);\\n            if (!parseFile) {\\n                var settings = fetch(getVar('oldConfig'));\\n                settings = !settings ? {} : JSON.parse(settings);\\n                var json = {};\\n                json.settings = settings;\\n                json.title = [];\\n                json.codes = {};\\n            } else {\\n                eval('var json =' + parseFile);\\n            }\\n            var parseTitle = [];\\n            var parseCode={};\\n            var cjLink = getVar('pluginLink');\\n            try {\\n                if(/@base64:\\\\/\\\\//.test(cjLink)){\\n                    eval(base64Decode(cjLink.split('@base64://')[1]));\\n                }else if(/插件名/.test(cjLink)){\\n                    let realLink = cjLink.split('插件名')[0].replace(/[\\\\s]/g,'');\\n                    log('解析云剪切板:'+realLink);\\n                    let yPaste = parsePaste(realLink);\\n                    if(/@base64:\\\\/\\\\//.test(yPaste)){\\n                        try {\\n                            eval(base64Decode(yPaste.split('@base64://')[1]));\\n                            if(typeof ParseS==='undefined'){\\n                                return 'toast://拉取个鸡毛插件,里面连ParseS对象都没有!'\\n                            }\\n                        }catch (e) {\\n                            return 'toast://鸡毛插件执行报错:\\\\n'+e.message;\\n                        }\\n                    }else{\\n                        return 'toast://未能识别云剪切板中的内容:\\\\n'+yPaste.substring(0,100);\\n                    }\\n                } else if (cjLink === 'Q神') {\\n                    let jiexi = fetch('hiker://files/jiexi/jiexi.txt').split('\\\\n');\\n                    for (i in jiexi) {\\n                        let title=jiexi[i].split('&&')[0];\\n                        let code=jiexi[i].split('&&')[1];\\n                        parseTitle.push(title);\\n                        parseCode[title]=code;\\n                    }\\n                }\\n                // }else if(/^#[a-zA-Z0-9]{2,10}$/.test(cjLink)){//福利口令2到10位\\n                else if(/^#[\\\\S]{2,10}$/.test(cjLink)){//福利口令2到10位任意非空字符串\\n                    const {taskCall, taskRun,taskReq} = $.require(\\\"hiker://page/taskCall?rule=道长仓库Pro\\\");\\n                    // log('开始执行任务仓库获取断念插件福利口令');\\n                    let result = taskCall(17,'DnFuli',[cjLink]);\\n                    if (result.status === 0) {\\n                        let ret = JSON.parse(result.result);\\n                        // log(ret);\\n                        if(ret.opt==='error'){\\n                            return 'toast://'+ret.msg;\\n                        }else if(ret.opt==='url'){\\n                            let html = fetch(ret.ret);\\n                            let arr = html.includes('http')? html:base64Decode(html);\\n                            let jiexi = arr.match(/[\\\\S]*?,.*?[\\\\s]/g);\\n                            for (let i in jiexi) {\\n                                let title=jiexi[i].split(',')[0];\\n                                let code=jiexi[i].split(',')[1].split(\\\"\\\\n\\\")[0];\\n                                if(!/^http|function/.test(code)&&code.length>20){//base64编码的函数\\n                                    code = base64Decode(code);\\n                                }\\n                                parseTitle.push(title);\\n                                parseCode[title]=/function/.test(code)?eval(code):code;\\n                            }\\n                        }else if(ret.opt==='jx'){\\n                            if(/[\\\\S]*?,http[\\\\S]/.test(ret.ret)){\\n                                let title = ret.ret.split(',')[0];\\n                                let code = ret.ret.split(',')[1].split('\\\\n')[0];\\n                                parseTitle.push(title);\\n                                parseCode[title]=code;\\n                            }else if(/^http/.test(ret.ret)){\\n                                let title = cjLink.split('#')[1];\\n                                let code = ret.ret.split('\\\\n')[0];\\n                                parseTitle.push(title);\\n                                parseCode[title]=code;\\n                            }else{\\n                                return 'toast://未知的福利:\\\\n'+ret.ret;\\n                            }\\n                        }else if(ret.opt==='vipJx'){\\n                            let title = cjLink.split('#')[1];\\n                            let code = ret.ret;\\n                            // log(code);\\n                            parseTitle.push(title);\\n                            parseCode[title]=/function/.test(code)?eval(code):code;\\n                        }\\n                    }else{\\n                        return 'toast://仓库非最新版或者福利社功能开发中'\\n                    }\\n                }else if(cjLink==='断插'){\\n                    eval(fetch(\\\"hiker://files/cache/Parse_Dn.js\\\"));\\n                    parseTitle=Object.keys(ParseS);\\n                }else if(/^hiker:\\\\/\\\\/|^file:\\\\/\\\\/|^http|^\\\\/storage\\\\/|^\\\\/sdcard\\\\//.test(cjLink)){\\n                    if(/^\\\\/storage\\\\/|^\\\\/sdcard\\\\//.test(cjLink)){\\n                        cjLink = 'file://'+cjLink;\\n                    }\\n                    eval(fetch(cjLink));\\n                    parseTitle=Object.keys(ParseS);\\n                }else{\\n                    return 'toast://拉取口令有误'\\n                }\\n            } catch (e) {\\n                log(e.message);\\n            }\\n            var jxJudge = typeof ParseS == 'object';\\n            var lbJudge = typeof(parseTitle) == 'object';\\n            if (jxJudge || lbJudge) {\\n                // if (pullMode === '列表') {\\n                //     if (!lbJudge) {\\n                //         parseTitle = Object.keys(ParseS);\\n                //     }\\n                //     var newParseTitle = json.title.concat(parseTitle);\\n                //     json.title = Array.from(new Set(newParseTitle));\\n                // }\\n                // 不管拉取代码还是列表都要把列表拉了\\n                if (!lbJudge) {\\n                    parseTitle = Object.keys(ParseS);\\n                    log(parseTitle);\\n                }\\n                var scObject = [\\\"CityIP\\\", \\\"pcUA\\\", \\\"cacheM3u8\\\",\\\"isVideo\\\",\\\"timeOut\\\",\\\"源码匹配\\\", \\\"defaultParse\\\",\\\"defaultParseWeb\\\",\\\"maoss\\\", \\\"LLQ\\\",\\\"parseLc\\\"];\\n                parseTitle = parseTitle?parseTitle.filter(it=>!scObject.includes(it)):[];\\n                var newParseTitle = json.title.concat(parseTitle);\\n                json.title = Array.from(new Set(newParseTitle));\\n\\n                if (pullMode === '代码') {\\n                    if (typeof originalParseS == 'object') {\\n                        for (let i in scObject) {\\n                            delete originalParseS[scObject[i]];\\n                        }\\n                        // originalParseS =originalParseS.filter(it=>!scObject.includes(Object.getOwnPropertyNames(it)[0]));\\n                        Object.assign(json.codes, originalParseS);\\n                    } else {\\n                        if(typeof(ParseS)==\\\"undefined\\\"){\\n                            Object.assign(json.codes, parseCode);\\n                            //return \\\"toast://没有代码，不可拉取\\\"\\n                        }else{\\n                            Object.assign(json.codes, ParseS);\\n                        }\\n                    }\\n                }\\n                //var newFile = tools.toJSON(json);//自定义stringify函数，带有转义字符\\n                var newFile = $.stringify(json); //JSON.parse会报错\\n                writeFile(parseRoute, newFile);\\n                refreshPage(false);\\n                return 'toast://拉取' + pullMode + '成功';\\n            } else {\\n                return 'toast://未获取到对象';\\n            }\\n        }, [k, _mySet.parseRoute])\\n    },\\n    pullScript: function(cj, x5) {\\n        return $('#noLoading#').lazyRule((k) => {\\n            var cjFrom = 'hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ';\\n            var x5From = 'hiker://page/Parse_Dn.html?rule=MyFieldᴰⁿ';\\n            try {\\n                var cjFile = JSON.parse(fetch(cjFrom)).rule;\\n                var x5File = JSON.parse(fetch(x5From)).rule;\\n                writeFile(k[0], cjFile);\\n                writeFile(k[1], x5File);\\n                clearVar('jxOldV');\\n                clearVar('jxNewV');\\n                refreshPage(false);\\n                return 'toast://拉取成功';\\n            } catch (e) {\\n                return 'toast://未成功获取内容';\\n            }\\n        }, [cj, x5])\\n    },\\n    xlSelect: function(bianji, lbLength) {\\n        return \\\"select://\\\" + JSON.stringify({\\n            options: ['‘‘’’<span style=\\\"color:red\\\" title=\\\"删除||' + bianji + '\\\">删 除', '‘‘’’<span style=\\\"color:#F57474\\\" title=\\\"隐藏||' + bianji + '\\\">隐 藏', '‘‘’’<span style=\\\"color:#FF8000\\\" title=\\\"修改||' + bianji + '\\\">修 改', '‘‘’’<span style=\\\"color:#098AC1\\\" title=\\\"置顶||' + bianji + '0' + '\\\">置 顶', '‘‘’’<span style=\\\"color:#098AC1\\\" title=\\\"移动||' + bianji + '\\\">移 动', '‘‘’’<span style=\\\"color:#098AC1\\\" title=\\\"置底||' + bianji + lbLength + '\\\">置 底', '‘‘’’<span style=\\\"color:#04B431\\\" title=\\\"分享||' + bianji + '\\\">地板分享', '‘‘’’<span style=\\\"color:#04B431\\\" title=\\\"云分享||' + bianji + '\\\">云板分享'],\\n            col: '2',\\n            js: $.toString(() => {\\n                var parseRoute = getVar('parseRoute');\\n                eval('var json =' + fetch(parseRoute));\\n                var newInput = parseDomForHtml(input, 'span&&title').split('||');\\n                // 修改,迪迪,0   操作类型,名称,索引\\n                var type = newInput[0];\\n                var name = newInput[1];\\n                var num = newInput[2];\\n                var num2 = newInput[3];\\n                switch (type) {\\n                    case \\\"删除\\\":\\n                        let k = [name, num];\\n                        // 总感觉筛选或者搜索后，由于num的位置不对可能会删除错,事实如此,已修?\\n                        return $(\\\"即将删除: \\\" + name).confirm((k) => {\\n                            var name = k[0];\\n                            var num = k[1];\\n                            var parseRoute = getVar('parseRoute');\\n                            eval('var json =' + fetch(parseRoute));\\n                            if (json.codes.hasOwnProperty(name)) {\\n                                delete json.codes[name];\\n                            }\\n                            num = json.title.indexOf(name); //这样才会得到正确的索引\\n                            json.title.splice(num, 1);\\n                            writeFile(parseRoute, $.stringify(json));\\n                            refreshPage(false);\\n                            return \\\"toast://已将〖\\\" + name + \\\"〗删除\\\";\\n                        }, k);\\n                    case \\\"隐藏\\\":\\n                        return $(\\\"hiker://empty#noLoading#\\\").lazyRule((k) => {\\n                            var name = k[0];\\n                            var num = k[1];\\n                            var parseRoute = getVar('parseRoute');\\n                            eval('var json =' + fetch(parseRoute));\\n                            if (json.codes.hasOwnProperty(name)) {\\n                                num = json.title.indexOf(name); //这样才会得到正确的索引\\n                                json.title.splice(num, 1);\\n                                writeFile(parseRoute, $.stringify(json));\\n                                refreshPage(false);\\n                                return \\\"toast://已将〖\\\" + name + \\\"〗隐藏\\\";\\n                            } else {\\n                                return \\\"toast://可能是个网址, 您可选择删除\\\";\\n                            }\\n                        }, [name, num]);\\n                    case \\\"修改\\\":\\n                        //if (json.codes[name]) {\\n                        var nCode = name;\\n                        var titles = json.title;\\n                        var nName = \\\"这是名称\\\";\\n                        if (json.codes[name]) {\\n                            nCode = json.codes[name].toString();\\n                            nName = name;\\n                        }\\n                        return $(\\\"hiker://empty#noRecordHistory#\\\").rule((k,titles) => {\\n                            var d = [];\\n                            eval(getItem('myFunction'));\\n                            var name = k[0];\\n                            var code = k[1];\\n                            d.push({\\n                                title: '保 存',\\n                                url: saveButton + \\\"saveButton(getVar('input_edit'),name);back();\\\",\\n                                col_type: \\\"input\\\",\\n                                desc: \\\"建议按默认的代码格式修改哦\\\",\\n                                extra: {\\n                                    onChange: \\\"putVar('input_edit', input)\\\",\\n                                    type: \\\"textarea\\\",\\n                                    height: \\\"-1\\\",\\n                                    highlight: true,\\n                                    titleVisible: false,\\n                                    defaultValue: '修改★' + name + '★' + code,\\n                                }\\n                            });\\n                            d.push({\\n                                title: '‘‘’’<small><span style=\\\"color:#6EB897\\\">格式为：操作类型★标题★function(){自定义内容}<br>请勿填入其他格式',\\n                                url: $('#noLoading#').lazyRule((saveButton,name,titles) => {\\n                                    let tmpAr = getVar('input_edit').split('★');\\n                                    if(tmpAr.length<2){\\n                                        return 'toast://修改格式有误，访问被拒绝'\\n                                    }\\n                                    let newName = tmpAr[1];\\n                                    if(newName!==name&&titles.includes(newName)){\\n                                        return $('检测到同名接口:'+newName+',是否覆盖?').confirm((saveButton,name)=>{\\n                                            let code = saveButton(getVar('input_edit'),name);\\n                                            back();\\n                                            return 'toast://已保存修改\\\\n请自行检测覆盖后的内容';\\n                                        },saveButton,name);\\n                                    }else{\\n                                        let code = saveButton(getVar('input_edit'),name);\\n                                        back();\\n                                        return 'toast://已保存修改';\\n                                    }\\n                                    // if(typeof(code)==='string'&&code.length>2){\\n                                    //     return code\\n                                    // }else{\\n                                    //     return 'toast://已保存修改';\\n                                    // }\\n                                }, saveButton,name,titles),\\n                                desc: '‘‘’’<big><big><span style=\\\"color:#298A08\\\">保 存',\\n                                col_type: 'text_center_1'\\n                            });\\n                            setResult(d);\\n                        }, [nName, nCode],titles) //[name, json.codes[name].toString()])\\n                    /*} else {\\n                        return \\\"toast://只有网址或者标题, 不支持修改\\\"\\n                    }*/\\n                    case \\\"置顶\\\":\\n                    case \\\"置底\\\":\\n                        eval('var json =' + fetch(parseRoute));\\n                        num = json.title.indexOf(name); //这样才会得到正确的索引\\n                        if(num>-1){\\n                            var item = json.title.splice(num, 1);\\n                            json.title.splice(num2, 0, item[0]);\\n                            writeFile(parseRoute, $.stringify(json));\\n                            refreshPage(false);\\n                        }else{\\n                            return 'toast://没找到:'+name;\\n                        }\\n                        break;\\n                    case \\\"移动\\\":\\n                        return $('hiker://empty#noLoading#').lazyRule((k) => {\\n                            putVar('bianji', '移动#' + k);\\n                            refreshPage(false);\\n                            return input;\\n                        }, num);\\n                    case \\\"分享\\\":\\n                    case \\\"云分享\\\":\\n                        if (json.codes[name]) {\\n                            var parseText = typeof json.codes[name] == 'function' ? $.stringify(json.codes[name]) : json.codes[name];\\n                            parseText = 'MyParseS★' + name + '★' + base64Encode(parseText);\\n                        } else {\\n                            var parseText = '直链★' + json.title[num];\\n                        }\\n                        if (type == '云分享' && parseText.substr(0, 8) == 'MyParseS') {\\n                            parseText = sharePaste(parseText);\\n                            return parseText.substr(0, 6) != 'error:' ? 'copy://' + parseText + '\\\\n★★★\\\\n' + 'MyParseS：' + name : 'toast://分享失败!!云剪贴板可能挂了';\\n                        } else {\\n                            return 'copy://' + parseText;\\n                        }\\n                    default:\\n                        return 'toast://暂不支持';\\n                } //switch的\\n            }) //String的\\n        }) //stringify的\\n    },\\n    xjParse: function() {\\n        return $(\\\"hiker://empty#noHistory#\\\").rule(() => {\\n            var d = [];\\n            eval(getItem('myFunction'));\\n            d.push({\\n                title: '保 存',\\n                url: saveButton + \\\"saveButton(input);back();clearVar('input_add')\\\",\\n                col_type: \\\"input\\\",\\n                desc: \\\"输入正确格式内容\\\",\\n                extra: {\\n                    onChange: 'putVar(\\\"input_add\\\", input)',\\n                    type: \\\"textarea\\\",\\n                    height: \\\"-1\\\",\\n                    highlight: true,\\n                    titleVisible: false,\\n                    defaultValue: getVar('input_add'),\\n                }\\n            });\\n            d.push({\\n                title: '‘‘’’<small><span style=\\\"color:#6EB897\\\">按描述诉格式输入, 请勿填入其他格式<br>本地口令: 操作类型★名称★代码<br>云口令: 链接★★★名称; 纯网址: 直链★url1★url2',\\n                desc: '‘‘’’<big><big><span style=\\\"color:#298A08\\\">保 存',\\n                url: $('noLoading').lazyRule((saveButton) => {\\n                    return saveButton(getVar('input_add'));\\n                }, saveButton),\\n                col_type: 'text_center_1'\\n            });\\n            setResult(d);\\n        })\\n    },\\n    ydParse: function(BJmode, i) {\\n        return $('#noLoading#').lazyRule((k) => {\\n            var A = k[0].split('#')[1];\\n            var B = k[1];\\n            var parseRoute = getVar('parseRoute');\\n            eval('var json =' + fetch(parseRoute));\\n            var item = json.title.splice(A, 1); // 1: 标记开始位置，2: 删除到哪个位置\\n            json.title.splice(B, 0, item[0]); // 1: 同上，2: 0表示不删除，3: 添加对象\\n            writeFile(parseRoute, $.stringify(json));\\n            clearVar('bianji');\\n            refreshPage(false);\\n            return 'hiker://empty';\\n        }, [BJmode, i])\\n    },\\n    plscParse: function() {\\n        return $('hiker://empty#noRecordHistory#').rule(() => {\\n            var d = [];\\n            d.push({\\n                title: '批量修改/删除解析',\\n                desc: 'auto&&float',\\n                // url: 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/plscParse.html',\\n                url: _mySet.batchRoute,\\n                col_type: 'x5_webview_single'\\n            })\\n            setResult(d);\\n        })\\n    }\\n};\\n\\nfunction setParse() {\\n    $.require(\\\"hiker://page/Route?rule=MyFieldᴰⁿ\\\").setParse();\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"调用路由\",\"path\":\"Route\",\"rule\":\"js:\\nconst d = [];\\nconst data = {};\\n\\ndata.oldConfig = \\\"hiker://files/cache/MyParseSet.json\\\";\\ndata.cjRoute = \\\"hiker://files/cache/Parse_Dn.js\\\";\\ndata.x5Route =\\ngetPath('hiker://files/cache/Parse_Dn.html');\\n\\ndata.jxLazy = \\\"eval('var config =' + fetch('\\\" + data.oldConfig + \\\"'));eval(fetch(config.cj));aytmParse(input)\\\";\\n\\ndata.szParse = \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory##noRecordHistory#\\\";\\n\\ndata.setParse = function() {\\n    d.push({\\n        desc: '795',\\n        url: this.x5Route,\\n        col_type: 'x5_webview_single'\\n    });\\n    var oldV = getVar('jxOldV');\\n    var newV = getVar('jxNewV');\\n    var versionTips = parseFloat(newV) > parseFloat(oldV) ? '‘‘有新版本: v' + newV : '‘‘';\\n    var pics = [\\n        'https://cdn.seovx.com/img/seovx-20-10%20(92).jpg',\\n        'https://cdn.seovx.com/img/mom2018%20(207).jpg',\\n        'https://tva4.sinaimg.cn/large/9bd9b167gy1fwrh5xoltdj21hc0u0tax.jpg',\\n        'https://tva1.sinaimg.cn/large/005BYqpggy1fwreyu4nl6j31hc0u0ahr.jpg',\\n        'https://s3.bmp.ovh/imgs/2021/10/d7e60b990742093d.jpeg',\\n        'https://s3.bmp.ovh/imgs/2021/10/91ad6d6538bf8689.jpg',\\n        'https://tva1.sinaimg.cn/large/005BYqpggy1fwresl5pmlj31hc0xcwka.jpg',\\n        'https://tva3.sinaimg.cn/large/005BYqpggy1fwrgjdk74oj31hc0u0dqn.jpg',\\n        'https://cdn.seovx.com/img/mom2018%20(320).jpg',\\n        'https://cdn.seovx.com/img/mom2018%20(803).jpg'\\n    ];\\n    d.push({\\n        img: pics[Math.floor(Math.random() * 10)],\\n        title: versionTips + '’’<small><span style=\\\"color:#6EB897\\\"><br>　　点击上方头像进入编辑<br>点此进入论坛帖子列表',\\n        desc: '当前版本: v' + oldV,\\n        url: 'https://haikuoshijie.cn/user/1958',\\n        col_type: 'movie_1'\\n    });\\n  setResult(d);\\n}\\n\\nswitch (getParam(\\\"type\\\")) {\\n    case \\\"设置\\\":\\n        data.setParse();\\n        //setResult(d);\\n        break;\\n    case \\\"编辑\\\":\\n        $.require(\\\"hiker://page/jxItem?rule=MyFieldᴰⁿ\\\").jxList();\\n        setResult(d);\\n        break;\\n\\tcase \\\"主题\\\":\\n\\t     $.require(\\\"hiker://page/theme?rule=MyFieldᴰⁿ\\\").themeInit();\\n        break;\\n\\tcase \\\"解析\\\":\\n\\t     $.require(\\\"hiker://page/jxManage?rule=MyFieldᴰⁿ\\\").jxManage();\\n        break;\\n    default:\\n        $.exports = data;\\n        break;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析项主界面\",\"path\":\"jxItem\",\"rule\":\"eval(JSON.parse(fetch('hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ')).rule);\\nvar isLogin = function (){return true}\\nfunction bbsYZ() {\\n    var _0x47a9b4 = {\\n        'JxSMn': function(_0x249952, _0x4abc15) {\\n            return _0x249952 + _0x4abc15;\\n        },\\n        'LGwmC': '移动#',\\n        'GvDVY': function(_0x461f2d, _0x540571) {\\n            return _0x461f2d + _0x540571;\\n        },\\n        'WfeHD': '‘‘’’<small><span style=\\\"color:#FE9A2E\\\">',\\n        'EqIls': '移动: ',\\n        'Effbn': 'text_2',\\n        'RxkxA': function(_0x32a7d0, _0x1a932c) {\\n            return _0x32a7d0(_0x1a932c);\\n        },\\n        'VBGJH': 'jdRoute',\\n        'BZgRt': function(_0x26984e, _0x5cc926) {\\n            return _0x26984e === _0x5cc926;\\n        },\\n        'rgGCC': 'wDVEb',\\n        'MczOW': function(_0x2880bf, _0x2d9306, _0x97787a) {\\n            return _0x2880bf(_0x2d9306, _0x97787a);\\n        },\\n        'FUjdm': 'bbsYZ',\\n        'lqFhb': function(_0x43bbe6) {\\n            return _0x43bbe6();\\n        },\\n        'FURpy': function(_0x2265c2, _0xa1d568, _0x29de01) {\\n            return _0x2265c2(_0xa1d568, _0x29de01);\\n        },\\n        'XIObB': 'var xdRoute=\\\\\\\"\\\\\\\";'\\n    };\\n    if (!_0x47a9b4['RxkxA'](getVar, _0x47a9b4['VBGJH'])) {\\n        if (_0x47a9b4['BZgRt'](_0x47a9b4['rgGCC'], 'JVkAZ')) {\\n            d['push']({\\n                'title': _0x47a9b4['JxSMn'](_0x47a9b4['LGwmC'], i) == BJmode ? _0x47a9b4['JxSMn'](_0x47a9b4['GvDVY'](_0x47a9b4['WfeHD'], _0x47a9b4['EqIls']), xsList) : '‘‘’’<span style=\\\"color:#298A08\\\">' + xsList,\\n                'url': bjItem['ydParse'](BJmode, i),\\n                'col_type': _0x47a9b4['Effbn']\\n            });\\n        } else {\\n            _0x47a9b4['MczOW'](putVar, _0x47a9b4['FUjdm'], _0x47a9b4['lqFhb'](isLogin||function (){return true}));\\n            _0x47a9b4['FURpy'](putVar, 'jdRoute', _0x47a9b4['XIObB']);\\n        }\\n    }\\n    return getVar(_0x47a9b4['FUjdm']);\\n}\\nvar jxItem = {\\n    'jxList': function() {\\n        var _0x4c0427 = {\\n            'UVWoF': function(_0x26bb07, _0x221b4d) {\\n                return _0x26bb07 + _0x221b4d;\\n            },\\n            'color':function(text, color) {\\n                text += \\\"\\\";\\n                if (text.indexOf(\\\"““””\\\") === 0) {\\n                    text.replace(\\\"““””\\\", \\\"\\\");\\n                }\\n                return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n            },\\n            'kzWDK': function(_0x4854a9, _0x3e98c5) {\\n                return _0x4854a9 + _0x3e98c5;\\n            },\\n            'XXyQr': '移动#',\\n            'gtUnj': function(_0x59aaf7, _0x22c66b) {\\n                return _0x59aaf7 + _0x22c66b;\\n            },\\n            'UtfWf': '‘‘’’<small><span style=\\\\\\\"color:#FE9A2E\\\\\\\">',\\n            'QOvJV': '移动: ',\\n            'ABEwB': '‘‘’’<span style=\\\\\\\"color:#298A08\\\\\\\">',\\n            'ozzWG': 'text_2',\\n            'nWfVR': function(_0x480f3a, _0x4c84fc) {\\n                return _0x480f3a + _0x4c84fc;\\n            },\\n            'JCcNY': 'parseRoute',\\n            'rgDIp': 'bianji',\\n            'hoIdJ': '‘‘’’<big><span style=\\\\\\\"color:#6EB897\\\\\\\">新 建 解 析',\\n            'FrGOH': function(_0x12d6db, _0x2a068d) {\\n                return _0x12d6db < _0x2a068d;\\n            },\\n            'oCCSj': function(_0x19b178, _0x4ef8f6) {\\n                return _0x19b178 === _0x4ef8f6;\\n            },\\n            'HZhlc': function(_0x5cae03, _0x26e242) {\\n                return _0x5cae03 == _0x26e242;\\n            },\\n            'cgIeA': function(_0x25e368, _0x8bc8e9) {\\n                return _0x25e368 + _0x8bc8e9;\\n            },\\n            'xdrFv': function(_0x4ab5d8, _0x21242f) {\\n                return _0x4ab5d8 + _0x21242f;\\n            },\\n            'ywjux': function(_0x5e3051, _0x4e0230) {\\n                return _0x5e3051(_0x4e0230);\\n            }\\n        };\\n        var _0x1d8bb1 = getVar(_0x4c0427['JCcNY']);\\n        var _0x3b89ab = parseFile['title'];\\n        var _0x49da96 = getVar(_0x4c0427['rgDIp']);\\n        d.push({\\n            title: _0x4c0427['hoIdJ'],\\n            desc:'注意:位置操作功能只在分类筛选为全部时生效\\\\n下方搜索按名称或地址,重置请留空或点解析数量按钮',\\n            url: bjItem['xjParse'](),\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible:false\\n            }\\n        });\\n        d.push({\\n            title:'搜索',\\n            desc:'mengx',\\n            col_type:'input',\\n            extra: {\\n                onChange: \\\"putVar('dp.searchJx',input)\\\",\\n                titleVisible: true,\\n                textSize: 11,\\n                defaultValue:getVar('dp.searchJx',''),\\n            },\\n            url:$.toString(()=>{\\n                refreshPage(true);\\n                return 'hiker://empty'\\n            })\\n        });\\n        let filters = ['全部','链接','json','免嗅'];\\n        for(let o in filters){\\n            d.push({\\n                title:getVar('dn.jx_filter','全部')===filters[o]?'““””<span style=\\\"color:#298A08\\\">'+filters[o]:filters[o],\\n                col_type:'scroll_button',\\n                url:$('#noLoading#').lazyRule((it)=>{\\n                    putVar('dn.jx_filter',it);\\n                    refreshPage(true);\\n                    return 'hiker://empty'\\n                },filters[o]),\\n            });\\n        }\\n        var _0x2ecbe5 = _0x3b89ab['length'];\\n        var json={title:[],codes:{}};\\n        let setFile = request('hiker://files/rules/DuanNian/MyParse.json');\\n        try {\\n            eval('json='+setFile);\\n        }catch (e) {\\n            log('Json解析发生了错误:'+e.message);\\n        }\\n        if(getVar('dn.jx_filter','全部')==='链接'){\\n            _0x3b89ab = _0x3b89ab.filter(it=>(!/©$/.test(it))&&typeof(json.codes[_0x4c0427['nWfVR'](it, '')['replace'](/http.*\\\\/\\\\//g, '')])==='string');\\n        }else if(getVar('dn.jx_filter','全部')==='免嗅'){\\n            _0x3b89ab = _0x3b89ab.filter(it=>typeof(json.codes[_0x4c0427['nWfVR'](it, '')['replace'](/http.*\\\\/\\\\//g, '')])==='function');\\n        }else if(getVar('dn.jx_filter','全部')==='json'){\\n            _0x3b89ab = _0x3b89ab.filter(it=>(/©$/.test(it))&&typeof(json.codes[_0x4c0427['nWfVR'](it, '')['replace'](/http.*\\\\/\\\\//g, '')])==='string');\\n        }\\n        if(getVar('dp.searchJx','')){\\n            _0x3b89ab = _0x3b89ab.filter(it=>(json.codes[_0x4c0427['nWfVR'](it, '')]+'').includes(getVar('dp.searchJx'))||it.includes(getVar('dp.searchJx','')));\\n        }\\n        d.push({\\n            title:\\\"解析数:\\\"+_0x4c0427.color(_0x3b89ab.length,'#ff7000'),\\n            col_type:\\\"scroll_button\\\",\\n            url:$('#noLoading#').lazyRule(()=>{\\n                clearVar('dp.searchJx');\\n                refreshPage(true);\\n                return 'toast://已重置'\\n            })\\n        });\\n        // 下面是解析列表排列\\n        // for (var _0xe2c3d8 = 0x0; _0x4c0427['FrGOH'](_0xe2c3d8, _0x2ecbe5); _0xe2c3d8++) {\\n        for (let _0xe2c3d8 in _0x3b89ab) {\\n            var _0x33788c = _0x3b89ab[_0xe2c3d8];\\n            var _0x37871e = _0x4c0427['nWfVR'](_0x33788c, '')['replace'](/http.*\\\\/\\\\//g, '');\\n            if (/移动/ ['test'](_0x49da96)) {\\n                if (_0x4c0427['oCCSj']('uKLxF', 'uKLxF')) {\\n                    d['push']({\\n                        'title': _0x4c0427['HZhlc'](_0x4c0427['XXyQr'] + _0xe2c3d8, _0x49da96) ? _0x4c0427['nWfVR'](_0x4c0427['cgIeA'](_0x4c0427['UtfWf'], _0x4c0427['QOvJV']), _0x37871e) : _0x4c0427['cgIeA'](_0x4c0427['ABEwB'], _0x37871e),\\n                        'url': bjItem['ydParse'](_0x49da96, _0xe2c3d8),\\n                        'col_type': 'text_2'\\n                    });\\n                } else {\\n                    var _0x2bc618 = _0x3b89ab[_0xe2c3d8];\\n                    var _0x5cf417 = _0x4c0427['UVWoF'](_0x2bc618, '')['replace'](/http.*\\\\/\\\\//g, '');\\n                    if (/移动/ ['test'](_0x49da96)) {\\n                        d['push']({\\n                            'title': _0x4c0427['kzWDK'](_0x4c0427['XXyQr'], _0xe2c3d8) == _0x49da96 ? _0x4c0427['gtUnj'](_0x4c0427['gtUnj'](_0x4c0427['UtfWf'], _0x4c0427['QOvJV']), _0x5cf417) : _0x4c0427['ABEwB'] + _0x5cf417,\\n                            'url': bjItem['ydParse'](_0x49da96, _0xe2c3d8),\\n                            'col_type': _0x4c0427['ozzWG']\\n                        });\\n                    } else {\\n                        var _0x119365 = [_0x2bc618, _0x4c0427['gtUnj'](_0xe2c3d8, '||')]['join']('||');\\n                        d['push']({\\n                            'title': _0x4c0427['nWfVR'](_0x4c0427['ABEwB'], _0x5cf417),\\n                            'col_type': _0x4c0427['ozzWG'],\\n                            'url': bjItem['xlSelect'](_0x119365, _0x2ecbe5['toString']())\\n                        });\\n                    }\\n                }\\n            } else {\\n                var _0xb70192 = [_0x33788c, _0xe2c3d8 + '||']['join']('||');\\n                // 迪迪影院||0||  名称||索引 的数组\\n                // ABEwB 是绿色 _0x37871e 是标题名称  xdrFv是字符串连接函数\\n                // let flag = '‘‘Ⓤ’’';\\n                let flag = _0x4c0427.color('Ⓤ','#0051ff');\\n                if(typeof(json.codes[_0x37871e])==='function'){\\n                    // flag = '““Ⓙ””';\\n                    flag = _0x4c0427.color('Ⓙ','#ff7000');\\n                }else if(typeof(json.codes[_0x37871e])==='undefined'){\\n                    flag = '';\\n                }\\n                // let cls = '<span style=\\\"color:#298A08\\\">';\\n                // let title = _0x4c0427['xdrFv'](_0x4c0427['ABEwB'], flag+_0x37871e);\\n                // let title = flag+cls+_0x37871e;\\n                let title = flag+_0x4c0427.color(_0x37871e,'#298A08');\\n                d['push']({\\n                    'title': title,\\n                    // 'title': _0x37871e,\\n                    'col_type': _0x4c0427['ozzWG'],\\n                    'url': bjItem['xlSelect'](_0xb70192, _0x2ecbe5['toString']())\\n                });\\n            }\\n        }\\n        _0x4c0427['ywjux'](clearVar, _0x4c0427['rgDIp']);\\n    },\\n    'lqFile': function() {\\n        var _0x541d76 = {\\n            'aWiRs': function(_0x48d77b, _0x19161f, _0x21cb85) {\\n                return _0x48d77b(_0x19161f, _0x21cb85);\\n            },\\n            'wSfnz': function(_0x4850ea) {\\n                return _0x4850ea();\\n            },\\n            'qRQdA': 'jdRoute',\\n            'WQiqk': 'var xdRoute=\\\"\\\";',\\n            'psGdt': function(_0x170780, _0x3b512a) {\\n                return _0x170780 == _0x3b512a;\\n            },\\n            'imxri': 'true',\\n            'nSkjx': function(_0x95bf38, _0x313f25) {\\n                return _0x95bf38 !== _0x313f25;\\n            },\\n            'iVNeM': 'eeLJm',\\n            'IwMTl': '0|1|5|9|11|3|6|7|10|4|2|8',\\n            'xfdHk': '拉取主插件和网页脚本',\\n            'rGLuA': '主插件存放路径: /cache/Parse_Dn.js\\\\x0a网页脚本存放路径: /cache/Parse_Dn.html',\\n            'zQSLE': 'text_center_1',\\n            'hviDl': function(_0x26db62, _0x312f1c) {\\n                return _0x26db62(_0x312f1c);\\n            },\\n            'ZxUgt': '操作指引',\\n            'sWFoc': function(_0x2a044b, _0x149a3f) {\\n                return _0x2a044b + _0x149a3f;\\n            },\\n            'OEhat': '拉取代码',\\n            'ZvtSu': '编辑解析',\\n            'gXKMb': 'toast://请先拉取列表',\\n            'WCODC': function(_0x4ad3d5, _0x31fa1e) {\\n                return _0x4ad3d5 < _0x31fa1e;\\n            },\\n            'rAkAh': 'text_3',\\n            'yWaOI': '恢复插件路径为默认',\\n            'yjyjK': '当前设置为: ',\\n            'tHXeE': '拉取解析列表或者解析代码',\\n            'GMUYu': '存放路径: /rules/DuanNian/MyParse.json',\\n            'mpZBZ': 'line_blank',\\n            'xvqgF': '输入有效插件地址',\\n            'heuKx': 'putVar(\\\"pluginLink\\\",input)',\\n            'Iifia': '‘‘’’<strong><big>登录提示',\\n            'PFRHA': '使用相关功能需登录视界论坛账号\\\\n如有问题前往论坛了解详情',\\n            'ULwkT': 'https://haikuoshijie.cn/user/signin'\\n        };\\n        if (_0x541d76['psGdt'](_0x541d76['wSfnz'](bbsYZ), _0x541d76['imxri'])||true) {\\n            if (_0x541d76['nSkjx'](_0x541d76['iVNeM'], _0x541d76['iVNeM'])) {\\n                _0x541d76['aWiRs'](putVar, 'bbsYZ', _0x541d76['wSfnz'](isLogin||function (){return true}));\\n                _0x541d76['aWiRs'](putVar, _0x541d76['qRQdA'], _0x541d76['WQiqk']);\\n            } else {\\n                var _0x4d25ff = _0x541d76['IwMTl']['split']('|'),\\n                    _0x4a97c9 = 0x0;\\n                while (!![]) {\\n                    switch (_0x4d25ff[_0x4a97c9++]) {\\n                        case '0':\\n                            d['push']({\\n                                'title': _0x541d76['xfdHk'],\\n                                'url': bjItem['pullScript'](_mySet['cjcache'], _mySet['x5cache']),\\n                                'desc': _0x541d76['rGLuA'],\\n                                'col_type': _0x541d76['zQSLE']\\n                            });\\n                            continue;\\n                        case '1':\\n                            _0x541d76['hviDl'](eval, _0x541d76['hviDl'](getVar, _0x541d76['qRQdA']));\\n                            continue;\\n                        case '2':\\n                            d['push']({\\n                                'col_type': 'line_blank'\\n                            });\\n                            continue;\\n                        case '3':\\n                            var _0x2ab399 = 'hiker://empty#noHistory#@rule=js:this.d=[];$.require(\\\"hiker://page/jxItem?rule=MyFieldᴰⁿ\\\").jxList();setResult(d);';\\n                            continue;\\n                        case '4':\\n                            d['push']({\\n                                'title': _0x541d76['ZxUgt'],\\n                                'url': typeof czGuide == 'function' ? czGuide() : '',\\n                                'col_type': _0x541d76['zQSLE']\\n                            });\\n                            continue;\\n                        case '5':\\n                            xdRoute = _0x541d76['sWFoc'](xdRoute, _mySet['parseRoute']);\\n                            continue;\\n                        case '6':\\n                            var _0x3a9afe = [{\\n                                'title': '拉取列表',\\n                                'url': bjItem['pullCode']('列表')\\n                            }, {\\n                                'title': _0x541d76['OEhat'],\\n                                'url': bjItem['pullCode']('代码')\\n                            }, {\\n                                'title': _0x541d76['ZvtSu'],\\n                                'url': _0x541d76['hviDl'](fileExist, _0x541d76['hviDl'](getVar, 'parseRoute')) == !![] ? _0x2ab399 : _0x541d76['gXKMb']\\n                            }];\\n                            continue;\\n                        case '7':\\n                            for (var _0x1a2cdb = 0x0; _0x541d76['WCODC'](_0x1a2cdb, _0x3a9afe['length']); _0x1a2cdb++) {\\n                                d['push']({\\n                                    'title': _0x3a9afe[_0x1a2cdb]['title'],\\n                                    'url': _0x3a9afe[_0x1a2cdb]['url'],\\n                                    'col_type': _0x541d76['rAkAh']\\n                                });\\n                            }\\n                            continue;\\n                        case '8':\\n                            d['push']({\\n                                'title': _0x541d76['yWaOI'],\\n                                'url': bjItem['hfPlugin'](_mySet['parseRoute']),\\n                                'desc': _0x541d76['sWFoc'](_0x541d76['yjyjK'] + mySet['cj'], '\\\\n存放路径: /rules/DuanNian/MyParse.json'),\\n                                'col_type': _0x541d76['zQSLE']\\n                            });\\n                            continue;\\n                        case '9':\\n                            d['push']({\\n                                'title': _0x541d76['tHXeE'],\\n                                'url': 'toast://请在下方选项操作',\\n                                'desc': _0x541d76['GMUYu'],\\n                                'col_type': _0x541d76['zQSLE']\\n                            });\\n                            continue;\\n                        case '10':\\n                            d['push']({\\n                                'col_type': _0x541d76['mpZBZ']\\n                            });\\n                            continue;\\n                        case '11':\\n                            d['push']({\\n                                'desc': _0x541d76['xvqgF'],\\n                                'col_type': 'input',\\n                                'extra': {\\n                                    'titleVisible': ![],\\n                                    'defaultValue': _0x541d76['hviDl'](getVar, 'pluginLink'),\\n                                    'onChange': _0x541d76['heuKx']\\n                                }\\n                            });\\n                            continue;\\n                    }\\n                    break;\\n                }\\n            }\\n        } else {\\n            d['push']({\\n                'title': _0x541d76['Iifia'],\\n                'desc': _0x541d76['PFRHA'],\\n                'url': _0x541d76['ULwkT'],\\n                'col_type': _0x541d76['zQSLE']\\n            });\\n        }\\n    }\\n};\\n$.exports = jxItem;\"},{\"col_type\":\"movie_3\",\"name\":\"解析Url编辑\",\"path\":\"EditUrl\",\"rule\":\"js:\\nsetPageTitle(\\\"插件接口设置\\\");\\nlet d = [];\\nlet parseUrlText = request(\\\"hiker://files/jiexi/jiexi.txt\\\");\\nlet parseUrlArray = parseUrlText.split(/\\\\n/);\\nlet selected = getItem(\\\"selected\\\", \\\"\\\");\\nlet classTab = [\\n    [\\\"选择\\\", \\\"0\\\"],\\n    [\\\"修改\\\", \\\"1\\\"],\\n    [\\\"删除\\\", \\\"2\\\"]\\n];\\nlet classA = getVar(\\\"class\\\", \\\"0\\\");\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"class\\\");\\n}));\\nd.push({\\n    title: \\\"添加新的解析\\\",\\n    url: $(\\\"\\\",\\\"解析名&&解析URL\\\").input(() => {\\n        let parseUrlText = request(\\\"hiker://files/jiexi/jiexi.txt\\\");\\n        let parseUrlArray = parseUrlText.split(/\\\\n/);\\n        if(input.split(\\\"&&\\\").length!==2){\\n            return \\\"toast://格式不正确\\\";\\n        }\\n        parseUrlArray.push(input);\\n        parseUrlText = parseUrlArray.join(\\\"\\\\n\\\");\\n        writeFile(\\\"hiker://files/jiexi/jiexi.txt\\\", parseUrlText);\\n        \\n        refreshPage(false);\\n        return \\\"toast://修改成功\\\";\\n    }),\\n    col_type: \\\"scroll_button\\\"\\n});\\nfor (let item of classTab) {\\n    d.push({\\n        title: item[1] === classA ? \\\"““\\\" + item[0] + \\\"””\\\" : item[0],\\n        url: $(\\\"#noLoading#\\\").lazyRule((key) => {\\n            putVar(\\\"class\\\", key);\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\";\\n        }, item[1]),\\n        col_type: \\\"scroll_button\\\"\\n    });\\n}\\nlet func;\\nswitch (classA) {\\n    case \\\"0\\\":\\n        func = function(url, title) {\\n            return $(url + \\\"#noLoading#\\\").lazyRule((title) => {\\n                log(\\\"\\\\n更改接口> \\\" + input);\\n                setItem(\\\"selected\\\", input);\\n                setItem(\\\"selected0\\\", title + \\\"&&\\\" + input);\\n                refreshPage(false);\\n                return \\\"toast://修改成功\\\";\\n            }, title);\\n        };\\n        break;\\n    case \\\"1\\\":\\n        func = function(url, title, index) {\\n            return $(url, \\\"请输入「\\\" + title + \\\"」的新接口\\\").input((title, index) => {\\n                let parseUrlText = request(\\\"hiker://files/jiexi/jiexi.txt\\\");\\n                let parseUrlArray = parseUrlText.split(/\\\\n/);\\n                let selected1 = parseUrlArray[index];\\n                parseUrlArray[index] = title + \\\"&&\\\" + input;\\n                parseUrlText = parseUrlArray.join(\\\"\\\\n\\\");\\n                writeFile(\\\"hiker://files/jiexi/jiexi.txt\\\", parseUrlText);\\n                if (selected1 == getItem(\\\"selected0\\\")) {\\n                    setItem(\\\"selected\\\", input);\\n                    setItem(\\\"selected0\\\", title + \\\"&&\\\" + input);\\n                }\\n                refreshPage(false);\\n                return \\\"toast://修改成功\\\";\\n            }, title, index);\\n        };\\n        break;\\n    case \\\"2\\\":\\n        func = function(url, title, index) {\\n            return $(\\\"确认删除「\\\" + title + \\\"」？\\\").confirm((title, index) => {\\n                let parseUrlText = request(\\\"hiker://files/jiexi/jiexi.txt\\\");\\n                let parseUrlArray = parseUrlText.split(/\\\\n/);\\n                let selected1 = parseUrlArray[index];\\n                parseUrlArray.splice(index, 1);\\n                parseUrlText = parseUrlArray.join(\\\"\\\\n\\\");\\n                writeFile(\\\"hiker://files/jiexi/jiexi.txt\\\", parseUrlText);\\n                if (selected1 == getItem(\\\"selected0\\\")) {\\n                    if (parseUrlArray[0]) {\\n                        setItem(\\\"selected\\\", parseUrlArray[0].split(\\\"&&\\\")[1] || \\\"\\\");\\n                        setItem(\\\"selected0\\\", parseUrlArray[0]);\\n                    } else {\\n                        setItem(\\\"selected\\\", \\\"\\\");\\n                        setItem(\\\"selected0\\\", \\\"\\\");\\n                    }\\n                }\\n                refreshPage(false);\\n                return \\\"toast://修改成功\\\";\\n            }, title, index);\\n        };\\n        break;\\n\\n}\\nfor (let i in parseUrlArray) {\\n    let item = parseUrlArray[i].split(\\\"&&\\\");\\n    d.push({\\n        title: selected == item[1] ? \\\"‘‘\\\" + item[0] + \\\"’’\\\" : item[0],\\n        url: func(item[1], item[0], i),\\n        col_type: \\\"text_3\\\"\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"主题管理\",\"path\":\"theme\",\"rule\":\"js:\\n    function themeInit(){\\n        const {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n        let d = [];\\n        let options = ['选择','修改','删除','导出'];\\n\\n        for(var i in options){\\n            let option = options[i];\\n            let flag = getVar('theme.dn_option','新增')===option?'👉':'';\\n            d.push({\\n                title:flag+option,\\n                col_type:'scroll_button',\\n                url:$(option).lazyRule(()=>{\\n                    putVar('theme.dn_option', input);\\n                    refreshPage(true);\\n                    return 'toast://已设置操作类型为:'+input;\\n                }),\\n            });\\n        }\\n\\n        let themeRoute = \\\"hiker://files/cache/MyTheme.json\\\";\\n        let myThemes = {};\\n        let themes = {};\\n        try {\\n            myThemes = JSON.parse(fetch(themeRoute));\\n            themes = myThemes.themes[myThemes.now_theme];\\n        }catch (e) {}\\n\\n\\n        d.push({\\n            title:'导入',\\n            col_type:'scroll_button',\\n            url:$('','请输入导入口令').input((myThemes,themeRoute)=>{\\n                if(/^断插主题@.*?@http/.test(input)){\\n                    let name = input.split('@')[1];\\n                    let url = input.split('@')[2];\\n                    return $('确定要导入断插主题-'+name+' 吗?').confirm((name,url,myThemes,themeRoute)=>{\\n                        let content = parsePaste(url);\\n                        let hasTheme = myThemes.themes.filter(it=>it.name===name);\\n                        if(hasTheme&&hasTheme.length>0){\\n                            let id = null;\\n                            for(let j in myThemes.themes){\\n                                if(myThemes.themes[j].name === name){\\n                                    id = j;\\n                                    break;\\n                                }\\n                            }\\n                            if(!id){\\n                                return 'toast://索引错误无法覆盖导入:\\\\n'+id\\n                            }\\n                            // log('覆盖导入主题id:'+id);\\n                            myThemes.themes[id] = Object.assign(JSON.parse(base64Decode(content)),{'name':name});\\n                        }else{\\n                            myThemes.themes.push(Object.assign(JSON.parse(base64Decode(content)),{'name':name}));\\n                        }\\n                        // log(myThemes);\\n                        writeFile(themeRoute,JSON.stringify(myThemes));\\n                        refreshPage(true);\\n                        return 'toast://已成功导入主题:\\\\n'+name\\n                    },name,url,myThemes,themeRoute);\\n                }else{\\n                    return 'toast://无法识别的导入口令:\\\\n'+input;\\n                }\\n            },myThemes,themeRoute),\\n        });\\n        d.push({\\n            title:'新增',\\n            col_type:'scroll_button',\\n            url:$().rule((myThemes,themeRoute)=>{\\n                let d=[];\\n                addListener('onClose', $.toString(()=>{\\n                    refreshPage(true);\\n                }));\\n                d.push({\\n                    title: '主题名称',\\n                    desc: \\\"断插-蓝莓主题\\\",\\n                    extra: {\\n                        onChange: \\\"putVar('theme.new_add_name',input)\\\",\\n                        titleVisible: true,\\n                        defaultValue: getVar('theme.new_add_name', '')\\n                    },\\n                    url:$.toString(() => {\\n                        let new_add_name = getVar('theme.new_add_name', '');\\n                        return 'toast://你输入的是:'+new_add_name;\\n                    }),\\n                    col_type: \\\"input\\\"\\n                });\\n                d.push({\\n                    desc: \\\"代码\\\",\\n                    col_type: 'input',\\n                    extra: {\\n                        titleVisible: false,\\n                        defaultValue: getVar('theme.new_add_code', ''),\\n                        type: \\\"textarea\\\",\\n                        height:-1,\\n                        onChange: 'putVar(\\\"theme.new_add_code\\\",input)'\\n                    }\\n                });\\n                d.push({\\n                    title:'保存',\\n                    col_type:'text_center_1',\\n                    url:$().lazyRule((myThemes,themeRoute)=>{\\n                        let code = getVar('theme.new_add_code', '');\\n                        let name = getVar('theme.new_add_name', '');\\n                        if(!name){\\n                            return 'toast://你还没填写主题名称呢'\\n                        }\\n                        let newTheme = {};\\n                        try {\\n                            newTheme = JSON.parse(code);\\n                        }catch (e) {\\n                            return 'toast://错误的主题json格式:\\\\n'+e.message;\\n                        }\\n                        Object.assign(newTheme,{'name':name});\\n                        myThemes.themes.push(newTheme);\\n                        writeFile(themeRoute,JSON.stringify(myThemes));\\n                        refreshPage(true);\\n                        return 'toast://已新增断插主题:'+name\\n                    },myThemes,themeRoute)\\n                });\\n                setResult(d);\\n            },myThemes,themeRoute),\\n        });\\n        d.push({\\n            title:myThemes.themes?'主题列表:共计:'+color(myThemes.themes.length,'#ff7000')+'个主题':\\\"第一次加载，点此进去初始化主题列表\\\",\\n            col_type:'text_1',\\n            url:'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#'\\n        });\\n        d.push({\\n            title:\\\"恢复出厂设置\\\",\\n            col_type:'text_center_1',\\n            url:$(\\\"如果你的主题没法正常用了，此方法可以救砖，确认恢复?\\\").confirm(()=>{\\n                let themes = {name:'默认主题',closeBtn:{color:'#f6f6f6',background:'#aa96da'},saveBtn:{color:'#F9F0DA',background:'#068006'},saveCloseBtn:{color:'#F9F0DA',background:'#05BFC5'},tipsBtn:{color:'#F9F0DA',background:'#05BFC5'},barlabel:{color:'#F9F0DA',background:'#aa96da'},barInput:{color:'#aa96da',background:'#ffffd2'},select:{color:'#F9F0DA',background:'#aa96da'},};\\n                let themeDef = {\\\"name\\\":\\\"断念原皮\\\",\\\"closeBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#c5464a\\\"},\\\"saveBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#068006\\\"},\\\"saveCloseBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#05BFC5\\\"},\\\"tipsBtn\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#05BFC5\\\"},\\\"barlabel\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#D06B6C\\\"},\\\"barInput\\\":{\\\"color\\\":\\\"#D06B6C\\\",\\\"background\\\":\\\"#F9F0DA\\\"},\\\"select\\\":{\\\"color\\\":\\\"#F9F0DA\\\",\\\"background\\\":\\\"#D06B6C\\\"}};\\n                let themeRoute = \\\"hiker://files/cache/MyTheme.json\\\";\\n                writeFile(themeRoute,JSON.stringify({now_theme:'默认主题',themes:[themes,themeDef]}));\\n                refreshPage(true);\\n                return 'toast://断插主题已重置为出厂设置'\\n            })\\n        });\\n        for(var i in myThemes.themes){\\n            let nowThem = myThemes.themes[i];\\n            d.push({\\n                title:myThemes.now_theme===nowThem.name?'👉'+nowThem.name:nowThem.name,\\n                col_type:'flex_button',\\n                url:$().lazyRule((mytheme,myThemes,i,themeRoute)=>{\\n                    let option = getVar('theme.dn_option','新增');\\n                    switch (option){\\n                        case '导出':\\n                            let mythemeCode = base64Encode(JSON.stringify(mytheme));\\n                            let url = sharePaste(mythemeCode);\\n                            let code = '断插主题@'+mytheme.name+'@'+url;\\n                            copy(code);\\n                            return 'toast://已导出为云口令并复制到剪切板'\\n                        case '修改':\\n                            return $(JSON.stringify(mytheme)).input((mytheme,myThemes,i,themeRoute)=>{\\n                                if(mytheme.name===myThemes.now_theme){\\n                                    return 'toast://此主题当前正在使用中，不允许修改!'\\n                                }\\n                                myThemes.themes[i]=JSON.parse(input);\\n                                writeFile(themeRoute,JSON.stringify(myThemes));\\n                                refreshPage(true);\\n                                return 'toast://已修改'\\n                            },mytheme,myThemes,i,themeRoute)\\n                        case '删除':\\n                            return $('确认删除主题:'+mytheme.name+'?').confirm((mytheme,myThemes,i,themeRoute)=>{\\n                                if(mytheme.name===myThemes.now_theme){\\n                                    return 'toast://此主题当前正在使用中，不允许删除!'\\n                                }\\n                                myThemes.themes.splice(i,1);\\n                                writeFile(themeRoute,JSON.stringify(myThemes));\\n                                refreshPage(true);\\n                                return 'toast://已删除'\\n                            },mytheme,myThemes,i,themeRoute)\\n                        default:\\n                            myThemes.now_theme=mytheme.name;\\n                            writeFile(themeRoute,JSON.stringify(myThemes));\\n                            refreshPage(true);\\n                            return 'toast://你选择了'+mytheme.name+'作为默认主题';\\n                    }\\n                },nowThem,myThemes,i,themeRoute),\\n            });\\n        }\\n        setResult(d);\\n    }\\n$.exports.themeInit=themeInit;\"},{\"name\":\"操作指引\",\"path\":\"Guide\",\"rule\":\"<html>\\n<head>\\n    <meta charset=\\\"UTF-8\\\">\\n</head>\\n<body>\\n<strong> <big>拉取篇</big> </strong>\\n<br /> 操作顺序：\\n<br /> 1.更新道长仓库Pro到76版本\\n<br /> 2.拉取主插件和网页脚本\\n<br /> 3.推荐直接拉取代码<s>拉取列表→拉取代码</s>\\n<br />\\n<br />\\n<strong><big>口令篇</big></strong>\\n<br />首页输入框支持：\\n<br />1.分享出来的同系列插件云剪贴板口令\\n<br />2.未加密的同系列插件地址,支持本地文件如以下格式开头的:file://,hiker://,/storage\\n<br />3.Q神\\n<br />4.断插\\n<br />5.#道长精选\\n<br />6.#b站\\n<br />7.#倍陆\\n<br />\\n<br />\\n<strong><big>编辑篇</big></strong>\\n<br />隐藏功能需知：\\n<br />隐藏功能是从列表上删除标题，故无复现功能\\n<br />看准了，不用的才点隐藏\\n<br />要复现的话去修改新的MyParse.json，在title的数组那按格式添加标题\\n<br />\\n<br />\\n<strong><big>完结</big><br /></strong>\\n<p>v3.49,小白最后的倔强,小白关怀模式</p>\\n<p>一键实现配置完毕即可通过支持魔断的小程序看视频，回归白嫖视频这个需求本身</p>\\n<p>推荐使用青豆,app影视.dp</p>\\n<p>魔断(断插道长魔改版)已弃坑跑路，感谢原作者断念的插件解析及本小程序核心代码</p>\\n</body>\\n</html>\"},{\"name\":\"测试数据\",\"path\":\"demoData\",\"rule\":\"js:\\n    let demoData = {\\n        爱奇艺:['https://www.iqiyi.com/v_1zp7qgh23kg.html','https://www.iqiyi.com/v_2bc8tk8r6ug.html'],\\n        优酷:['https://v.youku.com/v_show/id_XNTE4NTgxMTY2MA==.html','https://v.youku.com/v_show/id_XNTE5ODYxMjAzNg==.html'],\\n        腾讯:['https://v.qq.com/x/cover/m441e3rjq9kwpsc/p0040gim4fz.html','https://v.qq.com/x/cover/mzc00200xh9313v/z0039tbho7q.html'],\\n        芒果:['https://www.mgtv.com/b/372061/12193558.html','https://www.mgtv.com/b/363286/14295823.html'],\\n        哔哩哔哩:['https://www.bilibili.com/bangumi/play/ep381217','https://www.bilibili.com/bangumi/play/ep408123','https://www.bilibili.com/bangumi/play/ss33434','https://www.bilibili.com/video/av336348663'],\\n        搜狐:['https://film.sohu.com/album/9457584.html','https://film.sohu.com/album/9182646.html'],\\n        西瓜:['https://www.ixigua.com/6551332125654647310','https://www.ixigua.com/6699356792905794055'],\\n        PPTV:['http://v.pptv.com/show/TIndWsIomNY5tx8.html','http://v.pptv.com/show/SCQ5th6E9DKVE3s.html'],\\n        咪咕:['https://www.miguvideo.com/mgs/website/prd/detail.html?cid=633511743','https://www.miguvideo.com/mgs/website/prd/detail.html?cid=716270319'],\\n        乐视:['http://www.le.com/ptv/vplay/75843059.html','http://www.le.com/ptv/vplay/24220901.html#vid=24220901'],\\n        1905:['https://vip.1905.com/play/875740.shtml','https://www.1905.com/vod/play/880641.shtml'],\\n        风行:['http://www.fun.tv/vplay/g-304143','http://www.fun.tv/vplay/g-1008963/'],\\n        龙腾:['LT-1ec3f6754f68586ed7f92c3e995cfca6','LT-fff47abf7ff22ffa3def904c6c91e192','LT-7ccda68683329780bd7264c8f9edd90e'],\\n        人人迷:['renrenmi-ab924e11d2d69397','renrenmi-92640e8dc4cad83a'],\\n        五毒:['wuduyun-1649431307021'],\\n        多多:['https://m3u8.cache.suoyo.cc/m3u8/202203/8/aaabd92da26774c68850a023153c80f1ae6fa9be.m3u8'],\\n        融兴:['RongXingVR-4215645581932','RongXingVR-4215645587000'],\\n        雪人:['xueren-1646823072','xueren-1649402753','xueren-1649175252','xueren-1649307780','xueren-1648781475'],\\n        旋风云:['xfy-529e6457953d545f','xfy-b65615dac4377ee3'],\\n        瑞丰资源:['https://1.ruifenglb.com/play/1644914595.m3u8','https://1.ruifenglb.com/play/1642389907.m3u8'],\\n    }\\n\\nlet defaultSets =  {\\n    qy: '万能解析Ⓙ',\\n    yk: '万能解析Ⓙ',\\n    tx: '万能解析Ⓙ',\\n    mg: '万能解析Ⓙ',\\n    bl: '万能解析Ⓙ',\\n    sh: '万能解析Ⓙ',\\n    xg: '万能解析Ⓙ',\\n    al: '万能解析Ⓙ',\\n    pp: '万能解析Ⓙ',\\n    mi: '万能解析Ⓙ',\\n    le: '万能解析Ⓙ',\\n    oth: '道长仓库通免',\\n    fun: '万能解析Ⓙ',\\n    one:'万能解析Ⓙ',\\n    lt:'万能解析Ⓙ',\\n    rr:'万能解析Ⓙ',\\n    wd:'万能解析Ⓙ',\\n    qju: '默认',\\n    cj: 'hiker://files/cache/Parse_Dn.js'\\n};\\n\\nlet floors = '①②③④⑤⑥⑦⑧⑨⑩１２３４５６７８９０⒈⒉⒊⒋⒌⒍⒎⒏⒐'.split('');\\nlet emojis = '#️⃣|*️⃣|0️⃣|1️⃣|2️⃣|3️⃣|4️⃣|5️⃣|6️⃣|7️⃣|8️⃣|9️⃣|🅰️|🅱️|🍇|🍈|🍉|🍊|🍋|🍌|🍍|🍎|🍏|🍐|🍑|🍒|🍓|🍅|🍆|🌽|🍄|🌰|🍞|🍖|🍗|🍔|🍟|🍕|🍳|🍲|🍱|🍘|🍙|🍚|🍛|🍜|🍝|🍠|🍢|🍣|🍤|🍥|🍡|🍦|🍧|🍨|🍩|🍪|🎂|🍰|🍫|🍬|🍭|🍮|🍯|🍼|☕|🍵|🍶|🍷|🍸|🍹|🍺|🍻|🍴'.split('|');\\nfloors = floors.concat(emojis);\\n$.exports.demoData = demoData;\\n$.exports.defaultSets = defaultSets;\\n$.exports.floors = floors;\"},{\"name\":\"工具类\",\"path\":\"utils\",\"rule\":\"js:\\n//随机从列表抽取一个元素\\nfunction getOne(its) {return  its[Math.floor(Math.random()*its.length)];}\\n//去重（ES6 Set）\\nfunction unique2(array){\\n    return Array.from(new Set(array));\\n}\\n//获取列表中重复都值\\nfunction duplicates(arr) {\\n    let res=arr.filter((x,k)=>{\\n        let a=k*1+1;\\n        let index=arr.indexOf(x,a);\\n        if(index>-1){\\n            return x;\\n        }\\n    })\\n    let re=new Set(res);\\n    return Array.from(re);\\n}\\n$.exports.getOne = getOne;\\n$.exports.unique2 = unique2;\\n$.exports.duplicates = duplicates;\"},{\"name\":\"解析管理\",\"path\":\"jxManage\",\"rule\":\"js:\\n    function jxManage(){\\n        const {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n        let d = [];\\n        let options = ['选择','修改','删除','导出'];\\n\\n        for(let i in options){\\n            let option = options[i];\\n            let flag = getVar('dn.jxm_option','选择')===option?'👉':'';\\n            d.push({\\n                title:flag+option,\\n                col_type:'scroll_button',\\n                url:$('#noLoading#').lazyRule((option)=>{\\n                    putVar('dn.jxm_option', option);\\n                    refreshPage(true);\\n                    return 'hiker://empty';\\n                },option),\\n            });\\n        }\\n        let jxsRoute = \\\"hiker://files/cache/MyJiexi.json\\\";\\n        let dmPath = \\\"hiker://files/cache/diaomao.txt\\\";\\n        let MyJiexi = {jiexis:[]};\\n        let jiexis = {};\\n        try {\\n            MyJiexi = JSON.parse(fetch(jxsRoute));\\n            jiexis = MyJiexi.jiexis.filter(it=>it.name===MyJiexi.now)[0];\\n        }catch (e) {}\\n\\n        d.push({\\n            title:'导入',\\n            col_type:'scroll_button',\\n            url:$('','请输入导入口令').input((MyJiexi,jxsRoute)=>{\\n                if(/^魔断解析配置@.*?@http/.test(input)){\\n                    let name = input.split('@')[1];\\n                    let url = input.split('@')[2];\\n                    return $('确定要导入断插解析配置-'+name+' 吗?').confirm((name,url,MyJiexi,jxsRoute)=>{\\n                        let content = parsePaste(url);\\n                        let hasIt = MyJiexi.jiexis.filter(it=>it.name===name);\\n                        if(hasIt&&hasIt.length>0){\\n                            let id = null;\\n                            for(let j in MyJiexi.jiexis){\\n                                if(MyJiexi.jiexis[j].name === name){\\n                                    id = j;\\n                                    break;\\n                                }\\n                            }\\n                            if(!id){\\n                                return 'toast://索引错误无法覆盖导入:\\\\n'+id\\n                            }\\n                            // log('覆盖导入主题id:'+id);\\n                            MyJiexi.jiexis[id] = Object.assign(JSON.parse(base64Decode(content)),{'name':name});\\n                        }else{\\n                            MyJiexi.jiexis.push(Object.assign(JSON.parse(base64Decode(content)),{'name':name}));\\n                        }\\n                        writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                        refreshPage(true);\\n                        return 'toast://已成功导入解析配置:\\\\n'+name\\n                    },name,url,MyJiexi,jxsRoute);\\n                }else{\\n                    return 'toast://无法识别的导入口令:\\\\n'+input;\\n                }\\n            },MyJiexi,jxsRoute),\\n        });\\n\\n        let isAuto = MyJiexi.isAuto;\\n        let autoMode = MyJiexi.autoMode;\\n        let singleBack = MyJiexi.singleBack||false; //吊毛模式。单个结果直接返回，停止后面的\\n        let ignore_mx = MyJiexi.ignore_mx||false; //忽略免嗅,嗅探优先模式使用\\n        let tips = '解析配置列表:共计:'+color(MyJiexi.jiexis.length,'#ff7000')+'个配置,自动档开关:'+color(isAuto?'开':'关','#ff7000');\\n        d.push({\\n            title:MyJiexi.jiexis&&MyJiexi.jiexis.length>0?tips:\\\"第一次加载，点此进去初始化解析列表\\\",\\n            col_type:'text_1',\\n            url:$('#noLoading#').lazyRule((MyJiexi,jxsRoute)=>{\\n                if(MyJiexi.jiexis&&MyJiexi.jiexis.length>0){\\n                    MyJiexi.isAuto = !MyJiexi.isAuto;\\n                    if(!MyJiexi.autoMode){\\n                        MyJiexi.autoMode = '嗅探优先';\\n                    }\\n                    writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                    refreshPage(true);\\n                    let tips = MyJiexi.isAuto?'开':'关';\\n                    return 'toast://已设置自动档模式为:'+tips\\n                }else{\\n                    let initSet = {'now':\\\"道长推荐\\\",'jiexis':[{name:'道长推荐',qy:['万能解析Ⓙ'],yk:['万能解析Ⓙ'],tx:['万能解析Ⓙ'],mg:['万能解析Ⓙ'],bl:['万能解析Ⓙ'],sh:['万能解析Ⓙ'],xg:['万能解析Ⓙ'],pp:['万能解析Ⓙ'],mi:['万能解析Ⓙ'],\\n                            le:['万能解析Ⓙ'],fun:['万能解析Ⓙ'],one:['万能解析Ⓙ'],lt:['万能解析Ⓙ'],rr:['万能解析Ⓙ'],wd:['万能解析Ⓙ']}]};\\n                    writeFile(jxsRoute,JSON.stringify(initSet));\\n                    refreshPage(true);\\n                    return 'toast://断插解析配置已初始化'\\n                }\\n            },MyJiexi,jxsRoute)\\n        });\\n        let c1 = '#15ab21';\\n        let c2 = '#900a0a';\\n        let autoModeSel = ['速度优先','顺序优先','嗅探优先'];\\n        let autoModeSels = autoModeSel.map((it)=>{\\n            if(it===MyJiexi.autoMode){\\n                it = color(it,c1);\\n            }\\n            return it\\n        });\\n        let autoModeTips = autoModeSel.includes(autoMode)?autoMode:'未知';\\n        d.push({\\n            title:small(\\\"备胎宠幸方案:\\\")+color(autoModeTips,'#ff7000'),\\n            col_type:'text_2',\\n            url:$(autoModeSels,3,'请选择自动档模式').select((MyJiexi,jxsRoute)=>{\\n                input = /font/.test(input)?input.split('>')[1].split('<')[0]:input;\\n                if(input!==MyJiexi.autoMode){\\n                    MyJiexi.autoMode = input;\\n                    writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                    refreshPage(false);\\n                }\\n                return 'toast://已设置备胎宠幸方案为:'+input\\n            },MyJiexi,jxsRoute),\\n        });\\n\\n        d.push({\\n            title:color(\\\"恢复出厂设置\\\",'#ff7000'),\\n            col_type:'text_2',\\n            url:$(\\\"如果你的解析管理无法正常用了，此方法可以救砖，确认恢复?\\\").confirm((jxsRoute)=>{\\n                let initSet = {'now':\\\"道长推荐\\\",'jiexis':[{name:'道长推荐',qy:['万能解析Ⓙ'],yk:['万能解析Ⓙ'],tx:['万能解析Ⓙ'],mg:['万能解析Ⓙ'],bl:['万能解析Ⓙ'],sh:['万能解析Ⓙ'],xg:['万能解析Ⓙ'],pp:['万能解析Ⓙ'],mi:['万能解析Ⓙ'],\\n                        le:['万能解析Ⓙ'],fun:['万能解析Ⓙ'],one:['万能解析Ⓙ'],lt:['万能解析Ⓙ'],rr:['万能解析Ⓙ'],wd:['万能解析Ⓙ']}]};\\n                writeFile(jxsRoute,JSON.stringify(initSet));\\n                refreshPage(true);\\n                return 'toast://断插解析配置已重置为出厂设置'\\n            },jxsRoute)\\n        });\\n\\n        let cacheVideoSwitch = getVar('dp.cacheVideo','true')==='true'?'开':'关';\\n        let jxTimeout = getVar('dp.jxTimeout','7000');\\n        let col_type2 = autoMode==='顺序优先'?'text_3':'text_2';\\n        let singleBackTips = singleBack?'开':'关';\\n        let ignore_mx_tips = ignore_mx?'开':'关';\\n        if(autoMode==='顺序优先'){\\n            d.push({\\n                title:small('吊毛模式:')+color(singleBackTips,'#ff7000'),\\n                col_type:col_type2,\\n                url:$('#noLoading#').lazyRule((MyJiexi,jxsRoute)=>{\\n                    MyJiexi.singleBack = !(MyJiexi.singleBack||false);\\n                    writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                    refreshPage(true);\\n                    return 'toast://已设置吊毛模式开关为:'+(MyJiexi.singleBack?'开':'关')\\n                },MyJiexi,jxsRoute)\\n            });\\n        }else if(autoMode==='嗅探优先'){\\n            d.push({\\n                    title: color('导入辅助','#ff7000'),\\n                    col_type:col_type2,\\n                    url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                        let html = request('https://netcut.cn/p/a5d1c8e1ecee28d3');\\n                        let data = html.match(/{.*note_content.*updated_at.*}/)[0];\\n                        let content = JSON.parse(data).note_content;\\n                        let upData = JSON.parse(data).updated_at;\\n                        confirm({\\n                            title: '是否导入',\\n                            content: '脚本更新日期\\\\n' + upData,\\n                            confirm:$.toString((content)=>{\\n                                return content\\n                            },content),\\n                            cancel: () => {\\n                                return 'toast://已取消导入';\\n                            }\\n                        });\\n                        return 'hiker://empty';\\n                    }),\\n                }\\n            );\\n            d.push({\\n                title:small('忽略免嗅:')+color(ignore_mx_tips,'#ff7000'),\\n                col_type:col_type2,\\n                url:$('#noLoading#').lazyRule((MyJiexi,jxsRoute)=>{\\n                    MyJiexi.ignore_mx = !(MyJiexi.ignore_mx||false);\\n                    writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                    refreshPage(false);\\n                    return 'toast://已设置忽略免嗅开关为:'+(MyJiexi.ignore_mx?'开':'关')\\n                },MyJiexi,jxsRoute)\\n            });\\n        }\\n        d.push({\\n            title:small('多线路缓存:')+color(cacheVideoSwitch,'#ff7000'),\\n            col_type:col_type2,\\n            url:$('#noLoading#').lazyRule((cacheVideoSwitch)=>{\\n                if(cacheVideoSwitch==='开'){\\n                    putVar('dp.cacheVideo','false');\\n                }else{\\n                    putVar('dp.cacheVideo','true');\\n                }\\n                refreshPage(true);\\n                return 'hiker://empty'\\n            },cacheVideoSwitch)\\n        });\\n        d.push({\\n            title:small('解析超时:')+color(jxTimeout,'#ff7000'),\\n            col_type:col_type2,\\n            url:$(jxTimeout,'请设置魔断解析超时,必须为整数').input(()=>{\\n                if(!parseInt(input)){\\n                    input = 7000;\\n                }\\n                putVar('dp.jxTimeout',input);\\n                refreshPage(true);\\n                return 'toast://已设置为:'+parseInt(input)\\n            },jxTimeout)\\n        });\\n        if(autoMode&&singleBack){\\n            d.push({\\n                title: color('打开编辑吊毛过滤文件','#1379CB'),\\n                url: $('#noLoading#').lazyRule((dmPath) => {\\n                    let def_dms = ['https://vd3.bdstatic.com/mda-ki9ugq5430bhxys8/v1-cae/1080p/mda-ki9ugq5430bhxys8.mp4'];\\n                    if(!fileExist(dmPath)){\\n                        writeFile(dmPath,'//一行一个链接,可注释。\\\\n'+def_dms.join('\\\\n'));\\n                    }\\n                    return 'editFile://'+dmPath;\\n                },dmPath),\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n        d.push({\\n            title: color('打开编辑解析文件','#1379CB'),\\n            url: $('#noLoading#').lazyRule((jxsRoute) => {\\n                return 'editFile://'+jxsRoute;\\n            },jxsRoute),\\n            col_type: 'text_center_1'\\n        });\\n\\n        for(let i in MyJiexi.jiexis){\\n            let nowJx = MyJiexi.jiexis[i];\\n            d.push({\\n                title:MyJiexi.now===nowJx.name?'👉'+nowJx.name:nowJx.name,\\n                col_type:'flex_button',\\n                extra:{\\n                    nowJx:nowJx,\\n                    MyJiexi:MyJiexi,\\n                    jxsRoute:jxsRoute\\n                },\\n                url:$('#noLoading#').lazyRule((nowJx,MyJiexi,i,jxsRoute)=>{\\n                    let option = getVar('dn.jxm_option','选择');\\n                    switch (option){\\n                        case '导出':\\n                            let nowJxCode = base64Encode(JSON.stringify(nowJx));\\n                            let url = sharePaste(nowJxCode);\\n                            let code = '魔断解析配置@'+nowJx.name+'@'+url;\\n                            copy(code);\\n                            return 'toast://已导出为云口令并复制到剪切板'\\n                        case '修改':\\n                            // if(nowJx.name===MyJiexi.now){\\n                            //     return 'toast://此解析配置当前正在使用中，不允许修改!'\\n                            // }\\n                            // else{\\n                            //     return 'hiker://page/jxEdit?rule=MyFieldᴰⁿ'\\n                            // }\\n                            return 'hiker://page/jxEdit?rule=MyFieldᴰⁿ'\\n                        case '删除':\\n                            return $('确认删除解析配置:'+nowJx.name+'?').confirm((nowJx,MyJiexi,i,jxsRoute)=>{\\n                                if(nowJx.name===MyJiexi.now){\\n                                    return 'toast://此解析配置当前正在使用中，不允许删除!'\\n                                }\\n                                MyJiexi.jiexis.splice(i,1);\\n                                writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                                refreshPage(true);\\n                                return 'toast://已删除'\\n                            },nowJx,MyJiexi,i,jxsRoute)\\n                        default:\\n                            MyJiexi.now=nowJx.name;\\n                            writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                            refreshPage(true);\\n                            return 'toast://你选择了'+nowJx.name+'作为当前解析配置';\\n                    }\\n                },nowJx,MyJiexi,i,jxsRoute),\\n            });\\n        }\\n        setResult(d);\\n    }\\n$.exports.jxManage=jxManage;\"},{\"name\":\"解析编辑\",\"path\":\"jxEdit\",\"rule\":\"js:\\nlet {nowJx,MyJiexi,jxsRoute} = MY_PARAMS;\\nlet nowJxT = JSON.parse(getVar('dn.nowJx')||'{}');\\nnowJx = nowJxT.name?nowJxT:nowJx;\\naddListener('onClose', $.toString(()=>{\\n    clearVar(\\\"dn.jx_titles\\\");\\n    clearVar(\\\"dn.nowJx\\\");\\n    clearVar(\\\"dn.jxm_name\\\");\\n}));\\nlet id = null;\\nfor(let j in MyJiexi.jiexis){\\n    if(MyJiexi.jiexis[j].name === nowJx.name){\\n        id = j;\\n        break;\\n    }\\n}\\nlet d = [];\\nd.push({\\n    title: '配置名称',\\n    desc: \\\"解析配置名称,如道长推荐\\\",\\n    extra: {\\n        onChange: \\\"putVar('dn.jxm_name',input)\\\",\\n        titleVisible: true,\\n        defaultValue:getVar('dn.jxm_name','')||nowJx.name\\n    },\\n    col_type:'input'\\n});\\n// let options = ['选择','新增','删除','批量删除','移动'];\\nlet options = ['新增','删除','移动'];\\nlet writeMode = getVar('dn.jxm_writeMode','新增');\\nfor(let i in options){\\n    let option = options[i];\\n    let flag = writeMode===option?'👉':'';\\n    d.push({\\n        title:flag+option,\\n        // col_type:'scroll_button',\\n        col_type:'flex_button',\\n        url:$('#noLoading#').lazyRule((option)=>{\\n            putVar('dn.jxm_writeMode', option);\\n            refreshPage(true);\\n            return 'hiker://empty';\\n        },option),\\n    });\\n}\\nd.push({\\n    // col_type:'line',\\n    col_type:'blank_block'\\n});\\n//获取断插列表\\nif(!getVar(\\\"dn.jx_titles\\\")){\\n    let titleArr = [], urlArr = [];\\n    var json={title:[],codes:{}};\\n    let setFile = request('hiker://files/rules/DuanNian/MyParse.json');\\n    try {\\n        eval('json='+setFile);\\n    }catch (e) {\\n        log('Json解析发生了错误:'+e.message);\\n    }\\n    titleArr = json.title;\\n    titleArr.forEach((it) => {\\n        urlArr.push(json.codes[it]);\\n    });\\n    putVar('dn.jx_titles',JSON.stringify(titleArr));\\n}\\n\\nlet titles = JSON.parse(getVar('dn.jx_titles')||'[]');\\nlet titleDic = {\\n    bl:'哔哩哔哩',fun:'风行',le:'乐视',mg:'芒果',mi:'咪咕',pp:'PPTV',qy:'爱奇艺',sh:'搜狐',\\n    tx:'腾讯',xg:'西瓜',yk:'优酷',one:'1905',lt:'龙腾',rr:'人人迷',wd:'五毒',oth:'其他'\\n}\\nlet titleOrder = {\\n    qy:1,yk:2,tx:3,mg:4,bl:5,sh:6,xg:7,pp:8,mi:9,le:10,one:11,fun:12,lt:13,rr:14,wd:15,oth:16,\\n};\\n\\nfunction compareOd(titleOrder){\\n    return function (a, b){\\n        let x = titleOrder[a];\\n        let y = titleOrder[b];\\n        return x-y;\\n    }\\n}\\n//-----------------\\n// let jds = Object.keys(nowJx).filter(it=>it!=='name'&&it!=='oth');\\nlet flags = Object.keys(titleOrder);\\nlet jds = Object.keys(nowJx).filter(it=>it!=='name'&&flags.includes(it));\\n//log(jds);\\nfor(let k of flags){\\n    if(!jds.includes(k)){\\n        jds.push(k)\\n    }\\n}\\njds = jds.sort(compareOd(titleOrder));\\nfor(let j in jds){\\n    let jxs = nowJx[jds[j]]||[];\\n    let title = jds[j];\\n    d.push({\\n        title:titleDic[title]||title,\\n        col_type:'scroll_button',\\n        url:$('#noLoading#').lazyRule((titles,title,jxs,jxsRoute,MyJiexi,nowJx)=>{\\n            var json={title:[],codes:{}};\\n            let setFile = request('hiker://files/rules/DuanNian/MyParse.json');\\n            try {\\n                eval('json='+setFile);\\n            }catch (e) {\\n                log('Json解析发生了错误:'+e.message);\\n            }\\n            if(getVar('dn.jxm_writeMode','新增')==='新增'){\\n                let sel_title = titles.filter(it=>!jxs.includes(it));\\n                sel_title = sel_title.map((it)=>{\\n                    let flag = '‘‘Ⓤ’’';\\n                    if(typeof(json.codes[it])==='function'){\\n                        flag = '““Ⓙ””';\\n                    }else if(typeof(json.codes[it])==='undefined'){\\n                        flag = '';\\n                    }\\n                    return flag+it\\n                });\\n                return $(sel_title,2).select((MyJiexi,jxs,nowJx,title,jxsRoute)=>{\\n                    input = input.replace(/‘‘Ⓤ’’|““Ⓙ””/g,'');\\n                    let id = null;\\n                    for(let j in MyJiexi.jiexis){\\n                        if(MyJiexi.jiexis[j].name === nowJx.name){\\n                            id = j;\\n                            break;\\n                        }\\n                    }\\n                    if(!id){\\n                        return 'toast://索引错误无法保存:\\\\n'+id\\n                    }\\n                    jxs.push(input);\\n                    log(jxs);\\n                    nowJx[title] = jxs;\\n                    MyJiexi.jiexis[id] = nowJx;\\n                    putVar('dn.nowJx',JSON.stringify(nowJx));\\n                    writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                    refreshPage(true);\\n                    return 'hiker://empty'\\n                },MyJiexi,jxs,nowJx,title,jxsRoute);\\n            }else {\\n                return 'hiker://empty'\\n            }\\n        },titles,title,jxs,jxsRoute,MyJiexi,nowJx)\\n    });\\n    for(let k in jxs){\\n        d.push({\\n            title:jxs[k],\\n            col_type:'scroll_button',\\n            url:$('#noLoading#').lazyRule((titles,title,jxs,jxsRoute,MyJiexi,nowJx,njx,id,k,max)=>{\\n                switch (getVar('dn.jxm_writeMode','新增')){\\n                    case '删除':\\n                        Array.prototype.remove = function(val) {\\n                            let index = this.indexOf(val);\\n                            if (index > -1) {\\n                                this.splice(index, 1);\\n                            }\\n                        };\\n                        jxs.remove(njx);\\n                        nowJx[title] = jxs;\\n                        MyJiexi.jiexis[id] = nowJx;\\n                        putVar('dn.nowJx',JSON.stringify(nowJx));\\n                        writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                        refreshPage(true);\\n                        return 'hiker://empty'\\n                    case '移动':\\n                        return $(k,'移动到索引多少?').input((k,max,jxs,nowJx,MyJiexi,id,title,jxsRoute)=>{\\n                            function Move(arr, fromIndex, toIndex) {\\n                                var element = arr[fromIndex];\\n                                arr.splice(fromIndex, 1);\\n                                arr.splice(toIndex, 0, element);\\n                            }\\n                            if(parseInt(input)===k){\\n                                return 'toast://啥也没做'\\n                            }else if(parseInt(input)>max-1||parseInt(input)<-1){\\n                                return 'toast://你最大移动范围0-'+parseInt(max-1);\\n                            }\\n                            // let newAr = jxs.splice(k, 1); // 删掉\\n                            // jxs.unshift(newAr[0]);\\n                            Move(jxs,k,parseInt(input));\\n                            nowJx[title] = jxs;\\n                            MyJiexi.jiexis[id] = nowJx;\\n                            putVar('dn.nowJx',JSON.stringify(nowJx));\\n                            writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n                            refreshPage(true);\\n                            return 'hiker://empty'\\n                        },k,max,jxs,nowJx,MyJiexi,id,title,jxsRoute)\\n                    default:\\n                        return 'toast://此元素不支持进行:'+getVar('dn.jxm_writeMode','新增')\\n                }\\n            },titles,title,jxs,jxsRoute,MyJiexi,nowJx,jxs[k],id,k,jxs.length)\\n        });\\n    }\\n    d.push({\\n        // col_type:'line',\\n        col_type:'blank_block'\\n    })\\n}\\nd.push({\\n    col_type:'line',\\n});\\nd.push({\\n    title:'保存',\\n    col_type:'text_center_1',\\n    url:$('#noLoading#').lazyRule((MyJiexi,id,jxsRoute)=>{\\n        if(getVar('dn.jxm_name','')!==MyJiexi.jiexis[id].name){\\n            ifHas = MyJiexi.jiexis.filter(it=>it.name===getVar('dn.jxm_name','')).length>0;\\n            if(ifHas){\\n                return 'toast://待修改的名称重复,不允许保存'\\n            }else{\\n                MyJiexi.jiexis[id].name =  getVar('dn.jxm_name','');\\n                writeFile(jxsRoute,JSON.stringify(MyJiexi));\\n            }\\n        }\\n        back(true);\\n        return 'toast://已保存'\\n    },MyJiexi,id,jxsRoute)\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"小白模式\",\"path\":\"smallWhite\",\"rule\":\"js:\\n    setPageTitle('道长给小白的关爱');\\nconst {color, small,api} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet fileRoot = api.host+'/hikerule/zyw_data/';\\n// log(fileRoot);\\nlet d = [];\\nvar themeRoute = \\\"hiker://files/cache/MyTheme.json\\\";\\nvar themeOnline = fileRoot+'11';\\nvar oldRoute = \\\"hiker://files/cache/MyParseSet.json\\\";\\nvar oldOnline = fileRoot+'12';\\nvar newRoute = \\\"hiker://files/rules/DuanNian/MyParse.json\\\";\\nvar newOnline = fileRoot+'13';\\nvar jxsRoute = \\\"hiker://files/cache/MyJiexi.json\\\";\\nvar jxOnline = fileRoot+'14';\\nvar dmOnline = fileRoot+'30';\\nvar cjcache = 'hiker://files/cache/Parse_Dn.js';\\nvar x5cache = 'hiker://files/cache/Parse_Dn.html';\\nvar dmPath = \\\"hiker://files/cache/diaomao.txt\\\";\\nd.push({\\n    title:small('你好,小白,即使啥也不会,也可以看明白下面的字吧?'),\\n    desc:'如果还是不会,请删以永治,告辞不谢',\\n    col_type:'text_1',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        return 'toast://据说你不服气,不承认自己是小白?\\\\n点我只是为了宣泄一下你的愤怒?啥也别说了,下去搞!'\\n    })\\n});\\nd.push({\\n    title:small('批量管理界面文件是什么?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长的批量管理界面文件，可批量删除和导出解析',\\n    col_type:'text_1',\\n    url:$('确认吗？').confirm(()=>{\\n        let localHtml = 'hiker://files/cache/plscParse.html';\\n        writeFile(localHtml,request('https://gitcode.net/qq_32394351/dr/-/raw/master/dp/batch_delete.html'));\\n        return 'toast://拉取完毕,可返回查看批量管理功能是否正常'\\n    })\\n});\\nd.push({\\n    title:small('单项解析选择界面主题是什么?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长的主题配置以及网页插件和静态页面',\\n    col_type:'text_1',\\n    url:$('确认吗?如果你不是小白，总该会提前备份自己主题的吧!\\\\n'+themeRoute).confirm((cjcache,x5cache,themeRoute,themeOnline)=>{\\n        let themeCode = fetch(themeOnline);\\n        if(!/now_theme/.test(themeCode)){\\n            log(themeCode);\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        let cjFrom = \\\"hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ\\\";\\n        let x5From = \\\"hiker://page/Parse_Dn.html?rule=MyFieldᴰⁿ\\\";\\n        try {\\n            let cjFile = JSON.parse(fetch(cjFrom)).rule;\\n            let x5File = JSON.parse(fetch(x5From)).rule;\\n            writeFile(cjcache, cjFile);\\n            writeFile(x5cache, x5File);\\n            writeFile(themeRoute, themeCode);\\n            clearVar(\\\"jxOldV\\\");\\n            clearVar(\\\"jxNewV\\\");\\n            refreshPage(false);\\n            return 'toast://主题已成功应用'\\n        }\\n        catch(e){\\n            return 'toast://主题应用失败\\\\n未期望的错误:'+e.message;\\n        }\\n    },cjcache,x5cache,themeRoute,themeOnline)\\n});\\nd.push({\\n    title:small('断插解析及默认列表是什么?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长在用的两个MyParse.json文件',\\n    col_type:'text_1',\\n    url:$('确认吗?如果你不是小白，总该会提前备份自己的配置文件吧!\\\\n'+oldRoute+'\\\\n'+newRoute).confirm((oldRoute,oldOnline,newRoute,newOnline)=>{\\n        let oldCode = fetch(oldOnline);\\n        let newCode = fetch(newOnline);\\n        if(!/Parse_Dn\\\\.js/.test(oldCode)||!/Parse_Dn\\\\.js/.test(newCode)){\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        try {\\n            writeFile(oldRoute, oldCode);\\n            writeFile(newRoute, newCode);\\n            return 'toast://断插解析配置及默认列表已经配置成功'\\n        }\\n        catch(e){\\n            return 'toast://配置应用失败\\\\n未期望的错误:'+e.message;\\n        }\\n    },oldRoute,oldOnline,newRoute,newOnline)\\n});\\nd.push({\\n    title:small('断插解析自动档模式是什么?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长在用的MyJiexi.json文件',\\n    col_type:'text_1',\\n    url:$('确认吗?如果你不是小白，总该会提前备份自己的自动档方案吧!\\\\n'+jxsRoute).confirm((jxsRoute,jxOnline)=>{\\n        let jxCode = fetch(jxOnline);\\n        if(!/jiexis/.test(jxCode)){\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        try {\\n            writeFile(jxsRoute, jxCode);\\n            return 'toast://断插解析配置及默认列表已经配置成功'\\n        }\\n        catch(e){\\n            return 'toast://自动档应用失败\\\\n未期望的错误:'+e.message;\\n        }\\n    },jxsRoute,jxOnline)\\n});\\nd.push({\\n    title:small('吊毛过滤文件是什么?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长在用的diaomao.txt文件',\\n    col_type:'text_1',\\n    url:$('确认吗?如果你不是小白，总该会提前备份自己的吊毛过滤文件吧!\\\\n'+dmPath).confirm((dmPath,dmOnline)=>{\\n        let dmCode = fetch(dmOnline);\\n        if(!dmCode||!/mp4|m3u8/.test(dmCode)){\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        try {\\n            writeFile(dmPath, dmCode);\\n            return 'toast://吊毛过滤文件已配置成功'\\n        }\\n        catch(e){\\n            return 'toast://吊毛过滤文件应用失败\\\\n未期望的错误:'+e.message;\\n        }\\n    },dmPath,dmOnline)\\n});\\nd.push({\\n    title:small('真的啥也不会了,还懒得一个个点?')+color('不知道,来一份道长的','#5FB878'),\\n    desc:'自动拉取道长在用的上述所有文件\\\\n一键搞完直接去支持断插的小程序看视频就行啦',\\n    col_type:'text_1',\\n    url:$('修仙法力无边','确认吗?如果你不是小白，总该会提前备份自己的上述所有文件吧!\\\\n请输入道长修仙法力无边来确认执行此操作').input((cjcache,x5cache,themeRoute,oldRoute,newRoute,jxsRoute,themeOnline,oldOnline,newOnline,jxOnline,dmPath,dmOnline)=>{\\n        if(input!=='道长修仙法力无边'){\\n            return 'toast://本次取消执行'\\n        }\\n        let themeCode = fetch(themeOnline);\\n        if(!/now_theme/.test(themeCode)){\\n            log('themeCode:'+themeCode);\\n            return 'toast://拉主题失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        let cjFrom = \\\"hiker://page/Parse_Dn.js?rule=MyFieldᴰⁿ\\\";\\n        let x5From = \\\"hiker://page/Parse_Dn.html?rule=MyFieldᴰⁿ\\\";\\n        let cjFile = JSON.parse(fetch(cjFrom)).rule;\\n        let x5File = JSON.parse(fetch(x5From)).rule;\\n        let oldCode = fetch(oldOnline);\\n        let newCode = fetch(newOnline);\\n        let dmCode = fetch(dmOnline);\\n        if(!/Parse_Dn\\\\.js/.test(oldCode)||!/Parse_Dn\\\\.js/.test(newCode)){\\n            // log('oldCode:'+oldCode);\\n            // log('newCode:'+newCode);\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        let jxCode = fetch(jxOnline);\\n        if(!/jiexis/.test(jxCode)){\\n            // log('jxCode:'+jxCode);\\n            return 'toast://失败!与道长服务器通讯错误,估计是网络卡了'\\n        }\\n        try {\\n            writeFile(cjcache, cjFile); // 拉插件\\n            writeFile(x5cache, x5File); //拉网页文件\\n            writeFile(themeRoute, themeCode); //拉主题文件\\n            clearVar(\\\"jxOldV\\\");\\n            clearVar(\\\"jxNewV\\\");\\n            writeFile(oldRoute, oldCode); //拉断插默认选择界面的配置\\n            writeFile(newRoute, newCode); //拉断插内的解析\\n            writeFile(jxsRoute, jxCode); // 拉自动档文件\\n            if(dmCode&&/mp4|m3u8/.test(dmCode)) {//验证吊毛文件合法性\\n                writeFile(dmPath, dmCode); // 拉吊毛过滤文件\\n            }\\n            back(true);\\n            return 'toast://断插解析配置及默认列表已经配置成功'\\n        }\\n        catch(e){\\n            return 'toast://一键模式应用失败\\\\n未期望的错误:'+e.message;\\n        }\\n    },cjcache,x5cache,themeRoute,oldRoute,newRoute,jxsRoute,themeOnline,oldOnline,newOnline,jxOnline,dmPath,dmOnline)\\n});\\nlet descInfo = '主题文件:'+themeRoute+'\\\\n主界面配置:'+oldRoute+'\\\\n嫖到的解析:'+newRoute+'\\\\n自动档解析:'+jxsRoute;\\ndescInfo+='\\\\n主插件:'+cjcache+'\\\\n主配置选择界面文件:'+x5cache+'\\\\n吊毛过滤文件:'+dmPath;\\nd.push({\\n    title:'文件描述:\\\\n'+descInfo,\\n    col_type:'long_text',\\n    extra:{textSize: 13,lineVisible:false}\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"解析测试\",\"path\":\"jxTest\",\"rule\":\"js:\\n    var items = [];\\nvar json = [{\\n    title: '爱奇艺',\\n    url: 'http://www.iqiyi.com/v_2ga8zts86ys.html',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/09/8/110_901f2ef37af2fea25e5d9648f551ce31_con_130x130.png',\\n}, {\\n    title: '优酷',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/16/9/110_8ff06e0c237760cd57d2508fd98c8414_con_130x130.png',\\n    url: 'https://v.youku.com/v_show/id_XNDc0MDE1NTk1Mg==.html'\\n}, {\\n    title: '腾讯视频',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/15/3/106_3a0d212e17cb95e232ffe155460385cb_con_130x130.png',\\n    url: 'https://v.qq.com/x/cover/mzc00200rmpaf40/n0036l4tntc.html'\\n}, {\\n    title: 'PPTV视频',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/28/5/110_a455b2951227040ee62955edcfb89d72_con_130x130.png',\\n    url: 'https://v.pptv.com/show/zVn3dJXt1xV49l4.html'\\n}, {\\n    title: '芒果TV',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/15/6/110_1834d296aa5b5666a7d94b1e3479ae64_con_130x130.png',\\n    url: 'http://www.mgtv.com/b/349253/10424300.html'\\n},{\\n    title: '咪咕',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/13/1/110_0e6bdee42b08304d158d280b49452bc3_con_130x130.png',\\n    url: 'https://m.miguvideo.com/mgs/msite/prd/detail.html?cid=655838044&mgdbid=&channelId=CAAAB000902015500000000'\\n},{\\n    title: '哔哩哔哩',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/27/4/110_8e2e3d88c45025b380e69817d6fb53b1_con_130x130.png',\\n    url: 'https://m.bilibili.com/bangumi/play/ep428993'\\n},{\\n    title: '搜狐视频',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/15/9/110_532a51f8431efc377808c1ffff2da36f_con_130x130.png',\\n    url: 'https://m.tv.sohu.com/v7329441.shtml'\\n},{\\n    title: '乐视',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/15/8/2_35b5d4373f4bcba28f39486e4f1164d9_con_130x130.png',\\n    url: 'https://m.le.com/vplay_76954333.html?from=ajax'\\n},{\\n    title: '1905电影网',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/18/4/110_5f24b1052fed4f7fc73593a8ef27276d_con_130x130.png',\\n    url: 'https://vip.1905.com/m/play/1429725.shtml'\\n},{\\n    title: '风行视频',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/16/4/110_6f6af9f99b2629e51f0b0a33cdff1d9e_con_130x130.png',\\n    url: 'http://m.fun.tv/mplay/?mid=95719'\\n},{\\n    title: '西瓜视频',\\n    pic_url: 'https://android-artworks.25pp.com/fs08/2021/09/27/5/110_a86265882ed18c6190566e9ea25f9698_con_130x130.png',\\n    url: 'https://www.ixigua.com/6699356792905794055'\\n}];\\nvar qps = [\\n    {title:'龙腾', url:'LT-1ec3f6754f68586ed7f92c3e995cfca6',pic_url: 'https://lanmeiguojiang.com/tubiao/ke/4.png'},\\n    {title: '人人迷', url:'renrenmi-ab924e11d2d69397',pic_url:'https://lanmeiguojiang.com/tubiao/ke/6.png'},\\n    {title: '五毒', url:'wuduyun-1649431307021',pic_url: 'https://lanmeiguojiang.com/tubiao/ke/30.png'},\\n    {title: '多多', url:'https://m3u8.cache.suoyo.cc/m3u8/202203/8/aaabd92da26774c68850a023153c80f1ae6fa9be.m3u8',pic_url: 'https://lanmeiguojiang.com/tubiao/ke/49.png'},\\n    {title: '融兴', url: 'RongXingVR-4215645581932',pic_url:'https://lanmeiguojiang.com/tubiao/ke/80.png'},\\n    {title: '雪人', url: 'xueren-1646823072',pic_url:'https://lanmeiguojiang.com/tubiao/q/133.png'},\\n    {title: '旋风云', url:'xfy-529e6457953d545f',pic_url: 'https://lanmeiguojiang.com/tubiao/ke/54.png'},\\n    {title: '瑞丰资源',url: 'https://1.ruifenglb.com/play/1644914595.m3u8',pic_url: 'https://lanmeiguojiang.com/tubiao/ke/72.png'}\\n];\\nconst {color, small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nconst lsg=$.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\");\\nvar timeout = parseInt(lsg.getItem('timeout','5000'));//超时\\nvar nowParse = getItem('Parse','');//getItem的操作千万不要加入循环,当前选择的解析\\nvar dx_mode = getItem('点选','单测');//点选模式\\nvar qp_test = getItem('切片','0');//显示切片\\nif(qp_test==='1'){\\n    json = qps;\\n}else if(qp_test==='2'){\\n    json = json.concat(qps);\\n}\\nitems.push({\\n    title: color('魔断解析测试','#0C0000'),\\n    desc:'单接口多类正版|单正版多接口 测试 '+'🕒'+timeout,\\n    url: $(timeout,'请输入解析超时毫秒').input(()=>{\\n        if(!parseInt(input)){\\n            return 'toast://超时设置错误，拒绝保存'\\n        }\\n        const lsg=$.require(\\\"hiker://page/localStorage?rule=道长仓库Pro\\\");\\n        lsg.setItem('timeout',input||'5000');\\n        refreshPage(false);\\n        return 'toast://已设置解析超时毫秒:'+input||'5000';\\n    }),\\n    col_type: 'text_center_1',\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nitems.push({\\n    title:'使用说明',\\n    col_type:'text_center_1',\\n    url:$('hiker://empty#noRecordHistory##noHistory#').rule((color)=>{\\n        let d=[];\\n        d.push({\\n            title:color('相信自己，你不需要说明','grey'),\\n            col_type:'text_1',\\n            url:'hiker://empty',\\n            extra:{\\n                lineVisible:false\\n            }\\n        });\\n        let note='想我写教程？没门！';\\n        d.push({\\n            title:note,\\n            col_type:'rich_text'\\n        });\\n        setResult(d);\\n    },color),\\n    extra:{\\n        lineVisible:true\\n    }\\n});\\nitems.push({\\n    col_type:\\\"blank_block\\\",\\n});\\nitems.push({\\n    title:color('🏠️主程序','#ff0000'),\\n    url: \\\"hiker://home@MyFieldᴰⁿ\\\",\\n    col_type: 'scroll_button'\\n});\\nitems.push({\\n    title:color('🎨线路配置','#fa8c35'),\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",\\n    col_type: 'scroll_button'\\n});\\nitems.push({\\n    title:color('🎯解析管理','#3eede7'),\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noHistory#\\\",\\n    col_type: 'scroll_button'\\n});\\nitems.push({\\n    title:color('☢️批量删除','#801dae'),\\n    url: getPath('hiker://files/cache/plscParse.html'),\\n    col_type: 'scroll_button'\\n});\\nitems.push({\\n    title:color('🔠备胎管理','#0eb83a'),\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=解析#noRecordHistory#\\\",\\n    col_type: 'scroll_button'\\n});\\nlet qp_title = '💿切片测试';\\nif(qp_test==='1'){\\n    qp_title =  color(qp_title,'#6bc8d0')\\n}else if(qp_test==='2'){\\n    qp_title =  color(qp_title,'#6ba6d0')\\n}\\nitems.push({\\n    title:qp_title,\\n    url: $('#noLoading#').lazyRule((color)=>{\\n        let modes = ['0','1','2'];\\n        let qp_test = getItem('切片','0');\\n        let idex = modes.indexOf(qp_test);\\n        let nextIdex = idex < modes.length -1?idex+1:0;\\n        qp_test=modes[nextIdex];\\n        setItem('切片',qp_test);\\n        // updateItem('qp_test',{\\n        //     title:qp_test==='1'?color('💿切片测试','#6bc8d0'):'💿切片测试'\\n        // });\\n        refreshPage(false);\\n        return 'hiker://empty'\\n    },color),\\n    col_type: 'scroll_button',\\n    extra:{\\n        id:'qp_test'\\n    }\\n});\\nitems.push({\\n    title:'⚙点选模式:'+dx_mode,\\n    col_type:'text_2',\\n    url:$('#noLoading#').lazyRule(()=>{\\n        let dx_mode = getItem('点选','单测');\\n        dx_mode=(dx_mode==='单测'?'多测':'单测');\\n        setItem('点选',dx_mode);\\n        updateItem('dx_mode',{\\n            title:'⚙点选模式:'+dx_mode\\n        });\\n        return 'hiker://empty'\\n    }),\\n    extra:{\\n        id:'dx_mode'\\n    }\\n});\\nlet dx_test = '❤️解析多选测试';\\nitems.push({\\n    title:dx_test,\\n    col_type:'text_2',\\n    url:$('hiker://empty#noRecordHistory##noHistory#').rule((dx_test,color)=>{\\n        setPageTitle(dx_test);\\n        addListener('onClose', $.toString(() => {\\n            refreshPage(false);//刷新魔断主页面\\n        }));\\n        d=[];\\n        $.require(\\\"hiker://page/jxItem?rule=MyFieldᴰⁿ\\\").jxList();\\n        jxs=d.filter(it=>it.col_type==='text_2').map(it=>pdfh(it.title,'font,-1&&Text'));\\n        let data = storage0.getMyVar('jx_selected')||[];\\n        let dx_filter = getItem('dx_filter','全部');\\n        if(dx_filter === '已选'){\\n            jxs = jxs.filter(it=>data.includes(it));\\n        }else if(dx_filter=== '未选'){\\n            jxs = jxs.filter(it=>!data.includes(it));\\n        }\\n        d=jxs.map((it)=>{\\n            return {\\n                title:(Array.isArray(data)&&data.includes(it))?color(it,'#12b668'):it,\\n                // url:'toast://功能开发中',\\n                url:$('#noLoading#').lazyRule((it,color)=>{\\n                    let data = storage0.getMyVar('jx_selected');\\n                    if(Array.isArray(data)){\\n                        if(data.includes(it)){\\n                            log('包含:'+it);\\n                            data.splice(data.indexOf(it),1);\\n                        }else{\\n                            data.push(it)\\n                        }\\n                        storage0.putMyVar('jx_selected', data)\\n                    }else{\\n                        storage0.putMyVar('jx_selected', [it])\\n                    }\\n                    if(storage0.getMyVar('jx_selected').includes(it)){\\n                        updateItem(it,{\\n                            title:color(it,'#12b668')\\n                        })\\n                    }else{\\n                        updateItem(it,{\\n                            title:it\\n                        })\\n                    }\\n                    return 'hiker://empty'\\n                },it,color),\\n                col_type:'text_3',\\n                extra:{\\n                    id:it\\n                }\\n            }\\n        });\\n        let op=[];\\n        op.push({\\n            title:'全选',\\n            url:$('#noLoading#').lazyRule((jxs,color)=>{\\n                storage0.putMyVar('jx_selected', jxs);\\n                jxs.forEach(it=>{\\n                    updateItem({title: color(it,'#12b668'), extra: {id: it}});\\n                });\\n                return 'hiker://empty'\\n            },jxs,color),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:'全不选',\\n            url:$('#noLoading#').lazyRule((jxs)=>{\\n                storage0.putMyVar('jx_selected', []);\\n                jxs.forEach(it=>{\\n                    updateItem({title: it, extra: {id: it}});\\n                });\\n                return 'hiker://empty'\\n            },jxs),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:'反选',\\n            url:$('#noLoading#').lazyRule((jxs,color)=>{\\n                let oldSel = storage0.getMyVar('jx_selected', []);\\n                function getDifferentData(arrA, arrB) {\\n                    return arrA.concat(arrB).filter(function (v, i, arr) {\\n                        return arr.indexOf(v) === arr.lastIndexOf(v);\\n                    });\\n                }\\n                let newSel = getDifferentData(jxs,oldSel);\\n                storage0.putMyVar('jx_selected', newSel);\\n                oldSel.forEach(it=>{\\n                    updateItem({title: it, extra: {id: it}});\\n                });\\n                newSel.forEach(it=>{\\n                    updateItem({title: color(it,'#12b668'), extra: {id: it}});\\n                });\\n                return 'hiker://empty'\\n            },jxs,color),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:'删除',\\n            url:$('#noLoading#').lazyRule(()=>{\\n                let sel = storage0.getMyVar('jx_selected', []);\\n                if(sel.length < 1){\\n                    return 'toast://啥都没选，删除个鸡毛~'\\n                }\\n                return $('确认删除已选择的:'+sel[0]+'等'+sel.length+'条解析?').confirm((sel)=>{\\n                    var parseRoute = getVar('parseRoute');\\n                    eval('var json =' + fetch(parseRoute));\\n                    for(let name in sel){\\n                        if (json.codes.hasOwnProperty(name)) {\\n                            delete json.codes[name];\\n                        }\\n                    }\\n                    json.title = json.title.filter(it=>!sel.includes(it)); // 筛选没有被删除的标题\\n                    writeFile(parseRoute, $.stringify(json));\\n                    storage0.putMyVar('jx_selected', []);//删除完了清空选中项目\\n                    refreshPage(false);\\n                    return \\\"toast://已将〖\\\" + sel[0] + \\\"〗等\\\"+sel.length+\\\"条解析删除\\\";\\n                },sel)\\n            }),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:'操作|筛选 '+color(jxs.length,'#ff7000'),\\n            url:'toast://前面按钮是操作，后面按钮是筛选',\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:dx_filter==='全部'?color('全部','#12b668'):'全部',\\n            url:$('#noLoading#').lazyRule(()=>{\\n                setItem('dx_filter','全部');\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:dx_filter==='已选'?color('已选','#12b668'):'已选',\\n            url:$('#noLoading#').lazyRule(()=>{\\n                setItem('dx_filter','已选');\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }),\\n            col_type:'scroll_button'\\n        });\\n        op.push({\\n            title:dx_filter==='未选'?color('未选','#12b668'):'未选',\\n            url:$('#noLoading#').lazyRule(()=>{\\n                setItem('dx_filter','未选');\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }),\\n            col_type:'scroll_button'\\n        });\\n        d=op.concat(d);\\n        setResult(d);\\n    },dx_test,color)\\n});\\nfunction sortByKey(array, key, order) {//对象数组按某个键值排序\\n    return array.sort(function(a, b) {\\n        var x = parseInt(a[key].match(/(\\\\d+)/)[1]);//修复大于10出问题\\n        var y = parseInt(b[key].match(/(\\\\d+)/)[1]);\\n        if (order) {\\n            return ((x < y) ? -1 : ((x > y) ? 1 : 0))\\n        } else {\\n            return ((x < y) ? ((x > y) ? 1 : 0) : -1)\\n        }\\n    })\\n}\\nitems.push({\\n    title: '🛠一键测试已选接口：'+nowParse,\\n    //url: 'toast://这是接口',\\n    url:$().lazyRule((json,nowParse,timeout,sortByKey)=>{\\n        if(!getItem('Parse','')){\\n            return 'toast://避免资源浪费，请先在下方选一个接口再进行测试'\\n        }\\n        var count = json.length; //设置任务数量\\n        log('魔断开启多任务解析,任务数量:'+count);\\n        var task = function(obj) {\\n            eval('var config_dp =' + fetch(getVar('oldConfig')));\\n            eval(fetch(config_dp.cj));\\n            return aytmParse(obj.vipUrl,obj.name,obj.timeout);\\n        };\\n        var parseRet = []; //解析结果列表\\n        let tasks = json.map((it,idex)=>{\\n            return {\\n                func: task,\\n                param: {\\n                    //name:it.title,\\n                    name:nowParse,\\n                    type:it.title,\\n                    // rule:it.rule,\\n                    vipUrl: it.url,\\n                    timeout: timeout\\n                },\\n                id: \\\"task\\\"+idex\\n            }\\n        });\\n        showLoading(\\\"魔断并发解析中，剩余待测:\\\"+count);\\n        be(tasks,{\\n            func: function(obj, id, error,ret) {\\n                log(\\\"监听到任务\\\" + id+'已结束,error:'+error+',ret:'+ret);\\n                ret = ret||'';\\n                error=error||'';\\n                parseRet.push({\\n                    task:id,\\n                    ret:ret,\\n                    error:error,\\n                    name:tasks.filter(it=>it.id===id)[0].param.type\\n                });\\n                count -= 1; //完成了任务，任务数量-1\\n                //log(obj);\\n                if (count > 0) {\\n                    showLoading(\\\"魔断并发解析中，剩余待测:\\\" + count)\\n                } else {\\n                    hideLoading();\\n                }\\n            },\\n            param: {//传到监听函数的obj参数里\\n                hi: \\\"ccc\\\",\\n            }\\n        });//执行多任务\\n        //log(\\\"多任务执行结果数:\\\"+parseRet.length);\\n        parseRet=sortByKey(parseRet,'task',true);//升序排列\\n        // log(parseRet.map(it=>it.task));\\n        return $('hiker://empty#noRecordHistory##noHistory#').rule((parseRet)=>{\\n            setPageTitle(getItem('Parse')+'解析报告');\\n            const {isVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n            const {color, small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n            let d=[];\\n            let show_mode = getItem('show_mode','详细');\\n            let col_type = show_mode==='详细'?'text_1':'text_3';\\n            d.push({\\n                title:'显示模式:'+color(show_mode,'#fa8c35'),\\n                col_type:'scroll_button',\\n                url:$('#noLoading#').lazyRule((color,cnt)=>{\\n                    let show_mode = getItem('show_mode','详细');\\n                    show_mode = show_mode==='详细'?'精简':'详细';\\n                    setItem('show_mode',show_mode);\\n                    updateItem('show_mode',{\\n                        title:'显示模式:'+color(show_mode,'#fa8c35')\\n                    });\\n                    let col_type = show_mode==='详细'?'text_1':'text_3';\\n                    for(let i=0;i<cnt;i++){\\n                        updateItem('show_ret_'+i,{\\n                            col_type:col_type\\n                        });\\n                    }\\n                    return 'hiker://empty'\\n                },color,parseRet.length),\\n                extra:{\\n                    id:'show_mode'\\n                }\\n            });\\n            parseRet.forEach((it,idx)=>{\\n                let title=it.name;\\n                if(it.ret&&!it.ret.includes('undefined')&&(/#isVideo=true#/.test(it.ret)||isVideo(it.ret))){\\n                    title=color(title,'#12b668')\\n                }\\n                let desc=(it.ret||it.error).substr(0,60);\\n                d.push({\\n                    title:title,\\n                    desc:small(desc),\\n                    col_type:col_type,\\n                    url:it.ret,\\n                    extra:{\\n                        ret:it.ret||it.error,\\n                        id:'show_ret_'+idx\\n                    }\\n                });\\n            });\\n            setResult(d);\\n        },parseRet)\\n    },json,nowParse,timeout,sortByKey),\\n    col_type: 'text_center_1',\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\n/*\\nvar parseRoute = 'hiker://files/rules/DuanNian/MyParse.json';\\nvar MyParseS = {};\\neval('var parseFile =' + fetch(parseRoute));\\nMyParseS = Object.keys(parseFile.codes);\\nMyParseS.reverse();\\n*/\\nvar d=[];\\n$.require(\\\"hiker://page/jxItem?rule=MyFieldᴰⁿ\\\").jxList();\\nd=d.filter(it=>it.col_type==='text_2').map(it=>pdfh(it.title,'font,-1&&Text'));\\nMyParseS=d;\\n\\nfor (let i in MyParseS) {\\n    if (!/defaultParse/.test(MyParseS[i])) {\\n        let title =MyParseS[i];\\n        items.push({\\n            title: nowParse === title?color(title,'#12b668'):title,\\n            url:$('#noLoading#').lazyRule((ipt)=>{\\n                setItem('Parse',ipt);\\n                refreshPage();\\n                return 'toast://已选接口'+ipt;\\n            },title) ,\\n            col_type: 'scroll_button'\\n        });\\n    }\\n}\\nlet tag='';\\nfor (let i in json) {\\n    let title = json[i].title;\\n    let zurl=json[i].url;\\n    let zpic = json[i].pic_url;\\n    if(getMyVar('zdy') === zurl){\\n        tag=title;\\n        title='⛳'+title;\\n    }\\n    items.push({\\n        title:title,\\n        url: $('#noLoading#').lazyRule((zurl,nowParse,timeout,vipObj) => {\\n            if(getMyVar('zdy')!==zurl){\\n                putMyVar('zdy', zurl);\\n                refreshPage(false);\\n            }\\n            var dx_mode = getItem('点选','单测');//点选模式\\n            if(dx_mode==='单测'){\\n                showLoading('魔断动态解析中,请稍等...');\\n                eval('var config_dp =' + fetch(getVar('oldConfig')));\\n                eval(fetch(config_dp.cj));\\n                return aytmParse(zurl,nowParse,timeout);\\n            }else{\\n                let data = storage0.getMyVar('jx_selected')||[];\\n                if(data.length>32){\\n                    return $('你所选择待测试的解析数共计:'+data.length+'个，超出了推荐最大数32,性能可能极差,是否继续?').confirm((data,vipObj,timeout)=>{\\n                        const {test_report} = $.require('hiker://page/test_report');\\n                        return test_report(data,vipObj,timeout)\\n                    },data,vipObj,timeout)\\n                }else{\\n                    const {test_report} = $.require('hiker://page/test_report');\\n                    return test_report(data,vipObj,timeout)\\n                }\\n            }\\n        },zurl,nowParse,timeout,json[i]),\\n        pic_url:zpic,\\n        col_type: 'icon_4'\\n    });\\n}\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"zdy\\\");\\n}));\\nitems.push({\\n    title:'测试'+tag,\\n    col_type: 'input',\\n    url:$.toString((nowParse,timeout)=>{\\n        eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n        eval(fetch(config.cj));\\n        // eval(fetch('hiker://files/cache/Parse_Dn.js', {}));\\n        return aytmParse(getMyVar('zdy'), nowParse,timeout);\\n    },nowParse,timeout),\\n    desc: '请输解析地址',\\n    extra: {\\n        titleVisible: true,\\n        defaultValue: getMyVar('zdy', json[0].url) || \\\"\\\",\\n        onChange: 'putMyVar(\\\"zdy\\\",input)',\\n        textSize: 13,\\n        type: \\\"textarea\\\",\\n        height: 2\\n    }\\n});\\nsetResult(items);\"},{\"name\":\"解析报告\",\"path\":\"test_report\",\"rule\":\"function sortByKey(array, key, order) {//对象数组按某个键值排序\\n    return array.sort(function(a, b) {\\n        var x = parseInt(a[key].match(/(\\\\d+)/)[1]);//修复大于10出问题\\n        var y = parseInt(b[key].match(/(\\\\d+)/)[1]);\\n        if (order) {\\n            return ((x < y) ? -1 : ((x > y) ? 1 : 0))\\n        } else {\\n            return ((x < y) ? ((x > y) ? 1 : 0) : -1)\\n        }\\n    })\\n}\\nfunction test_report(jxs,vipObj,timeout){//单正版多解析测试报告\\n    jxs = jxs||[];//解析标题列表\\n    let vipUrl = vipObj.url;\\n    let vipName = vipObj.title;\\n    if(jxs.length<1){\\n    return 'toast://解析列表里无解析，测个鸡毛'\\n    }\\n    var count = jxs.length; //设置任务数量\\n    log('魔断开启多任务解析,任务数量:'+count);\\n    var task = function(obj) {\\n        eval('var config_dp =' + fetch(getVar('oldConfig')));\\n        eval(fetch(config_dp.cj));\\n        return aytmParse(vipUrl,obj.name,timeout);\\n    };\\n    var parseRet = []; //解析结果列表\\n    let tasks = jxs.map((it,idex)=>{\\n        return {\\n            func: task,\\n            param: {\\n                name:it,\\n            },\\n            id: \\\"task\\\"+idex\\n        }\\n    });\\n    showLoading(\\\"魔断并发解析中，剩余待测:\\\"+count);\\n    be(tasks,{\\n        func: function(obj, id, error,ret) {\\n            log(\\\"监听到任务\\\" + id+'已结束,error:'+error+',ret:'+ret);\\n            ret = ret||'';\\n            error=error||'';\\n            parseRet.push({\\n                task:id,\\n                ret:ret,\\n                error:error,\\n                name:tasks.filter(it=>it.id===id)[0].param.name\\n            });\\n            count -= 1; //完成了任务，任务数量-1\\n            //log(obj);\\n            if (count > 0) {\\n                showLoading(\\\"魔断并发解析中，剩余待测:\\\" + count)\\n            } else {\\n                hideLoading();\\n            }\\n        },\\n        param: {//传到监听函数的obj参数里\\n            hi: \\\"ccc\\\",\\n        }\\n    });//执行多任务\\n    //log(\\\"多任务执行结果数:\\\"+parseRet.length);\\n    parseRet=sortByKey(parseRet,'task',true);//升序排列\\n    // log(parseRet.map(it=>it.task));\\n    return $('hiker://empty#noRecordHistory##noHistory#').rule((vipName,parseRet)=> {\\n        setPageTitle(vipName + '解析报告');\\n        const {isVideo} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n        const {color, small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\n        let d = [];\\n        let show_mode = getItem('show_mode', '详细');\\n        let col_type = show_mode === '详细' ? 'text_1' : 'text_3';\\n        d.push({\\n            title: '显示模式:' + color(show_mode, '#fa8c35'),\\n            col_type: 'scroll_button',\\n            url: $('#noLoading#').lazyRule((color, cnt) => {\\n                let show_mode = getItem('show_mode', '详细');\\n                show_mode = show_mode === '详细' ? '精简' : '详细';\\n                setItem('show_mode', show_mode);\\n                updateItem('show_mode', {\\n                    title: '显示模式:' + color(show_mode, '#fa8c35')\\n                });\\n                let col_type = show_mode === '详细' ? 'text_1' : 'text_3';\\n                for (let i = 0; i < cnt; i++) {\\n                    updateItem('show_ret_' + i, {\\n                        col_type: col_type\\n                    });\\n                }\\n                return 'hiker://empty'\\n            }, color, parseRet.length),\\n            extra: {\\n                id: 'show_mode'\\n            }\\n        });\\n        parseRet.forEach((it, idx) => {\\n            let title = it.name;\\n            if (it.ret && !it.ret.includes('undefined') && (/#isVideo=true#/.test(it.ret) || isVideo(it.ret))) {\\n                title = color(title, '#12b668')\\n            }\\n            let desc = (it.ret || it.error).substr(0, 60);\\n            d.push({\\n                title: title,\\n                desc: small(desc),\\n                col_type: col_type,\\n                url: it.ret,\\n                extra: {\\n                    ret: it.ret || it.error,\\n                    id: 'show_ret_' + idx\\n                }\\n            });\\n        });\\n        setResult(d);\\n    },vipName,parseRet)\\n}\\n\\n$.exports.sortByKey=sortByKey;\\n$.exports.test_report=test_report;\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/4.svg"},{"last_chapter_rule":"","title":"魔断解析🐛","author":"道长","version":1,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    let d=[];\nlet webUrl=\"https://gitcode.net/qq_32394351/dr/-/raw/master/js/jiexis.txt\";\nd.push({\n    title:\"以下网站不定期更新解析，点击进入原网页\",\n    url:webUrl,\n    col_type:\"text_1\"\n});\nlet html=request(webUrl);\nlet jxs=html.split('\\n');\nlet list=[];\nfor(let i in jxs){\n    try{\n        //log(jxs[i]);\n        let title=jxs[i].split(',')[0];\n        let url=jxs[i].split(',')[1];\n        if(title&&url&&!/html/.test(url)){\n            let it={\n                title:title,\n                url:url\n            };\n            //log(it);\n            list.push(it);\n        }\n    }catch(e){\n        log(e.message);\n    }\n}\nd.push({\n    title:\"共有:\"+list.length+\"个解析\",\n    url:$(\"导出到本地文件且复制到剪切板?\").confirm((list)=>{\n        let path=\"hiker://files/rules/DuanNian/MyParseOut_断插.txt\";\n        let listd=list.map(it=>it.title+','+it.url);\n        let outText=listd.join(\"\\n\");\n        writeFile(path,outText);\n        // copy(outText);\n        let pastes = getPastes();\n        let importUrl = sharePaste(base64Encode(outText),pastes[1]);\n        let importCode = '魔断解析导入口令¥¥'+importUrl;\n        copy(importCode);\n        return \"toast://已导出到本地路径:\"+path;\n    },list),\n    col_type:\"text_1\",\n    desc:\"点击单个解析可以单独复制解析名\\n点此可复制全部解析适用于魔断的导入格式\"\n});\nlet data=list.map((it)=>{\n    return {\n        title:it.title,\n        col_type:\"flex_button\",\n        url:$().lazyRule((it)=>{\n            copy('★'+it.title+'★'+it.url);\n            return \"toast://已复制链接:\"+it.url\n        },it)\n    }\n});\nd=d.concat(data);\n//log(list);\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/3.png"},{"last_chapter_rule":"","title":"模板·Q","author":"发粪涂墙","version":18,"type":"other","url":"hiker://empty","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nif (getItem(\"start\", \"\") == \"\") {\n    setItem(\"start\", \"1\")\n    confirm({\n        title: '温馨提示',\n        content: '请勿删除或改名此模板，以免依赖此模板的小程序无法使用！！\\n并特别感谢 Reborn LoyDgIk大佬的技术支持!!!',\n        confirm: '',\n        cancel: 'refreshPage()'\n    })\n}\n\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"template-url\")\n    clearVar(\"template-search-url\")\n    clearVar(\"template-pages-unfold\")\n}))\n\nlet d2 = [{\n    desc: \"输入分类或详情页链接测试匹配\",\n    col_type: \"input\",\n    url: \"input\",\n    title: \"测试\",\n    extra: {\n        onChange: \"putVar('template-url',input)\"\n    }\n},{\n    desc: \"输入搜索链接，**为关键字占位符\",\n    col_type: \"input\",\n    url: \"input\",\n    title: \"测试搜索\",\n    extra: {\n        titleVisible: false,\n        defaultValue: getVar(\"template-search-url\"),\n        onChange: \"putVar('template-search-url',input)\"\n    }\n}, {\n    desc: \"输入搜索关键词测试匹配\",\n    col_type: \"input\",\n    url: $.toString((ruleTitle)=>{\n            return \"hiker://search?s=\" + input +  \"&rule=\"+ ruleTitle;\n    }, MY_RULE.title),\n    title: \"测试搜索\",\n}, {\n    title: \"生成规则\",\n    col_type: \"text_center_1\",\n    url: \"input://////请输入规则名.js:\" + $.toString(() => {\n        var url = getVar('template-url', \"\");\n        if (url.length <= 0 || input.length <= 0) {\n            return \"toast://请先输入链接和规则名\"\n        }\n        var rule = {\n            \"last_chapter_rule\": \"\",\n            \"title\": input,\n            \"author\": \"\",\n            \"url\": url,\n            \"version\": 0,\n            \"col_type\": \"movie_3\",\n            \"class_name\": \"\",\n            \"class_url\": \"\",\n            \"area_name\": \"\",\n            \"area_url\": \"\",\n            \"sort_name\": \"\",\n            \"year_name\": \"\",\n            \"sort_url\": \"\",\n            \"year_url\": \"\",\n            \"find_rule\": \"js:\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"search_url\": getVar(\"template-search-url\"),\n            \"titleColor\": \"\",\n            \"group\": \"测试\",\n            \"searchFind\": \"js:\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"detail_col_type\": \"movie_1\",\n            \"detail_find_rule\": \"js:\\n//通用匹配\\nputVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    var newUrls = urls.filter(url => {\\n        return !url.includes(\\\"url=\\\") &&\\n            url.match(/\\\\.mp4|\\\\.m3u8|\\\\.flv/)\\n    });\\n    return newUrls[0]\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\nconst {\\n    autoPage\\n} = $.require(\\\"hiker://page/auto?rule=模板·Q\\\");\\nautoPage(getResCode())\",\n            \"sdetail_col_type\": \"movie_1\",\n            \"sdetail_find_rule\": \"*\",\n            \"ua\": \"mobile\",\n            \"preRule\": \"\",\n            \"pages\": \"[]\"\n        };\n        return \"海阔视界规则分享，当前分享的是：小程序￥home_rule￥\" + JSON.stringify(rule)\n    })\n},{\ntitle: '文字教程',\ncol_type: 'text_2',\nurl: 'hiker://page/detail?rule=视界论坛R',\nextra: {\n    url: 'https://haikuoshijie.cn/topic/8440#fypage#noHistory#',\n},\n// url: 'web://https://haikuoshijie.cn/topic/8440'\n},{\ntitle: '视频教程',\ncol_type: 'text_2',\nurl: $(\"https://www.bilibili.com/video/BV1dM4y1g7re?share_source=copy_web\").lazyRule(() => {\n        showLoading(\"强力嗅探中，请稍候……\")\n        let inputValue = input\n        return $(inputValue).x5Lazy(() => {\n            var urls = _getUrls()\n            /**\n             * exceptKeys 是排除的关键字列表\n             */\n            var exceptKeys = [\"m3u8djksiej\", \"playm3u8\", \"m3u8.tv\", \"min.css\"]\n            /**\n             * searchKeys 是匹配的关键字列表\n             */\n            var searchKeys = [\".mp3\", \".mp4\", \".m3u8\", \".flv\", \".avi\", \".3gp\", \"mpeg\", \".wmv\", \".mov\", \"rmvb\", \".dat\", \"qqBFdownload\", \"mime=video%2F\"]\n            fy_bridge_app.log(JSON.stringify(urls))\n            for (var i in urls) {\n                if (exceptKeys.every((key)=> !urls[i].includes(key)) \n                    && searchKeys.some((key)=> urls[i].includes(key))\n                    ) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    })\n// url: 'web://https://www.bilibili.com/video/BV1dM4y1g7re?share_source=copy_web'\n},{\ntitle: getVar('template-pages-unfold', 'false') === 'true'? '点我收缩模板列表': '点我展开模板列表',\ncol_type: 'text_center_1',\nurl: $(\"#noLoading#\").lazyRule((pageUnfold) => {\n     putVar('template-pages-unfold', pageUnfold === 'true' ? 'false' : 'true')\nrefreshPage(false)\nreturn 'toast://' + (getVar('template-pages-unfold', 'false') === 'true'? '展开成功': '收缩成功')\n}, getVar('template-pages-unfold', 'false'))\n},{\ntitle: '如果上面的测试通过能显示图片，那么就说明是可以生成规则的，依次填入分类链接与搜索链接，第三个框留空点击生成规则，填好名字即可，详细添加分类词之类的请点击上面的两个教程链接参考！！',\ncol_type: 'rich_text'\n}]\nif(getVar('template-pages-unfold', 'false') === 'true') {\nlet d = []\nd.push({\n    title: '点击模板可查看代码：',\n    col_type: 'rich_text'\n})\nlet pageList = MY_RULE.pageList.filter(page => page.name != '字符串处理工具'\n&& page.name != '#Mapping'\n&& page.name != '#auto')\nfor (let page of pageList) {\n    d.push({\n        title: page.name,\n        col_type: 'text_2',\n        url: $().rule((page) => {\n            const {\n                htmlEscape\n            } = $.require(\"hiker://page/stringtool\");\n            let d = []\n            d.push({\n                title: htmlEscape(page.rule),\n                col_type: 'rich_text'\n            })\n            setResult(d)\n        }, page)\n    })\n}\nd2.push.apply(d2, d)\n}\nsetResult(d2)","searchFind":"js:\n/*let surl =  getVar(\"template-search-url\")\nlog(\"surl=\"+surl)\nlet insplits=MY_URL.split(\"#\")\nlog(insplits)\nlet url = surl.replace(\"**\", insplits[1]).replace(\"fypage\", insplits[2])\nlog(\"url=\"+url)\nlet html=request(url,{})\nlog(html);\nlog(MY_URL)*/\nvar lazy = '';\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"hiker://empty#**#fypage.js: let surl =  getVar(\"template-search-url\")；；let insplits=input.split(\"#\")；；let url = surl.replace(base64Decode(\"Kio=\"), insplits[1]).replace(base64Decode(\"ZnlwYWdl\"), insplits[2])；；url；；","titleColor":"","group":"⑥③🛠️工具","detail_col_type":"movie_3","detail_find_rule":"js:\nvar lazy = '';\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'a&&title'),\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\n        img: parseDom(list[j], '.lazyload||a&&data-original')+'@Referer=',\\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级.b\",\"path\":\".b\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar tabs = [];\\nvar conts = parseDomForArray(html, 'body&&.b');\\nvar lists = [];\\nfor (var i in conts) {\\n    tabs.push(parseDomForHtml(conts[i], 'h3&&Text'))\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.stui-content__detail--h1&&Text').replace('地区', '\\\\n地区').replace('主演', '\\\\n主演'),\\n    desc: parseDomForHtml(html, '.desc||.detail-content&&Text'),\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n            d.push({\\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'a&&title'),\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\n        img: parseDom(list[j], 'a&&data-original'),\\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var d = []\\nvar list = pdfa(getResCode(), '.myui-vodlist&&li')\\nfor (var j in list) {\\n    d.push({\\n        title: pdfh(list[j], 'h4&&Text'),\\n        desc: pdfh(list[j], '.pic-tag||.pic-text&&Text'),\\n        img: pd(list[j], '.lazyload&&data-original'),\\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\\n    })\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: pdfh(html, '.data&&Text').replace('地区：', '  ').replace('年份：', '  ') + '\\\\n' + pdfh(html, '.data,1&&Text').substring(0, 15) + '\\\\n' + pdfh(html, '.data,2&&Text'),\\n    desc: pdfh(html, '.data,3&&Text'),\\n    img: pd(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar tabs = [];\\nvar lists = [];\\nif (!arts || !conts) {\\n    var arts = pdfa(html, '.nav-tabs&&a');\\n    //log(arts);\\n\\n    for (var i in arts) {\\n        tabs.push(pdfh(arts[i], 'Text'))\\n    }\\n    var conts = pdfa(html, 'body&&.myui-content__list||.b');\\n    // log(conts);\\n\\n    for (let item of conts) {\\n        lists.push(pdfa(item, 'ul&&li'));\\n    }\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: pdfh(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: pd(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2',\\n            extra: {\\n                blockRules: [\\n                    \\\".jpg\\\",\\n                    \\\".jpeg\\\",\\n                    \\\".png\\\",\\n                    \\\".mp4\\\",\\n                    \\\".m3u8\\\",\\n                    \\\".gif\\\"\\n                ]\\n            }\\n        });\\n    }\\n}\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var d = [];\\r\\nvar list = parseDomForArray(getResCode(), '#searchList&&li');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\r\\nfor (var j in list) {\\r\\n    d.push({\\r\\n        title: parseDomForHtml(list[j], 'a&&title'),\\r\\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\\r\\n        pic_url: parseDom(list[j], 'a&&data-original'),\\r\\n        content: parseDomForHtml(list[j], '.detail--h4&&Text'),\\r\\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\\r\\n    })\\r\\n}\\r\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.vodlist&&li');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),\\n       desc: parseDomForHtml(list[j], 'a&&Text'),\\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\\n       url: parseDom(list[j],'a&&href')\\n  });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace('[推荐]', ''))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.sort-item');\\n\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'body&&Text');\\n\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.video-info-items,2&&Text').replace('分类|', '').replace('地区：', '').replace('年份：', ' ').substring(0, 18) + '\\\\n' + '\\\\n' + parseDomForHtml(html, '.video-info-items,1&&Text').substring(0, 18),\\n    pic_url: parseDom(html, '.lazyload&&data-src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html,'.nav-tabs&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist||.b');\\nvar lists =[];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n title: parseDomForHtml(getResCode(), 'p,1&&Text').replace('类型：','').replace('地区：',' ').replace('年份：','').replace('语言：','')+ '\\\\n\\\\n'+parseDomForHtml(getResCode(), 'p,4&&Text').substring(0, 30),\\n    desc:parseDomForHtml(getResCode(), 'p,2&&Text'),\\n pic_url: parseDom(html, '.lazyload&&data-original'),\\n url: fm,\\n col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n            d.push({\\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"定位二级\",\"path\":\"erji\",\"rule\":\"var tabs = [];\\nvar lists = [];\\n\\nvar arts = parseDomForArray(html, 线路);\\nvar conts = parseDomForArray(html, 选集);\\n\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 线路名))\\n}\\n\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 选集列表))\\n}\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\ntry {\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n} catch (e) {}\"},{\"col_type\":\"movie_3\",\"name\":\"二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\ntry {\\nd.push({\\n    title: parseDomForHtml(html, '.remarks&&Text') + '\\\\n' + parseDomForHtml(html, '.s-top-info-detail&&a&&Text')+ parseDomForHtml(html, '.s-top-info-detail&&a,1&&Text')+ parseDomForHtml(html, '.s-top-info-detail&&a,2&&Text') + '\\\\n““简介：不能用就删掉吧””',\\n    desc: parseDomForHtml(html, '.desc_txt&&Text').substring(0, 20),\\n    img: parseDom(html, '.img-cover||.vod-detail-bj&&src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n} catch (e) {}\\n\\nvar arts = parseDomForArray(html, '.play_source_tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&#playsx');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n        for (var i = 0; i < tabs.length; i++) {\\n            var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n            d.push({\\n                title: (getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i]).replace('',''),\\n                url: url,\\n                col_type: 'flex_button'\\n            })\\n        }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/,'$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nvar arts = parseDomForArray(html, 'body&&.fed-drop-btns');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\\n}\\nd.push({\\n    title: parseDomForHtml(html, 'dd&&li,3&&Text') + '\\\\n' + parseDomForHtml(html, 'dd&&li,4&&Text').substring(0, 15) + '\\\\n' + parseDomForHtml(html, 'dd&&li,5&&Text').substring(0, 15),\\n    desc: parseDomForHtml(html, 'dd&&li,6&&Text').substring(0, 25),\\n    pic_url: parseDom(html, '.fed-lazy&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索dl\",\"path\":\"dl\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 'body&&dl');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'h1&&Text'),\\n       desc: parseDomForHtml(list[j], '.fed-list-remarks&&Textt'),\\n\\t    content: parseDomForHtml(list[j], '.fed-part-esan--span&&Text'),\\n       img: parseDom(list[j], 'a&&data-original'),\\n       url: parseDom(list[j], 'a&&href')\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key + \\\"?rule=模板·Q\\\");\\n    // log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping?rule=模板·Q\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if(pageRules.length == 0) {\\n        log(\\\"暂无合适的模板\\\");\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var d =[];\\nvar list = parseDomForArray(getResCode(), 'body&&.pack-ykpack');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),\\n       desc: parseDomForHtml(list[j], 'span,-1&&Text'),\\n       img: parseDom(list[j], '.eclazy&&data-original')+'@Referer=',\\n       url: parseDom(list[j],'a&&href')+ '#immersiveTheme#'\\n  });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级module-items\",\"path\":\"module-items\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar list = pdfa(html, '.module-items&&.module-item');\\nfor (var j in list) {\\n    d.push({\\n        title: pdfh(list[j], 'a&&title'),\\n        desc: pdfh(list[j], '.module-item-text&&Text'),\\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\\n        url: pd(list[j], 'a&&href') + \\\"#immersiveTheme#\\\"\\n    });\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc: '330&&float',\\n    col_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\ntry {\\n    var title = pdfa(html, 'body--a&&.tag-link');\\n} catch (e) {\\n    var title = '';\\n}\\nvar T = [];\\nfor (var i in title) {\\n    T.push(pdfh(title[i], 'a&&Text'))\\n}\\nd.push({\\n    title: T.join('  ') + '\\\\n' + pdfh(html, '.video-info-items,1&&Text').split('/').join('  ').substring(0, 20) + '\\\\n' + pdfh(html, '.video-info-items&&Text').split('/').join('  ').substring(0, 20),\\n    desc: pdfh(html, '.video-info-items,2&&Text'),\\n    img: pd(html, '.lazyload&&data-src'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar arts = pdfa(html, 'body&&.module-tab-item');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(pdfh(arts[i], 'span&&Text'))\\n}\\nvar conts = pdfa(html, 'body&&.scroll-box-y');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(pdfa(conts[i], 'body&&a'))\\n}\\n\\nfunction setTabs(tabs, vari) {\\nd.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: pdfh(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: pd(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2',\\n            extra: {\\n                blockRules: [\\n                    \\\".jpg\\\",\\n                    \\\".jpeg\\\",\\n                    \\\".png\\\",\\n                    \\\".mp4\\\",\\n                    \\\".m3u8\\\",\\n                    \\\".gif\\\"\\n                ]\\n            }\\n        });\\n    }\\n}\\ntry {\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n} catch (e) {\\n    d.push({\\n        title: '没有选集',\\n        col_type: 'text_center_1'\\n    })\\n}\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n    d.push({\\n        title: parseDomForHtml(list[j], 'h3&&Text'),\\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\\n        img: parseDom(list[j], 'img&&data-src'),\\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"一级item\",\"path\":\"item\",\"rule\":\"var d = [];\\nvar list = pdfa(getResCode(), 'body&&.item');\\nfor (let i in list) {\\n    d.push({\\n        title: parseDomForHtml(list[i], 'img&&alt'),\\n        desc: parseDomForHtml(list[i], 'p&&Text'),\\n        pic_url: parseDom(list[i], 'img&&src'),\\n        url: parseDom(list[i], 'a&&href'),\\n        col_type: 'movie_3'\\n    })\\n}\\nsetResult(d)\"},{\"name\":\"一级data_list\",\"path\":\"data_list\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '#data_list&&li');\\nfor (let i in list) {\\n    d.push({\\n        title: parseDomForHtml(list[i], 'a&&title'),\\n        desc: parseDomForHtml(list[i], 'em&&Text'),\\n        pic_url: parseDom(list[i], 'img&&data-src'),\\n        url: parseDom(list[i], 'a&&href'),\\n        col_type: 'movie_3'\\n    })\\n}\\nsetResult(d)\"},{\"name\":\"二级h3\",\"path\":\"h3\",\"rule\":\"var d = [];\\nvar html = getResCode();\\n\\nd.push({\\n    desc:'330&&float',\\n\\t\\tcol_type: 'x5_webview_single'\\n});\\n\\nvar arts = parseDomForArray(html,'body&&.stui-pannel:has(.stui-content__playlist)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists =[];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n\\ttitle: parseDomForHtml(html, '.data,2&&Text').replace('类型：','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\\\n' + parseDomForHtml(html,'.data,1&&Text').substring(0, 15)+'\\\\n'+parseDomForHtml(html, '.data&&Text').substring(0, 15),\\n\\tdesc:parseDomForHtml(html,'.detail-sketch||.data,3||#desc&&Text'),\\n\\tpic_url: parseDom(html, '.lazyload&&data-original'),\\n\\turl: fm,\\n\\tcol_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\\\d+)集/, '$1').replace('第', '').replace('期', ''),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), '.fed-list-info&&li');\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], '.fed-list-title&&Text'),\\n       desc: parseDomForHtml(list[j], '.fed-text-center&&Text'),\\n       img: parseDom(list[j], 'a&&data-original')+'@Referer=',\\n       url: parseDom(list[j], 'a&&href')\\n  });\\n}\\nsetResult(d)\"},{\"name\":\"二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nd.push({\\n    desc:'330&&float',\\n\\t\\tcol_type: 'x5_webview_single'\\n});\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nd.push({\\n    title: parseDomForHtml(html, '.data,0&&Text').replace('地区：', '  ').replace('年份：', '  ') + '\\\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 15) + '\\\\n' + parseDomForHtml(html, '.data,2&&Text'),\\n    desc: parseDomForHtml(html, '.data,3&&Text'),\\n    pic_url: parseDom(html, '.lazyload&&data-original'),\\n    url: fm,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nvar arts = parseDomForArray(html, 'body&&.myui-panel-box:has(.myui-content__list)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\\n}\\n\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\n\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text'),\\n            url: parseDom(list[j], 'a&&href')+lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\ntry {\\n    setTabs(tabs, MY_URL);\\n    setLists(lists, getVar(MY_URL, '0'));\\n} catch (e) {}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"字符串处理工具\",\"path\":\"stringtool\",\"rule\":\"js:\\nconst matchList  = {\\n  // \\\"<\\\":\\\"&lt;\\\",\\n  // \\\">\\\": \\\"&gt;\\\",\\n  // \\\"&\\\": \\\"&amp;\\\",\\n  // '\\\"': \\\"&quot;\\\",\\n  // \\\"'\\\": \\\"acute;\\\",\\n  \\\" \\\": \\\"&nbsp;\\\",\\n  \\\"\\\\n\\\":\\\"<br>\\\"\\n}\\n// 字符过滤器\\nfunction htmlEscape(text){\\n  let regStr = '(' + Object.keys(matchList).toString() + ')'\\n  regStr = regStr.replace(/,/g, ')|(')  \\n  const regExp = new RegExp(regStr, 'g')\\n  return text.replace(regExp, match => matchList[match])\\n}\\n$.exports.htmlEscape = htmlEscape\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类1\",\"path\":\"dtfl\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"一级公共模板\",\"path\":\"yiji\",\"rule\":\"function 一级() {};\\nObject.assign(一级.prototype, {\\n    constructor: 一级,\\n    test() {},\\n    获取源码(url, header) {\\n        return fetch(true_url, {\\n            headers: header || {\\n                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n            }\\n        }) // 默认统一使用PC UA\\n    },\\n    获取正确链接(page, regex) {\\n        let true_url = getMyVar('header.url', MY_URL);\\n        let 链接处理工具 = $.require('hiker://page/url-processor?rule=模板·Q')\\n        true_url = 链接处理工具\\n            .链接(true_url)\\n            .页码(page)\\n            .插入新处理规则(regex || [])\\n            .获取处理结果();\\n        return true_url;\\n    },\\n    打造分类(ruleList) {\\n        // '0' 为默认不折叠，'1' 为默认折叠\\n        const 当前折叠状态 = getMyVar('header.fold', '1')\\n\\n        // 引入动态分类依赖\\n        let htmlCategories = $.require('hiker://page/categories-header?rule=模板·Q')\\nvar getRangeColors = function(){\\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\\n      }\\n        htmlCategories.界面(d)\\n            // .分类链接(true_url)\\n            .源码(html)\\n            .页码(page)\\n            .添加分类定位(ruleList)\\n            .开启内置折叠功能() // 必须\\n            .折叠(当前折叠状态) // 必须\\n            .选中的分类颜色(getRangeColors())\\n         //   .选中的分类颜色('#098AC1')\\n            .开始打造分类();\\n    },\\n    生成片单(d, html) {\\n        let list = parseDomForArray(html, 列表);\\n        for (let j in list) {\\n            let img = parseDom(list[j], 图片);\\n            d.push({\\n                title: parseDomForHtml(list[j], 标题),\\n                desc: parseDomForHtml(list[j], 描述),\\n                img: img + '@Referer=' + img,\\n                url: parseDom(list[j], 链接) + \\\"#immersiveTheme#\\\"\\n            });\\n        }\\n    }\\n})\\n\\n$.exports = new 一级();\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类2\",\"path\":\"categories-header\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/categories-header.js\\n * 子页面链接 hiker://page/categories-header\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2705\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js\\n */\\n/**\\n * Object.assign 用法参考链接\\n *\\n * 1.https://www.daimajiaoliu.com/daima/47139a9e7100407\\n * 2.https://segmentfault.com/a/1190000011778875\\n * 3.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\\n */\\n// 利用 Symbol 实现私有变量和私有方法，外界不可访问（参考链接2）\\nconst symbolMap = {\\n    // checkParams: Symbol('checkParams'),\\n    mLayout: Symbol('mLayout'),\\n    true_url: Symbol('true_url'),\\n    mPage: Symbol('mPage'),\\n    src: Symbol('src'),\\n    ruleObjList: Symbol('ruleObjList'),\\n    mFold: Symbol('mFold'),\\n    mFoldInnerEnable: Symbol('mFoldInnerEnable'),\\n    mFoldIndex: Symbol('mFoldIndex'),\\n    mFoldLayout: Symbol('mFoldLayout'),\\n    mColor: Symbol('mColor'),\\n    mTag: Symbol('mTag'),\\n}\\n\\nfunction CategoriesHeader(color) {\\n    // 'use strict';\\n    // ...\\n    // this[symbolMap.listRule] = []\\n    // this[symbolMap.subListRule] = []\\n    this[symbolMap.mColor] = color || \\\"#FA7298\\\";\\n    this[symbolMap.ruleObjList] = []\\n    this.VARMAP = {\\n        CATEGORY: \\\"header.category\\\",\\n        URL: \\\"header.url\\\",\\n        FOLD: \\\"header.fold\\\",\\n    }\\n    this[symbolMap.mFoldLayout] = {\\n        injectIndex: 1\\n    }\\n    this[symbolMap.mFoldIndex] = 1\\n}\\n\\nObject.assign(CategoriesHeader.prototype, {\\n    // Override 构造方法，相当于 function.prototype.constructor = (...) => {...}，new function() 的时候会自动执行\\n    constructor: CategoriesHeader,\\n    // 定义私有方法\\n    VERSION: 202112011900,\\n    checkParams() {\\n        if (!this[symbolMap.mLayout]) {\\n            throw new Error(\\\"请调用 layout(d) 传入当前界面\\\")\\n        }\\n        if (!(this[symbolMap.src] || this[symbolMap.true_url])) {\\n            throw new Error(\\\"请调用 trueUrl(url) 传入当前分类的链接或调用 html(mHtml) 传入当前分类页面的源码\\\")\\n        }\\n        if (!this[symbolMap.mPage]) {\\n            throw new Error(\\\"请调用 page(mPage) 传入当前页数\\\")\\n        }\\n        if (this[symbolMap.ruleObjList].length < 1) {\\n            throw new Error(\\\"请调用相关方法传入定位规则\\\")\\n        }\\n        if (!this[symbolMap.mFold]) {\\n            this[symbolMap.mFold] = '0'\\n        }\\n    },\\n    layout(mLayout) {\\n        this[symbolMap.mLayout] = mLayout\\n        return this\\n    },\\n    trueUrl(url) {\\n        this[symbolMap.true_url] = url\\n        return this\\n    },\\n    page(mPage) {\\n        if (typeof (mPage) === 'string') {\\n            mPage = parseInt(mPage)\\n        }\\n        this[symbolMap.mPage] = mPage\\n        return this\\n    },\\n    html(mSrc) {\\n        this[symbolMap.src] = mSrc\\n        return this\\n    },\\n    list(rule) {\\n        if (this[symbolMap.ruleObjList].length > 0) {\\n            throw new Error(\\\"list(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        this[symbolMap.ruleObjList] = [{}]\\n        this[symbolMap.ruleObjList][0].listRule = rule\\n        this[symbolMap.ruleObjList][0]['一级分类'] = rule\\n        return this\\n    },\\n    subList(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"subList(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].subListRule = rule\\n        this[symbolMap.ruleObjList][0]['子分类'] = rule\\n        return this\\n    },\\n    title(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"title(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].titleRule = rule\\n        this[symbolMap.ruleObjList][0]['分类标题'] = this[symbolMap.ruleObjList][0].titleRule\\n        return this\\n    },\\n    url(rule) {\\n        if (this[symbolMap.ruleObjList].length > 1) {\\n            throw new Error(\\\"url(rule) add(ruleObj) 只能二选一！\\\")\\n        }\\n        if (!this[symbolMap.ruleObjList][0] || (!this[symbolMap.ruleObjList][0].listRule && !this[symbolMap.ruleObjList][0]['一级分类'])) {\\n            throw new Error(\\\"请先调用 list(rule) 或 一级分类(rule) 定位一级分类\\\")\\n        }\\n        this[symbolMap.ruleObjList][0].urlRule = rule\\n        this[symbolMap.ruleObjList][0]['分类链接'] = this[symbolMap.ruleObjList][0].urlRule\\n        return this\\n    },\\n    /**\\n     * 是否开启折叠功能\\n     *\\n     * @param enabled true 表示开启，false 表示禁用\\n     * @returns {CategoriesHeader}\\n     */\\n    foldInner(enabled) {\\n        if (!(typeof (enabled) === 'boolean')) {\\n            throw new Error(\\\"请传入 true 或 false 表示开启或关闭折叠功能！\\\")\\n        }\\n        this[symbolMap.mFoldInnerEnable] = enabled\\n        return this\\n    },\\n    /**\\n     * 从第 index 行开始折叠\\n     *\\n     * @param index 开始折叠的行数\\n     * @returns {CategoriesHeader}\\n     */\\n    foldIndex(index) {\\n        if (!(typeof (index) === 'number')) {\\n            throw new Error(\\\"开始折叠行请传入数字！\\\")\\n        }\\n        if (index < 1) {\\n            throw new Error(\\\"开始折叠行请传入大于 0 的整数！\\\")\\n        }\\n        this[symbolMap.mFoldIndex] = index || 1;\\n        return this\\n    },\\n    /**\\n     * 折叠按钮的界面\\n     *\\n     * @param layout 与 d.push 结构一致，\\n     *        例：{ title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"scroll_button\\\" };\\n     *        参数采用可选覆盖模式，不写的参数则使用默认;\\n     *        比如传入 { col_type:\\\"text_1\\\" }，那最终结果就是 { title:\\\"标题1\\\", url:\\\"xxx\\\", col_type:\\\"text_1\\\" }\\n     * @returns {CategoriesHeader}\\n     */\\n    foldLayout(layout) {\\n        if (typeof layout === 'object') {\\n            let keys = Object.keys(layout)\\n            let injectIndex = layout.injectIndex || layout['折叠按钮插入行']\\n            if (layout.title || layout.url || layout.col_type || injectIndex) {\\n                for (let i = 0; i < keys.length; i++) {\\n                    const key = keys[i]\\n                    this[symbolMap.mFoldLayout][key] = layout[key];\\n                }\\n            } else {\\n                throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n            }\\n            // injectIndex 折叠按钮插入第 injectIndex 行\\n            if (injectIndex) {\\n                if (!(typeof (injectIndex) === 'number')) {\\n                    throw new Error(\\\"折叠按钮插入行请传入数字！\\\")\\n                }\\n                if (injectIndex < 1) {\\n                    throw new Error(\\\"折叠按钮插入行请传入大于 0 的整数！\\\")\\n                }\\n                if (injectIndex > this[symbolMap.mFoldIndex]) {\\n                    throw new Error(\\\"折叠按钮插入行不得大于显示折叠行数！请调用 .foldIndex(index) 或 .第几行开始折叠(index) 传入正确的显示折叠行数\\\")\\n                }\\n                this[symbolMap.mFoldLayout].injectIndex = injectIndex || 1;\\n            }\\n        } else {\\n            throw new Error(\\\"请传入正确的折叠界面元素！\\\")\\n        }\\n        return this;\\n    },\\n    // 当前是否折叠\\n    fold(isFold) {\\n        if (typeof (isFold) === 'string') {\\n            isFold = isFold === '1'\\n        }\\n        if (isFold) {\\n            this[symbolMap.mFold] = '1';\\n        } else {\\n            this[symbolMap.mFold] = '0';\\n        }\\n        return this\\n    },\\n    color(mColor) {\\n        this[symbolMap.mColor] = mColor\\n        return this\\n    },\\n    tag(mTag) {\\n        this[symbolMap.mTag] = mTag\\n        return this\\n    },\\n    add(ruleObj) {\\n        // log($.stringify(ruleObj))\\n        if (ruleObj.constructor === Array) {\\n            this[symbolMap.ruleObjList] = this[symbolMap.ruleObjList].concat(ruleObj)\\n        } else {\\n            this[symbolMap.ruleObjList].push(ruleObj)\\n        }\\n        return this;\\n    },\\n    evalJSRule(item, jsRule) {\\n        let rule = jsRule.replace(\\\"@js:\\\", \\\"\\\")\\n        rule = rule.trim()\\n        // log($.stringify(rule))\\n        let input = item\\n        if (rule.startsWith(\\\"(\\\")) {\\n            eval('result = ' + rule)\\n        } else {\\n            /**\\n             * 还原成 $.toString(...) 的最终结果，达到最终处理方式跟上面的 if 一致的目的\\n             */\\n            eval('result = ' + '(() => {' + rule + '})()')\\n        }\\n        return (result || '')\\n    },\\n    getTitle(src, category) {\\n        let title = ''\\n        let titleRule = category.titleRule || 'a&&Text'\\n        if (titleRule.startsWith(\\\"@js:\\\")) {\\n            title = this.evalJSRule(src, titleRule)\\n        } else {\\n            title = parseDomForHtml(src, titleRule)\\n        }\\n        return title || \\\"\\\";\\n    },\\n    getUrl(src, category) {\\n        let url = ''\\n        let urlRule = category.urlRule || 'a&&href'\\n        if (typeof urlRule === 'object') {\\n            let mUrlRule = urlRule.rule || urlRule['解析规则'] || 'a&&href';\\n            if (mUrlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, mUrlRule);\\n            } else {\\n                let parse = parseDom;\\n                if (urlRule.parseOption) {\\n                    switch (urlRule.parseOption) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                } else if (urlRule[\\\"解析方法\\\"]) {\\n                    switch (urlRule[\\\"解析方法\\\"]) {\\n                        case \\\"parseDom\\\":\\n                        case \\\"pd\\\":\\n                            parse = parseDom;\\n                            break;\\n                        case \\\"parseDomForHtml\\\":\\n                        case \\\"pdfh\\\":\\n                            parse = parseDomForHtml;\\n                            break;\\n                        default:\\n                            parse = parseDom;\\n                    }\\n                }\\n                url = parse(src, mUrlRule);\\n            }\\n            if (urlRule.dealUrl) {\\n                url = urlRule.dealUrl(url)\\n            } else if (urlRule['二次处理']) {\\n                url = urlRule['二次处理'](url)\\n            }\\n        } else {\\n            if (urlRule.startsWith(\\\"@js:\\\")) {\\n                url = this.evalJSRule(src, urlRule);\\n            } else {\\n                url = parseDom(src, urlRule);\\n            }\\n        }\\n        return url || \\\"\\\";\\n    },\\n    build() {\\n        // 检测是否传入需要的参数\\n        this.checkParams()\\n        // 每一个分类的唯一标识\\n        let mTag = this[symbolMap.mTag] || \\\"\\\"\\n        //翻页 需要根据实际替换\\n        const html = this[symbolMap.src] || request(this[symbolMap.true_url])\\n        const empty = \\\"hiker://empty\\\"\\n        //获取列表\\n        const categories = []\\n        this[symbolMap.ruleObjList].map(ruleObj => {\\n            let list = []\\n            let listRule = ruleObj.listRule || ruleObj[\\\"一级分类\\\"]\\n            if (listRule.startsWith(\\\"@js:\\\")) {\\n                // log($.stringify(listRule))\\n                list = this.evalJSRule(html, listRule)\\n            } else {\\n                list = parseDomForArray(html, listRule)\\n            }\\n            // log(list)\\n            list.map(category => {\\n                categories.push({\\n                    list: category,\\n                    subListRule: ruleObj.subListRule || ruleObj[\\\"子分类\\\"],\\n                    titleRule: ruleObj.titleRule || ruleObj[\\\"分类标题\\\"],\\n                    urlRule: ruleObj.urlRule || ruleObj[\\\"分类链接\\\"],\\n                });\\n            })\\n        })\\n\\n        // log($.stringify(categories))\\n\\n        let init_cate = []\\n        for (let i = 0; i < 20; i++) {\\n            init_cate.push(\\\"0\\\")\\n        }\\n\\n        const cate_temp_json = getMyVar(mTag + this.VARMAP.CATEGORY, JSON.stringify(init_cate))\\n        const cate_temp = JSON.parse(cate_temp_json)\\n\\n        if (this[symbolMap.mPage] === 1) {\\n\\n            categories.forEach((category, index) => {\\n\\n                // 折叠 UI\\n                if (this[symbolMap.mFoldInnerEnable] && this[symbolMap.mFoldLayout].injectIndex === (index+1)) {\\n                    let foldLayout = {\\n                        title: this[symbolMap.mFoldLayout].title || (this[symbolMap.mFold] === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>'),\\n                        url: this[symbolMap.mFoldLayout].url || $(\\\"hiker://empty#noHistory#\\\").lazyRule((params) => {\\n                            putMyVar(params.mTag + params.VARMAP.FOLD, getMyVar(params.mTag + params.VARMAP.FOLD, params.isFold) === '1' ? '0' : '1')\\n                            refreshPage(false);\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            mTag: mTag,\\n                            isFold: this[symbolMap.mFold],\\n                            VARMAP: this.VARMAP\\n                        }),\\n                        col_type: this[symbolMap.mFoldLayout].col_type || \\\"scroll_button\\\",\\n                    }\\n                    this[symbolMap.mLayout].push(foldLayout)\\n                }\\n\\n                //具体列表下的分类\\n                let sub_categories = [];\\n                if (category.subListRule.startsWith(\\\"@js:\\\")) {\\n                    sub_categories = this.evalJSRule(category.list, category.subListRule)\\n                } else {\\n                    sub_categories = parseDomForArray(category.list, category.subListRule);\\n                }\\n                if (index < (this[symbolMap.mFoldIndex] || 1)) {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                let new_cate = []\\n                                if (params.index === 0) {\\n                                    params.cate_temp.forEach((cate, index) => {\\n                                        new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                                    });\\n                                } else {\\n                                    params.cate_temp[params.index] = params.key.toString()\\n                                }\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.index === 0 ? new_cate : params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                } else if (this[symbolMap.mFold] === '0') {\\n                    sub_categories.forEach((item, key) => {\\n                        let title = this.getTitle(item, category)\\n                        let url = this.getUrl(item, category)\\n\\n                        this[symbolMap.mLayout].push({\\n                            title: key.toString() === cate_temp[index] ? '““””<b><font color=' + this[symbolMap.mColor] + '>' + title + ' </font></b>' : title,\\n                            url: $(url).lazyRule((params) => {\\n                                params.cate_temp[params.index] = params.key.toString()\\n\\n                                putMyVar(params.tag + params.VARMAP.CATEGORY, JSON.stringify(params.cate_temp))\\n                                putMyVar(params.tag + params.VARMAP.URL, input)\\n                                refreshPage(true)\\n                                return \\\"hiker://empty\\\"\\n                            }, {\\n                                cate_temp: cate_temp,\\n                                index: index,\\n                                VARMAP: this.VARMAP,\\n                                tag: mTag,\\n                                key: key,\\n                                page: this[symbolMap.mPage],\\n                            }),\\n                            col_type: 'scroll_button',\\n                        })\\n                    })\\n                    this[symbolMap.mLayout].push({\\n                        col_type: \\\"blank_block\\\"\\n                    });\\n                }\\n            });\\n        }\\n    },\\n\\n    界面(layout) {\\n        return this.layout(layout)\\n    },\\n    分类链接(trueUrl) {\\n        return this.trueUrl(trueUrl);\\n    },\\n    页码(page) {\\n        return this.page(page);\\n    },\\n    源码(html) {\\n        return this.html(html);\\n    },\\n    定位一级分类(list) {\\n        return this.list(list);\\n    },\\n    定位子分类(subList) {\\n        return this.subList(subList);\\n    },\\n    定位分类标题(title) {\\n        return this.title(title);\\n    },\\n    定位分类链接(url) {\\n        return this.url(url);\\n    },\\n    开启内置折叠功能() {\\n        return this.foldInner(true);\\n    },\\n    关闭内置折叠功能() {\\n        return this.foldInner(false);\\n    },\\n    第几行开始折叠(index) {\\n        return this.foldIndex(index);\\n    },\\n    折叠按钮样式(layout) {\\n        return this.foldLayout(layout)\\n    },\\n    折叠(fold) {\\n        return this.fold(fold);\\n    },\\n    选中的分类颜色(color) {\\n        return this.color(color);\\n    },\\n    唯一标识(mTag) {\\n        return this.tag(mTag)\\n    },\\n    添加分类定位(ruleObj) {\\n        return this.add(ruleObj);\\n    },\\n    开始打造分类() {\\n        return this.build();\\n    },\\n\\n})\\n$.exports = new CategoriesHeader();\\n$.exports\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理工具\",\"path\":\"url-processor\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+).html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*.html',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---.html)/, this.params.page + '$1')\\n                    .replace(/(---\\\\d+.html)/, this.params.page + '$1'); // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数\",\"path\":\"jxhs\",\"rule\":\"var fftt = 'Mw8giyH1CqnTz3B7VHj7MTzvcuXIErgr1D/PugFmhOWvF6WTnKV54M1uUckMlxnLIUMbZ7FiqgLuRWcbwGXhb+67fSMBdz5Vsf6zP1dv9f4hQxtnsWKqAu5FZxvAZeFv8ki+AZPvNsd/0JVRBjUHC5QmtCkVhlM/kpn/BFWtRr0H/ZHQQq4l4JDNzXnMXA0myyvLSNZWc/sIn/vWSAHU9kAbjU4qSZsSAu9by0bMwdCPDsU4ppskU39rBSPFNDBzYyvXsJhrztaabnexWz65cpcx/H34lECjupP0oLCkmODO4WZXi1C2GnAA+h1I7YDdyyvLSNZWc/sIn/vWSAHU9kBUv7gd1Qj5oRaCUU7r2I0mmFaoD3Q9RpDhmSenxUEIP7+zUU1QW0/0yvSKOLD/wrZEVUca7lD0mfnmHuCOPLg17QCC6yJ9qIcxo3Rh/YFMPKiB1xoeDNcCD97Cs8QBwhdbux6xz/HtOSlMGtu9/AWnr5tI3aX5+x8VcCVwJ/y+SXu9+l97W7KcATyE/A4fy963XgJY2zS48DLS/kiBU3Q873LlyBK4K9Q/z7oBZoTlepYzd6bnhzKgDBj5/fX1sDKHABIyMs4PqDBy1Epmzu3cXRvPGFj1xmg4sYTw/EpayyvLSNZWc/sIn/vWSAHU9qpRYwPSVaek0SQ+LoPrGP128aEqssiPJrXXIGnYsy3MmwePe41HTI6MhJlAVd+F1UkY7wLTnL4QS7GPJsBvvfYp1xWcgVqDWkR7GoNOOMNwoyRy8bMPTZJ2xeqVCEhXyL4CsuqbinNXddqoloYeAOkqzVkXD/VS903fB2lDun0pjVznHNJQFhgia6QLq2qZg9U+SVOiXOyVg2lNovINWuWfhc7+Ty7jXzR4CXArcUr2ItdtzQvj4A0229ZtBAXj1B2k8ocmCbW1+fJ4+xJTOEennAeM0zBL7Ze+W9MFZr9EoOeoToq7VEqmUEBdpKwQzpsGtGj9OLys264hCIF8Fc4dIeONwhRjuUi1Lfpm2i0swHelD1loEesCyD501H7RYzCFmPvn8znewphfbNGA5JP/fxoRrSNw+JnoOCSgLuJUg//XSvDUWNCk4IGr5YXTOSuOKLeuLncZ50H8JRU7fCY=';\\nvar ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDiwRmgTBTHWuSeJWgKHJRb9iVSn2X6OK90RfEqjkC/rIUeZMOlYpXh7zXix9HkNSurWsdOgtH46rV4Xi7EYo5Ksh0ZP9HUrZ5YHpH3pyeXMlZINa9KUhHeS6n79hjw9AlRL8ys+hzx2iDejWJBmihuJVQYjlWSgB7EAMas2+2yzBCS7H2+45+c8/PETISE+t0qXX621OW+KdysH4jBck/eV9seH/bTWaEoBMesyj/x/h6ScJQtQRavyAk+318qOcIJ+68hs502OnfsTjUgXtyXDjZ7TIcvBBIdP0ewBZpCdOxonBPMSC/QfoZBfJDV6YxXMTghGkKraKK2t+/3MUd+PwippGuO3P2jnH88FPyyx9f12Z/jKRNS+6l9fL9MbuGjr/wL73kz5E7sUEI4NTNOkZrShs/ni+qKrz4WBygFPymdAogdK4WNX2t9wb+t0+uk9ozEHo+kmifijiMQHrwsGNh++imQtlLD7hff6T7uHuY9f34N+NRhedZLNOS3aDJ6SQw96bLncC5rIk5XwLw/NejXlzWg2SDlRGyz31UArjafxA8EgsQ0weLWJn8C3+RqU8sO39MGS4yjQDG5gIa4bSUvBru7wJ6t0FTrBFRGYHeSGRAcyu7SB1CRmJ0rFgwBd59E2LLA56xPs9RUpedVUI/RoFKQlr8g0dUnP3BPtDSfkhSsIrOyyo+fD7u6wJmXzxckZYSvaJCyjvoTQR853a7y3wJ/AlB/nhdqW4QtdirczrhioAEdgZ/u0c+QtZx00QFJd+O6UWVqHQREOVdmiGdtJ+yuf05M6vr26SaegpFUR2hiEHZQYOR/+kTta2i0='\"},{\"col_type\":\"movie_3\",\"name\":\"二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar arts = pdfa(html, 'body&&.mo-movs-btns');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(pdfh(arts[i], 'Text'))\\n}\\nvar conts = pdfa(html, 'body&&.mo-movs-item');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(pdfa(conts[i], 'ul&&li'))\\n}\\nvar title = pdfh(html, '.mo-part-full&&alt');\\nd.push({\\n    title: '分类：' + pdfh(html, '.mo-cols-lays&&li,2--span&&Text') + ' | ' + pdfh(html, '.mo-cols-lays&&li,3--span&&Text') + ' | ' + pdfh(html, '.mo-cols-lays&&li,4--span&&Text') + '\\\\n' + pdfh(html, '.mo-cols-lays&&li&&Text').substring(0, 15) + '\\\\n' + pdfh(html, '.mo-cols-lays&&li,1&&Text').substring(0, 15),\\n    desc: '更新时间：' + pdfh(html, '.mo-cols-lays&&li,5&&Text').substring(0, 15),\\n    img: pd(html, '.mo-situ-pics&&data-original'),\\n    url: MY_URL,\\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\n\\nfunction setTabs(tabs, vari) {\\n    d.push({\\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\\\"color: #FF0000\\\">逆序</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">正序</span></b>',\\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\n        col_type: 'flex_button'\\n    })\\n    for (var i = 0; i < tabs.length; i++) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\n            url: url,\\n            col_type: 'flex_button'\\n        })\\n    }\\n}\\n\\nfunction setLists(lists, index) {\\n    var list = lists[index];\\n    if (getVar('shsort') == '1') {\\n        var list = lists[index].reverse();\\n    }\\n    for (var j in list) {\\n        d.push({\\n            title: pdfh(list[j], 'Text'),\\n            url: pd(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_3' : 'text_2'\\n        });\\n    }\\n}\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nsetResult(d);\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=569617079&s=640"},{"last_chapter_rule":"","title":"DR模板","author":"道长","version":16,"type":"tool","url":"hiker://empty","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"模板","year_url":"","find_rule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/dr模板.js');","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_3","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_3","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"规则\",\"path\":\"ruleGen\",\"rule\":\"$.exports.rule={\\\"firstHeader\\\":\\\"class\\\",\\\"last_chapter_rule\\\":\\\"\\\",\\\"title\\\":\\\"蓝莓影视B\\\",\\\"author\\\":\\\"道长\\\",\\\"url\\\":\\\"hiker://empty##https://lanmeiguojiang.com/ys\\\",\\\"version\\\":1,\\\"col_type\\\":\\\"movie_3_marquee\\\",\\\"class_name\\\":\\\"\\\",\\\"type\\\":\\\"video\\\",\\\"class_url\\\":\\\"\\\",\\\"area_name\\\":\\\"\\\",\\\"area_url\\\":\\\"\\\",\\\"sort_name\\\":\\\"\\\",\\\"year_name\\\":\\\"\\\",\\\"sort_url\\\":\\\"影视\\\",\\\"year_url\\\":\\\"\\\",\\\"find_rule\\\":\\\"js:\\\\nrequire(config.模板);\\\\n依赖检测();\\\\n一级书签('$detailUrl','$system');\\\\n//一级书签('$detailUrl',true);\\\",\\\"search_url\\\":\\\"/ys/index.php/vod/search/page/fypage/wd/**.html\\\",\\\"group\\\":\\\"#️⃣道长DR\\\",\\\"searchFind\\\":\\\"js:\\\\nrequire(config.自动匹配);\\\\n自动搜索('$sflag');\\\",\\\"detail_col_type\\\":\\\"movie_1\\\",\\\"detail_find_rule\\\":\\\"js:\\\\nrequire(config.自动匹配);\\\\nrequireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \\\\n自动二级(lazy);\\\\n//自动二级();\\\",\\\"sdetail_col_type\\\":\\\"movie_1\\\",\\\"sdetail_find_rule\\\":\\\"*\\\",\\\"ua\\\":\\\"mobile\\\",\\\"preRule\\\":\\\"var ua='$ua';\\\\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');\\\",\\\"pages\\\":\\\"[]\\\",\\\"icon\\\":\\\"https://lanmeiguojiang.com/tubiao/ke/94.png\\\"}\"}]","proxy":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/=>https://gitcode.net/qq_32394351/dr/-/raw/master/js/","icon":"https://lanmeiguojiang.com/tubiao/more/328.png"},{"last_chapter_rule":"","title":"CMS模板","author":"道长","version":10,"type":"tool","url":"hiker://empty","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"模板","year_url":"","find_rule":"js:\n//eval(JSON.parse(fetch('hiker://page/homeIndex')).rule);\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/cms.js');","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"规则\",\"path\":\"ruleGen\",\"rule\":\"$.exports.rule={\\\"last_chapter_rule\\\":\\\"\\\",\\\"title\\\":\\\"奇飞\\\",\\\"author\\\":\\\"道长\\\",\\\"url\\\":\\\"hiker://empty##http://mkk.gotka.top/api.php/v1.vod#pg=fypage\\\",\\\"version\\\":1,\\\"col_type\\\":\\\"movie_3_marquee\\\",\\\"class_name\\\":\\\"\\\",\\\"type\\\":\\\"video\\\",\\\"class_url\\\":\\\"\\\",\\\"area_name\\\":\\\"\\\",\\\"area_url\\\":\\\"\\\",\\\"sort_name\\\":\\\"\\\",\\\"year_name\\\":\\\"\\\",\\\"sort_url\\\":\\\"影视\\\",\\\"year_url\\\":\\\"\\\",\\\"find_rule\\\":\\\"js:\\\\nrequire(config.模板);\\\\n一级();\\\",\\\"search_url\\\":\\\"hiker://empty##?wd=**&pg=fypage&ac=videolist\\\",\\\"group\\\":\\\"#️⃣道长资源\\\",\\\"searchFind\\\":\\\"js:\\\\nrequire(config.模板);\\\\n搜索一级();\\\",\\\"detail_col_type\\\":\\\"text_5\\\",\\\"detail_find_rule\\\":\\\"js:\\\\nrequire(config.模板);\\\\n二级();\\\",\\\"sdetail_col_type\\\":\\\"text_5\\\",\\\"sdetail_find_rule\\\":\\\"*\\\",\\\"ua\\\":\\\"mobile\\\",\\\"preRule\\\":\\\"var ua='$ua';\\\\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');\\\",\\\"pages\\\":\\\"[]\\\",\\\"icon\\\":\\\"https://lanmeiguojiang.com/tubiao/ke/4.png\\\"}\"}]","proxy":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/=>https://gitcode.net/qq_32394351/dr/-/raw/master/js/","icon":"https://lanmeiguojiang.com/tubiao/more/328.png"},{"last_chapter_rule":"","title":"Ai合集","author":"","version":20,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://www.ainav.cn/';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"迷鹿导航","author":"鸭鸭","version":2,"type":"tool","url":"hiker://empty##https://404l.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=迷鹿导航"},{"last_chapter_rule":"","title":"猫脱壳","author":"Taoist","version":3,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('ov3IMWkLXRNrFcU9zab5LxqxSoXUWozeOn/YEB/UXhOkS6JqbE32UmyLLdwTzrpWyZqf0Y8TZDZ5UBhxMEBpPDkjdUFXQdXOUZlbm+oSQQvHgy2YgaQzHyHRi9Z3ONOnVPEWFw9Nccn4Tin9x6V0WHhRNPMxafrXRC91nkr7txg8tLE+glzaYkeP2KJNHEp8UrB+iibTn0WcxRedb6nryVXQu4Y9jjlb5u7zgiPyvFWL9LwntGEq3MIm6U5eoO2nFY9d4aIq6tpcjbWwj/VGfhDNmGiIFifsTVp3tEMQPy0sEEMCcMIEtT2fvSQf+PpqfAb5mykoLgoJF4Re+PGAkdneOV6ZMpLS/ycRr7oMAxHOW9yWvbTMNwwmb+GTjpO0yiFEVKaUgZoCdzl070r50dWTDWfEouMDN7HkRpZNSy4XD70RBWLTsLGtM7vi7jPQaIB9Sj7/wYOccApSGvdA2h1HUtWMKxMubiffOGHzXBi4fNJxGFHPSUrSve4l2FvK/qS/O1mAj4Z4d9Z8XODmovQs2DL78hZm8TaXSZVFyJp0FBARlKZW6jOiXY9lodzNrBBEDoRG69GX+YC9pFWn4CLdVGNbUCVnefRCpxUQI7WU6qXHtQ2QC9KlTS1H8nIibsZ9jEpwgN6zor0QB7dVmg2jgz1VEJT5V4ilrfHpnFrEdUap0V9oXpJ5HHKjJnUsCKpKwCH2dQp18PMvl4AofPpnISe9Y9uv/joXTGkvGLsV6UpM0ieJaT+hEnddlNMaIZ96eYVaDOOHTWTd3OIdaEcBYM6/eijK2nsrXt/3G2pbjQ8Q4xgNfIHE5hTmOmSNAi7sEKcP/3YJLL+tZNgU+1eifNQnKcHOvQDmi9an2EZUqvn1IOyiUrF1IrssZmMCjXtMdxC68a8JRbE69+FRffR1MnoHZ+LEWz2npJKgIW6qKmXxfX6qxyGmGZ9AXlxEoiB2PlkQxcTkvtVsP6vnvYdVkfRnOavEnKHKsuVvcPD6ZyEnvWPbr/46F0xpLxi72FCNvr0Zq3r3weOsLwmFtDjD5vJuGZoGSRW1yY4wvoiSj+hN1RuooW6W0+mYb4fBgNAP1GTwZ6W7k/HzSJlC+83SK43fjDHYAdbtSAda60G1B23mTcCeDZED3j7L4YMbyMj03Miqh4b7wMKYZAa+SgvrH/c/VJe55PJHc6t3/OgCruoFQdCZiIvYxFvVmKvKr7/9lmwxLXm1vE3s22+SfGkLiavUCErU3us/GUV9uxkSuUgXyV7L77sxb0PXXemwpH9PVscz25ezEh3G9L09jLCXdWT2525dPg9f/6xml/hNq34vKfJrTNtxKod/A+My1YwvynlMsiPjB2zSOpDukXW4SWwqkH+cz5MZELXB1EL+KCy+OKi3ui7dHXyEMBQPpyD4gCsxxSsL44hvrNJHCSYoTNMJwsylDT6HPAyseQuk03ObmZorcpfwVbCmO0YUSAyquxNPvzTs26QRFGWf5MPawXnaLgXMSFwu6s/F6oMulmTLLwc0El+pvhJG/aTjJ9ZI2krKOyLZhSngp51cq1OsUkVb1xUBd4j5WHfnClADwsx+K8CxRfVO6/wppx1aoAAWJJpwezdKRFSab8SiqyQLIzgrceJ7OfU/l8zYMXZZKZR+YtWIoA8To+TYubeC3r5YDA3uXMBwlcqXjRBy7GCu9UkH8g9yidkOD/LbsJu5HjKSyvYsJImHRADWtpKL2R68l7RyElq1+ZpKr6EUbV9MrS6Dtgk49csuCxsUo8lKfNe96noczYKxy5fwmZy9Mcm8S8Wty8LXHGKRLJgqqs8NcR0GvtICBM1niVgxJ+0dYIgxHi1ZFWPvU3eOYvYrDiDc9js8wp7kzMFon/qR+/+CcMGkOKmUaJ7aHpCSTMLA62bhiWviwJzPUYOOLGknAQX1a0akqN9StpybxuFZ/8pGw7gXs0XDG2d8jJUG5ebA2+1FRQ990fmTcZAGjscSkmmVDkqzel84qEXcrYO6wztqzG+6fJAAkMqkGxnjj8R98PuchkI9mRM1GbBGuGmN3HNnk/v8O8ulsXbYF/CmM3fwBqjfj9d+N4Nk4czEACtxkP15XpVj+y3qfAhsjpFtUR9Gz6/ufkXuZii+soLe74aGeUj97R/wA5QAiaPxWoxYxlk0ASwATSECXQGcRxJ7nvjUNicXSrR6jSJ6x5nqPwBSMn2rfh0f8z9xGVsaGKJ712rJSHJmcI/4MyRWeR+BZgQJjhs1W0B+lsLQpvi02bqvfto0HwYnUMKyh4xLHf8EF+wWCvpDGaYTRX7bpnSHYR/9rPtTfATodiCxMI6Sg9ggSGHT6Jb2BSbxV7as94VMPujKmhL/Bc5b1S639ZEuFG6MSRxA+byNr8mdkx9c2Q9hHmS4iucrruIDE6YG9B/p0T3EBP1BjbuIHTkO90z2+P1O8P7YtDzWGQbKY+tXnKgsJQyW7aDWAqRLt184afP4/nLjtwCVFTLMZA4l5wygsKhwB7z2/BlKR6WXKS4qqA01nswzkdPszzwlfZX9t/n88AyJGs9ehQCnNPlNHpIguK8zBbf7AtL4TjkSUgJ6ZJiAI4mxKTTys+Ac+nbR5sdhvp8OG0xcn6EkAehkzPkr34HwJnTaKRrfVtvv1Z7XfKIgdj5ZEMXE5L7VbD+r572caZYPpgoHVjEg2vN0CQtAHspgiZ/nksquzxik1pSdV8GqtPJmvmPY1LmZyJX7LS6jOh4C6AO+NA2T/yxVSBV5bfFvXlmNbzvgsMfbAn9xJwt4KBPoJh7aAovehE1O9X8GonYaKq6qBrs6wNvZlX050ny/dIiCLr+GPKwWhprA6u5Ntllm40AVJe+9PAveWt2iLeJqhJKjiihRO5wAF0DoL15onbFKFbFb0Ik7qgVLSigow8jgqouzBJddPNu3NGhhJCd9zjqzEix6yWfqiign');","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/89.png"},{"last_chapter_rule":"","title":"工具大全","author":"小棉袄🌞","version":1,"type":"tool","url":"hiker://empty##","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet a = `\n万能转换@https://convertio.co/zh/\nPDF大全@https://www.ilovepdf.com/zh-cn\n手写模拟@http://www.beautifulcarrot.com/\n短链接ffff@https://ffff.im/\n文字识别@https://catocr.com/#/\n云文件查看@https://www.fviewer.com/zh\n`;\nlet arr = a.split(\"\\n\").filter(it => it.length > 1);\nfor (let it of arr) {\n    let b = it.split(\"@\");\n    d.push({\n        title: b[0],\n        url: \"hiker://page/x5?u=\" + base64Encode(b[1]),\n        col_type: \"\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n}\n\nd.push({\n    col_type: \"line_blank\"\n});\n\nlet a2 = `\n图片处理@https://www.iloveimg.com/zh-cn\n图床1@https://locimg.com/\n图床2@http://upvuimages.l-api.com/\n图床3@https://www.img.one/\nSVG编辑@http://www.zuohaotu.com/svg/\n图片压缩@https://tinypng.com/\nUnsplash@https://unsplash.dogedoge.com/\n随机图片@https://imgapi.cn/wiki.html\n图片配诗@https://shipian.danieljia.work/\n图片搜索@http://duososo.com/index.php\n`;\nlet arr2 = a2.split(\"\\n\").filter(it => it.length > 1);\nfor (let it of arr2) {\n    let b = it.split(\"@\");\n    d.push({\n        title: b[0],\n        url: \"hiker://page/x5?u=\" + base64Encode(b[1]),\n        col_type: \"\",\n        desc: \"\",\n        pic_url: \"\",\n        extra: {\n            longClick: [\n                {\n                    title: \"访问网页\",\n                    js: \"'web://\" + b[1] + \"'\"\n                }\n            ]\n        }\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"X5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"float&&100%\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        //floatVideo: true,\\n        canBack: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"图片提取器","author":"小棉袄🌞","version":3,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval($.require(\"hiker://page/pic\"));","searchFind":"","search_url":"","group":"⑥③🛠️工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"pic\",\"path\":\"pic\",\"rule\":\"js:\\nvar d = [];\\nlet x = getItem(\\\"x\\\", \\\"否\\\");\\nlet desc = x == \\\"是\\\" ? \\\"float&&300\\\" : \\\"float&&1\\\";\\nd.push({\\n    col_type: \\\"x5_webview_single\\\",\\n    url: \\\"\\\",\\n    desc: desc,\\n    title: \\\"\\\",\\n    extra: {\\n        js: $.toString(() => {\\n            function getimgs() {\\n                var videoElements = document.getElementsByTagName(\\\"img\\\");\\n                if (videoElements == null) {\\n                    return [];\\n                }\\n                let urls = [];\\n                for (let i = 0; i < videoElements.length; i++) {\\n                    if (videoElements[i].width > 70 && videoElements[i].height > 70) {\\n                        const src = videoElements[i].src;\\n                        if (src == null || src.length < 5 || urls.includes(src) || src.indexOf(\\\"data:\\\") == 0) {\\n                            continue;\\n                        }\\n                        //log(src);\\n                        urls.push(new URL(src).toString());\\n                    }\\n                }\\n                return urls;\\n            }\\n\\n            function check() {\\n                try {\\n                    let urls = getimgs();\\n                    //fba.log(\\\"getimgs：\\\" + urls.length);\\n                    if (window.checkedUrls == null) {\\n                        window.checkedUrls = [];\\n                    }\\n                    let checkedUrls = window.checkedUrls;\\n                    urls = urls.filter(it => {\\n                        return !checkedUrls.includes(it)\\n                    });\\n\\n                    if (urls.length > 0) {\\n                        let pics = urls.filter(it => it != null && it != \\\"\\\")\\n                            .map(it => {\\n                                let u = fba.getHeaderUrl(it);\\n                                let uu = u.split(\\\";\\\");\\n                                let pic = u;\\n                                if (uu.length > 1) {\\n                                    let u1 = uu[0];\\n                                    let u2 = uu[1].slice(1, -1).split(\\\"&&\\\");\\n                                    let referer = null;\\n                                    let ua = null;\\n                                    let cookie0 = null;\\n                                    for (let ii of u2) {\\n                                        let it2 = ii.split(\\\"@\\\");\\n                                        if (it2[0] == \\\"Referer\\\") {\\n                                            referer = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                        if (it2[0] == \\\"User-Agent\\\") {\\n                                            ua = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                        if (it2[0] == \\\"Cookie\\\") {\\n                                            cookie0 = it2[1].replace(/；；/g, \\\";\\\");\\n                                        }\\n                                    }\\n                                    pic = u1;\\n                                    if (referer) {\\n                                        pic = pic + \\\"@Referer=\\\" + referer;\\n                                    }\\n                                    if (ua) {\\n                                        pic = pic + \\\"@User-Agent=\\\" + ua;\\n                                    }\\n                                    if (cookie0) {\\n                                        pic = pic + \\\"@Cookie=\\\" + cookie0\\n                                    }\\n\\n                                } else {\\n                                    pic = it;\\n                                }\\n                                return {\\n                                    pic: pic,\\n                                    url: u\\n                                }\\n                            });\\n                        fba.log(pics.length + \\\"\\\");\\n                        fba.parseLazyRuleAsync($$$().lazyRule((urls) => {\\n                            //log(urls);\\n\\n                            let arr = urls.map(it => {\\n                                return {\\n                                    title: \\\"\\\",\\n                                    url: it.pic,\\n                                    pic_url: it.pic,\\n                                    col_type: \\\"card_pic_3\\\",\\n                                    extra: {\\n                                        cls: \\\"pics\\\"\\n                                    }\\n                                }\\n                            });\\n                            addItemBefore(\\\"pic_line\\\", arr);\\n                        }, pics), function() {\\n\\n                        });\\n                        for (let it of urls) {\\n                            window.checkedUrls.push(it);\\n                        }\\n                    }\\n\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                }\\n                setTimeout(check, 300);\\n            }\\n            check();\\n        })\\n    }\\n});\\n\\n\\nd.push({\\n    title: \\\"提取\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"i\\\", input);\\n        deleteItemByCls(\\\"pics\\\");\\n        refreshX5WebView(input);\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入网页地址\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"i\\\", \\\"\\\")\\n    }\\n});\\nd.push({\\n    title: \\\"显示网页组件：\\\" + x,\\n    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n        let x = getItem(\\\"x\\\", \\\"否\\\");\\n        let next = x == \\\"否\\\" ? \\\"是\\\" : \\\"否\\\";\\n        setItem(\\\"x\\\", next);\\n        let desc = x == \\\"否\\\" ? \\\"float&&300\\\" : \\\"float&&1\\\";\\n        updateItem(\\\"pic_tip\\\", {\\n            title: \\\"显示网页组件：\\\" + next\\n        });\\n        refreshX5Desc(desc);\\n        return \\\"hiker://empty\\\"\\n    }),\\n    col_type: \\\"text_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        id: \\\"pic_tip\\\"\\n    }\\n});\\n\\nd.push({\\n    col_type: \\\"line_blank\\\",\\n    extra: {\\n        id: \\\"pic_line\\\"\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"js:requireCache(config.vod,24);\nvar 列表 = 'body&&.sort-item';\nvar 列表名 = 'body&&a';\n章节.A()","title":"友播TV","author":"离渊","version":1,"type":"video","url":"https://youbotv.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst Color = \"#11999e\";\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*?)\\.html/)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, '#main&&.scroll-content')\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_RULE.group, \"0\")\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color:' + Color + '\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color:' + Color + '\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\n                        putVar(MY_RULE.url, input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n\n//一级页面\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href')+ '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\neval(JSON.parse(request('hiker://page/module-search-item?rule=模板·Q')).rule)","search_url":"https://youbotv.cn/index.php/vod/search/page/fypage/wd/**.html","group":"⑥测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nconst Color = \"#11999e\";\n\nvar title = pdfh(html, 'h1&&Text');\nvar des_desc = pdfh(html,'.vod_content&&Text').replace('展开全部', '').replace('　　', '');\n//二级新样式by顺承天意（已封装断插，变量名lazy）\nconst hd = require(\"http://hiker.nokia.press/hikerule/rulelist.json?id=2968&v=1\");\nhd(d, {\n    //显示的白色大字\n    大字: title,\n    //片名搜索用\n    片名: title,\n    //图片一定不要加Referer\n    图片: pd(html, '.lazyload&&data-src'),\n    //描述里用<br>换行\n    描述: pdfh(html, '.video-info-items,0&&Text').substring(0, 35) + '<br>' + pdfh(html,\n\t\t'.video-info-items,1&&Text').substring(0, 35) + '<br>简介：' + des_desc,\n});\n//线路名列表的定位\nvar tabs = parseDomForArray(html,'body&&.tab-item');\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\n\n\nvar laz = $(\"\").lazyRule(() => {\n    var player=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\nvar jsurl = player.url;\n if (player.encrypt == '1') {var jsurl = unescape(jsurl);} else if (player.encrypt == '2') {var jsurl = unescape(base64Decode(jsurl));}else{jsurl};\nvar from=player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var jx = 'https://jx.youbotv.cn/?url=';\n        var play = jx + jsurl+'&next=';\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n});\nfor (var i = 0; i < conts.length; i++) {\n    var icon_s = 'http://82.156.222.77/weisyr/icon/';\n    if (getVar('shsort', '1') == '1') {\n        var list = parseDomForArray(conts[i], 'body&&a');\n        var avatar = icon_s + '反序.svg'\n    } else {\n        var list = parseDomForArray(conts[i], 'body&&a').reverse();\n        var avatar = icon_s + '正序.svg'\n    }\n    var line = pdfh(tabs[i], 'span&&Text');\n\n    if (list != null) {\n        d.push({\n            title: '<span style=\"color:' + Color + '\">' + line + '</span>' + '\\t\\t' + '<small>' + (i + 1) + '／' + conts.length + '          ',\n            url: \"hiker://empty@lazyRule=.js:putVar('shsort', getVar('shsort','1')=='1'?'0':'1');refreshPage();'hiker://empty'\",\n            col_type: 'avatar',\n            img: avatar\n        });\n\n        for (var j = 0; j < list.length; j++) {\n            var jm = pdfh(list[j], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\n            var url = pd(list[j], 'a&&href');\n            if (list.length <= 2) {\n                var col = 'text_2'\n            } else {\n                var col = jm.length > 6 ? 'text_2' : 'text_4'\n            }\n            d.push({\n                title: jm,\n                url: url + laz,\n                col_type: col,\n                extra: {\n                    id: url,\n                    blockRules: [\n                        \".jpg\",\n                        \".jpeg\",\n                        \".png\",\n                        \".mp4\",\n                        \".m3u8\",\n                        \".gif\"\n                    ]\n                }\n            });\n        }\n    }\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n    categoryGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',\n})","pages":"[]","icon":"https://youbotv.cn/upload/mxcms/20220218-1/572c640ad257b564a1e9a2042379e120.png"},{"last_chapter_rule":"","title":"武侠漫画","author":"Zruiry&仰望星空","version":0,"url":"https://m.wuxiamh.com/list/fyAll/fypage/[firstPage=https://m.wuxiamh.com/list/fyAll/];get;UTF-8;{User-Agent@Mobile}","col_type":"movie_3","class_name":"热血&搞笑&动作&科幻&生活&冒险&架空&竞技&都市&恋爱&霸总&剧情&悬疑&古风&穿越&玄幻&神魔&校园&百合&励志&战争&爆笑&真人&恐怖&格斗&同人&魔幻&修真&惊险&社会&治愈&游戏&奇幻&脑洞&暗黑&恶搞&唯美&浪漫&纯爱&后宫&灵异&防疫&吸血&耽美&蔷薇&小说改编&历史&武侠&萝莉&漫改&运动","class_url":"rexue&gaoxiao&dongzuo&kehuan&shenghuo&maoxian&jiakong&jingji&dushi&lianai&bazong&juqing&xuanyi&gufeng&chuanyue&xuanhuan&shenmo&xiaoyuan&baihe&lizhi&zhanzheng&baoxiao&zhenren&kongbu&gedou&tongren&mohuan&xiuzhen&jingxian&shehui&zhiyu&youxi&qihuan&naodong&anhei&egao&weimei&langman&chunai&hougong&lingyi&fangyi&xixie&danmei&qiangwei&xiaoshuogaibian&lishi&wuxia&luoli&mangai&yundong","area_name":"日更&青春&萌系&御姐&复仇&新作&虐心&精品&推理&震撼&僵尸&轻松&宠物&职场&未来&异世界&惊奇&宫廷&爽流&逆袭&仙侠&机甲&美食&明星&宫斗&日常&感动&史诗&家庭&正剧&段子&温馨&乡村&高智商&悬疑推理&机智&召唤兽&装逼&战斗&豪门&异能&神话&重口味&血腥&逗比&丧尸&娱乐圈&科技&烧脑&侦探推理&其它&末世&体育&权谋&商战&内涵&欢乐向&爱情&轻小说&音乐舞蹈&性转换","area_url":"rigeng&qingchun&mengxi&yujie&fuchou&xinzuo&nuexin&jingpin&tuili&zhenhan&jiangshi&qingsong&chongwu&zhichang&weilai&yishijie&jingqi&gongting&shuangliu&nixi&xianxia&jijia&meishi&mingxing&gongdou&richang&gandong&shishi&jiating&zhengju&duanzi&wenxin&xiangcun&gaozhishang&xuanyituili&jizhi&zhaohuanshou&zhuangbi&zhandou&haomen&yineng&shenhua&zhongkouwei&xuexing&doubi&sangshi&yulequan&keji&shaonao&zhentantuili&qita&moshi&tiyu&quanmou&shangzhan&neihan&huanlexiang&aiqing&qingxiaoshuo&yinyuewudao&xingzhuanhuan","sort_name":"漫画岛&正能量&性转&耽美人生&故事漫画&快看漫画&韩国漫画&黑道&绘本&伦.理&青年&逆转&重生&古装&宅斗&偶像&暧昧&幻想&奇闻&异族&独家&女强&美型&言情&种田&魔王&福利&血族&狐仙&悬疑、惊悚&兽耳&鬼怪&少儿&小僵尸&狠西游&西游记&青青树&病娇&甜宠&男神&大女主&叛逆&怪谈&生化&宠爱&探案&怀旧&情感&绅士&美少女&乙女&墨瞳&猎奇&日漫&末日&系统&修仙&神仙&怪物&神豪&虐恋&霸总.都市&妖怪&主仆&高甜","year_name":"四格&东方&神鬼&修真恋爱架空&轻松搞笑&同人漫画&少女爱情&武侠格斗&彩虹&侦探&魔法&纠结&婚姻&搞笑喜剧&恐怖灵异&伪娘&其他&宅系&恋爱生活&爆笑喜剧&生活漫画&战争漫画&其他漫画&科幻魔幻&竞技体育&百合女性&西方魔幻&少女&AA&舰娘&节操&橘味&惊悚&手工&音乐&机战&颜艺&智斗&有妖气&秀吉&改编&少年&总裁&热血冒险&致郁&恐怖悬疑&恋爱耽美&高清单行","sort_url":"manhuadao&zhengnengliang&xingzhuan&danmeirensheng&gushimanhua&kuaikanmanhua&hanguomanhua&heidao&huiben&lunli&qingnian&nizhuan&zhongsheng&guzhuang&zhaidou&ouxiang&aimei&huanxiang&qiwen&yizu&dujia&nvqiang&meixing&yanqing&zhongtian&mowang&fuli&xuezu&huxian&xuanyijingsong&shouer&guiguai&shaoer&xiaojiangshi&henxiyou&xiyouji&qingqingshu&bingjiao&tianchong&nanshen&danvzhu&panni&guaitan&shenghua&chongai&tanan&huaijiu&qinggan&shenshi&meishaonv&yinv&motong&lieqi&riman&mori&xitong&xiuxian&shenxian&guaiwu&shenhao&nuelian&bazongdushi&yaoguai&zhupu&gaotian","year_url":"sige&dongfang&shengui&xiuzhenlianaijiakong&qingsonggaoxiao&tongrenmanhua&shaonvaiqing&wuxiagedou&caihong&zhentan&mofa&jiujie&hunyin&gaoxiaoxiju&kongbulingyi&weiniang&qita2&zhaixi&lianaishenghuo&baoxiaoxiju&shenghuomanhua&zhanzhengmanhua&qitamanhua&kehuanmohuan&jingjitiyu&baihenvxing&xifangmohuan&shaonv&AA&jianniang&jiecao&juwei&jingsong&shougong&yinyue&jizhan&yanyi&zhidou&youyaoqi&xiuji&gaibian&shaonian&zongcai&rexuemaoxian&zhiyu2&kongbuxuanyi&lianaidanmei&gaoqingdanxing","find_rule":".col_3_1&&li;mip-img&&alt;mip-img&&src;a,-1&&Text;a&&href","searchFind":".UpdateList&&.itemBox;mip-img&&alt;a&&href;a,-1&&Text;.itemTxt--a&&Text;mip-img&&src","search_url":"https://m.wuxiamh.com/search/?keywords=**&page=fypage;get;UTF-8;{User-Agent@Mobile}","titleColor":"#ff871f78","group":"⑥漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.img&&mip-img&&src');\n// 获取更新时间\nvar des_time = parseDomForHtml(html,'body&&dl,-1&&Text').replace('新','');\n// 获取更新状态\nvar des_update = parseDomForHtml(html,'body&&dl&&Text').replace('新','');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&p&&Text');\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取分类\nvar des_class = parseDomForHtml(html,'body&&dl,1&&Text');\n\nd.push({\n\ttitle: des_update+'\\n'+des_time+'\\n'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nfor (var i = conts.length-1; i >0   ; i--) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var num1 = input.split(\".html\")[0].split(\"/\")[5];var htmls = fetch(input,{headers:{\"content-type\":\"UTF-8\",\"User-Agent\":\"Mobile\"},method:\"GET\"});var num2 = parseDomForHtml(htmls,\"body&&.p10&&span,-2&&Text\");var pics=[];for (var k = 0;  k < num2 ;k++) {pics.push(\"https://res7.wuxiamh.com/image/view/\"+num1+\"/\"+k+\".webp\")};\"pics://\"+pics.join(\"&&\")'\n});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"#ff871f78"},{"title":"有妖气漫画","author":"Zruiry","version":0,"url":"https://m.u17.com/wap/ComicList/commonComicListNew?page=fypage&argname=fyAll","col_type":"movie_3","class_name":"人气作品&精品推荐&热力点击","class_url":"argname2&argname3&argname4","area_name":"完结漫画&全彩漫画","area_url":"argname5&argname6","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".zp-list2&&li;.comic-title&&Text;img&&src;.comic-number&&Text;a&&href.js:input.replace(\"c/\",\"wap/comicChapter/getChapters\\?comic_id=\").replace(\"\\.html\",\"\")","searchFind":".zp-list2&&li;.comic-title&&Text;a&&href.js:input.replace(\"c/\",\"wap/comicChapter/getChapters\\?comic_id=\").replace(\"\\.html\",\"\");.comic-number&&Text;.comic-tag&&Text;img&&src","search_url":"https://m.u17.com/wap/Search/Search?q=**","titleColor":"#ff673ab7","group":"⑥漫画","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n//获取列表\nvar conts = parseDom(fetch(getUrl(),{}), 'body&&.comic-list&&Html');\n\nvar list = conts.match(/<a[\\s\\S]*?<\\/a>/g);\nvar list1 = conts.match(/<li[\\s\\S]*?<\\/li>/g);\nfor (var j = 0; j < list.length ; j++) {\n   if (list1[j].indexOf(\"vipIco\") > -1) {\n      var title = \"““[付费]””\" + list[j].split('>')[1].split('<')[0];\n    } else {\n      var title = list[j].split('>')[1].split('<')[0];\n    }\n\t d.push({\n     title: title,\n\t\t\t\turl: 'https://m.u17.com' + list[j].split('href=\"')[1].split('\"')[0] + '@lazyRule=.js:var res1 = {};var d1 = [];var jsHtml = fetch(input,{});var picConts = parseDom(jsHtml,\"body&&.pic-list&&Html\");var list1 = picConts.match(/https?.*?jpg/g);var pics=[];for (var k = 0; k < list1.length; k++) {pics.push(list1[k]);d1.push({title: \"\",url: list1[k],pic_url: list1[k],col_type: \"pic_1_full\"})};\"pics://\"+pics.join(\"&&\")'\n\t\t});\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_1","sdetail_find_rule":"*"},{"title":"爱米推漫画","author":"仰望星空&Zruiry","version":0,"url":"https://m.imitui.com/list/fyclass-fyarea-fyyear-fysort/?page=fypage","col_type":"movie_3","class_name":"全部&热血&玄幻&修真&古风&恋爱&穿越&都市&霸总&悬疑&搞笑&奇幻&总裁&日常&冒险&科幻&纯爱&魔幻&战争&蔷薇&武侠&生活&动作&后宫&游戏&恐怖&漫改&真人&校园&剧情&灵异&少年&推理&怀旧&情感&偶像&少女&独家&虐心&爆笑&励志&美食&复仇&彩虹&唯美&治愈&明星&脑洞&魔法&修仙&重生&仙侠&末世&异能&女尊&其它&言情&耽美&运动&宫斗&古装&美少女&神魔&历史&惊险&竞技&萌系&体育&格斗&机甲&虐恋&爽&福利&其他&小僵尸&僵尸&浪漫&金手指&御姐&战斗&恶搞&社会&权谋&青春&萝莉&同人&震撼&日漫&军阀&民国&特工&美女&间谍&暗黑&节操&经典&幽默&甜宠&神话&日本&翼纪元&条漫&LOL&种田&短篇&惊悚&四格&国漫&有趣岛&萌宠&人性&宠婚&新妻&吸血鬼&神界漫画&雪月花&梦骑士&兽耳&少儿&百合&吃鸡&枪战&特种兵&兄弟&异世&兄妹&三次元&美型&豪门&婚宠&开挂&血腥&轻松&养成&替身&男神&青青树&异世界&男穿女&魂穿&阴暗&毒鸡汤&片玉&漫画会&龙刃&喜欢&召唤&异界&狠西游&西游记&江湖&断头岛&韩漫&病娇&长篇&陈岚&爱情&女强&燃向&天上空&渡之鸟&血族&魔王&可爱&宫廷&婚恋&萌&阿衰&三角恋&前世&轮回&惊奇&侦探&欢乐向&职场&感动&架空&轻小说&颜艺&性转换&东方&耽美BL&轻松搞笑&同人漫画&校园搞笑生活&少女爱情&正剧&烧脑&装逼&神鬼&伪娘&高清单行&故事漫画&恋爱生活玄幻&西方魔幻&舰娘&宅系&商战&爽流&热血冒险&科技&温馨&家庭&婚姻&段子&内涵&机战&娱乐圈&未来&宠物&霸总恋爱玄幻&故事&音乐舞蹈&逆袭&召唤兽&科幻魔幻&纠结&伦.理&恋爱生活&新作&历史漫画&儿童&侦探推理&修真恋爱架空&手工&青年&其他漫画&致郁&史诗&秀吉&乡村&性转&婚爱&死亡&死神&少男&悬疑、惊悚&爆笑喜剧&动作格斗&改编&AA&恋爱耽美&黑道&鬼怪&丧尸&主仆&知音漫客&麦萌&逆转&大女主&暧昧&生化&奇闻&宅斗&栏目&怪谈&宠爱&幻想&异族&探案&叛逆&橘味&乙女&猎奇&日更&漫漫&智斗&正能量&漫画一番&女王点坑&漫客栈&飒漫画&小说改编&绅士&恐怖悬疑&绘本&音乐&狐仙&死后世界&墨瞳&漫画&末日&系统&神仙&有妖气&怪物&妖怪&神豪&霸总.都市&高甜","class_url":"&rexue&xuanhuan&xiuzhen&gufeng&lianai&chuanyue&dushi&bazong&xuanyi&gaoxiao&qihuan&zongcai&richang&maoxian&kehuan&chunai&mohuan&zhanzheng&qiangwei&wuxia&shenghuo&dongzuo&hougong&youxi&kongbu&mangai&zhenren&xiaoyuan&juqing&lingyi&shaonian&tuili&huaijiu&qinggan&ouxiang&shaonv&dujia&nuexin&baoxiao&lizhi&meishi&fuchou&caihong&weimei&zhiyu&mingxing&naodong&mofa&xiuxian&zhongsheng&xianxia&moshi&yineng&nvzun&qita&yanqing&danmei&yundong&gongdou&guzhuang&meishaonv&shenmo&lishi&jingxian&jingji&mengxi&tiyu&gedou&jijia&nuelian&shuang&fuli&qita2&xiaojiangshi&jiangshi&langman&jinshouzhi&yujie&zhandou&egao&shehui&quanmou&qingchun&luoli&tongren&zhenhan&riman&junfa&minguo&tegong&meinv&jiandie&anhei&jiecao&jingdian&youmo&tianchong&shenhua&riben&yijiyuan&tiaoman&LOL&zhongtian&duanpian&jingsong&sige&guoman&youqudao&mengchong&renxing&chonghun&xinqi&xixiegui&shenjiemanhua&xueyuehua&mengqishi&shouer&shaoer&baihe&chiji&qiangzhan&tezhongbing&xiongdi&yishi&xiongmei&sanciyuan&meixing&haomen&hunchong&kaigua&xuexing&qingsong&yangcheng&tishen&nanshen&qingqingshu&yishijie&nanchuannv&hunchuan&yinan&dujitang&pianyu&manhuahui&longren&xihuan&zhaohuan&yijie&henxiyou&xiyouji&jianghu&duantoudao&hanman&bingjiao&changpian&chenlan&aiqing&nvqiang&ranxiang&tianshangkong&duzhiniao&xuezu&mowang&keai&gongting&hunlian&meng&ashuai&sanjiaolian&qianshi&lunhui&jingqi&zhentan&huanlexiang&zhichang&gandong&jiakong&qingxiaoshuo&yanyi&xingzhuanhuan&dongfang&danmeiBL&qingsonggaoxiao&tongrenmanhua&xiaoyuangaoxiaoshenghuo&shaonvaiqing&zhengju&shaonao&zhuangbi&shengui&weiniang&gaoqingdanxing&gushimanhua&lianaishenghuoxuanhuan&xifangmohuan&jianniang&zhaixi&shangzhan&shuangliu&rexuemaoxian&keji&wenxin&jiating&hunyin&duanzi&neihan&jizhan&yulequan&weilai&chongwu&bazonglianaixuanhuan&gushi&yinyuewudao&nixi&zhaohuanshou&kehuanmohuan&jiujie&lunli&lianaishenghuo&xinzuo&lishimanhua&ertong&zhentantuili&xiuzhenlianaijiakong&shougong&qingnian&qitamanhua&zhiyu2&shishi&xiuji&xiangcun&xingzhuan&hunai&siwang&sishen&shaonan&xuanyijingsong&baoxiaoxiju&dongzuogedou&gaibian&AA&lianaidanmei&heidao&guiguai&sangshi&zhupu&zhiyinmanke&maimeng&nizhuan&danvzhu&aimei&shenghua&qiwen&zhaidou&lanmu&guaitan&chongai&huanxiang&yizu&tanan&panni&juwei&yinv&lieqi&rigeng&manman&zhidou&zhengnengliang&manhuayifan&nvwangdiankeng&mankezhan&samanhua&xiaoshuogaibian&shenshi&kongbuxuanyi&huiben&yinyue&huxian&sihoushijie&motong&manhua&mori&xitong&shenxian&youyaoqi&guaiwu&yaoguai&shenhao&bazongdushi&gaotian","area_name":"全部&儿童漫画&少年漫画&少女漫画&青年漫画","area_url":"&ertong&shaonian&shaonv&qingnian","sort_name":"全部&日本&大陆&香港&台湾&欧美&韩国&其他","year_name":"全部&已完结&连载中","sort_url":"&riben&dalu&hongkong&taiwan&oumei&hanguo&qita","year_url":"&wanjie&lianzai","find_rule":".col_3_1&&li;a,1&&Text;img&&src;.info&&Text;a&&href","searchFind":".UpdateList&&.itemBox;.itemTxt&&a&&Text;a&&href;a,-1&&Text;.itemTxt--a&&Text;img&&src","search_url":"https://m.imitui.com/search/?keywords=**&page=fypage","titleColor":"#ff871f78","group":"⑥漫画","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\n//获取图片\nvar des_pic = parseDomForHtml(html, 'body&&.pic&&img&&src');\n// 获取作者\nvar des_author = parseDomForHtml(html,'body&&.sub_r&&p&&Text');\n// 获取更新状态\nvar des_update = parseDomForHtml(html,'body&&.Drama&&li&&span&&Text');\n// 获取简介\nvar des_desc = parseDomForHtml(html, 'body&&.txtDesc&&p&&Text').split(':')[1];\n//获取列表\nvar conts=parseDomForHtml(html, 'body&&.Drama&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n// 获取类别\nvar des_class = parseDomForHtml(html,'body&&.sub_r&&p,2&&Text');\n\nd.push({\n\ttitle: '更新：'+des_update+'\\n'+'作者：'+des_author+'\\n'+'类别：'+des_class,\n desc: des_desc,\n pic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'movie_1_vertical_pic'\n});\n\nif (conts !=null){\nfor (var i = 0; i < conts.length-1 ; i++) {\nd.push({\n\t\t\t\ttitle: parseDomForHtml(conts[i],'a&&Text'),\n\t\t\t\turl: parseDom(conts[i],'a&&href')+'@lazyRule=.js:var htmls=fetch(input.replace(\"m\",\"www\"),{});var ty=parseDomForHtml(htmls,\"body&&script&&Html\");eval(ty);var pics=[];for (var k = 0; k < chapterImages.length;k++) {pics.push(chapterImages[k])};\"pics://\"+pics.join(\"&&\")'\n});\n}\n} else {d.push({title: '暂无漫画源',url:getUrl()});}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ff871f78"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.chapter-warp&&ul&&li');\nif (parseDomForHtml(list[list.length-1], 'a&&Text').includes(\"下拉式阅读\")) {\nvar title = parseDomForHtml(list[list.length-2],'a&&Text');}else{\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');}\nsetResult('最新：'+title.replace(/，|\\,/g,\", \"));","title":"前未漫画𝔥","author":"Hood&@LoyDgIk","version":4,"url":"https://m1.qianwee.com/list/fyclassfyareafysort/fyyear/?page=fypage","col_type":"movie_3_marquee","class_name":"全部&恋爱&古风&生活&搞笑&玄幻&修真&穿越&热血&冒险&宠物&游戏&动作&神魔&都市&新作&漫改&精品&霸总&真人&推理&悬疑&科幻&恐怖&武侠&后宫&社会&日更&历史&御姐&运动&战争&竞技&萝莉&机战&忍者&吸血&杂志&校园&侦探&音乐舞蹈&魔法&轻小说&职场&爱情&东方&舰娘&欢乐向&四格&百合&奇幻&蔷薇&少女爱情&治愈&正剧&架空&日常&青春&轻松&家庭&彩虹&魔幻&仙侠&唯美&战斗&爆笑&侦探推理&美食&励志&格斗&神鬼&神话&感动&温馨&段子&未来&烧脑&爽流&异能&少年&惊悚&纯爱&萌系&节操&体育&同人&惊奇&伪娘&爆笑喜剧&有妖气&性.转换&浪漫&末世&虐心&异世界&宅系&豪门&宫廷&其它&机甲&少女&娱乐圈&惊险&竞技体育&明星&剧情&其他&西方魔幻&装逼&高清单行&手工&逆袭&乡村&故事漫画&搞笑喜剧&耽美&脑洞&商战&漫画&绘本&科技&召唤兽&史诗&恐怖灵异&宫斗&伦.理&热血冒险&内涵&主仆&科幻魔幻&纠结&青年&复仇&致郁&其他漫画&黑道&颜艺&修真恋爱架空&漫画岛&故事&灵异&婚姻&僵尸&热血动作&恋爱生活&恋爱耽美&震撼&麦萌&性转&恶搞&高智商&悬疑推理&机智&四格多格&mhuaquan&漫漫&动画&历史漫画&耽美BL&秀吉&正能量&总裁&完结&畅销&韩漫&幻想&日漫&大女主&古言&儿童&动作格斗&AA&改编&橘味&乙.女&猎奇&小说改编&智斗&防疫&恐怖悬疑&暗黑&音乐&末日&重生&系统&修仙&神仙&怪物&权谋&宅斗&神豪&妖怪&逆转&叛逆&少男&漫客栈&偶像&异族&奇闻&女尊&情感&古装&独家&生化&宠爱&怪谈&美型&高甜&暧昧&怀旧&绅士&美少女&言情&探案&虐恋&霸总.都市&日本&电竞&ゆり&兄弟情&暖萌&豪快&幽默&鬼怪&亲情&橘系&小僵尸&女生&连载&男生&丧尸&扶.她&限制级&少儿&生活漫画&养成&欢喜&北欧&腹黑&西幻&古代&基腐&浪漫爱情&BL&奇幻冒险&幽默搞笑&古风穿越&综合其它&TS","class_url":"&lianai-&gufeng-&shenghuo-&gaoxiao-&xuanhuan-&xiuzhen-&chuanyue-&rexue-&maoxian-&chongwu-&youxi-&dongzuo-&shenmo-&dushi-&xinzuo-&mangai-&jingpin-&bazong-&zhenren-&tuili-&xuanyi-&kehuan-&kongbu-&wuxia-&hougong-&shehui-&rigeng-&lishi-&yujie-&yundong-&zhanzheng-&jingji-&luoli-&jizhan-&renzhe-&xixie-&zazhi-&xiaoyuan-&zhentan-&yinyuewudao-&mofa-&qingxiaoshuo-&zhichang-&aiqing-&dongfang-&jianniang-&huanlexiang-&sige-&baihe-&qihuan-&qiangwei-&shaonvaiqing-&zhiyu-&zhengju-&jiakong-&richang-&qingchun-&qingsong-&jiating-&caihong-&mohuan-&xianxia-&weimei-&zhandou-&baoxiao-&zhentantuili-&meishi-&lizhi-&gedou-&shengui-&shenhua-&gandong-&wenxin-&duanzi-&weilai-&shaonao-&shuangliu-&yineng-&shaonian-&jingsong-&chunai-&mengxi-&jiecao-&tiyu-&tongren-&jingqi-&weiniang-&baoxiaoxiju-&youyaoqi-&xingzhuanhuan-&langman-&moshi-&nuexin-&yishijie-&zhaixi-&haomen-&gongting-&qita-&jijia-&shaonv-&yulequan-&jingxian-&jingjitiyu-&mingxing-&juqing-&qita2-&xifangmohuan-&zhuangbi-&gaoqingdanxing-&shougong-&nixi-&xiangcun-&gushimanhua-&gaoxiaoxiju-&danmei-&naodong-&shangzhan-&manhua-&huiben-&keji-&zhaohuanshou-&shishi-&kongbulingyi-&gongdou-&lunli-&rexuemaoxian-&neihan-&zhupu-&kehuanmohuan-&jiujie-&qingnian-&fuchou-&zhiyu2-&qitamanhua-&heidao-&yanyi-&xiuzhenlianaijiakong-&manhuadao-&gushi-&lingyi-&hunyin-&jiangshi-&rexuedongzuo-&lianaishenghuo-&lianaidanmei-&zhenhan-&maimeng-&xingzhuan-&egao-&gaozhishang-&xuanyituili-&jizhi-&sigeduoge-&mhuaquan-&manman-&donghua-&lishimanhua-&danmeiBL-&xiuji-&zhengnengliang-&zongcai-&wanjie-&changxiao-&hanman-&huanxiang-&riman-&danvzhu-&guyan-&ertong-&dongzuogedou-&AA-&gaibian-&juwei-&yinv-&lieqi-&xiaoshuogaibian-&zhidou-&fangyi-&kongbuxuanyi-&anhei-&yinyue-&mori-&zhongsheng-&xitong-&xiuxian-&shenxian-&guaiwu-&quanmou-&zhaidou-&shenhao-&yaoguai-&nizhuan-&panni-&shaonan-&mankezhan-&ouxiang-&yizu-&qiwen-&nvzun-&qinggan-&guzhuang-&dujia-&shenghua-&chongai-&guaitan-&meixing-&gaotian-&aimei-&huaijiu-&shenshi-&meishaonv-&yanqing-&tanan-&nuelian-&bazongdushi-&riben-&dianjing-&unknown-&xiongdiqing-&nuanmeng-&haokuai-&youmo-&guiguai-&qinqing-&juxi-&xiaojiangshi-&nvsheng-&lianzai-&nansheng-&sangshi-&futa-&xianzhiji-&shaoer-&shenghuomanhua-&yangcheng-&huanxi-&beiou-&fuhei-&xihuan-&gudai-&jifu-&langmanaiqing-&BL-&qihuanmaoxian-&youmogaoxiao-&gufengchuanyue-&zongheqita-&TS-","area_name":"全部&儿童&少年&少女&青年","area_url":"&ertong&shaonian&shaonv&qingnian","sort_name":"连载&完结","year_name":"点击&发布&更新","sort_url":"-lianzai&-wanjie","year_url":"click&post&update","find_rule":"#comic-items&&li;\n.txtA&&Text;\nimg&&src;\nspan&&Text;\na&&href","searchFind":".UpdateList&&.itemBox;\n.title&&Text;\na&&href;\n.coll&&Text.js:input.replace(/，|\\,/g,\", \");\n.itemTxt--a&&Text;\nimg&&src","search_url":"https://m1.qianwee.com/search/?keywords=**&page=fypage","titleColor":"#fff20c00","group":"⑥漫画","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//线路列表\nvar tabs = parseDomForArray(html, '#list_block&&.comic-chapters');\n\n//全部选集列表\nvar conts = parseDomForArray(html, 'body&&.chapter-warp');\n\n//获取简介\nvar des_desc = parseDomForHtml(html, '#full-des||#simple-des&&Text').replace(/.*[简介：]|[介绍:]/g,\"\").replace(/[\\s]/g,\"\");\n\ntry {\n    d.push({\n\n        //作者、类型等\n        title: parseDomForHtml(html, '.sub_r&&p&&Text') + '\\n' + parseDomForHtml(html, '.sub_r&&p,1&&Text') + '\\n' + parseDomForHtml(html, '.sub_r&&p,2&&Text'),\n\n        //描述\n        desc: parseDomForHtml(html, '.sub_r&&p,3&&Text'),\n\n        //图片地址\n        pic_url: parseDom(html, '#Cover&&img&&src'),\n        url: getUrl(),\n        col_type: 'movie_1_vertical_pic'\n    });\n\n    //限制简介长度\n    if (des_desc.length > 110) {\n        des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n    }\n\n    //输出简介\n    d.push({\n        title: \"简介：\" + des_desc,\n        col_type: 'long_text'\n    });\n\n    d.push({\n        col_type: 'line'\n    });\n\n    for (var i in tabs) {\n\n        //选集列表\n        var list = parseDomForArray(conts[i], 'ul&&li');\n\n        //线路名称\n        d.push({\n            title: parseDomForHtml(tabs[i], '.Title&&Text'),\n            url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n            col_type: 'text_center_1'\n        });\n\n        var listx = list[0];\n        if(list.length>1){listx = list[1]}\n\n        //选集名称\n        for (var j in list) {\n            if (parseDomForHtml(list[j], 'a&&Text').includes(\"下拉式阅读\")) {\n                continue\n            };\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/，|\\,/g,\", \"),\n\n                col_type: parseDomForHtml(listx,'a&&Text').length>5?'flex_button':'text_3',\n\n                url: $(parseDom(list[j], 'a&&href')).lazyRule(() => {\n                    let html = request(input);\n                    let num = parseDomForHtml(html, \".image-content&&p,1&&Html\").split(\"/\")[1];\n                    let htmlArr=[];\n                    for (let i = 1; i <= num; i++) {\n                        htmlArr.push({url:input.replace(\".html\", \"-\" + i + \".html\")});\n                    }\n                    htmlArr=batchFetch(htmlArr);\n                    let pics=htmlArr.map(_=>parseDomForHtml(_, \"#manga-image&&src\"));\n                    return \"pics://\" + pics.join(\"&&\");\n                })\n            });\n        }\n    }\n} catch (e) {}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#fff20c00"},{"last_chapter_rule":"","title":"AI软件","author":"","version":48,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"float&&100%\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        canBack: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {       \\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }       \\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `🔥423Down🔥@https://www.423down.com/search/**\\n🔥果核剥壳🔥@https://www.ghxi.com/?s=**\\n🔥六音软件🔥@https://www.6yit.com/?s=**\\n🔥心海E站🔥@https://apphot.cc/?s=**\\n🔥大眼仔🔥@http://www.dayanzai.me/?s=**\\n🔥飘遥🔥@https://www.mpyit.com/?s=**\\n🔥异星空间🔥@https://www.yxssp.com/?s=**\\n🔥落尘之木🔥@https://www.luochenzhimu.com/?s=**\\n🔥绿色资源🔥@https://www.weidianmishu.com/search/**/\\n🔥乐软博客🔥@https://www.isharepc.com/?s=**\\n🔥系统迷🔥@https://www.xitmi.com/?s=**\\n🔥ZAPRO杂货铺🔥@https://tmioe.com/?s=**\\n🔥亿破姐🔥@https://www.ypojie.com/?s=**\\n🔥极客下载🔥@https://www.geekdload.com/?s=**\\n🔥小窝🔥@https://www.nite07.com/?ref=adzhp.vip\\n🔥枫音应用🔥@https://www.fy6b.com/?s=**\\n🔥神器妹🔥@https://tsq360.com/?s=**\\n🔥鸡盒🔥@https://caoniang.net/search/**.html\\n🔥巧技🔥@https://www.qiaoji8.com/?s=**\\n🔥软件王🔥@https://free.softking.com.tw/query/\\n🔥哇喔君🔥@https://www.waodown.com/search/**\\n🔥木风软件🔥@https://www.mfrjz.com/?s=**\\n🔥阿酷杂货🔥@https://www.coolexe.com/?s=**&type=post\\n🔥蓝鲨🔥@https://www.lan-sha.com/?s=**\\n🔥发烧友绿软🔥@https://fsylr.com/?s=**\\n🔥安卓应用🔥@https://www.i3zh.com/?s=**\\n🔥分享者🔥@https://www.sharerw.com/search.php?q=**\\n🔥资源分享（需登录）🔥@https://www.yunpanziyuan.com/fontsearch.htm?fontname=**\\n🔥巅峰论坛（需登录）🔥@https://www.peakwo.com/search.php?mod=forum&searchid=36&orderby=lastpost&ascdesc=desc&searchsubmit=yes&kw=**&mobile=2\\n🔥无中和🔥@https://wzhonghe.com/?s=**\\n🔥小高教学🔥@https://www.gw54.com/index.php?keyword=**\\n🔥资源否🔥@https://www.zyfou.com/?s=**\\n🔥西瓜视频🔥@https://so.ixigua.com/s/**app**\\n🔥ITM资源🔥@https://pic.itmresources.com/?s=**&post_type=post\\n🔥无痕哥🔥@https://www.whg6.com/4658.html\\n🔥吾名软件库🔥@https://www.5mku.com/index.php?keyword=**&typeid=0\\n🔥一号资源🔥@https://yihaozy.com/search/**.html\\n🔥QQ皇族馆🔥@https://www.qqhzg.com/index.php?keyword=**&typeid=0\\n🔥皮部资源网🔥@https://www.pibue.com/index.php?keyword=**&typeid=0\\n🔥收集网🔥@https://www.issjw.com/?s=**\\n🔥轻创社区🔥@https://7cc7cc.com/search-_E6_92_AD_E6_94_BE_E5_99_A8-1.htm\\n🔥小白资源网（需登录）🔥@https://www.xiaobaicai.fun/?s=**\\n🔥步兔分享🔥@https://butqq.com/?s=**&type=post\\n🔥科技随风🔥@https://www.52nfw.cn/?s=**&type=post\\n🔥四个空格🔥@https://www.4spaces.org/?s=**\\n🔥玉米粒🔥@https://yimili.net/?s=**\\n🔥不死鸟🔥@https://iui.su/search/**/\\n🔥分享迷🔥@https://www.fenxm.com/search.php?q=**\\n🔥ahhhfs🔥@https://www.ahhhhfs.com/?cat=&s=**\\n🔥App喵🔥@https://www.appmiu.com/?s=**&type=post\\n🔥i3综合社区🔥@https://www.i3zh.com/?s=**\\n🔥其乐博记🔥@https://www.qilebb.com/?s=**\\n🔥芊芊精典🔥@https://myqqjd.com/?s=**\\n🔥谷子猫部落格🔥@http://www.xgiu.com/index.php?keyword=**\\n🔥黑海洋🔥@https://blog.upx8.com/search/**/`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.toLowerCase().includes(key);\\n    }\\n    key = key.toLowerCase();\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"冰封娱乐网","author":"香雅情","version":3,"url":"https://www.vxat.com/fyclass_fypage.html","col_type":"movie_1_left_pic","class_name":"安卓应用&电视软件&技术教程&电脑软件","class_url":"Android&TV&JiShuJiaoCheng&Windows","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&article;h2&&Text;img&&src;footer&&Text;a&&href","searchFind":".article&&article;h2&&Text;a&&href;footer&&Text;.post-text&&Text;img&&src","search_url":"https://www.vxat.com/search.php?q=**&page=fypage","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.article-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'',\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&a');\n        chp.push(list.length);\n    }\n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"三福影视","author":"香雅情","version":0,"type":"video","url":"hiker://empty#http://3fkp.com/fyAll/indexfypage.html[firstPage=hiker://empty#http://3fkp.com/fyAll/index.html]","col_type":"movie_3","class_name":"首页&电影&动作片&爱情片&科幻片&恐怖片&战争片&喜剧片&一直播&剧情片","class_url":"首页&dianying&dongzuopian&aiqingpian&kehuanpian&kongbupian&zhanzhengpian&xijupian&jilupian&juqingpian","area_name":"电视剧&国产剧&港台剧&欧美剧&日韩剧","area_url":"dianshiju&guocanju&gangtaiju&oumeiju&rihanju","sort_name":"","year_name":"综艺&动漫","sort_url":"","year_url":"zongyi&dongman","find_rule":"js:\nvar res = {};\nvar items = [];\nvar myurl = 'http://3fkp.com';\nvar cnam = MY_URL.split('#')[1];\n//log(getRule());\nif (cnam.includes('首页')) {\n    var html = request(myurl, {});\n} else {\n    var html = request(MY_URL.split('#')[1], {});\n}\n\ntry {\n    var conts = parseDomForArray(html, 'body&&.stui-vodlist:has(.pic-text)');\n    for (var j = 0; j < conts.length; j++) {\n        var list = parseDomForArray(conts[j], 'body&&li');\n\n        for (var i = 0; i < list.length; i++) {\n            var title = parseDomForHtml(list[i], 'h4&&Text');\n            var img = parseDomForHtml(list[i], '.lazyload&&data-original');\n            if (img.substring(0, 4) == 'http') {\n                img = img;\n            } else {\n                img = myurl + img\n            }\n            var url = parseDomForHtml(list[i], 'a&&href');\n            var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n            items.push({\n                title: title,\n                pic_url: img+'@Referer=',\n                url: myurl + url + \"#immersiveTheme#\",\n                desc: desc\n            });\n        }\n\n    }\n} catch (e) {}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist__media&&li');\n//setError(list[1]);\n\nfor (var i = 0; i < list.length; i++) {\n    var title = parseDomForHtml(list[i], 'h3&&Text');\n    var img = parseDom(list[i], '.lazyload&&data-original');\n    var url = parseDom(list[i], 'h3&&a&&href');\n    var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n    var cont = parseDomForHtml(list[i], '.detail--h3&&Text');\n    items.push({\n        title: title,\n        img: img+'@Referer=',\n        url: url + \"#immersiveTheme#\",\n        desc: desc,\n        content: cont\n    });\n}\n\nres.data = items;\nsetSearchResult(res);","search_url":"http://3fkp.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar lazy = $('').lazyRule(() => {\n    eval(getCryptoJS());\n    try {\n        var myurl = 'http://3fkp.com';\n        var html = request(input, {});\n\n        eval(parseDomForHtml(html, \".stui-player__video&&script&&Html\").replace(/player_.*?={/, 'player_data={'));\n        var fro = pn;\n        var urll = now;\n        var jiex = '';\n        if (fro == 'toutiao') {\n            jiex = 'https://api.suganjx.com/index/?url=' + urll + '&type=toutiao';\n        } else {\n            jiex = 'https://api.suganjx.com/index/?url=' + urll\n        }\n\n        if (urll.includes('.m3u8')||urll.includes('.mp4')) {\n            return urll;\n        } else {\n            requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n            return x5rule(jiex, input);\n        };\n    } catch (e) {\n        log('报错跳转');\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n});\nvar tabs = parseDomForArray(html, 'body&&#playlist');\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar listlen = parseDomForArray(conts[0], 'body&&.stui-content__playlist&&a');\n\nvar thumb = parseDom(html, \".stui-content__thumb&&.lazyload&&data-original\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".stui-content__detail&&p,-1&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nfunction dpsh(list) {\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], \"a&&Text\"),\n            url: parseDom(list[j], \"a&&href\") + lazy,\n            extra: {\n                id: parseDom(list[j], \"a&&href\"),\n                referer:parseDom(list[j], \"a&&href\")\n            },\n            col_type: 'text_3'\n        });\n    }\n};\n\nif (tabs.length > 1 && listlen.length > 12) {\n    var title = 'hfys' + parseDomForHtml(html, '.stui-content__detail&&h1&&Text');\n    d.push({\n        title: '““排序””',\n        url: \"hiker://empty@lazyRule=.js:putMyVar('hfyssort', getMyVar('hfyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n        col_type: 'flex_button'\n    });\n    //处理线路显示\n    for (var i in conts) {\n        d.push({\n            title: (getMyVar(title, '0') == i ? '👉🏻' : '') + parseDomForHtml(tabs[i], 'body&&h3&&Text'),\n            url: `hiker://empty@lazyRule=.js:putMyVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n            col_type: 'flex_button'\n        });\n    };\n    //分割线\n    d.push({\n        col_type: 'line_blank'\n    });\n\n    //开始处理选集显示\n    //var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&a');\n    if (getMyVar('hfyssort', '1') == '0') {\n        var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&a').reverse();\n    } else {\n        var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&a')\n    }\n    dpsh(list);\n} else {\n    for (var i in conts) {\n        //var list = parseDomForArray(conts[i], 'body&&a');\n        if (getMyVar('hfyssort', '1') == '0') {\n            var list = parseDomForArray(conts[i], 'body&&a').reverse();\n        } else {\n            var list = parseDomForArray(conts[i], 'body&&a')\n        }\n        if (list != null) {\n            d.push({\n                title: parseDomForHtml(tabs[i], \"body&&h3&&Text\") + ' ““切换选集排序””',\n                url: \"hiker://empty@lazyRule=.js:putMyVar('hfyssort', getMyVar('hfyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n                col_type: 'text_1'\n            });\n            dpsh(list);\n        }\n    }\n}\n\n\n//二级模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://3fkp.com/statics/img/logo.png"},{"last_chapter_rule":"","title":"在线VR站","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.zhijianshang.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#b7ba6b"},{"last_chapter_rule":"","title":"秒播","author":"道长&Happy小翼","version":1,"type":"video","url":"hiker://empty##http://app.daishu.one/qingdoujiekou.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"⑥电影天堂","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=秒播"},{"firstHeader":"class","last_chapter_rule":"","title":"搜片.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://soupian.app/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=搜片"},{"firstHeader":"class","last_chapter_rule":"","title":"奈飞中文影视.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://yanetflix.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=奈飞中文影视"},{"firstHeader":"class","last_chapter_rule":"","title":"影视森林.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.549.tv/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=影视森林"},{"firstHeader":"class","last_chapter_rule":"","title":"voflix.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.voflix.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=voflix"},{"firstHeader":"class","last_chapter_rule":"","title":"bttwoo.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.bttwoo.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=bttwoo"},{"last_chapter_rule":"","title":"极简重定向","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.hanjutv.me/hanju/page/fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".m-movies&&.u-movie;h2&&Text;img&&data-original;.zhuangtai&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page=MY_PAGE;\ntrue_url = 获取正确链接();\n//log(true_url);\nlet data=[{\n        一级分类: 'body&&.nav',\n        子分类: 'body&&li:has(a[href]):matches(韩剧|韩综|韩影)',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(.*).html/, 'show/$1-----------.html')\n            }\n        }\n    }];\nif(/\\/hanju/.test(true_url)){\n    data.push({\n        一级分类: 'body&&.sub-menu',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    });\n}\nlet cates=打造动态分类(data);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL,PC_UA,'https://www.hanjutv.me/');\nparStr=\".m-movies&&.u-movie;h2&&Text;img&&data-original;.zhuangtai&&Text;a&&href\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.siguyy.com/search/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.article-title&&Text;.article-meta&&Text',\n img:'.video_img&&img&&src',\n url:'.video_img&&img&&src',\n desc:'.video_info&&Text',\n content:\"p.jianjie&&Text\",\n tabs:'#playnav&&li',\n lists:'#playcontainer&&.tab,#id&&a',\n tab_id:'',\n};\nvar 二级处理={\n    重定向:function(url,html){\n    url=pd(html,'#video_list_li&&.vlink&&a&&href');    \n  log('选集列表重定向:'+url);          \n  html= 获取源码(url,PC_UA,url);\n  return html;\n}\n\n}\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,false,true);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.hmtv.me/images/icon.png"},{"firstHeader":"class","last_chapter_rule":"","title":"极品至简","author":"道长","version":2,"type":"video","url":"hiker://empty##https://www.jpys.me/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nvar d = [];\nconst 分类颜色 = 取随机颜色();\nconst 大类定位 = 'body&&.myui-header__menu';\nconst 拼接分类 = 'body&&.myui-screen__list';\nconst 小类定位 = 'body&&li:not(.col-lg-5):not(:matches(首页|专题|明星|频道))';\nconst 分类标题 = 'a&&Text';\nconst 分类链接 = 'a&&href';\nMY_URL = MY_URL.replace('hiker://empty##', '');\nlet true_url = getMyVar('header.url', MY_URL);\nconst page = MY_PAGE;\nif(getMyVar('header.url')){\ntrue_url = true_url.replace(/type(\\/\\d+)/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\n\nvar html = 获取源码(true_url);\n动态分类(d);\n设置(d);\n自动一级(null,d,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索结果');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/74.png"},{"firstHeader":"class","last_chapter_rule":"","title":"鸭奈飞.Dr","author":"道长","version":3,"type":"video","url":"hiker://empty##https://yanetflix.com/vodshow/dianying-------fypage----.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nMY_URL = MY_URL.split(\"##\")[1];\nlet ui = () => {\n    page = MY_PAGE;\n    true_url = getMyVar('header.url', MY_URL);\n    //if(page>1){true_url=true_url.replace(/(\\d+)\\.html/,'$1-'+page+'.html')}\n   if(page>1){\n    true_url = 获取正确链接();\n    }\n   // log(true_url);\n    /*\n    可能用到: 一级分类 子分类 分类标题\n    分类链接:{\n        二次处理(u){\n        return u.replace(/type/,'show')}\n    }\n    */\n    let 分类定位1=[{\n        一级分类:'body&&.navbar-items',\n        子分类:'body&&li:has(a[href]):gt(1):lt(6)',\n        分类链接:{\n        二次处理(u){\n        return u.replace(/vodtype\\/(.*?)\\.html/,'vodshow/$1-----------.html').replace('1','')\n         }\n    }\n    },\n    {\n        一级分类: 'body&&.module-class-item',\n        子分类: 'body&&a:not(:matches(^$))',\n    }];\n    let 分类定位2=[{\n        一级分类:'body&&.library-box',\n        子分类:'body&&a:not(:matches(^$))',\n    }];\n    let cates=打造动态分类(分类定位1);\n    if(cates.length<1){\n        cates=打造动态分类(分类定位2);\n    }\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui, \"detail/\", \"app.html|down.html\", \"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua=MOBILE_UA;\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://ugc.hitv.com/3/22040215100116D5902FA5F85F30A2245E0DAAAAFMjky/uyu3xI0.png"},{"last_chapter_rule":"","title":"人人影视😇","author":"子丑寅卯","version":7,"type":"video","url":"hiker://empty#https://yyets.dmesg.app/api/top","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar page = MY_URL.split('#');\n\nd.push({\n    title: \"🔎\",\n    url: \"'toast://正在搜索：' + input;refreshPage(false)\",\n    desc: \"人人为我，我为人人\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n        defaultValue: getVar('my-search')\n    }\n})\nd.push({\n    title: '““””<small><font color=#20b2aa>数据来源于人人影视分享站，本规则不提供内容！</font></small>',\n    desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，点击查看网站开源地址</font></small>',\n    url: \"web://https://yyets.dmesg.app\",\n    col_type: 'text_center_1'\n});\n\nif (getVar('my-search') == \"\") {\n    var html = request(page[1]);\n    let json = JSON.parse(html).ALL;\n    for (let item of json) {\n        d.push({\n            title: item.data.info.cnname,\n            url: \"https://yyets.dmesg.app/api/resource?id=\" + item.data.info.id\n        });\n    }\n    setResult(d);\n} else {\n    var html = request('https://yyets.dmesg.app/api/resource?keyword=' + getVar('my-search'));\n    let j = JSON.parse(html);\n    for (let item of j.data) {\n        d.push({\n            title: item.cnname,\n            url: \"https://yyets.dmesg.app/api/resource?id=\" + item.id\n        });\n    }\n    if (j.comment && j.comment.length > 0) {\n        d.push({\n            title: \"留言板检索结果\",\n            url: \"\",\n            col_type: \"text_center_1\",\n            desc: \"\",\n            pic_url: \"\"\n        });\n        for (let item of j.comment) {\n            d.push({\n                title: item.comment,\n                desc: item.date + \"   @\" + item.username,\n                col_type: \"text_1\",\n                url: \"hiker://page/comment\",\n                extra: {\n                    c: item.comment\n                }\n            });\n        }\n    }\n    setResult(d);\n}","searchFind":"","search_url":"","group":"⑥电影天堂","detail_col_type":"text_3","detail_find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    clearMyVar(\"s\");\n    clearMyVar(\"ite\");\n}));\nvar d = [];\nlet id = getParam(\"id\", \"\");\ntry {\n    let u1 = \"https://yyets.dmesg.app/api/douban?resource_id=\" + id;\n    let json2 = JSON.parse(request(u1));\n    d.push({\n        title: json2.releaseDate + \"\\n评分：\" + (json2.rating == \"\" ? \"无\" : json2.rating) + \"\\n\" + json2.genre.join(\"  \"),\n        url: MY_URL.replace(\"/api\", \"\"),\n        col_type: \"movie_1_vertical_pic\",\n        desc: json2.introduction,\n        pic_url: json2.posterLink + \"@Referer=\" + json2.doubanLink\n    });\n    d.push({\n        col_type: \"big_blank_block\"\n    });\n    d.push({\n        col_type: \"big_blank_block\"\n    });\n} catch (e) {}\nlet json = JSON.parse(getResCode()).data.list;\nif (json.length <= 0) {\n    d.push({\n        title: \"没有资源，可以看看留言板检索结果\",\n        url: MY_URL.replace(\"/api\", \"\"),\n        col_type: \"text_1\",\n        desc: \"点击查看原网页\",\n        pic_url: \"\"\n    });\n    setResult(d)\n} else {\n    let season = getMyVar(\"s\", json[0].season_cn);\n    let git = {};\n    for (let it of json) {\n        if (!it.items) {\n            continue\n        }\n\n        d.push({\n            title: season == it.season_cn ? \"‘‘\" + it.season_cn + \"’’\" : it.season_cn,\n            url: $(\"#noLoading#\").lazyRule((c) => {\n                putMyVar(\"s\", c);\n                refreshPage();\n                return \"hiker://empty\"\n            }, it.season_cn),\n            col_type: \"scroll_button\",\n            desc: \"\",\n            pic_url: \"\"\n        });\n        if (season == it.season_cn) {\n            git = it;\n        }\n    }\n    d.push({\n        col_type: \"blank_block\"\n    });\n    let it = git;\n    let items = it.items;\n    let keys = Object.keys(items);\n    let def = keys[0];\n    //第一次进入自动选中有结果的选项\n    if (getMyVar(\"ite\") == \"\") {\n        for (let i of keys) {\n            if (!items[i]) {\n                continue;\n            }\n            let ok = false;\n            for (let it2 of items[i]) {\n                if (it2 && it2.files && it2.files.length > 0) {\n                    def = i;\n                    ok = true;\n                    break\n                }\n            }\n            if (ok) break;\n        }\n    }\n    let ite = getMyVar(\"ite\", def);\n    let gi = \"\";\n    for (let i of keys) {\n        d.push({\n            title: i == ite ? \"‘‘\" + i + \"’’\" : i,\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar(\"ite\", i);\n                refreshPage();\n                return \"hiker://empty\"\n            }, i),\n            col_type: \"scroll_button\",\n            pic_url: \"\"\n        });\n        if (i == ite) {\n            gi = i;\n        }\n    }\n    d.push({\n        col_type: \"line_blank\"\n    });\n\n    let i = gi;\n    let ts = items[i];\n    for (let i3 of ts) {\n        if (!i3.files) {\n            continue\n        }\n        d.push({\n            title: i3.name + \"  \" + i3.size,\n            url: \"confirm://这里只是名字展示，请点击下面的资源按钮来播放，无法播放可以长按下载唤起第三方软件来播放或下载.js:''\",\n            col_type: \"text_1\",\n            desc: \"\",\n            pic_url: \"\"\n        });\n\n        let files = i3.files;\n        for (let i2 of files) {\n            d.push({\n                title: i2[\"way_cn\"],\n                url: i2[\"address\"],\n            });\n        }\n        d.push({\n            col_type: \"blank_block\"\n        });\n\n        d.push({\n            col_type: \"line_blank\"\n        });\n\n    }\n\n    setResult(d);\n}","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"comment\",\"path\":\"comment\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: MY_PARAMS.c,\\n    col_type: \\\"rich_text\\\",\\n});\\nvar _links = MY_PARAMS.c.match(/https:\\\\/\\\\/(www\\\\.aliyundrive\\\\.com\\\\/s|alywp\\\\.net)\\\\/\\\\w*/g) || [];\\nif (_links.length) {\\n    _links.forEach((link, index) => {\\n        d.push({\\n            title: '🔗 ' + (_links.length > 1 ? '链接' + (index + 1) + '：' : '') + link,\\n            url: 'hiker://page/detail?rule=云盘汇影&url=' + link + '??fypage',\\n            col_type: \\\"text_1\\\"\\n        });\\n    })\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://yyets.dmesg.app/sponsor/coffee.jpg"},{"last_chapter_rule":"","title":"厂长资源·F","author":"🐱猫","version":5,"type":"video","url":"hiker://empty##https://www.czspp.com/zuixindianying#fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar 分类颜色 = '#1a0c45';\nvar 引擎名称 = ' search '\nvar 动态缩小 = ' Shrink '\nvar 动态扩展 = ' Extend '\n\nvar 一级定位A = '.navlist&&ul'\nvar 二级定位A = ''\nvar 统一定位B = 'body&&a:not(:matches(豆瓣|首))';\n\nvar 框架类型 = '' //不知道留空就行\nvar 框架列表 = '.mrb&&ul&&li';\nvar 框架标题 = 'h3&&Text';\nvar 框架描述 = '.rating&&Text';\nvar 框架图片 = 'img&&data-original';\nvar 框架链接 = 'a&&href';\n\n\nlet 一级 = $.require('hiker://page/yiji?rule=' + MY_RULE.title)\n\nconst page = MY_PAGE\nvar true_url = getMyVar('header.url', MY_URL.replace('hiker://empty##', '').replace('#'+ page, ''));\n\nif (page > 1) {\n    true_url = true_url + '/page/' + page\n}\n\n//var true_url = 一级.获取链接(page)\nvar html = 一级.获取源码(true_url)\nlog(true_url);\n\n一级.搜索框架(page)\n一级.打造分类()\n一级.生成片单(d, html)\n\nsetResult(d)","searchFind":".bt_img&&li;h3&&Text;a&&href;.jidi||.hdinfo&&span&&Text;p,-1&&Text;img&&data-original","search_url":"https://www.czspp.com/xssearch?q=**&f=_all&p=fypage","group":"⑥电影天堂","detail_col_type":"text_3","detail_find_rule":"js:\nvar 线路列表 = '.xzdz&&div';\nvar 线路标签 = 'a&&Text';\nvar 集数列表 = 'body&&.paly_list_btn';\nvar 集数标签 = '.paly_list_btn&&a';\n\nvar 搜索标签 = '.moviedteail_tt&&h1&&Text';\nvar 定位简介 = '.yp_context&&p&&Text';\nvar 定位封面 = '.dyimg&&img&&src';\n\nvar 标识名称 = 'Play·';\nvar 标识链接 = MY_URL;\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\neval(JSON.parse(fetch('hiker://page/erji', {})).rule);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"B二级页面\",\"path\":\"erji\",\"rule\":\"var d = [];\\nvar html = getResCode();\\nvar arts = pdfa(html, 线路列表);\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(pdfh(arts[i], 线路标签)\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签))\\n};\\n\\nvar title = parseDomForHtml(html, 搜索标签);\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    url: parseDom(html, 定位封面),\\n    desc: '0',\\n    pic_url: parseDom(html, 定位封面),\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n\\n\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#5959AB\\\">'+标识名称+'</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]]|| \\\"https://lanmeiguojiang.com/tubiao/ke/58.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"C通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    for (var i in urls) {\\n        if  (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)){\\n            fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\n\"},{\"col_type\":\"movie_3\",\"name\":\"A一级模板\",\"path\":\"yiji\",\"rule\":\"log(page)\\n\\nfunction 一级() {};\\nObject.assign(一级.prototype, {\\n    constructor: 一级,\\n    test() {},\\n    获取源码(url, header) {\\n        return fetch(true_url, {\\n            headers: header || {\\n                'User-Agent': MOBILE_UA\\n            }\\n        }) // 默认统一使用MOBILE_UA\\n    },\\n\\n\\n    搜索框架(page) {\\n        if (page == '1') {\\n            d.push({\\n                title: 引擎名称,\\n                url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n                desc: \\\" \\\",\\n                col_type: \\\"input\\\"\\n            });\\n            for (var i = 0; i < 2; i++) {\\n                d.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                })\\n            }\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (var i = 0; i < 3; i++) {\\n                d.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                })\\n            }}\\n        },\\n    \\n\\n\\n\\n    获取链接(page, regex) {\\n        let true_url = getMyVar('header.url', MY_URL);\\n        //let 链接处理工具 = requireCache(config.链接处理工具依赖)\\n        //let 链接处理工具 = requireCache('https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js')\\n        //let 链接处理工具 = $.require('hiker://page/url-processor')\\n        let 链接处理工具 = requireCache('https://gitee.com/coward-cat/js/raw/master/UrlProcessor.js')\\n\\n        true_url = 链接处理工具\\n            .链接(true_url)\\n            .页码(page)\\n            .插入新处理规则(regex || [])\\n            .获取处理结果();\\n        return true_url;\\n    },\\n    打造分类(ruleList) {\\n        // 引入动态分类依赖\\n        // 框架已经稳定，使用 requireCache 更佳\\n        //  let htmlCategories = requireCache(config.动态分类依赖)\\n        //let htmlCategories = requireCache('https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js')\\n        if (!ruleList) {\\n            let 分类定位 = [\\n                // 定位四大金刚\\n                {\\n                    一级分类: 一级定位A,\\n                    子分类: 统一定位B || 一级定位B,\\n                    分类链接: {\\n                        二次处理(url) {\\n                            try {\\n                                return 一级处理C(url)\\n                            } catch (e) {\\n                                return url\\n                            }\\n                        }\\n                    }\\n                }\\n            ]\\n\\n            if (二级定位A && (统一定位B || 二级定位B)) {\\n                分类定位.push(\\n                    // 定位其他大分类，如地区、年份等\\n                    {\\n                        一级分类: 二级定位A,\\n                        子分类: 统一定位B || 二级定位B,\\n                        分类链接: {\\n                            二次处理(url) {\\n                                try {\\n                                    return 二级处理C(url)\\n                                } catch (e) {\\n                                    return url\\n                                }\\n                            }\\n                        }\\n                    }\\n                )\\n            }\\n            ruleList = 分类定位;\\n        }\\n        // '0' 为默认不折叠，'1' 为默认折叠\\n        const 当前折叠状态 = getMyVar('header.fold', '1')\\n        // 引入动态分类依赖\\n        let htmlCategories = requireCache('https://gitee.com/coward-cat/js/raw/master/categories-header.js')\\n        var getRangeColors = function() {\\n            return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\\n        } // 随机选中的分类颜色\\n        var colour\\n        if (分类颜色 !== '') {\\n            colour = 分类颜色\\n            //  log(colour)\\n        } else {\\n            colour = getRangeColors()\\n            //  log(colour)\\n        }\\n        htmlCategories.界面(d)\\n            //.分类链接(true_url)\\n            .源码(html)\\n            .页码(page)\\n            .添加分类定位(ruleList)\\n            .开启内置折叠功能() // 必须\\n            .折叠(当前折叠状态) // 必须\\n            .折叠按钮样式({\\n                title: 当前折叠状态 == \\\"1\\\" ? \\\"““””<big><b><font color='#5959AB'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\"\\n            }) // 可选\\n            // .第几行开始折叠(2) // 可选\\n            // .折叠按钮样式({ 折叠按钮插入行: 2 })  // 可选，但必须先调用 .第几行开始折叠(index)，然后再传入 { 折叠按钮插入行: index }\\n            .选中的分类颜色(colour)\\n            .开始打造分类();\\n    },\\n\\n    生成片单(d, html) {\\n\\n        var 列表\\n        var 标题\\n        var 描述\\n        var 图片\\n        var 链接\\n\\n        if (框架类型 === 'myui-vodlist') {\\n            列表 = '.myui-vodlist&&li';\\n            标题 = 'h4&&Text';\\n            描述 = '.pic-tag||.pic-text&&Text';\\n            图片 = '.lazyload&&data-original';\\n            链接 = 'a&&href';\\n            //log('框架类型·myui-vodlist')\\n        } else if (框架类型 === '#data_list') {\\n            列表 = '#data_list&&li';\\n            标题 = 'a&&title';\\n            描述 = 'em&&Text';\\n            图片 = 'img&&data-srcl';\\n            链接 = 'a&&href';\\n            //log('框架类型·data_list')\\n        } else if (框架类型 === 'fed-list-title') {\\n            列表 = '.fed-list-info&&li';\\n            标题 = '.fed-list-title&&Text';\\n            描述 = '.fed-text-center&&Text';\\n            图片 = 'a&&data-original';\\n            链接 = 'a&&href';\\n            //log('框架类型·.fed-list-info')\\n        } else if (框架类型 === 'item') {\\n            列表 = 'body&&.item';\\n            标题 = 'img&&alt';\\n            描述 = 'p&&Text';\\n            图片 = 'img&&srcl';\\n            链接 = 'a&&href';\\n            //log('框架类型·.item')\\n        } else if (框架类型 === 'module-items') {\\n            列表 = '.module-items&&.module-item';\\n            标题 = 'a&&title';\\n            描述 = '.module-item-text&&Text';\\n            图片 = 'img||.lazy&&data-src';\\n            链接 = 'a&&href';\\n            //log('框架类型·.module-items')\\n        } else if (框架类型 === 'pack-ykpack') {\\n            列表 = 'body&&.pack-ykpack';\\n            标题 = 'a&&title';\\n            描述 = 'span,-1&&Text';\\n            图片 = '.eclazy&&data-original';\\n            链接 = 'a&&href';\\n            //log('框架类型·.pack-ykpack')\\n        } else if (框架类型 === 'stui-vodlist') {\\n            列表 = '.stui-vodlist&&li';\\n            标题 = 'a&&title';\\n            描述 = '.pic-text&&Text';\\n            图片 = '.lazyload||a&&data-original';\\n            链接 = 'a&&href';\\n            //log('框架类型·.stui-vodlist')\\n        } else if (框架类型 === 'vodlist') {\\n            列表 = '.vodlist&&li';\\n            标题 = 'a&&title';\\n            描述 = 'a&&Text';\\n            图片 = '.lazyload&&data-original';\\n            链接 = 'a&&href';\\n            //log('框架类型·.vodlist')\\n        } else if (框架类型 === '测试') {\\n            列表 = 'body&&a';\\n            标题 = 'body&&a';\\n            描述 = 'body&&a';\\n            图片 = 'body&&a';\\n            链接 = 'body&&a';\\n            log('框架类型·测试')\\n        } else if (框架类型 === '') {\\n            列表 = 框架列表;\\n            标题 = 框架标题;\\n            描述 = 框架描述;\\n            图片 = 框架图片;\\n            链接 = 框架链接;\\n            log('框架类型·自定义类型')\\n        }\\n\\n\\n        let list = parseDomForArray(html, 列表);\\n        for (let j in list) {\\n            d.push({\\n                title: parseDomForHtml(list[j], 标题),\\n                desc: parseDomForHtml(list[j], 描述),\\n                img: parseDom(list[j], 图片) + '@Referer=',\\n                url: parseDom(list[j], 链接)\\n            });\\n        }\\n    }\\n})\\n\\n$.exports = new 一级();\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"A方法归档\",\"path\":\"archives\",\"rule\":\"// 需要用时才过来复制\\n\\nconst 一级处理C = (分类链接) => {\\n    let 处理结果 = 分类链接.replace('/type/', '/show/')\\n    return 处理结果\\n}\\n\\nconst 二级处理C = (分类链接) => {\\n    let 处理结果 = 分类链接.replace('/type/', '/show/')\\n    return 处理结果\\n}\\n\\nconst 一级定位 = 'ul&&li[class~=hidden-xs]:gt(0):lt(5)';\\nconst 二级定位 = 'ul&&li:gt(0)';\\n\\n\\n/**\\n * 以下是片单相关\\n *\\nvar 框架类型 = ' '*/\\nvar 列表 = 'body&&a';\\nvar 标题 = 'body&&a';\\nvar 描述 = 'body&&a';\\nvar 图片 = 'body&&a';\\nvar 链接 = 'body&&a';\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/61.png"},{"last_chapter_rule":"js:\nvar html=getResCode();\nvar list=parseDomForArray(html,'.stui-content__playlist&&li');\nsetResult('最新:'+list.length)","title":"奇优影院","author":"香雅情","version":1,"type":"video","url":"http://taoju.tv/list/fyclass_fypage.html[firstPage=http://taoju.tv/list/fyclass.html]","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\n\nfor (var i in list) {\n    var title = parseDomForHtml(list[i], 'a&&title');\n    var img = parseDom(list[i], '.lazyload&&data-original');\n    var url = parseDom(list[i], 'a&&href');\n    var desc = parseDomForHtml(list[i], '.pic-text||span&&Text');\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $(url).rule(() => {\n            eval(JSON.parse(fetch('hiker://page/detail', {})).rule);\n        }),\n        desc: desc\n    });\n}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar kwrd = getResCode();\nitems.push({\n    title: '本次搜索需要点我输入验证码验证',\n    url: $('hiker://empty' + kwrd).rule(() => {\n        var items = [];        \n        addListener(\"onClose\", $.toString(() => {\n            clearMyVar('shtml');\n        }));\n        if (getMyVar('shtml')) {\n            setPageTitle(getResCode());\n            let html = getMyVar('shtml');\n            var list = parseDomForArray(html, '.stui-vodlist__media&&li');\n            for (var i in list) {\n                var title = parseDomForHtml(list[i], 'a&&title');\n                var img = parseDomForHtml(list[i], '.lazyload&&data-original');\n                var url = parseDomForHtml(list[i], 'a&&href');\n                var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n                var con = parseDomForHtml(list[i], '.detail--h3&&Text');\n                items.push({\n                    title: title + ' ' + desc,\n                    img: img + '@Referer=',\n                    url: $('http://taoju.tv' + url).rule(() => {\n                        eval(JSON.parse(fetch('hiker://page/detail', {})).rule);\n                    }),\n                    desc: con,\n                    col_type: 'movie_1_vertical_pic'\n                });\n            }\n        } else {\n            var cok = JSON.parse(fetchCookie('http://taoju.tv/scode.php', {\n                headers: {\n                    'User-Agent': MOBILE_UA,\n                    'Referer': 'http://taoju.tv/v_search.php'\n                },\n                method: 'GET',\n                withHeaders: true\n            })).join(';');\n            var kwrd = getResCode();\n            var spl = 'http://taoju.tv/search.php';\n            var img = 'http://taoju.tv/scode.php?' + escape(new Date().toString()) + '@User-Agent=' + MOBILE_UA + '@Referer=http://taoju.tv' + '@Cookie=' + cok;\n            //显示验证码图片\n            items.push({\n                pic_url: img,\n                url: $('').lazyRule(() => {\n                    return refreshPage();\n                }),\n                desc: '0',\n                col_type: 'pic_1_full'\n            });\n            //显示输入框\n            items.push({\n                title: '',\n                url: \"'toast://你输入的是' + input\",\n                extra: {\n                    onChange: \"putVar('taoju验证码',input)\",\n                    titleVisible: false\n                },\n                col_type: 'input'\n            });\n            //显示验证码发送按钮\n            items.push({\n                title: '发送',\n                url: $('').lazyRule((cok, spl, kwrd) => {\n                    var cod = getVar('taoju验证码');\n                    var html = fetch(spl, {\n                        headers: {\n                            'User-Agent': MOBILE_UA,\n                            'Cookie': cok\n                        },\n                        body: 'verify=' + cod + '&searchword=' + kwrd,\n                        method: 'POST'\n                    });\n                    //对发送验证码后的网页进行判断\n                    if (html.indexOf('输入验证码后查看搜索结果') > 0) {\n                        //refreshPage();\n                        return \"toast://验证失败。\"\n                    } else {\n                        //log(html);\n                        clearMyVar('shtml');\n                        writeFile('hiker://files/cache/taojucookie.txt', 'verify=' + cod + '\\n' + cok);\n                        //back(true);\n                        putMyVar('shtml', html);\n                        refreshPage();\n                        return 'hiker://empty'\n                        //return \"toast://验证成功！请下拉刷新查看搜索结果。\"\n                    }\n                }, cok, spl, kwrd),\n                col_type: 'text_2'\n            });\n        }\n        setHomeResult({\n            data: items\n        });\n    }),\n    content: '验证成功后请下拉刷新查看搜索结果。',\n    col_type: 'text_1'\n});\nres.data = items;\nsetSearchResult(res);","search_url":"hiker://empty**","titleColor":"","group":"⑥电影天堂","detail_col_type":"text_2","detail_find_rule":"","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"mobile","preRule":"if (!fileExist(\"hiker://files/cache/taojucookie.txt\")) {\n    \n    let cook = JSON.parse(fetchCookie('http://taoju.tv/scode.php', {\n        headers: {\n            \"User-Agent\": MOBILE_UA,\n            \"Referer\":\"http://taoju.tv/v_search.php\"\n        }\n    })).join(';');\n    let cont='verify=bkov'+'\\n'+cook\n    writeFile(\"hiker://files/cache/taojucookie.txt\", cont);\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级规则\",\"path\":\"detail\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar html = getResCode();\\nvar tabs = parseDomForArray(html, 'body&&.nav-tabs&&li');\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\n//setError(conts.length);\\n\\nvar thumb = parseDom(html, \\\".stui-content__thumb&&.lazyload&&data-original\\\");\\nd.push({\\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\\n    desc: parseDomForHtml(html, \\\".stui-content__detail&&p,-1&&Text\\\"),\\n    pic_url: thumb,\\n    url: thumb,\\n    col_type: 'pic_1'\\n});\\n\\nfor (var i in conts) {\\n    var list = parseDomForArray(conts[i], 'body&&li');\\n    if (list != null) {\\n        d.push({\\n            title: parseDomForHtml(tabs[i], \\\"body&&Text\\\"),\\n            col_type: 'text_1'\\n        });\\n        //setError(list[0]);\\n\\n        for (var j in list) {\\n            d.push({\\n                title: parseDomForHtml(list[j], \\\"a&&Text\\\"),\\n                url: $(parseDom(list[j], \\\"a&&href\\\")).lazyRule(() => {\\n                    var html = request(input, {});\\n                    var ifr = parseDomForHtml(html, '#playbox&&iframe&&src');\\n                    var lac = JSON.parse(fetch(ifr, {\\n                        headers: {\\n                            'User-Agent': MOBILE_UA,\\n                            'Referer': 'http://taoju.tv/'\\n                        },\\n                        redirect: false,\\n                        withHeaders: true\\n                    })).headers.location[0];\\n                    \\n                    requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                    return x5rule(lac, input);\\n                }),\\n                extra: {\\n                    id: parseDom(list[j], \\\"a&&href\\\"),\\n                    referer: parseDom(list[j], \\\"a&&href\\\")\\n                },\\n                col_type: list.length <= 4 ? 'text_2' : 'flex_button'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//二级模板by香雅情\\nres.data = d;\\nsetHomeResult(res);\"}]","proxy":"","icon":"http://taoju.tv/static/favicon.ico"},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.down-list');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&li:matches(磁力)');\n        chp.push(list.length);\n    }\n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"MP4电影(磁)","author":"香雅情","version":1,"type":"video","url":"hiker://empty##https://www.domp4.cc/list/fyclass-fypage.html","col_type":"movie_1_vertical_pic","class_name":"首页&电视剧&最新电影&动作片&科幻片&爱情片&喜剧片&恐怖片&战争片&剧情片&纪录片&动画片","class_url":"首页&10&99&1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\nvar myurl = 'https://www.domp4.cc';\nvar cnam = MY_URL.split('##')[1];\n//log(getRule());\nif (cnam.includes('首页')) {\n    var html = request(myurl, {});\n    var tabs = parseDomForArray(html, 'body&&.list-group');\n    for (let i = 0; i < tabs.length; i++) {\n        var list = parseDomForArray(tabs[i], 'body&&li:has(a)');\n\n        items.push({\n            title: '““' + parseDomForHtml(tabs[i], '#heading-text&&Text') + '””',\n            col_type: 'text_1'\n        });\n\n        for (let j = 0; j < list.length; j++) {\n            items.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href'),\n                col_type: 'text_center_1'\n            })\n        }\n\n    };\n} else if (cnam.includes('/99')) {\n    var html = request(MY_URL.split('##')[1], {});\n    var list = parseDomForArray(html, '#list_dy&&ul&&li');\n    for (let j = 0; j < list.length; j++) {\n        items.push({\n            title: parseDomForHtml(list[j], 'a&&Text'),\n            url: parseDom(list[j], 'a&&href'),\n            col_type: 'text_center_1'\n        })\n    };\n} else {\n    var html = request(MY_URL.split('##')[1], {});\n    var conts = parseDomForArray(html, 'body&&#list_all');\n    for (var j = 0; j < conts.length; j++) {\n        var list = parseDomForArray(conts[j], 'body&&ul&&li');\n\n        for (var i = 0; i < list.length; i++) {\n            var title = parseDomForHtml(list[i], 'h2&&Text');\n            var img = parseDomForHtml(list[i], '.lazy&&data-original');\n            if (img.substring(0, 4) == 'http') {\n                img = img;\n            } else {\n                img = myurl + img\n            }\n            var url = parseDomForHtml(list[i], 'a&&href');\n            var desc = parseDomForHtml(list[i], '.text_info&&Text');\n            items.push({\n                title: title,\n                pic_url: img + '@Referer=',\n                url: myurl + url,\n                desc: desc\n            });\n        }\n\n    }\n}\n\nres.data = items;\nsetResult(res);","searchFind":"js:\nvar items = [];\r\nvar html = getResCode();\r\nvar list = parseDomForArray(html, '#list_all&&ul&&li');\r\n//setError(list[1]);\r\n\r\nfor (var i = 0; i < list.length; i++) {\r\n    var title = parseDomForHtml(list[i], 'h2&&Text');\r\n    var img = parseDom(list[i], '.lazy&&data-original');\r\n    var url = parseDom(list[i], 'h2&&a&&href');\r\n    var cont = parseDomForHtml(list[i], '.text_info--h2&&Text');\r\n    items.push({\r\n        title: title,\r\n        img: img,\r\n        url: url,\r\n        content: cont\r\n    });\r\n}\r\n\r\nsetResult({\r\n    data: items\r\n});","search_url":"https://www.domp4.cc/search/**-fypage.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar scr=parseDomForHtml(html, '.content&&script:not([src])&&Html');\neval(scr);\nvar json = JSON.parse(down_urls);\n//log(json);\nvar conts = json.Data;\n\nvar thumb = parseDom(html, \".article-header&&img&&src\");\nd.push({\n    title: '剧情简介：',\n    desc: parseDomForHtml(html, \".article-header&&.text&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\n\nfor (var i = 0; i < conts.length; i++) {\n    if (getMyVar('qyyssort', '1') == '0') {\n        var list = conts[i].downurls;\n    } else {\n        var list = conts[i].downurls.reverse();\n    }\n    //var dlist=parseDomForArray(html,'.down-list&&li');\n    if (list != null) {\n        d.push({\n            title: '““' + '列表排序' + '””',\n            url: \"hiker://empty@lazyRule=.js:putMyVar('qyyssort', getMyVar('qyyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n            col_type: 'text_center_1'\n        });\n\n        for (var j = 0; j < list.length; j++) {\n            if (list[j].includes('magnet')) {\n                d.push({\n                    //title: parseDomForHtml(dlist[j],'a&&Text'),\n                    title: list[j].split('$')[0],\n                    url: list[j].split('$')[1],\n                    col_type: 'text_1'\n                });\n            }\n        }\n\n    }\n}\n\n//二级模板\nsetResult({\n    data: d\n});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.domp4.cc/favicon.ico"},{"last_chapter_rule":"","title":"423Down","author":"香雅情","version":1,"type":"other","url":"https://www.423down.com/fyAllpage/fypage;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36}","col_type":"movie_1","class_name":"首页&安卓软件","class_url":"&apk/","area_name":"原创软件&媒体播放&网页浏览&图形图像&聊天软件&办公软件&上传下载&实用软件&系统辅助&系统必备&安全软件&补丁相关&硬件相关&游戏软件","area_url":"zd423/&multimedia/&browser/&image/&im/&work/&down/&safewore/&systemsoft/&systemplus/&security/&patch/&hardware/&game/","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];var html=getResCode();\n//log(html);\nvar list = parseDomForArray(html,'.archive-list&&li:not(:contains(优惠推荐))');\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'h2&&Text');\n        var img = parseDom(list[i], 'img&&src');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.item-meta&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\nsetHomeResult({data:items});","searchFind":".archive-list&&li;h2&&Text;a&&href;.item-category&&Text;.item-meta&&Text;img&&src","search_url":"https://www.423down.com/page/fypage?s=**;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/80.0.3987.132 Mobile Safari/537.36}","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.entry&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'',\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html=getResCode();\nvar list=parseDomForArray(html,'.play_list&&li&&a');\nsetResult('最新:'+list.length)","title":"骚火影视N","author":"香雅情","version":2,"url":"hiker://empty#fyAll#https://saohuotv.com/list/fyAll-fypage.html","col_type":"movie_3","class_name":"首页&电影&喜剧&爱情&恐怖&动作&科幻&战争&犯罪&动画&奇幻&剧情&冒险&悬疑&惊悚&其他","class_url":"首页&1&6&7&8&9&10&11&12&13&14&15&16&17&18&19","area_name":"电视剧&大陆&TVB&韩剧&美剧&日剧&英剧&台剧&其他","area_url":"2&20&21&22&23&24&25&26&27","sort_name":"","year_name":"动漫&搞笑&恋爱&热血&格斗&美少女&魔法&机战&校园&亲子&童话&冒险&真人&LOLI&其它","sort_url":"","year_url":"4&38&39&40&41&42&43&44&45&46&47&48&49&50&51","find_rule":"js:\nvar res = {};\nvar items = [];\nvar cnam = MY_URL.split('#')[1];\n//log(getRule());\nif (cnam == '首页') {\n    var html = request('https://saohuotv.com/', {});\n} else {\n    var html = request(MY_URL.split('#')[2], {});\n}\ntry {\n    var conts = parseDomForArray(html, 'body&&.v_list');\n    for (var j = 0; j < conts.length; j++) {\n        var list = parseDomForArray(conts[j], 'body&&li:has(.v_title)');\n\n        for (var i = 0; i < list.length; i++) {\n            var title = parseDomForHtml(list[i], '.v_title&&Text');\n            var img = parseDomForHtml(list[i], 'img&&data-original');\n            var url = parseDomForHtml(list[i], 'a&&href');\n            var desc = parseDomForHtml(list[i], '.v_note&&Text');\n            items.push({\n                title: title,\n                pic_url: img,\n                url: 'https://saohuotv.com' + url+\"#immersiveTheme#\",\n                desc: desc\n            });\n        }\n\n    }\n} catch (e) {}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar items = [];\nvar html = getResCode();\nif (html.indexOf('请输入正确的验证码继续访问') > 0) {\n    items.push({\n        title: '点击输入验证码后返回刷新',\n        url: $('hiker://empty' + MY_URL).rule(() => {\n            var items = [];\n            var cok = JSON.parse(fetchCookie('https://saohuotv.com/', {\n                headers: {\n                    'User-Agent': MOBILE_UA\n                },\n                method: 'GET',\n                withHeaders: true\n            })).join(';');\n            //log(cok);\n            var spl = getResCode();\n            var kwrd = spl.match(/searchword\\=(.*?)\\&searchtype/)[1];\n            var img = 'https://saohuotv.com/include/vdimgck.php?get=' + new Date() + '@User-Agent=' + MOBILE_UA + '@Cookie=' + cok;\n            items.push({\n                pic_url: img,\n                url: $('').lazyRule(() => {\n                    return refreshPage();\n                }),\n                desc: '0',\n                col_type: 'pic_1_full'\n            });\n\n            items.push({\n                title: '',\n                url: \"'toast://你输入的是' + input\",\n                extra: {\n                    onChange: \"putVar('骚火验证码',input)\",\n                    titleVisible: false\n                },\n                col_type: 'input'\n            });\n\n            items.push({\n                title: '发送',\n                url: $('').lazyRule((cok, spl, kwrd) => {\n                    var cod = getVar('骚火验证码');\n                    var html = fetch('https://saohuotv.com/search.php?scheckAC=check&page=&searchtype=&order=&tid=&area=&year=&letter=&yuyan=&state=&money=&ver=&jq=', {\n                        headers: {\n                            'User-Agent': MOBILE_UA,\n                            'Cookie': cok\n                        },\n                        body: 'validate=' + cod + '&searchword=' + kwrd,\n                        method: 'POST'\n                    });\n                    if (html.indexOf('请输入正确的验证码继续访问') > 0) {\n                        //refreshPage();\n                        return \"toast://验证失败。\"\n                    } else {\n                        writeFile('hiker://files/cache/shaohuoCookie.txt', cok);\n                        back(true);\n                        return \"toast://验证成功！请下拉刷新。\"\n                    }\n                }, cok, spl, kwrd),\n                col_type: 'text_2'\n            });\n            setHomeResult({\n                data: items\n            });\n        }),\n        content: '验证成功后请下拉刷新查看搜索结果。',\n        col_type: 'text_1'\n    });\n} else {\n    var tabs = parseDomForArray(html, 'body&&.v_list&&li:has(.v_title)');\n    for (var i in tabs) {\n        items.push({\n            title: parseDomForHtml(tabs[i], 'a&&title'),\n            url: 'https://saohuotv.com' + parseDomForHtml(tabs[i], 'a&&href') + \"#immersiveTheme#\",\n            desc: parseDomForHtml(tabs[i], '.v_note&&Text'),\n            content: parseDomForHtml(tabs[i], 'body&&Text'),\n            pic_url: parseDomForHtml(tabs[i], 'img&&data-original'),\n        });\n    }\n}\nsetSearchResult({\n    data: items\n});","search_url":"https://saohuotv.com/search.php?page=fypage&searchword=**&searchtype=;get;utf-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:fetch('hiker://files/cache/shaohuoCookie.txt', {})}","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\nvar thumb = parseDom(getResCode(), \".m_background&&div&&style\");\nd.push({\n    title: '剧情简介：',\n    desc: parseDomForHtml(getResCode(), \".p_txt&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar tabs = parseDomForArray(getResCode(), 'body&&.from_list&&li');\nvar conts = parseDomForArray(getResCode(), 'body&&#play_link&&li');\n//setError(conts.length);\n\nfor (var i = 0; i < conts.length; i++) {\n\n    if (getVar('shsort', '1') == '1') {\n        var list = parseDomForArray(conts[i], 'body&&a').reverse();\n    } else {\n        var list = parseDomForArray(conts[i], 'body&&a')\n    }\n\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], \"body&&Text\") + '““切换选集排序””',\n            url: \"hiker://empty@lazyRule=.js:putVar('shsort', getVar('shsort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n            col_type: 'text_1'\n        });\n        //setError(list[0]);\n\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], \"a&&Text\"),\n                url: $(parseDom(list[j], \"a&&href\")).lazyRule(() => {\n                    var get = request(input);\n                    var src = parseDom(get, \"body&&iframe&&src\");\n                    //log(src);\n                    if (/api\\.hhplayer/.test(src)) {\n                        var psurl = 'https://api.hhplayer.com/api.php';\n                    } else if (/play\\.hhplayer/.test(src)) {\n                        var psurl = 'https://play.hhplayer.com/hhjx/api.php'\n                    }\n                    var cc = parseDomForHtml(fetch(src, {}), 'body&&script,0&&Html').split('endebug()\\;')[1].split('var act')[0];\n                    eval(cc);\n                    var cs = 'url=' + url + '&t=' + t + '&key=' + key + '&act=0&play=1';\n                    var fc = fetch(psurl, {\n                        headers: {\n                            'User-Agent': MOBILE_UA,\n                            'referer': 'https://api.hhplayer.com'\n                        },\n                        body: cs,\n                        method: 'POST'\n                    });\n                    var playlink = JSON.parse(fc).url;\n                    if (/obj\\/tos/.test(playlink)) {\n                        return playlink + '#isVideo=true#';\n                    } else {\n                        return (playlink.indexOf('http') != -1 ? playlink : 'https://api.hhplayer.com' + playlink) + '#isVideo=true#'\n                    }\n                }),\n                col_type: list.length > 12 ? 'text_5' : 'text_3'\n            });\n        }\n\n    }\n}\n\n//二级模板\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://saohuotv.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html=getResCode();\nvar list=parseDomForArray(html,'.tabConList&&.ulNumList&&a');\nsetResult('最新:'+list.length)","title":"易看影视","author":"香雅情","version":1,"url":"hiker://empty#fyAll#https://www.ekmov.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"首页&电影&电视剧&综艺&动漫","class_url":"首页&1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&院线片&青春片","area_url":"6&7&8&9&10&11&12&20&24","sort_name":"","year_name":"大陆剧&港剧&韩剧&美剧&台剧&泰剧&日剧","sort_url":"","year_url":"13&14&15&16&21&22&23","find_rule":"js:\nvar res = {};\nvar items = [];\nvar cnam = MY_URL.split('#')[1];\n//log(getRule());\nif (cnam == '首页') {\n    var html = request('https://www.ekmov.com', {});\n} else {\n    var html = request(MY_URL.split('#')[2], {});\n}\ntry {\n    var conts = parseDomForArray(html, 'body&&#data_list');\n    for (var j = 0; j < conts.length; j++) {\n        var list = parseDomForArray(conts[j], 'body&&li');\n\n        for (var i = 0; i < list.length; i++) {\n            var title = parseDomForHtml(list[i], '.sTit&&Text');\n            var img = parseDomForHtml(list[i], 'img&&data-original');\n            var url = parseDomForHtml(list[i], 'a&&href');\n            var desc = parseDomForHtml(list[i], '.sNum&&Text');\n            items.push({\n                title: title,\n                pic_url: img,\n                url: 'https://www.ekmov.com' + url+\"#immersiveTheme#\",\n                desc: desc\n            });\n        }\n\n    }\n} catch (e) {}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"#data_list&&li;.sTit&&Text;a&&href.js:'https://www.ekmov.com'+input+\"#immersiveTheme#\";.sNum&&Text;;img&&data-original","search_url":"https://www.ekmov.com/vodsearch/-------------.html?wd=**&page=fypage;post;utf-8","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\nvar thumb = parseDom(getResCode(), \".posterPic&&img&&src\");\nd.push({\n    title: '剧情简介：',\n    desc: parseDomForHtml(getResCode(), \".movieintro&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar tabs = parseDomForArray(getResCode(), '.tabConList&&span');\nvar conts = parseDomForArray(getResCode(), '.tabConList&&.ulNumList');\n//setError(conts.length);\n\nfor (var i = 0; i < conts.length; i++) {\n\n    if (getVar('ykyssort', '1') == '0') {\n        var list = parseDomForArray(conts[i], 'body&&a').reverse();\n    } else {\n        var list = parseDomForArray(conts[i], 'body&&a')\n    }\n\n    if (list != null) {\n        d.push({\n            title: parseDomForHtml(tabs[i], \"body&&Text\") + '““切换选集排序””',\n            url: \"hiker://empty@lazyRule=.js:putVar('ykyssort', getVar('ykyssort','1')=='1'?'0':'1');refreshPage();'toast://切换成功！'\",\n            col_type: 'text_1'\n        });\n        //setError(list[0]);\n\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], \"a&&Text\"),\n                url: $(parseDom(list[j], \"a&&href\")).lazyRule(() => {\n                    var get = request(input);\n                    var src = parseDom(get, \".ui_hor&&script&&Html\");\n                    eval(src);\n                    return player_data.url\n                }),\n                col_type: list.length > 12 ? 'text_5' : 'text_3'\n            });\n        }\n\n    }\n}\n\n//二级模板\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"蓝莓影视","author":"香雅情","version":1,"type":"other","url":"http://www.lanmeiys.com/fyclass/list.html?country=fyarea&year=fyyear&page=fypage","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"m&t&var&a","area_name":"全部&中国&香港&台湾&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","area_url":"&中国&香港&台湾&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","find_rule":".projects-holder&&.project-item;h2&&Text;img&&src;span&&Text;a&&href","searchFind":"body&&.service-item;h4&&Text;a&&href;*;.service-content--h4&&Text;img&&src","search_url":"http://www.lanmeiys.com/movie/search?keyword=**;post;utf-8","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar html=getResCode();\n/*针对播放线路*/\nvar lazy=`@lazyRule=.js:var get =fetch(input,{});var js = parseDomForHtml(get,\".container&&iframe&&src\");if(js.indexOf('url=')!=-1){var urll=decodeURIComponent(js.split('url=')[1]);if(urll.indexOf('html')!=-1){var jiek=\"https://1717.ntryjd.net/0526/?url=\"+urll;var fileUrl=\"https://cdn.jsdelivr.net/gh/lzk23559/Public_folder/parse.js\";eval(fetch(fileUrl,{}));var url=yqjx.toUrl(jiek);url!=\"\"?url:getUrl(jiek);}else{urll};}else{var urll=parseDomForHtml(fetch(js,{headers:{\"Referer\":\"http://www.lanmeiys.com/\"}}),'body&&iframe&&src');if(urll.indexOf(\"share\")!=-1){var link=urll.split(\"/share\")[0];var fc=fetch(urll,{}).replace(\"var purl\",\"var main\");if(fc.indexOf(\"main\")!=-1){var mat=fc.match(/var main.*?;/)[0];eval(mat);main.indexOf(\"http\")!=-1?main:link+main;}else{var main=fc.match(/url:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1];main.indexOf(\"http\")!=-1?main:link+main};}else{urll}}`;\n/*针对下载线路*/\nvar dnlazy=`@rule=js:var res={};var d=[];var html=getResCode();var cont=parseDomForHtml(html,'.box-content&&Html');var link=parseDomForHtml(cont, \"textarea&&Text\");if(link.indexOf('aHR0')!=-1){var mac=link.match(/\\\\/(aHR0.*?)\\\\//)[1];link=decodeURIComponent(base64Decode(mac));}else{link=link}d.push({\ttitle:link,desc:parseDomForHtml(cont, \".panel-body&&Text\"),url:link,\tcol_type: 'text_1'\t});res.data=d;setHomeResult(res)`;\n/*直接解析*/\nvar zjlazy=`@lazyRule=.js:var urll=input;var jiek=\"https://1717.ntryjd.net/0526/?url=\"+urll;var fileUrl=\"https://cdn.jsdelivr.net/gh/lzk23559/Public_folder/parse.js\";eval(fetch(fileUrl,{}));var url=yqjx.toUrl(jiek);url!=\"\"?url:getUrl(jiek)`;\n\nvar tabs=parseDomForArray(html,'body&&.panel-heading');\nvar conts=parseDomForArray(html,'body&&.list-group');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".blog-image&&img&&src\");\nd.push({\n\t\t\ttitle: '剧情简介：'+'    共'+conts.length+'条线路',\n    desc:parseDomForHtml(html, \".table-dateil&&tr,-1&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nfor(var i = 0;i<conts.length;i++){\n  var list=parseDomForArray(conts[i],'body&&a');\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_1'\n\t\t});\n//setError(list[0]);\n\n   for(var j=list.length-1;j>=0;j--){\n   var url=parseDomForHtml(list[j], \"a&&href\");\nif(url.substring(0,4)=='http'){url=url+zjlazy;}else if(url.indexOf('play')!=-1){url='http://www.lanmeiys.com'+url+lazy;}else{url='http://www.lanmeiys.com'+url+dnlazy}\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:url,\n      col_type: 'text_2'\n\t\t\t});\n   }\n\n  }\n}\n\n//二级模板by香雅情\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"红领巾影院","author":"爱是用心","version":0,"type":"video","url":"https://www.honglingjin.tv/list/fyclass/fypage-fyarea--fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&香港&美国&台湾&韩国&日本&英国&法国&泰国&其他","area_url":"&内地&港&美&台湾&韩&日&英&法&泰&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&更早","sort_url":"影视","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&更早","find_rule":"body&&.stui-vodlist__box;.title&&Text;.lazyload&&data-original;.text-right&&Text;a&&href","searchFind":"body&&.stui-vodlist__box;.title&&Text;a&&href;.text-right&&Text;*;.lazyload&&data-original","search_url":"https://www.honglingjin.tv/search/**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, '.layui-tab-title&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/60.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"小纸条.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://u.gitcafe.net/#","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小纸条"},{"last_chapter_rule":"","title":"人人视频tv","author":"香雅情","version":2,"type":"other","url":"https://web-api.rr.tv/web/drama/filter_search?JsonBody={\"dramaType\":\"fyclass\",\"area\":\"fyarea\",\"plotType\":\"fyyear\",\"sort\":\"fysort\",\"webChannel\":\"M_STATION\",\"page\":fypage};post;utf-8;{User-Agent@Mozilla/5.0&&Content-Type@application/json&&Referer@https://m.rr.tv/}","col_type":"movie_3","class_name":"全部&电视剧&综艺&纪录片&动漫","class_url":"&TV&VARIETY&DOCUMENTARY&COMIC","area_name":"全部&美国&日本&韩国&泰国&英国&内地&中国香港&中国台湾&其它","area_url":"&美国&日本&韩国&泰国&英国&内地&中国香港&中国台湾&其它","sort_name":"最近更新&最热&好评","year_name":"全部&剧情&喜剧&动作&爱情&犯罪&冒险&战争&悬疑&恐怖&科幻&家庭","sort_url":"&hot&score","year_url":"&剧情&喜剧&动作&爱情&犯罪&冒险&战争&悬疑&恐怖&科幻&家庭","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = JSON.parse(getResCode());\n//log(html);\n\nvar list = html.data.content;\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = list[i].title;\n        var img = list[i].coverUrl;\r\n        var vid = list[i].dramaId;\nvar url='https://web-api.rr.tv/web/drama/detail?webChannel=M_STATION&dramaId='+vid+'';\n        var desc = list[i].score;\r\n        items.push({\r\n            title: title,\n            pic_url: img+'@Referer=',\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\nvar res = {};\r\nvar items = [];\r\nvar html = JSON.parse(getResCode());\r\n\r\nvar list = html.data;\r\n\r\nfor (var i = 0; i < list.length; i++) {\r\n    var title = list[i].title;\r\n    var img = list[i].cover;\r\n    var cont = list[i].brief;\r\n    var vid = list[i].id;\r\n    var url = 'https://web-api.rr.tv/web/drama/detail?webChannel=M_STATION&dramaId=' + vid + '';\r\n    var score = list[i].score;\r\n    var flag = list[i].classify;\r\n    items.push({\r\n        title: title,\r\n        pic_url: img + '@Referer=',\r\n        url: url,\r\n        content: cont,\r\n        desc: '评分:' + score + '  类型:' + flag\r\n    });\r\n}\r\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://web-api.rr.tv/web/drama/search/season?keywords=**&size=10&webChannel=M_STATION;get;utf-8;{User-Agent@Mozilla/5.0&&Content-Type@application/json&&Referer@https://m.rr.tv/}","titleColor":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar conts = html.data.episodes;\nvar did = html.data.id;\n//setError(conts.length);\n\nvar thumb = html.data.coverUrl;\nd.push({\n    title: '剧情简介：',\n    desc: html.data.desc,\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n    var title = conts[i].episodeNo;\n    var vid = conts[i].sid;\n    d.push({\n        title: title,\n        url: $('').lazyRule((did, vid) => {\n            var jk = 'https://web-api.rr.tv/web/drama/play?webChannel=M_STATION&dramaId=' + did + '&episodeId=' + vid;\n            var pos = fetch(jk, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA,\n                    \"Referer\": \"http://m.rr.tv/\"\n                }\n            });\n            //log(pos);\n            return JSON.parse(pos).data.url\n        }, did, vid),\n        col_type: 'text_2'\n    });\n}\n\n//二级模板\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"139影视Q","author":"","version":0,"type":"other","url":"https://www.139ys.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&国产剧&动漫&综艺","class_url":"dianying&guochanju&dongman&zongyi","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.139ys.com/vodsearch/-------------.html?wd=**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"稀饭.DR","author":"道长&幻梦月光贝","version":1,"type":"video","url":"hiker://empty##https://www.xifanys.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/yingpiandetail/','true');\n//一级书签('/yingpiandetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/yingpiansearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=稀饭"},{"last_chapter_rule":"","title":"gimgtv影视Q","author":"","version":0,"type":"other","url":"https://gimytv.co/genre/fyclass---fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫","class_url":"movies&tvseries&anime","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://gimytv.co/search/-------------.html?wd=**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"libvio.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://libvio.me","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=libvio"},{"firstHeader":"class","last_chapter_rule":"","title":"Novipnoad.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.novipnoad.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=Novipnoad"},{"firstHeader":"class","last_chapter_rule":"","title":"Hdmoli.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.hdmoli.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=Hdmoli"},{"last_chapter_rule":"","title":"YYets","author":"ZHJ","version":0,"type":"video","url":"https://m.yysub.net/api/resource?p=fypage&channel=fyAll","col_type":"movie_1_vertical_pic","class_name":"电影&剧集","class_url":"movie&tv","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\n\nlet list = JSON.parse(html).list;\nfor(let i of list){\n\n是否上映=i.play_status\nif(i.play_status==\"已上映\"){\n\n是否上映=\"✅\"\n} else if(i.play_status==\"未上映\"){\n是否上映=\"❌\"\n}\n\n            d.push({\n                    title: i.cnname+\"--\"+是否上映,\n                    desc: \"地区:\"+i.area+\" 类型:\"+i.category,\n                    pic_url: i.poster+\"@Referer=\"+i.poster,   \n                    col_type:\"\",\n                    url: \"https://m.yysub.net/resource?id=\"+i.id\n           })\n      }\n\n\n\n\n\n\n\n\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\n\nlet data = JSON.parse(html).data;\nfor(let i of data){\n            d.push({\n                    title: i.cnname,\n                    desc: i.play_status,\n                    pic_url: i.poster+\"@Referer=\"+i.poster,   \n                    col_type:\"\",\n                    url: \"https://m.yysub.net/resource?id=\"+i.itemid\n           })\n      }\n\n\n\n\n\n\n\n\n\nres.data = d;\nsetHomeResult(res);","search_url":"https://m.yysub.net/api/search?keyword=**&type=resource&p=fypage","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = []; //自定义一个 空数组\nvar html = getResCode();\n\n\nlazy = $().lazyRule(() => {\n\nlet data=JSON.parse(request(input.split('hiker://empty')[0])).data;\n\nlet 磁力=data[0].address;\n\nlog(data)\ncopy(磁力)\nreturn 磁力;\n\n})\n\n\n\n\n\nrid = MY_URL.split(\"id=\")[1]\n请求磁力列表链接 = \"https://m.yysub.net/api/resource_item?rid=\" + rid\n磁力列表 = request(请求磁力列表链接)\n\n\nlet item_list = JSON.parse(磁力列表).data.item_list;\n\n\nif(item_list.length<1){\n\nd.push({\ntitle:\"暂无相关资源\",\ncol_type: \"text_1\"\n});\n\n\n\n\n}else{\nvar 磁力分类数组 = new Array()\n磁力分类数组=[\"DVD\",\"HDTV\",\"720P\",\"1080P\",\"2160P\",\"WEB-720P\",\"WEB-1080P\",\"WEB-2160P\",\"BD-720P\",\"BD-1080P\",\"BD-2160P\"];\n\n\nfor (let i of item_list) {\n\n    for(j=0;j<磁力分类数组.length;j++){\n\nif(磁力分类数组[j].includes(\"间隔\"))  清晰度=磁力分类数组[j].split(\"间隔\")[0]\nelse 清晰度=磁力分类数组[j]\n\n\n\n        if(i.format==清晰度&&i.episode==0){\n              磁力分类数组[j]=磁力分类数组[j]+'间隔'+i.id+'&'+i.size+'&'+i.name\n              \n        }else if(i.format==清晰度){\n              磁力分类数组[j]=磁力分类数组[j]+'间隔'+i.id+'&'+i.size+'&'+i.episode+'&'+i.name\n              \n        }\n\n\n\n\n    }\n}\n\n\n\n\n\nfor(i=0;i<磁力分类数组.length;i++){\n\nif(磁力分类数组[i].includes(\"间隔\")){\n\n清晰度=磁力分类数组[i].split(\"间隔\")[0]\nd.push({           \n        title: 清晰度,\n        pic_url: \"https://lanmeiguojiang.com/tubiao/ke/157.png\",\n        col_type: \"avatar\"           \n})\n\nlog(磁力分类数组[i])\n\n磁力列表=磁力分类数组[i].split(\"间隔\")\n\n\n\nfor(j=1;j<磁力列表.length;j++){\n\n磁力信息=磁力列表[j].split(\"&\")\n中字=\"\"\n\nif(磁力信息.length==4){\nif(磁力信息[3].includes(\"内嵌\"))中字=\"✅\"\nd.push({           \n        title: 中字+\"第\"+磁力信息[2]+\"集\"+磁力信息[1],\n        url: \"https://m.yysub.net/api/resource_item_file?itemid=\"+磁力信息[0]+lazy,\n        col_type: \"text_2\"           \n        \n})\n}else{\nif(磁力信息[2].includes(\"内嵌\"))中字=\"✅\"\nd.push({           \n        title: 中字+磁力信息[1],\n        url: \"https://m.yysub.net/api/resource_item_file?itemid=\"+磁力信息[0]+lazy,\n        col_type: \"text_2\"           \n        \n})\n}\n\n\n\n}\n}\n}\n}\n\n\n\n\n        \n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://p1.meituan.net/dpplatform/88120e44eba18f517b33c7782f4d19e96567.png"},{"last_chapter_rule":"","title":"你懂得视频","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://989.xns10.com/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.stui-header__menu'\n\nconst 拼接分类 = 'body&&.stui-screen__list'\n\nconst 小类定位 = 'body&&a:not(:contains(首页)):not(:contains(专题)):not(:contains(APP下载))'\n\nconst 分类标题 = 'a&&Text'\n\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url\n        .replace(/type/,'show')\n        .replace('.html', '/page/' + page + '.html')\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://989.xns10.com/index.php/vod/search/page/fypage/wd/**.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://989.xns10.com/template/jianbai-2/statics/img/logo.png"},{"last_chapter_rule":"","title":"用心资源网采","author":"道长&爱是用心","version":5,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nconst {color,small,unique2} = $.require(\"hiker://page/tools?rule=\"+ QING_TITLE);\n\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n                if (disTabModify&&typeShow) {\n                    rules = rules.filter((v) => v.type === typeShow);\n                }else if(!disTabModify){\n                    typeNow = typeShow || '全部';\n                    if(typeNow==='其他'){\n                        rules = rules.filter((v) => !v.sort_url);\n                    }else if(typeNow!=='全部'){\n                        rules = rules.filter((v) => v.sort_url===typeNow);\n                    }\n                }\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow,disTabModify),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            el.push({\n                title: title + ' ' + color(cnt, '#ff7000'),\n                url: k === typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                    putMyVar('typeShow', k)\n                    refreshPage(false)\n                    return 'hiker://empty'\n                }, k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    typeNow = typeShow || '全部';\n    for (let k in types) {\n        let its = types[k];\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url).length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        el.push({\n            title: title + ' ' + color(cnt, '#ff7000'),\n            url: its === typeNow ? 'hiker://empty' : $('#noLoading#').lazyRule((its) => {\n                putMyVar('typeShow', its);\n                refreshPage(false)\n                return 'hiker://empty'\n            }, its),\n            col_type: 'scroll_button'\n        })\n    }\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url);\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=4306');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disTabModify = readFile('disTabModify'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\nif(disTabModify===''){\\n    saveFile('disTabModify', defaultDisTabModify+'');\\n    disTabModify = defaultDisTabModify;\\n}else if(/true|false/.test(disTabModify)){\\n    disTabModify = JSON.parse(disTabModify);\\n}\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💠 分类自定义: ' + (disTabModify ? '否' : '是') + '  ',\\n    url: $('#noLoading#').lazyRule((disTabModify) => {\\n        saveFile('disTabModify', disTabModify ? 'false' : 'true');\\n        putMyVar('typeShow', '');\\n        refreshPage();\\n        return 'hiker://empty'\\n    }, disTabModify),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(thisRULE.title + \\\"@pre\\\", \\\"no\\\")\\n    if (\\\"yes\\\" != loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(thisRULE.title + \\\"@pre\\\", \\\"yes\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"},{\"name\":\"仓库工具\",\"path\":\"tools\",\"rule\":\"js:\\n$.exports.range = function(m, n) {\\n    return Math.floor(Math.random() * (m - n + 1) + n);\\n}\\n$.exports.color = function(text, color) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n}\\nfunction htmlTag(tag, text) {\\n    text += \\\"\\\";\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n    }\\n    return \\\"““””\\\" + \\\"<\\\" + tag + \\\">\\\" + text + \\\"</\\\" + tag + \\\">\\\";\\n\\n}\\n\\nfunction getNowFormatDate() {\\n            let date = new Date();\\n            let seperator1 = \\\"-\\\";\\n            let seperator2 = \\\":\\\";\\n            let month = date.getMonth() + 1;\\n            let strDate = date.getDate();\\n            let strHours = date.getHours();\\n            let strMinutes = date.getMinutes();\\n            let strSeconds = date.getSeconds()+1;\\n            if (month >= 1 && month <= 9) {\\n                month = \\\"0\\\" + month\\n            }\\n            if (strDate >= 0 && strDate <= 9) {\\n                strDate = \\\"0\\\" + strDate\\n            }\\n            if (strHours >= 0 && strHours <= 9) {\\n                strHours = \\\"0\\\" + strHours\\n            }\\n            if (strMinutes >= 0 && strMinutes <= 9) {\\n                strMinutes = \\\"0\\\" + strMinutes\\n            }\\n            if (strSeconds >= 0 && strSeconds <= 9) {\\n                strSeconds = \\\"0\\\" + strSeconds\\n            }\\n            //let currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + \\\" \\\" + strHours + seperator2 + strMinutes + seperator2 + strSeconds;\\n            let currentdate = (date.getFullYear()-2020)+''+ month +''+ strDate +''+ strHours+'' + strMinutes +''+ Math.ceil(strSeconds/7);\\n            return parseInt(currentdate)\\n        }\\n$.exports.getNowFormatDate = getNowFormatDate;\\n$.exports.htmlTag = htmlTag;\\n$.exports.small = function(text) {\\n    return htmlTag(\\\"small\\\", text);\\n}\\n$.exports.unique2 = function unique2(array){\\n    return Array.from(new Set(array));\\n}\\n$.exports.strDeal = function strDeal(str){\\n    str = str.split('');\\n    str = str.filter(e => (e >= 0 && e <= 9) || (e >= 'a' && e <= 'z') || (e >= 'A' && e <= 'Z') || (e >= '\\\\u4e00' && e <= '\\\\u9fa5'));\\n    str = str.join('');\\n    return str\\n}\"}]","proxy":"","icon":"http://q1.qlogo.cn/g?b=qq&nk=1302407216&s=640"},{"firstHeader":"class","last_chapter_rule":"","title":"ahhhhfs – A姐分享.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.ahhhhfs.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=ahhhhfs – A姐分享"},{"last_chapter_rule":"","title":"6080","author":"","version":2,"type":"other","url":"https://www.6080dy1.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.6080dy1.com/vodsearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视之家","author":"","version":1,"type":"video","url":"https://www.wybg666.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&国产剧&港台剧&日韩剧&欧美剧&泰剧","class_url":"1&2&3&4&13&14&15&16&20","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.wybg666.com/vodsearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视之家②","author":"","version":0,"type":"video","url":"http://yszjvip.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&日韩剧&美剧&综艺&动漫&午夜剧场","class_url":"1&2&7&8&3&4&36","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://yszjvip.com/index.php/vod/search/page/fypage/wd/**.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"COKEMV","author":"道长","version":4,"type":"video","url":"https://cokemv.me/vodshow/fyclass--------fypage---.html","col_type":"movie_3_marquee","class_name":"抖音电影&新片快递&电影&剧集&动漫&综艺","class_url":"34&35&1&2&3&29","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('WD=');","search_url":"hiker://empty##https://cokemv.me/vodsearch/**----------fypage---.html","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=需"},{"firstHeader":"class","last_chapter_rule":"","title":"爱看影视.DR","author":"道长","version":2,"type":"video","url":"https://ikan6.vip/vodtype/fyclass-fypage/","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫&日韩剧&美剧","class_url":"1&2&3&4&15&16","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('submit=');","search_url":"hiker://empty##https://ikan6.vip/vodsearch/**----------fypage---/","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=爱看影视①"},{"last_chapter_rule":"","title":"搜猫","author":"小棉袄🌞","version":0,"type":"video","url":"","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"","searchFind":"","search_url":"https://www.soumao.cc/search?q=**","titleColor":"#f20c00","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"哔嘀影视N","author":"","version":0,"type":"other","url":"https://www.52bdys.com/s/all/fypage?type=fyclass&order=fysortfyareafyyear","col_type":"movie_3","class_name":"不限&电影&电视剧","class_url":"&0&1","area_name":"不限&中国大陆&中国香港&中国台湾&美国&英国&日本&韩国&法国&印度&德国&西班牙&意大利&澳大利亚&比利时&瑞典&荷兰&丹麦&加拿大&俄罗斯","area_url":"&＆＆area=%E4%B8%AD%E5%9B%BD%E5%A4%A7%E9%99%86&＆＆area=%E4%B8%AD%E5%9B%BD%E9%A6%99%E6%B8%AF&＆＆area=%E4%B8%AD%E5%9B%BD%E5%8F%B0%E6%B9%BE&＆＆area=%E7%BE%8E%E5%9B%BD&＆＆area=%E8%8B%B1%E5%9B%BD&＆＆area=%E6%97%A5%E6%9C%AC&＆＆area=%E9%9F%A9%E5%9B%BD&＆＆area=%E6%B3%95%E5%9B%BD&＆＆area=%E5%8D%B0%E5%BA%A6&＆＆area=%E5%BE%B7%E5%9B%BD&＆＆area=%E8%A5%BF%E7%8F%AD%E7%89%99&＆＆area=%E6%84%8F%E5%A4%A7%E5%88%A9&＆＆area=%E6%BE%B3%E5%A4%A7%E5%88%A9%E4%BA%9A&＆＆area=%E6%AF%94%E5%88%A9%E6%97%B6&＆＆area=%E7%91%9E%E5%85%B8&＆＆area=%E8%8D%B7%E5%85%B0&＆＆area=%E4%B8%B9%E9%BA%A6&＆＆area=%E5%8A%A0%E6%8B%BF%E5%A4%A7&＆＆area=%E4%BF%84%E7%BD%97%E6%96%AF","sort_name":"更新时间&豆瓣评分","year_name":"不限&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"&1","year_url":"&＆＆year=2022&＆＆year=2021&＆＆year=2020&＆＆year=2019&＆＆year=2018&＆＆year=2017&＆＆year=2016&＆＆year=2015&＆＆year=2014&＆＆year=2013&＆＆year=2012&＆＆year=2011&＆＆year=2010&＆＆year=2009&＆＆year=2008&＆＆year=2007&＆＆year=2006&＆＆year=2005&＆＆year=2004&＆＆year=2003&＆＆year=2002&＆＆year=2001&＆＆year=2000","find_rule":".cards&&.card;.content&&span&&Text;img&&src;.ep||.rate||.meta&&Text;a&&href","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar wod = MY_URL.match(/search\\/(.*?)\\/[\\d]/)[1];\nif (html.indexOf('请输入验证码') > 0) {\n    items.push({\n        title: '本次搜索需要输入验证码，验证成功后返回下拉刷新。',\n        url: $('hiker://empty').rule((wod) => {\n            var items = [];\n            //var cok = fetch('hiker://files/cache/libvioCookie.txt', {});\n            var cok = JSON.parse(fetchCookie('https://www.52bdys.com/search/verifyCode?t=' + new Date().getTime(), {\n                headers: {\n                    'X-Requested-With': 'XMLHttpRequest',\n                    'User-Agent': MOBILE_UA\n                },\n                method: 'GET',\n                withHeaders: true\n            })).join(';');\n            //log(cok);\n            var img = 'https://www.52bdys.com/search/verifyCode?t=' + new Date().getTime() + '@User-Agent=' + MOBILE_UA + '@Cookie=' + cok;\n            items.push({\n                pic_url: img,\n                url: $('').lazyRule(() => {\n                    return refreshPage();\n                }),\n                desc: '0',\n                col_type: 'pic_1_full'\n            });\n\n            items.push({\n                title: '',\n                url: \"'toast://你输入的是' + input\",\n                extra: {\n                    onChange: \"putMyVar('验证码',input)\",\n                    titleVisible: false\n                },\n                col_type: 'input'\n            });\n\n            items.push({\n                title: '发送',\n                url: $('').lazyRule((cok, wod) => {\n                    var cod = getMyVar('验证码');\n                    var json = fetch('https://www.52bdys.com/search/' + wod + '?code=' + cod, {\n                        headers: {\n                            'User-Agent': MOBILE_UA,\n                            'Cookie': cok\n                        }\n                    });\n                    //log(json);\n                    if (json.indexOf('请输入验证码') != -1) {\n\n                        return \"toast://验证失败，请重试！\"\n                    } else {\n                        //refreshPage();\n                        writeFile('hiker://files/cache/bdeCookie.txt', cok);\n                        back(true);\n                        return \"toast://验证成功，请下拉刷新页面。\"\n                        \n                    }\n\n                }, cok, wod),\n                col_type: 'text_2'\n            });\n            setHomeResult({\n                data: items\n            });\n        }, wod),\n        col_type: 'text_1'\n    });\n} else {\n    var list = parseDomForArray(html, '.cards&&.card');\n    for (var i = 0; i < list.length; i++) {\n        var title = parseDomForHtml(list[i], '.content&&.header&&Text');\n        var img = parseDom(list[i], 'img,-1&&src').replace('https://bde4.com', '');\n        var url = parseDom(list[i], '.content&&.header&&href');\n        var desc = parseDomForHtml(list[i], '.meta&&Text');\n        var cont = parseDomForHtml(list[i], '.description&&Text');\n        items.push({\n            title: title,\n            img: img,\n            url: url,\n            desc: desc,\n            content: cont\n        });\n    }\n}\nres.data = items;\nsetSearchResult(res);","search_url":"https://www.52bdys.com/search/**/fypage;get;utf-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:fetch('hiker://files/cache/bdeCookie.txt', {})}","group":"⑥电影天堂","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nif (html.includes('secondary')) {\n    items.push({\n        title: '在线播放',\n        col_type: 'text_1'\n    });\n    var plist = parseDomForArray(html, 'body&&.secondary');\n\n    var col_type = parseDomForHtml(plist[0], 'a&&Text').length > 5 ? 'text_2' : 'text_4';\n    for (let i in plist) {\n        items.push({\n            title: parseDomForHtml(plist[i], 'a&&Text'),\n            url: 'x5://' + parseDom(plist[i], 'a&&href'),\n            col_type: col_type,\n            extra: {\n                blockRules: ['baidu.com', 'google', 'srgwxvm.cn', 'aliys.net', '/images/close.png', '/wwpic/51986_tU3e8L-mTtuXB6L_1650902996/0']\n            }\n        });\n    }\n};\n\nif (html.includes('id=\"download-list')) {\n    items.push({\n        title: '下载地址(磁力/电驴)',\n        col_type: 'text_1'\n    });\n    var mid = parseDomForHtml(html, '#reply-form&&input&&value');\n    var json = JSON.parse(request('https://www.52bdys.com/downloadInfo/list?mid=' + mid, {\n        headers: {\n            \"Referer\": \"https://www.52bdys.com\"\n        }\n    }));\n    for (let i in json) {\n        items.push({\n            title: json[i].downloadCategory.name,\n            url: json[i].url,\n            col_type: 'text_3'\n        });\n    }\n};\n\nif (html.includes('id=\"torrent-list')) {\n    items.push({\n        title: '种子列表',\n        col_type: 'text_1'\n    });\n    var trlist = parseDomForArray(html, '#torrent-list&&.item');\n    for (let i in trlist) {\n        items.push({\n            title: parseDomForHtml(trlist[i], 'a&&Text'),\n            url: parseDom(trlist[i], 'a&&href') + \";{Referer@\" + MY_URL + \"}\",\n            col_type: 'text_center_1'\n        });\n    }\n};\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.52bdys.com/images/favicon.png"},{"last_chapter_rule":"","title":"AI搜索","author":"","version":48,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"根据搜索地址生成聚合搜索器，无二级解析，如有需要请用AI识片\",\n    url: \"\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入要生成的规则合集名\",\n    pic_url: \"\",\n    extra: {        \n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"r1\", input);\n        }),\n        defaultValue: getMyVar(\"r1\",\"\")\n    }\n});\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"示例：\\n规则1@http://1.com?kw=%E4%BD\\n规则2@http://2.com?kw=%E4%BD\",\n    pic_url: \"\",\n    extra: {\n        type: \"textarea\",\n        height: 3,\n        highlight: true,\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"rule\", input);\n        }),\n        defaultValue: getMyVar(\"rule\", \"\")\n    }\n});\n\nd.push({\n    title: \"生成规则\",\n    url: $(\"#noLoading#\").lazyRule((rule1) => {\n        let rules = getMyVar(\"rule\", \"\");\n        let r1 = getMyVar(\"r1\", \"\");\n        rules = rules.split(\"\\n\")\n        .filter(it => it.includes(\"@\"))\n        .map(it=>{\n            let a = it.split(\"@\");\n            let r = decodeURIComponent(a[1]);\n            r = r.replace(new RegExp(\"[\\u4e00-\\u9fa5]+\", \"g\"), \"**\");\n            return a[0] + \"@\" + r;\n        })\n        .join(\"\\\\n\");\n        if (rules == \"\") {\n            return \"toast://请先在上面输入网站搜索地址合集\";\n        }\n        rule = JSON.parse(fetch(\"hiker://home@\" + rule1));\n        rule.find_rule = \"js:$.require('hiker://page/pro')\";\n        rule.url = \"hiker://empty##fypage\";\n        return \"海阔视界￥home_rule￥\" + JSON.stringify(rule)\n            .replace(\"{RULES}\", rules)\n            .replace(rule1, r1);\n    }, MY_RULE.title),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"来个示例\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        putMyVar(\"rule\", \"AppMovie@https://www.appmovie.cc/index.php/vod/search.html?wd=%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84&submit=\");\n        putMyVar(\"r1\", \"AI测试\");\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_2\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"以下为测试区域\",\n    url: \"\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nd.push({\n    title: \"\",\n    url: \"\",\n    col_type: \"input\",\n    desc: \"请输入网站搜索地址，要带搜索词\",\n    pic_url: \"\",\n    extra: {\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"r\", input);\n        }),\n        defaultValue: getMyVar(\"r\", \"\")\n    }\n});\n\n\nd.push({\n    title: \"搜索测试\",\n    url: $.toString(() => {\n        let r = getMyVar(\"r\", \"\");\n        if (r == \"\") {\n            return \"toast://请先在上面输入网站搜索地址\";\n        }\n        putMyVar(\"s\", input);\n        r = decodeURIComponent(r);\n        let surl = r.replace(new RegExp(\"[\\u4e00-\\u9fa5]+\", \"g\"), \"**\");\n        return \"hiker://page/s?key=\" + input + \"&u=\" + base64Encode(surl);\n    }),\n    col_type: \"input\",\n    desc: \"请输入关键词测试\",\n    pic_url: \"\",\n    extra: {\n        defaultValue: getMyVar(\"s\", \"\")\n    }\n});\n\nd.push({\n    title: \"来个示例\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        putMyVar(\"r\", \"https://www.appmovie.cc/index.php/vod/search.html?wd=%E4%BD%A0%E6%98%AF%E6%88%91%E7%9A%84&submit=\");\n        putMyVar(\"s\", \"龙之家族\");\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup?p=fypage\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"float&&100%\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        canBack: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {       \\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    },\\n                    longClick: [{\\n                        title: \\\"禁用\\\" + it.name,\\n                        js: $.toString((name) => {\\n                            confirm({\\n                                title: \\\"温馨提示\\\",\\n                                content: \\\"确认删除禁用\\\" + name + \\\"吗？\\\",\\n                                confirm: $.toString((name, rule) => {\\n                                    let {\\n                                        removeRule\\n                                    } = $.require(\\\"hiker://page/data?rule=\\\" + rule);\\n                                    removeRule(name);\\n                                    refreshPage();\\n                                    return \\\"toast://OK\\\";\\n                                }, name, MY_RULE.title)\\n                            })\\n                            return \\\"hiker://empty\\\";\\n                        }, it.name)\\n                    }, {\\n                        title: \\\"访问首页\\\",\\n                        js: \\\"'x5://\\\" + getHome(it.url) + \\\"'\\\"\\n                    }, {\\n                        title: \\\"搜索此源\\\",\\n                        js: \\\"'hiker://page/singles'\\\"\\n                    }]\\n                }\\n            });\\n        }       \\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `{RULES}`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.toLowerCase().includes(key);\\n    }\\n    key = key.toLowerCase();\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\"AI技术\\\",\\n        url: \\\"confirm://基于AI识片自动分析源码技术，代码完全开源，数据来源于原网站，软件和规则不提供任何内容.js:''\\\",\\n        col_type: \\\"flex_button\\\"\\n    });\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"霸王龙字幕组","author":"ZHJ","version":0,"type":"video","url":"https://t-rex.tzfile.com/fyAll/page/fypage","col_type":"movie_3","class_name":"电影&动画&美剧&英剧&日剧&韩剧&泰剧","class_url":"%e7%94%b5%e5%bd%b1&%e5%8a%a8%e7%94%bb&meiju&yingju&riju&hanju&taiju","area_name":"真人秀综艺&纪录片&其他剧","area_url":"%e7%9c%9f%e4%ba%ba%e7%a7%80%e7%bb%bc%e8%89%ba&%e7%ba%aa%e5%bd%95%e7%89%87&qitaju","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\nvar lbb_a = pdfa(html,'.posts-wrapper&&.col-lg-3');\n\nfor (var i in lbb_a) {\n标题=pdfh(lbb_a[i],'h2&&a&&title')\n图片=pdfh(lbb_a[i],'.lazyload&&data-src')\n链接=pdfh(lbb_a[i],'a&&href')\n备注=pdfh(lbb_a[i],'time&&Text')\n\nd.push({\ntitle:标题,\npic_url:图片+\"@Referer=https://t-rex.tzfile.com/\",\nurl:链接,\ndesc:备注,\ncol_type: \"movie_3\"\n});\n\n\n}\n\n\n\n\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\nvar lbb_a = pdfa(html,'.posts-wrapper&&.col-lg-3');\n\nfor (var i in lbb_a) {\n标题=pdfh(lbb_a[i],'h2&&a&&title')\n图片=pdfh(lbb_a[i],'.lazyload&&data-src')\n链接=pdfh(lbb_a[i],'a&&href')\n备注=pdfh(lbb_a[i],'time&&Text')\n\nd.push({\ntitle:标题,\npic_url:图片+\"@Referer=https://t-rex.tzfile.com/\",\nurl:链接,\ndesc:备注,\ncol_type: \"movie_3\"\n});\n\n\n}\n\n\n\n\n\nres.data = d;\nsetHomeResult(res);","search_url":"https://t-rex.tzfile.com/page/fypage/?s=**","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar d = [];//自定义一个 空数组\nvar html = getResCode();\n\nvar lbb_a =pdfa(html,'.entry-wrapper&&p');\nlog(lbb_a)\n\n\n\nfor (var i in lbb_a) {\nif(lbb_a[i].includes(\"www.aliyundrive.com\")){\n\n阿里云盘链接=pdfh(lbb_a[i],'a&&href')\n\nd.push({\ntitle:\"““云盘汇影””\",\nurl:'hiker://page/detail?rule=云盘汇影&url='+阿里云盘链接,\ncol_type: \"text_center_1\"\n});\n\n}\n\n}\n\n文章=\"<body>\"+\"<h2>\"+pdfh(html,'.entry-title&&Text')+\"</h2>\"+pdfa(html,'.entry-wrapper&&p')+\"</body>\"\n\nlog(pdfh(lbb_a,'Html'))\n\nd.push({\ntitle:文章.replace(/\\,/g,'').replace(/\\jpg/g,'jpg@Referer=https://t-rex.tzfile.com/').replace(/\\png/g,'jpg@Referer=https://t-rex.tzfile.com/'),\ncol_type: \"rich_text\"\n});\n\n\n\n\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule) {\\n    return $.toString((rule) => {\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/t-rex\\\\.tzfile\\\\.com\\\\/[0-9]*\\\\.html/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        }\\n    }, rule);\\n}\"}]","proxy":"","icon":"https://tvax3.sinaimg.cn/crop.0.3.440.440.180/008btxx5ly8h0pj0aw9yfj30c80cfaap.jpg"},{"last_chapter_rule":"","title":"NEW字幕组2","author":"ZHJ","version":0,"type":"video","url":"https://newzmz.com/subres/index/getres.html?label_id_2=fyAll&page=fypage&snpage=10","col_type":"movie_3","class_name":"剧集&电影&动漫&纪录片&真人秀&脱口秀&音乐剧","class_url":"YrzyQzZM&B5zdpzYn&ONeOY3E5&Ok36XeKq&AW3ndeG5&Rv3jK9zy&5V3kXwz0","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nlet json = JSON.parse(html).data;\nfor(let data of json){\n            d.push({\n                    title: data.name ,   \n                    desc: data.name_eng,\n                    pic_url: data.image_url,   \n                    col_type:\"\",\n                    url: \"https://ysfx.tv/view/\"+data.link_url.split(\"details-\")[1]\n           })\n      }\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nlet json = JSON.parse(html).data;\nfor(let data of json){\n            d.push({\n                    title: data.name ,   \n                    desc: data.name_eng,\n                    pic_url: data.image_url,   \n                    col_type:\"\",\n                    url: \"https://ysfx.tv/view/\"+data.link_url.split(\"details-\")[1]\n           })\n      }\n\n\nsetResult(d);","search_url":"https://newzmz.com/subres/index/getres.html?keyword=**&page=fypage&snpage=10","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lbb_a = pdfa(html,'.mt-lg-0&&.faq--wrapper');\nfor (var i in lbb_a) {\n           季分类=pdfh(lbb_a[i],'.main-title&&Text')\n\nif(季分类.length<1){\n\nif(html.includes(\"S0\")&&html.includes(\"E0\")&&html.includes(\"S00\")==false) 季分类=\"第 \"+html.split(\"S0\")[1].split(\"E0\")[0]+\" 季\"\nelse 季分类=\"全片\"\n\n\n\n}\n\n\n\n\nd.push({\ntitle:季分类.replace(\" 批量复制磁力链\",\"\"),\npic_url:\"https://lanmeiguojiang.com/tubiao/ke/157.png\",\ncol_type: \"avatar\"\n});\nvar html_a = pdfh(lbb_a[i],'Html');\n\nvar lbb_b = pdfa(html_a,'body&&.team-con-area');\nfor (var j in lbb_b) {\n\n磁力=pdfh(lbb_b[j],'ul&&a&&href')\n标题=pdfh(lbb_b[j],'.up&&Text')\n\nd.push({\ntitle:标题,\nurl:磁力,\ncol_type: \"text_2\"\n});\n\n}\n\n\n\n\n}\n\n\n\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://p0.meituan.net/dpplatform/8fd522f82b449570ccece00a092db1195085.png"},{"last_chapter_rule":"","title":"国际服小姐姐♔","author":"蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.xjjmv.com\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"last_chapter_rule":"","title":"好看视频🐰","author":"家娃","version":20221130,"type":"video","url":"https://%68%61%6f%6b%61%6e.%62%61%69%64%75.com/web/video/longpage?type=fyclass&pn=fypage&rn=20","col_type":"movie_3","class_name":"全部&古装剧&家庭剧&爱情剧&悬疑剧&武侠剧&喜剧&战争剧","class_url":"0&1&2&3&4&5&6&7","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res={};var d=[];\nvar json =JSON.parse(getResCode());\nfor (var i = 0; i < json.data.response.page_data.length; i ++) {\nvar j=json.data.response.page_data[i];\n //log(j);\nd.push({\ntitle:j.videoName,\npic_url:j.verticalImage,\ndesc:j.introduction,\nurl:'https://haokan.baidu.com/v?vid='+j.firstEpisodes,\n}); \n}\nres.data=d;setHomeResult(res);","searchFind":"js:\n\nvar d=[];\nvar res={};\nlet json=JSON.parse(getResCode());\nvar searchList = json.data.list;\nfor (var i in searchList) {\n\td.push({\n\t\ttitle:searchList[i].title,\n\t\timg:searchList[i].cover_src,\n\t\tdesc:searchList[i].author,\n\t\tcontent:searchList[i].title,\n\t\turl: searchList[i].url\n\t\t}); \n}\nres.data = d;\nsetSearchResult(res);\n//setResult(d);","search_url":"https://%68%61%6f%6b%61%6e.%62%61%69%64%75.com/web/search/api?pn=fypage&rn=10&type=video&query=**","group":"⑥电影天堂","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//去除网页换行符\nhtml = html.replace(/\\n*/g, '').replace(/&quot;/g, '');\n//获取json \nvar jsonstr = html.match(/PRELOADED_STATE__ = (.*?);/)[1];\nvar json = JSON.parse(jsonstr);\nif (json.responseInfo) {\n    d.push({\n        title: json.responseInfo.msg,\n        col_type: 'text_center_1'\n    });\n} else {\n    //线路名列表的定位\n    var arts = json.curVideoMeta.clarityUrl;\n    var lists = [];\n    //线路名列表名称的定位\n    var tabs = [];\n    for (var i in arts) {\n        var item = arts[i].title;\n        tabs.push(item);\n        //播放列表的列表的定位\n        var conts = json.longVideoSideBar.episodes;\n        var urls = [];\n        for (var j in conts) {\n            urls.push('<a href=\"' + arts[i].url + '\">' + conts[j].no + '</a>');\n        }\n        lists.push(urls)\n    }\n\n    var 导演 = '';\n\n    var 主演 = '';\n\n    var 更新 = json.curVideoMeta.fmplaycnt;\n\n    var 状态 = json.curVideoMeta.date;\n\n    var 图片 = json.curVideoMeta.dramaInfo.verticalImage + '@Referer=';\n\n    var 简介 = json.curVideoMeta.dramaInfo.introduction;\n\n    var Color = \"#f13b66a\";\n    var Color1 = \"#098AC1\";\n\n    function getHead(title) {\n        return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n    }\n    let line_model = 8;\n    let line_type_model = 'blank_block';\n    d.push({\n        title: 导演 + '\\n' + 主演,\n        desc: 更新 + '\\n' + 状态,\n        pic_url: 图片,\n        url: MY_URL,\n        col_type: 'movie_1_vertical_pic_blur',\n        extra: {\n            gradient: true\n        }\n    });\n    d.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n        url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n        col_type: 'text_1'\n    });\n\n    for (let i = 0; i < line_model; i++) {\n        d.push({\n            col_type: line_type_model\n        })\n    }\n\n    function setTabs(tabs, vari) {\n        for (var i in tabs) {\n            var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n            d.push({\n                title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n\n    function setLists(lists, index) {\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n    if (getVar('shsort') == '1') {\n        var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n    } else {\n        var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n    }\n\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\n        if (getVar('shsort') == '1') {\n            try {\n                for (var j = list.length - 1; j >= 0; j--) {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href'),\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                }\n            } catch (e) {\n                d.push({\n                    title: '没有选集哟，不信点图片去看看👀',\n                    col_type: 'text_center_1'\n                });\n            }\n        } else {\n            try {\n                for (var j = 0; j < list.length; j++) {\n                    d.push({\n                        title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                        url: parseDom(list[j], 'a&&href'),\n                        col_type: list.length > 4 ? 'text_5' : 'text_2'\n                    });\n                }\n            } catch (e) {\n                d.push({\n                    title: '没有选集哟，不信点图片去看看👀',\n                    col_type: 'text_center_1'\n                });\n            }\n\n        }\n    }\n\n    setTabs(tabs, MY_URL);\n    setLists(lists, getVar(MY_URL, '0'));\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n        desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n        url: MY_URL,\n        col_type: 'text_center_1'\n    });\n    d.push({\n        title: '<br>',\n        col_type: 'rich_text'\n    });\n}\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"js: var res = {};\nvar d = [];\nvar html = getResCode();\n//去除网页换行符\nvar html2 = html.replace(/\\n*/g,'');\n//获取json \nvar jsonstr = html2.match(/PRELOADED_STATE__ = (.*?);/)[1]; \nvar json = JSON.parse(jsonstr);\n //log(json);\n//var myUrlHead = \"https://haokan.baidu.com/v?vid=\";\n//播放列表的列表的定位\nvar conts = json.curVideoMeta.clarityUrl;\n\t\nfor (var i in conts) {\n //  log(conts[i]);\n\n\td.push({\n        title: conts[i].title,\n        pic_url: '',\n        desc: '',\n        url:conts[i].url ,\n    });\n}\n//res.data=d;setHomeResult(res);\nsetResult(d);","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://hk.bdstatic.com/app/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"大师兄影视","author":"道长","version":1,"type":"video","url":"hiker://empty##https://dsxys.pro/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑥电影天堂","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=大师兄影视"},{"last_chapter_rule":"","title":"文职","author":"小白","version":0,"type":"other","url":"http://m.wenzhi.org/sort/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".picTxt&&li;\na&&title;\na&&img&&data-src;\n.emScore&&Text;\na&&href","searchFind":".picTxt&&li;\na&&title;\na&&href;\n.emScore&&Text;\n*;\nimg&&data-src","search_url":"http://m.wenzhi.org/search.php?page=fypage&searchword=**","titleColor":"#ff228be6","group":"⑥电影天堂","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), 'body&&.tabCon,1&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.posterPic&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.tabt3&&Html').match(/span[\\s\\S]*?<\\/span/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/ulNumList[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'http://m.wenzhi.org'+list[j].split('href=\"')[1].split('\"')[0] + `@lazyRule=.wrap1&&script&&Html.js:eval(input);now`\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"直播盒子","author":"Andy","version":0,"type":"live","url":"http://fyclass","col_type":"movie_3","class_name":"直播①&直播②&直播③","class_url":"api.hclyz.com:81/mf/json.txt&api.vipmisss.com:81/xcdsw/json.txt&api.maiyoux.com:81/mf/json.txt","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.pingtai;\nvar items = list.map(data => ({\n    title: data.title,\n    url: 'http://api.vipmisss.com:81/xcdsw/'+data.address,\n    desc: data.Number,\n    pic_url: data.xinimg\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑥直播","detail_col_type":"movie_3","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.zhubo;\nvar items = list.map(data => ({\n    title: data.title,\n    url: data.address,\n    desc: data.authername,\n    pic_url: data.img\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff2196f3"},{"firstHeader":"class","title":"体育少儿动物","author":"镇弟","version":0,"url":"hiker://bookmark/all.json","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n'我的主页@@hiker://home@我的主页@@https://paimgcdn.baidu.com/B5F437DFF2D57C3B?src=http%3A%2F%2Fms.bdimg.com%2Fdsp-image%2F3569721114.jpg&rz=urar_2_750_750&v=0',\n'嗨瑶@@hiker://home@嗨瑶Mp4@@http://vr0.6rooms.com/tao/i/a0/download-app-1.gif',\n'电视台标@@hiker://home@电视台标@@https://paimgcdn.baidu.com/B5F437DFF2D57C3B?src=http%3A%2F%2Fms.bdimg.com%2Fdsp-image%2F3569721114.jpg&rz=urar_2_750_750&v=0',\n'GIF K歌@@hiker://home@GIF K歌@@http://api.mtyqx.cn/tapi/random.php?t=?glideCache=skip',\n'电视台@@hiker://home@电视台@@http://api.btstu.cn/sjbz/api.php?glideCache=skip',\n'全国广播@@hiker://home@全国广播@@https://api.nmb.show/1985acg.php?glideCache=skip',\n\n'和平精英猛男杯@@http://121.12.115.14/tx.hls.huya.com/src/78941969-2645974862-11364375498328113152-3120368168-10057-A-0-1_2000.m3u8',\n'荣耀格斗@@http://121.12.115.14/tx.hls.huya.com/src/1099531740037-1099531740037-86381503243616256-2199063603530-10057-A-0-1_2000.m3u8',\n'美女打架@@http://121.12.115.14/tx.hls.huya.com/src/1099531728893-1099531728893-86333640128069632-2199063581242-10057-A-0-1_2000.m3u8',\n'综合体育@@http://121.12.115.14/tx.hls.huya.com/src/1453551525-2750309114-11812487698520735744-2895636156-10057-A-0-1_2000.m3u8',\n'KPL职业联赛@@http://121.12.115.14/tx.hls.huya.com/src/78941969-2592787562-11135937784265572352-2914030356-10057-A-0-1-imgplus_2000.m3u8',\n'武林笼中对@@http://121.12.115.14/tx.hls.huya.com/src/1099531740136-1099531740136-86381928445378560-2199063603728-10057-A-0-1_2000.m3u8',\n'虎牙斯诺克@@http://121.12.115.14/tx.hls.huya.com/src/1099531627777-1099531627777-85899350214967296-2199063379010-10057-A-0-1_2000.m3u8',\n'爱幼教@@http://112.17.40.150/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221230086/index.m3u8',\n'黑莓动画@@http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225744/index.m3u8',\n'哈哈炫动@@http://39.134.115.163:8080/PLTV/88888910/224/3221225720/index.m3u8',\n'卡酷少儿@@http://39.134.115.163:8080/PLTV/88888910/224/3221225677/index.m3u8',\n'黑莓动漫@@http://183.207.249.15/PLTV/3/224/3221225555/index.m3u8',\n'黑莓动画@@http://39.135.33.12/PLTV/77777777/224/3221226538/index.m3u8',\n'嘉佳卡通@@http://183.207.255.190/live/program/live/jjkt/1300000/mnf.m3u8',\n'炫动卡通@@http://223.82.250.72/live/xuandongkaton/1.m3u8',\n'金鹰卡通@@http://39.134.115.163:8080/PLTV/88888910/224/3221225721/index.m3u8',\n'优漫卡通@@http://39.134.115.163:8080/PLTV/88888910/224/3221225665/index.m3u8',\n'广东少儿@@http://nclive.grtn.cn/tvs5/sd/live.m3u8',\n'iHot爱动漫@@http://117.148.187.52/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221230136/index.m3u8',\n'黑莓电竞@@http://ottrrs.hl.chinamobile.com/TVOD/88888888/224/3221225675/index.m3u8',\n'动物HD@@http://112.17.40.140/PLTV/88888888/224/3221226695/index.m3u8',\n'人与自然1@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/c75150f0a15740fbba229dc5537e5ba6/1200.m3u8',\n'人与自然2@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/cf260306e49249f89ce97350e65f56f1/1200.m3u8',\n'人与自然3@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/30e3dcec22bf419ba38ec80ca70724da/1200.m3u8',\n'人与自然4@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/543454e7b9d241569d6f7ae04eb08ecd/1200.m3u8',\n'人与自然5@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/e3c651afff84470bb87f6c5b93db4081/1200.m3u8',\n'人与自然6@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/288f1eac7b5642708db43b2bafe90e76/1200.m3u8',\n'人与自然7@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/3fd4f0114ff64e2aac9bd844fe621e55/1200.m3u8',\n'人与自然8@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/2c07fce4c0e0482ab7488b9c050e342c/1200.m3u8',\n'人与自然9@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/45a482cb61a2446fbdde59af73369792/1200.m3u8',\n'人与自然10@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/c297e515fb1145908d12cdd7994fa552/1200.m3u8',\n'人与自然11@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/f7d562440151425ab4198dac13d11277/1200.m3u8',\n'人与自然12@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/7989bf48c9284d0099d2bafd18021c45/1200.m3u8',\n'人与自然13@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/5a041aea05054ee487e18eb2875df185/1200.m3u8',\n'人与自然14@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/a46daf096f4a443cad829394cabd82fa/1200.m3u8',\n'人与自然15@@https://newcntv.qcloudcdn.com/asp/hls/1200/0303000a/3/default/f933380797a54e6fb3f4bd7caca0b8d3/1200.m3u8',\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php#' + new Date().getTime();\r\nvar fl = getUrl().split('#')[1];\r\nfunction zero(s) {\n    return s < 10 ? '0' + s: s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一1️⃣\", \"星期二2️⃣\", \"星期三3️⃣\", \"星期四4️⃣\", \"星期五5️⃣\", \"星期六6️⃣\")[mydate.getDay()];\nnewTime = year + '年' + zero(month) + '🈷️' + zero(data) + '日                    更新时间⏲️' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + ':' + zero(second) + '\\t\\t\\t' + day;\nd.push({\n    title:\"            🔍搜索或网址🔎       \",\r\n    titles:hitokoto[0],\n    url: \"hiker://search\",\r\n    desc: '         庚子🐂年    \\t' + newTime + '', \r\n    col_type: 'pic_1_card',\r\n     pic_url:s2\n});\n\nfor (var i = 0; i < t.length && i < 6; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_3';\n d.push(r);\n}\n\nd.push({\r\n title: '️🌾🌾🌾🌾🌺点击🌺🌾🌾🌾🌾️',\r\n url: \"http://haikuoshijie.cn/user/609\",\r\n col_type: 'text_center_1'\r\n});\nfor (var i = 6; i < t.length && i < 27; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'text_2';\n d.push(r);\n}\n\nd.push({\r\n title: '🐞人🐉🐙与🦀🐂自🐄🐇然🐓‍',\r\n url: \"\",\r\n col_type: 'text_center_1'\r\n});\nfor (var i = 27; i < t.length && i < 42; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'text_2';\n d.push(r);\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"轻直播.鬼才","author":"小棉袄🌞","version":35,"type":"live","url":"hiker://empty##https://gitee.com/lzhgc/diy/raw/1/%E8%8A%82%E7%9B%AE","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                //.replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"轻直播.七彩","author":"小棉袄🌞","version":35,"type":"live","url":"hiker://empty##http://82.156.222.77/iptv/tv.txt","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                //.replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"轻直播.Tee","author":"小棉袄🌞","version":20211230,"type":"live","url":"hiker://empty##https://shuyuan.miaogongzi.net/shuyuan/1640882974.txt","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                .replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"轻直播.不知名","author":"小棉袄🌞","version":37,"type":"live","url":"hiker://empty##https://pastebin.com/raw/AHJEEkB4","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                //.replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                if (r.url.includes(\\\"/at/xml\\\") ||\\n                    r.url.endsWith(\\\"=#isVideo=true#\\\") ||\\n                    r.url.endsWith(\\\"xml#isVideo=true#\\\") ||\\n                    r.url.endsWith(\\\"api.php#isVideo=true#\\\")) {\\n                    continue;\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"轻直播.影视频道","author":"小棉袄🌞入戏","version":32,"type":"live","url":"hiker://empty##https://shuyuan.miaogongzi.net/shuyuan/1640533698.txt","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                .replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"轻直播.Tee测试","author":"小棉袄🌞","version":20211230,"type":"live","url":"hiker://empty##https://shuyuan.miaogongzi.net/shuyuan/1640882974.txt","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                .replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"央衛視","author":"镇弟","version":1,"type":"live","url":"hiker://empty#fyAll#https://shimo.im/docs/kkvGXVtWy6tyY6Kp/;get;UTF-8;{User-Agent@Mozilla/5.0}","col_type":"icon_4_card","class_name":"CCTV&衛視&少兒","class_url":"CCTV&衛視&少兒","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nfunction zero(s) {\n  return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nday = new Array(\"  周日  🔍\", \"  周一  🔎\", \"  周二  🔍\", \"  周三  🔎\", \"  周四  🔍\", \"  周五  🔎\", \"  周六  🔍\")[mydate.getDay()];\nnewTime = '搜索' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + day;\nitems.push({\n  title: '' + newTime + '',\n      url:\"'hiker://search?rule=GIF K歌&s='+input\",\n    desc:\"输入搜索本规则\",\n    col_type:\"input\"\n})\nvar s2 = 'https://api.yimian.xyz/img?type=wallpaper#?glideCache=skip' + '#' + new Date().getTime();\nitems.push({\n    title: \"苹果🍎DJ站\",\n    desc: '',\n    url: 'hiker://home@苹果DJ·Q||http://m.pingguodj.com/video.html',\n    col_type: 'movie_3_marquee',\n    pic_url: s2\n});\nvar s2 = 'https://source.unsplash.com/random#?glideCache=skip#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\nitems.push({\n    title: \"嗨瑶DJ\",\n    url: \"hiker://home@嗨瑶Mp4||http://m.92kk.com/dance/lists-id-55-1.html\",\n    desc: '',\n    col_type: 'movie_3_marquee',\n    pic_url: s2\n});\nitems.push({\n    title: '点我更新',\n    url: $(' 💝论坛帖子点赞区上，一键导入 不互传 导入🈳白  看清楚帖子内容  不盲反馈  点击确定后 下拉或返回主页 重新打开💘').confirm(_ => {\n        let GIF = request('https://shimo.im/docs/kkvGXVtWy6tyY6Kp/');\n        if (GIF && GIF.includes(\"衛視\") && GIF.includes(\"http\")) {\n            writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/央衛視.m3u', request(\"https://shimo.im/docs/kkvGXVtWy6tyY6Kp/\"));\n            return 'toast://更新成功 下拉刷新或退出重新打开';\n        }\n        return 'toast://规则导入后没有点赞👍🏻 🈚🈶更新';\n    })\n})\nvar html = fetch('hiker://files/删除更新视界世界/央衛視.m3u');\nvar s2 = 'https://3650000.xyz/api/360.php?cid=6#?glideCache=skip' + '#' + new Date().getTime();\n/*function getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();*/\nfunction zero(s) {\n    return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一  周1️⃣\", \"星期三  周2️⃣\", \"星期三  周3️⃣\", \"星期四  周4️⃣\", \"星期五  周5️⃣\", \"星期六  周6️⃣\")[mydate.getDay()];\nnewTime = year + ' 年 ' + zero(month) + ' 🈷️ ' + zero(data) + ' 日     时间: ' + ' \\t\\t\\t ' + zero(hour) + ' : ' + zero(minute) + ' : ' + zero(second) + '\\t\\t\\t' + day;\nlet hitokoto = '';\ntry {\n    hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {\n        timeout: 3000\n    })).content;\n} catch (e) {\n    log(e);\n}\nitems.push({\n    title: hitokoto,\n    url: \"https://tvv.tw/xjj/get\",\n    desc: '抖音壬寅年' + newTime + '',\n    col_type: 'movie_1_vertical_pic',\n    pic_url: s2\n});\nitems.push({\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#70f3ff'>记录⏱️</span>\",\n    url: \"hiker://history\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#63bbd0'>书签📚</span>\",\n    url: \"hiker://bookmark\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#5cb3cc'>收藏</span>\",\n    url: \"hiker://collection\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#22a2c3'>视界</span>\",\n    url: \"hiker://home@视界|世界||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>广播</span>\",\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed900'>小程序</span>\",\n    url: \"hiker://home\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed048'>插件</span>\",\n    url: \"hiker://js\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#96ce54'>备份</span>\",\n    url: \"hiker://webdav\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00bc12'>下载</span>\",\n    url: \"hiker://download\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0eb83a'>更多设置</span>\",\n    url: \"hiker://setting\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0aa344'>网址过滤</span>\",\n    url: \"hiker://adUrl\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#16a951'>拦截广告</span>\",\n    url: \"hiker://adRule\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#21a675'>其它设置</span>\",\n    url: \"hiker://settingMore\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0c8918'>APP影视(P)</span>\",\n    url: \"hiker://home@APP影视(P)||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#057748'>黑黑影视</span>\",\n    url: \"hiker://home@黑黑影视||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00e500'>香情影视</span>\",\n    url: \"hiker://home@香情影视||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#40de5a'>道长仓库</span>\",\n    url: \"hiker://home@道长仓库Pro||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00e09e'>Love直播</span>\",\n    url: \"hiker://home@Love直播||https://haikuoshijie.cn/user/243\"\n});\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i];\n    var g_title = data.split('group-title=\"')[1].split('\"')[0];\n    if (flag == '全部' || flag == g_title) {\n        items.push({\n            title: data.split(',')[1].split('</p>')[0],\n            url: data.split('href=\"')[1].split('\"')[0].replace(/#.*/, '').replace(/&nbsp;/g, '').replace(/&amp;/g, '&') + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#isVideo=true#'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#isVideo=true#'}`,\n            pic_url: data.split('vg-logo=\"')[1].split('\"')[0]\n        });\n    }\n}\nsetResult(items);","searchFind":"js:\nlet items = [];\nvar html = fetch('hiker://files/删除更新视界世界/央衛視.m3u');\nvar flag = MY_URL.split('#')[1];\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</a></p>');\nfor (let data of datas) {\n    //var data = datas[i];\n    if (data.indexOf(flag) > -1) {\n        var title = data.split(',')[1].split('</p>')[0];\n        var url = data.split('href=\"')[1].split('\"')[0].replace(/#.*/,'').replace(/&nbsp;/g, '').replace(/&amp;/g, '&');\n        var pic_url = data.split('vg-logo=\"')[1].split('\"')[0];\n        var desc = data.split('group-title=\"')[1].split('\"')[0];\n        items.push({\n            title: title,\n            desc: desc,\n            url: url + `@lazyRule=.js:if(/(mkv|flv|m3u8|mp4)/.test(input)){input+'#isVideo=true#'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#isVideo=true#'}`,\n            pic_url: pic_url\n        });\n    }\n}\nsetResult(items);","search_url":"hiker://empty#**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"if (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/本地|广播.m3u')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/本地|广播.m3u', parseDomForHtml(request('https://shimo.im/docs/GYdHVtccYWXGVvKK/read'), '.ql-editor&&Text').replace(/ ([^,]+?\\|)/g,'\\n$1'));\n}\nif (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/视界|世界.m3u')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/视界|世界.m3u', parseDomForHtml(request('https://shimo.im/docs/3JcxyqgPkXC8RJdX/read'), '.ql-editor&&Text').replace(/ /g,'\\n'));\n}\nif (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/央衛視.m3u')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/央衛視.m3u', request('https://shimo.im/docs/kkvGXVtWy6tyY6Kp'));\n}","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg20.360buyimg.com%2Fvc%2Fg13%2FM07%2F11%2F01%2FrBEhU1LPlnoIAAAAABHRNevRKhIAAHywwJ0QukAEdFN038.gif"},{"last_chapter_rule":"","title":"本地广播","author":"镇弟","version":0,"type":"live","url":"hiker://empty#fyAll","col_type":"text_2","class_name":"音乐&中央&广东&北京&福建&江苏","class_url":"音乐&中央&广东&北京&福建&江苏","area_name":"四川&上海&黑龙江&西藏&安徽","area_url":"四川&上海&黑龙江&西藏&安徽","sort_name":"山东&青海&宁夏&辽宁&吉林&湖北&海南&贵州&重庆&其它&全部","year_name":"浙江&内蒙&云南&新疆&天津&陕西山西&河南&河北","sort_url":"山东&青海&宁夏&辽宁&吉林&湖北&海南&贵州&重庆&其它&全部","year_url":"浙江&内蒙&云南&新疆&天津&陕西山西&河南&河北","find_rule":"js:\nlet items = [];\nitems.push({\n    title:'视界|世界',   url:'hiker://home@视界|世界||https://haikuoshijie.cn/user/243',\n    col_type:\"icon_2\",    pic_url:\"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fali3.rabbitpre.com%2Ff3d077de-4b8a-41b6-ad96-866f9d6c2529.gif&refer=http%3A%2F%2Fali3.rabbitpre.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1627046777&t=bf72476fc504cd9841d60fdef3d823b5\"\n});\nitems.push({\n  title: '点我更新🖲️',\n  col_type: 'icon_2',\n  url: $().lazyRule(_ => {\n    let 本地广播 = request('https://shimo.im/docs/GYdHVtccYWXGVvKK/read');\n    if (本地广播) {\n      writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/本地广播', parseDomForHtml(request('https://shimo.im/docs/GYdHVtccYWXGVvKK/read'), '.ql-editor&&Text').replace(/ /g, '\\n'));\n      writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/视界|世界', parseDomForHtml(request('https://shimo.im/docs/3JcxyqgPkXC8RJdX/read'), '.ql-editor&&Text').replace(/ /g, '\\n'));\n      writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/GIF K歌', request('https://shimo.im/docs/PWXgYvQ9QXJvkvqT/read'));\n      return 'tosat://更新成功 下拉刷新';\n    }\n    return 'tosat://更新失败，建议去 11群 联系 镇弟 大佬修复';\n  })\n})\nfunction zero(s) {\n  return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nday = new Array(\"  周日  \", \"  周一  \", \"  周二  \", \"  周三  \", \"  周四  \", \"  周五  \", \"  周六  \")[mydate.getDay()];\nnewTime = '搜索' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + day;\nitems.push({\n  title: '' + newTime + '',\n  url: \"'hiker://search?rule=本地广播&s='+input\",\n  col_type: \"input\"\n});\nvar s2 = 'pic_url:\"http://api.btstu.cn/sjbz/api.php?lx=meinv=dongman#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\nvar s2 = 'http://api.btstu.cn/sjbz/?lx=m_meizi?glideCache=skip' + new Date().getTime();\nvar fl = getUrl().split('#')[1];\nfunction getTitleAndDesc() {\n  let hitokoto = [];\n  let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n  let source = json.from_who;\n  if (source == null) source = '未知';\n  hitokoto.push(json.hitokoto);\n  return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();\nitems.push({\n  title: hitokoto[0],\n  url: \"hiker://search\",\n  col_type: 'card_pic_2_2_left',\n  pic_url: s2\n});\nitems.push({\n  title: \"V音乐\",\n  url: \"https://livecdn.fptplay.net/foxlive/channelvhd_hls.smil/chunklist_b2500000.m3u8\",\n  desc: '',\n  col_type: 'card_pic_2_2',\n  pic_url: s2\n});\nitems.push({\n  title: \"GIF K歌\",\n  desc: '', url: 'hiker://home@GIF K歌||http://xjj.jusuzs.com/video.php', col_type: \"card_pic_2_2\", pic_url: \"https://api.ixiaowai.cn/gqapi/gqapi.php?glideCache=skip\"\n});\nlet txts = fetch('hiker://files/删除更新视界世界/本地广播', {}).split('\\n');\nlet flag = MY_URL.split('#')[1];\nfor (let data of txts) {\n  if (data && data.includes('|') && data.includes(',')) {\n    if (flag == '全部' || data.indexOf(flag) > -1)\n      items.push({\n        title: data.split('|')[1].split(',')[0],\n        url: data.split(',')[1] + `@lazyRule=.js:if(/(rtmp|tx2p|mkv|flv|m3u8|mp4)/.test(input)){input+'#isVideo=true##type=.mp3'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+''}`\n      });\n  }\n}\nsetResult(items);","searchFind":"js:\nlet txts = fetch('hiker://files/删除更新视界世界/本地广播', {}).split('\\n');\nvar keyword = MY_URL.split('#')[1];\nvar items = txts.map(data => {\n  if (data && ~data.indexOf(keyword)) {\n    return {\n      title: data.split(',')[0],\n      url: data.split(',')[1] + `@lazyRule=.js:if(/(rtmp|tx2p|mkv|flv|m3u8|mp4)/.test(input)){input+'#isVideo=true##type=.mp3'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+''}`\n    }\n  }\n});\nsetResult({ data: items });","search_url":"hiker://empty#**","titleColor":"#f20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"js:\nvar items = [];\nitems.push({\n    title: MY_URL.split('#')[1],\n    url: MY_URL.split('#')[2] + `@lazyRule=.js:if(/(rtmp|mkv|flv|m3u8|mp4)/.test(input)){input+'#isVideo=true##type=.mp3'}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+''}`\n})\nsetHomeResult({ data: items });","ua":"auto","preRule":"if (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/本地广播')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/本地广播', parseDomForHtml(request('https://shimo.im/docs/GYdHVtccYWXGVvKK/read'), '.ql-editor&&Text').replace(/ /g,'\\n'));\n}\nif (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/视界|世界')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/视界|世界', parseDomForHtml(request('https://shimo.im/docs/3JcxyqgPkXC8RJdX/read'), '.ql-editor&&Text').replace(/ /g,'\\n'));\n}\nif (!request('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/GIF K歌')) {\n  writeFile('file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/删除更新视界世界/GIF K歌', request('https://shimo.im/docs/PWXgYvQ9QXJvkvqT/read'));\n}","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fimgextra%2Fi1%2F196628284%2FT2UX1OXvJXXXXXXXXX_%21%21196628284.gif"},{"last_chapter_rule":"","title":"DJ+直播大全","author":"入戏","version":36,"type":"live","url":"hiker://empty##fyAll","col_type":"text_3","class_name":"劲爆DJ&超清直播","class_url":"https://wds.ecsxs.com/222825.txt&https://wds.ecsxs.com/222806.txt","area_name":"影视频道&电视直播&歌曲MV","area_url":"https://wds.ecsxs.com/223012.txt&https://wds.ecsxs.com/223091.txt&https://wds.ecsxs.com/223273.txt","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\nputMyVar('my',MY_URL.split(\"##\")[1])\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(getMyVar('my'), key)\nsetResult(data);","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n\\n        try {\\n            let html = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (html.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            const d1 = []\\n            try {\\n                if (filter != null) {\\n                    var lists = html.replace(/[\\\\S]*\\\\$|\\\\$\\\\$\\\\$/g, \\\"\\\")\\n                    var list = lists.split('\\\\n')\\n                } else {\\n                    if (html.indexOf('@@@') > -1) {\\n                        var conts = html.split('@@@');\\n                    } else {\\n                        var conts = html.split('$$$');\\n                    }\\n                    var lists = [];\\n                    var tabs = [];\\n\\n                    for (let i in conts) {\\n                        lists.push(conts[i].split('$')[1].split('\\\\n'))\\n                        tabs.push(conts[i].split('$')[0])\\n                    }\\n                    var  m=getMyVar('my');\\n                    var fold = getVar(\\\"fold#\\\"+m, \\\"0\\\");\\n                    \\n\\n                    for (let i = 0; i < 8; i++) {\\n                        _d.push({\\n                            col_type: \\\"blank_block\\\"\\n                        })\\n                    }\\n                    for (var i = 0; i < tabs.length; i++) {\\n\\n                        _d.push({\\n                           title:  fold== i ? '‘‘’’<strong><font color=\\\"#19B89D\\\">' + tabs[i] + '</strong></font>' : tabs[i],\\n                          \\n                            url: $(\\\"\\\").lazyRule((i,m) => {\\n                                putVar(\\\"fold#\\\"+m, i)\\n                                refreshPage();\\n                                return \\\"hiker://empty\\\"\\n                            }, i,m),\\n                            col_type: 'flex_button'\\n                        })\\n                    }\\n                    _d.push({\\n                        col_type: \\\"line_blank\\\"\\n                    })\\n     \\n\\n                    var list = lists[fold]\\n\\n\\n                }\\n            } catch (e) {\\n                var list = html.replace(/#EXTINF:-1 ,/g, '')\\n                    .replace(/#EXTINF:-1,/g, '')\\n                    .replace(/\\\\n#genre#/g, ',#genre#')\\n                    .replace(/#EXTINF:-1/g, '')\\n                    .replace(/group-title=\\\"/g, '')\\n                    .replace(/\\\\nhttp/g, ',http')\\n                    //.replace(/=/g, '')\\n                    .replace(/，#/g, ',#')\\n                    .replace(/\\\",/g, '/')\\n                    .replace(/ /g, '')\\n                    .split('\\\\n');\\n            }\\n            for (var i = 0; i < list.length; i++) {\\n                var r = {};\\n                var j = list[i].split(',');\\n                if (list[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0 || r.url.indexOf(\\\"rtmp\\\") == 0 || r.url.indexOf(\\\"rtsp\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    col_type: 'icon_2_round',\\n                    img: \\\"https://lanmeiguojiang.com/tubiao/more/228.png\\\",\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n\\n            let _td = readFile(\\\"data.json\\\").replace(/{\\\"col_type.*line_blank\\\"},/g, \\\"\\\");\\n            log(_td)\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/98.svg"},{"last_chapter_rule":"","title":"蓝鸟直播源","author":"随风","version":0,"type":"live","url":"https://%6d%70%2e%77%65%69%78%69%6e%2e%71%71%2e%63%6f%6d/s/sGCLOMORmLyhJ2XrOxSgvg","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.rich_media_content&&p');\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'Text').replace(/,http.*/g,'').replace(/.http.*/g,''),\nurl:parseDom(list[i],'Text').replace(/https.*,/g,'').replace(/https.*./g,''),\n});\n  }catch(e){}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"谷豆","author":"","version":0,"type":"live","url":"hiker://empty###fyAll","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php?glideCache=skip' + '#' + new Date().getTime();\n/*function getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();*/\nfunction zero(s) {\n    return s < 10 ? '0' + s : s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndate = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一  周1️⃣\", \"星期三  周2️⃣\", \"星期三  周3️⃣\", \"星期四  周4️⃣\", \"星期五  周5️⃣\", \"星期六  周6️⃣\")[mydate.getDay()];\nnewTime = year + ' 年 ' + zero(month) + ' 🈷️ ' + zero(date) + ' 日     时间: ' + ' \\t\\t\\t ' + zero(hour) + ' : ' + zero(minute) + ' : ' + zero(second) + '\\t\\t\\t' + day;\nlet hitokoto = '';\ntry {\n    hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {\n        timeout: 3000\n    })).content;\n} catch (e) {\n    log(e);\n}\ndata.push({\n    title: hitokoto,\n    url: \"https://v.nrzj.vip/\",\n    desc: '抖音🐆壬寅年' + newTime + '',\n    col_type: 'movie_1_vertical_pic',\n    pic_url: s2\n});\ndata.push({\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#70f3ff'>记录⏱️</span>\",\n    url: \"hiker://history\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#63bbd0'>书签📚</span>\",\n    url: \"hiker://bookmark\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#5cb3cc'>收藏</span>\",\n    url: \"hiker://collection\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#22a2c3'>K歌</span>\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>广播</span>\",\n    url: \"hiker://home@本地广播||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#1a94bc'>视界</span>\",\n    url: \"hiker://home@视界世界||https://haikuoshijie.cn/user/243\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed900'>小程序</span>\",\n    url: \"hiker://home\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#9ed048'>插件</span>\",\n    url: \"hiker://js\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#96ce54'>备份</span>\",\n    url: \"hiker://webdav\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00bc12'>下载</span>\",\n    url: \"hiker://download\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0eb83a'>更多设置</span>\",\n    url: \"hiker://setting\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#0aa344'>网址过滤</span>\",\n    url: \"hiker://adUrl\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#16a951'>拦截广告</span>\",\n    url: \"hiker://adRule\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#21a675'>其它设置</span>\",\n    url: \"hiker://settingMore\"\n}, {\n    col_type: \"scroll_button\",\n    title: \"‘‘’’<span style='color:#00e09e'>聚直播</span>\",\n    url: \"hiker://home@聚直播||https://haikuoshijie.cn/user/243\"\n});\nvar s2 = 'http://api.btstu.cn/sjbz?glideCache=skip#' + new Date().getTime();\nvar flag = getUrl().split('#')[1];\ndata.push({\n    title: \"\",\n    url: \"hiker://home@GIF K歌||https://haikuoshijie.cn/user/243\",\n    title: 'GIF K歌',\n    col_type: 'icon_2',\n    pic_url: s2\n});\ndata.push({\n    title: '点我更新',\n    col_type: 'icon_2',\n    pic_url: 'https://gimg2.baidu.com/image_search/src=http%3A%2F%2Ftpic.home.news.cn%2FxhBlog%2Fxhpic001%2FM07%2F3E%2FCE%2FwKhTg1aB1dkEAAAAAAAAAAAAAAA005.gif',\n    url: $(' 💝导入时点我更新，平时按通告开放时间点我更新， 不用互传小程序导入也空白， 不乱点我更新 预防🈳白，觉得好用 QQ频道点个赞💘').confirm(_ => {\n        let 视界世界 = request('https://wds.ecsxs.com/224942.js');\n        // log(视界世界);\n        if (视界世界 && 视界世界.includes(\"CCTV\") && 视界世界.includes(\"http\")) {\n            writeFile('hiker://files/删除更新视界世界/谷豆', 视界世界);\n            refreshPage();\n            return 'toast://更新成功';\n        }\n        return 'toast://等候下次开放👍🏻 更新';\n    })\n})\nlet flag = MY_URL.split(\"##\")[1].split('#')[1];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|flv|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效，更换其它频道观看\"\n        }\n    })\n}\nlet path = 'hiker://files/删除更新视界世界/谷豆';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, null, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    groups.forEach((group) => {\n        if (group) {\n            data.push({\n                title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                url: $('#noLoading#').lazyRule((group) => {\n                    putMyVar('selectGroup', group);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, group),\n                col_type: 'scroll_button',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    })\n    for (let title in items[selectGroup]) {\n        let us = items[selectGroup][title];        \n        data.push({\n            title: title.split(\"###\")[0],\n            url: us.length < 2 ? us[0]: JSON.stringify({\n                urls: us\n            }),\n//col_type: 'icon_2_round',\n            img: \"\"\n        })\n    }\n}\n          catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\n for (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n    if (!it.col_type && it.url) {\n        it.img = \"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.mp.itc.cn%2Fq_70%252Cc_zoom%252Cw_640%2Fupload%2F20170619%2F5293637f5aad4c2ba04954cdcc99dcfa_th.jpg\";\n    }\n}\n\nsetResult(data);","searchFind":"js:\nvar data = [];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|flv|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效\"\n        }\n    })\n}\nvar keyword = MY_URL.split('##')[1].toLowerCase();\nlet path = 'hiker://files/删除更新视界世界/谷豆';\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, keyword, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    for (let it of Object.keys(items)) {\n        for (let title in items[it]) {\n            let us = items[it][title];\n            data.push({\n                title: title.split(\"###\")[0],\n                url: us.length < 2 ? us[0] : JSON.stringify({\n                    urls: us\n                }),\n                //col_type: 'icon_2_round',\n                //img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n            })\n        }\n    }\n} catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\nfor (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n}\nsetResult({\n    data: data\n});","search_url":"hiker://empty##**","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\n\\nfunction renderLiveData(url, filter, isText) {\\n    let net = request(url, {\\n        headers: {\\n            Referer: getReferer(url)\\n        }\\n    });\\n    const m3u = net,\\n        mode = m3u.indexOf('#EXTM3U') == 0,\\n        re = mode ? /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\\\s]*)/g;\\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (/group-title=\\\"(.*?)\\\"/.exec(i[1]) || [null, ''])[1];\\n        } else if (i[3] == '#genre#') {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].trim();\\n        if (url.indexOf(\\\".php\\\") > 0 || url.includes(\\\"@lazyRule\\\") || url.includes(\\\";\\\")) {\\n            title = title + \\\"###\\\" + new Date().getTime() + md5(url);\\n            //log(j);\\n        } else {\\n            //url = url + \\\"#isVideo=true#\\\";\\n        }\\n        if (filter != null && !title.includes(filter)) {\\n            continue\\n        }\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title] = items[group][title].concat([url]);\\n            } else {\\n                items[group][title] = [url];\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = [url];\\n        };\\n    }\\n    return items;\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fcbu01.alicdn.com%2Fimg%2Fibank%2F2019%2F987%2F927%2F12714729789_248999555.jpg"},{"last_chapter_rule":"","title":"JustLive·Q","author":"发粪涂墙","version":0,"type":"other","url":"http://live.yj1211.work/api/live/getRecommendByPlatform?platform=fyclass&page=fypage&size=20","col_type":"movie_2","class_name":"虎牙&斗鱼&哔哩&企鹅&网易","class_url":"huya&douyu&bilibili&egame&cc","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\neval(JSON.parse(request('hiker://page/lazy')).rule);\nif (parseInt(MY_PAGE) === 1) {\n\n    d.push({\n        title: \"🔍\",\n        url: $.toString(() => {\n            putVar(\"Mykey\", input);\n            refreshPage(true)\n        }),\n           desc: \"搜索主播(斗鱼用房间号)\",\n           col_type: \"input\",\n        extra: {\n            defaultValue: getVar(\"Mykey\")\n        }\n    })\n}\nif (getVar(\"Mykey\")) {\n    ss_url = \"http://live.yj1211.work/api/live/search?platform=\" + MY_URL.match(/=(.*?)&/)[1] + \"&keyWords=\" + getVar(\"Mykey\") + \"&isLive=0\";\n    if (MY_PAGE == '1') {\n        var json = JSON.parse(fetch(ss_url)).data;\n        for (data of json) {\n            d.push({\n                title: data.nickName,\n                desc: data.cateName + (data.isLive == '0' ? '  未开播' : '  直播中'),\n                img: (data.headPic.startsWith('/') ? 'https:' + data.headPic : data.headPic) + '@Referer=',\n                url: 'http://live.yj1211.work/api/live/getRealUrl?platform=' + data.platform + '&roomId=' + data.roomId + lazy,\ncol_type: \"movie_1_vertical_pic\"\n            })\n        }\n        d.push({\n            title: \"““到底了呢””\",\n            desc: '点击返回首页',\n            url: $().lazyRule(() => {\n                refreshPage(true)\n                clearVar(\"Mykey\")\n                return 'hiker://empty'\n            }),\n            col_type: \"text_center_1\"\n        })\n    }\n} else {\n    var json = JSON.parse(getResCode()).data\n    for (data of json) {\n        d.push({\n            title: data.roomName,\n            desc: data.categoryName,\n            img: (data.roomPic.startsWith('/') ? 'https:' + data.roomPic : data.roomPic) + '@Referer=',\n            url: 'http://live.yj1211.work/api/live/getRealUrl?platform=' + data.platForm + '&roomId=' + data.roomId + lazy\n        })\n    }\n}\nsetResult(d)","searchFind":"js:\nvar json = JSON.parse(getResCode()).data\neval(JSON.parse(request('hiker://page/lazy')).rule);\nd = json.map(data => ({\n    title: data.nickName,\n    desc: data.cateName,\n    img: (data.headPic.startsWith('/') ? 'https:' + data.headPic : data.headPic) + '@Referer=',\n    content: data.isLive == '0' ? '未开播' : '直播中',\n    url: 'http://live.yj1211.work/api/live/getRealUrl?platform=' + data.platform + '&roomId=' + data.roomId + lazy\n}))\nsetResult(d)","search_url":"http://live.yj1211.work/api/live/search?platform=all&keyWords=**&isLive=0","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input)).data\\n    var name = {\\n        \\\"OD\\\": \\\"原画\\\",\\n        \\\"FD\\\": \\\"流畅\\\",\\n        \\\"LD\\\": \\\"标清\\\",\\n        \\\"SD\\\": \\\"高清\\\",\\n        \\\"HD\\\": \\\"超清\\\",\\n        \\\"2K\\\": \\\"2K\\\",\\n        \\\"4K\\\": \\\"4K\\\",\\n        \\\"FHD\\\": \\\"全高清\\\",\\n        \\\"XLD\\\": \\\"极速\\\",\\n        \\\"SQ\\\": \\\"普通音质\\\",\\n        \\\"HQ\\\": \\\"高音质\\\"\\n    }\\n    var urls = []\\n    var names = []\\n    for (var key in html) {\\n        if (!/ayyuid|to/.test(key)) {\\n            urls.push(html[key])\\n            names.push(name[key])\\n        }\\n    }\\n    return JSON.stringify({\\n        urls: urls,\\n        names: names\\n    })\\n})\"}]","proxy":"","icon":"http://live.yj1211.work/favicon.ico"},{"last_chapter_rule":"","title":"925直播","author":"套壳网页，只需要改小程序链接##后面的内容即可","version":1,"type":"other","url":"hiker://empty##http://www.925.tv","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"视界HD","author":"镇弟","version":0,"url":"https://shimo.im/docs/G6prJhWxx6jX9xHV/read#fyAll","col_type":"text_2","class_name":"CCTV&卫视&广东&HD&动画少儿","class_url":"CCTV&卫视&广东&HD&动","area_name":"湖南&浙江&四川&上海&江苏","area_url":"湖南&浙江&四川&上海&江苏","sort_name":"北京&安徽&河南&吉林","year_name":"影视&福建&云南&江西&新闻&全部","sort_url":"北京&安徽&河南&吉林","year_url":"影视&福建&云南&江西&新闻&全部","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\r\nvar s2 = 'https://www.hlapi.cn/api/gqbz#' + new Date().getTime();\r\nvar fl = getUrl().split('#')[1];\r\nfunction getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();\nfunction zero(s) {\n    return s < 10 ? '0' + s: s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期1️⃣\", \"星期2️⃣\", \"星期3️⃣\", \"星期4️⃣\", \"星期5️⃣\", \"星期6️⃣\")[mydate.getDay()];\nnewTime = year + '年' + zero(month) + '🈷️' + zero(data) + '日⏲️' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + ':' + zero(second) + '\\t\\t\\t' + day;\nitems.push({\n    title:\"辛丑🐄年          🔍搜索或网址🔎       \",\r\n    titles:hitokoto[0],\n    url: \"hiker://search\",\r\n    desc:''+ newTime +'',  \r\n    col_type: 'pic_1_card',\r\n     pic_url:s2\n});\r\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</p>');\r\nfor (var i = 0; i < datas.length - 1; i++) {\r\n    var data = datas[i].split('>')[1];\r\n    if (data.indexOf(',') > -1) {\r\n        var fyAll = MY_URL.split('#')[1];\r\n        var title = data.split(',')[0];\r\n        if (fyAll == '全部' || title.indexOf(fyAll) != -1) {\r\n            items.push({\r\n                title: title,\r\n                url: data.split(',')[1].replace(/#.*/, '').replace('&amp;', '&') + `@lazyRule=.js:if(/(flv|m3u8|mp4)/.test(input)){input}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`\n            });\r\n        }\r\n    }\r\n}\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar flag = MY_URL.split('#')[1];\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i].split('>')[1];\n    if (data.indexOf(',') > -1) {\n        if (data.indexOf(flag) > -1) {\n            var title = data.split(',')[0];\n            var url = data.split(',')[1].replace(/#.*/, '').replace('&amp;', '&');\n            items.push({\n                title: title,\n                url: 'hiker://empty#' + url + '#' + title\n            });\n        }\n    }\n}\nres.data = items;\nsetSearchResult(res);","search_url":"https://shimo.im/docs/G6prJhWxx6jX9xHV/read#**","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar data = MY_URL.split('#');\nitems.push({\n    title: data[2],\n    url: data[1] + `@lazyRule=.js:if(/(flv|m3u8|mp4)/.test(input)){input}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n});\nres.data = items;\nsetHomeResult(res);","ua":"auto","preRule":"","icon":"#fff20c00"},{"firstHeader":"class","title":"电视分类","author":"镇弟","version":0,"url":"https://shimo.im/docs/KDwVhYVGdCVkRrwX/read#fyAll","col_type":"text_2","class_name":"全部&卫视&港澳台&音乐&影视&CCTV&iHOT爱&NewTV&新闻综合&体育&娱乐&少儿&其它","class_url":"全部&卫视&港澳台&音乐&影视&CCTV&iHOT爱&NewTV&新闻综合&体育&娱乐&少儿&其它","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php#' + new Date().getTime();\r\nvar fl = getUrl().split('#')[1];\r\nfunction getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();\nfunction zero(s) {\n    return s < 10 ? '0' + s: s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一\", \"星期二\", \"星期三\", \"星期四\", \"星期五\", \"星期六\")[mydate.getDay()];\nnewTime = year + '年' + zero(month) + '🈷️' + zero(data) + '日' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + ':' + zero(second) + '\\t\\t\\t' + day;\nitems.push({\r\n    title:hitokoto[0],\n    url: \"hiker://search\",\r\n    desc: '🔎搜索或网址🔍🐂辛丑年'+ newTime +'',  \r\n    col_type: 'pic_1_card',\r\n     pic_url:s2\n});\r\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</p>');\r\nfor (var i = 0; i < datas.length - 1; i++) {\r\n    var data = datas[i].split('>')[1];\r\n    if (data.indexOf(',') > -1) {\r\n        var fyAll = MY_URL.split('#')[1];\r\n        var title = data.split(',')[0];\r\n        if (fyAll == '全部' || title.indexOf(fyAll) != -1) {\r\n            items.push({\r\n                title: title.split('|')[1],\r\n                url: data.split(',')[1].replace(/#.*/, '').replace('&amp;', '&') + `@lazyRule=.js:if(/(flv|m3u8|mp4)/.test(input)){input}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`\n            });\r\n        }\r\n    }\r\n}\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\nvar flag = MY_URL.split('#')[1];\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</p>');\nfor (var i = 0; i < datas.length - 1; i++) {\n    var data = datas[i].split('>')[1];\n    if (data.indexOf(',') > -1) {\n        if (data.indexOf(flag) > -1) {\n            var title = data.split(',')[0];\n            var url = data.split(',')[1].replace(/#.*/, '').replace('&amp;', '&');\n            items.push({\n                title: title.split('|')[1],\r\n                url: 'hiker://empty#' + url + '#' + title\n            });\n        }\n    }\n}\nres.data = items;\nsetSearchResult(res);","search_url":"https://shimo.im/docs/KDwVhYVGdCVkRrwX/read#**","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"js:\nvar res = {};\nvar items = [];\nvar data = MY_URL.split('#');\nitems.push({\n     title:data[2].split('|')[1],\n     url: data[1] + `@lazyRule=.js:if(/(flv|m3u8|mp4)/.test(input)){input}else{JSON.parse(fetch(input,{headers:{'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},redirect:false, withHeaders:true})).headers.location[0]+'#mp4'}`,\n});\nres.data = items;\nsetHomeResult(res);","ua":"auto","preRule":"","icon":"#fff20c00"},{"firstHeader":"class","title":"全国广播","author":"镇弟","version":0,"url":"https://shimo.im/docs/QQ8PXrhJxyyY9rtY/ read","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\r\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php#' + new Date().getTime();\r\nvar fl = getUrl().split('#')[1];\r\nfunction getTitleAndDesc() {\n    let hitokoto =[];\n    let json = JSON.parse(fetch('https://v1.hitokoto.cn/?c=i', {}));\n    let source = json.from_who;\n    if (source == null) source = '未知';\n    hitokoto.push(json.hitokoto);\n    return hitokoto;\n}\nlet hitokoto = getTitleAndDesc();\nfunction zero(s) {\n    return s < 10 ? '0' + s: s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期1️⃣\", \"星期2️⃣\", \"星期3️⃣\", \"星期4️⃣\", \"星期5️⃣\", \"星期6️⃣\")[mydate.getDay()];\nnewTime = year + '年' + zero(month) + '🈷️' + zero(data) + '日⏲️' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + ':' + zero(second) + '\\t\\t\\t' + day;\nitems.push({\n    title:\"辛丑🐄 年         🔍搜索或网址🔎       \",\r\n    titles:hitokoto[0],\n    url: \"hiker://search\",\r\n    desc:''+ newTime +'',  \r\n    col_type: 'pic_1_card',\r\n     pic_url:s2\n});\r\nvar datas = parseDomForHtml(html, 'body&&.ql-editor&&Html').split('</p>');\r\nfor (var i = 0; i < datas.length - 1; i++) {\r\n    var data = datas[i].split('>')[1];\r\n    if (data.indexOf(',') > -1) {\r\n        items.push({\r\n            title: data.split(',')[0],\r\n            url: data.split(',')[1],\r\n        });\r\n    }\r\n}\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"NBA录像屋","author":"子丑寅卯","version":2,"url":"https://www.luxiangwu.com/fyAll/index_fypage.html[firstPage=https://www.luxiangwu.com/fyAll/]","col_type":"text_1","class_name":"首页&NBA录像&CBA录像&NBA视频&NBA十佳","class_url":"list&nbaluxiang&cbaluxiang&nbashipin&nbatop10","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#content&&.post,1:0');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),            \r\nurl: parseDom(list[j],'a&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#content&&.post,1:0');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),            \r\nurl: pd(list[j],'a&&href')\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.luxiangwu.com/search?templodeId=21&tbname=news&word=**&index=fypage","group":"⑥直播","detail_col_type":"text_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n\r\nd.push({       \r\ntitle: '‘‘'+parseDomForHtml(getResCode(), '#content&&h2&&Text')+'’’',       \n    col_type:\"text_center_1\"\r\n});\nvar config = fetch('hiker://files/cache/MyParseSet.json');\nif(config == '' || !fetch(JSON.parse(config).cj)){\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n}else{\n    var jsUrl = JSON.parse(config).cj;\n} eval(fetch(jsUrl));\n\nd.push({       \r\ntitle:\"插件设置\",   \nurl:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",    \ncol_type:\"text_center_1\"\r\n});\r\nvar list = parseDomForArray(getResCode(), '.entry&&a');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&Text'),           \r\nurl:$(pdfh(list[j],'a&&href')).lazyRule(() => {\nlet file = \"hiker://files/rules/DuanNian/MyParse.json\";\nif (fileExist(file)) {\neval('json='+fetch(file));\nlet jsUrl = json.settings.cj;\neval(fetch(jsUrl));\nreturn aytmParse(input);\n\n}\n})\r\n});\r\n}\r\nres.data = d;\r\nsetHomeResult(res);\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fgss0.baidu.com%2F7Po3dSag_xI4khGko9WTAnF6hhy%2Fzhidao%2Fwh%253D450%252C600%2Fsign%3D1dba9fbc728da9774e7a8e2f8561d42f%2Fc83d70cf3bc79f3daff6b8bfbba1cd11728b292d.jpg&refer=http%3A%2F%2Fgss0.baidu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1641990130&t=d84064aa5ecd654d1e0032b7597348b9"},{"firstHeader":"class","title":"iptv𝔥","author":"Hood","version":5,"url":"https://api.notelive.cn/render/myiptv","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html = getResCode();\nvar txts = html.indexOf('移动')!=-1?html.split('\\n'):base64Decode(html).split('\\n');\n\nfor (var i = 1 ; i <txts.length-1 ; i++) {\r\n   if(txts[i].includes(\"成人\")||txts[i].includes(\"失效\")||txts[i].includes(\"README\")||txts[i]==''){continue}\nd.push({\n      title: '  ““'+txts[i].replace('.txt','')+' >>>””',\n      url: 'https://SPX372928.github.io/MyIPTV/'+txts[i]\n  });\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#000000","group":"⑥直播","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html = getResCode();\nvar txts = html.split('\\n');\n\nfor (var i = 1; i < txts.length-1; i++) {\r\n   if(!txts[i]||!txts[i].split(',')[1]){continue}\nd.push({\n      title: txts[i].split(',')[0],\n      url: txts[i].split(',')[1] +`@lazyRule=.js:input+'#isVideo=true#'`\n  });\n}\n\nfor(var b=0;b<5;b++){\nd.push({col_type: 'big_blank_block'});}\n\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#000000"},{"last_chapter_rule":"","title":"Git直播源","author":"永远の明日","version":10,"url":"hiker://empty##fyAll","col_type":"flex_button","class_name":"Tvlist-awesome&17712&iptv-org&SPX372928","class_url":"https://raw.sevencdn.com/imDazui/Tvlist-awesome-m3u-m3u8/master/m3u/国内地方台202005.m3u\n&https://cdn.jsdelivr.net/gh/1771245847/1771245847.github.io@master/ks.m3u\n&https://raw.sevencdn.com/iptv-org/iptv/master/channels/cn.m3u\n&https://raw.fastgit.org/SPX372928/MyIPTV/master/%E5%8C%97%E4%BA%ACPLTV%E7%A7%BB%E5%8A%A8CDN%E7%89%88.txt","area_name":"lifeizq&鬼才&金玉良缘&不知所措","area_url":"https://gitee.com/lifeizq/zbtv/raw/master/zbylf.txt\n&https://gitee.com/lzhgc/diy/raw/1/节目\n&https://gitee.com/golden-fate-god-bestows/Tv/raw/master/8月5日最新直播源.m3u\n&https://gitee.com/a-bzsc/live-tv/raw/master/zhibo.m3u8","sort_name":"本地配置->&视界TV&2020直播&暴风源&央卫高清","year_name":"","sort_url":"#Local&hiker://files/rules/live/大视界TV.txt&hiker://files/rules/live/2020直播源.txt&hiker://files/rules/live/暴风源.txt&hiker://files/rules/live/央卫高清.txt","year_url":"","find_rule":"js:\nMY_URL = MY_URL.slice(15)\nlet data = [{ col_type: 'line' }, { col_type: 'line' }],\n    X5 = fileExist('.X5Player')\nif (MY_URL == '#Local') {\n    data.push({\n        title: (X5 ? '' : '✅') + ' 默认播放器',\n        url: $().lazyRule(() => (deleteFile('.X5Player'), refreshPage(), 'toast://已切换为默认')),\n        col_type: 'text_2'\n    }, {\n        title: (X5 ? '✅' : '') + ' X5播放器',\n        url: $().lazyRule(() => (saveFile('.X5Player'), refreshPage(), 'toast://已切换为X5')),\n        col_type: 'text_2'\n    }, {\n        title: `<ul><li>以上都是从git上找的直播源，不过也可以播放本地存储的直播源，内容须是m3u格式，爱折腾的人可以自行添加哦</li></ul>\\\n    <li>下面是一些直播源git仓库</li>\\\n    <li><a href=\"https://github.com.cnpmjs.org/imDazui/Tvlist-awesome-m3u-m3u8#ignoreVideo=true#\">Tvlist-awesome-m3u-m3u8</a></li>\\\n    <li><a href=\"https://github.com.cnpmjs.org/iptv-org/iptv\">iptv-org</a></li>\\\n    <li><a href=\"https://raw.fastgit.org/SPX372928/MyIPTV\">SPX372928</a></li>\\\n    <li><a href=\"https://github.com.cnpmjs.org/biancangming/wtv\">biancangming/wtv</a></li>\\\n    <li><a href=\"https://gitee.com/tyy85550424/IPTV\">lifeizq</a></li>\\\n    <li></li>`,\n        col_type: 'rich_text'\n    })\n} else if (getMyVar('nowUrl') != MY_URL) {\n    const m3u = request(MY_URL),\n        mode = m3u.indexOf('#EXTM3U') == 0,\n        re = mode ? /(.*),(.*)\\s*?((?:http|rtmp)[^#\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\s]*)/g\n    let items = {},\n        group = ''\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\n        if (mode) group = (/group-title=\"(.*?)\"/.exec(i[1]) || [null, ''])[1]\n        else if (i[3] == '#genre#') { group = i[2]; continue }\n\n        let item = { title: i[2], url: i[3].trim() }\n\n        if (items[group]) items[group].push(item)\n        else items[group] = [item]\n    }\n    putMyVar('liveData', JSON.stringify(items))\n    putMyVar('nowUrl', MY_URL)\n    refreshPage()\n} else {\n    data.push({ desc: '320&&float', col_type: 'x5_webview_single' })\n    const groupShow = JSON.parse(getMyVar('groupShow', '[]'))\n    let items = JSON.parse(getMyVar('liveData', '{}')),\n        groups = Object.keys(items)\n    groups.push(groups.splice(groups.indexOf(0), 1)[0])\n    groups.forEach((v, i) => {\n        data.push({ col_type: 'line' }, { col_type: 'line' })\n        if (v) data.push({\n            title: '““””' + (groupShow[i] ? '▼  ' : '▶  ') + v.bold(),\n            url: $('#noLoading#').lazyRule(([group, index, groupShow]) => {\n                groupShow[index] = !groupShow[index]\n                putMyVar('groupShow', JSON.stringify(groupShow))\n                refreshPage(false)\n                return 'toast://' + group + (groupShow[index] ? ', 已展开' : ', 已折叠')\n            }, [v, i, groupShow]),\n            col_type: 'text_center_1',\n            extra: { lineVisible: false }\n        })\n        items[v].forEach((vv) => {\n            if (X5) vv.url = $(vv.url).lazyRule((title) => (refreshX5WebView(input), 'toast://已切换，' + title), vv.title)\n            vv.title = '““””' + '&nbsp&nbsp'.big() + vv.title + '&nbsp&nbsp'.big()\n        })\n        if (groupShow[i] || !v) Array.prototype.push.apply(data, items[v])\n    })\n}\nsetResult(data)\n","searchFind":"js:\nconst key = MY_URL.slice(15), items = JSON.parse(getMyVar('liveData', '{}'))\nlet data = [],\n    X5 = fileExist('.X5Player')\nfor (i in items)\n  items[i].forEach((v) => {\n    if (v.title.includes(key))\n      data.push({\n        title: v.title,\n        url: (X5 ? 'web://' : '') + v.url,\n        desc: i || '无分组'\n      })\n  })\nsetResult(data)","search_url":"hiker://empty##**","titleColor":"#228be6","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"if(!getMyVar('gitLive-groupShow'))putMyVar('gitLive-groupShow', '[true]')","pages":"[]","icon":"https://img.icons8.com/?format=png&id=63777&size=128"},{"title":"哔哩直播_总","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=fyclass&area_id=0&sort_type=online&page=fypage&page_size=30","col_type":"movie_2","class_name":"全部&娱乐&网游&手游&单机&电台&虚拟&生活&学习","class_url":"0&1&2&3&6&5&9&10&11","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_娱乐","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=1&area_id=fyarea&sort_type=online&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&唱见&聊天&舞见&户外&日常&影音馆","area_url":"0&145&207&&123&399&465","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_手游","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=3&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&王者荣耀&和平精英&原神&第五人格&LOL手游&公主连结&火影忍者&明日方舟&四叶草剧场&Fate/Go&机动战姬&阴阳师&坎公骑冠剑&天地劫&决战平安京&战双帕弥什&游戏王&天谕&天涯明月刀&崩坏3&使命召唤&狼人杀&幻书启世录&百闻牌&王者模拟战&CF手游&QQ飞车&碧蓝航线&三国杀&猫和老鼠&综合棋牌&自走棋&影之诗&剑网3&DNF手游&双生视界&梦幻西游&我的勇者&重装战姬&明日之后&皇室战争&少女前线&解密游戏&忍者必须死&梦幻模拟战&BanG Dream&非人学院&辐射:避难所&雀姬&跑跑卡丁车&黑潮之上&新游测评&其他游戏","area_url":"0&35&256&321&163&395&330&292&255&418&37&449&36&442&448&140&293&407&408&389&40&386&41&411&286&280&333&154&113&352&269&354&250&156&206&343&290&342&305&262&189&50&39&42&203&178&258&212&263&214&265&340&274&98","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_网游","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=2&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&绝地求生&英雄联盟&穿越火线&CS:GO&守望先锋&逃离塔科夫&最终幻想14&VALORANT&300英雄&炉石传说&DOTA2&魔兽争霸3&DNF&FIFA&剑网3&魔兽世界&APEX英雄&使命召唤:战区&星际战甲&坦克世界&战舰世界&战争雷霆&战意&无线法则&风暴英雄&星际争霸2&DOTA自走棋&堡垒之夜&枪神纪&三国杀&龙之谷&古剑奇谭OL&幻想全明星&封印者&怀旧网游&新游前瞻&星战前夜:晨曦&梦幻西游端游&其他游戏","area_url":"0&80&86&88&89&87&252&102&329&84&91&92&181&78&388&82&83&240&318&249&115&248&316&383&196&114&93&239&164&251&81&112&173&176&300&288&298&331&350&107","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_电台","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=5&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&放松电台&唱见电台&聊天电台&配音","area_url":"0&339&190&192&193","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_单机","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=6&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&主机游戏&我的世界&独立游戏&怪物猎人:崛起&尼尔:人工生命&恐怖游戏&怀旧游戏&鬼谷八荒&糖豆人&饥荒&怪物猎人:世界&Loop Hero&仁王2&命运2&战地5&只狼&使命召唤&霓虹深渊&重生细胞&永劫无间&小小梦魇&炼金工坊&斩妖Raksasi&异界之上&火焰审判&雨中冒险2&英灵神殿&荒野大镖客2&戴森球计划&末世觉醒&节奏医生&精灵宝可梦&植物大战僵尸&刺客信条&恐鬼症&人类一败涂地&方舟&Among Us&格斗游戏&NBA2K&鬼泣5&塞尔达&全境封锁2&搜灵笔记&赛博朋克&以撒&烟火&全面战争&骑马与砍杀&枪火重生&FORZA 极限竞速&女生异闻录5&任天堂明星大乱斗&盗贼之海&无主之地3&马里奥制造2&东方大战争&辐射76&封灵档案Everhood&归家异途&橙光&恐惧之闻&泡沫冬景&双人成行&生化入侵&&先驱者&甜蜜之家&其他单机&全面战争:竞技场","area_url":"0&236&216&283&412&455&276&237&424&357&218&217&438&313&277&221&245&282&447&426&443&431&456&453&452&451&441&432&226&422&457&435&228&309&227&387&270&295&396&433&362&244&308&243&247&402&219&427&257&326&364&302&311&230&341&273&261&319&220&410&437&421&382&439&436&446&440&450&454&235&379","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_虚拟主播","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=9&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&虚拟主播&赛博朋克","area_url":"0&371&404","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_生活","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=10&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&美食&萌宠&时尚&影音馆","area_url":"0&367&369&378&33","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"title":"哔哩直播_学习","author":"沧海","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=11&area_id=fyarea&page=fypage&page_size=30","col_type":"movie_2","class_name":"","class_url":"","area_name":"全部&人文社科&科技科普&职业技能&陪伴学习&绘画","area_url":"0&376&375&377&372&373","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:      \nvar res={};var d=[];\nvar json = JSON.parse(getResCode());\n\nfor (var i = 0; i < json.data.list.length; i ++) {\nvar j=json.data.list[i];\n\nd.push({\ntitle:j.title,\npic_url:j.system_cover,   \nurl:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`\n\n}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"bilibili直播","author":"Rx","version":0,"url":"https://api.live.bilibili.com/room/v3/area/getRoomList?platform=web&parent_area_id=fyclass&cate_id=0&area_id=fyarea&page=fypage&page_size=30&tag_version=1","col_type":"pic_1","class_name":"全部&网游&手游&单机&娱乐&电台&虚拟主播&生活&学习","class_url":"all&2&3&6&1&5&9&10&11","area_name":"默认小分类&影音馆（生活）","area_url":"0&33","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.data.list.length; i++)\n{\n var r = {};\n var j = json.data.list[i];\n r.pic_url =j.system_cover;\n r.url = 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+j.roomid+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`;\n r.title = j.title;\n r.desc = 'UP🐷：' +j.uname;\n d.push(r);\n}\nres.data = d;\nsetHomeResult(res)","searchFind":"js:\nvar res = {};\nvar d = [];\nvar live = parseDom(getResCode(), 'body&&.headline-live&&a&&href');\nd.push({\n\t\t\ttitle: '主播',\n    url: live+'&page=fypage'+`;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36&&Cookie@_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix}`,\n    desc:'共有'+parseDomForHtml(getResCode(), 'body&&.flow-loader&&.headline-live&&.num-txt&&span&&Text').replace(\"\\(\",\"\").replace(\"\\)\",\"\")+'主播',\n\t\t\tcol_type: 'movie_1'\n\t\t});\ntry\n{d.push({\n\t\t\ttitle: '直播中',\n    url: live.replace(\"&search_type=live_user\",\"\")+'&page=fypage'+`;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36&&Cookie@_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix}`,\n    desc:'共有'+parseDomForHtml(getResCode(), 'body&&.headline-room&&.num-txt&&span&&Text').replace(\"\\(\",\"\").replace(\"\\)\",\"\")+'直播间',\n\t\t\tcol_type: 'movie_1'\n\t\t});}catch(e){}\nres.data = d;\nsetSearchResult(res);","search_url":"https://search.bilibili.com/live?keyword=**;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36&&Cookie@_uuid=82467373-C6A1-57BA-AE02-A9A6D177C88797248infoc; buvid3=17C9A2CB-850B-4C73-B9DE-64DB0E6DBABB143105infoc; sid=cy961fq7; rpdid=|(u|JJ)|k~l|0J'uY|Y|ukum); LIVE_BUVID=AUTO8816061022193420; bsource=search_baidu; PVID=23; finger=1984989501; arrange=matrix}","titleColor":"#ffff7000","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res = {};\nvar d = [];\nif(MY_URL.indexOf(\"search_type=live_user\")!=-1){\nvar live = parseDomForArray(getResCode(), 'body&&.live-user-wrap&&li');\nfor (var i in live) {\n\t\td.push({\n\t\t\ttitle: parseDomForHtml(live[i], '.item-right&&P&&Text'),\n    url:'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+parseDom(live[i],'a&&href').split(\"live.bilibili.com/\")[1].split(\"?from\")[0]+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`,\n    /*img:\nparseDom(live[i],'.lazy-img&&img&&src'),\n    */\n    desc:parseDomForHtml(live[i], '.item-right&&.status&&Text'),\n\t\t\tcol_type: 'pic_1'\n\t\t});\n }\n}\nelse{\nvar live = parseDomForArray(getResCode(), 'body&&.live-room-wrap&&li');\nfor (var i in live) {\n\t\td.push({\n\t\t\ttitle: parseDomForHtml(live[i], 'p&&Text'),\n    url: 'https://api.live.bilibili.com/xlive/web-room/v1/playUrl/playUrl?cid='+parseDom(live[i],'a&&href').split(\"live.bilibili.com/\")[1].split(\"?from\")[0]+'&platform=h5&otype=json&quality=0'+`@lazyRule=Text.js:JSON.parse(input).data.durl[0].url`,\n    /*img:\nparseDom(live[i],'.lazy-img&&img&&src'),\n    */\n    desc:'UP🐷：'+parseDomForHtml(live[i], '.uname&&span&&Text')+'·人气'+parseDomForHtml(live[i], '.live-num&&span&&Text'),\n\t\t\tcol_type: 'pic_1'\n\t\t});\n }\n}\nres.data = d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","icon":"#ffff7000"},{"last_chapter_rule":"","title":"咪咕直播 - 网络电视直播_卫星电视直播在线观看","author":"小棉袄","version":1,"type":"other","url":"hiker://empty##http://wap.migu123.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"⑥直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"仙女库","author":"Timik","version":0,"type":"picture","url":"http://www.xiannvku.cc/pic/list-id-fyAll-fypage.html","col_type":"movie_3","class_name":"大陆&日韩","class_url":"1&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar h = getCode();\nvar res = {};\nvar list = pdfa(h,'.boxs&&li');\nfor(let j in list){\n  d.push({\n\ttitle:pdfh(list[j],'.p_title&&a&&Text').replace(/\\[.*?\\]/g,''),\n\turl:pdfh(list[j],'.p_title&&a&&href'),\n\tdesc:pdfh(list[j],'p,1&&Text').split('：')[1].trim(),\n\tpic_url:pdfh(list[j],'img&&src')\n  })\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑥美图","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\n\ntry {\n    var list_rule = '.content&&img';\n    var pic_rule = \"img&&src\";\n    var title_rule = \"h1&&Text\";\n    var num_rule = \"#pages&&a,-2&&Text\";\n    var next_url_rule = MY_URL.replace(\"1.html\",\"\") + \"{page}.html\";\n    var charset = \"utf-8\";\n    var user_agent = 'Windows';\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent,'content-type':'application/json; charset='+charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\",i);\n        //log({next_url:next_url});\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent ,'content-type':'application/json; charset='+charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if(list_rule==''){\n            var pic = parseDomForHtml(x, pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }else {\n            var list = parseDomForArray(x, list_rule)\n        //log({list:list})\n        for (var key in list) {\n            var pic = parseDomForHtml(list[key], pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"P)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/9.png"},{"last_chapter_rule":"","title":"秀人美女","author":"Timik","version":1,"type":"picture","url":"https://www.xrmnw.cc/fyclass/indexfypage.html[firstPage=https://www.xrmnw.cc/fyclass/]","col_type":"movie_3","class_name":"秀人网&模范学院&魅妍社&美媛馆&爱蜜社&兔几盟&尤物馆&优星馆&蜜桃社&嗲囡囡&影私荟&顽味生活&星乐园&花の颜&御女郎&薄荷叶&尤蜜荟&糖果画报&模特联盟&猫萌榜&花漾&星颜社&画语界","class_url":"XiuRen&MFStar&MiStar&MyGirl&Imiss&BoLoli&YouWu&Uxing&MiiTao&FeiLin&WingS&Taste&LeYuan&HuaYan&DKGirl&MintYe&YouMi&Candy&MTMeng&Micat&HuaYang&XingYan&XiaoYu","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".update_area_lists&&li;.meta-title&&Text.js:input.replace(/\\[.*?\\]/,'');img&&src;.postlist-imagenum&&Text;a&&href","searchFind":".list&&.sousuo;h2&&Text;;;h2&&a&&href","search_url":"https://www.xrmnw.cc/plus/search/index.asp?keyword=**&searchtype=title&p=fypage","group":"⑥美图","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\nvar host = 'https://www.xrmnw.cc';\ntry {\n    var list_rule = '.content&&img';\n    var pic_rule = \"img&&src\";\n    var title_rule = \"h1&&Text\";\n    var num_rule = \".page&&a,-2&&Text\";\n    var next_url_rule = MY_URL.replace(\".html\",\"\") + \"_{page}.html\";\n    var charset = \"utf-8\";\n    var user_agent = 'Windows';\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent,'content-type':'application/json; charset='+charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\",i);\n        //log({next_url:next_url});\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent ,'content-type':'application/json; charset='+charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if(list_rule==''){\n            var pic = parseDomForHtml(x, pic_rule)\n            log({pic:pic});\n            pics.push(pic);\n        }else {\n            var list = parseDomForArray(x, list_rule)\n        //log({list:list})\n        for (var key in list) {\n            var pic = host + parseDomForHtml(list[key], pic_rule)\n            //log({pic:pic});\n            pics.push(pic);\n        }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"card_pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\"p)\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title');\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/9.png"},{"last_chapter_rule":"","title":"MV263","author":"夜风","version":0,"type":"video","url":"https://www.mv263.com/category-fyAll_fypage.html","col_type":"movie_2","class_name":"内地MV&港台MV&欧美MV&韩语MV&日语MV&动漫MV&综艺MV","class_url":"2&3&4&5&6&7&8","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=$('').lazyRule(() => {\r\n                            var get = fetch(input, {});\r\n                            var js = parseDom(get, 'body&&.edui-upload-video&&source&&src');\r\n                            //log(js)\r\n                            var P = [];\r\n                                P.push(js+';{Referer@https://www.mv263.com/}')\r\n                           return P[0]\r\n})                                \nvar list = parseDomForArray(html, 'body&&.post');//列表\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'img&&alt'),//标题\n        desc: parseDomForHtml(list[j], '.listbox-remarks&&Text'),//简介\n        img: parseDom(list[j], 'img&&data-src')+'@Referer=',//图片\n        url: parseDom(list[j], 'a&&href')+lazy\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=$('').lazyRule(() => {\r\n                            var get = fetch(input, {});\r\n                            var js = parseDom(get, 'body&&.edui-upload-video&&source&&src');\r\n                            //log(js)\r\n                            var P = [];\r\n                                P.push(js+';{Referer@https://www.mv263.com/}')\r\n                           return P[0]\r\n})                  \nvar list = parseDomForArray(html, '.list-search&&p');//列表\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),//标题\n        desc: parseDomForHtml(list[j], ''),//简介\n        img: parseDom(list[j], '')+'@Referer=',//图片\n        url: parseDom(list[j], 'a&&href')+lazy\n    });\n}\nsetResult(d);","search_url":"/search.php?q=**","group":"⑥视听","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"小丘音乐","author":"仰望星空","version":0,"url":"https://v1.jinrishici.com/all.json","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \n//以下所有api接口均来自网络，仅供学习交流使用\nvar titles=\n[\n\n'飙升榜@@62@@https://y.qq.com/music/photo_new/T003R300x300M0000005RZNY3wyuu7.jpg?max_age=2592000',\n'热歌榜@@26@@https://y.qq.com/music/photo_new/T003R300x300M0000005RZNY3wyuu7.jpg?max_age=2592000',\n'新歌榜@@27@@https://y.qq.com/music/photo_new/T003R300x300M000001ba2RN4gF6Mr.jpg?max_age=2592000',\n'流行指数榜@@4@@https://y.qq.com/music/photo_new/T003R300x300M000001zTOrG335m42.jpg?max_age=2592000',\n'听歌识曲榜@@67@@https://y.qq.com/music/photo_new/T003R300x300M000003pGMcW2DHld4.jpg?max_age=2592000',\n'内地榜@@5@@https://y.qq.com/music/photo_new/T003R300x300M000001cOhuP3LTkPj.jpg?max_age=2592000',\n'香港地区榜@@59@@https://y.qq.com/music/photo_new/T003R300x300M000000ifchJ4EnX23.jpg?max_age=2592000',\n'台湾地区榜@@61@@https://y.qq.com/music/photo_new/T003R300x300M000003KZRSi0PttfZ.jpg?max_age=2592000',\n'欧美榜@@3@@https://y.qq.com/music/photo_new/T003R300x300M000001E1uKP2IBMxJ.jpg?max_age=2592000',\n'韩国榜@@16@@https://y.qq.com/music/photo_new/T003R300x300M000000EqKGk0JGThp.jpg?max_age=2592000',\n'日本榜@@17@@https://y.qq.com/music/photo_new/T003R300x300M000000ON7Jk37TGQF.jpg?max_age=2592000',\n'网络歌曲榜@@28@@https://y.qq.com/music/photo_new/T003R300x300M000000e4L3V0Kals5.jpg?max_age=2592000',\n'DJ舞曲榜@@63@@https://y.qq.com/music/photo_new/T003R300x300M000003iTeSX2YAYAp.jpg?max_age=2592000',\n'Q音快手榜@@74@@https://y.qq.com/music/photo_new/T003R300x300M000001W2LPn1FQEnd.jpg?max_age=2592000',\n'抖音排行榜@@60@@https://y.qq.com/music/photo_new/T003R300x300M000001SsQPw3Un8fn.jpg?max_age=2592000',\n'综艺新歌榜@@64@@https://y.qq.com/music/photo_new/T003R300x300M000001DOa2q3bnkUB.jpg?max_age=2592000',\n'影视金曲榜@@29@@https://y.qq.com/music/photo_new/T003R300x300M000004FYJNU1Mvv0W.jpg?max_age=2592000',\n'国风热歌榜@@65@@https://y.qq.com/music/photo_new/T003R300x300M000001Fa4aM1PtIx8.jpg?max_age=2592000',\n'说唱榜@@58@@https://y.qq.com/music/photo_new/T003R300x300M000000ekPfJ0vx0Nu.jpg?max_age=2592000',\n'电音榜@@57@@https://y.qq.com/music/photo_new/T003R300x300M000002wXpWN1GME88.jpg?max_age=2592000',\n'动漫音乐榜@@72@@https://y.qq.com/music/photo_new/T003R300x300M000003NLuQS2dMAJb.jpg?max_age=2592000',\n'游戏音乐榜@@73@@https://y.qq.com/music/photo_new/T003R300x300M000002hSoWF0jmd0E.jpg?max_age=2592000',\n'达人音乐榜@@70@@https://y.qq.com/music/photo_new/T003R300x300M000003CoVGT3IdKe7.jpg?max_age=2592000',\n'K歌金曲榜@@36@@https://y.qq.com/music/photo_new/T003R300x300M000002m8XSo2bFmmK.jpg?max_age=2592000',\n'腾讯音乐人原创榜@@50@@https://y.qq.com/music/photo_new/T003R300x300M000000cZiev2e7bxa.jpg?max_age=2592000',\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push(\n{\n  col_type: 'pic_1_full',\npic_url: 'https://p3.pstatp.com/large/pgc-image/1540522646312f0e8c4b228'\n});\n\nd.push(\n{\n   title:hitokoto.content,\n   desc:\n'类别：'+hitokoto.category+\n'\\n作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\n   col_type: 'pic_1',\n   url:'http://m.yugaopian.cn/',\n\n});\n\n\nfor (var i = 0; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.title = k[0];\n  r.url = 'https://c.y.qq.com/v8/fcg-bin/fcg_v8_toplist_cp.fcg?g_tk=5381&uin=0&format=json&inCharset=utf-8&outCharset=utf-8¬ice=0&platform=h5&needNewCode=1&tpl=3&page=detail&type=top&topid='+k[1]+'&_=1519963122923';\n  r.pic_url = k[2];\n  r.col_type = 'icon_2';\n  d.push(r);\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.data.list;\nvar items = list.map(data => ({\n    title: data.songname,\n    url: 'http://140.143.30.148/music/api/qq.php?ID='+data.songmid+'&k=',\n    desc: data.singer[0].name+data.albumname,\n    img: 'http://imgcache.qq.com/music/photo/album_300/17/300_albumpic_'+data.albumid+'_0.jpg' \n}));\nres.data = items;\nsetSearchResult(res);","search_url":"http://116.85.33.135:3300/search?key=**&pageSize=60","titleColor":"#ff13b66a","group":"⑥视听","detail_col_type":"movie_1","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.songlist;\nvar items = list.map(data => ({\n    title: data.data.albumname,\n//标准音质播放&k=128,高品质播放&k=320\n    url: 'http://140.143.30.148/music/api/qq.php?ID='+data.data.songmid+'&k=128'+'@lazyRule=.js:var json = JSON.parse(fetch(input,{}))；；json.url',\n    desc: data.data.singer[0].name,\n    pic_url: 'http://imgcache.qq.com/music/photo/album_300/17/300_albumpic_'+data.data.albumid+'_0.jpg'\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_center_1","sdetail_find_rule":"js: var quality=\n['标准音质@@128',\n'极高音质@@320',\n'无损音质@@2000'];\n\n  var res = {};\n  var d = [];\nfor (var i = 0; i < quality.length; i++) {\n  var k = quality[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.title = k[0];\n  r.url = JSON.parse(fetch(getUrl()+k[1],{})).url;\n  r.col_type = 'text_3';\n  d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","ua":"auto","preRule":""},{"title":"小婷FM","author":"","version":0,"url":"https://www.qingting.fm/radiopage/fyAll/fypage;get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_3","class_name":"浙江&北京&天津&河北&上海&山西&内蒙古&辽宁&吉林&黑龙江&江苏&安徽&福建&江西&山东&河南&湖北&湖南&广东&广西&海南&重庆&四川&贵州&云南&陕西&甘肃&宁夏&新疆&西藏&青海","class_url":"99&3&5&7&83&19&31&44&59&69&85&111&129&139&151&169&187&202&217&239&254&257&259&281&291&316&327&351&357&308&342","area_name":"资讯&音乐&交通&经济&文艺&都市&体育&双语&综合&生活&旅游&曲艺&方言","area_url":"433&442&429&439&432&441&430&431&440&438&435&436&434","sort_name":"","year_name":"国家台&网络台","sort_url":"","year_url":"409&407","find_rule":".contentSec&&.radio;span&&Text;img&&src;.descRadio&&Text!正在直播：;a&&href.js:input.replace('/radios/','http://lhttp.qingting.fm/live/')+'/64k.mp3'","chapter_find":"","movie_find":"","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑥视听","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"title":"哔哩UP主Ⓡ","author":"1606142&Rx","version":19,"url":"https://api.bilibili.com/x/space/arc/search?mid=fyAll&ps=30&tid=0&keyword=&jsonp=jsonp&pn=fypage&order=pubdate","col_type":"movie_1_left_pic","class_name":"北城&张大仙&水一&禽兽狙&流影言志&千雅折一湖&凉风&木鱼水心&电影最TOP&胥渡吧&何止电影&虫哥说电影&刘老师说电影&人人短视频精选&动画学术趴&动画少数派&哔哩哔哩记录片&猛犸君侯&央视记录&纪录片之家字幕组","class_url":"103256880&1935882&1950209&65534411&31399640&488009671&14110780&927587&17819768&8112659&270355850&29296192&79061224&311117856&97471052&177622092&7584632&13374324&72209046&22121599","area_name":"毕导THU&收号哥&韩涵&罗翔说刑法&蜡笔和小勋&一条正弦&李永乐老师官方&坤哥物理&大宽物理&猴博士爱讲课&3BLUE1BROWN&美丽科学-BOS&真·凤舞九天&人类行为图鉴V&兔叭咯&小圆脸PAPRIKA&吃花椒的喵酱","area_url":"254463269&389650893&298645914&517327498&250111460&11733609&9458053&11265345&13407784&67907025&88461692&43646124&865267&535019206&7788379&239854589&2026561407","sort_name":"李子柒&秋叶-PPT&秋叶-EXCEL&Oeasy-Office&星月兮-HTML5&doyoudo-PR&卡敏与阿超-PR&左手PLUS-摄影&折纸的白叔&芳斯塔芙&表象的本质&混乱博物馆&飞碟说&老撕来撕思维研究室&回形针PAPERCLIP&妈咪说MOMMYTALK","year_name":"五条人&福禄寿&老番茄&某幻君&花少北&老师好我叫何同学&科技美学&手工耿&华农兄弟&美食台&美食作家王刚R&小高姐的魔法调料&徐大SAO&就是气气&老东北美食&欣小萌&咬人猫&吃素的狮子&A路人&谭乔","sort_url":"19577966&335567719&480423911&2884629&17638509&20503549&596859&20166755&2929582&72270557&363584502&97177641&5581898&38696383&258150656&223146252","year_url":"29686555&479695665&546195&1577804&2206456&163637592&3766866&280793434&250858633&19750237&290526283&216156027&390461123&13807284&514273130&8366990&116683&808171&391679&330415548","find_rule":"js: \nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.data.list.vlist.length; i++)\n{\n var r = {};\n var j = json.data.list.vlist[i];\n var t = Number(j.created)*1000;\n \n //时间戳转换方法 date:时间戳数字\nvar date = new Date(t);\nvar YY = date.getFullYear() + '-'; \nvar MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; \nvar DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()); \nvar hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; \nvar mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); \n/*——————————\nvar time = YY + MM + DD +' '+hh + mm + ss;\n——————————*/\nvar time = MM + DD;\n\nif (j.play>10000)\n    var play = (j.play/10000).toFixed(1)+'万';\nelse\n    var play = j.play;\n\n\n r.pic_url ='https:' + j.pic;\n r.url ='https://api.bilibili.com/x/web-interface/view/detail?aid=&bvid=' + j.bvid;\n r.title = j.title;\n r.desc = '时长：' + j.length + '  播放量：' + play + '  日期：' + time;\n if (j.length!=\"00:00\"){d.push(r)};\n}\nres.data = d;\nsetHomeResult(res)","searchFind":"js:\ntry{\nvar res = {};var d = [];var xs=JSON.parse(getResCode().split('video\",\"data\":')[1].split('}]')[0]+'}]');\nif(MY_URL.split('page=')[1]=='1&pagesize=20'){\n  try{\n  var w=\nJSON.parse(fetch('https://api.bilibili.com/x/web-interface/search/type?keyword='+MY_URL.split('keyword=')[1].split('&')[0]+'&page=1&search_type=bili_user&order=totalrank&pagesize=20',{})).data.result;\n    for(ii=0;ii<w.length&&ii<2;ii++){\n      d.push({\n      title:'up：'+w[ii].uname,\n      img:'https:'+w[ii].upic,\n      desc:'关注：'+w[ii].fans,\n      content:'视频数：'+w[ii].videos,\n      url:\n'https://api.bilibili.com/x/space/arc/search?mid='+w[ii].mid+'&ps=30&tid=0&keyword=&jsonp=jsonp&pn=fypage&order=pubdate'+getVar('ua'),\n         });\n    }\n  }catch(e){\n      d.push({\n      title:'‘‘找不到你想要的啊，要不换个关键词？’’',\n      col_type:'text_center_1'\n      });\n  }\n}\nres.data = d;\nsetSearchResult(res);}catch(e){}","search_url":"https://api.bilibili.com/x/web-interface/search/all/v2?keyword=**&page=fypage&pagesize=20;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 7.0；； wv lite baiduboxapp) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 T7/10.3 SearchCraft/2.6.2 (Baidu；； P1 7.0)}","titleColor":"#ff13b66a","group":"⑥视听","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res={}; var d=[];\nvar bangumi = getResCode();\nvar json=JSON.parse(bangumi);\nvar v=json.data.View; var p=v.pages;\nvar tags = fetch(\"hiker://files/cache/bili.txt\",{});\nif (Number(tags)>6){\n    var tags = 1;\n}\nif (Number(tags)==5){\nvar setting = `@lazyRule=.js:writeFile('hiker://files/cache/bili.txt',input);refreshPage();'toast://恭喜你开启隐藏页面'`;\n}else{\nvar setting = `@lazyRule=.js:writeFile('hiker://files/cache/bili.txt',input);refreshPage();'toast://什么也没有呀(>﹏<)再试试吧😜'`;}\n\n/*画质 116 80 64 31 16*/\n\n\n//获取原网页链接\nvar purl = 'https://www.bilibili.com/video/'+v.bvid;\n\n//萤火虫解析方法\nvar lazy5 = `@lazyRule=.js:var cookies =fetch('https://bilibili.syyhc.com/',{method:'GET',withHeaders:true});\\\neval('json=' + cookies);\\\nvar csrf_token = parseDom(json.body,'body&&.form-wrap&&Html').split('hidden\" value=\"')[1].split('\">')[0];\\\nvar cookie = 'session=' + JSON.stringify(json.headers).split('session=')[1].split(';')[0];\\\nvar html = fetch('https://bilibili.syyhc.com/parser',{headers:{'Cookie':cookie},body:'url='+input+'&csrf_token='+csrf_token,method:'POST'});\\\nvar url = parseDom(html,'body&&.video-result&&source&&src');\\\nurl!=''?url:input`;\n\n//简介\nd.push({\n    title: v.title,\n    desc: '描述: '+v.desc+'　类型: '+v.tname,\n    url: Number(tags)+1+setting,\n    img: v.pic,\n    col_type: 'movie_1_vertical_pic'\n    });\n\n\n\n\n//播放设置\ntry{\n    for (var i = 0; i <p.length; i++) {\n    var k = i+1;\n    var title = p[i].part;\n    //1080p直链\n    var lazy1 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=80&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //720p直链\n     var lazy2 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=64&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //480p直链\n     var lazy3 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=32&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //360p直链\n     var lazy4 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=16&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n      var tourl = v.videos!=1?purl+'?p='+p[i].page+lazy5:purl+lazy5;\n     //直链播放\n     d.push({\n          title:tags==6?'YHC»'+title:title,\n          url: tags==6?tourl:'toast://下方选择清晰度播放',\n          col_type:'text_center_1'\n          });\n     d.push({\n          title:'1080P',\n          url: lazy1,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'720P',\n          url: lazy2,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'480P',\n          url: lazy3,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'360P',\n          url: lazy4,\n          col_type:'text_4'\n          });\n}\n}catch(e){ }\n\nres.data=d; setHomeResult(res);","sdetail_col_type":"movie_1_left_pic","sdetail_find_rule":"js: \nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\nfor (var i = 0; i < json.data.list.vlist.length; i++)\n{\n var r = {};\n var j = json.data.list.vlist[i];\n var t = Number(j.created)*1000;\n \n //时间戳转换方法 date:时间戳数字\nvar date = new Date(t);\nvar YY = date.getFullYear() + '-'; \nvar MM = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'; \nvar DD = (date.getDate() < 10 ? '0' + (date.getDate()) : date.getDate()); \nvar hh = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':'; \nvar mm = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':'; var ss = (date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()); \n/*——————————\nvar time = YY + MM + DD +' '+hh + mm + ss;\n——————————*/\nvar time = MM + DD;\n\nif (j.play>10000)\n    var play = (j.play/10000).toFixed(1)+'万';\nelse\n    var play = j.play;\n\n\n r.pic_url ='https:' + j.pic;\n r.url =$('https://api.bilibili.com/x/web-interface/view/detail?aid=&bvid=' + j.bvid).rule(()=>{var res={}; var d=[];\nvar bangumi = getResCode();\nvar json=JSON.parse(bangumi);\nvar v=json.data.View; var p=v.pages;\nvar tags = fetch(\"hiker://files/cache/bili.txt\",{});\nif (Number(tags)>6){\n    var tags = 1;\n}\nif (Number(tags)==5){\nvar setting = `@lazyRule=.js:writeFile('hiker://files/cache/bili.txt',input);refreshPage();'toast://恭喜你开启隐藏页面'`;\n}else{\nvar setting = `@lazyRule=.js:writeFile('hiker://files/cache/bili.txt',input);refreshPage();'toast://什么也没有呀(>﹏<)再试试吧😜'`;}\n\n\n\n//获取原网页链接\nvar purl = 'https://www.bilibili.com/video/'+v.bvid;\n\n\n\n//简介\nd.push({\n    title: v.title,\n    desc: '描述: '+v.desc+'　类型: '+v.tname,\n    url: Number(tags)+1+setting,\n    img: v.pic,\n    col_type: 'movie_1_vertical_pic'\n    });\n\n\n\n\n//播放设置\ntry{\n    for (var i = 0; i <p.length; i++) {\n    var k = i+1;\n    var title = p[i].part;\n\n    //1080p直链\n    var lazy1 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=80&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //720p直链\n     var lazy2 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=64&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //480p直链\n     var lazy3 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=32&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n     //360p直链\n     var lazy4 =\n'https://api.bilibili.com/x/player/playurl?avid='+v.aid+'&cid='+p[i].cid+'&qn=16&type=&otype=json&appkey=84956560bc028eb7'+getVar(\"key\")+'&mid='+v.mid+`@lazyRule=body&&Html.js:var json ={};eval('json='+input);var durll=json.data.durl;durll[0].url+';{User-Agent@Mozilla/5.0 (Windows NT 10.0\\\\；\\\\； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36＆＆＆＆Referer@https://www.bilibili.com/video}'`;\n\n//萤火虫解析方法\nvar lazy5 = `@lazyRule=.js:var cookies =fetch('https://bilibili.syyhc.com/',{method:'GET',withHeaders:true});\\\neval('json=' + cookies);\\\nvar csrf_token = parseDom(json.body,'body&&.form-wrap&&Html').split('hidden\" value=\"')[1].split('\">')[0];\\\nvar cookie = 'session=' + JSON.stringify(json.headers).split('session=')[1].split(';')[0];\\\nvar html = fetch('https://bilibili.syyhc.com/parser',{headers:{'Cookie':cookie},body:'url='+input+'&csrf_token='+csrf_token,method:'POST'});\\\nvar url = parseDom(html,'body&&.video-result&&source&&src');\\\nurl!=''?url:input`;\n     var tourl = v.videos!=1?purl+'?p='+p[i].page+lazy5:purl+lazy5;\n     //直链播放\n     d.push({\n          title:tags==6?'YHC»'+title:title,\n          url: tags==6?tourl:'toast://下方选择清晰度播放',\n          col_type:'text_center_1'\n          });\n     d.push({\n          title:'1080P',\n          url: lazy1,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'720P',\n          url: lazy2,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'480P',\n          url: lazy3,\n          col_type:'text_4'\n          });\n     d.push({\n          title:'360P',\n          url: lazy4,\n          col_type:'text_4'\n          });\n}\n}catch(e){ }\n\nres.data=d; setHomeResult(res);});\n r.title = j.title;\n r.desc = '时长：' + j.length + '  播放量：' + play + '  日期：' + time;\n if (j.length!=\"00:00\"){d.push(r)};\n}\nres.data = d;\nsetSearchResult(res)","ua":"mobile","preRule":"putVar2('ua',';get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 7.0；； wv lite baiduboxapp) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/78.0.3904.96 Mobile Safari/537.36 T7/10.3 SearchCraft/2.6.2 (Baidu；； P1 7.0)}');\n\nputVar('key','&access_key=3204752264b2c01ef12f6c451b621331');"},{"title":"小雅","author":"","version":0,"url":"https://m.ximalaya.com/m-revision/page/rank/queryRank?clusterCode=rise&categoryCode=fyAll","col_type":"movie_3","class_name":"全部&有声书&音乐&相声评书&广播剧&娱乐&影视&儿童&历史&商业财经&人文&教育培训&IT科技&外语&头条&二次元&戏曲&旅游&健康养生&时尚生活","class_url":"all&youshengshu&yinyue&xiangsheng&guangbojv&yule&yingshi&ertong&lishi&shangye&renwen&jiaoyu&keji&waiyu&toutiao&erciyuan&xiqu&lvyou&jiankang&shishang","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res={};var d=[];\nvar json = JSON.parse(getResCode());\nfor (var i = 0; i < json.data.rankModuleInfoList.length; i ++) {\nvar j=json.data.rankModuleInfoList[i];\nif(j.albumInfo.albumPayType===0)\nd.push({\ntitle:j.albumInfo.title,\ndesc:j.albumInfo.salePoint,\npic_url:'https://imagev2.xmcdn.com/'+j.albumInfo.cover,\nurl:'https://m.ximalaya.com/m-revision/common/album/queryAlbumTrackRecordsByPage?albumId='+j.id+'&page=fypage&pageSize=10&asc=true&countKeys='\n}); \n}\nres.data=d;setHomeResult(res);","searchFind":"js:var res={};var d=[];\nvar json =JSON.parse(getResCode());\nfor (var i = 0; i < json.data.albumViews.albums.length; i ++) {\nvar j=json.data.albumViews.albums[i];\nif(j.albumInfo.is_paid==false)\nd.push({\ntitle:j.albumInfo.title,\nimg:j.albumInfo.cover_path,\ndesc:j.albumInfo.category_title,\ncontent:j.albumInfo.tags,\nurl:'https://m.ximalaya.com/m-revision/common/album/queryAlbumTrackRecordsByPage?albumId='+j.albumInfo.id+'&page=fypage&pageSize=10&asc=true&countKeys=',\n}); \n}\nres.data=d;setSearchResult(res);","search_url":"https://m.ximalaya.com/m-revision/page/search?kw=**&core=all&page=fypage&rows=8","titleColor":"#ff13b66a","group":"⑥视听","detail_col_type":"text_1","detail_find_rule":"js:var res={};var d=[];\nvar json =JSON.parse(getResCode());\nfor (var i = 0; i < json.data.trackDetailInfos.length; i ++) {\nvar j=json.data.trackDetailInfos[i];\nd.push({\ntitle:j.trackInfo.title,\npic_url:'https://imagev2.xmcdn.com/'+j.trackInfo.cover,\ndesc:j.trackInfo.createdAt,\nurl:j.trackInfo.playPath,\n}); \n}\nres.data=d;setHomeResult(res);","sdetail_col_type":"text_1","sdetail_find_rule":"js:var res={};var d=[];\nvar json =JSON.parse(getResCode());\nfor (var i = 0; i < json.data.trackDetailInfos.length; i ++) {\nvar j=json.data.trackDetailInfos[i];\nd.push({\ntitle:j.trackInfo.title,\npic_url:'https://imagev2.xmcdn.com/'+j.trackInfo.cover,\ndesc:j.trackInfo.createdAt,\nurl:j.trackInfo.playPath,\n}); \n}\nres.data=d;setHomeResult(res);","ua":"auto","preRule":""},{"firstHeader":"class","title":"小易云音乐X5","author":"小棉袄🌞","version":2,"url":"https://v1.jinrishici.com/all.json","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n\n'云音乐飙升榜@@19723756@@http://p2.music.126.net/DrRIg6CrgDfVLEph9SNh7w==/18696095720518497.jpg?param=100y100',\n'云音乐新歌榜@@3779629@@http://p2.music.126.net/N2HO5xfYEqyQ8q6oxCw8IQ==/18713687906568048.jpg?param=100y100',\n'网易原创歌曲榜@@2884035@@http://p2.music.126.net/sBzD11nforcuh1jdLSgX7g==/18740076185638788.jpg?param=100y100',\n'云音乐热歌榜@@3778678@@http://p2.music.126.net/GhhuF6Ep5Tq9IEvLsyCN7w==/18708190348409091.jpg?param=100y10',\n'云音乐说唱榜@@991319590@@http://p2.music.126.net/y8zyTt4HwXbJqB31aQKz1A==/109951164353220919.jpg?param=100y100',\n'云音乐古典音乐榜@@71384707@@http://p2.music.126.net/BzSxoj6O1LQPlFceDn-LKw==/18681802069355169.jpg?param=100y100',\n'云音乐电音榜@@1978921795@@http://p2.music.126.net/5tgOCD4jiPKBGt7znJl-2g==/18822539557941307.jpg?param=100y100',\n'抖音排行榜@@2250011882@@http://p2.music.126.net/oUxnXXvM33OUHxxukYnUjQ==/109951164174523461.jpg?param=100y100',\n'新声榜@@2617766278@@http://p2.music.126.net/XbjRDARP1xv5a-40ZDOy6A==/109951163785427934.jpg?param=100y100',\n'云音乐ACG音乐榜@@71385702@@http://p2.music.126.net/vttjtRjL75Q4DEnjRsO8-A==/18752170813539664.jpg?param=100y100',\n'云音乐韩语榜@@745956260@@http://p2.music.126.net/vs-cMh49e6qPEorHuhU07A==/18737877162497499.jpg?param=100y100',\n'云音乐国电榜@@10520166@@http://p2.music.126.net/8-GBrukQ3BHhs4CmK6qE4w==/109951163424197392.jpg?param=100y100',\n'英国Q杂志中文版周榜@@2023401535@@http://p2.music.126.net/0_6_Efe9m0D0NtghOxinUg==/109951163089272193.jpg?param=100y100',\n'电竞音乐榜@@2006508653@@http://p2.music.126.net/CUqQp33MZf_m0BwH4u0V6A==/109951163078922993.jpg?param=100y100',\n'UK排行榜周榜@@180106@@http://p2.music.126.net/VQOMRRix9_omZbg4t-pVpw==/18930291695438269.jpg?param=100y100',\n'美国Billboard周榜@@60198@@http://p2.music.126.net/EBRqPmY8k8qyVHyF8AyjdQ==/18641120139148117.jpg?param=100y100',\n'Beatport全球电子舞曲榜@@3812895@@http://p2.music.126.net/A61n94BjWAb-ql4xpwpYcg==/18613632348448741.jpg?param=100y100',\n'KTV唛榜@@21845217@@http://p2.music.126.net/H4Y7jxd_zwygcAmPMfwJnQ==/19174383276805159.jpg?param=100y100',\n'iTunes榜@@11641012@@http://p2.music.126.net/WTpbsVfxeB6qDs_3_rnQtg==/109951163601178881.jpg?param=100y100',\n'日本Oricon周榜@@60131@@http://p2.music.126.net/Rgqbqsf4b3gNOzZKxOMxuw==/19029247741938160.jpg?param=100y100',\n'Hit FM Top榜@@120001@@http://p2.music.126.net/54vZEZ-fCudWZm6GH7I55w==/19187577416338508.jpg?param=100y100',\n'台湾Hito排行榜@@112463@@http://p2.music.126.net/wqi4TF4ILiTUUL5T7zhwsQ==/18646617697286899.jpg?param=100y100',\n'云音乐欧美热歌榜@@2809513713@@http://p2.music.126.net/c0iThrYPpnFVgFvU6JCVXQ==/109951164091703579.jpg?param=100y100',\n'云音乐欧美新歌榜@@2809577409@@http://p2.music.126.net/Zb8AL5xdl9-_7WIyAhRLbw==/109951164091690485.jpg?param=100y100',\n'法国 NRJ Vos Hits 周榜@@27135204@@http://p2.music.126.net/6O0ZEnO-I_RADBylVypprg==/109951162873641556.jpg?param=100y100',\n'中国新乡村音乐排行榜@@3112516681@@http://p2.music.126.net/E5xPfNqD1rp6dB1VPOlLUQ==/109951164540938467.jpg?param=100y100',\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\n/*\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push(\n{\n title:hitokoto.content,\n desc:\n'类别：'+hitokoto.category+\n'\\n作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\n col_type: 'pic_1',\n url:\"http://m.yugaopian.cn/\",\n pic_url: 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime()\n\n});\n*/\n\nfor (var i = 0; i < t.length; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = 'https://music.163.com/api/playlist/detail?id='+k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_2';\n d.push(r);\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.data.songs;\nvar items = list.map(data => ({\n title: data.name,\n url: 'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3',\n desc: data.album.name,\n content: data.artists[0].name\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"https://v1.alapi.cn/api/music/search?keyword=**","titleColor":"#ff13b66a","group":"⑥视听","detail_col_type":"movie_1","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.result.tracks;\nvar items = list.map(data => ({\n title: data.name,\n url: 'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3'+'&memoryPosition=full'+`@lazyRule=.js:refreshX5WebView(input)；；'toast://正在加载中！'`,\n desc: data.artists[0].name+' '+data.album.name,\n pic_url: data.album.blurPicUrl\n}));\nitems.push({\n    desc:'80&&float',\n\t\tcol_type: 'x5_webview_single'\n});\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"厨娃R","author":"1606142&Reborn","version":15,"url":"https://www.xiachufang.com/fyAll?page=fypage;get;utf-8;{User-Agent@Mozilla 5.0}","col_type":"movie_1","class_name":"本周最受欢迎&新秀菜谱&往期头条&厨房101&月度最佳&最新创建&流行菜单","class_url":"explore&explore/rising&explore/head&explore/honor&explore/monthhonor&explore/created&explore/menu/pop","area_name":"家常菜&快手菜&下饭菜&早餐&汤羹&烘培&小吃","area_url":"category/40076&category/40077&category/40078&category/40071&category/20130&category/51761&category/40073","sort_name":"甜品饮品&甜品&糖水&果汁\n&下午茶&深夜食堂&宵夜&零食\n&三明治&炸牛奶&炸鲜奶","year_name":"糖醋&粥&面条&炒饭\n&肉类&鸡蛋&猪&鸡&鸭&虾&鳕鱼&山药&藕&茄子\n&电饭煲&高压锅\n&懒人食谱&视频菜谱","sort_url":"category/52381/&category/20135/&category/50680/&category/51823/\n&category/40072/&category/52107/&category/51865/&category/40074/\n&category/20157/&category/1025798/&category/1000044/","year_url":"category/40066/&category/20131/&category/1025/&category/20143/\n&category/1012713/&category/394/&category/5399/&category/104/&category/275/&category/469/&category/1072/&category/524/&category/503/&category/178/\n&category/51313/&category/52376/\n&category/1012722/&category/52428/","find_rule":".pure-u-3-4&&li;img&&alt;img&&data-src;.stats||.stat||.time&&Text;a&&href.js: (input.indexOf('recipe_list') > -1 ? (input + '?page=fypage') : input) + '#noHistory#'","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar host = 'https://www.xiachufang.com';\nvar noHistory = '#noHistory#';\n\n/**\n * 是否开启搜索结果包含菜单\n */\nvar containMenu = 1;\nlet valueInMap = getVar('xiachu_containMenu');\nvalueInMap = parseInt(valueInMap);\ncontainMenu = isNaN(valueInMap) === true ? containMenu : valueInMap;\n\ntry {\n    if (containMenu) {\n        let menusHtml = parseDomForArray(html, '.recipe-menus&&a');\n        for (let i = 0; i < menusHtml.length; i++) {\n            let menuHtml = menusHtml[i];\n            let menu = {};\n            menu.title = parseDomForHtml(menuHtml, 'a&&title');\n            menu.pic_url = parseDomForHtml(menuHtml, 'a&&img&&src');\n            menu.url = host + parseDomForHtml(menuHtml, 'a&&href') + '?page=fypage' + noHistory;\n            menu.desc = '菜单';\n            d.push(menu);\n        }\n        containMenu = 0;\n        putVar2('xiachu_containMenu', containMenu.toString());\n    }\n} catch (e) { }\n\ntry {\n    let resultsHtml = parseDomForArray(html, '.search-result-list&&ul&&li');\n        for (let i = 0; i < resultsHtml.length; i++) {\n            let resultHtml = resultsHtml[i];\n            let result = {};\n            result.title = parseDomForHtml(resultHtml, '.name&&Text');\n            result.pic_url = parseDomForHtml(resultHtml, '.cover&&img&&data-src').replace('w/215/h/136', 'w/430/h/272');\n            result.url = host + parseDomForHtml(resultHtml, 'a&&href') + noHistory;\n            result.content = parseDomForHtml(resultHtml, '.ing&&Text');\n            result.desc = parseDomForHtml(resultHtml, '.stats&&Text');\n            d.push(result);\n        }\n} catch (e) { }\n\nres.data = d;\nsetSearchResult(res);\n/*.search-result-list&&ul&&li;.name&&Text;a&&href.js: 'https://www.%78%69%61%63%68%75%66%61%6e%67.com' + input + '#noHistory#';.stats&&Text;.ing&&Text;.cover&&img&&data-src.js: input.replace('w/215/h/136', 'w/430/h/272')*/","search_url":"https://www.xiachufang.com/search/?keyword=**&page=fypage;get;utf-8;{User-Agent@Mozilla 5.0}","titleColor":"#ff148e8e","group":"⑦其他","detail_col_type":"rich_text","detail_find_rule":"js:\nif (MY_URL.indexOf('recipe_list') > -1) {\n    eval(JSON.parse(request(\"hiker://page/menu\")).rule)\n} else {\n    eval(JSON.parse(request(\"hiker://page/detail\")).rule)\n}","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"pc","preRule":"/**\n * 是否开启伪异步加载模式 1/开启 0/不开启\n *\n * 注意：二级会卡可以尝试开启该选项，但可能导致某些图片不显示\n */\nlet multiStepModel = 0;\n// 是否隐藏图片(省流模式) 1/隐藏 0/不隐藏\nlet hideImg = 0;\n// 图片质量，默认 300，推荐 600 或 800\nlet imgWidth = 600;\n// 是否显示看大图(防止无法加载图片) 1/显示 0/不显示\nlet showFullImgTips = 1;\n// 用户颜色\nlet userColor = \"#2979FF\";\n// 是否显示菜的描述 1/显示 0/不显示\nlet showDesc = 1;\n// 用料模块显示方式 1/完整视图 0/缩略模式\nlet ingsMode = 0;\n// 用料名颜色\nlet ingNameColor = \"#46c200\";\n// 用料量颜色\nlet ingUnitColor = \"#706a6b\";\n// 小贴士颜色\nlet tipsColor = \"#706a6b\";\n// 模块之间的间隔\nlet model_line_height = 1;\n// 正文提示\nlet contentTips = '下厨的时候一定要注意安全哦～' + '<br>';\n\n/**\n * 是否开启搜索结果包含菜单\n */\nvar containMenu = 1;\n\nputVar2('xiachu_multiStepModel', multiStepModel.toString());\nputVar2('xiachu_hideImg', hideImg.toString());\nputVar2('xiachu_imgWidth', imgWidth.toString());\nputVar2('xiachu_showFullImgTips', showFullImgTips.toString());\nputVar2('xiachu_userColor', userColor);\nputVar2('xiachu_showDesc', showDesc.toString());\nputVar2('xiachu_ingsMode', ingsMode.toString());\nputVar2('xiachu_ingNameColor', ingNameColor);\nputVar2('xiachu_ingUnitColor', ingUnitColor);\nputVar2('xiachu_tipsColor', tipsColor);\nputVar2('xiachu_model_line_height', model_line_height.toString());\nputVar2('xiachu_contentTips', contentTips);\n\nputVar2('xiachu_containMenu', containMenu.toString());\n\nputVar2('xiachu_host', base64Decode('d3d3LnhpYWNodWZhbmcuY29t'))","pages":"[{\"col_type\":\"rich_text\",\"name\":\"菜单列表\",\"path\":\"menu\",\"rule\":\"js:\\neval(JSON.parse(request(\\\"hiker://page/richtext\\\")).rule)\\neval(JSON.parse(request(\\\"hiker://page/settings\\\")).rule)\\n\\nvar res = {};\\nvar d = [];\\nvar html = getResCode();\\nvar urlSplits = MY_URL.split('?page=');\\nvar page = 1;\\ntry {\\n    let pageTemp = parseInt(urlSplits[1]);\\n    page = isNaN(pageTemp) === true ? page : pageTemp;\\n} catch (e) {}\\n\\ntry {\\n    let mainHtml = parseDomForHtml(html, '.main-panel&&Html');\\n\\n    if (page === 1) {\\n        /**\\n         * header\\n         */\\n        try {\\n            let headerTitle = getBigText(getStrongText(parseDomForHtml(mainHtml, 'h1&&Text'))) +\\n                ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文]'));\\n            let headerHtml = parseDomForHtml(mainHtml, '.rl-summary&&Html');\\n            let collectionCount = '<br>' + getSmallText(parseDomForHtml(headerHtml, '.stats&&Text'));\\n            let time = ' ' + getSmallText(getGreyText(parseDomForHtml(headerHtml, '.time&&Text')));\\n            d.push({\\n                title: headerTitle + collectionCount + time\\n            });\\n            d.push({\\n                col_type: 'line'\\n            });\\n            let author = getAuthorText(parseDomForHtml(headerHtml, '.avatar-link&&Text'));\\n            let desc = '<br>' + parseDomForHtml(headerHtml, '.desc&&Text');\\n            let meta = getBlockquoteText(author + desc);\\n            if (model_line_height > 0) {\\n                d.push({\\n                    title: meta + getGreyText(contentTips)\\n                });\\n                for (let i = 0; i < model_line_height; i++) {\\n                    d.push({\\n                        col_type: 'line_blank'\\n                    });\\n                }\\n            } else {\\n                d.push({\\n                    title: meta\\n                });\\n            }\\n        } catch (e) {}\\n    }\\n    /**\\n     * 正文\\n     */\\n    try {\\n        let contentsHtml = parseDomForHtml(html, '.rl-recipes&&Html');\\n        if (page === 1) {\\n            let contentTitle = getBigText(parseDomForHtml(contentsHtml, '.block-title&&Text'));\\n            d.push({\\n                title: contentTitle\\n            });\\n        }\\n        let contentsHtmlArray = parseDomForArray(contentsHtml, '.normal-recipe-list&&li');\\n        for (let i = 0; i < contentsHtmlArray.length; i++) {\\n            let contentItemHtml = contentsHtmlArray[i];\\n            let cover = parseDomForHtml(contentItemHtml, '.cover&&img&&data-src');\\n            let title = parseDomForHtml(contentItemHtml, '.info&&.name&&Text');\\n            let desc = parseDomForHtml(contentItemHtml, '.stats&&Text');\\n            let url = parseDom(contentItemHtml, 'a&&href');\\n            d.push({\\n                title: title,\\n                pic_url: cover,\\n                desc: desc,\\n                url: \\\"hiker://page/detail?url=\\\" + url.replace(/\\\\?/, \\\"？？\\\") + \\\"；；get；；utf-8；；{User-Agent@Mozilla 5.0}\\\"\\n\\n/*$(url).rule(()=>eval(JSON.parse(request(\\\"hiker://page/detail\\\")).rule))*/,\\n                col_type: 'movie_1'\\n            })\\n        }\\n    } catch (e) {}\\n} catch (e) {}\\n\\n\\nres.data = d;\\nsetHomeResult(res);\"},{\"col_type\":\"rich_text\",\"name\":\"菜谱详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar html = getResCode();\\nlog(html)\\n/*var urlSplits = MY_URL.split('?page=');\\nvar page = 1;\\ntry {\\n    let pageTemp = parseInt(urlSplits[1]);\\n    page = isNaN(pageTemp) === true ? page : pageTemp;\\n} catch (e) {}*/\\n\\neval(JSON.parse(request(\\\"hiker://page/settings\\\")).rule)\\n\\neval(JSON.parse(request(\\\"hiker://page/richtext\\\")).rule)\\n\\nString.prototype.replaceWithCallback = function(searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\nlet imgError = '<font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font>';\\n\\nfunction imgTag(context, sourceTag, imgUrl) {\\n    if (/(w\\\\/(\\\\d+)\\\\/interlace)/.test(imgUrl) === true) {\\n        let url = RegExp.$1;\\n        // log(sourceTag)\\n        sourceTag = sourceTag.replace(url, 'w/' + imgWidth + '/interlace');\\n        // log(sourceTag)\\n    }\\n    let replaceString = sourceTag;\\n    let replaceString1 = imgUrl === '' ?\\n        imgError :\\n        ('<a href=\\\"' + imgUrl + '\\\">' +\\n            (hideImg === 1 ? '[点击查看大图]' : '图片无法加载？点我试试~') +\\n            '</a>');\\n    if (showFullImgTips) {\\n        replaceString += ('<br>' + getSmallText(replaceString1));\\n    }\\n    if (hideImg) {\\n        replaceString = replaceString1;\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\n\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    // log(matchArray)\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            // log(item);\\n            /(<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>)/.test(item);\\n            let imgUrl = RegExp.$3;\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                let tag = item;\\n                // log(tag)\\n                returnValue = imgTag(returnValue, tag, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\ntry {\\n    let mainHtml = parseDomForHtml(html, '.main-panel&&Html');\\n    /**\\n     * header\\n     */\\n    try {\\n        let headerTitle = getBigText(getStrongText(parseDomForHtml(mainHtml, 'h1&&Text'))) +\\n            ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文]'));\\n        let tags = '';\\n        try {\\n            let headerTagsHtml = parseDomForHtml(html, '.recipe-tags&&Html');\\n            let tagsHtmlArray = parseDomForArray(headerTagsHtml, '.recipe-cats&&a');\\n            // setError(JSON.stringify(tagsHtmlArray));\\n            for (let i = 0; i < tagsHtmlArray.length; i++) {\\n                let tagHtml = tagsHtmlArray[i];\\n                let tag = getCodeText(parseDomForHtml(tagHtml, 'Text'));\\n                tags += tag;\\n            }\\n            // setError(tags);\\n        } catch (e) {}\\n        tags = tags === '' ? '<br>' + getCodeText('暂无分类') : '<br>' + tags;\\n        d.push({\\n            title: headerTitle + tags\\n        });\\n        d.push({\\n            col_type: 'line'\\n        });\\n    } catch (e) {}\\n\\n    /**\\n     * 描述\\n     */\\n    try {\\n        let author = getAuthorText('作者：' + parseDomForHtml(mainHtml, '.author&&Text'));\\n        let desc = '';\\n        try {\\n            desc = '<br>' + parseDomForHtml(mainHtml, '.desc&&Html');\\n        } catch (e) {}\\n\\n        /**\\n         * 展示\\n         */\\n        let showVideo = '';\\n        try {\\n            let showHtml = parseDomForHtml(html, '.recipe-show&&Html');\\n            let iframeVideoUrl = parseDomForHtml(showHtml, 'iframe&&src');\\n            // setError(iframeVideoUrl);\\n            let iframeHtml = fetch(iframeVideoUrl, {});\\n            // setError(iframeHtml);\\n            let videoUrl = parseDomForHtml(iframeHtml, 'video&&src');\\n            showVideo = getAddressTag(videoUrl, '本帖含视频，点我查看～');\\n        } catch (e) {}\\n\\n        let ings = '';\\n        try {\\n            /**\\n             * 用料\\n             */\\n            let ingsHtml = parseDomForHtml(mainHtml, '.ings&&Html');\\n            let ingsHtmlArray = parseDomForArray(ingsHtml, 'table&&tr');\\n            // setError(JSON.stringify(ingsHtmlArray));\\n            for (let i = 0; i < ingsHtmlArray.length; i++) {\\n                let ingHtml = ingsHtmlArray[i];\\n                /<td class=\\\"name\\\">([\\\\s\\\\S]*?)<\\\\/td>/.test(ingHtml);\\n                let ingName = RegExp.$1;\\n                if (ingName !== '') {\\n                    ingName = getColorText(parseDomForHtml(ingName, 'Text'), ingNameColor);\\n                    /<td class=\\\"unit\\\">([\\\\s\\\\S]*?)<\\\\/td>/.test(ingHtml);\\n                    let ingUnit = RegExp.$1;\\n                    ingUnit = getColorText(((ingUnit === ingName) ? '未知' : ingUnit), ingUnitColor);\\n                    let ing = ingName + ' ' + ingUnit;\\n                    ing = i === (ingsHtmlArray.length - 1) ? ing : ing + (ingsMode === 1 ? '<br>' : '、');\\n                    ings += ing\\n                }\\n            }\\n            ings = (getBigText(getTitleText('用料')) + '<br>') + ings;\\n        } catch (e) {}\\n        desc = showDesc === 1 ? desc : '';\\n        if (model_line_height > 0) {\\n            d.push({\\n                title: getBlockquoteText(author + desc) + (showVideo === '' ? getGreyText(contentTips) : showVideo + '<br>')\\n            });\\n            for (let i = 0; i < model_line_height; i++) {\\n                d.push({\\n                    col_type: 'line_blank'\\n                });\\n            }\\n            d.push({\\n                title: ings\\n            });\\n            for (let i = 0; i < model_line_height; i++) {\\n                d.push({\\n                    col_type: 'line_blank'\\n                });\\n            }\\n        } else {\\n            d.push({\\n                title: getBlockquoteText(author + desc) + (showVideo === '' ? '' : showVideo + '<br><br>') + ings\\n            });\\n        }\\n    } catch (e) {}\\n\\n    /**\\n     * 正文\\n     */\\n    try {\\n        let stepsTitle = getBigText(getTitleText('' + parseDomForHtml(mainHtml, '#steps&&Text') + ''));\\n        let stepsHtmlArray = parseDomForArray(mainHtml, '.steps&&.container');\\n        if (multiStepModel && model_line_height > 0) {\\n            d.push({\\n                title: stepsTitle\\n            });\\n        }\\n        let steps = '';\\n        for (let i = 0; i < stepsHtmlArray.length; i++) {\\n            let step = parseDomForHtml(stepsHtmlArray[i], '.container&&Html');\\n            step = getStrongText('步骤' + (i + 1) + '<br>') +\\n                step\\n                .replace(/<\\\\/p> <img src=/g, '<br><img src=')\\n                .replaceWithCallback(/(<img (src|data-src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>)/g, \\\"<img data-v>\\\", imgTagReplacement2)\\n                .replace(/(<p class=\\\"text\\\" style=\\\".*?\\\">)|(<\\\\/p>)/, '');\\n            if (multiStepModel && model_line_height > 0) {\\n                d.push({\\n                    title: step\\n                })\\n            } else {\\n                steps += '<br><br>' + step;\\n            }\\n        }\\n        if (!(multiStepModel && model_line_height > 0)) {\\n            d.push({\\n                title: stepsTitle + steps\\n            });\\n        }\\n        for (let i = 0; i < model_line_height; i++) {\\n            d.push({\\n                col_type: 'line_blank'\\n            });\\n        }\\n        /**\\n         * Tips\\n         */\\n        let tips = '';\\n        try {\\n            let tipsHtml = parseDomForHtml(mainHtml, '.tip-container&&Html');\\n            let tipsTitle = getBigText(getTitleText(parseDomForHtml(tipsHtml, 'h2&&Text')));\\n            tipsContent = '<br>' + parseDomForHtml(tipsHtml, '.tip&&Html');\\n            tips = getColorText(tipsTitle + tipsContent, tipsColor);\\n            d.push({\\n                title: tips\\n            });\\n            for (let i = 0; i < model_line_height; i++) {\\n                d.push({\\n                    col_type: 'line_blank'\\n                });\\n            }\\n        } catch (e) {}\\n    } catch (e) {}\\n\\n    /**\\n     * footer\\n     */\\n    try {\\n        let footerHtml = parseDomForHtml(html, '.recipe-stats&&Html');\\n        let time = parseDomForHtml(footerHtml, '.time&&Text');\\n        let collectionCount = parseDomForHtml(footerHtml, '.pv&&Text');\\n        let copyright = parseDomForHtml(footerHtml, '.copyright&&Text');\\n        let footer = getSmallText(getGreyText(time + '<br>' + collectionCount + '<br>' + copyright))\\n        d.push({\\n            title: footer\\n        });\\n    } catch (e) {}\\n\\n    /**\\n     * 评论\\n     */\\n    try {\\n        let commentHtml = parseDomForHtml(html, '.page-bottom-outer&&.page-container&&Html');\\n        let commentTitle = getBigText(getTitleText(parseDomForHtml(commentHtml, 'h2&&Text')));\\n        let commentsHtmlArray = parseDomForArray(commentHtml, '.question-list&&.recipe-quesions-content');\\n        if (commentsHtmlArray.length > 0) {\\n            d.push({\\n                col_type: 'line_blank'\\n            });\\n            d.push({\\n                title: commentTitle\\n            });\\n        }\\n        let comment = '';\\n        for (let i = 0; i < commentsHtmlArray.length; i++) {\\n            let commentsBlockHtmlArray = parseDomForArray(commentsHtmlArray[i], 'li&&.avatar-right-2');\\n            for (let j = 0; j < commentsBlockHtmlArray.length; j++) {\\n                let replyComment = '';\\n                let authorComment = '';\\n                if (commentsBlockHtmlArray[j].indexOf('赞') > -1) {\\n                    let replier = getAuthorText(parseDomForHtml(commentsBlockHtmlArray[j], '.info&&a&&Text'));\\n                    let reply_time = '';\\n                    if (/(<span class=\\\"normal-font gray-font align-baseline\\\">[\\\\s\\\\S]*?<\\\\/span>)/.test(commentsBlockHtmlArray[j]) === true) {\\n                        reply_time = getGreyText(RegExp.$1);\\n                    }\\n                    let reply_meta = getCommentMeta('<br>' + replier + reply_time);\\n                    let reply_content = parseDomForHtml(commentsBlockHtmlArray[j], '.right-bottom&&Html');\\n                    replyComment = reply_content + reply_meta;\\n                }\\n                if (commentsBlockHtmlArray[j].indexOf('作者回复') > -1) {\\n                    try {\\n                        let author = getAuthorText('作者回复');\\n                        let time = '';\\n                        if (/(<span class=\\\"normal-font gray-font align-baseline\\\">[\\\\s\\\\S]*?<\\\\/span>)/.test(commentsBlockHtmlArray[j]) === true) {\\n                            time = getGreyText(RegExp.$1);\\n                        }\\n                        let meta = getCommentMeta('<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + author + time);\\n                        let commentContent = '<span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>' +\\n                            parseDomForHtml(commentsBlockHtmlArray[j], '.right-bottom&&Html');\\n                        authorComment = commentContent + meta;\\n                        // authorComment = '<br>' + authorComment;\\n                    } catch (e) {}\\n                }\\n                comment = replyComment + authorComment;\\n                d.push({\\n                    title: comment.replace(/<div class=\\\"recipe-questions-digg\\\">/g, '')\\n                });\\n            }\\n            d.push({\\n                col_type: 'line'\\n            });\\n        }\\n    } catch (e) {}\\n} catch (e) {}\\n\\n\\nres.data = d;\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"富文本通用函数\",\"path\":\"richtext\",\"rule\":\"function getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\n\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\n\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\n\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\n\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\n\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\n\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\n\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\n\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\n\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\n\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"获取个人配置\",\"path\":\"settings\",\"rule\":\"/**\\n * 个人配置已移到预处理，请前往预处理进行配置\\n */\\n\\n/**\\n * 是否开启伪异步加载模式 1/开启 0/不开启\\n *\\n * 注意：二级会卡可以尝试开启该选项，但可能导致某些图片不显示\\n */\\nlet valueInMap = getVar('xiachu_multiStepModel');\\nlet multiStepModel = 0;\\nvalueInMap = parseInt(valueInMap);\\nmultiStepModel = isNaN(valueInMap) === true ? multiStepModel : valueInMap;\\n// 是否隐藏图片(省流模式) 1/隐藏 0/不隐藏\\nlet hideImg = 0;\\nvalueInMap = getVar('xiachu_hideImg');\\nvalueInMap = parseInt(valueInMap);\\nhideImg = isNaN(valueInMap) === true ? hideImg : valueInMap;\\n// 图片质量，默认 300，推荐 600 或 800\\nlet imgWidth = 600;\\nvalueInMap = getVar('xiachu_imgWidth');\\nvalueInMap = parseInt(valueInMap);\\nimgWidth = isNaN(valueInMap) === true ? imgWidth : valueInMap;\\n// 是否显示看大图(防止无法加载图片) 1/显示 0/不显示\\nlet showFullImgTips = 1;\\nvalueInMap = getVar('xiachu_showFullImgTips');\\nvalueInMap = parseInt(valueInMap);\\nshowFullImgTips = isNaN(valueInMap) === true ? showFullImgTips : valueInMap;\\n// 用户颜色*\\nlet userColor = \\\"#2979FF\\\";\\nvalueInMap = getVar('xiachu_userColor');\\nuserColor = valueInMap === '' ? userColor : valueInMap;\\n// 是否显示菜的描述 1/显示 0/不显示\\nlet showDesc = 1;\\nvalueInMap = getVar('xiachu_showDesc');\\nvalueInMap = parseInt(valueInMap);\\nshowDesc = isNaN(valueInMap) === true ? showDesc : valueInMap;\\n// 用料模块显示方式 1/完整视图 0/缩略模式\\nlet ingsMode = 0;\\nvalueInMap = getVar('xiachu_ingsMode');\\nvalueInMap = parseInt(valueInMap);\\ningsMode = isNaN(valueInMap) === true ? ingsMode : valueInMap;\\n// 用料名颜色\\nlet ingNameColor = \\\"#46c200\\\";\\nvalueInMap = getVar('xiachu_ingNameColor');\\ningNameColor = valueInMap === '' ? ingNameColor : valueInMap;\\n// 用料量颜色\\nlet ingUnitColor = \\\"#706a6b\\\";\\nvalueInMap = getVar('xiachu_ingUnitColor');\\ningUnitColor = valueInMap === '' ? ingUnitColor : valueInMap;\\n// 小贴士颜色\\nlet tipsColor = \\\"#706a6b\\\";\\nvalueInMap = getVar('xiachu_tipsColor');\\ntipsColor = valueInMap === '' ? tipsColor : valueInMap;\\n// 模块之间的间隔*\\nlet model_line_height = 1;\\nvalueInMap = getVar('xiachu_model_line_height');\\nvalueInMap = parseInt(valueInMap);\\nmodel_line_height = isNaN(valueInMap) === true ? model_line_height : valueInMap;\\n// 正文提示*\\nlet contentTips = '下厨的时候一定要注意安全哦～' + '<br>';\\nvalueInMap = getVar('xiachu_contentTips');\\ncontentTips = valueInMap === '' ? contentTips : valueInMap;\"}]","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"美食杰·Q","author":"发粪涂墙","version":0,"type":"read","url":"https://m.meishij.net/caipudaquan/#fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode()\nif (MY_PAGE == '1') {\n    var tab = pdfa(html, '#left_list&&ul&&li')\n\n    for (let i in tab) {\n        if (!getMyVar('tab')) {\n            putMyVar('tab', pd(tab[0], 'a&&href'))\n        }\n        if (!/调理|人群|厨具|场景/.test(tab[i])) {\n            d.push({\n                title: getMyVar('tab') == pd(tab[i], 'a&&href') ? '““' + pdfh(tab[i], 'Text') + '””' : pdfh(tab[i], 'Text'),\n                url: $(pd(tab[i], 'a&&href')+'#noLoading#').lazyRule(() => {\n                    putMyVar('tab', input)\n                    refreshPage()\n                    return 'hiker://empty'\n                }),\n                col_type: \"scroll_button\"\n            })\n        }\n    }\n    d.push({\n        col_type: \"big_blank_block\"\n    });\n    var html = request(getMyVar('tab'))\n    var right_list = pdfa(html, '#right_list&&li')\n    if (right_list == '') {\n        right_list = pdfa(html, '#right_list&&dd')\n    }\n    for (let j in right_list) {\n        if (!getMyVar(getMyVar('tab'))) {\n            putMyVar(getMyVar('tab'), pdfh(right_list[0], 'a&&href'))\n        }\n        d.push({\n            title: getMyVar(getMyVar('tab')) == pd(right_list[j], 'a&&href') ? '““' + pdfh(right_list[j], 'Text').replace(\"<\", '\\t&lt;') + '””' : pdfh(right_list[j], 'Text'),\n            url: $(pd(right_list[j], 'a&&href')+'#noLoading#').lazyRule(() => {\n                putMyVar(getMyVar('tab'), input)\n                refreshPage()\n                return 'hiker://empty'\n            }),\n            col_type: \"scroll_button\"\n        })\n    }\n}\nvar html1 = request(getMyVar(getMyVar('tab'), getMyVar('tab')) + 'p' + MY_PAGE)\nvar li = pdfa(html1, '.con_data_s2_list&&li:not(.ad)')\nif (li == '') {\n    li = pdfa(html1, '.cpranklist_s1&&.cprankitem_s1')\n}\nfor (let list of li) {\n    d.push({\n        title: pdfh(list, 'strong&&Text'),\n        url: pdfh(list, 'a&&href') +\n            '#immersiveTheme#',\n        img: pd(list, '.cell-img||img&&src')\n    })\n}\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = JSON.parse(fetch('https://m.meishij.net/search.php?q=' + MY_URL.split('#')[1], {\n    headers: {\n        'User-Agent': 'Mozilla/5.0'\n    },\n    redirect: false,\n    withHeaders: true\n})).headers.location[0]\nhtml = request(html + 'p' + MY_PAGE)\nvar list = pdfa(html, '.con_data_s2_list&&li:not(.ad)')\n\nfor (let i in list) {\n    d.push({\n        title: pdfh(list[i], 'strong&&Text'),\n        url: pd(list[i], 'a&&href') + '#immersiveTheme#',\n      //  content: pdfh(list[i], '.des&&Text'),\n        pic_url: pd(list[i], 'img&&src')\n    });\n}\nsetResult(d);","search_url":"hiker://empty#**#fypage","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode()\n//开关  开启：1    关闭：0\nvar Config_preview = 1; //视频教程\nvar Config_desc = 0; //美食简介\nvar Config_raw_material = 1; //原料辅料\nvar Config_step = 1; //图文教程\nvar Config_pics = 1; //图文教程图片\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nif (Config_preview) {\n    var video_conts = pdfh(html, 'body&&Html').match(/<video id=\\\"artical_video[\\s\\S]*?<\\/video>/g);\n    \n    if (video_conts != null) {\n        var des_desc = \"点击查看视频教程\";\n        var des_url = pd(html, '#artical_video&&src');\n        var des_pic = pd(html, '#artical_video&&poster');\n    } else {\n        var des_desc = \"暂无视频教程\";\n        var des_pic = pd(html, '.headerimg&&src');\n        var des_url = MY_URL;\n    }\n/*\nvar des_title = '““””<b><span style=\"color: '+getRangeColors()+'\">\\n做法:' + pdfh(html, '.cpargsw&&Text').replace(\"<\", '\\t&lt;')\n        .replace(\" \", '\\t\\t'+des_desc+\"\\n美食口味:\")\n        .replace(\" \", \"\\n需要时间\")\n        .replace(\"热量\", \"\")\n        .replace(\" \", \"\\n热量:\")\n        .replace(\" \", \"\\n难度:\")+'</span></b>'\n*/\nvar des_title = '““””<b><span style=\"color: '+getRangeColors()+'\">做法:' + pdfh(html, '.cpargsw&&Text').replace(\"<\", '\\t&lt;')\n        .replace(\" \", '\\t\\t\\t\\t口味:')\n        .replace(\" \", \"\\n需要时间\")\n        .replace(\"热量\", \"\")\n        .replace(\" \", \"\\n热量:\")\n        .replace(\" \", \"\\t\\t\\难度:\")+'</span></b>'\n    d.push({\n        title: des_title,\n        desc: des_desc,\n        pic_url: des_pic,\n        url: des_url,\n        col_type: 'movie_1_vertical_pic_blur'\n    });\n}\n\nif (Config_desc) {\n    d.push({\n        title: '美食简介',\n        url: 'toast://戳错地方啦',\n        col_type: 'text_center_1'\n    });\n    d.push({\n        title: pdfh(html, '.cpdes&&Text'),\n        col_type: 'long_text'\n    });\n    d.push({\n        col_type: 'line_blank'\n    });\n}\n\nif (Config_raw_material) {\n    var mHtml = '<body>' + pd(html, 'body&&.cpc_c3&&Html') + '</body>';\n    var tabs = pdfa(mHtml, 'body&&.c_mtr_t');\n    var conts = pdfa(mHtml, 'body&&.c_mtr_ul');\n    for (var i = 0; i < tabs.length; i++) {\n        d.push({\n            title: pdfh(tabs[i], 'div&&Text'),\n            url: 'hiker://search',\n            col_type: 'text_center_1'\n        });\n        var list = pdfa(conts[i], 'body&&.c_mtr_li');\n        for (var j in list) {\n            d.push({\n                title: pdfh(list[j], 'div&&Text').replace(/(.*?)(\\d+)(.*)/, '$1\\t““$2$3””'),\n                url: 'hiker://search',\n                col_type: 'text_2'\n            })\n        }\n    }\n    d.push({\n        col_type: 'line_blank'\n    });\n}\n\nif (Config_step) {\n    d.push({\n        title: '制作步骤',\n        url: 'hiker://search',\n        col_type: 'text_center_1'\n    });\n    var shtml = '<body>' + pd(html, '.cpc_c4&&Html') + '</body>';\n    var step = pdfa(shtml, 'body&&.stepitem');\n    for (var v in step) {\n        d.push({\n            title: pdfh(step[v], 'div&&Text').replace(\" \", \"：\"),\n            col_type: 'long_text'\n        });\n        if (Config_pics) {\n            if (step[v].indexOf(\"http\") != -1) {\n                var pic_list = step[v].match(/<img[\\s\\S]*?jpg\\\">/g);\n                for (var w in pic_list) {\n                    d.push({\n                        img: pdfh(pic_list[w], 'img&&src'),\n                        url: pdfh(pic_list[w], 'img&&src'),\n                        col_type: 'pic_1_full'\n                    });\n                }\n            }\n        }\n    }\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://st-cn.meishij.net/user/162/221/ns117912_142372157780527.jpg"},{"last_chapter_rule":"","title":"兔小贝","author":"发粪涂墙","version":0,"type":"video","url":"https://www.tuxiaobei.com/list/mip-data?typeId=fyAll&page=fypage&callback=","col_type":"movie_2","class_name":"全部&儿歌&故事&公益&十万个为什么&安全教育&动物奇缘","class_url":"&2&3&27&9&28&29","area_name":"弟子规&古诗&三字经&千字文","area_url":"7&5&6&8","sort_name":"折纸","year_name":"数学&英语","sort_url":"24","year_url":"11&25","find_rule":"js:\nvar d = [];\nvar json = JSON.parse(getResCode().match(/\\((.*?)\\);/)[1]).data.items;\nd = json.map(data => ({\n    title: data.name,\n    desc: data.category_name,\n    img: data.image,\n    url: 'https://www.tuxiaobei.com/play/'+data.video_id+`@lazyRule=mip-search-video&&video-src.js:input+'#isVideo=true#'`\n}));\nsetResult(d);","searchFind":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \"body&&.list-con&&.items\");\nfor (let it of arr) {\n    d.push({\n        url: 'https://www.tuxiaobei.com'+pdfh(it, \"a&&href\")+`@lazyRule=mip-search-video&&video-src.js:input+'#isVideo=true#'`,\n        title: pdfh(it, \".title&&Text\"),\n        desc: pdfh(it, \".time&&Text\"),\n        pic_url: pdfh(it, \"mip-img&&src\")\n    });\n\n}\n\nsetResult(d);","search_url":"https://www.tuxiaobei.com/search/**","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsbimg.huijuyun.com%2Fcn%2Fsbimg%2FtmpSB%2FIMG%2F000%2F015%2F245%2F830%2Flogo_middle.jpg&refer=http%3A%2F%2Fsbimg.huijuyun.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1644134375&t=a488f1797a94a271e3060c3068602cee"},{"title":"Jsons.c𝔥","author":"Hood","version":1,"url":"http://www.jsons.cn/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//线路列表\nvar tabs = parseDomForArray(html, '.footermap&&ul');\n\n//全部选集列表\nvar conts = parseDomForArray(html, '.footermap&&ul');\n\nfor(var i = 0; i < tabs.length; i++){\n\n//选集列表\nvar list=parseDomForArray(conts[i], 'ul&&a');\n\n//线路名称\nd.push({\ntitle:\"““””<b>\"+'<span style=\"color: #33CC99\">'+parseDomForHtml(tabs[i],'b&&Text')+'</span></b>',\nurl:'toast://点什么点 (｡•ˇ‸ˇ•｡)',\ncol_type: 'text_1'});\n\n//选集名称\nfor(var j in list){\nd.push({\ntitle: parseDomForHtml(list[j],'a&&Text'),\nurl: parseDom(list[j],'a&&href'),\ncol_type: 'text_2'});\n  }\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"小爱同学♢","author":"Joker","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nif (getItem('start', '') == '') {\n    confirm({\n        title: '温馨提示',\n        content: '记得打开声音呦',\n        confirm: 'setItem(\"start\",\"1\")',\n        cancel: 'setItem(\"start\",\"1\")'\n    })\n}\nsetResult([{\n    col_type: 'x5_webview_single',\n    desc: '0&&list'\n}, {\n    title: '小爱同学',\n    col_type: 'input',\n    url: $.toString(() => {\n        let json = JSON.parse(fetch('http://jiuli.xiaoapi.cn/i/xiaoai_tts.php?msg=' + input));\n        return 'x5WebView://' + json.mp3;\n    })\n}])","searchFind":"","search_url":"","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"故事会♢","author":"Joker","version":6,"url":"http://new-qk.lifves.com/list.php?url=M0QzJWV1c3NpNjIlMTIwMkQzJXJhZXk2MiUyODVlNjY5YmEyMzktOWQ3Yi04NWY0LWUyNjItNzFjM2NkODBEMyVkaUYzJWxpYXRlZEYyJWFnYW1GMiVjcEYyJW1vYy5uYWtpcS5zcGQuZ3N0eGRuakYyJUYyJUEzJXB0dGg=","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener('onClose','clearVar(\"year\")');\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\"));\nlet d = [];\nlet items = {};\nlet now = getVar('year', String(data_list.data_list[0].year));\nfor (let list of data_list.data_list) {\n    if (now == list.year) items = list.list;\n    d.push({\n        title: '““””' + (list.year == now ? '<font color=red>' + list.year + '</font>' : list.year),\n        col_type: 'scroll_button',\n        url: $().lazyRule((year) => {\n            putVar('year', String(year));\n            refreshPage();\n            return 'hiker://empty'\n        }, list.year)\n    });\n}\nfor (let item of items) {\n    d.push({\n        title: item.span,\n        url: \"http://new-qk.lifves.com/\" + item.href,\n        img: item.img\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ff871f78","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"js:\naddListener('onClose', $.toString(() => {\n    clearVar('item');\n}))\nlet d = [];\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\").match(/let\\s*data_list.*JSON\\.parse\\(.*\\)/)[0]);\nfor (let item in data_list.data_list.ml) {\n    let i = getVar('item');\n    d.push({\n        title: '““””<strong>' + item + '</strong>' + (i == item ? '▽' : '△'),\n        col_type: 'text_1',\n        url: $().lazyRule((item) => {\n            if (getVar('item') == item) {\n                clearVar('item');\n                refreshPage(false);\n                return 'toast://已收起 ' + item;\n            } else {\n                putVar('item', item);\n                refreshPage(false);\n                return 'toast://已展开 ' + item;\n            }\n        }, item)\n    })\n\n    if (i && i == item) {\n        data_list.data_list.ml[i].forEach(e => {\n            d.push({\n                title: '““””<small>' + e.title + '</small>',\n                desc: '““””<small>' + e.intro + '</small>',\n                col_type: 'text_1',\n                url: $('hiker://empty#noHistory#').rule((title, href) => {\n                    let html = request(href, {});\n                    let text = parseDom(html, '.text&&Html');\n                    let author = parseDomForHtml(html, '.author&&Text');\n                    setResult([{\n                        title: '““””<h2>' + title + '</h2>' + '<small><font color=grey>' + author + '</font> </small>',\n                        col_type: 'text_center_1',\n                        url: href,\n                        extra: {\n                            lineVisible: false\n                        }\n                    }, {\n                        title: '<small>(<a href=\"hiker://empty@lazyRule=.js:setItem(`fontsize`,String(parseInt(getItem(`fontsize`)) + 1))；；refreshPage(false)；；`hiker://empty`\">字号+</a>)</small><small>(<a href=\"hiker://empty@lazyRule=.js:setItem(`fontsize`,String(parseInt(getItem(`fontsize`)) - 1))；；refreshPage(false)；；`hiker://empty`\">字号-</a>)</small>',\n                        col_type: 'rich_text'\n                    }, {\n                        title: text.replace(/\\>[a-zA-Z0-9+=\\/]*\\</g, '><').replace(/\\<p\\>/g, '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'),\n                        col_type: 'rich_text',\n                        extra: {\n                            textSize: parseInt(getItem('fontsize'))\n                        }\n                    }])\n                }, e.title, \"http://new-qk.lifves.com/\" + e.href)\n            })\n        })\n    }\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if (!getItem('fontsize','')) {\n    setItem('fontsize', String(15))\n}","pages":"[]","icon":"#ff871f78"},{"last_chapter_rule":"","title":"糗事百科","author":"子丑寅卯","version":15,"url":"https://www.qiushibaike.com/fyAll/page/fypage@*1@40@/[firstPage=https://www.qiushibaike.com/fyAll]","col_type":"movie_1_vertical_pic","class_name":"搞笑视频&糗百段子","class_url":"video&text","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.main&&.article');\r\nfor (var j in list) {  \nif(MY_URL.indexOf('video')>-1){\r\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.content&&Text'),       \r\ndesc:'““💩 '+ parseDomForHtml(list[j], '.stats-vote&&Text').replace('好笑','')+'””',       \r\npic_url: parseDom(list[j], 'source&&src'),       \r\nurl: parseDom(list[j],'source&&src')+`@lazyRule=.js:input`  \r\n});\n}else{\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.content&&Text'),       \r\ndesc:'‘‘💩  '+parseDomForHtml(list[j], '.stats-vote&&Text').replace(\"好笑\",\"\")+' ===>    查看全文'+'’’',           \r\nurl: parseDom(list[j],'.stats-comments&&a&&href')+';get;UTF-8;{User-Agent@Windows}',\ncol_type:'text_1' \r\n});\nd.push({\n    col_type: \"line_blank\"\n});\n}\n\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);\r\n","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar d = [];\r\nvar res = {};\r\nvar h = getResCode();\r\nd.push({\n    title:parseDomForHtml(h, 'body&&.content&&Html'),\r\n    col_type:\"rich_text\"\n})\nd.push({\n    col_type: \"line_blank\"\n});\n\n\nd.push({\n    title:parseDomForHtml(h, 'body&&.comments-list&&Html'),\r\n    col_type:\"rich_text\",\nextra: {\n        textSize: 18,\n        click: true\n    }\n})\n\n  res.data = d;\r\n  setHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"https://www.qiushibaike.com/favicon.ico"},{"last_chapter_rule":"","title":"故事会α","author":"LZX","version":6,"url":"http://new-qk.lifves.com/list.php?url=M0QzJWV1c3NpNjIlMTIwMkQzJXJhZXk2MiUyODVlNjY5YmEyMzktOWQ3Yi04NWY0LWUyNjItNzFjM2NkODBEMyVkaUYzJWxpYXRlZEYyJWFnYW1GMiVjcEYyJW1vYy5uYWtpcS5zcGQuZ3N0eGRuakYyJUYyJUEzJXB0dGg=","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener('onClose','clearVar(\"year\")');\neval(parseDomForHtml(getResCode(), \"body&&script,2&&Html\"));\nlet d = [];\nlet items = {};\nlet now = getVar('year', String(data_list.data_list[0].year));\nfor (let list of data_list.data_list) {\n    if (now == list.year) items = list.list;\n    d.push({\n        title: '““””' + (list.year == now ? '<font color=red>' + list.year + '</font>' : list.year),\n        col_type: 'scroll_button',\n        url: $().lazyRule((year) => {\n            putVar('year', String(year));\n            refreshPage();\n            return 'hiker://empty'\n        }, list.year)\n    });\n}\nfor (let item of items) {\n    d.push({\n        title: item.span,\n        url: \"http://new-qk.lifves.com/\" + item.href,\n        img: item.img\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑦其他","detail_col_type":"movie_3","detail_find_rule":"js:\neval(parseDomForHtml(getResCode(),\"body&&script,2&&Html\").split(\"localStorage\")[0]);\nlet data=[];\nfor(let i=0;i<page_list.length;i++){\n    let item=page_list[i];\n    data.push({\n       title:item.title,\n       url:\"x5://http://new-qk.lifves.com/\"+item.href,\n    });\n}\nsetResult(data);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if (!getItem('fontsize','')) {\n    setItem('fontsize', String(15))\n}","pages":"[]","icon":""},{"last_chapter_rule":"","title":"PrivateJS工具","author":"Reborn","version":2,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet newWindow = true\nlet homePage = JSON.parse(request('hiker://page/home?rule=' + MY_RULE.title)).rule\neval(homePage)","searchFind":"","search_url":"","titleColor":"","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"js:\\nsetPageTitle('加密JS')\\n\\nevalPrivateJS(getPrivateJS('let d = []'))\\n\\n//evalPrivateJS(getVar(\\\"test-text\\\", \\\"\\\"))\\naddListener('onClose', $.toString(() => {\\n    clearVar(\\\"test-text\\\")\\n    clearVar(\\\"test-result\\\")\\n}))\\n\\ntry {\\n    if (newWindow) {\\n        /*for (let i = 0; i < 1; i++) {\\n            d.push({\\n                col_type: 'big_blank_block'\\n            });\\n        }*/\\n        d.push({\\n            title: '““””<b>选项</b>',\\n            col_type: 'scroll_button',\\n            url: 'hiker://empty',\\n        })\\n        d.push({\\n            title: '点我化为新窗口',\\n            col_type: 'scroll_button',\\n            url: 'hiker://page/home',\\n            extra: {\\n                newWindow: true,\\n                // lineVisible: false\\n            }\\n        })\\n    }\\n} catch (e) {\\n    log(e.message)\\n}\\n\\nd.push({\\n    title: \\\"清空\\\",\\n    desc: \\\"请输入源代码\\\",\\n    col_type: \\\"input\\\",\\n    extra: {\\n        titleVisible: true,\\n        defaultValue: getVar(\\\"test-text\\\", \\\"\\\"),\\n        type: \\\"textarea\\\",\\n        onChange: 'putVar(\\\"test-text\\\", input)'\\n    },\\n    url: $.toString(() => {\\n        putVar(\\\"test-text\\\", '')\\n        refreshPage(false)\\n        return 'toast://清空成功'\\n    })\\n})\\nd.push({\\n    title: \\\"点我加密JS\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: $().lazyRule(() => {\\n        let src = getVar(\\\"test-text\\\", \\\"\\\")\\n        if (!src) {\\n            putVar(\\\"test-result\\\", \\\"请输入源代码\\\")\\n            refreshPage(false)\\n            return \\\"hiker://empty\\\"\\n        }\\n        let privateJS = getPrivateJS(src)\\n        // privateJS = \\\"[HikerPrivateJS]:\\\" + privateJS\\n        putVar(\\\"test-result\\\", privateJS)\\n        refreshPage(false)\\n        return \\\"toast://加密成功，请查看下方执行结果~\\\"\\n    })\\n})\\nd.push({\\n    title: \\\"复制\\\",\\n    desc: \\\"加密结果\\\",\\n    col_type: \\\"input\\\",\\n    extra: {\\n        titleVisible: true,\\n        defaultValue: getVar(\\\"test-result\\\", \\\"\\\"),\\n        type: \\\"textarea\\\",\\n        onChange: 'putVar(\\\"test-result\\\", input)'\\n    },\\n    url: $.toString(() => {\\n        return 'copy://' + input\\n    })\\n})\\n/*if (getVar(\\\"test-text\\\", \\\"\\\").includes(\\\"PrivateJS\\\")) {\\n    d.push({\\n        title: \\\"““点我查看执行结果””\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: $(\\\"hiker://empty#noHistory#\\\").rule(() => {\\n            evalPrivateJS(getPrivateJS('let d = []'))\\n            let js = getVar(\\\"test-text\\\", \\\"\\\").replace(\\\"[HikerPrivateJS]:\\\", \\\"\\\")\\n            log(js)\\n            evalPrivateJS(js)\\n            setResult(d)\\n        })\\n    })\\n}*/\\nsetResult(d);\"}]","icon":""},{"last_chapter_rule":"","title":"字符串压缩测试","author":"Reborn","version":9,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\ntry { if(fba != null) {} } catch (e) {}\nlet d = []\nd.push({\n    title: '这是一个字符串压缩方法的集合，代码都在子页面<br><br>点击子页面可体验对应方法：',\n    col_type: 'rich_text'\n})\nlet pageList = MY_RULE.pageList.filter(page => !page.name.match(/字符串处理工具|CompressUI|字串转换函数/))\nfor (let page of pageList) {\n    /*let rule = $().rule((page) => {\n        const {\n            htmlEscape\n        } = $.require(\"hiker://page/stringtool\");\n        let d = []\n        d.push({\n            title: htmlEscape(page.rule),\n            col_type: 'rich_text'\n        })\n        setResult(d)\n    }, page)*/\n    let rule = \"hiker://page/compress-ui\"\n    d.push({\n        title: page.name,\n        col_type: 'text_2',\n        url: rule,\n        extra: {\n            title: '算法 ' + page.name,\n            pageRule: page.rule,\n            pagePath: page.path\n        }\n    })\n}\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"⑦其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"字符串处理工具\",\"path\":\"stringtool\",\"rule\":\"js:\\nconst matchList  = {\\n  // \\\"<\\\":\\\"&lt;\\\",\\n  // \\\">\\\": \\\"&gt;\\\",\\n  // \\\"&\\\": \\\"&amp;\\\",\\n  // '\\\"': \\\"&quot;\\\",\\n  // \\\"'\\\": \\\"acute;\\\",\\n  \\\" \\\": \\\"&nbsp;\\\",\\n  \\\"\\\\n\\\":\\\"<br>\\\"\\n}\\n// 字符过滤器\\nfunction htmlEscape(text){\\n  let regStr = '(' + Object.keys(matchList).toString() + ')'\\n  regStr = regStr.replace(/,/g, ')|(')  \\n  const regExp = new RegExp(regStr, 'g')\\n  return text.replace(regExp, match => matchList[match])\\n}\\n$.exports.htmlEscape = htmlEscape\"},{\"col_type\":\"movie_3\",\"name\":\"CompressUI\",\"path\":\"compress-ui\",\"rule\":\"js:\\nif (MY_PARAMS.title) {\\n    setPageTitle(MY_PARAMS.title)\\n}\\n\\nlet lzStringTool = JSON.parse(request('hiker://page/lz-string-tool?rule=字符串压缩测试')).rule;\\neval(lzStringTool)\\neval(MY_PARAMS.pageRule)\\n\\nlet d = [];\\nd.push({\\n    title: \\\"压缩\\\",\\n    desc: \\\"请输入原文\\\",\\n    col_type: 'input',\\n    extra: {\\n        // titleVisible: false,\\n        type: \\\"textarea\\\",\\n        height: 4,\\n        defaultValue: getVar(\\\"test-decompress\\\", \\\"\\\"),\\n        onChange: $.toString(() => {\\n            putVar(\\\"test-decompress\\\", input)\\n        })\\n    },\\n    url: $.toString((MY_PARAMS) => {\\n        let inputValue = getVar(\\\"test-decompress\\\", \\\"\\\")\\n        eval(MY_PARAMS.pageRule)\\n        let result = ZipTool.compress.exec(inputValue)\\n        if (result.startsWith(\\\"x5Rule://\\\")) {\\n            return result\\n        }\\n        putVar(\\\"test-compress\\\", result)\\n        // log(result)\\n        refreshPage(false)\\n        return 'toast://压缩成功'\\n    }, MY_PARAMS)\\n})\\nlet d_size = \\n ZipTool.decompress.size.get() *2;\\nlet ds_size = getVar(\\\"test-decompress\\\", \\\"\\\").length\\nlet d_text = '&nbsp;&nbsp;Decompress Size: ' + d_size + ' Bytes' + ', Length: ' + ds_size\\nd.push({\\n    title: d_text,\\n    col_type: 'rich_text'\\n})\\nd.push({\\n    title: \\\"解压\\\",\\n    desc: \\\"请输入密文\\\",\\n    col_type: 'input',\\n    extra: {\\n        // titleVisible: false,\\n        type: \\\"textarea\\\",\\n        height: 4,\\n        defaultValue: getVar(\\\"test-compress\\\", \\\"\\\"),\\n        onChange: $.toString(() => {\\n            putVar(\\\"test-compress\\\", input)\\n        })\\n    },\\n    url: $.toString((MY_PARAMS) => {\\n        let inputValue = getVar(\\\"test-compress\\\", \\\"\\\")\\n        eval(MY_PARAMS.pageRule)\\n        let result = ZipTool.decompress.exec(inputValue)\\n        if (result.startsWith(\\\"x5Rule://\\\")) {\\n            return result\\n        }\\n        putVar(\\\"test-decompress\\\", result)\\n        // log(result)\\n        refreshPage(false)\\n        return 'toast://解压成功'\\n    }, MY_PARAMS)\\n})\\nlet c_size = \\n ZipTool.compress.size.get();\\nlet cs_size = getVar(\\\"test-compress\\\", \\\"\\\").length\\nd.push({\\n    title: '&nbsp;&nbsp;Compress Size: ' + c_size + ' Bytes' + ', Length: ' + cs_size,\\n    col_type: 'rich_text'\\n})\\n// log((1 - (c_size / d_size)))\\nlet compare = Math.round(\\n    (1 - (c_size / d_size)) * 100)\\nd.push({\\n    title: '&nbsp;&nbsp;压缩率: ' + compare + '%',\\n    col_type: 'rich_text'\\n})\\n\\nd.push({\\n    title: '清空原文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: \\\"hiker://empty#noLoading#\\\" + \\\"@lazyRule=.js:putVar('test-decompress', '');refreshPage();'toast://清空成功'\\\",\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '清空密文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: \\\"hiker://empty#noLoading#\\\" + \\\"@lazyRule=.js:putVar('test-compress', '');refreshPage();'toast://清空成功'\\\",\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '复制原文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule(() => {\\n        var dec = getVar(\\\"test-decompress\\\");\\n        if (dec) {\\n            return \\\"copy://\\\" + dec;\\n        } else {\\n            return \\\"toast://内容为空！\\\"\\n        }\\n    }),\\n    col_type: 'icon_2'\\n});\\n\\nd.push({\\n    title: '复制密文',\\n    img: 'https://gitee.com/CherishRx/imagewarehouse/raw/master/image/32d29e2fbcdf8d83071deec7f6aa4b7c.png',\\n    url: $(\\\"hiker://empty#noLoading#\\\").lazyRule(() => {\\n        var enc = getVar(\\\"test-compress\\\");\\n        if (enc) {\\n            return \\\"copy://\\\" + enc;\\n        } else {\\n            return \\\"toast://内容为空！\\\"\\n        }\\n    }),\\n    col_type: 'icon_2'\\n});\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"压缩方法模板\",\"path\":\"template\",\"rule\":\"js:\\n// 注： ZipTool 变量名不能改，没有中文标注的地方也不能动\\nlet ZipTool = {\\n    dependence: '依赖地址',\\n    compress: {\\n        size: {\\n            key: \\\"test-compress-size\\\",\\n            set: (newValue) => {\\n                putVar(this.key, newValue.toString())\\n            },\\n            get: () => {\\n                return parseInt(getVar(this.key, \\\"0\\\"))\\n            }\\n        },\\n        /**\\n         * 压缩执行方法，通过 ZipTool.compress.exec(input) 调用\\n         */\\n        exec: (input) => {\\n            // eval(request(ZipTool.dependence))\\n            let result = '执行压缩后返回的值'\\n            ZipTool.compress.size.set(result.length)\\n            return result\\n        }\\n    },\\n    /**\\n     * 解压执行方法，通过 ZipTool.decompress.exec(input) 调用\\n     */\\n    decompress: {\\n        size: {\\n            get: () => {\\n                return getVar(\\\"test-decompress\\\", \\\"0\\\").length\\n            }\\n        },\\n        exec: (input) => {\\n            // eval(request(ZipTool.dependence))\\n            let result = '执行解压后返回的值'\\n            return result\\n        }\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lz-string\",\"path\":\"lz-string\",\"rule\":\"js:\\n/*\\n原文 1052 Bytes \\n原文Base64 1880 Bytes\\n原文LZ-String 480 Bytes\\n原文LZMA 422 Bytes\\n\\nhttps://qastack.cn/programming/294297/javascript-implementation-of-gzip\\n\\nhttps://cdn.jsdelivr.net/npm/lz-string@1.4.4/libs/lz-string.min.js\\nhttps://cdn.jsdelivr.net/npm/lz-string@1.4.4/libs/base64-string.js\\n*/\\nfunction toHexString(byteArray) {\\n    return Array.from(byteArray, function(byte) {\\n        return ('0' + (byte & 0xFF).toString(16)).slice(-2);\\n    }).join('')\\n}\\nlet ZipTool = {\\n    dependence: 'https://cdn.jsdelivr.net/npm/lz-string@1.4.4/libs/lz-string.min.js',\\n    compress: {\\n        size: {\\n            key: \\\"test-compress-size\\\",\\n            set: (newValue) => {\\n                putVar(this.key, newValue.toString())\\n            },\\n            get: () => {\\n                return parseInt(getVar(this.key, \\\"0\\\"))\\n            }\\n        },\\n        exec: (input) => {\\n            eval(request(ZipTool.dependence))\\n// LZString.compressToEncodedURIComponent\\n            let result = LZString.compressToEncodedURIComponent(input)\\n            ZipTool.compress.size.set(result.length * 2)\\n            return result\\n        }\\n    },\\n    decompress: {\\n        size: {\\n            get: () => {\\n                return getVar(\\\"test-decompress\\\", \\\"0\\\").length\\n            }\\n        },\\n        exec: (input) => {\\n            eval(request(ZipTool.dependence))\\n// LZString.decompressFromEncodedURIComponent\\n            let result = LZString.decompressFromEncodedURIComponent(input)\\n            return result\\n        }\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"LZMA\",\"path\":\"lzma\",\"rule\":\"js:\\n/*\\nhttps://cdn.jsdelivr.net/npm/lzma@2.3.2/src/lzma_worker-min.js\\n*/\\nlet compression_mode = 1;\\n\\nlet lzStringTool = JSON.parse(request('hiker://page/lz-string-tool?rule=字符串压缩测试')).rule;\\nlet ZipTool = {\\n    compress: {\\n        key: \\\"test-compress-size\\\",\\n        size: {\\n            set: (newValue) => {\\n                try {\\n                    fba.putVar(this.key, newValue.toString())\\n                } catch(e) {\\n                    putVar(this.key, newValue.toString())\\n                }\\n            },\\n            get: () => {\\n                try {\\n                    return parseInt(fba.getVar(this.key, \\\"0\\\"))\\n                } catch(e) {\\n                    return parseInt(getVar(this.key, \\\"0\\\"))\\n                }\\n            }\\n        },\\n        exec: (input) => {\\n            putVar(\\\"test-compress\\\", \\\"\\\")\\n            // showLoading(\\\"压缩中，请稍候...\\\")\\n            return $().x5Lazy((input, mode, stringTool, ZipTool) => {\\n                let dependent = 'https://cdn.jsdelivr.net/npm/lzma@2.3.2/src/lzma_worker-min.js'\\n                eval(fba.fetch(dependent))\\n                eval(stringTool)\\n                // fba.log(\\\"input: \\\" + input)\\n                LZMA.compress(input, mode,\\n                    (result) => {\\n                        if (fba.getVar(\\\"test-compress\\\")) return\\n                        // fba.log(\\\"result: \\\" + convert_to_formated_hex(result))\\n                        ZipTool.compress.size.set(result.length)\\n                        fba.putVar(\\\"test-compress\\\", convert_formated_hex_to_string(convert_to_formated_hex(result)))\\n                        // fba.hideLoading()\\n                        // fba.log(\\\"compress: \\\" + fba.getVar(\\\"test-compress\\\"))\\n                    },\\n                    (progress) => {\\n                        // fba.log(\\\"progress: \\\" + progress*100 + \\\"%\\\")\\n                    })\\n                if (fba.getVar(\\\"test-compress\\\")) {\\n                    fba.refreshPage(false)\\n                    return 'toast://压缩成功'\\n                }\\n            }, input, compression_mode, lzStringTool, ZipTool)\\n        },\\n    },\\n    decompress: {\\n        size: {\\n            get: () => {\\n                try {\\n                    return fba.getVar(\\\"test-decompress\\\", \\\"0\\\").length\\n                } catch(e) {\\n                    return getVar(\\\"test-decompress\\\", \\\"0\\\").length\\n                }\\n            }\\n        },\\n        exec: (input) => {\\n            putVar(\\\"test-decompress\\\", \\\"\\\")\\n            // showLoading(\\\"解压中，请稍候...\\\")\\n            return $().x5Lazy((input, stringTool) => {\\n                let dependent = 'https://cdn.jsdelivr.net/npm/lzma@2.3.2/src/lzma_worker-min.js'\\n                eval(fba.fetch(dependent))\\n                eval(stringTool)\\n                input = convert_formated_hex_to_bytes(convert_string_to_hex(input))\\n                // fba.log(\\\"input: \\\" + input)\\n                LZMA.decompress(input,\\n                    (result) => {\\n                        if (fba.getVar(\\\"test-decompress\\\")) return\\n                        // fba.log(\\\"result: \\\" + result)\\n                        fba.putVar(\\\"test-decompress\\\", result)\\n                        // fba.log(\\\"decompress: \\\" + fba.getVar(\\\"test-decompress\\\"))\\n                    },\\n                    (progress) => {\\n                        // fba.log(\\\"progress: \\\" + progress*100 + \\\"%\\\")\\n                    })\\n                if (fba.getVar(\\\"test-decompress\\\")) {\\n                    fba.refreshPage(false)\\n                    return 'toast://解压成功'\\n                }\\n            }, input, lzStringTool)\\n        },\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"GZip\",\"path\":\"gzip\",\"rule\":\"js:\\n/*\\n通过 pako 实现\\n\\nhttps://qastack.cn/programming/294297/javascript-implementation-of-gzip\\n\\nhttps://www.zhihu.com/question/53169830\\n\\nhttp://blog.ideacome.com/2021/07/01/gzipya-suo-de-lz77suan-fa-he-ha-fu-man-bian-ma-shi-xian-yuan-li/amp/\\n\\nhttp://qiutianaimeili.com/html/page/2019/12/bncs8g07hcg.html\\n*/\\nlet ZipTool = {\\n    compress: {\\n        size: {\\n            key: \\\"test-compress-size\\\",\\n            set: (newValue) => {\\n                putVar(this.key, newValue.toString())\\n            },\\n            get: () => {\\n                return parseInt(getVar(this.key, \\\"0\\\"))\\n            }\\n        },\\n        exec: (input) => {\\n            let result = pako.gzip(input, {\\n                to: \\\"string\\\"\\n            })\\n            ZipTool.compress.size.set(result.length)\\n            return result\\n        }\\n    },\\n    decompress: {\\n        size: {\\n            get: () => {\\n                return getVar(\\\"test-decompress\\\", \\\"0\\\").length\\n            }\\n        },\\n        exec: (input) => {\\n            let result = pako.ungzip(input, {\\n                to: \\\"string\\\"\\n            })\\n            return result\\n        }\\n    }\\n}\\n!function(t){if(\\\"object\\\"==typeof exports&&\\\"undefined\\\"!=typeof module)module.exports=t();else if(\\\"function\\\"==typeof define&&define.amd)define([],t);else{(\\\"undefined\\\"!=typeof window?window:\\\"undefined\\\"!=typeof global?global:\\\"undefined\\\"!=typeof self?self:this).pako=t()}}(function(){return function r(s,o,l){function h(e,t){if(!o[e]){if(!s[e]){var a=\\\"function\\\"==typeof require&&require;if(!t&&a)return a(e,!0);if(d)return d(e,!0);var i=new Error(\\\"Cannot find module '\\\"+e+\\\"'\\\");throw i.code=\\\"MODULE_NOT_FOUND\\\",i}var n=o[e]={exports:{}};s[e][0].call(n.exports,function(t){return h(s[e][1][t]||t)},n,n.exports,r,s,o,l)}return o[e].exports}for(var d=\\\"function\\\"==typeof require&&require,t=0;t<l.length;t++)h(l[t]);return h}({1:[function(t,e,a){\\\"use strict\\\";var s=t(\\\"./zlib/deflate\\\"),o=t(\\\"./utils/common\\\"),l=t(\\\"./utils/strings\\\"),n=t(\\\"./zlib/messages\\\"),r=t(\\\"./zlib/zstream\\\"),h=Object.prototype.toString,d=0,f=-1,_=0,u=8;function c(t){if(!(this instanceof c))return new c(t);this.options=o.assign({level:f,method:u,chunkSize:16384,windowBits:15,memLevel:8,strategy:_,to:\\\"\\\"},t||{});var e=this.options;e.raw&&0<e.windowBits?e.windowBits=-e.windowBits:e.gzip&&0<e.windowBits&&e.windowBits<16&&(e.windowBits+=16),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new r,this.strm.avail_out=0;var a=s.deflateInit2(this.strm,e.level,e.method,e.windowBits,e.memLevel,e.strategy);if(a!==d)throw new Error(n[a]);if(e.header&&s.deflateSetHeader(this.strm,e.header),e.dictionary){var i;if(i=\\\"string\\\"==typeof e.dictionary?l.string2buf(e.dictionary):\\\"[object ArrayBuffer]\\\"===h.call(e.dictionary)?new Uint8Array(e.dictionary):e.dictionary,(a=s.deflateSetDictionary(this.strm,i))!==d)throw new Error(n[a]);this._dict_set=!0}}function i(t,e){var a=new c(e);if(a.push(t,!0),a.err)throw a.msg||n[a.err];return a.result}c.prototype.push=function(t,e){var a,i,n=this.strm,r=this.options.chunkSize;if(this.ended)return!1;i=e===~~e?e:!0===e?4:0,\\\"string\\\"==typeof t?n.input=l.string2buf(t):\\\"[object ArrayBuffer]\\\"===h.call(t)?n.input=new Uint8Array(t):n.input=t,n.next_in=0,n.avail_in=n.input.length;do{if(0===n.avail_out&&(n.output=new o.Buf8(r),n.next_out=0,n.avail_out=r),1!==(a=s.deflate(n,i))&&a!==d)return this.onEnd(a),!(this.ended=!0);0!==n.avail_out&&(0!==n.avail_in||4!==i&&2!==i)||(\\\"string\\\"===this.options.to?this.onData(l.buf2binstring(o.shrinkBuf(n.output,n.next_out))):this.onData(o.shrinkBuf(n.output,n.next_out)))}while((0<n.avail_in||0===n.avail_out)&&1!==a);return 4===i?(a=s.deflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===d):2!==i||(this.onEnd(d),!(n.avail_out=0))},c.prototype.onData=function(t){this.chunks.push(t)},c.prototype.onEnd=function(t){t===d&&(\\\"string\\\"===this.options.to?this.result=this.chunks.join(\\\"\\\"):this.result=o.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Deflate=c,a.deflate=i,a.deflateRaw=function(t,e){return(e=e||{}).raw=!0,i(t,e)},a.gzip=function(t,e){return(e=e||{}).gzip=!0,i(t,e)}},{\\\"./utils/common\\\":3,\\\"./utils/strings\\\":4,\\\"./zlib/deflate\\\":8,\\\"./zlib/messages\\\":13,\\\"./zlib/zstream\\\":15}],2:[function(t,e,a){\\\"use strict\\\";var f=t(\\\"./zlib/inflate\\\"),_=t(\\\"./utils/common\\\"),u=t(\\\"./utils/strings\\\"),c=t(\\\"./zlib/constants\\\"),i=t(\\\"./zlib/messages\\\"),n=t(\\\"./zlib/zstream\\\"),r=t(\\\"./zlib/gzheader\\\"),b=Object.prototype.toString;function s(t){if(!(this instanceof s))return new s(t);this.options=_.assign({chunkSize:16384,windowBits:0,to:\\\"\\\"},t||{});var e=this.options;e.raw&&0<=e.windowBits&&e.windowBits<16&&(e.windowBits=-e.windowBits,0===e.windowBits&&(e.windowBits=-15)),!(0<=e.windowBits&&e.windowBits<16)||t&&t.windowBits||(e.windowBits+=32),15<e.windowBits&&e.windowBits<48&&0==(15&e.windowBits)&&(e.windowBits|=15),this.err=0,this.msg=\\\"\\\",this.ended=!1,this.chunks=[],this.strm=new n,this.strm.avail_out=0;var a=f.inflateInit2(this.strm,e.windowBits);if(a!==c.Z_OK)throw new Error(i[a]);if(this.header=new r,f.inflateGetHeader(this.strm,this.header),e.dictionary&&(\\\"string\\\"==typeof e.dictionary?e.dictionary=u.string2buf(e.dictionary):\\\"[object ArrayBuffer]\\\"===b.call(e.dictionary)&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(a=f.inflateSetDictionary(this.strm,e.dictionary))!==c.Z_OK))throw new Error(i[a])}function o(t,e){var a=new s(e);if(a.push(t,!0),a.err)throw a.msg||i[a.err];return a.result}s.prototype.push=function(t,e){var a,i,n,r,s,o=this.strm,l=this.options.chunkSize,h=this.options.dictionary,d=!1;if(this.ended)return!1;i=e===~~e?e:!0===e?c.Z_FINISH:c.Z_NO_FLUSH,\\\"string\\\"==typeof t?o.input=u.binstring2buf(t):\\\"[object ArrayBuffer]\\\"===b.call(t)?o.input=new Uint8Array(t):o.input=t,o.next_in=0,o.avail_in=o.input.length;do{if(0===o.avail_out&&(o.output=new _.Buf8(l),o.next_out=0,o.avail_out=l),(a=f.inflate(o,c.Z_NO_FLUSH))===c.Z_NEED_DICT&&h&&(a=f.inflateSetDictionary(this.strm,h)),a===c.Z_BUF_ERROR&&!0===d&&(a=c.Z_OK,d=!1),a!==c.Z_STREAM_END&&a!==c.Z_OK)return this.onEnd(a),!(this.ended=!0);o.next_out&&(0!==o.avail_out&&a!==c.Z_STREAM_END&&(0!==o.avail_in||i!==c.Z_FINISH&&i!==c.Z_SYNC_FLUSH)||(\\\"string\\\"===this.options.to?(n=u.utf8border(o.output,o.next_out),r=o.next_out-n,s=u.buf2string(o.output,n),o.next_out=r,o.avail_out=l-r,r&&_.arraySet(o.output,o.output,n,r,0),this.onData(s)):this.onData(_.shrinkBuf(o.output,o.next_out)))),0===o.avail_in&&0===o.avail_out&&(d=!0)}while((0<o.avail_in||0===o.avail_out)&&a!==c.Z_STREAM_END);return a===c.Z_STREAM_END&&(i=c.Z_FINISH),i===c.Z_FINISH?(a=f.inflateEnd(this.strm),this.onEnd(a),this.ended=!0,a===c.Z_OK):i!==c.Z_SYNC_FLUSH||(this.onEnd(c.Z_OK),!(o.avail_out=0))},s.prototype.onData=function(t){this.chunks.push(t)},s.prototype.onEnd=function(t){t===c.Z_OK&&(\\\"string\\\"===this.options.to?this.result=this.chunks.join(\\\"\\\"):this.result=_.flattenChunks(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg},a.Inflate=s,a.inflate=o,a.inflateRaw=function(t,e){return(e=e||{}).raw=!0,o(t,e)},a.ungzip=o},{\\\"./utils/common\\\":3,\\\"./utils/strings\\\":4,\\\"./zlib/constants\\\":6,\\\"./zlib/gzheader\\\":9,\\\"./zlib/inflate\\\":11,\\\"./zlib/messages\\\":13,\\\"./zlib/zstream\\\":15}],3:[function(t,e,a){\\\"use strict\\\";var i=\\\"undefined\\\"!=typeof Uint8Array&&\\\"undefined\\\"!=typeof Uint16Array&&\\\"undefined\\\"!=typeof Int32Array;a.assign=function(t){for(var e,a,i=Array.prototype.slice.call(arguments,1);i.length;){var n=i.shift();if(n){if(\\\"object\\\"!=typeof n)throw new TypeError(n+\\\"must be non-object\\\");for(var r in n)e=n,a=r,Object.prototype.hasOwnProperty.call(e,a)&&(t[r]=n[r])}}return t},a.shrinkBuf=function(t,e){return t.length===e?t:t.subarray?t.subarray(0,e):(t.length=e,t)};var n={arraySet:function(t,e,a,i,n){if(e.subarray&&t.subarray)t.set(e.subarray(a,a+i),n);else for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){var e,a,i,n,r,s;for(e=i=0,a=t.length;e<a;e++)i+=t[e].length;for(s=new Uint8Array(i),e=n=0,a=t.length;e<a;e++)r=t[e],s.set(r,n),n+=r.length;return s}},r={arraySet:function(t,e,a,i,n){for(var r=0;r<i;r++)t[n+r]=e[a+r]},flattenChunks:function(t){return[].concat.apply([],t)}};a.setTyped=function(t){t?(a.Buf8=Uint8Array,a.Buf16=Uint16Array,a.Buf32=Int32Array,a.assign(a,n)):(a.Buf8=Array,a.Buf16=Array,a.Buf32=Array,a.assign(a,r))},a.setTyped(i)},{}],4:[function(t,e,a){\\\"use strict\\\";var l=t(\\\"./common\\\"),n=!0,r=!0;try{String.fromCharCode.apply(null,[0])}catch(t){n=!1}try{String.fromCharCode.apply(null,new Uint8Array(1))}catch(t){r=!1}for(var h=new l.Buf8(256),i=0;i<256;i++)h[i]=252<=i?6:248<=i?5:240<=i?4:224<=i?3:192<=i?2:1;function d(t,e){if(e<65534&&(t.subarray&&r||!t.subarray&&n))return String.fromCharCode.apply(null,l.shrinkBuf(t,e));for(var a=\\\"\\\",i=0;i<e;i++)a+=String.fromCharCode(t[i]);return a}h[254]=h[254]=1,a.string2buf=function(t){var e,a,i,n,r,s=t.length,o=0;for(n=0;n<s;n++)55296==(64512&(a=t.charCodeAt(n)))&&n+1<s&&56320==(64512&(i=t.charCodeAt(n+1)))&&(a=65536+(a-55296<<10)+(i-56320),n++),o+=a<128?1:a<2048?2:a<65536?3:4;for(e=new l.Buf8(o),n=r=0;r<o;n++)55296==(64512&(a=t.charCodeAt(n)))&&n+1<s&&56320==(64512&(i=t.charCodeAt(n+1)))&&(a=65536+(a-55296<<10)+(i-56320),n++),a<128?e[r++]=a:(a<2048?e[r++]=192|a>>>6:(a<65536?e[r++]=224|a>>>12:(e[r++]=240|a>>>18,e[r++]=128|a>>>12&63),e[r++]=128|a>>>6&63),e[r++]=128|63&a);return e},a.buf2binstring=function(t){return d(t,t.length)},a.binstring2buf=function(t){for(var e=new l.Buf8(t.length),a=0,i=e.length;a<i;a++)e[a]=t.charCodeAt(a);return e},a.buf2string=function(t,e){var a,i,n,r,s=e||t.length,o=new Array(2*s);for(a=i=0;a<s;)if((n=t[a++])<128)o[i++]=n;else if(4<(r=h[n]))o[i++]=65533,a+=r-1;else{for(n&=2===r?31:3===r?15:7;1<r&&a<s;)n=n<<6|63&t[a++],r--;1<r?o[i++]=65533:n<65536?o[i++]=n:(n-=65536,o[i++]=55296|n>>10&1023,o[i++]=56320|1023&n)}return d(o,i)},a.utf8border=function(t,e){var a;for((e=e||t.length)>t.length&&(e=t.length),a=e-1;0<=a&&128==(192&t[a]);)a--;return a<0?e:0===a?e:a+h[t[a]]>e?a:e}},{\\\"./common\\\":3}],5:[function(t,e,a){\\\"use strict\\\";e.exports=function(t,e,a,i){for(var n=65535&t|0,r=t>>>16&65535|0,s=0;0!==a;){for(a-=s=2e3<a?2e3:a;r=r+(n=n+e[i++]|0)|0,--s;);n%=65521,r%=65521}return n|r<<16|0}},{}],6:[function(t,e,a){\\\"use strict\\\";e.exports={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8}},{}],7:[function(t,e,a){\\\"use strict\\\";var o=function(){for(var t,e=[],a=0;a<256;a++){t=a;for(var i=0;i<8;i++)t=1&t?3988292384^t>>>1:t>>>1;e[a]=t}return e}();e.exports=function(t,e,a,i){var n=o,r=i+a;t^=-1;for(var s=i;s<r;s++)t=t>>>8^n[255&(t^e[s])];return-1^t}},{}],8:[function(t,e,a){\\\"use strict\\\";var l,_=t(\\\"../utils/common\\\"),h=t(\\\"./trees\\\"),u=t(\\\"./adler32\\\"),c=t(\\\"./crc32\\\"),i=t(\\\"./messages\\\"),d=0,f=4,b=0,g=-2,m=-1,w=4,n=2,p=8,v=9,r=286,s=30,o=19,k=2*r+1,y=15,x=3,z=258,B=z+x+1,S=42,E=113,A=1,Z=2,R=3,C=4;function N(t,e){return t.msg=i[e],e}function O(t){return(t<<1)-(4<t?9:0)}function D(t){for(var e=t.length;0<=--e;)t[e]=0}function I(t){var e=t.state,a=e.pending;a>t.avail_out&&(a=t.avail_out),0!==a&&(_.arraySet(t.output,e.pending_buf,e.pending_out,a,t.next_out),t.next_out+=a,e.pending_out+=a,t.total_out+=a,t.avail_out-=a,e.pending-=a,0===e.pending&&(e.pending_out=0))}function U(t,e){h._tr_flush_block(t,0<=t.block_start?t.block_start:-1,t.strstart-t.block_start,e),t.block_start=t.strstart,I(t.strm)}function T(t,e){t.pending_buf[t.pending++]=e}function F(t,e){t.pending_buf[t.pending++]=e>>>8&255,t.pending_buf[t.pending++]=255&e}function L(t,e){var a,i,n=t.max_chain_length,r=t.strstart,s=t.prev_length,o=t.nice_match,l=t.strstart>t.w_size-B?t.strstart-(t.w_size-B):0,h=t.window,d=t.w_mask,f=t.prev,_=t.strstart+z,u=h[r+s-1],c=h[r+s];t.prev_length>=t.good_match&&(n>>=2),o>t.lookahead&&(o=t.lookahead);do{if(h[(a=e)+s]===c&&h[a+s-1]===u&&h[a]===h[r]&&h[++a]===h[r+1]){r+=2,a++;do{}while(h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&h[++r]===h[++a]&&r<_);if(i=z-(_-r),r=_-z,s<i){if(t.match_start=e,o<=(s=i))break;u=h[r+s-1],c=h[r+s]}}}while((e=f[e&d])>l&&0!=--n);return s<=t.lookahead?s:t.lookahead}function H(t){var e,a,i,n,r,s,o,l,h,d,f=t.w_size;do{if(n=t.window_size-t.lookahead-t.strstart,t.strstart>=f+(f-B)){for(_.arraySet(t.window,t.window,f,f,0),t.match_start-=f,t.strstart-=f,t.block_start-=f,e=a=t.hash_size;i=t.head[--e],t.head[e]=f<=i?i-f:0,--a;);for(e=a=f;i=t.prev[--e],t.prev[e]=f<=i?i-f:0,--a;);n+=f}if(0===t.strm.avail_in)break;if(s=t.strm,o=t.window,l=t.strstart+t.lookahead,h=n,d=void 0,d=s.avail_in,h<d&&(d=h),a=0===d?0:(s.avail_in-=d,_.arraySet(o,s.input,s.next_in,d,l),1===s.state.wrap?s.adler=u(s.adler,o,d,l):2===s.state.wrap&&(s.adler=c(s.adler,o,d,l)),s.next_in+=d,s.total_in+=d,d),t.lookahead+=a,t.lookahead+t.insert>=x)for(r=t.strstart-t.insert,t.ins_h=t.window[r],t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+1])&t.hash_mask;t.insert&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[r+x-1])&t.hash_mask,t.prev[r&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=r,r++,t.insert--,!(t.lookahead+t.insert<x)););}while(t.lookahead<B&&0!==t.strm.avail_in)}function j(t,e){for(var a,i;;){if(t.lookahead<B){if(H(t),t.lookahead<B&&e===d)return A;if(0===t.lookahead)break}if(a=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!==a&&t.strstart-a<=t.w_size-B&&(t.match_length=L(t,a)),t.match_length>=x)if(i=h._tr_tally(t,t.strstart-t.match_start,t.match_length-x),t.lookahead-=t.match_length,t.match_length<=t.max_lazy_match&&t.lookahead>=x){for(t.match_length--;t.strstart++,t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart,0!=--t.match_length;);t.strstart++}else t.strstart+=t.match_length,t.match_length=0,t.ins_h=t.window[t.strstart],t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+1])&t.hash_mask;else i=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++;if(i&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}function K(t,e){for(var a,i,n;;){if(t.lookahead<B){if(H(t),t.lookahead<B&&e===d)return A;if(0===t.lookahead)break}if(a=0,t.lookahead>=x&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),t.prev_length=t.match_length,t.prev_match=t.match_start,t.match_length=x-1,0!==a&&t.prev_length<t.max_lazy_match&&t.strstart-a<=t.w_size-B&&(t.match_length=L(t,a),t.match_length<=5&&(1===t.strategy||t.match_length===x&&4096<t.strstart-t.match_start)&&(t.match_length=x-1)),t.prev_length>=x&&t.match_length<=t.prev_length){for(n=t.strstart+t.lookahead-x,i=h._tr_tally(t,t.strstart-1-t.prev_match,t.prev_length-x),t.lookahead-=t.prev_length-1,t.prev_length-=2;++t.strstart<=n&&(t.ins_h=(t.ins_h<<t.hash_shift^t.window[t.strstart+x-1])&t.hash_mask,a=t.prev[t.strstart&t.w_mask]=t.head[t.ins_h],t.head[t.ins_h]=t.strstart),0!=--t.prev_length;);if(t.match_available=0,t.match_length=x-1,t.strstart++,i&&(U(t,!1),0===t.strm.avail_out))return A}else if(t.match_available){if((i=h._tr_tally(t,0,t.window[t.strstart-1]))&&U(t,!1),t.strstart++,t.lookahead--,0===t.strm.avail_out)return A}else t.match_available=1,t.strstart++,t.lookahead--}return t.match_available&&(i=h._tr_tally(t,0,t.window[t.strstart-1]),t.match_available=0),t.insert=t.strstart<x-1?t.strstart:x-1,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}function M(t,e,a,i,n){this.good_length=t,this.max_lazy=e,this.nice_length=a,this.max_chain=i,this.func=n}function P(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=p,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new _.Buf16(2*k),this.dyn_dtree=new _.Buf16(2*(2*s+1)),this.bl_tree=new _.Buf16(2*(2*o+1)),D(this.dyn_ltree),D(this.dyn_dtree),D(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new _.Buf16(y+1),this.heap=new _.Buf16(2*r+1),D(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new _.Buf16(2*r+1),D(this.depth),this.l_buf=0,this.lit_bufsize=0,this.last_lit=0,this.d_buf=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}function Y(t){var e;return t&&t.state?(t.total_in=t.total_out=0,t.data_type=n,(e=t.state).pending=0,e.pending_out=0,e.wrap<0&&(e.wrap=-e.wrap),e.status=e.wrap?S:E,t.adler=2===e.wrap?0:1,e.last_flush=d,h._tr_init(e),b):N(t,g)}function q(t){var e,a=Y(t);return a===b&&((e=t.state).window_size=2*e.w_size,D(e.head),e.max_lazy_match=l[e.level].max_lazy,e.good_match=l[e.level].good_length,e.nice_match=l[e.level].nice_length,e.max_chain_length=l[e.level].max_chain,e.strstart=0,e.block_start=0,e.lookahead=0,e.insert=0,e.match_length=e.prev_length=x-1,e.match_available=0,e.ins_h=0),a}function G(t,e,a,i,n,r){if(!t)return g;var s=1;if(e===m&&(e=6),i<0?(s=0,i=-i):15<i&&(s=2,i-=16),n<1||v<n||a!==p||i<8||15<i||e<0||9<e||r<0||w<r)return N(t,g);8===i&&(i=9);var o=new P;return(t.state=o).strm=t,o.wrap=s,o.gzhead=null,o.w_bits=i,o.w_size=1<<o.w_bits,o.w_mask=o.w_size-1,o.hash_bits=n+7,o.hash_size=1<<o.hash_bits,o.hash_mask=o.hash_size-1,o.hash_shift=~~((o.hash_bits+x-1)/x),o.window=new _.Buf8(2*o.w_size),o.head=new _.Buf16(o.hash_size),o.prev=new _.Buf16(o.w_size),o.lit_bufsize=1<<n+6,o.pending_buf_size=4*o.lit_bufsize,o.pending_buf=new _.Buf8(o.pending_buf_size),o.d_buf=1*o.lit_bufsize,o.l_buf=3*o.lit_bufsize,o.level=e,o.strategy=r,o.method=a,q(t)}l=[new M(0,0,0,0,function(t,e){var a=65535;for(a>t.pending_buf_size-5&&(a=t.pending_buf_size-5);;){if(t.lookahead<=1){if(H(t),0===t.lookahead&&e===d)return A;if(0===t.lookahead)break}t.strstart+=t.lookahead,t.lookahead=0;var i=t.block_start+a;if((0===t.strstart||t.strstart>=i)&&(t.lookahead=t.strstart-i,t.strstart=i,U(t,!1),0===t.strm.avail_out))return A;if(t.strstart-t.block_start>=t.w_size-B&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):(t.strstart>t.block_start&&(U(t,!1),t.strm.avail_out),A)}),new M(4,4,8,4,j),new M(4,5,16,8,j),new M(4,6,32,32,j),new M(4,4,16,16,K),new M(8,16,32,32,K),new M(8,16,128,128,K),new M(8,32,128,256,K),new M(32,128,258,1024,K),new M(32,258,258,4096,K)],a.deflateInit=function(t,e){return G(t,e,p,15,8,0)},a.deflateInit2=G,a.deflateReset=q,a.deflateResetKeep=Y,a.deflateSetHeader=function(t,e){return t&&t.state?2!==t.state.wrap?g:(t.state.gzhead=e,b):g},a.deflate=function(t,e){var a,i,n,r;if(!t||!t.state||5<e||e<0)return t?N(t,g):g;if(i=t.state,!t.output||!t.input&&0!==t.avail_in||666===i.status&&e!==f)return N(t,0===t.avail_out?-5:g);if(i.strm=t,a=i.last_flush,i.last_flush=e,i.status===S)if(2===i.wrap)t.adler=0,T(i,31),T(i,139),T(i,8),i.gzhead?(T(i,(i.gzhead.text?1:0)+(i.gzhead.hcrc?2:0)+(i.gzhead.extra?4:0)+(i.gzhead.name?8:0)+(i.gzhead.comment?16:0)),T(i,255&i.gzhead.time),T(i,i.gzhead.time>>8&255),T(i,i.gzhead.time>>16&255),T(i,i.gzhead.time>>24&255),T(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),T(i,255&i.gzhead.os),i.gzhead.extra&&i.gzhead.extra.length&&(T(i,255&i.gzhead.extra.length),T(i,i.gzhead.extra.length>>8&255)),i.gzhead.hcrc&&(t.adler=c(t.adler,i.pending_buf,i.pending,0)),i.gzindex=0,i.status=69):(T(i,0),T(i,0),T(i,0),T(i,0),T(i,0),T(i,9===i.level?2:2<=i.strategy||i.level<2?4:0),T(i,3),i.status=E);else{var s=p+(i.w_bits-8<<4)<<8;s|=(2<=i.strategy||i.level<2?0:i.level<6?1:6===i.level?2:3)<<6,0!==i.strstart&&(s|=32),s+=31-s%31,i.status=E,F(i,s),0!==i.strstart&&(F(i,t.adler>>>16),F(i,65535&t.adler)),t.adler=1}if(69===i.status)if(i.gzhead.extra){for(n=i.pending;i.gzindex<(65535&i.gzhead.extra.length)&&(i.pending!==i.pending_buf_size||(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending!==i.pending_buf_size));)T(i,255&i.gzhead.extra[i.gzindex]),i.gzindex++;i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),i.gzindex===i.gzhead.extra.length&&(i.gzindex=0,i.status=73)}else i.status=73;if(73===i.status)if(i.gzhead.name){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending===i.pending_buf_size)){r=1;break}T(i,r=i.gzindex<i.gzhead.name.length?255&i.gzhead.name.charCodeAt(i.gzindex++):0)}while(0!==r);i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),0===r&&(i.gzindex=0,i.status=91)}else i.status=91;if(91===i.status)if(i.gzhead.comment){n=i.pending;do{if(i.pending===i.pending_buf_size&&(i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),I(t),n=i.pending,i.pending===i.pending_buf_size)){r=1;break}T(i,r=i.gzindex<i.gzhead.comment.length?255&i.gzhead.comment.charCodeAt(i.gzindex++):0)}while(0!==r);i.gzhead.hcrc&&i.pending>n&&(t.adler=c(t.adler,i.pending_buf,i.pending-n,n)),0===r&&(i.status=103)}else i.status=103;if(103===i.status&&(i.gzhead.hcrc?(i.pending+2>i.pending_buf_size&&I(t),i.pending+2<=i.pending_buf_size&&(T(i,255&t.adler),T(i,t.adler>>8&255),t.adler=0,i.status=E)):i.status=E),0!==i.pending){if(I(t),0===t.avail_out)return i.last_flush=-1,b}else if(0===t.avail_in&&O(e)<=O(a)&&e!==f)return N(t,-5);if(666===i.status&&0!==t.avail_in)return N(t,-5);if(0!==t.avail_in||0!==i.lookahead||e!==d&&666!==i.status){var o=2===i.strategy?function(t,e){for(var a;;){if(0===t.lookahead&&(H(t),0===t.lookahead)){if(e===d)return A;break}if(t.match_length=0,a=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++,a&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}(i,e):3===i.strategy?function(t,e){for(var a,i,n,r,s=t.window;;){if(t.lookahead<=z){if(H(t),t.lookahead<=z&&e===d)return A;if(0===t.lookahead)break}if(t.match_length=0,t.lookahead>=x&&0<t.strstart&&(i=s[n=t.strstart-1])===s[++n]&&i===s[++n]&&i===s[++n]){r=t.strstart+z;do{}while(i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&i===s[++n]&&n<r);t.match_length=z-(r-n),t.match_length>t.lookahead&&(t.match_length=t.lookahead)}if(t.match_length>=x?(a=h._tr_tally(t,1,t.match_length-x),t.lookahead-=t.match_length,t.strstart+=t.match_length,t.match_length=0):(a=h._tr_tally(t,0,t.window[t.strstart]),t.lookahead--,t.strstart++),a&&(U(t,!1),0===t.strm.avail_out))return A}return t.insert=0,e===f?(U(t,!0),0===t.strm.avail_out?R:C):t.last_lit&&(U(t,!1),0===t.strm.avail_out)?A:Z}(i,e):l[i.level].func(i,e);if(o!==R&&o!==C||(i.status=666),o===A||o===R)return 0===t.avail_out&&(i.last_flush=-1),b;if(o===Z&&(1===e?h._tr_align(i):5!==e&&(h._tr_stored_block(i,0,0,!1),3===e&&(D(i.head),0===i.lookahead&&(i.strstart=0,i.block_start=0,i.insert=0))),I(t),0===t.avail_out))return i.last_flush=-1,b}return e!==f?b:i.wrap<=0?1:(2===i.wrap?(T(i,255&t.adler),T(i,t.adler>>8&255),T(i,t.adler>>16&255),T(i,t.adler>>24&255),T(i,255&t.total_in),T(i,t.total_in>>8&255),T(i,t.total_in>>16&255),T(i,t.total_in>>24&255)):(F(i,t.adler>>>16),F(i,65535&t.adler)),I(t),0<i.wrap&&(i.wrap=-i.wrap),0!==i.pending?b:1)},a.deflateEnd=function(t){var e;return t&&t.state?(e=t.state.status)!==S&&69!==e&&73!==e&&91!==e&&103!==e&&e!==E&&666!==e?N(t,g):(t.state=null,e===E?N(t,-3):b):g},a.deflateSetDictionary=function(t,e){var a,i,n,r,s,o,l,h,d=e.length;if(!t||!t.state)return g;if(2===(r=(a=t.state).wrap)||1===r&&a.status!==S||a.lookahead)return g;for(1===r&&(t.adler=u(t.adler,e,d,0)),a.wrap=0,d>=a.w_size&&(0===r&&(D(a.head),a.strstart=0,a.block_start=0,a.insert=0),h=new _.Buf8(a.w_size),_.arraySet(h,e,d-a.w_size,a.w_size,0),e=h,d=a.w_size),s=t.avail_in,o=t.next_in,l=t.input,t.avail_in=d,t.next_in=0,t.input=e,H(a);a.lookahead>=x;){for(i=a.strstart,n=a.lookahead-(x-1);a.ins_h=(a.ins_h<<a.hash_shift^a.window[i+x-1])&a.hash_mask,a.prev[i&a.w_mask]=a.head[a.ins_h],a.head[a.ins_h]=i,i++,--n;);a.strstart=i,a.lookahead=x-1,H(a)}return a.strstart+=a.lookahead,a.block_start=a.strstart,a.insert=a.lookahead,a.lookahead=0,a.match_length=a.prev_length=x-1,a.match_available=0,t.next_in=o,t.input=l,t.avail_in=s,a.wrap=r,b},a.deflateInfo=\\\"pako deflate (from Nodeca project)\\\"},{\\\"../utils/common\\\":3,\\\"./adler32\\\":5,\\\"./crc32\\\":7,\\\"./messages\\\":13,\\\"./trees\\\":14}],9:[function(t,e,a){\\\"use strict\\\";e.exports=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name=\\\"\\\",this.comment=\\\"\\\",this.hcrc=0,this.done=!1}},{}],10:[function(t,e,a){\\\"use strict\\\";e.exports=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S;a=t.state,i=t.next_in,B=t.input,n=i+(t.avail_in-5),r=t.next_out,S=t.output,s=r-(e-t.avail_out),o=r+(t.avail_out-257),l=a.dmax,h=a.wsize,d=a.whave,f=a.wnext,_=a.window,u=a.hold,c=a.bits,b=a.lencode,g=a.distcode,m=(1<<a.lenbits)-1,w=(1<<a.distbits)-1;t:do{c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=b[u&m];e:for(;;){if(u>>>=v=p>>>24,c-=v,0===(v=p>>>16&255))S[r++]=65535&p;else{if(!(16&v)){if(0==(64&v)){p=b[(65535&p)+(u&(1<<v)-1)];continue e}if(32&v){a.mode=12;break t}t.msg=\\\"invalid literal/length code\\\",a.mode=30;break t}k=65535&p,(v&=15)&&(c<v&&(u+=B[i++]<<c,c+=8),k+=u&(1<<v)-1,u>>>=v,c-=v),c<15&&(u+=B[i++]<<c,c+=8,u+=B[i++]<<c,c+=8),p=g[u&w];a:for(;;){if(u>>>=v=p>>>24,c-=v,!(16&(v=p>>>16&255))){if(0==(64&v)){p=g[(65535&p)+(u&(1<<v)-1)];continue a}t.msg=\\\"invalid distance code\\\",a.mode=30;break t}if(y=65535&p,c<(v&=15)&&(u+=B[i++]<<c,(c+=8)<v&&(u+=B[i++]<<c,c+=8)),l<(y+=u&(1<<v)-1)){t.msg=\\\"invalid distance too far back\\\",a.mode=30;break t}if(u>>>=v,c-=v,(v=r-s)<y){if(d<(v=y-v)&&a.sane){t.msg=\\\"invalid distance too far back\\\",a.mode=30;break t}if(z=_,(x=0)===f){if(x+=h-v,v<k){for(k-=v;S[r++]=_[x++],--v;);x=r-y,z=S}}else if(f<v){if(x+=h+f-v,(v-=f)<k){for(k-=v;S[r++]=_[x++],--v;);if(x=0,f<k){for(k-=v=f;S[r++]=_[x++],--v;);x=r-y,z=S}}}else if(x+=f-v,v<k){for(k-=v;S[r++]=_[x++],--v;);x=r-y,z=S}for(;2<k;)S[r++]=z[x++],S[r++]=z[x++],S[r++]=z[x++],k-=3;k&&(S[r++]=z[x++],1<k&&(S[r++]=z[x++]))}else{for(x=r-y;S[r++]=S[x++],S[r++]=S[x++],S[r++]=S[x++],2<(k-=3););k&&(S[r++]=S[x++],1<k&&(S[r++]=S[x++]))}break}}break}}while(i<n&&r<o);i-=k=c>>3,u&=(1<<(c-=k<<3))-1,t.next_in=i,t.next_out=r,t.avail_in=i<n?n-i+5:5-(i-n),t.avail_out=r<o?o-r+257:257-(r-o),a.hold=u,a.bits=c}},{}],11:[function(t,e,a){\\\"use strict\\\";var Z=t(\\\"../utils/common\\\"),R=t(\\\"./adler32\\\"),C=t(\\\"./crc32\\\"),N=t(\\\"./inffast\\\"),O=t(\\\"./inftrees\\\"),D=1,I=2,U=0,T=-2,F=1,i=852,n=592;function L(t){return(t>>>24&255)+(t>>>8&65280)+((65280&t)<<8)+((255&t)<<24)}function r(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Z.Buf16(320),this.work=new Z.Buf16(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function s(t){var e;return t&&t.state?(e=t.state,t.total_in=t.total_out=e.total=0,t.msg=\\\"\\\",e.wrap&&(t.adler=1&e.wrap),e.mode=F,e.last=0,e.havedict=0,e.dmax=32768,e.head=null,e.hold=0,e.bits=0,e.lencode=e.lendyn=new Z.Buf32(i),e.distcode=e.distdyn=new Z.Buf32(n),e.sane=1,e.back=-1,U):T}function o(t){var e;return t&&t.state?((e=t.state).wsize=0,e.whave=0,e.wnext=0,s(t)):T}function l(t,e){var a,i;return t&&t.state?(i=t.state,e<0?(a=0,e=-e):(a=1+(e>>4),e<48&&(e&=15)),e&&(e<8||15<e)?T:(null!==i.window&&i.wbits!==e&&(i.window=null),i.wrap=a,i.wbits=e,o(t))):T}function h(t,e){var a,i;return t?(i=new r,(t.state=i).window=null,(a=l(t,e))!==U&&(t.state=null),a):T}var d,f,_=!0;function H(t){if(_){var e;for(d=new Z.Buf32(512),f=new Z.Buf32(32),e=0;e<144;)t.lens[e++]=8;for(;e<256;)t.lens[e++]=9;for(;e<280;)t.lens[e++]=7;for(;e<288;)t.lens[e++]=8;for(O(D,t.lens,0,288,d,0,t.work,{bits:9}),e=0;e<32;)t.lens[e++]=5;O(I,t.lens,0,32,f,0,t.work,{bits:5}),_=!1}t.lencode=d,t.lenbits=9,t.distcode=f,t.distbits=5}function j(t,e,a,i){var n,r=t.state;return null===r.window&&(r.wsize=1<<r.wbits,r.wnext=0,r.whave=0,r.window=new Z.Buf8(r.wsize)),i>=r.wsize?(Z.arraySet(r.window,e,a-r.wsize,r.wsize,0),r.wnext=0,r.whave=r.wsize):(i<(n=r.wsize-r.wnext)&&(n=i),Z.arraySet(r.window,e,a-i,n,r.wnext),(i-=n)?(Z.arraySet(r.window,e,a-i,i,0),r.wnext=i,r.whave=r.wsize):(r.wnext+=n,r.wnext===r.wsize&&(r.wnext=0),r.whave<r.wsize&&(r.whave+=n))),0}a.inflateReset=o,a.inflateReset2=l,a.inflateResetKeep=s,a.inflateInit=function(t){return h(t,15)},a.inflateInit2=h,a.inflate=function(t,e){var a,i,n,r,s,o,l,h,d,f,_,u,c,b,g,m,w,p,v,k,y,x,z,B,S=0,E=new Z.Buf8(4),A=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!t||!t.state||!t.output||!t.input&&0!==t.avail_in)return T;12===(a=t.state).mode&&(a.mode=13),s=t.next_out,n=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,f=o,_=l,x=U;t:for(;;)switch(a.mode){case F:if(0===a.wrap){a.mode=13;break}for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(2&a.wrap&&35615===h){E[a.check=0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0),d=h=0,a.mode=2;break}if(a.flags=0,a.head&&(a.head.done=!1),!(1&a.wrap)||(((255&h)<<8)+(h>>8))%31){t.msg=\\\"incorrect header check\\\",a.mode=30;break}if(8!=(15&h)){t.msg=\\\"unknown compression method\\\",a.mode=30;break}if(d-=4,y=8+(15&(h>>>=4)),0===a.wbits)a.wbits=y;else if(y>a.wbits){t.msg=\\\"invalid window size\\\",a.mode=30;break}a.dmax=1<<y,t.adler=a.check=1,a.mode=512&h?10:12,d=h=0;break;case 2:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.flags=h,8!=(255&a.flags)){t.msg=\\\"unknown compression method\\\",a.mode=30;break}if(57344&a.flags){t.msg=\\\"unknown header flags set\\\",a.mode=30;break}a.head&&(a.head.text=h>>8&1),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0,a.mode=3;case 3:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.time=h),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,E[2]=h>>>16&255,E[3]=h>>>24&255,a.check=C(a.check,E,4,0)),d=h=0,a.mode=4;case 4:for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.head&&(a.head.xflags=255&h,a.head.os=h>>8),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0,a.mode=5;case 5:if(1024&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length=h,a.head&&(a.head.extra_len=h),512&a.flags&&(E[0]=255&h,E[1]=h>>>8&255,a.check=C(a.check,E,2,0)),d=h=0}else a.head&&(a.head.extra=null);a.mode=6;case 6:if(1024&a.flags&&(o<(u=a.length)&&(u=o),u&&(a.head&&(y=a.head.extra_len-a.length,a.head.extra||(a.head.extra=new Array(a.head.extra_len)),Z.arraySet(a.head.extra,i,r,u,y)),512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,a.length-=u),a.length))break t;a.length=0,a.mode=7;case 7:if(2048&a.flags){if(0===o)break t;for(u=0;y=i[r+u++],a.head&&y&&a.length<65536&&(a.head.name+=String.fromCharCode(y)),y&&u<o;);if(512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,y)break t}else a.head&&(a.head.name=null);a.length=0,a.mode=8;case 8:if(4096&a.flags){if(0===o)break t;for(u=0;y=i[r+u++],a.head&&y&&a.length<65536&&(a.head.comment+=String.fromCharCode(y)),y&&u<o;);if(512&a.flags&&(a.check=C(a.check,i,u,r)),o-=u,r+=u,y)break t}else a.head&&(a.head.comment=null);a.mode=9;case 9:if(512&a.flags){for(;d<16;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(65535&a.check)){t.msg=\\\"header crc mismatch\\\",a.mode=30;break}d=h=0}a.head&&(a.head.hcrc=a.flags>>9&1,a.head.done=!0),t.adler=a.check=0,a.mode=12;break;case 10:for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}t.adler=a.check=L(h),d=h=0,a.mode=11;case 11:if(0===a.havedict)return t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,2;t.adler=a.check=1,a.mode=12;case 12:if(5===e||6===e)break t;case 13:if(a.last){h>>>=7&d,d-=7&d,a.mode=27;break}for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}switch(a.last=1&h,d-=1,3&(h>>>=1)){case 0:a.mode=14;break;case 1:if(H(a),a.mode=20,6!==e)break;h>>>=2,d-=2;break t;case 2:a.mode=17;break;case 3:t.msg=\\\"invalid block type\\\",a.mode=30}h>>>=2,d-=2;break;case 14:for(h>>>=7&d,d-=7&d;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if((65535&h)!=(h>>>16^65535)){t.msg=\\\"invalid stored block lengths\\\",a.mode=30;break}if(a.length=65535&h,d=h=0,a.mode=15,6===e)break t;case 15:a.mode=16;case 16:if(u=a.length){if(o<u&&(u=o),l<u&&(u=l),0===u)break t;Z.arraySet(n,i,r,u,s),o-=u,r+=u,l-=u,s+=u,a.length-=u;break}a.mode=12;break;case 17:for(;d<14;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(a.nlen=257+(31&h),h>>>=5,d-=5,a.ndist=1+(31&h),h>>>=5,d-=5,a.ncode=4+(15&h),h>>>=4,d-=4,286<a.nlen||30<a.ndist){t.msg=\\\"too many length or distance symbols\\\",a.mode=30;break}a.have=0,a.mode=18;case 18:for(;a.have<a.ncode;){for(;d<3;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.lens[A[a.have++]]=7&h,h>>>=3,d-=3}for(;a.have<19;)a.lens[A[a.have++]]=0;if(a.lencode=a.lendyn,a.lenbits=7,z={bits:a.lenbits},x=O(0,a.lens,0,19,a.lencode,0,a.work,z),a.lenbits=z.bits,x){t.msg=\\\"invalid code lengths set\\\",a.mode=30;break}a.have=0,a.mode=19;case 19:for(;a.have<a.nlen+a.ndist;){for(;m=(S=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(w<16)h>>>=g,d-=g,a.lens[a.have++]=w;else{if(16===w){for(B=g+2;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h>>>=g,d-=g,0===a.have){t.msg=\\\"invalid bit length repeat\\\",a.mode=30;break}y=a.lens[a.have-1],u=3+(3&h),h>>>=2,d-=2}else if(17===w){for(B=g+3;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}d-=g,y=0,u=3+(7&(h>>>=g)),h>>>=3,d-=3}else{for(B=g+7;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}d-=g,y=0,u=11+(127&(h>>>=g)),h>>>=7,d-=7}if(a.have+u>a.nlen+a.ndist){t.msg=\\\"invalid bit length repeat\\\",a.mode=30;break}for(;u--;)a.lens[a.have++]=y}}if(30===a.mode)break;if(0===a.lens[256]){t.msg=\\\"invalid code -- missing end-of-block\\\",a.mode=30;break}if(a.lenbits=9,z={bits:a.lenbits},x=O(D,a.lens,0,a.nlen,a.lencode,0,a.work,z),a.lenbits=z.bits,x){t.msg=\\\"invalid literal/lengths set\\\",a.mode=30;break}if(a.distbits=6,a.distcode=a.distdyn,z={bits:a.distbits},x=O(I,a.lens,a.nlen,a.ndist,a.distcode,0,a.work,z),a.distbits=z.bits,x){t.msg=\\\"invalid distances set\\\",a.mode=30;break}if(a.mode=20,6===e)break t;case 20:a.mode=21;case 21:if(6<=o&&258<=l){t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,N(t,_),s=t.next_out,n=t.output,l=t.avail_out,r=t.next_in,i=t.input,o=t.avail_in,h=a.hold,d=a.bits,12===a.mode&&(a.back=-1);break}for(a.back=0;m=(S=a.lencode[h&(1<<a.lenbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(m&&0==(240&m)){for(p=g,v=m,k=w;m=(S=a.lencode[k+((h&(1<<p+v)-1)>>p)])>>>16&255,w=65535&S,!(p+(g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=g,d-=g,a.back+=g,a.length=w,0===m){a.mode=26;break}if(32&m){a.back=-1,a.mode=12;break}if(64&m){t.msg=\\\"invalid literal/length code\\\",a.mode=30;break}a.extra=15&m,a.mode=22;case 22:if(a.extra){for(B=a.extra;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.length+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}a.was=a.length,a.mode=23;case 23:for(;m=(S=a.distcode[h&(1<<a.distbits)-1])>>>16&255,w=65535&S,!((g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(0==(240&m)){for(p=g,v=m,k=w;m=(S=a.distcode[k+((h&(1<<p+v)-1)>>p)])>>>16&255,w=65535&S,!(p+(g=S>>>24)<=d);){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}h>>>=p,d-=p,a.back+=p}if(h>>>=g,d-=g,a.back+=g,64&m){t.msg=\\\"invalid distance code\\\",a.mode=30;break}a.offset=w,a.extra=15&m,a.mode=24;case 24:if(a.extra){for(B=a.extra;d<B;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}a.offset+=h&(1<<a.extra)-1,h>>>=a.extra,d-=a.extra,a.back+=a.extra}if(a.offset>a.dmax){t.msg=\\\"invalid distance too far back\\\",a.mode=30;break}a.mode=25;case 25:if(0===l)break t;if(u=_-l,a.offset>u){if((u=a.offset-u)>a.whave&&a.sane){t.msg=\\\"invalid distance too far back\\\",a.mode=30;break}u>a.wnext?(u-=a.wnext,c=a.wsize-u):c=a.wnext-u,u>a.length&&(u=a.length),b=a.window}else b=n,c=s-a.offset,u=a.length;for(l<u&&(u=l),l-=u,a.length-=u;n[s++]=b[c++],--u;);0===a.length&&(a.mode=21);break;case 26:if(0===l)break t;n[s++]=a.length,l--,a.mode=21;break;case 27:if(a.wrap){for(;d<32;){if(0===o)break t;o--,h|=i[r++]<<d,d+=8}if(_-=l,t.total_out+=_,a.total+=_,_&&(t.adler=a.check=a.flags?C(a.check,n,_,s-_):R(a.check,n,_,s-_)),_=l,(a.flags?h:L(h))!==a.check){t.msg=\\\"incorrect data check\\\",a.mode=30;break}d=h=0}a.mode=28;case 28:if(a.wrap&&a.flags){for(;d<32;){if(0===o)break t;o--,h+=i[r++]<<d,d+=8}if(h!==(4294967295&a.total)){t.msg=\\\"incorrect length check\\\",a.mode=30;break}d=h=0}a.mode=29;case 29:x=1;break t;case 30:x=-3;break t;case 31:return-4;case 32:default:return T}return t.next_out=s,t.avail_out=l,t.next_in=r,t.avail_in=o,a.hold=h,a.bits=d,(a.wsize||_!==t.avail_out&&a.mode<30&&(a.mode<27||4!==e))&&j(t,t.output,t.next_out,_-t.avail_out)?(a.mode=31,-4):(f-=t.avail_in,_-=t.avail_out,t.total_in+=f,t.total_out+=_,a.total+=_,a.wrap&&_&&(t.adler=a.check=a.flags?C(a.check,n,_,t.next_out-_):R(a.check,n,_,t.next_out-_)),t.data_type=a.bits+(a.last?64:0)+(12===a.mode?128:0)+(20===a.mode||15===a.mode?256:0),(0===f&&0===_||4===e)&&x===U&&(x=-5),x)},a.inflateEnd=function(t){if(!t||!t.state)return T;var e=t.state;return e.window&&(e.window=null),t.state=null,U},a.inflateGetHeader=function(t,e){var a;return t&&t.state?0==(2&(a=t.state).wrap)?T:((a.head=e).done=!1,U):T},a.inflateSetDictionary=function(t,e){var a,i=e.length;return t&&t.state?0!==(a=t.state).wrap&&11!==a.mode?T:11===a.mode&&R(1,e,i,0)!==a.check?-3:j(t,e,i,i)?(a.mode=31,-4):(a.havedict=1,U):T},a.inflateInfo=\\\"pako inflate (from Nodeca project)\\\"},{\\\"../utils/common\\\":3,\\\"./adler32\\\":5,\\\"./crc32\\\":7,\\\"./inffast\\\":10,\\\"./inftrees\\\":12}],12:[function(t,e,a){\\\"use strict\\\";var D=t(\\\"../utils/common\\\"),I=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],U=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],T=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],F=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];e.exports=function(t,e,a,i,n,r,s,o){var l,h,d,f,_,u,c,b,g,m=o.bits,w=0,p=0,v=0,k=0,y=0,x=0,z=0,B=0,S=0,E=0,A=null,Z=0,R=new D.Buf16(16),C=new D.Buf16(16),N=null,O=0;for(w=0;w<=15;w++)R[w]=0;for(p=0;p<i;p++)R[e[a+p]]++;for(y=m,k=15;1<=k&&0===R[k];k--);if(k<y&&(y=k),0===k)return n[r++]=20971520,n[r++]=20971520,o.bits=1,0;for(v=1;v<k&&0===R[v];v++);for(y<v&&(y=v),w=B=1;w<=15;w++)if(B<<=1,(B-=R[w])<0)return-1;if(0<B&&(0===t||1!==k))return-1;for(C[1]=0,w=1;w<15;w++)C[w+1]=C[w]+R[w];for(p=0;p<i;p++)0!==e[a+p]&&(s[C[e[a+p]]++]=p);if(0===t?(A=N=s,u=19):1===t?(A=I,Z-=257,N=U,O-=257,u=256):(A=T,N=F,u=-1),w=v,_=r,z=p=E=0,d=-1,f=(S=1<<(x=y))-1,1===t&&852<S||2===t&&592<S)return 1;for(;;){for(c=w-z,s[p]<u?(b=0,g=s[p]):s[p]>u?(b=N[O+s[p]],g=A[Z+s[p]]):(b=96,g=0),l=1<<w-z,v=h=1<<x;n[_+(E>>z)+(h-=l)]=c<<24|b<<16|g|0,0!==h;);for(l=1<<w-1;E&l;)l>>=1;if(0!==l?(E&=l-1,E+=l):E=0,p++,0==--R[w]){if(w===k)break;w=e[a+s[p]]}if(y<w&&(E&f)!==d){for(0===z&&(z=y),_+=v,B=1<<(x=w-z);x+z<k&&!((B-=R[x+z])<=0);)x++,B<<=1;if(S+=1<<x,1===t&&852<S||2===t&&592<S)return 1;n[d=E&f]=y<<24|x<<16|_-r|0}}return 0!==E&&(n[_+E]=w-z<<24|64<<16|0),o.bits=y,0}},{\\\"../utils/common\\\":3}],13:[function(t,e,a){\\\"use strict\\\";e.exports={2:\\\"need dictionary\\\",1:\\\"stream end\\\",0:\\\"\\\",\\\"-1\\\":\\\"file error\\\",\\\"-2\\\":\\\"stream error\\\",\\\"-3\\\":\\\"data error\\\",\\\"-4\\\":\\\"insufficient memory\\\",\\\"-5\\\":\\\"buffer error\\\",\\\"-6\\\":\\\"incompatible version\\\"}},{}],14:[function(t,e,a){\\\"use strict\\\";var l=t(\\\"../utils/common\\\"),o=0,h=1;function i(t){for(var e=t.length;0<=--e;)t[e]=0}var d=0,s=29,f=256,_=f+1+s,u=30,c=19,g=2*_+1,m=15,n=16,b=7,w=256,p=16,v=17,k=18,y=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0],x=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],z=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7],B=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],S=new Array(2*(_+2));i(S);var E=new Array(2*u);i(E);var A=new Array(512);i(A);var Z=new Array(256);i(Z);var R=new Array(s);i(R);var C,N,O,D=new Array(u);function I(t,e,a,i,n){this.static_tree=t,this.extra_bits=e,this.extra_base=a,this.elems=i,this.max_length=n,this.has_stree=t&&t.length}function r(t,e){this.dyn_tree=t,this.max_code=0,this.stat_desc=e}function U(t){return t<256?A[t]:A[256+(t>>>7)]}function T(t,e){t.pending_buf[t.pending++]=255&e,t.pending_buf[t.pending++]=e>>>8&255}function F(t,e,a){t.bi_valid>n-a?(t.bi_buf|=e<<t.bi_valid&65535,T(t,t.bi_buf),t.bi_buf=e>>n-t.bi_valid,t.bi_valid+=a-n):(t.bi_buf|=e<<t.bi_valid&65535,t.bi_valid+=a)}function L(t,e,a){F(t,a[2*e],a[2*e+1])}function H(t,e){for(var a=0;a|=1&t,t>>>=1,a<<=1,0<--e;);return a>>>1}function j(t,e,a){var i,n,r=new Array(m+1),s=0;for(i=1;i<=m;i++)r[i]=s=s+a[i-1]<<1;for(n=0;n<=e;n++){var o=t[2*n+1];0!==o&&(t[2*n]=H(r[o]++,o))}}function K(t){var e;for(e=0;e<_;e++)t.dyn_ltree[2*e]=0;for(e=0;e<u;e++)t.dyn_dtree[2*e]=0;for(e=0;e<c;e++)t.bl_tree[2*e]=0;t.dyn_ltree[2*w]=1,t.opt_len=t.static_len=0,t.last_lit=t.matches=0}function M(t){8<t.bi_valid?T(t,t.bi_buf):0<t.bi_valid&&(t.pending_buf[t.pending++]=t.bi_buf),t.bi_buf=0,t.bi_valid=0}function P(t,e,a,i){var n=2*e,r=2*a;return t[n]<t[r]||t[n]===t[r]&&i[e]<=i[a]}function Y(t,e,a){for(var i=t.heap[a],n=a<<1;n<=t.heap_len&&(n<t.heap_len&&P(e,t.heap[n+1],t.heap[n],t.depth)&&n++,!P(e,i,t.heap[n],t.depth));)t.heap[a]=t.heap[n],a=n,n<<=1;t.heap[a]=i}function q(t,e,a){var i,n,r,s,o=0;if(0!==t.last_lit)for(;i=t.pending_buf[t.d_buf+2*o]<<8|t.pending_buf[t.d_buf+2*o+1],n=t.pending_buf[t.l_buf+o],o++,0===i?L(t,n,e):(L(t,(r=Z[n])+f+1,e),0!==(s=y[r])&&F(t,n-=R[r],s),L(t,r=U(--i),a),0!==(s=x[r])&&F(t,i-=D[r],s)),o<t.last_lit;);L(t,w,e)}function G(t,e){var a,i,n,r=e.dyn_tree,s=e.stat_desc.static_tree,o=e.stat_desc.has_stree,l=e.stat_desc.elems,h=-1;for(t.heap_len=0,t.heap_max=g,a=0;a<l;a++)0!==r[2*a]?(t.heap[++t.heap_len]=h=a,t.depth[a]=0):r[2*a+1]=0;for(;t.heap_len<2;)r[2*(n=t.heap[++t.heap_len]=h<2?++h:0)]=1,t.depth[n]=0,t.opt_len--,o&&(t.static_len-=s[2*n+1]);for(e.max_code=h,a=t.heap_len>>1;1<=a;a--)Y(t,r,a);for(n=l;a=t.heap[1],t.heap[1]=t.heap[t.heap_len--],Y(t,r,1),i=t.heap[1],t.heap[--t.heap_max]=a,t.heap[--t.heap_max]=i,r[2*n]=r[2*a]+r[2*i],t.depth[n]=(t.depth[a]>=t.depth[i]?t.depth[a]:t.depth[i])+1,r[2*a+1]=r[2*i+1]=n,t.heap[1]=n++,Y(t,r,1),2<=t.heap_len;);t.heap[--t.heap_max]=t.heap[1],function(t,e){var a,i,n,r,s,o,l=e.dyn_tree,h=e.max_code,d=e.stat_desc.static_tree,f=e.stat_desc.has_stree,_=e.stat_desc.extra_bits,u=e.stat_desc.extra_base,c=e.stat_desc.max_length,b=0;for(r=0;r<=m;r++)t.bl_count[r]=0;for(l[2*t.heap[t.heap_max]+1]=0,a=t.heap_max+1;a<g;a++)c<(r=l[2*l[2*(i=t.heap[a])+1]+1]+1)&&(r=c,b++),l[2*i+1]=r,h<i||(t.bl_count[r]++,s=0,u<=i&&(s=_[i-u]),o=l[2*i],t.opt_len+=o*(r+s),f&&(t.static_len+=o*(d[2*i+1]+s)));if(0!==b){do{for(r=c-1;0===t.bl_count[r];)r--;t.bl_count[r]--,t.bl_count[r+1]+=2,t.bl_count[c]--,b-=2}while(0<b);for(r=c;0!==r;r--)for(i=t.bl_count[r];0!==i;)h<(n=t.heap[--a])||(l[2*n+1]!==r&&(t.opt_len+=(r-l[2*n+1])*l[2*n],l[2*n+1]=r),i--)}}(t,e),j(r,h,t.bl_count)}function X(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),e[2*(a+1)+1]=65535,i=0;i<=a;i++)n=s,s=e[2*(i+1)+1],++o<l&&n===s||(o<h?t.bl_tree[2*n]+=o:0!==n?(n!==r&&t.bl_tree[2*n]++,t.bl_tree[2*p]++):o<=10?t.bl_tree[2*v]++:t.bl_tree[2*k]++,r=n,(o=0)===s?(l=138,h=3):n===s?(l=6,h=3):(l=7,h=4))}function W(t,e,a){var i,n,r=-1,s=e[1],o=0,l=7,h=4;for(0===s&&(l=138,h=3),i=0;i<=a;i++)if(n=s,s=e[2*(i+1)+1],!(++o<l&&n===s)){if(o<h)for(;L(t,n,t.bl_tree),0!=--o;);else 0!==n?(n!==r&&(L(t,n,t.bl_tree),o--),L(t,p,t.bl_tree),F(t,o-3,2)):o<=10?(L(t,v,t.bl_tree),F(t,o-3,3)):(L(t,k,t.bl_tree),F(t,o-11,7));r=n,(o=0)===s?(l=138,h=3):n===s?(l=6,h=3):(l=7,h=4)}}i(D);var J=!1;function Q(t,e,a,i){var n,r,s,o;F(t,(d<<1)+(i?1:0),3),r=e,s=a,o=!0,M(n=t),o&&(T(n,s),T(n,~s)),l.arraySet(n.pending_buf,n.window,r,s,n.pending),n.pending+=s}a._tr_init=function(t){J||(function(){var t,e,a,i,n,r=new Array(m+1);for(i=a=0;i<s-1;i++)for(R[i]=a,t=0;t<1<<y[i];t++)Z[a++]=i;for(Z[a-1]=i,i=n=0;i<16;i++)for(D[i]=n,t=0;t<1<<x[i];t++)A[n++]=i;for(n>>=7;i<u;i++)for(D[i]=n<<7,t=0;t<1<<x[i]-7;t++)A[256+n++]=i;for(e=0;e<=m;e++)r[e]=0;for(t=0;t<=143;)S[2*t+1]=8,t++,r[8]++;for(;t<=255;)S[2*t+1]=9,t++,r[9]++;for(;t<=279;)S[2*t+1]=7,t++,r[7]++;for(;t<=287;)S[2*t+1]=8,t++,r[8]++;for(j(S,_+1,r),t=0;t<u;t++)E[2*t+1]=5,E[2*t]=H(t,5);C=new I(S,y,f+1,_,m),N=new I(E,x,0,u,m),O=new I(new Array(0),z,0,c,b)}(),J=!0),t.l_desc=new r(t.dyn_ltree,C),t.d_desc=new r(t.dyn_dtree,N),t.bl_desc=new r(t.bl_tree,O),t.bi_buf=0,t.bi_valid=0,K(t)},a._tr_stored_block=Q,a._tr_flush_block=function(t,e,a,i){var n,r,s=0;0<t.level?(2===t.strm.data_type&&(t.strm.data_type=function(t){var e,a=4093624447;for(e=0;e<=31;e++,a>>>=1)if(1&a&&0!==t.dyn_ltree[2*e])return o;if(0!==t.dyn_ltree[18]||0!==t.dyn_ltree[20]||0!==t.dyn_ltree[26])return h;for(e=32;e<f;e++)if(0!==t.dyn_ltree[2*e])return h;return o}(t)),G(t,t.l_desc),G(t,t.d_desc),s=function(t){var e;for(X(t,t.dyn_ltree,t.l_desc.max_code),X(t,t.dyn_dtree,t.d_desc.max_code),G(t,t.bl_desc),e=c-1;3<=e&&0===t.bl_tree[2*B[e]+1];e--);return t.opt_len+=3*(e+1)+5+5+4,e}(t),n=t.opt_len+3+7>>>3,(r=t.static_len+3+7>>>3)<=n&&(n=r)):n=r=a+5,a+4<=n&&-1!==e?Q(t,e,a,i):4===t.strategy||r===n?(F(t,2+(i?1:0),3),q(t,S,E)):(F(t,4+(i?1:0),3),function(t,e,a,i){var n;for(F(t,e-257,5),F(t,a-1,5),F(t,i-4,4),n=0;n<i;n++)F(t,t.bl_tree[2*B[n]+1],3);W(t,t.dyn_ltree,e-1),W(t,t.dyn_dtree,a-1)}(t,t.l_desc.max_code+1,t.d_desc.max_code+1,s+1),q(t,t.dyn_ltree,t.dyn_dtree)),K(t),i&&M(t)},a._tr_tally=function(t,e,a){return t.pending_buf[t.d_buf+2*t.last_lit]=e>>>8&255,t.pending_buf[t.d_buf+2*t.last_lit+1]=255&e,t.pending_buf[t.l_buf+t.last_lit]=255&a,t.last_lit++,0===e?t.dyn_ltree[2*a]++:(t.matches++,e--,t.dyn_ltree[2*(Z[a]+f+1)]++,t.dyn_dtree[2*U(e)]++),t.last_lit===t.lit_bufsize-1},a._tr_align=function(t){var e;F(t,2,3),L(t,w,S),16===(e=t).bi_valid?(T(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):8<=e.bi_valid&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)}},{\\\"../utils/common\\\":3}],15:[function(t,e,a){\\\"use strict\\\";e.exports=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg=\\\"\\\",this.state=null,this.data_type=2,this.adler=0}},{}],\\\"/\\\":[function(t,e,a){\\\"use strict\\\";var i={};(0,t(\\\"./lib/utils/common\\\").assign)(i,t(\\\"./lib/deflate\\\"),t(\\\"./lib/inflate\\\"),t(\\\"./lib/zlib/constants\\\")),e.exports=i},{\\\"./lib/deflate\\\":1,\\\"./lib/inflate\\\":2,\\\"./lib/utils/common\\\":3,\\\"./lib/zlib/constants\\\":6}]},{},[])(\\\"/\\\")});\"},{\"col_type\":\"movie_3\",\"name\":\"lz-string字串转换函数\",\"path\":\"lz-string-tool\",\"rule\":\"js:\\nif (!String.prototype.trim) {\\n    String.prototype.trim = function() {\\n        return this.replace(/^\\\\s+|\\\\s+$/, \\\"\\\");\\n    }\\n}\\n\\nfunction is_array(input) {\\n    return typeof(input) === \\\"object\\\" && (input instanceof Array);\\n}\\n\\nfunction convert_formated_hex_to_bytes(hex_str) {\\n    var count = 0,\\n        hex_arr,\\n        hex_data = [],\\n        hex_len,\\n        i;\\n\\n    if (hex_str.trim() == \\\"\\\") return [];\\n\\n    /// Check for invalid hex characters.\\n    if (/[^0-9a-fA-F\\\\s]/.test(hex_str)) {\\n        return false;\\n    }\\n\\n    hex_arr = hex_str.split(/([0-9a-fA-F]+)/g);\\n    hex_len = hex_arr.length;\\n\\n    for (i = 0; i < hex_len; ++i) {\\n        if (hex_arr[i].trim() == \\\"\\\") {\\n            continue;\\n        }\\n        hex_data[count++] = parseInt(hex_arr[i], 16);\\n    }\\n\\n    return hex_data;\\n}\\n\\nfunction convert_formated_hex_to_string(s) {\\n    var byte_arr = convert_formated_hex_to_bytes(s);\\n    var res = \\\"\\\";\\n    for (var i = 0; i < byte_arr.length; i += 2) {\\n        res += String.fromCharCode(byte_arr[i] | (byte_arr[i + 1] << 8));\\n    }\\n    return res;\\n}\\n\\nfunction convert_string_to_hex(s) {\\n    var byte_arr = [];\\n    for (var i = 0; i < s.length; i++) {\\n        var value = s.charCodeAt(i);\\n        byte_arr.push(value & 255);\\n        byte_arr.push((value >> 8) & 255);\\n    }\\n    return convert_to_formated_hex(byte_arr);\\n}\\n\\nfunction convert_to_formated_hex(byte_arr) {\\n    var hex_str = \\\"\\\",\\n        i,\\n        len,\\n        tmp_hex;\\n\\n    if (!is_array(byte_arr)) {\\n        return false;\\n    }\\n\\n    len = byte_arr.length;\\n\\n    for (i = 0; i < len; ++i) {\\n        if (byte_arr[i] < 0) {\\n            byte_arr[i] = byte_arr[i] + 256;\\n        }\\n        if (byte_arr[i] === undefined) {\\n            alert(\\\"Boom \\\" + i);\\n            byte_arr[i] = 0;\\n        }\\n        tmp_hex = byte_arr[i].toString(16);\\n\\n        // Add leading zero.\\n        if (tmp_hex.length == 1) tmp_hex = \\\"0\\\" + tmp_hex;\\n\\n        if ((i + 1) % 16 === 0) {\\n            tmp_hex += \\\"\\\\n\\\";\\n        } else {\\n            tmp_hex += \\\" \\\";\\n        }\\n\\n        hex_str += tmp_hex;\\n    }\\n\\n    return hex_str.trim();\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"宅男鸭Ⓜ️","author":"名城梦","version":2,"type":"other","url":"hiker://empty#fyAll#fypage#https://zhainanya.com/","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//以下是 列表解析规则（JS）\nvar res = {};\nvar item = [];\n\n// var type=MY_URL.split('#')[1];\nvar page=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\n\nif(getMyVar('zhainanya.titleColor')==\"\") putMyVar('zhainanya.titleColor',\"#FA7298\");\nif(getMyVar('zhainanya.descColor')==\"\") putMyVar('zhainanya.descColor',\"#708090\");\n\nif(getMyVar(\"zhainanya.categoryNum\")==\"\") putMyVar(\"zhainanya.categoryNum\",'0');\nif(getMyVar(\"zhainanya.url\")==\"\") putMyVar(\"zhainanya.url\",mUrl);\n\n//自定义颜色\nconst titleColor=getMyVar('zhainanya.titleColor');\nconst descColor = getMyVar('zhainanya.descColor');\n\nconst categoryNum = getMyVar(\"zhainanya.categoryNum\");\nconst clickUrl = getMyVar(\"zhainanya.url\");\n\n\neval(JSON.parse(request(\"hiker://page/uses\")).rule);\nif(page === '1'){\n\n    var tColor = getRangeColors();\n    var dColor = getRangeColors();\n    var mHtml = request(mUrl,{});\n\n    var categoriesArray = parseDomForArray(mHtml, '.nav&&a');\n    var categoriesOne = parseDomForArray(mHtml, '.widget_tags_inner&&a');\n    categoriesArray.pop();\n    categoriesArray.push.apply(categoriesArray,categoriesOne);\n\n    categoriesArray.forEach((category, index) => {\n        let title = parseDomForHtml(category,'a&&Text');\n        let titleNum = parseDomForHtml(category,'a&&title').replace(\"个话题\",\"\");\n        let url = parseDomForHtml(category,'a&&href');\n        // if(index == 1) title = title.replace(\"福利吧\",\"最新福利\");\n        if(titleNum == \"\") titleNum = \"∞\";\n        titleNum = \"(\"+titleNum+\")\";\n        if(url.indexOf(\"/\") == 0) url = mUrl + url;\n        item.push({\n\n            title: index.toString()===getMyVar(\"zhainanya.categoryNum\")?'““””<b><font color='+titleColor+'>'+title+'</font></b>'+'““””<small><small><small><font color='+\"#FA7298\"+'>'+titleNum+' </font></small></small></small>':title,\n            url: $(url).lazyRule((params) => {\n\n                putMyVar(\"zhainanya.categoryNum\", params.index.toString());\n                putMyVar(\"zhainanya.url\",params.url);\n                putMyVar('zhainanya.titleColor',params.tColor);\n                putMyVar('zhainanya.descColor',params.dColor);\n                refreshPage(true);\n                return \"hiker://empty\";\n            }, {index: index,url: url,tColor: tColor,dColor: dColor,}),\n            col_type: 'scroll_button',\n        });\n        if(index == 5 || index == 11 || index == categoriesArray.length - parseInt(categoriesOne.length / 2)-1) item.push({col_type:\"blank_block\"});\n    })\n    item.push({col_type:\"blank_block\"});\n}\n\n\nvar ul = clickUrl+\"/page/\"+page;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item.push.apply(item,getItem(html,descColor));\n}\n\nres.data = item;\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar page=MY_URL.split('#')[1];\nvar searchn=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\nvar ul = mUrl + \"/page/\"+ page + \"/?s=\"+searchn;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nvar res = {};\nvar item=[];\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item=getSearchItem(html);\n}\n\nres.data = item;\nsetHomeResult(res);","search_url":"hiker://empty#fypage#**#https://zhainanya.com/","group":"⑦其他","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res={};\nvar d=[];\n\n//观看文章模式 默认模式图文并茂/0 看图模式/1 省流模式/2 阅读模式/3\nif(getMyVar('zhainanya.showMode')=='') putMyVar('zhainanya.showMode','0');\n\n\n//图片显示模式 网页内嵌图片/0 默认海阔显示图片/1\nif(getMyVar('zhainanya.viewPicMode')=='') putMyVar('zhainanya.viewPicMode','1');\nif(getMyVar('zhainanya.openComment')=='') putMyVar('zhainanya.openComment','0');\n\nif(getMyVar('zhainanya.viewPicMode')=='0' && getMyVar('zhainanya.hideImg')=='') putMyVar('zhainanya.hideImg','1');\n\nif(getMyVar('zhainanya.viewPicMode')=='1' && getMyVar('zhainanya.bigImg')=='') putMyVar('zhainanya.bigImg','pic_1_full');\n\n\nlet imageTextArray = ['🌃图文并茂','👁看图模式','📱省流模式','📚阅读模式'];\nputMyVar('zhainanya.imageTextMode',imageTextArray[parseInt(getMyVar('zhainanya.showMode'))]);\n\nlet viewPicArray = [{0:\"显示图片🌌\",1:\"隐藏图片🔗\"},{ pic_1_full:\"默认大图🌈\", pic_3:\"精美小图✨\"}];\nif(getMyVar('zhainanya.viewPicMode')=='1') putMyVar('zhainanya.imgMode',viewPicArray[1][getMyVar('zhainanya.bigImg')]);\nif(getMyVar('zhainanya.viewPicMode')=='0') putMyVar('zhainanya.imgMode',viewPicArray[0][parseInt(getMyVar('zhainanya.hideImg'))]);\n\nvar picType = '';\nif(getMyVar('zhainanya.viewPicMode')=='1') picType = `@lazyRule=.js:putMyVar('zhainanya.bigImg',getMyVar('zhainanya.bigImg')!=='pic_3'?'pic_3':'pic_1_full');refreshPage();'toast://已切换图片类型';\">`;\nif(getMyVar('zhainanya.viewPicMode')=='0') picType = `@lazyRule=.js:putMyVar('zhainanya.hideImg',getMyVar('zhainanya.hideImg')!=='0'?'0':'1');refreshPage();'toast://已切换图片类型';\">`;\n\nvar commentArray = ['已关闭评论','已开启评论'];\nputMyVar('zhainanya.openCommentString',commentArray[parseInt(getMyVar('zhainanya.openComment'))])\nvar commentType = `@lazyRule=.js:putMyVar('zhainanya.openComment',getMyVar('zhainanya.openComment')!=='0'?'0':'1');refreshPage();'toast://'+getMyVar('zhainanya.openCommentString');\">`;\n\n// if(getMyVar('zhainanya.showMode')=='0') putMyVar('zhainanya.imageTextMode','🌃图文并茂');\n// if(getMyVar('zhainanya.showMode')=='1') putMyVar('zhainanya.imageTextMode','👁看图模式');\n// if(getMyVar('zhainanya.showMode')=='2') putMyVar('zhainanya.imageTextMode','🌐省流模式');\n// if(getMyVar('zhainanya.showMode')=='3') putMyVar('zhainanya.imageTextMode','📚阅读模式');\n\n\n\nvar goodColor = \"#4000FF\";\nvar size = 16;\nvar html=getResCode();\n\neval(JSON.parse(request(\"hiker://page/css\")).rule);\neval(JSON.parse(request(\"hiker://page/view\")).rule);\n\n\nfunction getBaiduYunCode(content){\n    if(content.includes(\"pan.baidu.com\")){\n        let code = content.split(\"提取码：\");\n        if(code.length>1) copy(code[1].substring(0,4));\n    }\n}\n\nvar maxPage = 1;\ntry {\n    maxPage =  parseInt (parseDomForArray(html,'.article-paging&&a').length+1);\n} catch (e) { }\n\n\nlet headerTitle = getBigText(getStrongText(parseDomForHtml(html, '.article-title&&Text'))) + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文👀]'));\n\nlet goodCount = \"👍🏻点\"+parseDomForHtml(html, '.action.action-like&&Text');\ngoodCount = '<font color=\"' + goodColor + '\">' + goodCount \n+ `<small><small><sup><a href=\"hiker://empty` + commentType + getMyVar('zhainanya.openCommentString').substring(1,2) + \"</a></sup></small></small></font>\";\n\nlet brower = `<big><a href=\"hiker://empty@lazyRule=.js:putMyVar('zhainanya.browserLink',getMyVar('zhainanya.browserLink')!==''?'':'web://');refreshPage();'toast://已切换浏览模式';\">`+(getMyVar('zhainanya.browserLink')!==''?\"🌐\":\"🌆\")+\"</a></big>\";\n\n//var subTime = getCodeText(parseDomForHtml(html,'.article-meta--a&&li,0&&Text').replace(\"发布于\",\"日期:\"));\n\nlet subType = [];\ntry{\n    subType = parseDomForArray(html,'.article-tags&&a');\n}catch(e){}\nif(subType.length==0) subType = parseDomForArray(html,'.article-meta&&li,1&&a');\n\n\nlet type=getCodeText(\"🏷️标签: \");\nfor(let i=0;i<subType.length;i++){\n    type += getCodeText(parseDomForHtml(subType[i],'a&&Text'));\n}\n\nlet comment=[];\ntry{\n    comment = parseDomForArray(html,'.commentlist&&.depth-1');\n}catch(e){}\n\n//if(headerTitle.includes(\"女神\") || headerTitle.includes(\"写真\") || headerTitle.includes(\"套图\") ||type.includes(\"宅男女神\") || type.includes(\"写真套图\")) putMyVar('img','pic_3');\n\nd.push({title: headerTitle+'&nbsp;' +goodCount+'&nbsp;'+brower+'<br>'+type,});\nd.push({col_type:'line'});\n\n\n// var tips = getColorText('温馨提示:图片清晰度较高，容易导致崩溃！！！建议小图访问链接查看','#F47920');\n// if(getMyVar('img')=='pic_3') \n// d.push({title: tips,});\nd.push({col_type:\"rich_text\",title:\n    `<small>当前<a href=\"hiker://empty@lazyRule=.js:putMyVar('zhainanya.viewPicMode',getMyVar('zhainanya.viewPicMode')!=='0'?'0':'1');refreshPage();'toast://已切换图片显示模式';\">`+(getMyVar('zhainanya.viewPicMode')!=='0'?\"海阔模式\":\"网页模式\")+\"</a>👈</small>\"\n    +`<small>为：<a href=\"hiker://empty`+picType+getMyVar('zhainanya.imgMode')+\"</a></small>\"\n    +'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\n    +`<small>模式：<a href=\"hiker://empty@lazyRule=.js:if(getMyVar('zhainanya.showMode')=='3'){putMyVar('zhainanya.showMode','0')}else{putMyVar('zhainanya.showMode',(parseInt(getMyVar('zhainanya.showMode'))+1).toString());};refreshPage();'toast://已切换文章模式';\">`+getMyVar('zhainanya.imageTextMode')+\"</a></small>\"\n    // +\"<br><small><small>\"+tips+\"</small></small>\"\n});\n\nvar content = '';\nfor (let i = 1; i <= maxPage; i++) {\n    if(i > 1) html = fetch(MY_URL.replace(\".html\", \".html/\" + (i)),{});\n\n    let contentZero = parseDomForHtml(html, '.article-content&&Html');\n    if(maxPage > 1){    \n        contentZero = contentZero.split('\\n<div class=\"article-paging\">')[0];\n    }else{\n        let not_copy = parseDomForHtml(contentZero, '.post-copyright&&Html');\n        contentZero = contentZero.replace(not_copy, '');\n    }\n    content += contentZero;\n}\n\n// getBaiduYunCode(content);\n\ncontent = content\n    .replace(/<br>/g, '')\n    .replace(/\\n<p>&nbsp;<\\/p>/g,'')\n    .replace(/\\n<p><\\/p>/g,'')\n    .replace(/<pre>([\\s\\S]*?)<\\/pre>/g,'')\n    .replace(/<p>/g,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')\n    .replace(/<\\/p>/g,'<br>');\n    // .replace(/<img([\\s\\S]*?)!!([\\s\\S]*?)>/g,'');\n    //非常耗时和内存\n    // .replaceWithCallback(/<img([\\s\\S]*?)>/g, '', deleteInvalidImgTag);\n\nif(getMyVar('zhainanya.showMode')=='2' || getMyVar('zhainanya.showMode')=='3') content = content.replace(/<img([\\s\\S]*?)>/g,'')\n  .replace(/\\n<p><strong><\\/strong><\\/p>/g,'');\n\nif(getMyVar('zhainanya.viewPicMode')=='1'){\n    let contentlist = content.split('\\n');\n    let htmlList = '';\n    for(let j=0;j<contentlist.length;j++){\n        let imglist = imgTagGetUrlArray(contentlist[j],/<img([\\s\\S]*?)>/g);\n        let quoteContent = contentlist[j];\n        //文章内容-简单文本\n        quoteContent = quoteContent\n            .replace(/<img([\\s\\S]*?)>/g,'')\n            // .replace(/<(iframe|sources|video)([\\s\\S]*?)<\\/(iframe|sources|video)>/g,'')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n            // .replace(/<p><\\/p>/g,'');\n\n\n\n        let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n        if(getMyVar('zhainanya.showMode')=='3'){\n            if(!temp.match(/^\\s*$/)) htmlList += '◇&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '<br>';\n            if(j==contentlist.length-1 && htmlList !== ''){\n                d.push({title: htmlList,\n                    extra: {\n                                textSize: size,\n                                click: true\n                            }});\n                htmlList = '';\n            }\n        }else{\n            if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n            if(imglist.length > 0 || j==contentlist.length-1){\n                let temp = parseDomForHtml(getNewText(htmlList,'div'), 'Text');\n                if(!temp.match(/^\\s*$/) && getMyVar('zhainanya.showMode')!=='1') d.push({title: htmlList,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                htmlList = '';\n                for (let k = 0; k < imglist.length; k++){\n                    d.push({\n                        pic_url:imglist[k],\n                        url:getMyVar('zhainanya.browserLink')+imglist[k],\n                        col_type:getMyVar('zhainanya.bigImg'),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }\n                    });\n                }\n            }\n        }\n    }   \n\n    //复杂文本-由Html格式-替换掉图片---视频链接也替换掉用查看视频替代---网站地址不用替换，直接用\n    // quoteContent = getNewText(quoteContent,'div');\n    // let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n    // if(!quoteContent.includes('=\"http')) quoteContent = temp;\n    // if(!temp.match(/^\\s*$/)) d.push({title: quoteContent});\n\n    //漫画模式\n    // var pics=[];\n    //for (let k = 0; k < imglist.length; k++){\n    //     pics.push(imglist[k]);\n    // }\n    // \"pics://\"+pics.join(\"&&\");\n\n    // if(imglist.length==0) continue;\n    // for (let k = 0; k < imglist.length; k++){\n    //     d.push({\n    //         pic_url:imglist[k],\n    //         url:imglist[k],\n    //         col_type:getMyVar('zhainanya.bigImg')\n    //     });\n    // }\n}else{\n    // if(getMyVar('zhainanya.showMode')=='1') content = GetImgTagArray(content,/<img([\\s\\S]*?)>/g);\n    if(getMyVar('zhainanya.showMode')=='1'){\n        let matchArray = content.match(/<img([\\s\\S]*?)>/g);\n        let imglist = '';\n        if (matchArray != null) {\n            for (let i = 0; i < matchArray.length; i++) {\n                let pic = matchArray[i] .replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n                                        .replace(/<showimg/g, '<img');\n                if(getMyVar('zhainanya.hideImg') == '0') d.push({title: pic,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                imglist += pic;\n            }\n        }\n        if(getMyVar('zhainanya.hideImg') == '1') d.push({title: imglist,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    }else{\n        content = content.replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n            .replace(/<showimg/g, '<img')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n\n        let contentlist = content.split('\\n');\n        let htmlList = '';\n        for(let j=0;j<contentlist.length;j++){\n            let quoteContent = contentlist[j];\n\n            let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n            if(getMyVar('zhainanya.showMode')=='3'){\n                if(!temp.match(/^\\s*$/)) htmlList += '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '</p>';\n                if(j==contentlist.length-1 && htmlList !== ''){\n                    d.push({title: htmlList,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                    htmlList = '';\n                }\n            }else{\n                if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null || j==contentlist.length-1){\n                    if(getMyVar('zhainanya.showMode')!=='1' && htmlList !== '') d.push({title: htmlList,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                    htmlList = '';\n                }\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null) d.push({title: quoteContent,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n            }\n        }\n    }\n}\n\n\nd.push({col_type: 'line_blank'});\nlet tips = '该文章来源于宅男鸭，如您喜欢，请进入宅男鸭网页版';\nlet warning = '此规则仅限学习使用，如有不妥，请本吧主联系我删除';\n\n// if(getMyVar('zhainanya.showMode')=='0' || getMyVar('zhainanya.showMode')=='2'){\nif(getMyVar('zhainanya.openComment')=='0'){\n    eval(JSON.parse(request(\"hiker://page/comment\")).rule);\n\n    d.push({title: GetTips(tips,warning),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    d.push({col_type: 'line_blank'});\n\n    if(comment.length > 0){\n        let commentNum = parseDomForHtml(html,'.article-meta&&li,-2&&Text').replace(\"评论\",\"📢热评数\");\n        commentNum = GetHome(3)+getStrongText(getBigText(commentNum));\n        for (let l = 0; l < comment.length; l++){\n            let list = parseDomForArray(comment[l],'.comment');\n            d.push({col_type: 'line'});\n\n            for (let m = 0; m < list.length; m++) {\n                let floor = ''; let main = '';  let autor = ''; let time = '';\n                try{\n                    if(m==0) floor = \"🏢\" + (l+1)+\"楼\";\n                }catch(e){\n                    floor = l+'楼层错误!!!'+m\n                }\n                try{\n                    main =  parseDomForHtml(list[m],'.c-main&&p&&Text');\n                }catch(e){\n                    main = l+'回复内容错误!!!'+m\n                }\n                try{\n                    autor = \"👱\" + parseDomForHtml(list[m],'.c-author&&Text');\n                }catch(e){\n                    autor = l+'作者名称错误!!!'+m\n                }\n                try{\n                    time = \"🕢\" + parseDomForHtml(list[m],'.c-time&&Text').replace(\"回复\",\"\");\n                }catch(e){\n                    time = l+'时间错误!!!'+m\n                }\n\n                let commentText = GetComment(main,autor,time,floor);\n                if(l==0 && m==0) commentText = commentNum +'<br><br>'+ commentText;\n\n                d.push({title: commentText,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n            }\n        }\n    }\n}\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"CSS格式化\",\"path\":\"css\",\"rule\":\"function getNewText(text,css){\\n   return '<'+css+'>' + text + '</'+css+'>';\\n}\\n\\nfunction getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\"},{\"name\":\"视图处理\",\"path\":\"view\",\"rule\":\"//获取重定向地址\\nfunction getRedirectAddress(url){\\n    let urlRedirect = '';\\n    try{\\n        let urlCode = fetch(url,{redirect:false,withHeaders:true});\\n        urlRedirect = JSON.parse(urlCode).headers.location[0];\\n    }catch(e){}\\n    return urlRedirect;\\n}\\n\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\n//删除重定向图片链接\\nfunction deleteInvalidImgTag(context, searchValue,replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl != '') {\\n                if(getRedirectAddress(imgUrl) != ''){\\n                    returnValue = returnValue.replace(item,replaceValue);\\n                }\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction GetImgTagArrayString(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = '';\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            returnValue += matchArray[i];\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction imgTagGetUrlArray(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = [];\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue.push(imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\n\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('zhainanya.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagOne(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '\\\\n<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('zhainanya.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a>&nbsp;&nbsp;&nbsp;<a href=\\\"web://' + imgUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction imgTagReplacementOne(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTagOne(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet videoError = '<p><font color=\\\"grey\\\">视频暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction videoTag(context, videoUrl) {\\n    let replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + (videoUrl) + '\\\">[点击查看视频]</a></p>';\\n    if (getMyVar('zhainanya.hideImg')=='1') {\\n        replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + videoUrl + '\\\">[点击查看视频]</a></p>';\\n    }\\n    return context.replace(/<video data-v>/g, replaceString);\\n}\\nfunction videoTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(source|video).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let videoUrl = RegExp.$3;\\n            if(videoUrl.indexOf(\\\"//\\\")==0){videoUrl = \\\"https:\\\" + videoUrl;}\\n            if(videoUrl.includes(\\\"zhainanmi\\\")) continue;\\n            if (videoUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = videoTag(returnValue, videoUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet linkError = '<p><font color=\\\"grey\\\">链接暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction linkTag(context, linkUrl) {\\n    let replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + (linkUrl) + '\\\">[点击查看链接]</a></p>';\\n    if (getMyVar('zhainanya.hideImg')=='1') {\\n        replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + linkUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<link data-v>/g, replaceString);\\n}\\nfunction linkTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(iframe).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let linkUrl = RegExp.$3;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = linkTag(returnValue, linkUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction cssTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(div|p|strong)>.*?<\\\\/(div|p|strong)>/.test(item);\\n            let css = RegExp.$2;\\n            if (css.match(/^\\\\s*$/)) {\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\"},{\"name\":\"评论方法\",\"path\":\"comment\",\"rule\":\"function GetHome(num){\\n    let retract = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    for(let i=1;i<num;i++) retract += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    return '<span>'+retract+'</span>';\\n}\\n\\nfunction GetComment(main,autor,time,floor){\\n\\n    let fontStyle = '<font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;&nbsp;'+time+' &nbsp;</span></font>';\\n    let buttonData = getColorText(autor,'#2979FF')+fontStyle+getColorText(floor,'#2979aa');\\n    let comment = '';\\n\\n    if(floor==''){\\n        comment = GetHome(1)+main+getNewText('<br>'+GetHome(1)+buttonData,'small');\\n    }else{\\n        comment = main+getNewText('<br>'+ buttonData,'small');\\n    }\\n    return comment;\\n}\\n\\nfunction GetTips(tips,warning){\\n    let tipsStyle = '<small><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+tips+' &nbsp;</span></small>';\\n    let warningStyle = '<small><font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+warning+' &nbsp;</span></font></small>';\\n    return tipsStyle+'<br>'+warningStyle;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析搜索\",\"path\":\"one\",\"rule\":\"function getItem(html,colors){\\n    var list = parseDomForArray(html, '.content&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], '.thumb&&data-original');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.post-comments&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        let time = \\\"🕧日期: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.text-muted.time--a&&Text').split(\\\"发布于\\\")[1] +' </font></b>';\\n        let like = \\\"💜点赞: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.text-muted.views&&a,0&&span&&Text') +' </font>&nbsp;&nbsp;</b>';\\n        let comment =  \\\"  💬评论: \\\" + '““””<b><font color='+ colors + '>' + commentNum +' </font></b>';\\n\\n        let tabs=\\\"\\\\n\\\\n\\\";\\n\\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: time+tabs+like+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\\n\\nfunction getSearchItem(html){\\n    var list = parseDomForArray(html, '.content&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], '.thumb&&data-original');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.post-comments&&Text').replace(/评论(|)/g,'');\\n        }catch(e){}\\n\\n        // let time = \\\"🕧: \\\" + parseDomForHtml(list[i], '.text-muted.time--a&&Text').replace(\\\"发布于\\\",\\\"\\\");\\n        let like = \\\"💜: \\\" + parseDomForHtml(list[i], '.text-muted.views&&a,0&&span&&Text');\\n        let comment =  \\\"💬: \\\" + commentNum;\\n\\n        let tabs=\\\"   \\\";\\n        \\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: like+tabs+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\"},{\"name\":\"方法云集\",\"path\":\"uses\",\"rule\":\"function getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\n\\nfunction getRangeColors(){\\n    //颜色 代码来自Rx大佬\\n    let Colors=[\\\"4\\\",\\\"5\\\",\\\"0\\\",\\\"1\\\",\\\"A\\\",\\\"3\\\",\\\"8\\\",\\\"9\\\",\\\"B\\\",\\\"C\\\",\\\"D\\\",\\\"E\\\",\\\"6\\\",\\\"7\\\",\\\"F\\\"];\\n    let Color = \\\"#\\\";\\n    for (let i=0;i<6;i++){\\n        let num=Math.ceil((Math.random()*15))-1;\\n        Color+=Colors[num];\\n    }\\n    return Color;\\n}\\n\\nfunction getBaiduYunCode(content){\\n    if(content.includes(\\\"pan.baidu.com\\\")){\\n        var code = content.split(\\\"提取码：\\\");\\n        if(code.length>1) copy(code[1].substring(0,4));\\n    }\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"风影","author":"随风","version":230113,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n require(config.依赖);\n sy()","searchFind":"js:\n require(config.依赖);\n sou()","search_url":"hiker://empty##**","group":"⑦其它","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"let ycl = \"https://gitcode.net/suifen/suifeng/-/raw/master/ycl.js\";\ninitConfig({\n    依赖: ycl\n});","pages":"[{\"col_type\":\"movie_3\",\"name\":\"验证\",\"path\":\"yzm\",\"rule\":\"js:\\n require(config.依赖);\\n yzm()\"},{\"col_type\":\"movie_3\",\"name\":\"定一\",\"path\":\"dw\",\"rule\":\"js:\\n require(config.依赖);\\n dw()\"},{\"col_type\":\"movie_3\",\"name\":\"定二\",\"path\":\"dwer\",\"rule\":\"js:\\n require(config.依赖);\\n dwer()\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/10/15/xwTPdU.jpg"},{"last_chapter_rule":"","title":"夜片","author":"喵……【不能放轻合集】","version":0,"type":"video","url":"https://m.zsvdy.com/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"午夜片&最新片&富力片","class_url":"10&13&41","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;h4&&Text;a&&data-original;.pic-text&&Text;a&&href","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy='@lazyRule=.embed-responsive&&script&&Html.js:eval(input);;player_data.url;';\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h3&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.stui-content__detail&&p,3&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'body&&img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc; \n  }\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.stui-pannel__head&&h3');\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n     d.push({\n title: \"““””<b>\"+'<span style=\"color: #CC0066\">'+'🌳'+'~⚛~⚛~线路(不要相信广告)~⚛~⚛~'+'🌳',\n        col_type: 'text_center_1'\n    })\n    var title = '';\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"hiker://empty@lazyRule=.js:putVar('\"+vari+\"', '\"+i+\"');refreshPage();'toast://切换成功！'\";\n\n        d.push({\n           \n            title: (getVar(vari, '0')==i?'🚩':'')+tabs[i] ,\n            \n            url: url,\n            col_type: tabs.length>2?'text_3' : 'text_2'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nif (getVar('shsort') == '1') {var sx='<font color=\"#0aa344\"> 逆序 </font></small>';}else {var sx='<font color=\"#0aa344\">  正序</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           \n    title: \"““””<b>\"+'<span style=\"color: #CC0066\">'+'🌳'+'~⚛~⚛~选集(不要相信广告!)~⚛~⚛~'+'🌳',\n\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第(\\d+)集/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2?  'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 2 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nsetResult(d);\n//格格大佬粉绿色模板","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"爱看机器人","author":"xc2022","version":2,"type":"video","url":"hiker://empty##https://www.ikanbot.com","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet ad = JSON.parse(fetch(\"hiker://page/ad\")).rule;\nad = ad.split(\"￥\")[2];\nlet blockRules = ad.split(\"&&\");\nlet url = 'https://www.ikanbot.com';\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, url);\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true,\n        blockRules: blockRules,\n        //floatVideo: true\n    }\n}])","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"广告拦截\",\"path\":\"ad\",\"rule\":\"海阔视界规则分享，当前分享的是：广告网址拦截￥ad_url_rule￥/ad/&&.gif&&.GIF&&/sh/to/\"},{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet ad = JSON.parse(fetch(\\\"hiker://page/ad\\\")).rule;\\nad = ad.split(\\\"￥\\\")[2];\\nlet blockRules = ad.split(\\\"&&\\\");\\nlog(blockRules);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        //floatVideo: true,\\n        blockRules: blockRules\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if ((!input.includes(host) && input.startsWith(\\\"http\\\")) || input.includes(\\\"/play\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                //跳网页\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n\\n        }\\n    }, rule, origin);\\n}\"}]","proxy":"","icon":"https://www.ikanbot.com/resources/logo.svg"},{"last_chapter_rule":"","title":"清风DJ·Q","author":"发粪涂墙","version":0,"type":"music","url":"https://m.vvvdj.com/sort/cfyAll/0-0-0-0-fypage.html","col_type":"text_1","class_name":"的高串烧&慢摇串烧&中文DISCO&外文DISCO","class_url":"1&2&3&4","area_name":"中文CLUB&外文CLUB&电音HOUSE","area_url":"5&6&7","sort_name":"","year_name":"酒吧潮歌&交谊舞曲","sort_url":"","year_url":"8&9","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.list_con_new&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], '.corhui&&Text'),\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=script,-3&&Html.js:eval(input.split('$')[0]);playurl`\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.list_con_new&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'p&&Text'),\r\n       desc: parseDomForHtml(list[j], '.corhui&&Text'),\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=script,-3&&Html.js:eval(input.split('$')[0]);playurl`\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://m.vvvdj.com/search/so?key=**&cid=0&list=2&page=fypage","titleColor":"#ff228be6","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://jsin.vvvdj.com/staticpc/favicon.ico"},{"last_chapter_rule":"","title":"奇米奇米","author":"发粪涂墙","version":0,"type":"cartoon","url":"http://www.qimiqimi.co/show/fyclass/area/fyyear/class/fyarea/page/fypage/year/fysort.html.js:input.replace('area//','').replace('class//','');get;utf-8;{User-Agent@Windows}","col_type":"movie_3","class_name":"新番连载&完结日漫&国漫&剧场动漫","class_url":"xinfan&riman&guoman&jcdm","area_name":"类型&冒险&热血&奇幻&恋爱&校园&后宫&搞笑&治愈&神魔&魔法&百合&推理&科幻&竞技&悬疑&青春&战争&萝莉&魔幻&战斗&日常","area_url":"&冒险&热血&奇幻&恋爱&校园&后宫&搞笑&治愈&神魔&魔法&百合&推理&科幻&竞技&悬疑&青春&战争&萝莉&魔幻&战斗&日常","sort_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"地区&日本&中国&欧美&韩国&港台","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&日本&中国&欧美&韩国&港台","find_rule":".img-list&&li;h2&&Text;img&&src;i&&Text;a&&href.js:input+\"#immersiveTheme#\"","searchFind":".show-list&&li;h2&&Text;a&&href.js:input+\"#immersiveTheme#\";.color&&Text;.juqing&&Text;img&&src","search_url":"/vod/search/wd/**/page/fypage.html;get;utf-8;{User-Agent@Windows}","group":"⑦其它","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode()\nvar lazy = $('').lazyRule((MY_HOME) => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) return url\n\n    return JSON.parse(request(url.replace('http:', 'https:'), {\n        redirect: false,\n        withHeaders: true\n    })).headers.location[0]\n}, MY_HOME)\nd.push({\n    // title: pdfh(html, '.deployment&&Text'),\n    desc: pdfh(html, '.juqing&&dd&&Text'),\n    img: pd(html, '.detail-pic&&img&&src'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = 'body&&.down-title'\nvar 选集 = 'body&&.video_list'\nvar 线路名 = 'h2&&Text'\nvar 选集列表 = 'body&&a'\nvar 排除 = '-.*'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d)","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"搜图神器","author":"旧巷陌人","version":0,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('hiker://page/Config.view')\ngetBaseParse()","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"Search.view\",\"rule\":\"require('hiker://page/Config.view?rule=' + MY_RULE._title)\\nconst keyword = getParam(\\\"searchTerms\\\") || \\\"\\\";\\nconst index = Number(getParam(\\\"index\\\") || \\\"0\\\");\\n\\nconst getConfig = (path) => {\\n    return JSON.parse(request(path, {\\n        headers: {\\n            'User-Agent': 'Mozilla/5.0'\\n        }\\n    }))\\n}\\n\\nconst d = []\\n\\nswitch (index) {\\n    case 0:\\n        path = 'http://api.huaban.com/search?q=' + keyword + '&per_page=36&page=' + page + '&sort=all'\\n        getConfig(path).pins.forEach(item => {\\n            file = item.file\\n            img = 'https://' + file.bucket + '.huaban.com/' + file.key\\n            d.push({\\n                title: item.raw_text,\\n                desc: '图集：' + item.board.title,\\n                content: file.width + '×' + file.height,\\n                pic_url: img,\\n                url: 'pics://' + img\\n            })\\n        })\\n        break;\\n    case 1:\\n        path = 'http://www.duitang.com/napi/blog/list/by_search/?include_fields=album&kw=' + keyword + '&start=' + (page - 1) * 24 + '&locale=zh&app_version=110&platform_name=Android&__domain=www.duitang.com'\\n        getConfig(path).data.object_list.forEach(item => {\\n            photo = item.photo\\n            d.push({\\n                title: item.msg,\\n                desc: '图集：' + item.album.name,\\n                content: photo.width + '×' + photo.height,\\n                pic_url: photo.path,\\n                url: 'pics://' + photo.path\\n            })\\n        })\\n        break;\\n    case 2:\\n        path = '/v1/wallpaper/list'\\n        sign = 'page=' + (page - 1) + '&page_size=20&platform=0&product_id=16&search_word=' + keyword + '&time=' + getTime + '&version_code=475&key=d9fd3ec394'\\n        body = 'product_id=16&version_code=475&sign=' + md5(sign).toUpperCase() + '&page=' + (page - 1) + '&time=' + getTime + '&search_word=' + keyword + '&platform=0&page_size=20'\\n        layoutParse(d, getConfigDe(path, body))\\n        break;\\n    case 3:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"PhoneWrapper\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 4:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"FullScreenImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 5:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"HignPhoneWrapper\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 6:\\n        path = 'https://pic.sogou.com/napi/pc/searchList?query=' + keyword + '&start=' + (page - 1) * 48\\n        getConfig(path).data.items.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: '图集：' + item.ch_site_name,\\n                content: item.thumbWidth + '×' + item.thumbHeight,\\n                pic_url: item.picUrl,\\n                url: 'pics://' + item.picUrl\\n            })\\n        })\\n        break;\\n    case 7:\\n        path = 'https://m.weibo.cn/api/container/getIndex?page_type=searchall&page=' + page + '&containerid=' + escape('100103type=63&q=') + keyword + escape('&t=0')\\n        getConfig(path).data.cards[0].card_group.forEach(item => {\\n            left = item.left_element\\n            img = left.mblog.bmiddle_pic + '@User-Agent=Dalvik/2.1.0'\\n            d.push({\\n                title: left.desc1,\\n                pic_url: img,\\n                url: 'pics://' + img\\n            })\\n        })\\n        break;\\n    case 8:\\n        path = 'https://m.baidu.com/sf/vsearch/image/search/wisesearchresult?tn=wisejsonala&z=0&ie=utf-8&queryWord=' + keyword + '&rn=30&word=' + keyword + '&pn=' + (page - 1) * 30\\n        getConfig(path).linkData.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: '图集：' + item.fromUrlHost,\\n                content: item.oriWidth + '×' + item.oriHeight,\\n                pic_url: item.hoverUrl,\\n                url: 'pics://' + item.hoverUrl\\n            })\\n        })\\n        break;\\n    case 9:\\n        path = 'https://vt.sm.cn/api/pic/list?query=' + keyword + '&start=' + (page - 1) * 20 + '&limit=20&size=0&latest=0'\\n        getConfig(path).data.hit.imgInfo.item.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: '图集：' + item.firstCateNew,\\n                content: item.width + '×' + item.height,\\n                pic_url: item.img,\\n                url: 'pics://' + item.img\\n            })\\n        })\\n        break;\\n    case 10:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"SquareImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 11:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"TouXiangImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 12:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"BiaoQingBaoImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 13:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"ComputerImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 14:\\n        path = 'https://image.so.com/j?q=' + keyword + '&pn=60&sn=' + (page - 1) * 60 + '&zoom=4&t=0'\\n        getConfig(path).list.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                content: item.width + '×' + item.height,\\n                pic_url: item.img,\\n                url: 'pics://' + item.img\\n            })\\n        })\\n        break;\\n    case 15:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"CoverImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 16:\\n        path = 'https://image.so.com/j?q=' + keyword + '&pn=60&sn=' + (page - 1) * 60 + '&zoom=0&t=0'\\n        getConfig(path).list.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                content: item.width + '×' + item.height,\\n                pic_url: item.img,\\n                url: 'pics://' + item.img\\n            })\\n        })\\n        break;\\n    case 17:\\n        path = 'https://cn.bing.com/api/custom/opal/image/search?q=' + keyword + '&offset=' + (page - 1) * 31 + '&count=30&setmkt=zh-cn'\\n        getConfig(path).answers[0].images.forEach(item => {\\n            d.push({\\n                title: item.name,\\n                content: item.width + '×' + item.height,\\n                pic_url: item.contentUrl,\\n                url: 'pics://' + item.contentUrl\\n            })\\n        })\\n        break;\\n    case 18:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"TransparentBackImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 19:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"GifImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 20:\\n        body = {\\n            \\\"data\\\": {\\n                \\\"where\\\": {\\n                    \\\"$or\\\": [{\\n                        \\\"boardName\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }, {\\n                        \\\"content\\\": {\\n                            \\\"$regex\\\": \\\"\\\\\\\\Q\\\" + keyword + \\\"\\\\\\\\E\\\"\\n                        }\\n                    }],\\n                    \\\"reportCount\\\": {\\n                        \\\"$lt\\\": 2\\n                    }\\n                },\\n                \\\"limit\\\": 20,\\n                \\\"skip\\\": (page - 1) * 20,\\n                \\\"order\\\": \\\"-updatedAt\\\"\\n            },\\n            \\\"c\\\": \\\"PadImage\\\",\\n            \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n            \\\"client\\\": {\\n                \\\"caller\\\": \\\"Android\\\",\\n                \\\"ex\\\": {\\n                    \\\"version\\\": \\\"10\\\",\\n                    \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                    \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n                }\\n            },\\n            \\\"v\\\": \\\"v3.8.4\\\",\\n            \\\"timestamp\\\": getTime / 1000\\n        }\\n        layoutParse(d, getConfigEn(body))\\n        break;\\n    case 21:\\n        path = 'https://unsplash.com/napi/search?query=' + keyword + '&page=' + page + '&per_page=20'\\n        getConfig(path).photos.results.forEach(item => {\\n            d.push({\\n                title: item.description,\\n                content: item.width + '×' + item.height,\\n                pic_url: item.urls.small,\\n                url: 'pics://' + item.urls.full\\n            })\\n        })\\n        break;\\n}\\n\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"Config.view\",\"rule\":\"const empty = 'hiker://empty'\\nconst page = MY_PAGE;\\n\\nconst Color = (test) => {\\n    return '<font color=\\\"#FA7298\\\">' + test + '</front>';\\n}\\n\\nconst Strong = (test) => {\\n    return '<strong>' + test + '</strong>';\\n}\\n\\nconst Small = (test) => {\\n    return '<small>' + test + '</small>';\\n}\\n\\nconst Gray = (test) => {\\n    return \\\"<font color='gray'>\\\" + test + \\\"</font>\\\";\\n}\\n\\nconst Rich = (test) => {\\n    return \\\"‘‘’’\\\" + test;\\n}\\n\\nconst getTime = new Date().getTime()\\n\\nif (getMyVar('secretKey', '') == '') {\\n    eval(getCryptoJS());\\n    const decrypt = (str, token_iv) => {\\n        let token_key = CryptoJS.enc.Utf8.parse(token_iv);\\n        let decrypt = CryptoJS.AES.decrypt(str, token_key, {\\n            iv: token_key,\\n            mode: CryptoJS.mode.CBC,\\n            padding: CryptoJS.pad.Pkcs7\\n        });\\n        return decrypt.toString(CryptoJS.enc.Utf8);\\n    }\\n    const data = JSON.parse(request('https://app.soutushenqi.com/8/secret', {\\n        headers: {\\n            'User-Agent': 'com.example.administrator.searchpicturetool/4751665993768584Androidv3.8.4',\\n            'Content-Type': 'application/json; charset=UTF-8'\\n        },\\n        body: \\\"UBvexGqjdGA+GN1KzwX9jjYYcct9wSBM2L1sm4z3Mdb5OFKCehilG+TA48Y7QNHYsklACsi6rLAI8juXP35s2ioYCvM0s10ba8gW5NkEy7F7kjncMsDAxahnhHCmndky1/+YLiUFuBLTJEqTrKsZPNxuRvIyKr4gfoc9X9qBhd8nt8oqWHWxFrpsAj4DddtdDrUlqCtzXWTmzSugk45HZL0L70oHR+qa0RTQ2hugXtcgvvUZpDwbJY1NZl+a0R8g4cyfaKHvN2sFiGDma2XxIR6GMg+chYLYI6tpa7q4EYKuC0FwoQYwrwzhx1kciSSE52uRsWKfTvOoHVuDSv2rqwatBoEbTj0gvh417VN7sxmKMtnEsG3sETTjrFfCeTNC\\\",\\n        method: 'POST',\\n        withHeaders: true\\n    }));\\n    let vtag = data.headers['response-id'][0].substr(8);\\n    let date = decrypt(data.body, vtag);\\n    let secretKey = JSON.parse(date).data.secretKey\\n    putMyVar('secretKey', secretKey);\\n}\\n\\nconst Decode = (str) => {\\n    eval(getCryptoJS());\\n    let token_key = CryptoJS.enc.Utf8.parse(getMyVar('secretKey'));\\n    let decrypt = CryptoJS.AES.decrypt(str, token_key, {\\n        iv: token_key,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    });\\n    return decrypt.toString(CryptoJS.enc.Utf8);\\n}\\n\\nconst Encode = (str) => {\\n    eval(getCryptoJS())\\n    let token_key = CryptoJS.enc.Utf8.parse(getMyVar('secretKey'));\\n    let encrypt = CryptoJS.AES.encrypt(str, token_key, {\\n        iv: token_key,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    })\\n    return encrypt.toString()\\n};\\n\\nconst getConfigDe = (path, body) => {\\n    const host = 'http://wallpaper.soutushenqi.com' + path\\n    const data = JSON.parse(request(host, {\\n        headers: {\\n            'User-Agent': 'okhttp/3.12.3'\\n        },\\n        body: body,\\n        method: 'POST'\\n    })).data\\n    try {\\n        return JSON.parse(data)\\n    } catch (e) {\\n        return data\\n    }\\n}\\n\\nconst getConfigEn = (body) => {\\n    const host = 'https://app.soutushenqi.com/8/find?id=40cb9a'\\n    const data = Decode(request(host, {\\n        headers: {\\n            'User-Agent': 'com.example.administrator.searchpicturetool/4751666005557409Androidv3.8.4',\\n            'Content-Type': 'application/json; charset=UTF-8',\\n            'Accept-Id': 'pSTr+ICPBGWbNq3kQdLc6TCthW3vN1oT9beXSPL4eMpjKVxl8kGogyb0tls1mZpd'\\n        },\\n        body: Encode(JSON.stringify(body)),\\n        method: 'POST'\\n    }))\\n    return JSON.parse(data).data.results\\n}\\n\\nconst getBaseParse = () => {\\n    const tabs = ['手机壁纸', '动态壁纸', '电脑壁纸'];\\n    const d = []\\n    if (page == 1) {\\n        tabs.forEach(item => {\\n            d.push({\\n                title: item == getMyVar('分组', tabs[0]) ? Rich(Strong(Color(item))) : item,\\n                url: $('#noLoading#').lazyRule((item, empty) => {\\n                    putMyVar('分组', item);\\n                    refreshPage();\\n                    return empty;\\n                }, item, empty),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n        d.push({\\n            col_type: 'blank_block'\\n        })\\n    }\\n    switch (getMyVar('分组', tabs[0])) {\\n        case tabs[0]:\\n            getClassroomParse(d, tabs)\\n            break;\\n        case tabs[1]:\\n            key = 'yqbz_android_video_category_list_v2'\\n            getClassingParse(d, tabs, key)\\n            break;\\n        case tabs[2]:\\n            key = 'yqbz_android_computer_wallpaper_tabs'\\n            getClassingParse(d, tabs, key)\\n            break;\\n    }\\n    setResult(d)\\n}\\n\\nconst getClassroomParse = (d, tabs) => {\\n    body = {\\n        \\\"c\\\": \\\"CoolWraperTab\\\",\\n        \\\"data\\\": {\\n            \\\"limit\\\": 500,\\n            \\\"order\\\": \\\"order\\\"\\n        },\\n        \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n        \\\"client\\\": {\\n            \\\"caller\\\": \\\"Android\\\",\\n            \\\"ex\\\": {\\n                \\\"version\\\": \\\"10\\\",\\n                \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n            }\\n        },\\n        \\\"v\\\": \\\"v3.8.4\\\",\\n        \\\"timestamp\\\": getTime / 1000\\n    }\\n    iTag = getMyVar(getMyVar('分组', tabs[0]) + \\\":iTag\\\", \\\"\\\");\\n    if (iTag) {\\n        iTag = JSON.parse(iTag);\\n    } else {\\n        try {\\n            iTag = getConfigEn(body);\\n            iTag = iTag.filter(item => {\\n                if (item.tag) {\\n                    return item\\n                }\\n            })\\n            putMyVar(getMyVar('分组', tabs[0]) + \\\":iTag\\\", JSON.stringify(iTag));\\n        } catch (e) {\\n            iTag = [];\\n        }\\n    }\\n    if (page == 1) {\\n        iTag.forEach(item => {\\n            tag = item.tag\\n            name = item.tabName\\n            d.push({\\n                title: tag == getMyVar(getMyVar('分组', tabs[0]) + '分类', iTag[0].tag) ? Rich(Strong(Color(name))) : name,\\n                url: $('#noLoading#').lazyRule((tag, empty, tabs) => {\\n                    putMyVar(getMyVar('分组', tabs[0]) + '分类', tag);\\n                    refreshPage();\\n                    return empty;\\n                }, tag, empty, tabs),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n        d.push({\\n            col_type: 'blank_block'\\n        })\\n    }\\n    orders = ['最新', '最热'];\\n    if (page == 1) {\\n        orders.forEach(item => {\\n            d.push({\\n                title: item == getMyVar(getMyVar('分组', tabs[0]) + '排序', orders[0]) ? Rich(Strong(Color(item))) : item,\\n                url: $('#noLoading#').lazyRule((item, empty, tabs) => {\\n                    putMyVar(getMyVar('分组', tabs[0]) + '排序', item);\\n                    refreshPage();\\n                    return empty;\\n                }, item, empty, tabs),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n    }\\n    switch (getMyVar(getMyVar('分组', tabs[0]) + '排序', orders[0])) {\\n        case orders[0]:\\n            order = '-createdAt'\\n            break;\\n        case orders[1]:\\n            order = '-updatedAt'\\n            break;\\n    }\\n    tags = getMyVar(getMyVar('分组', tabs[0]) + '分类', iTag[0].tag)\\n    body = {\\n        \\\"c\\\": \\\"NewWallpaper\\\",\\n        \\\"data\\\": {\\n            \\\"where\\\": {\\n                \\\"tag\\\": tags == 'all' ? {\\n                    \\\"$exists\\\": false\\n                } : tags\\n            },\\n            \\\"limit\\\": 20,\\n            \\\"skip\\\": (page - 1) * 20,\\n            \\\"order\\\": order\\n        },\\n        \\\"appSign\\\": \\\"ea457acf45c5fd9fd3ec39443125f38f\\\\/1\\\",\\n        \\\"client\\\": {\\n            \\\"caller\\\": \\\"Android\\\",\\n            \\\"ex\\\": {\\n                \\\"version\\\": \\\"10\\\",\\n                \\\"package\\\": \\\"com.example.administrator.searchpicturetool\\\",\\n                \\\"uuid\\\": \\\"44771065297A002927B4E0268904FE16\\\"\\n            }\\n        },\\n        \\\"v\\\": \\\"v3.8.4\\\",\\n        \\\"timestamp\\\": getTime / 1000\\n    }\\n    getSearchParse(d)\\n    const data = getConfigEn(body)\\n    layoutParse(d, data)\\n}\\n\\nconst getClassingParse = (d, tabs, key) => {\\n    iTag = getMyVar(getMyVar('分组', tabs[0]) + \\\":iTag\\\", \\\"\\\");\\n    if (iTag) {\\n        iTag = JSON.parse(iTag);\\n    } else {\\n        try {\\n            sign = 'config_key=' + key + '&platform=0&product_id=16&time=' + getTime + '&version_code=475&key=d9fd3ec394'\\n            path = '/v1/config/queryConfig'\\n            body = 'config_key=' + key + '&product_id=16&version_code=475&sign=' + md5(sign).toUpperCase() + '&time=' + getTime + '&platform=0'\\n            iTag = getConfigDe(path, body);\\n            putMyVar(getMyVar('分组', tabs[0]) + \\\":iTag\\\", JSON.stringify(iTag));\\n        } catch (e) {\\n            iTag = [];\\n        }\\n    }\\n    if (page == 1) {\\n        iTag.forEach(item => {\\n            tags = item.request_params.size_type || item.category_name\\n            name = item.name || item.category_name\\n            d.push({\\n                title: tags == getMyVar(getMyVar('分组', tabs[0]) + '分类', '' + (iTag[0].request_params.size_type || iTag[0].category_name) + '') ? Rich(Strong(Color(name))) : name,\\n                url: $('#noLoading#').lazyRule((tags, empty, tabs) => {\\n                    putMyVar(getMyVar('分组', tabs[0]) + '分类', tags);\\n                    refreshPage();\\n                    return empty;\\n                }, tags, empty, tabs),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n        d.push({\\n            col_type: 'blank_block'\\n        })\\n    }\\n    orders = ['最新', '热门', '最热', '发现'];\\n    if (page == 1) {\\n        orders.forEach(item => {\\n            d.push({\\n                title: item == getMyVar(getMyVar('分组', tabs[0]) + '排序', orders[1]) ? Rich(Strong(Color(item))) : item,\\n                url: $('#noLoading#').lazyRule((item, empty, tabs) => {\\n                    putMyVar(getMyVar('分组', tabs[0]) + '排序', item);\\n                    refreshPage();\\n                    return empty;\\n                }, item, empty, tabs),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n    }\\n    switch (getMyVar(getMyVar('分组', tabs[0]) + '排序', orders[1])) {\\n        case orders[0]:\\n            order = 1\\n            break;\\n        case orders[1]:\\n            order = 0\\n            break;\\n        case orders[2]:\\n            order = 2\\n            break;\\n        case orders[3]:\\n            order = 3\\n            break;\\n    }\\n    tags = getMyVar(getMyVar('分组', tabs[0]) + '分类', '' + (iTag[0].request_params.size_type || iTag[0].category_name) + '')\\n    if (getMyVar('分组', tabs[0]) == tabs[1]) {\\n        switch (tags) {\\n            case '全部':\\n                sign = 'page=' + (page - 1) + '&platform=0&product_id=16&sort_type=' + order + '&time=' + getTime + '&type=0&version_code=475&key=d9fd3ec394'\\n                body = 'page=' + (page - 1) + '&type=0&sort_type=' + order + '&product_id=16&version_code=475&time=' + getTime + '&platform=0&sign=' + md5(sign).toUpperCase()\\n                break;\\n            case '高清':\\n                sign = 'is_vip=1&page=' + (page - 1) + '&platform=0&product_id=16&sort_type=' + order + '&time=' + getTime + '&type=0&version_code=475&key=d9fd3ec394'\\n                body = 'is_vip=1&page=' + (page - 1) + '&type=0&sort_type=' + order + '&product_id=16&version_code=475&time=' + getTime + '&platform=0&sign=' + md5(sign).toUpperCase()\\n                break;\\n            default:\\n                sign = 'page=' + (page - 1) + '&platform=0&product_id=16&sort_type=' + order + '&tag=' + tags + '&time=' + getTime + '&type=0&version_code=475&key=d9fd3ec394'\\n                body = 'tag=' + tags + '&page=' + (page - 1) + '&type=0&sort_type=' + order + '&product_id=16&version_code=475&time=' + getTime + '&platform=0&sign=' + md5(sign).toUpperCase()\\n                break;\\n        }\\n        path = '/api/v2/liveWp/list'\\n    } else {\\n        sign = 'page=' + (page - 1) + '&page_size=20&platform=0&product_id=16&size_type=' + tags + '&sort_type=' + order + '&time=' + getTime + '&version_code=475&key=d9fd3ec394'\\n        body = 'sort_type=' + order + '&size_type=' + tags + '&product_id=16&version_code=475&sign=' + md5(sign).toUpperCase() + '&page=' + (page - 1) + '&time=' + getTime + '&platform=0&page_size=20'\\n        path = '/v1/search/pcScreen'\\n    }\\n    getSearchParse(d)\\n    const data = getConfigDe(path, body)\\n    layoutParse(d, data)\\n}\\n\\nconst layoutParse = (d, data) => {\\n    if (data.length) {\\n        data.forEach(item => {\\n            itemUrl = 'pics://' + item.largeUrl\\n            if (item.videoUrl) {\\n                itemUrl = item.videoUrl\\n            }\\n            type = 'pic_2_card'\\n            if (getMyVar('分组') == '电脑壁纸') {\\n                type = 'pic_1_card'\\n            }\\n            d.push({\\n                title: item.content || item.title || item.detailInfo,\\n                desc: item.width + '×' + item.height,\\n                pic_url: item.largeUrl || item.coverUrl || item.largeImageUrl,\\n                url: itemUrl,\\n                col_type: type\\n            })\\n        })\\n    }\\n}\\n\\nconst getSearchParse = (d) => {\\n    if (page == 1) {\\n        d.push({\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            desc: \\\"搜你想要的......\\\",\\n            title: \\\"🔍\\\",\\n            col_type: \\\"input\\\",\\n            extra: {\\n                rules: $.toString(() => {\\n                    let data = [];\\n                    let searchMap = ['花瓣', '堆糖', '热门推荐', '手机壁纸', '全面屏', '2K壁纸', '搜狗', '微博', '百度', '夸克', '朋友圈背景', '头像', '表情包', '4K壁纸', '配图', '配图精选', '360', '必应', '免抠图', 'GIF精选', '平板壁纸', '免版权'];\\n                    searchMap.forEach((Map, i) => {\\n                        data.push({\\n                            \\\"title\\\": Map,\\n                            \\\"search_url\\\": \\\"hiker://empty?searchTerms=**&page=fypage&index=\\\" + i,\\n                            \\\"searchFind\\\": \\\"js: $.require('hiker://page/Search.view?rule='+MY_RULE._title);\\\"\\n                        });\\n                    })\\n                    return JSON.stringify(data);\\n                }),\\n                defaultValue: getMyVar(\\\"searchKey\\\", \\\"\\\"),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            }\\n        });\\n    }\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"极简壁纸·Q","author":"发粪涂墙","version":0,"type":"picture","url":"https://api.zzzmh.cn/bz/v3/getData?JsonBody={\"size\":96,\"current\":1,\"sort\":fyclass,\"category\":fyarea,\"resolution\":fyyear,\"color\":0,\"categoryId\":fysort};post","col_type":"card_pic_1","class_name":"推荐&最热&最新&随机","class_url":"0&1&2&3","area_name":"分类&精选&人物&二次元","area_url":"0&1&2&3","sort_name":"细分&动漫&设计&娱乐&综合&自然&景点&人物&机械&文化","year_name":"尺寸&1080P&2K&4K&8K","sort_url":"0&1&2&3&4&5&6&7&8&9","year_url":"0&1&2&3&4","find_rule":"js:\nvar d = []\n\nfunction _0x493a93(_0x196d60) {\n    for (var _0x20532d = window0.atob(_0x196d60), _0x38a29c = new Int8Array(_0x20532d.length), _0xc7251d = 0; _0xc7251d < _0x20532d.length; _0xc7251d++)\n        _0x38a29c[_0xc7251d] = _0x20532d.charCodeAt(_0xc7251d);\n    return _0x38a29c;\n}\n\nfunction _0x3423ca(_0x196d60) {\n    for (var _0x20532d = [-0x6f, 0x34, 0x5b, 0x41, -0x41, 0x74, 0x77, 0x6a, -0x79, -0x52, -0x5, 0x50, 0x33, 0x61, 0x44, -0x53, -0x70, -0x33, 0x17, -0x2e, -0x22, -0x72, -0x37, -0xb, -0x7f, 0x5a, 0x21, 0x16, -0x1f, 0x32, -0x11, 0x14, -0x2c, 0xf, -0x5e, -0x7b, 0x76, -0x17, -0x3d, 0x72, 0x47, -0x68, -0x7e, -0x75, -0x51, -0x36, -0x12, -0x6e, -0x4, -0x5f, -0x5b, 0x5e, -0x50, -0xe, 0x78, 0x69, 0x55, 0x68, -0x56, -0x6c, 0x43, 0x19, 0x65, 0x6c, 0x10, -0x69, 0x6f, -0xa, 0x75, -0x49, 0x4d, 0x59, -0x1d, -0x62, -0x44, 0x70, 0x6b, -0x1, 0x56, 0x79, 0x58, -0x65, -0x7c, 0x45, -0x1e, -0x8, -0x71, -0x4a, -0x76, 0x39, -0x19, 0xc, -0x73, -0x6a, 0x5f, 0x7f, 0x54, 0x7c, -0x66, -0x1c, 0x49, 0x2b, -0x3c, 0x1c, 0x2e, 0x73, 0x1e, 0x7a, -0x4b, 0x7d, -0x43, -0x4d, 0x3, -0x7, -0x35, -0xd, 0x35, 0x4e, -0x48, 0x1, 0xb, -0x47, -0x27, -0x4f, -0x3, 0x13, 0x29, 0x7e, -0x2b, -0x7d, -0x1b, 0x22, 0x3f, 0x8, 0x48, -0x23, -0x29, -0x3f, 0x3c, -0x18, 0x66, 0x2f, -0x77, -0x67, -0x16, 0x2d, 0x3b, 0x40, -0x60, 0x31, 0x53, -0x6b, -0x78, -0x39, -0x46, 0x0, -0x26, -0x54, -0x28, 0x18, 0xe, 0x30, 0x1d, 0x2c, -0x24, -0x2f, 0x38, -0x5c, 0x26, 0x25, 0x4, -0x32, 0x67, 0xa, -0x59, 0x37, 0x71, -0x1a, 0x6e, 0x36, 0x24, -0x14, -0x4e, -0xc, -0x74, 0x46, -0x25, 0x5, -0x3e, -0x4c, -0x30, -0x40, 0x4f, 0x64, 0x28, 0x6, -0x3a, -0x5a, -0x13, -0x9, 0x27, 0x5d, -0x63, 0x15, 0x7, 0x1a, -0x2, 0x1b, -0x2d, 0x51, 0x3a, -0x7a, 0x4c, -0x42, 0x2, 0x5c, -0x2a, 0x62, -0x10, 0x9, 0x3d, 0x3e, -0xf, 0x63, -0x15, 0x1f, -0x38, 0x57, 0x11, -0x34, -0x45, -0x21, -0x3b, -0x55, 0x42, 0x4a, 0x12, -0x5d, -0x80, -0x57, -0x20, 0x2a, 0x20, -0x58, 0x6d, 0x60, 0xd, -0x6, 0x4b, -0x64, -0x31, 0x23, -0x61, 0x52, -0x6d, 0x7b], _0x38a29c = 0x0, _0xc7251d = 0x0, _0x12ba5d = 0x0, _0x4894e5 = new Array(), _0x50a78b = 0x0; _0x50a78b < _0x196d60.length; _0x50a78b++) {\n        _0x38a29c = _0x38a29c + 0x1 & 0xff,\n            _0xc7251d = (0xff & _0x20532d[_0x38a29c]) + _0xc7251d & 0xff;\n        var _0x3423ca = _0x20532d[_0x38a29c];\n        _0x20532d[_0x38a29c] = _0x20532d[_0xc7251d],\n            _0x20532d[_0xc7251d] = _0x3423ca,\n            _0x12ba5d = (0xff & _0x20532d[_0x38a29c]) + (0xff & _0x20532d[_0xc7251d]) & 0xff,\n            _0x4894e5['push'](_0x196d60[_0x50a78b] ^ _0x20532d[_0x12ba5d]);\n    }\n    return _0x4894e5;\n}\n\nfunction _0x371892(_0x196d60) {\n    for (var _0x20532d, _0x38a29c, _0xc7251d = '', _0x12ba5d = 0x0; _0x12ba5d < _0x196d60['length'];)\n        _0x20532d = _0x196d60[_0x12ba5d],\n        _0x38a29c = 0x0,\n        _0x20532d >>> 0x7 === 0x0 ? (_0xc7251d += String['fromCharCode'](_0x196d60[_0x12ba5d]),\n            _0x12ba5d += 0x1) : 0xfc === (0xfc & _0x20532d) ? (_0x38a29c = (0x3 & _0x196d60[_0x12ba5d]) << 0x1e,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x1]) << 0x18,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x2]) << 0x12,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x3]) << 0xc,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x4]) << 0x6,\n            _0x38a29c |= 0x3f & _0x196d60[_0x12ba5d + 0x5],\n            _0xc7251d += String.fromCharCode(_0x38a29c),\n            _0x12ba5d += 0x6) : 0xf8 === (0xf8 & _0x20532d) ? (_0x38a29c = (0x7 & _0x196d60[_0x12ba5d]) << 0x18,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x1]) << 0x12,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x2]) << 0xc,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x3]) << 0x6,\n            _0x38a29c |= 0x3f & _0x196d60[_0x12ba5d + 0x4],\n            _0xc7251d += String.fromCharCode(_0x38a29c),\n            _0x12ba5d += 0x5) : 0xf0 === (0xf0 & _0x20532d) ? (_0x38a29c = (0xf & _0x196d60[_0x12ba5d]) << 0x12,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x1]) << 0xc,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x2]) << 0x6,\n            _0x38a29c |= 0x3f & _0x196d60[_0x12ba5d + 0x3],\n            _0xc7251d += String['fromCharCode'](_0x38a29c),\n            _0x12ba5d += 0x4) : 0xe0 === (0xe0 & _0x20532d) ? (_0x38a29c = (0x1f & _0x196d60[_0x12ba5d]) << 0xc,\n            _0x38a29c |= (0x3f & _0x196d60[_0x12ba5d + 0x1]) << 0x6,\n            _0x38a29c |= 0x3f & _0x196d60[_0x12ba5d + 0x2],\n            _0xc7251d += String['fromCharCode'](_0x38a29c),\n            _0x12ba5d += 0x3) : 0xc0 === (0xc0 & _0x20532d) ? (_0x38a29c = (0x3f & _0x196d60[_0x12ba5d]) << 0x6,\n            _0x38a29c |= 0x3f & _0x196d60[_0x12ba5d + 0x1],\n            _0xc7251d += String['fromCharCode'](_0x38a29c),\n            _0x12ba5d += 0x2) : (_0xc7251d += String['fromCharCode'](_0x196d60[_0x12ba5d]),\n            _0x12ba5d += 0x1);\n    return _0xc7251d;\n}\n\nfunction _0x3e5c87(_0x196d60) {\n    return _0x371892(_0x3423ca(_0x493a93(_0x196d60)));\n}\n\nfunction _0x1e81a2(_0x196d60, _0x20532d, _0x38a29c) {\n    Cookie = _0x196d60 + '=' + _0x20532d + \"; expires=\" + new Date(1000 * _0x38a29c).toGMTString();\n}\n\nfunction _0x585b60() {\n    var D = new Date();\n    D.setMonth(D.getMonth() + 1),\n        D.setDate(15),\n        D.setHours(0),\n        D.setMinutes(0),\n        D.setSeconds(0),\n        D.setMilliseconds(0);\n    var D1 = Math.ceil(D.getTime() / 1000);\n    return _0x1e81a2('number', D1, D1),\n        D1;\n}\n\nfunction _0x456460(_0x196d60) {\n    var _0x20532d = _0x585b60() + '',\n        _0x38a29c = md5(_0x20532d),\n        _0xc7251d = _0x196d60.substring(21, -1 == _0x196d60['lastIndexOf']('?') ? _0x196d60.length : _0x196d60['lastIndexOf']('?')),\n        _0x12ba5d = _0x20532d + '-' + _0x38a29c + '-0-' + md5(_0xc7251d + '-' + _0x20532d + '-' + _0x38a29c + '-0-TPV4hi7wIeM7DPv35457O8poVyUJRX0o');\n    return _0x196d60 + (_0x196d60.indexOf('?') < 0 ? '?' : '&') + 'auth_key=' + _0x12ba5d;\n}\n\nfunction _0x275a48(_0x196d60, _0x20532d, _0x38a29c) {\n    var _0xc7251d = '';\n    return 0 == _0x38a29c ? _0xc7251d = '/thumbs' : 1 == _0x38a29c ? _0xc7251d = '/fhd' : 2 == _0x38a29c && (_0xc7251d = '?response-content-disposition=attachment'),\n        _0x456460('https://cdn2.zzzmh.cn/wallpaper/origin/' + _0x196d60 + (1 == _0x20532d ? '.png' : '.jpg') + _0xc7251d);\n}\nvar html = _0x3e5c87(JSON.parse(getResCode()).result)\nvar list = JSON.parse(html).list\nlist.map(img => d.push({\n    title: img.h + 'x' + img.w,\n    img: _0x275a48(img.i, img.t, 0)+'@Referer='+MY_HOME,\n    desc: '0',\n    url: _0x275a48(img.i, img.t, 2)+'@Referer='+MY_HOME\n}))\n\n\nsetResult(d)","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bz.zzzmh.cn/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"js:\nvar json = JSON.parse(getResCode());\nlog(json);\r\nvar list = json.data;\nvar title = list.chapter_title;\nsetResult(title);","title":"漫客栈","author":"Moonquakes","version":0,"type":"cartoon","url":"https://comic.mkzcdn.com/search/filter/?audience=0&order=fysort&page_num=fypage&page_size=18&theme_id=fyclass;get;utf-8;{User-Agent@okhttp/3.11.0}","col_type":"movie_3","class_name":"全部&修真&霸总&恋爱&校园&冒险&搞笑&生活&热血&架空&后宫&玄幻&悬疑&恐怖&灵异&动作&科幻&战争&古风&穿越&竞技&励志&同人&真人","class_url":"0&2&1&3&4&5&6&7&8&9&10&12&13&14&15&16&17&18&19&20&21&23&24&26","area_name":"","area_url":"","sort_name":"推荐&最热&最新","year_name":"","sort_url":"3&1&2","year_url":"","find_rule":"js:\nvar d = [];\n\nvar html = JSON.parse(getResCode()).data.list;\nfor (var i in html) {\n    d.push({\n        title: html[i].title,\n        img: html[i].cover+'!cover-400-x',\n        desc:html[i].chapter_title.split(' ')[0],\n        url: 'https://comic.mkzcdn.com/comic/info/?comic_id=' + html[i].comic_id +\"#immersiveTheme#\",\n        col_type: 'movie_3'\n    })\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\n\nvar html = JSON.parse(getResCode()).data.list;\nfor (var i in html) {\n    d.push({\n        title: html[i].title,\n        img: html[i].cover+'!cover-400-x',\n        desc:html[i].chapter_title,\n        url: 'https://comic.mkzcdn.com/comic/info/?comic_id=' + html[i].comic_id +\"#immersiveTheme#\",\n        col_type: 'movie_3'\n    })\n}\nsetResult(d);","search_url":"https://comic.mkzcdn.com/search/keyword/?keyword=**&page_num=fypage&page_size=20","titleColor":"#ff673ab7","group":"⑦其它","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\n\nvar html = JSON.parse(getResCode()).data;\n    d.push({\n        title: html.chapter_title,\n        desc: html.content,\n        url: html.cover+'!cover-400-x',\n        pic: html.cover+'!cover-400-x',\n        col_type: 'movie_1_vertical_pic_blur'\n    })\nvar list = 'https://comic.mkzcdn.com/chapter/v1/?comic_id='+html.comic_id;\nvar listp = JSON.parse(request(list,{}));\nvar list = listp.data;\nfor (let x of list) {\nd.push ({\n    title: x.title,\n    url: 'https://comic.mkzcdn.com/chapter/content/v1/?chapter_id='+x.chapter_id+'&comic_id='+html.comic_id+'&format=1&quality=1&sign=7654646ad52298f233aef4080cd6d6e6&type=1&uid=47975599'+`@lazyRule=.js:var jsons = JSON.parse(fetch(input,{}));var list=jsons.data.page;var pics=[];for(var i in list){pics.push(list[i].image);}\"pics://\"+pics.join(\"&&\")`\n})};\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://z3.ax1x.com/2021/11/02/IFT1fg.png"},{"firstHeader":"class","last_chapter_rule":"","title":"知音漫客","author":"@LoyDgIk","version":2,"type":"cartoon","url":"http://getcomicinfo-globalapi.zymk.cn/app_api/v5/getsortlist_new/?type=fyAll&page=fypage","col_type":"movie_3","class_name":"热血&搞笑&玄幻&生活&恋爱&动作","class_url":"5&6&7&8&9&10","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nfunction getPicId(id) {\n    let k = \"0\";\n    let p = id + \"\";\n    if (p.length > 9) return \"\";\n    let o = (k.repeat(9 - p.length) + p).split(\"\");\n    let y = \"\";\n    o.forEach((l, i) => {\n        if (i !== 0 && i % 3 === 0) {\n            y += \"/\";\n        }\n        y += l;\n    });\n    return y;\n}\nlet d = [];\nlet json = JSON.parse(getResCode());\nfor (let item of json.data.page.comic_list) {\n    d.push({\n        title: item.comic_name,\n        url: 'http://getcomicinfo-globalapi.zymk.cn/app_api/v5/getcomicinfo/?comic_id=' + item.comic_id + \"#immersiveTheme#\",\n        desc: item.last_chapter.name,\n        pic_url: 'https://image.zymkcdn.com/file/cover/' + getPicId(item.comic_id) + '.jpg-300x400.webp'\n    });\n}\nsetResult(d);","searchFind":"js:\n\nfunction getPicId(id) {\n    let k = \"0\";\n    let p = id + \"\";\n    if (p.length > 9) return \"\";\n    let o = (k.repeat(9 - p.length) + p).split(\"\");\n    let y = \"\";\n    o.forEach((l, i) => {\n        if (i !== 0 && i % 3 === 0) {\n            y += \"/\";\n        }\n        y += l;\n    });\n    return y;\n}\nlet d = [];\nlet json = JSON.parse(getResCode());\nfor (let item of json.data.page.comic_list) {\n    d.push({\n        title: item.comic_name,\n        url: 'http://getcomicinfo-globalapi.zymk.cn/app_api/v5/getcomicinfo/?comic_id=' + item.comic_id + \"#immersiveTheme#\",\n        desc: item.last_chapter.name,\n        pic_url: 'https://image.zymkcdn.com/file/cover/' + getPicId(item.comic_id) + '.jpg-300x400.webp'\n    });\n}\nsetResult(d);","search_url":"http://getcomicinfo-globalapi.zymk.cn/app_api/v5/getsortlist_new/?key=**&page=fypage","titleColor":"","group":"⑦其它","detail_col_type":"text_1","detail_find_rule":"js:\nvar d = [],\n    b = [];\nvar json = JSON.parse(getResCode());\nMY_URL = MY_URL.split(\"#\")[0];\nfunction getPicId(id) {\n    let k = \"0\";\n    let p = id + \"\";\n    if (p.length > 9) return \"\";\n    let o = (k.repeat(9 - p.length) + p).split(\"\");\n    let y = \"\";\n    o.forEach((l, i) => {\n        if (i !== 0 && i % 3 === 0) {\n            y += \"/\";\n        }\n        y += l;\n    });\n    return y;\n}\nlet pic= 'https://image.zymkcdn.com/file/cover/' + getPicId(json.data.comic_id) + '.jpg-300x400.webp';\nd.push({\n    title: '最新：' + json.data.chapter_list[0].chapter_name + '\\t' + json.data.chapter_list[0].chapter_title,\n    desc: '简介：' + json.data.desc,\n    pic_url: pic,\n    url: pic,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    col_type: \"line\"\n});\n\nlet listb = json.data.chapter_list;\nlistb.reverse();\nlet doList = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var jsons = JSON.parse(fetch(input));\n    var page = input.split(\"#\")[1];\n    var pics = [];\n    for (var k = 1; k < jsons.data.chapter_list[page].end_var + 1; k++) {\n        pics.push(\"http://mhpic.zymkcdn.com/comic/\" + jsons.data.chapter_list[page].chapter_image.high.replace(\"$$\", k))\n    }\n    return \"pics://\" + pics.join(\"&&\");\n});\nlet downloadlazy = $.toString(() => {\n    const KS=0;\n    var jsons = JSON.parse(request(url));\n    var page = url.split(\"#\");\n    var pics = [];\n    for (var k = 1; k < jsons.data.chapter_list[page[1]].end_var + 1; k++) {\n        pics.push(\"http://mhpic.zymkcdn.com/comic/\" + jsons.data.chapter_list[page[1]].chapter_image.high.replace(\"$$\", k))\n    }\n    return pics;\n})\nfor (let i = 0; i < listb.length; i++) {\n    let item = listb[i];\n    b.push({\n        title: item.chapter_name + '\\t' + item.chapter_title,\n        url: MY_URL + '&chapter_id=' + item.chapter_id + '#' + (listb.length - i - 1) + lazy,\n        col_type: \"text_2\"\n    });\n    doList.push({\n        title: item.chapter_name + '\\t' + item.chapter_title,\n        url: MY_URL + '&chapter_id=' + item.chapter_id + '#' + (listb.length - i - 1) + \"#\" + i\n    });\n}\nd.push({\n    title: \"下载漫画\",\n    url: \"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\",\n    col_type: \"text_1\",\n    extra: {\n        chapterList: doList,\n        info:{\n            bookName: json.data.comic_name,\n            ruleName: MY_RULE.title,\n            bookTopPic: pic,\n            parseCode: downloadlazy\n        },\n        defaultView:\"1\"\n    }\n});\nd.push({\n    col_type: \"line\"\n});\nd.push.apply(d,b);\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\r\nvar id=getUrl().match(/mc(\\d+)/)[1];\r\nvar json=JSON.parse(post('https://manga.bilibili.com/twirp/comic.v1.Comic/ComicDetail', {body:{device:'pc', platform: 'web',comic_id:id}}));\r\nvar k=json.data.ep_list.length;\r\nvar ss=k+\".\"+json.data.ep_list[0].title;\nsetResult(ss);","title":"哔哩哔哩漫画","author":"dy2020","version":0,"type":"cartoon","url":"https://manga.bilibili.com/twirp/comic.v1.Comic/ClassPage?area_id=fyarea&is_finish=-1&order=fysort&page_size=18&is_free=fyyear&page_num=fypage&device=pc&platform=web&style_id=fyclass;POST","col_type":"movie_3","class_name":"全部&热血&古风&玄幻&奇幻&悬疑&都市&历史&武侠仙侠&游戏竞技&悬疑灵异&架空&青春&西幻&现代&正能量&科幻","class_url":"-1&999&997&1016&998&1023&1002&1096&1092&1088&1081&1063&1060&1054&1048&1028&1015","area_name":"全部&大陆&日本&韩国&其他","area_url":"-1&1&2&6&5","sort_name":"人气推荐&更新时间&追漫人数&上架时间","year_name":"全部&免费&付费&等就免费","sort_url":"0&1&2&3","year_url":"-1&1&2&3","find_rule":"js:\r\nvar d = [];\r\nvar json=JSON.parse(getResCode());\r\nfor(var i in json.data){\r\n\td.push({\r\n\t\ttitle: json.data[i].title,\r\n\t\tdesc: \"最新:\"+json.data[i].last_ord,\r\n\t\tpic_url: json.data[i].horizontal_cover,\r\n\t\turl: 'https://manga.bilibili.com/detail/mc'+json.data[i].season_id+\"#immersiveTheme#\",\r\n\t});\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\r\nvar json=JSON.parse(getResCode());\r\nfor(var i in json.data.list){\r\n\td.push({\r\n\t\ttitle: json.data.list[i].title.replace(/<\\/?em.{0,}?>/g,\"\"),\r\n\t\tdesc: (\"作者:\"+json.data.list[i].author_name).replace(/<\\/?em.{0,}?>/g,\"\"),\r\n\t\tpic_url: json.data.list[i].horizontal_cover,\r\n\t\turl:\"https://manga.bilibili.com/detail/mc\"+json.data.list[i].id+\"#immersiveTheme#\",\r\n\t\tcol_type: 'movie_3'\r\n\t});\r\n}\r\nsetResult(d);","search_url":"https://manga.bilibili.com/twirp/comic.v1.Comic/Search?key_word=**&page_num=1&page_size=15;POST","group":"⑦其它","detail_col_type":"flex_button","detail_find_rule":"js:\r\nvar d=[];\r\nvar id=getUrl().match(/mc(\\d+)/)[1];\r\nvar json=JSON.parse(post('https://manga.bilibili.com/twirp/comic.v1.Comic/ComicDetail', {body:{device:'pc', platform: 'web',comic_id:id}}));\r\nvar title=json.data.title;\r\nvar pic_url=json.data.horizontal_cover;\r\n\td.push({\r\n\t\ttitle: title+\"\\n\"+\"作者:\"+json.data.author_name+\"\\n\",\r\n \t\tdesc: \"简介:\"+json.data.classic_lines,\r\n \t\tpic_url: pic_url,\r\n\t\turl: getUrl(),\r\n\t\tcol_type: 'movie_1_vertical_pic_blur'\r\n\t});\r\nvar chapterList = [];\r\nvar k=json.data.ep_list.length;\r\nfor (var i=1; i<= k;i++) {\r\n\tchapterList.push({\r\n\t\ttitle: i+\".\"+json.data.ep_list[k-i].title+(json.data.ep_list[k-i].pay_mode ?  '‘‘’’<font color= \"#ff0000\">' + \"[付费章节]\" + '</font>': ''),\r\n\t\turl:json.data.ep_list[k-i].id,\r\n\t});\r\n}\r\nd.push({\r\n\ttitle: '‘‘’’<strong><font color= \"#098AC1\">' + \"下载漫画\" + '</front></strong>',\r\n\turl: \"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\",\r\n\tcol_type: \"scroll_button\",\r\n\textra: {\r\n\t\tchapterList: chapterList,\r\n\t\tinfo:{\r\n\t\t\tbookName: title,\r\n\t\t\truleName: MY_RULE.title,\r\n\t\t\tbookTopPic: pic_url,\r\n\t\t\tparseCode: $.toString(() => {var pics=[];var json = JSON.parse(bf([{url:\"https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex\", options:{headers:{},body:\"device=pc&platform=web&ep_id=\"+input,method:\"POST\"}}])[0]);var urls =[];for (var i in json.data.images){var item = json.data.images[i];var o=Math.floor(item.x* 0.85);o>1100&&(o=1100);urls[i] ={url:\"https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken\",options:{headers:{},body:\"device=pc&platform=web&urls=[\"+decodeURI(\"%22\")+item.path+\"@\"+o+\"w.jpg\"+decodeURI(\"%22\")+\"]\",method:\"POST\"}};};var data=bf(urls);for(var i in data){var jsondata=JSON.parse(data[i]); pics[i]=jsondata.data[0].url+\"?token=\"+jsondata.data[0].token;};for(var k in pics){pics[k]=pics[k]+\"@Referer=https://manga.hdslb.com/\"}return pics;})\r\n\t\t},\r\n\t\tdefaultView:\"1\"\r\n\t}\r\n});\r\nd.push({\r\n\ttitle: '‘‘’’<strong><font color= \"#098AC1\">' + \"本地书架\" + '</front></strong>',\r\n\turl: \"hiker://page/Main.view?rule=本地资源管理\",\r\n\tcol_type: \"scroll_button\",\r\n});\r\nfor (var i in chapterList) {\r\n\td.push({\r\n\t\ttitle: chapterList[i].title,\r\n\t\turl:chapterList[i].url+`@lazyRule=.js:var pics=[];var json = JSON.parse(bf([{url:\"https://manga.bilibili.com/twirp/comic.v1.Comic/GetImageIndex\", options:{headers:{},body:\"device=pc&platform=web&ep_id=\"+input,method:\"POST\"}}])[0]);var urls =[];for (var i in json.data.images){var item = json.data.images[i];var o=Math.floor(item.x* 0.85);o>1100&&(o=1100);urls[i] ={url:\"https://manga.bilibili.com/twirp/comic.v1.Comic/ImageToken\",options:{headers:{},body:\"device=pc&platform=web&urls=[\"+decodeURI(\"%22\")+item.path+\"@\"+o+\"w.jpg\"+decodeURI(\"%22\")+\"]\",method:\"POST\"}};};var data=bf(urls);for(var i in data){var jsondata=JSON.parse(data[i]); pics[i]=jsondata.data[0].url+\"?token=\"+jsondata.data[0].token;};\"pics://\"+pics.join(\"&&\")`\r\n\t});\r\n}\r\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"#FF00FF"},{"last_chapter_rule":"","title":"扫雷","author":"@LoyDgIk【不能放轻合集】","version":7,"type":"other","url":"hiker://empty#noRefresh#","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst Game = $.require(\"hiker://page/Game\");\nlet game = new Game;\nlet layout = [];\nlet mode = getMyVar(\"mode\", \"排雷\");\nlayout.push({\n    title: mode === \"排雷\" ? \"‘‘排雷’’\" : \"排雷\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        updateItem(\"排雷\", {\n            title: \"‘‘排雷’’\"\n        });\n        updateItem(\"插旗\", {\n            title: \"插旗\"\n        });\n        putMyVar(\"mode\", \"排雷\");\n        return \"hiker://empty\";\n    }),\n    col_type: \"text_3\",\n    extra: {\n        id: \"排雷\"\n    }\n});\nlayout.push({\n    title: mode === \"插旗\" ? \"‘‘插旗’’\" : \"插旗\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        updateItem(\"插旗\", {\n            title: \"‘‘插旗’’\"\n        });\n        updateItem(\"排雷\", {\n            title: \"排雷\"\n        });\n        putMyVar(\"mode\", \"插旗\");\n        return \"hiker://empty\";\n    }),\n    col_type: \"text_3\",\n    extra: {\n        id: \"插旗\"\n    }\n});\nlayout.push({\n    title: \"自定义\",\n    url: $(game.rowCount + \",\" + game.columnCount + \",\" + game.lanCount, \"格式(均不能为0):\\n排数,列数,雷数\").input(() => {\n        let arr = input.split(\",\");\n        if (arr.length !== 3 || arr.some(n => !Number(n))) {\n            return \"toast://格式错误\";\n        }\n        if (Number(arr[0]) * Number(arr[1]) <= Number(arr[2])) {\n            return \"toast://兄弟游戏不能这么玩，总格子数还没雷多\";\n        }\n        setItem(\"rowCount\", arr[0]);\n        setItem(\"columnCount\", arr[1]);\n        setItem(\"lanCount\", arr[2]);\n        refreshPage(false);\n        return \"toast://已创建新的游戏\";\n    }),\n    col_type: \"text_3\"\n});\nlayout.push({\n    title: \"⛳0/\" + game.lanCount + \"💣\",\n    url: $(\"#noLoading#\").lazyRule((lanCount) => {\n        let that = findItem(\"flag\").extra;\n        if (that.count !== lanCount) {\n            return \"toast://旗还没插完!\";\n        }\n        const Game = $.require(\"hiker://page/Game\");\n        let game = new Game(storage0.getMyVar(\"layData\", null));\n        game.fast();\n        return \"hiker://empty\";\n    }, game.lanCount),\n    col_type: \"text_center_1\",\n    extra: {\n        id: \"flag\",\n        count: 0,\n        lineVisible: false\n    }\n});\nlayout.push({\n    col_type: \"blank_block\",\n    extra: {\n        id: \"Game\"\n    }\n});\nsetResult(layout);\ngame.render().time();","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"Game \",\"path\":\"Game\",\"rule\":\"function rand(m, n) {\\n    if (!n) {\\n        n = m, m = 0;\\n    }\\n    return Math.ceil(Math.random() * (n - m + 1) + m - 1)\\n}\\nconst numberMap = [\\\"\\\", \\\"1️⃣\\\", \\\"2️⃣\\\", \\\"3️⃣\\\", \\\"4️⃣\\\", \\\"5️⃣\\\", \\\"6️⃣\\\", \\\"7️⃣\\\", \\\"8️⃣\\\", \\\"9️⃣\\\", \\\"🔟\\\"];\\nconst lanFh = \\\"💥\\\";\\nconst flagFh = \\\"⛳\\\";\\nconst notFh = \\\"⬛\\\";\\nconst blankFh = \\\"⬜️\\\";\\n\\n\\nfunction Game(layData) {\\n    this.bindID = \\\"Game\\\";\\n    this.clickMode = getMyVar(\\\"mode\\\", \\\"排雷\\\");\\n    this.isEnd = !!getMyVar(\\\"isEnd\\\", \\\"\\\");\\n    this.init(layData);\\n}\\n\\nObject.assign(Game.prototype, {\\n    rowCount: Number(getItem(\\\"rowCount\\\", \\\"10\\\")),\\n    columnCount: Number(getItem(\\\"columnCount\\\", \\\"9\\\")),\\n    lanCount: Number(getItem(\\\"lanCount\\\", \\\"14\\\")),\\n\\n    init(layData) {\\n        this.victoryCount = this.rowCount * this.columnCount - this.lanCount;\\n        if (layData) {\\n            this.layData = layData;\\n            return;\\n        }\\n        this.layData = layData = [];\\n        for (let r = 0; r < this.rowCount; r++) {\\n            let row = [];\\n            for (let c = 0; c < this.columnCount; c++) {\\n                row.push({\\n                    isLan: false,\\n                    isFlag: false,\\n                    isTurn: false,\\n                    id: r + \\\"-\\\" + c,\\n                    row: r,\\n                    col: c,\\n                    aLanCount: 0\\n                });\\n            }\\n            layData.push(row);\\n        }\\n        let clear = () => {\\n            clearMyVar(\\\"time\\\");\\n            clearMyVar(\\\"isEnd\\\");\\n        };\\n        addListener(\\\"onClose\\\", clear);\\n        addListener(\\\"onRefresh\\\", clear);\\n        this.setLan();\\n        //this.render();\\n        return this;\\n    },\\n    time(t) {\\n        if (t) {\\n            let s = Number(getMyVar(\\\"time\\\", \\\"0\\\"));\\n            clearMyVar(\\\"time\\\");\\n            let e = Date.now();\\n            return (e - s) / 1000;\\n        } else {\\n            putMyVar(\\\"time\\\", \\\"\\\" + Date.now());\\n        }\\n    },\\n    setLan() {\\n        let layData = this.layData;\\n        if (!layData || layData.length !== this.rowCount) throw new Error(\\\"游戏未初始化\\\");\\n        for (var index = 0; index < this.lanCount; index++) {\\n            while (true) {\\n                var row = parseInt(Math.random() * this.rowCount);\\n                var col = parseInt(Math.random() * this.columnCount);\\n                if (!layData[row][col].isLan) {\\n                    layData[row][col].isLan = true;\\n                    break;\\n                }\\n            }\\n        }\\n    },\\n    turn(r, c, noRefresh) {\\n        let item = this.layData[r][c];\\n        if (item.isFlag) {\\n            if (!noRefresh) {\\n                return toast(\\\"已标记\\\");\\n            }\\n        } else if (item.isLan) {\\n            updateItem(this.bindID + item.id, {\\n                title: lanFh\\n            });\\n            this.settlement(true);\\n            return true;\\n        } else if (!item.isTurn) {\\n            let around = this.getAround(r, c);\\n            let aLanCount = around.reduce((i, v) => i + v.isLan, 0);\\n            if (aLanCount === 0 && around.length > 0) {\\n                item.isTurn = true;\\n                /*updateItem(this.bindID + item.id, {\\n                    title: \\\"▢\\\"\\n                });*/\\n                around.forEach(v => this.turn(v.row, v.col, true));\\n                if (!noRefresh) {\\n                    this.render();\\n                }\\n            } else {\\n                item.aLanCount = aLanCount;\\n                item.isTurn = true;\\n                if (!noRefresh) {\\n                    updateItem(this.bindID + item.id, {\\n                        title: numberMap[aLanCount] || blankFh\\n                    });\\n                }\\n            }\\n        }\\n    },\\n    fast() {\\n        if (this.judgeEnd()) return;\\n        for (let row of this.layData) {\\n            for (let item of row) {\\n                if (!item.isFlag && !item.isTurn) {\\n                    if (this.turn(item.row, item.col)) return;\\n                }\\n            }\\n        }\\n        this.settlement();\\n    },\\n    judgeEnd() {\\n        if (this.isEnd) {\\n            confirm({\\n                title: \\\"游戏提示\\\",\\n                content: \\\"已经结束了，再来一局？\\\",\\n                confirm: () => {\\n                    clearMyVar(\\\"isEnd\\\");\\n                    refreshPage();\\n                },\\n                cancel: \\\"\\\"\\n            });\\n            return true;\\n        }\\n    },\\n    click(r, c) {\\n        if (this.judgeEnd()) return;\\n        if (this.clickMode === \\\"插旗\\\") {\\n            let item = this.layData[r][c];\\n            if (item.isTurn) return;\\n            let flag = findItem(\\\"flag\\\").extra;\\n            if (!item.isFlag && flag.count === this.lanCount) return toast(\\\"旗帜已用完\\\");\\n            item.isFlag = !item.isFlag;\\n            updateItem(this.bindID + item.id, {\\n                title: item.isFlag ? flagFh : notFh\\n            });\\n\\n            let count = item.isFlag ? flag.count + 1 : flag.count - 1;\\n            updateItem({\\n                title: \\\"⛳\\\" + count + \\\"/\\\" + this.lanCount + \\\"💣\\\",\\n                extra: {\\n                    count: count,\\n                    id: \\\"flag\\\",\\n                    lineVisible: false\\n                }\\n            });\\n        } else if (this.clickMode === \\\"排雷\\\") {\\n            this.turn(r, c);\\n        }\\n        if (!this.settlement()) {\\n            storage0.putMyVar(\\\"layData\\\", this.layData);\\n        }\\n    },\\n    getAround(r, c) {\\n        let rr = r ? r - 1 : 0,\\n            cc = c ? c - 1 : 0;\\n        let arr = [];\\n        for (let i = rr; i <= r + 1 && i > -1 && i < this.rowCount; i++) {\\n            for (let j = cc; j <= c + 1 && j > -1 && j < this.columnCount; j++) {\\n                let item = this.layData[i][j];\\n                if (item.isTurn || (r === i && c === j)) continue;\\n                arr.push(item);\\n            }\\n        }\\n        return arr;\\n    },\\n    settlement(isFail) {\\n        if (isFail) {\\n            putMyVar(\\\"isEnd\\\", \\\"true\\\");\\n            this.layData.forEach((row) => {\\n                row.forEach((item) => {\\n                    if (item.isLan) {\\n                        updateItem(this.bindID + item.id, {\\n                            title: lanFh,\\n                        });\\n                    }\\n                });\\n            });\\n            confirm({\\n                title: \\\"游戏提示\\\",\\n                content: \\\"你输啦！再来一局？\\\",\\n                confirm: () => {\\n                    clearMyVar(\\\"isEnd\\\");\\n                    refreshPage();\\n                },\\n                cancel: \\\"\\\"\\n            });\\n            return true;\\n        } else {\\n            let ti = this.layData.reduce((i, v) => i + v.reduce((i, v) => i + v.isTurn, 0), 0);\\n            if (ti === this.victoryCount) {\\n                putMyVar(\\\"isEnd\\\", \\\"true\\\");\\n                confirm({\\n                    title: \\\"游戏提示\\\",\\n                    content: \\\"🎉你赢啦！再来一局？\\\\n难度：\\\" + ((this.lanCount / (this.rowCount * this.columnCount))*100).toFixed(2) + \\\"%\\\\n时间：\\\" + this.time(true) + \\\"s\\\",\\n                    confirm: () => {\\n                        clearMyVar(\\\"isEnd\\\");\\n                        refreshPage();\\n                    },\\n                    cancel: \\\"\\\"\\n                });\\n                return true;\\n            }\\n        }\\n        return false;\\n    },\\n    render() {\\n        let layData = this.layData;\\n        let layout = [];\\n        let click = (r, c) => {\\n            const Game = $.require(\\\"hiker://page/Game\\\");\\n            let game = new Game(storage0.getMyVar(\\\"layData\\\", null));\\n            game.click(r, c);\\n            return \\\"hiker://empty\\\";\\n        };\\n        deleteItemByCls(this.bindID);\\n        layData.forEach((row, r) => {\\n            row.forEach((item, c) => {\\n                layout.push({\\n                    title: item.isTurn ? (numberMap[item.aLanCount] || blankFh) : (item.isFlag ? flagFh : (item.aLanCount || notFh)),\\n                    col_type: \\\"flex_button\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(click, r, c),\\n                    extra: {\\n                        id: this.bindID + item.id,\\n                        cls: this.bindID\\n                    }\\n                });\\n            });\\n            layout.push({\\n                col_type: \\\"line\\\",\\n                extra: {\\n                    cls: this.bindID\\n                }\\n            });\\n        });\\n        storage0.putMyVar(\\\"layData\\\", layData);\\n        addItemAfter(this.bindID, layout);\\n        return this;\\n    }\\n\\n});\\n$.exports = Game;\"}]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/19ab2d6a9793436f8b7a1b5dae345be5_1.png"},{"last_chapter_rule":"","title":"热榜","author":"小棉袄🌞","version":1,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://rebang.today/\";\nd.push({\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    title: \"\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString((my) => {\n            if (input.startsWith(my)) {\n                return false;\n            }\n            return $.toString((url) => {\n                fy_bridge_app.open(JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://empty\",\n                    findRule: \"js:\" + $$$.toString((u) => {\n                        let js = $.toString(() => {\n                            try {\n                                if (document.title && document.title.length) {\n                                    let r = $$$().lazyRule((t) => {\n                                        setPageTitle(t);\n                                    }, document.title);\n                                    fy_bridge_app.parseLazyRule(r);\n                                }\n                            } catch (e) {\n                                fy_bridge_app.log(e.toString());\n                            }\n                        });\n                        setResult([{\n                            url: u,\n                            col_type: \"x5_webview_single\",\n                            extra: {\n                                canBack: true,\n                                js: js\n                            },\n                            desc: \"100%&&float\"\n                        }]);\n                    }, url)\n                }))\n            }, input)\n        }, url)\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"我不是盐神","author":"小棉袄🌞","version":3,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet url = \"https://onehu.xyz/\"\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"果壳","author":"xxs","version":0,"type":"news","url":"https://m.guokr.com/beta/proxy/science_api/articles?retrieve_type=by_category&page=fypage&category_id=fyclass","col_type":"movie_1_vertical_pic","class_name":"科技&奇趣&生活&健康&人文&自然&数码&美食","class_url":"1&2&3&4&5&6&7&8","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(request(\"hiker://page/uses\")).rule);\nvar json = JSON.parse('{\"list\":'+getResCode()+'}');\n//setError(json.list.length);\nfor (var i = 0; i < json.list.length; i++) {\n    var j = json.list[i];\n    d.push({\n            title:  j.author.nickname,\npic_url:j.author.avatar.large,\ncol_type:'avatar',\nurl: \"https://m.guokr.com/article/\" + j.id+'/'\n});\n        d.push({\n            title:  j.title ,\npic_url:j.small_image,\n            desc: '<small>' +j.subject.name+'</small>\\n<small>' + j.summary + '““””</small>\\n&nbsp;&nbsp;<small><font color=\"red\">' + getDateDiff(j.date_created) + '</font></small>',\n      url: \"https://m.guokr.com/article/\" + j.id+'/',\n            \n        });\n    \n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"js:\nlet d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n});\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"方法\",\"path\":\"uses\",\"rule\":\"function getDateDiff(dateStr) {\\n        var publishTime = getDateTimeStamp(dateStr) / 1000,\\n        d_seconds,\\n        d_minutes,\\n        d_hours,\\n        d_days,\\n        timeNow = parseInt(new Date().getTime() / 1000),\\n        d,\\n \\n        date = new Date(publishTime * 1000),\\n        Y = date.getFullYear(),\\n        M = date.getMonth() + 1,\\n        D = date.getDate(),\\n        H = date.getHours(),\\n        m = date.getMinutes(),\\n        s = date.getSeconds();\\n        //小于10的在前面补0\\n        if (M < 10) {\\n                M = '0' + M;\\n        }\\n        if (D < 10) {\\n                D = '0' + D;\\n        }\\n        if (H < 10) {\\n                H = '0' + H;\\n        }\\n        if (m < 10) {\\n                m = '0' + m;\\n        }\\n        if (s < 10) {\\n                s = '0' + s;\\n        }\\n \\n        d = timeNow - publishTime;\\n        d_days = parseInt(d / 86400);\\n        d_hours = parseInt(d / 3600);\\n        d_minutes = parseInt(d / 60);\\n        d_seconds = parseInt(d);\\n \\n        if (d_days > 0 && d_days < 3) {\\n                return d_days + '天前';\\n        } else if (d_days <= 0 && d_hours > 0) {\\n                return d_hours + '小时前';\\n        } else if (d_hours <= 0 && d_minutes > 0) {\\n                return d_minutes + '分钟前';\\n        } else if (d_seconds < 60) {\\n                if (d_seconds <= 0) {\\n                        return '刚刚';\\n                } else {\\n                        return d_seconds + '秒前';\\n                }\\n        } else if (d_days >= 3 && d_days < 30) {\\n                return M + '-' + D + ' ' + H + ':' + m;\\n        } else if (d_days >= 30) {\\n                return Y + '-' + M + '-' + D + ' ' + H + ':' + m;\\n        }\\n}\\n \\nfunction getDateTimeStamp(dateStr) {\\n          // 如果时间格式为2020/07/09 21:43:19.000  需要去掉.000 不然ios和firefox会有问题\\nreturn Date.parse(dateStr.replace(/-/gi, \\\"/\\\"));\\n}　　\\n\\n//console.log(this.getDateDiff(\\\"2020-07-03 10:03:19.000\\\"));\"}]","proxy":"","icon":"https://1-im.guokr.com/AmRDJDzcF6DRheBSdzQOVIJiZ2NnSlU9VcSZyjORYDHkAAAAbAAAAFBO.png"},{"last_chapter_rule":"","title":"故宫博物馆","author":"","version":20,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'https://pano.dpm.org.cn/gugong_pano/mobile.html';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":"https://iconfont.tyrantg.com/api/illustrate.svg?svg_string=%3Csvg%20class%3D%22icon%22%20style%3D%22width%3A%201em%3Bheight%3A%201em%3Bvertical-align%3A%20middle%3Bfill%3A%20currentColor%3Boverflow%3A%20hidden%3B%22%20viewBox%3D%220%200%201024%201024%22%20version%3D%221.1%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M353.104%20370.758h317.794v105.932H353.104z%22%20fill%3D%22%23FFCF65%22%20%2F%3E%3Cpath%20d%3D%22M211.862%20723.862h600.276v194.206H211.862z%22%20fill%3D%22%23FF4B4B%22%20%2F%3E%3Cpath%20d%3D%22M264.828%20582.62h494.344v105.932H264.828z%22%20fill%3D%22%23FFCF65%22%20%2F%3E%3Cpath%20d%3D%22M264.828%20582.62h494.344v52.966H264.828zM353.104%20370.758h317.794v52.966H353.104z%22%20fill%3D%22%23FFB450%22%20%2F%3E%3Cpath%20d%3D%22M852.438%20724.19l-93.266-53.294H264.828l-93.266%2053.294c-8.256%204.718-4.908%2017.326%204.602%2017.326H847.84c9.508%200.002%2012.856-12.606%204.598-17.326zM512%20141.242c-55.266%20106.386-164.592%20154.386-209.522%20170.232-9.04%203.186-11.556%2014.762-4.778%2021.54l55.404%2055.402h317.794l55.404-55.404c6.778-6.778%204.262-18.352-4.778-21.54-44.932-15.844-154.258-63.844-209.524-170.23z%22%20fill%3D%22%23625D6B%22%20%2F%3E%3Cpath%20d%3D%22M512%20123.586m-35.31%200a35.31%2035.31%200%201%200%2070.62%200%2035.31%2035.31%200%201%200-70.62%200Z%22%20fill%3D%22%23FFCF65%22%20%2F%3E%3Cpath%20d%3D%22M670.896%20459.034H353.104l-142.452%2063.312c-7.924%203.522-9.852%2013.9-3.718%2020.032l57.896%2057.898h494.344l57.896-57.896c6.132-6.132%204.206-16.51-3.718-20.032l-142.456-63.314z%22%20fill%3D%22%23504B5A%22%20%2F%3E%3Cpath%20d%3D%22M819.714%20529.656c-1.066-3.058-3.05-5.836-6.364-7.31l-142.454-63.312H353.104l-142.452%2063.314c-3.314%201.472-5.298%204.25-6.364%207.31h615.428v-0.002z%22%20fill%3D%22%23625D6B%22%20%2F%3E%3Cpath%20d%3D%22M728.306%20317.794H295.694c-2.508%204.802-2.31%2010.9%202.006%2015.218l55.404%2055.402h317.794l55.404-55.404c4.316-4.314%204.512-10.414%202.004-15.216z%22%20fill%3D%22%23504B5A%22%20%2F%3E%3Cpath%20d%3D%22M211.862%20741.518h600.276v35.31H211.862zM564.966%20476.69h-105.932a17.658%2017.658%200%200%201-17.656-17.656v-123.586a17.658%2017.658%200%200%201%2017.656-17.656h105.932a17.658%2017.658%200%200%201%2017.656%2017.656v123.586a17.658%2017.658%200%200%201-17.656%2017.656z%22%20fill%3D%22%23FFB450%22%20%2F%3E%3Cpath%20d%3D%22M476.69%20353.104h70.62v88.276h-70.62z%22%20fill%3D%22%235091D7%22%20%2F%3E%3Cpath%20d%3D%22M529.656%20812.138h-35.31a17.658%2017.658%200%200%200-17.656%2017.656v88.276h70.62v-88.276a17.654%2017.654%200%200%200-17.654-17.656zM370.758%20812.138h-35.31a17.658%2017.658%200%200%200-17.656%2017.656v88.276h70.62v-88.276a17.654%2017.654%200%200%200-17.654-17.656zM688.552%20812.138h-35.31a17.658%2017.658%200%200%200-17.656%2017.656v88.276h70.62v-88.276a17.654%2017.654%200%200%200-17.654-17.656z%22%20fill%3D%22%23504B5A%22%20%2F%3E%3Cpath%20d%3D%22M441.38%20918.068H35.31v-52.966a17.658%2017.658%200%200%201%2017.656-17.656h370.758a17.658%2017.658%200%200%201%2017.656%2017.656v52.966zM988.69%20918.068H582.62v-52.966a17.658%2017.658%200%200%201%2017.656-17.656h370.758a17.658%2017.658%200%200%201%2017.656%2017.656v52.966z%22%20fill%3D%22%23EDEDEE%22%20%2F%3E%3Cpath%20d%3D%22M1006.344%20935.724H17.656a17.658%2017.658%200%200%201%200-35.312h988.69a17.658%2017.658%200%200%201%2017.656%2017.656%2017.656%2017.656%200%200%201-17.658%2017.656z%22%20fill%3D%22%23DCDBDE%22%20%2F%3E%3C%2Fsvg%3E"},{"last_chapter_rule":"","title":"中国医药信息","author":"1","version":0,"type":"news","url":"https://www.dayi.org.cn","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    pic: \"https://image.dayi.org.cn/public/banner2.jpg\",\n    url: \"https://image.dayi.org.cn/public/banner2.jpg\",\n    col_type: \"pic_1\"\n})\nd.push({\n    title: \"搜索\",             url:'\"hiker://page/erji?jkf=https://api2.dayi.org.cn/api/search2?pageNo=fypage&pageSize=10&keyword=\"+input',\n    desc: \"关键字输入区\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putMyVar('txt',input)\",\n        defaultValue: getMyVar('txt')\n    }\n})\n\n/*var js=request('https://www.dayi.org.cn/_nuxt/8571f41.js')\n\n\nvar match=js.match(/\"img\\/.*?\\.png\"/gm).map(x=>x.replace(/[\"]/gm,''))\n\nvar s=match.findIndex(x=>x.includes('videoIconChecked'))\n\n\nvar arr=match.slice(s)\n//log(arr)\n\nvar e=arr.findIndex(x=>x.includes('logo'))\narr=arr.slice(0,e)\nvar arrre=arr.map(x=>x.replace(/\\d\\..+/gm,''))\n\narrre=arrre.map((x)=>{\n    var a=x.includes('.')?x.split('.')[0]:x\n    return a.replace(/Checked/g,'').replace(/img\\//,'')\n})\n//log(arrre)\n\n*/\nvar icons=[\"img/videoIconChecked.c1cc6b3.png\",\"img/jibing5.28c8986.png\",\"img/yiyuan5.b1cffc6.png\",\"img/yisheng5.71363d0.png\",\"img/fangji5.c011296.png\",\"img/shuyu5.d95d28d.png\",\"img/baojianpin5.f0b3ad3.png\",\"img/yaofanshiliao5.849b777.png\",\"img/yaopin5.13747f0.png\",\"img/yiliaomeirong5.7a79d56.png\",\"img/yiliaoqixie5.c74640a.png\",\"img/zhengzhuan5.766de4b.png\",\"img/zhenjiuxuewei5.5bd9e32.png\",\"img/zhongyaocai5.8ebeb39.png\",\"img/cosmetics.b7d1848.png\"]\nvar arr=icons.map((x)=>{\n    var r=x.replace('5.','.').replace('img/','')\n    return r.split('.')[0].replace('Checked','')\n})\n//log(arr)\n\n\n\nif (!MY_RULE.class_url) {\n    var html = getResCode();\n    var list = pdfa(html, \"body&&.nabvar-box\");\n    for (let j of list) {\n        var img=pd(j, \"img&&src\")\n        //log(img)\n        var ig=img.replace(/.+\\/(.+)$/gm,'$1').split('.')[0].replace(/Unchecked/g,'')\n        var i=arr.findIndex(x=>x.includes(ig))\n        var pic= 'https://www.dayi.org.cn/_nuxt/'+icons[i]\n        //log(pic)\n        \n        \n        d.push({\n            title: pdfh(j, \"a&&Text\"),\n            pic: pic+'@User-Agent='+PC_UA+'@Referer=https://www.dayi.org.cn/',\n            url: 'hiker://page/erji?url=' + pd(j, \"a&&href\") + '##fypage',\n            col_type: \"icon_round_4\"\n        })\n    }\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级\",\"path\":\"erji\",\"rule\":\"js:\\nvar d = [];\\nfunction getIMG(url) {\\nif (/video_list/.test(url)) {\\nvar script = pdfh(fetchPC(url), \\\"body&&script,0&&Html\\\").replace('window.__NUXT__=', \\\"\\\").replace('data-v-98afda2c:0', 'go');\\n}else{\\n    var script = pdfh(fetchPC(url), \\\"body&&script,0&&Html\\\").replace('window.__NUXT__=', \\\"\\\").replace('data-v-7ca6f172:0', 'go');}\\n    var json = eval(script);\\n   var lists = json.fetch.go.list;\\n    var pics = [];\\n    for (let i of lists) {\\n        /http/.test(i.thumbnail) ? pics.push(i.thumbnail) : pics.push('https://www.dayi.org.cn' + i.thumbnail)\\n    }\\n    return pics;\\n}\\ntry{\\nif (/##/.test(MY_URL)) {\\n    var url = MY_URL.split('##')[0];\\n} else {\\n    var url = MY_URL.split('jkf=')[1];\\n}\\nif (MY_PAGE == 1) {\\n    pdfa(fetchPC(url), \\\".department-container&&a\\\").forEach(j => {\\n        d.push({\\n            title: pdfh(j, \\\"a&&Text\\\"),\\n            url: 'hiker://page/erji?url=' + pd(j, \\\"a&&href\\\") + '##fypage',\\n            col_type: \\\"scroll_button\\\"\\n        })\\n    })\\n}\\nif (/video_list/.test(MY_URL)) {\\n    if (url.lastIndexOf('video_list') == url.length - 10) {\\n        url = url + '/70/' + MY_PAGE;\\n    } else {\\n        url = url + '/' + MY_PAGE;\\n    }\\n    var lazy = `@lazyRule=js:var video=pd(fetchPC(input),\\\"video&&src\\\");video`;\\nvar pic=getIMG(url);\\n    pdfa(fetchPC(url), \\\".list-container&&.public-node\\\").forEach((j,i) => {\\n        d.push({\\n            title: pdfh(j, \\\".node-name&&Text\\\"),\\n            url: pd(j, \\\".node-name&&a&&href\\\") + lazy,\\npic:pic[i],\\n            desc: pdfh(j, \\\".node-main-content&&Text\\\"),\\n            col_type: \\\"movie_1\\\"\\n        })\\n    })\\n} else if (/list\\\\/\\\\d+/.test(MY_URL)) {\\n    url = url + '/' + MY_PAGE;\\n    var pics = getIMG(url);\\n    var list = pdfa(fetchPC(url), \\\".list-container&&.public-node\\\");\\n    for (var i = 0; i < list.length; i++) {\\n        d.push({\\n            title: pdfh(list[i], \\\".node-name&&Text\\\"),\\n            url: 'x5://' + pd(list[i], \\\".node-name&&a&&href\\\"),\\n            pic: pics[i] + '@Referer=',\\n            desc: pdfh(list[i], \\\".node-main-content||.intro&&Text\\\"),\\n            col_type: \\\"movie_1\\\"\\n        })\\n    }\\n}else if(/search/.test(MY_URL)){\\nvar html=JSON.parse(fetchPC(url)).list;\\nhtml.forEach(j=>{\\nif(!j.auditDoctor){\\nif(!j.thumbnail){\\nvar pic=\\\"https://proxy.pixivel.moe/c/540x540_70/img-master/img/2022/12/31/00/05/28/104058960_p0_master1200.jpg\\\";\\n}else if(/[}{\\\\[\\\\]]/.test(j.thumbnail)){\\nvar pic=j.thumbnail.match(/https.*\\\\.jpg/)[0];\\n}else{\\nvar pic=j.thumbnail;\\n}\\nif(/中成药/.test(j.secondTitle)){\\nvar url=\\\"https://www.dayi.org.cn/drug/\\\"\\n}else if(/疾病/.test(j.secondTitle)){\\nvar url=\\\"https://www.dayi.org.cn/disease/\\\"\\n}else if(/中药材/.test(j.secondTitle)){\\nvar url=\\\"https://www.dayi.org.cn/cmedical/\\\"\\n}else if(/方剂/.test(j.secondTitle)){\\nvar url=\\\"https://www.dayi.org.cn/prescriptions/\\\"\\n}\\nvar lazy = $().lazyRule((id,url)=>{\\nreturn url+id;\\n},j.id,url);\\nd.push({\\ntitle:'““””'+j.title,\\ndesc:j.secondTitle,\\npic:pic,\\nurl:lazy,\\ncol_type:\\\"movie_1\\\"\\n},{\\ntitle:j.introduction,\\ncol_type:\\\"long_text\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n})\\n}else{\\nif(/视频/.test(j.secondTitle)){\\nvar lazy = $().lazyRule((id)=>{var video=pd(fetchPC(\\\"https://www.dayi.org.cn/qa/\\\"+id),\\\"video&&src\\\");return video;},j.id);\\n}else{\\nvar lazy = $().lazyRule(()=>{return \\\"toast://😅好吧，我也不知道发生甚么事了\\\"});\\n}\\nd.push({\\ntitle:j.auditDoctor.clinicProfessional+':'+j.auditDoctor.name+'\\\\n'+j.auditDoctor.departmentName,\\ndesc:'““””'+j.title+'-'+j.secondTitle,\\npic:j.auditDoctor.thumbnail,\\nurl:lazy,\\ncol_type:\\\"movie_1\\\"\\n},{\\ntitle:j.introduction,\\ncol_type:\\\"long_text\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n},{\\ncol_type:\\\"line_blank\\\"\\n})}\\n})\\n}else {\\n    var html = pdfh(fetchPC(url), \\\".detail-container&&Html\\\")\\n    d.push({\\n        title: html,\\n        col_type: \\\"rich_text\\\"\\n    })\\n}}catch(e){toast(\\\"😅完蛋没得玩了\\\")}\\nsetResult(d);\"}]","proxy":"","icon":"https://m.dayi.org.cn/apple-touch-icon.png"},{"last_chapter_rule":"","title":"清华大学艺术博物馆","author":"","version":20,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar 网站 = 'www.artmuseum.tsinghua.edu.cn';\neval(JSON.parse(fetch('hiker://page/home')).rule)","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet rule = getParam(\\\"r\\\").split(\\\"##\\\")[0];\\nlet url = MY_URL.split(\\\"##\\\")[1];\\nlet ite = $.require(\\\"hiker://page/u\\\")(rule, getHome(url));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nlet js2 = $.require(\\\"hiker://page/x5ai\\\")(rule, url);\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js + \\\";\\\\n\\\" + js2,\\n        canBack: true,\\n        jsLoadingInject: true,\\n        floatVideo: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: url\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                let white = [\\n                    \\\"douyin\\\",\\n                    \\\"douban\\\",\\n                    \\\"ixigua.com\\\",\\n                    \\\"kuaishou\\\",\\n                    \\\"bilibili\\\",\\n                    \\\"weibo\\\",\\n                    \\\"weixin\\\",\\n                    \\\"baidu\\\",\\n                    \\\"zmk.\\\",\\n                    \\\"subhd\\\",\\n                    \\\"thunder\\\",\\n                    \\\"xinjuc\\\",\\n                    \\\"grab4k\\\",\\n                    \\\"/bt\\\",\\n                    \\\"jsr10\\\",\\n                    \\\"assrt\\\",\\n                    \\\"quark\\\"\\n                ];\\n                let inWhite = white.filter(it => url.includes(it)).length > 0;\\n                if (inWhite) {\\n                    //跳网页\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }))\\n                } else {\\n                    //AI解析\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: document.title,\\n                        url: \\\"hiker://page/p?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"&u=\\\" + fy_bridge_app.base64Encode(url),\\n                    }))\\n                }\\n            }, input, rule);\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        } else {\\n            let white = [\\n                \\\"url=\\\",\\n                \\\"fsou.com\\\",\\n                \\\"bing.\\\",                \\n            ];\\n            let inWhite = white.filter(it => input.includes(it)).length > 0;\\n            if (inWhite) {\\n                return false;\\n            }\\n            let reg = new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\");\\n            let r = decodeURIComponent(input);\\n            if (reg.test(r) || (input.startsWith(origin) && input.length - origin.length > 2)) {\\n                //有中文，应该是在搜索，跳新页面\\n                return $.toString((url, rule) => {\\n                    fy_bridge_app.open(JSON.stringify({\\n                        title: \\\"详情\\\",\\n                        url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                    }));\\n                }, input, rule);\\n            }\\n        }\\n    }, rule, origin);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet list = storage0.getItem(\\\"white\\\", []);\\nlet inWhite = list.includes(url);\\nlet d = [];\\nif (!inWhite) {\\n    let html = request(url);\\n    let web = getItem('web', '0') == \\\"1\\\";\\n    let rule = getParam(\\\"r\\\");\\n    let parse = $.require(\\\"hiker://page/parse\\\");\\n    d = parse(rule, web, url, html);\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    let ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\"), getHome(url));\\n    let js = $.toString(() => {\\n        try {\\n            if (document.title && document.title.length) {\\n                let r = $$$().lazyRule((t) => {\\n                    setPageTitle(t);\\n                }, document.title);\\n                fy_bridge_app.parseLazyRule(r);\\n            }\\n        } catch (e) {\\n            fy_bridge_app.log(e.toString());\\n        }\\n    });\\n    let js2 = $.require(\\\"hiker://page/x5ai\\\")(getParam(\\\"r\\\"), url);\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            js: js + \\\";\\\\n\\\" + js2,\\n            urlInterceptor: ite,\\n            canBack: true,\\n            floatVideo: true,\\n            jsLoadingInject: true,\\n            blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n        }\\n    });\\n    d.push({\\n        col_type: \\\"line\\\",\\n        extra: {\\n            id: url\\n        }\\n    });\\n    if (!inWhite) {\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    }\\n    setResult(d);\\n} else {\\n    setResult(d);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"二级parse\",\"path\":\"parse\",\"rule\":\"$.exports = function(rule, web, url, html) {\\n    let d = [];\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let _web = $.toString(() => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n            }\\n        }\\n    });\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (web) {\\n                var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };\\n            } else {\\n                var urlx = \\\"video://\\\" + it.href;\\n                var extrax = {\\n                    id: it.href\\n                };\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        return d;\\n    } else {\\n\\n        d.splice(0, 0, {\\n            title: \\\"🔗\\\" + url,\\n            url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n\\n\\n        //为线路加分割线\\n        let d2 = [];\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n        d2.push({\\n            title: \\\"匹配有误？点我不再匹配此页面\\\",\\n            url: $(\\\"#noLoading#\\\").lazyRule((url) => {\\n                confirm({\\n                    title: \\\"温馨提示\\\",\\n                    content: \\\"如果只是单次匹配失败，点击下方取消按钮刷新页面重新匹配，如果确认无法匹配，点击下方确定按钮加入白名单\\\",\\n                    cancel: \\\"refreshPage()\\\",\\n                    confirm: $.toString((url) => {\\n                        let list = storage0.getItem(\\\"white\\\", []);\\n                        list.push(url);\\n                        storage0.setItem(\\\"white\\\", list);\\n                        refreshPage();\\n                        return \\\"toast://已加入白名单\\\"\\n                    }, url)\\n                });\\n                return \\\"hiker://empty\\\"\\n            }, url),\\n            col_type: \\\"avatar\\\",\\n            img: \\\"hiker://images/account\\\"\\n        });\\n        return d2;\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"x5AI\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, white) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, white) => {\\n                        try {\\n                            let d = [];\\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            clearVar(\\\"html0\\\");\\n                            let web = false;\\n                            let white2 = [\\n                                \\\"fsou.com\\\",\\n                                \\\"bing.\\\",\\n                            ];\\n                            let inWhite = white2.filter(it => url.includes(it)).length > 0;                            \\n                            if (!inWhite && !white.includes(url)) {\\n                                let parse = $.require(\\\"hiker://page/parse?rule=\\\" + rule);\\n                                d = parse(rule, web, url, html);\\n                            }\\n                            if (!inWhite && d.length < 1) {\\n                                try {\\n                                    let arr = pdfa(html, \\\"body&&iframe\\\");\\n                                    if (arr.length > 0) {\\n                                        let src = pdfh(arr[0], \\\"iframe&&src\\\");\\n                                        log(\\\"获取到iframe：\\\" + src);\\n                                        if (!white.includes(src)) {\\n                                            if (src && src.startsWith(\\\"http\\\") && !src.match(/\\\\.mp4|\\\\.m3u8|\\\\.mp3|\\\\.flv|\\\\.mkv/)) {\\n                                                html = request(src);\\n                                                d = parse(rule, web, src, html);\\n                                            }\\n                                        }\\n                                    }\\n                                } catch (e) {\\n                                    log(\\\"尝试获取iframe失败\\\");\\n                                }\\n                            }\\n                            if (d.length > 0) {\\n                                d[0].url = $(\\\"#noLoading#\\\").lazyRule((anchorId) => {\\n                                    let desc = getVar(anchorId, \\\"0\\\");\\n                                    if (desc == \\\"0\\\") {\\n                                        refreshX5Desc(\\\"float&&screen-170\\\");\\n                                        putVar(anchorId, \\\"1\\\");\\n                                    } else {\\n                                        refreshX5Desc(\\\"float&&0\\\");\\n                                        putVar(anchorId, \\\"0\\\");\\n                                    }\\n                                    return \\\"hiker://empty\\\";\\n                                }, anchorId + \\\"x5\\\");\\n                                d[0].title = \\\"展开/收起\\\" + d[0].title;\\n                                putVar(anchorId + \\\"x5\\\", \\\"0\\\");\\n                                refreshX5Desc(\\\"float&&0\\\");\\n                                for (let it of d) {\\n                                    let extra = it.extra || {};\\n                                    extra.cls = \\\"x5ai\\\";\\n                                    it.extra = extra;\\n                                }\\n                                deleteItemByCls(\\\"x5ai\\\");\\n                                addItemAfter(anchorId, d);\\n                                toast(\\\"AI匹配成功\\\");\\n                            }\\n                            if (d.length > 0) {\\n                                log(\\\"parseLazyRuleAsync:\\\" + d.length);\\n                            }\\n                            return d.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, white), $$$.toString(() => {\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    }));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, storage0.getItem(\\\"white\\\", []));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"home\",\"rule\":\"var d = [];\\nlet url = 网站;\\nlet anchorId = url;\\nlet js = $.require(\\\"hiker://page/x5ai\\\")(MY_RULE.title, anchorId);\\nlet ite = $.require(\\\"hiker://page/u\\\")(MY_RULE.title, getHome(url));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        canBack: true,\\n        js: js,\\n        jsLoadingInject: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nd.push({\\n    col_type: \\\"line\\\",\\n    extra: {\\n        id: anchorId\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"淘宝","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://main.m.taobao.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"电报","author":"集","version":1,"type":"other","url":"hiker://empty##https://web.telegram.org/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=电报"},{"last_chapter_rule":"","title":"AI聚集","author":"","version":54,"type":"tool","url":"hiker://empty##fyclass##fypage","col_type":"movie_3","class_name":"首页&豌豆&茶杯狐&搜片&青麦&电影狗&茶杯虎&土拨鼠","class_url":"home&https://www.wandou.pro/&https://cupfox.app/&http://soupian.de/&https://www.qimaitv.com/&https://www.dianyinggou.com/yingku/&https://www.725998.com/yingku&https://www.tbsdy.com/m/index.html","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar myurl = MY_URL.split(\"##\")[1];\n\nlet anchorId = myurl;\nlet js = $.require(\"hiker://page/x5ai\")(MY_RULE.title, anchorId);\n\nfunction loadUrl(myurl, myrule, m) {\n    setResult([{\n        col_type: \"x5_webview_single\",\n        url: myurl,\n        desc: \"float&&top\",        \n        extra: {\n            floatVideo: true,\n            canBack: true,\n            urlInterceptor: $.toString((MY_RULE,moban) => {\n                if (input.startsWith('https://www.aliyundrive.com/s/')) {\n                    return $.toString((url) => {\n                        fba.open(JSON.stringify({\n                            rule: '云盘汇影',\n                            url: 'hiker://page/detail?rule=云盘汇影&url=' + url + '??fypage'\n                        }));\n                    }, input)\n                } else if (input.startsWith('https://www.qimaitv.com/index.php?s')) {\n                    var html = fetch(input)\n                    let arr = pdfa(html, \"body&&iframe\");\n                    if (arr.length > 0) {\n                        var url = pdfh(arr[0], 'iframe&&src')\n                        return $.toString((url, MY_RULE,moban) => {\n                            var u='hiker://empty?u=' + url;\n                            u=moban=='0'?u:u+'#immersiveTheme#';\n                            fba.open(JSON.stringify({\n                                rule: MY_RULE.title,\n                                title: '影片详情',\n                                group: MY_RULE.group,\n                                preRule: MY_RULE.preRule,\n                                pages: MY_RULE.pages,\n                                url: u,\n                                findRule: MY_RULE.detail_find_rule\n                            }));\n                        }, url, MY_RULE,moban)\n                    }\n                } else if (!input.startsWith(\"https://cupfox.app/\") && !input.startsWith(\"https://51souju.com/\") &&\n                    !input.startsWith(\"https://www.dianyinggou.com/\") && !input.startsWith(\"https://www.wandou.pro/\") && !input.startsWith(\"http://soupian.xyz/\") && !input.startsWith(\"https://www.qimaitv.com/\") && !\n                    input.startsWith(\"https://www.725998.com/\") && !input.includes(\"search\")) {\n                    return $.toString((url, MY_RULE,moban) => {\n                        var u='hiker://empty?u=' + url;\n                            u=moban=='0'?u:u+'#immersiveTheme#';\n                        fba.open(JSON.stringify({\n                            rule: MY_RULE.title,\n                            title: '影片详情',\n                            group: MY_RULE.group,\n                            preRule: MY_RULE.preRule,\n                            pages: MY_RULE.pages,\n                            url: u,\n                            findRule: MY_RULE.detail_find_rule\n                        }));\n                    }, input, MY_RULE,moban)\n                }\n            }, MY_RULE,getItem('ai','0')),\n            js: js,\n        }\n    }]);\n}\n\nif (myurl == 'home') {\n    refreshX5Desc('0')\n    $.require('hiker://page/pro')\n} else {\n    loadUrl(myurl, MY_RULE);\n}","searchFind":"js:\nvar d = [];\nlet key = MY_URL.split(\"##\")[1];\nd.push({\n    title: \"点我开始聚合搜索\" + key,\n    url: \"hiker://page/soup\",\n    extra: {\n        pageTitle: \"搜索\" + key,\n        key: key\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty##**","group":"⑦其它","detail_col_type":"movie_1","detail_find_rule":"js:\nlog(MY_URL)\n\neval(JSON.parse(request('hiker://page/p')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    updateItem('parset', {\\n        title: getItem('嗅探', '视频嗅探'),\\n    });\\n    clearMyVar('weburl');\\n    putMyVar('bm', '0');\\n    //back(false)\\n}));\\n\\n\\nvar BitTS=[];\\n\\n//putMyVar(\\\"muban\\\", {名称:'极客影视'})\\n\\n\\neval(JSON.parse(request('hiker://page/ztools')).rule)\\n\\nvar url = '';\\nif (getMyVar('weburl', '') == '') {\\n    //MY_URL = MY_URL.replace('#immersiveTheme#', '');\\n    MY_URL=MY_URL.includes('#')?MY_URL.split('#')[0]:MY_URL;\\n    var u=getParam(\\\"u\\\")\\n    if(u==undefined){\\n        u=MY_URL\\n    }\\n    log('u:'+u)\\n    url = getTurl(u);\\n    putMyVar('weburl', url);\\n\\n    var keys = MY_PARAMS;\\n    var from = keys.from ? keys.from : '';\\n    var dtitle = keys.pageTitle ? keys.pageTitle : '';\\n} else {\\n    url = getMyVar('weburl');\\n}\\nvar durl=url;\\nlog('二级页面:' + durl);\\n\\nif (getItem('ai', '0') == '1') {\\n    var lazy = $('').lazyRule(() => {\\n        try {\\n            var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n            var url = html.url\\n            if (html.encrypt == '1') {\\n                url = unescape(url);\\n            } else if (html.encrypt == '2') {\\n                url = unescape(base64Decode(url));\\n            }\\n            if (/m3u8|mp4/.test(url)) {\\n                return url\\n            } else {\\n                return 'video://' + input\\n            }\\n        } catch (e) {\\n            return 'video://' + input\\n        }\\n    })\\n\\n    try {\\n        MY_URL = 'hiker://empty##' + url\\n        require(config.自动匹配);\\n        自动二级(lazy);\\n        putMyVar('bm', '1')\\n    } catch {\\n        putMyVar('bm', '0')\\n    }\\n}\\n\\n\\nlog('模板:' + getMyVar('bm', '0'))\\n\\nif (getMyVar('bm', '0') == '0') {\\n\\n    var d = [];\\n    MY_URL = url\\n\\n    function getTitle(html, s) {\\n        var title = '';\\n        var titles = pdfa(html, s);\\n        //log(titles);\\n        if (titles.length == 0) {\\n            return title\\n        }\\n        for (let x of titles) {\\n            if (x.includes('<font')) {\\n                title = pdfh(x, 'h1--font&&Text');\\n            } else if (x.includes('<span')) {\\n                title = pdfh(x, 'h1--span&&Text');\\n            } else {\\n                title = pdfh(x, 'Text');\\n            }\\n            if (title != '') {\\n                break;\\n            } else {\\n                continue;\\n            }\\n        }\\n        return title\\n    }\\n\\n    var html = fetchPC(url)\\n    var title = getTitle(html, 'body&&h1');\\n    if (title == '') {\\n        title = getTitle(html, \\\"body&&h3[class*='title']\\\");\\n    }\\n    if (title == '') {\\n        title = getTitle(html, \\\"head&&title\\\");\\n    }\\n\\n    if (dtitle != \\\"\\\") {\\n        setPageTitle(dtitle)\\n    } else if (from == 'home' ||getPageTitle().includes('详情')) {\\n        if (title != '') {\\n            if (title.includes('-')) {\\n                title = title.split('-')[0].trim()\\n            }\\n            setPageTitle(title)\\n        }\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n\\n    let arr = alist.map(it => {\\n        return {\\n            //html: it,\\n            text: pdfh(it, \\\"a&&Text\\\"),\\n            title: pdfh(it, \\\"a&&title\\\"),\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n    //log(arr);\\n    let debug = false;\\n\\n    function clearText(it) {\\n        return it.replace(/第|集|章/g, \\\"\\\");\\n    }\\n\\n    function isMovie(it) {\\n        if (it == null || it.text == null) {\\n            return false;\\n        }\\n        if (nofile(it)) {\\n            return false;\\n        }\\n        let tit = it.title || \\\"\\\";\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.length > 8) {\\n            return false;\\n        }\\n        //排除\\n        let reg = /\\\\.|高清直播|写真推荐|影院|影视|蓝光电影|高清电影|第一季|第二季|第三季|第四季|第五季/;\\n        if (tit != \\\"\\\" && !tit.includes(it) || reg.test(it)) {\\n            return false;\\n        }\\n        return it.match(/原画|备用|蓝光|超清|高清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD|中字/)\\n    }\\n\\n    function notChapter(it) {\\n        if (it == null || it.text == null) {\\n            return true;\\n        }\\n        return it.text.match(/[0-9]\\\\.[0-9]分/);\\n    }\\n\\n    function isChapter(it, pre, next) {\\n        if (notChapter(it)) {\\n            //优先排除\\n            return false;\\n        }\\n        //判断是不是电影\\n        if (isMovie(it)) {\\n            return true;\\n        }\\n        return isChapter0(it, pre) || isChapter0(it, next);\\n    }\\n\\n    function getChapterNum(it) {\\n        if (it == null || it.text == null) {\\n            return -1;\\n        }\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\") {\\n            return -1;\\n        }\\n        it = clearText(it);\\n        let reg = /^[0-9]*$/;\\n        if (!reg.test(it)) {\\n            return -1;\\n        }\\n        it = parseInt(it);\\n        if (isNaN(it)) {\\n            return -1;\\n        }\\n        if (it > 1900 && it < 2100) {\\n            return -1;\\n        }\\n        return it;\\n    }\\n\\n    function isChapter0(it, brother) {\\n        /*if (debug) {\\n            log({\\n                it: it,\\n                brother: brother\\n            });\\n        }*/\\n        it = getChapterNum(it);\\n        //if (debug) log(it);\\n        if (it < 0) {\\n            return false;\\n        }\\n        brother = getChapterNum(brother);\\n        //if (debug) log(brother);\\n        if (brother < 0) {\\n            return false;\\n        }\\n        return it - brother < 2 && it - brother > -2;\\n    }\\n\\n    let tfpush = getItem('webpush', '0');\\n\\n    let _web = $.toString((tfpush) => {\\n        let urls = _getUrls();\\n        let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n        for (let k in urls) {\\n            if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                fy_bridge_app.log(urls[k]);\\n                //return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n                if (tfpush == '0') {\\n                    return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n                } else {\\n                    let play = fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\"));\\n                    return 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\\n                        \\\"name\\\": document.title,\\n                        \\\"url\\\": play\\n                    }));\\n                }\\n            }\\n        }\\n    }, tfpush);\\n\\n    function __web(mode) {\\n        return $.toString((tfpush) => {\\n            let urls = _getUrls();\\n            let reg = /\\\\.html|\\\\.css|\\\\.js/;\\n            for (let k in urls) {\\n                if (!reg.test(urls[k]) && urls[k].match(/\\\\.mp4|\\\\.m3u8/)) {\\n                    fy_bridge_app.log(urls[k]);\\n                    //return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n                    if (tfpush == '0') {\\n                        return fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\")) + \\\"#ignoreImg=true#\\\";\\n                    } else {\\n                        let play = fy_bridge_app.getHeaderUrl(urls[k].replace(/.*?url=/, \\\"\\\"));\\n                        return 'hiker://page/push?pushurl=' + encodeURIComponent(JSON.stringify({\\n                            \\\"name\\\": document.title,\\n                            \\\"url\\\": play\\n                        }));\\n                    }\\n                }\\n            }\\n        }, mode);\\n    }\\n\\n    $.extend({\\n        lweb: __web\\n    })\\n\\n    let web = getItem('web', '0');\\n    var pushtype = ['列表', '单集']\\n    var parsetype = ['Web嗅探:0', '视频嗅探:1', 'dm盒子:2']\\n    log('推送类型:' + pushtype[parseInt(tfpush)])\\n    log('嗅探类型:' + parsetype[parseInt(web)].split(':')[0])\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        let pre = i == 0 ? null : arr[i - 1];\\n        let next = i == (arr.length - 1) ? null : arr[i + 1];\\n        if (isChapter(it, pre, next)) {\\n            if (tfpush == '1') {\\n                /*var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                var extrax = {\\n                    jsLoadingInject: true,\\n                    id: it.href,\\n                    cls: 'plays',\\n                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                };*/\\n                var urlx = 'hiker://page/push?&pushurl=' + encodeURIComponent(JSON.stringify({\\n                    \\\"name\\\": getPageTitle(),\\n                    \\\"url\\\": it.text + '$' + it.href,\\n                    \\\"content\\\": MY_URL.title,\\n                }));\\n                var extrax = {\\n                    id: it.href,\\n                    cls: 'plays',\\n                };\\n            } else {\\n                if (web == '0') {\\n                    var urlx = \\\"webRule://\\\" + it.href + \\\"@\\\" + _web;\\n                    var extrax = {\\n                        jsLoadingInject: true,\\n                        id: it.href,\\n                        cls: 'plays',\\n                        blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                    };\\n                } else if (web == '1') {\\n                    var urlx = \\\"video://\\\" + it.href;\\n                    var extrax = {\\n                        id: it.href,\\n                        cls: 'plays',\\n                    };\\n                } else if (web == '2') {\\n                    lazy = $('').lazyRule(() => {\\n                        return $.require('hiker://page/lazyToX5?rule=dm盒子').videoX5();\\n                    })\\n                    var urlx = it.href + lazy\\n                    var extrax = {\\n                        id: it.href,\\n                        cls: 'plays',\\n                    };\\n                }\\n            }\\n            d.push({\\n                title: t,\\n                url: urlx,\\n                ph: t + \\\"$\\\" + it.href,\\n                col_type: \\\"text_3\\\",\\n                extra: extrax\\n            });\\n        }\\n    }\\n    if (d.length == 0) {\\n        //匹配失败\\n        d.push({\\n            title: \\\"\\\",\\n            url: url,\\n            col_type: \\\"x5_webview_single\\\",\\n            desc: \\\"float&&100%\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                floatVideo: true,\\n                canBack: true,\\n                blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n            }\\n        });\\n        toast(\\\"AI匹配失败，已使用X5加载\\\");\\n        log(\\\"当前页面地址: \\\" + url)\\n        setResult(d);\\n    } else {\\n        //为线路加分割线\\n        let d2 = [];\\n        let mtab = [];\\n\\n        d = unique(d)\\n        //log(BitTS)\\n        for (let i = 0; i < d.length; i++) {\\n            d2.push(d[i]);\\n            mtab.push(d[i].ph);\\n            if (i < d.length - 1) {\\n                let it = d[i];\\n                let t1 = parseInt(clearText(it.title));\\n                let next = d[i + 1];\\n                let t2 = parseInt(clearText(next.title));\\n                if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                    mtab.push('#');\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"line_blank\\\"\\n                    });\\n                    d2.push({\\n                        col_type: \\\"big_blank_block\\\"\\n                    });\\n                }\\n            }\\n        }\\n\\n        let playl = mtab.join('#').replace(/###/g, '$$$$$$');\\n\\n\\n        let from = [];\\n        for (var j = 0; j < playl.split('$$$').length; j++) {\\n            from.push(\\\"播放列表\\\" + [j + 1]);\\n        }\\n        let push = JSON.stringify({\\n            \\\"name\\\": getPageTitle(),\\n            \\\"from\\\": from.join('$$$'),\\n            \\\"url\\\": playl.replace(/\\\\&/g, '＆＆'),\\n            \\\"content\\\": MY_RULE.title\\n        });\\n        //log(push);\\n\\n        d2.unshift({\\n            title: \\\"推送本页=>TVBox\\\",\\n            url: $(push).lazyRule(() => {\\n                return 'hiker://page/push?pushurl=' + encodeURIComponent(input);\\n            }),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n\\n\\n        d2.unshift({\\n            title: (getItem('webpush', '0') == '1' ? '单推🟢' : '单推🔴'),\\n            url: `hiker://empty@lazyRule=.js:getItem('webpush','0')=='1'?setItem('webpush','0'):setItem('webpush','1');refreshPage();'toast://切换成功！'`,\\n\\n            col_type: 'scroll_button'\\n        });\\n\\n        d2.splice(2, 0, {\\n            title: parsetype[parseInt(web)].split(':')[0],\\n            col_type: 'scroll_button',\\n            url: $('#noLoading#').lazyRule((inf) => {\\n                if (getItem('webpush', '0') == '1') {\\n                    return 'toast://单推模式开启无法修改'\\n                }\\n                let all_cols = inf\\n                let col = storage0.getItem('嗅探', 'Web嗅探');\\n                let 嗅探 = all_cols.map((it) => {\\n                    return it.split(':')[0] === col ? '➡️' + it : it;\\n                });\\n                let tips = '请选择嗅探模式';\\n                return $(嗅探, 1, tips).select(() => {\\n                    input = input.replace(/➡️/g, '');\\n                    storage0.setItem('嗅探', input.split(':')[0]);\\n                    var mode = input.split(':')[1]\\n                    storage0.setItem('web', mode)\\n                    let oldIds = (findItemsByCls('plays')).map(it => it.extra.id);\\n                    oldIds.forEach(x => {\\n                        if (mode == '0') {\\n                            updateItem(x, {\\n                                url: \\\"webRule://\\\" + x + \\\"@\\\" + $.lweb('0'),\\n                                extra: {\\n                                    jsLoadingInject: true,\\n                                    id: x,\\n                                    cls: 'plays',\\n                                    blockRules: ['.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpeg', '.png', '.ico', '.svg']\\n                                }\\n                            });\\n                        }\\n                        if (mode == '1') {\\n                            updateItem(x, {\\n                                url: \\\"video://\\\" + x,\\n                                extra: {\\n                                    id: x,\\n                                    cls: 'plays',\\n                                }\\n                            });\\n                        }\\n                        if (mode == '2') {\\n                            updateItem(x, {\\n                                url: x + $('').lazyRule(() => {\\n                                    return $.require('hiker://page/lazyToX5?rule=dm盒子').videoX5();\\n                                }),\\n                                extra: {\\n                                    id: x,\\n                                    cls: 'plays',\\n                                }\\n                            });\\n                        }\\n                    })\\n                    updateItem('parse', {\\n                        title: storage0.getItem('嗅探', 'Web嗅探'),\\n                    });\\n\\n                    return 'toast://已切嗅探方式为:' + input;\\n                });\\n                return 'hiker://empty'\\n            }, parsetype),\\n            extra: {\\n                id: 'parse',\\n            }\\n        });\\n\\n        d2.unshift({\\n            title: '““””<small>⚡️' + durl + '</small>',\\n            col_type: 'text_center_1',\\n            url: durl,\\n        });\\n        if (getItem('ai', '0') == '1') {\\n\\n            d2.unshift({\\n                title: getPageTitle(),\\n                img: ' https://pic3.58cdn.com.cn/nowater/webim/big/n_v281d60bd127e84cd28807d51143eaa61f.gif@Referer=',\\n                col_type: 'movie_1_vertical_pic_blur'\\n            })\\n        }\\n        setResult(d2)\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\n\\nvar getRangeColors = function() {       \\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \\n}\\n\\nvar imgs = ['https://www.wandou.pro/favicon.ico', 'https://bj.bcebos.com/baidu-rmb-video-cover-1/74f13d0620f72b00a4e9b67f3dab96d1.png', 'https://bj.bcebos.com/baidu-rmb-video-cover-1/73b8cf6ae078303a572e76c79dd93e7a.png', 'https://www.qimaitv.com/favicon.ico', 'https://www.tbsdy.com/res/mrs/1/img/983635/2022/01/01/101.jpg']\\n\\n\\nif (MY_PAGE == 1) {\\n    ['豌豆', '茶杯狐', '搜片', '青麦', '土拨鼠'].map((x, i) => {\\n        var ix = storage0.getMyVar('index', 0);\\n        var title = ix == i ? `““””<font color=${getRangeColors()}>` + x + '</font>' : x;\\n        d.push({\\n            title: title,\\n            col_type: 'icon_5',\\n            img: imgs[i],\\n            url: $('').lazyRule((i) => {\\n                storage0.putMyVar('index', i)\\n                //clearMyVar('sou')\\n                clearMyVar('page')\\n                refreshPage()\\n                return 'toast://切换成功'\\n            }, i),\\n        })\\n    })\\n\\n    var web = getItem('web', '0')\\n    //log(web)\\n    var title = ''\\n    switch (web) {\\n        case '0':\\n            title = 'Web嗅探'\\n            break;\\n        case '1':\\n            title = '视频嗅探'\\n            break;\\n        case '2':\\n            title = 'dm盒子'\\n            break;\\n    }\\n    setItem('嗅探', title)\\n\\n    d.push({\\n        title: '推送',\\n        url: \\\"hiker://page/setting\\\",\\n        col_type: 'flex_button'\\n    }, {\\n        title: \\\"首页加载:\\\" + getItem('home', '关'),\\n        url: $('').lazyRule(() => {\\n            if (getItem('home', '关') == '关') {\\n                setItem('home', '开')\\n            } else {\\n                setItem('home', '关')\\n            }\\n            refreshPage()\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\"\\n    }, {\\n        title: title,\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            var web = getItem('web', '0')\\n            switch (web) {\\n                case '0':\\n                    setItem('web', '1')\\n                    break;\\n                case '1':\\n                    setItem('web', '2')\\n                    break;\\n                case '2':\\n                    setItem('web', '0')\\n                    break;\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: 'parset'\\n        }\\n    }, {\\n        title: '模板:' + (getItem('ai', '0') == '0' ? '关闭' : '开启'),\\n        col_type: \\\"flex_button\\\",\\n        url: $('').lazyRule(() => {\\n            if (getItem('ai', '0') == '0') {\\n                setItem('ai', '1')\\n            } else {\\n                setItem('ai', '0')\\n            }\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }),\\n        col_type: 'flex_button',\\n        extra: {\\n            id: 'aimb'\\n        }\\n    });\\n}\\n\\n\\n\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n                clearMyVar('page')\\n                clearMyVar(\\\"durl\\\")\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n    }));\\n\\n    addListener(\\\"onRefresh\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"durl\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\n\\nvar index = storage0.getMyVar('index', 0)\\n\\nswitch (parseInt(index)) {\\n    case 0:\\n        eval(JSON.parse(request('hiker://page/wandou')).rule)\\n        break;\\n    case 1:\\n        eval(JSON.parse(request('hiker://page/cupfox')).rule)\\n        break;\\n    case 2:\\n        eval(JSON.parse(request('hiker://page/soupian')).rule)\\n        break;\\n    case 3:\\n        eval(JSON.parse(request('hiker://page/qimaitv')).rule)\\n        break;\\n    case 4:\\n        eval(JSON.parse(request('hiker://page/tbsdy')).rule)\\n        break;\\n}\\n\\n\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n\\nfunction wrap1(text, s) {\\n    return text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n\\nfunction removehtml(text) {\\n    return text.replace(/<[^<]+?>/g, '')\\n}\\n\\nfunction merge(text, s, m) {\\n    if (m == 0) {\\n        text = '““””' + text + '-' + \\\"<strong><span style=\\\\\\\"color: #FF5733\\\\\\\">\\\" + s + \\\"</span></strong>\\\"\\n    } else {\\n        text = text + '-' + \\\"<strong><span style=\\\\\\\"color: #FF5733\\\\\\\">\\\" + s + \\\"</span></strong>\\\"\\n    }\\n    return text\\n}\\n$.exports = {\\n    wrap: wrap,\\n    wrap1: wrap1,\\n    rehtml: removehtml,\\n    merge: merge\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索页面\",\"path\":\"soup\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PARAMS.key && getMyVar(\\\"use\\\", \\\"\\\") == \\\"\\\") {\\n    putMyVar(\\\"sou\\\", MY_PARAMS.key);\\n    putMyVar(\\\"use\\\", \\\"1\\\");\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"use\\\");\\n    }));\\n}\\n$.require('hiker://page/pro')\"},{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nd.push({\\n    title: \\\"\\\",\\n    url: url,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"float&&100%\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        floatVideo: true,\\n        canBack: true,\\n        blockRules: [\\\".gif\\\", \\\"/ad/\\\", \\\"google\\\", \\\"/sh/to/\\\", \\\".GIF\\\"]\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"3.搜片\",\"path\":\"soupian\",\"rule\":\"js:\\nif (s != \\\"\\\") {\\n    var html = fetch(`http://soupian.de/search?key=${s}`)\\n    var list = pdfa(html, 'body&&.list-row-info')\\n    let {\\n        wrap1\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    for (let it of list) {\\n        //log(it)\\n        //let name = it.movie_name;\\n        let name = pdfh(it, 'h4&&Text');\\n        let web = pdfh(it, 'a&&title').replace(name,'').trim();\\n        \\n        let img = pdfh(it, 'img&&src');\\n        let url = pdfh(it, 'a&&href');\\n        var u = \\\"hiker://page/p?rule=\\\" + MY_RULE.title + \\\"&u=\\\" + base64Encode(url)\\n        u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n        d.push({\\n            title: wrap1(web+'-'+name, s),\\n            url: u,\\n            col_type: \\\"avatar\\\",\\n            //desc: \\\"““””<font color=#f13b66a>搜片</font>\\\",\\n            pic_url: img,\\n            extra: {\\n                id: url,\\n                inheritTitle: false,\\n                pageTitle:name,\\n                web:web,\\n            }\\n        });\\n    }\\n    setResult(d)\\n} else {\\n\\n}\\n\\nif (getItem('home', '关') == '开') {\\n    var html = request('http://soupian.de/', {})\\n\\n\\n    function setLists(item) {\\n        var title = item.split('-')[0]\\n        var t = item.split('-')[1]\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n        })\\n\\n        var list = pdfa(html, `body&&.list-header:matches(${t})+*&&a`)\\n\\n        list.map(x => {\\n            var name = pdfh(x, '.poster-item-title&&Text')\\n            d.push({\\n                title: name,\\n                img: pdfh(x, 'img&&src'),\\n                url: $('').lazyRule((n) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name)\\n            })\\n        })\\n    }\\n\\n    ['热门电影-电影', '热门电视剧-电视剧', '热门综艺-综艺', '热门动漫-动漫'].map(x => {\\n        setLists(x)\\n    })\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"1.豌豆\",\"path\":\"wandou\",\"rule\":\"js:\\nlet durl = getMyVar(\\\"durl\\\", \\\"\\\");\\nif (durl != '') {\\n\\n    durl = 'https://www.wandou.pro' + durl.replace('.html', '')\\n    let url = durl;\\n    let id = url;\\n    let html = fetch(url);\\n    var rule = MY_RULE.title\\n    var name=pdfh(html, '.movie-content&&p&&Text');\\n    d.push({\\n        title: name,\\n        img: pdfh(html, '.movie-img&&img&&src'),\\n        col_type: 'movie_1_vertical_pic',\\n        desc: pdfh(html, '.bottom&&p&&Text'),\\n        url: 'hiker://page/x5?u=' + base64Encode(url),\\n        extra: {\\n            id: url,\\n            inheritTitle: false\\n        }\\n    })\\n    //setResult(d);\\n\\n    let text = pdfh(html, \\\"body&&#__NEXT_DATA__&&Html\\\");\\n    //log(text);\\n    let erji = JSON.parse(text);\\n    //log(erji);\\n    let list = erji.props.pageProps.data.playData;\\n\\n    if (list && list.length > 0) {\\n        try {\\n            MY_URL = \\\"\\\";\\n            let {\\n                wrap\\n            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n            list = list.map(it => {\\n                let u = it.data_url;\\n                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                return {\\n                    title: it.site_name,\\n                    url: u,\\n                    col_type: \\\"avatar\\\",\\n                    img:it.site_icon,\\n                    extra: {\\n                        inheritTitle: false,\\n                        id: u,\\n                        from: 'home',\\n                        pageTitle:name,\\n                        web:it.site_name,\\n                    }\\n                }\\n            });\\n            if (MY_PAGE == 1) {\\n                //addItemAfter(id, list);\\n                d = d.concat(list);\\n            }\\n        } catch (e) {\\n            log(e.toString());\\n        }\\n    }\\n    setResult(d)\\n}\\n\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n\\n    json = \\\"https://api.xiamm.cc/movie/getsearchlist/keywords/\\\" + s + \\\"/page/1/rows/16.json\\\";\\n    data = JSON.parse(fetch(json)).data;\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    for (let it of data) {\\n        let name = it.movie_name;\\n        //log(name)\\n        let img = it.movie_img_url;\\n        let url = \\\"https://www.wandou.pro\\\" + it.movie_url.replace(\\\".html\\\", \\\"\\\");\\n        //log(url)\\n        d.push({\\n            title: wrap(name, s),\\n            url: $(url).lazyRule((rule, id, s,name) => {\\n                var cls = findItemsByCls(id);\\n                if (!!cls) {\\n                    deleteItemByCls(id)\\n                } else {\\n                    let url = input;\\n                    let id = url;\\n                    let html = fetch(url);\\n                    //log(html)\\n                    let text = pdfh(html, \\\"body&&#__NEXT_DATA__&&Html\\\");\\n                    //log(text);\\n                    let erji = JSON.parse(text);\\n                    //log(erji);\\n                    let list = erji.props.pageProps.data.playData;\\n            \\n                    if (list && list.length > 0) {\\n                        try {\\n                            MY_URL = \\\"\\\";\\n                            let {\\n                                wrap\\n                            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                            list = list.map(it => {\\n                                let u = it.data_url;\\n                                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                                return {\\n                                    title: it.site_name,\\n                                    url: u,\\n                                    col_type: \\\"avatar\\\",\\n                                    img:it.site_icon,\\n                                    extra: {\\n                                        inheritTitle: false,\\n                                        cls: id,\\n                                        from: 'home',\\n                                        pageTitle:name,\\n                                        web:it.site_name,\\n                                    }\\n                                }\\n                            });\\n                            addItemAfter(id, list);\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }\\n                }\\n                return \\\"hiker://empty\\\"\\n            }, MY_RULE.title, url, s,name),\\n            col_type: \\\"movie_1_left_pic\\\",\\n            desc: \\\"““””<font color=#f13b66a>豌豆</font>\\\",\\n            pic_url: img,\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        });\\n    }\\n    setResult(d)\\n} else {\\n\\n}\\n\\n\\nif (getItem('home', '关') == '开') {\\n    var html = fetch('https://www.wandou.pro/')\\n    let json = JSON.parse(pdfh(html, \\\"body&&#__NEXT_DATA__&&Html\\\"));\\n\\n\\n\\n    function setLists(item) {\\n        var title = item.split('#')[0]\\n        var key = item.split('#')[1]\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n        })\\n\\n        var list = json.props.pageProps.fallback[key].data\\n\\n        list.map(x => {\\n            var name = x.hot_name\\n            d.push({\\n                title: name,\\n                img: x.hot_img_url,\\n                desc: x.hot_rate,\\n                url: $('').lazyRule((n, u) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    putMyVar('durl', u)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name, x.hot_url)\\n            })\\n        })\\n    }\\n\\n    ['热门电影#index-getMovieList-movie', '热门剧集#index-getTvList-tv-28'].map(x => {\\n        setLists(x)\\n    })\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"2.茶杯狐\",\"path\":\"cupfox\",\"rule\":\"js:\\n\\neval(JSON.parse(request('hiker://page/xtools')).rule)\\n\\nif (s != \\\"\\\") {\\n    let {\\n        wrap1,\\n        rehtml\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    var json = search(s, storage0.getMyVar('page', MY_PAGE))\\n    if (JSON.stringify(json) != \\\"{}\\\") {\\n        var list = json.resources;\\n        list.map(it => {\\n            //log(it.website+'-'+rehtml(it.text))\\n            var u=\\\"hiker://page/p?u=\\\" + base64Encode(it.url)\\n            u=getItem('ai','0')=='0'?u:u+'#immersiveTheme#'\\n            d.push({\\n                title: wrap1(it.website+'-'+rehtml(it.text), s),\\n                url: u,\\n                col_type: \\\"avatar\\\",\\n                img:it.icon,\\n                desc: it.website,\\n                extra: {\\n                    inheritTitle: false,\\n                    pageTitle: rehtml(it.text),\\n                    web:it.website,\\n                }\\n            });\\n        })\\n    }\\n    \\n    setResult(d)\\n} else {\\n    \\n}\\n\\nif(getItem('home','关')=='开'){\\n\\nvar html = fetchPC('https://cupfox.app/', {})\\n\\n\\nfunction setLists(item) {\\n    var title = item.split('-')[0]\\n    var t = item.split('-')[1]\\n    d.push({\\n        title: title,\\n        col_type: 'avatar',\\n        img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n    })\\n\\n    var list = pdfa(html, `body&&#${t}&&.movie-list-item`)\\n\\n    list.map(x => {\\n        var name = pdfh(x, '.movie-title&&Text')\\n        d.push({\\n            title: name,\\n            img: pdfh(x, 'img&&src'),\\n            desc:pdfh(x,'.movie-rating&&Text'),\\n            url: $('').lazyRule((n) => {\\n                putMyVar(\\\"sou\\\", n)\\n                refreshPage()\\n                return 'hiker://empty'\\n            }, name)\\n        })\\n    })\\n}\\n\\n['热播新剧-tv', '热门电影-movie', '热播动漫-anime', '热播综艺-show', '热播纪录片-documentary'].map(x => {\\n    setLists(x)\\n})\\n\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数\",\"path\":\"xtools\",\"rule\":\"js:\\nfunction encodeUTF8(s) {\\nvar i, r = [], c, x;\\nfor (i = 0; i < s.length; i++)\\nif ((c = s.charCodeAt(i)) < 0x80) r.push(c);\\nelse if (c < 0x800) r.push(0xC0 + (c >> 6 & 0x1F), 0x80 + (c & 0x3F));\\nelse {\\nif ((x = c ^ 0xD800) >> 10 == 0) //对四字节UTF-16转换为Unicode\\nc = (x << 10) + (s.charCodeAt(++i) ^ 0xDC00) + 0x10000,\\nr.push(0xF0 + (c >> 18 & 0x7), 0x80 + (c >> 12 & 0x3F));\\nelse r.push(0xE0 + (c >> 12 & 0xF));\\nr.push(0x80 + (c >> 6 & 0x3F), 0x80 + (c & 0x3F));\\n};\\nreturn r;\\n}\\n\\nfunction sha1(s) {\\nvar data = new Uint8Array(encodeUTF8(s))\\nvar i, j, t;\\nvar l = ((data.length + 8) >>> 6 << 4) + 16, s = new Uint8Array(l << 2);\\ns.set(new Uint8Array(data.buffer)), s = new Uint32Array(s.buffer);\\nfor (t = new DataView(s.buffer), i = 0; i < l; i++)s[i] = t.getUint32(i << 2);\\ns[data.length >> 2] |= 0x80 << (24 - (data.length & 3) * 8);\\ns[l - 1] = data.length << 3;\\nvar w = [], f = [\\nfunction () { return m[1] & m[2] | ~m[1] & m[3]; },\\nfunction () { return m[1] ^ m[2] ^ m[3]; },\\nfunction () { return m[1] & m[2] | m[1] & m[3] | m[2] & m[3]; },\\nfunction () { return m[1] ^ m[2] ^ m[3]; }\\n], rol = function (n, c) { return n << c | n >>> (32 - c); },\\nk = [1518500249, 1859775393, -1894007588, -899497514],\\nm = [1732584193, -271733879, null, null, -1009589776];\\nm[2] = ~m[0], m[3] = ~m[1];\\nfor (i = 0; i < s.length; i += 16) {\\nvar o = m.slice(0);\\nfor (j = 0; j < 80; j++)\\nw[j] = j < 16 ? s[i + j] : rol(w[j - 3] ^ w[j - 8] ^ w[j - 14] ^ w[j - 16], 1),\\nt = rol(m[0], 5) + f[j / 20 | 0]() + m[4] + w[j] + k[j / 20 | 0] | 0,\\nm[1] = rol(m[1], 30), m.pop(), m.unshift(t);\\nfor (j = 0; j < 5; j++)m[j] = m[j] + o[j] | 0;\\n};\\nt = new DataView(new Uint32Array(m).buffer);\\nfor (var i = 0; i < 5; i++)m[i] = t.getUint32(i << 2);\\n\\nvar hex = Array.prototype.map.call(new Uint8Array(new Uint32Array(m).buffer), function (e) {\\nreturn (e < 16 ? \\\"0\\\" : \\\"\\\") + e.toString(16);\\n}).join(\\\"\\\");\\nreturn hex;\\n}\\n\\n\\nfunction search(s, page) {\\n    eval(getCryptoJS())\\n    if (page == 1) {\\n        p = 0\\n    } else if (page == 2) {\\n        p = 19\\n    } else {\\n        p = parseInt(page) + 20\\n    }\\n    storage0.putMyVar('page', p)\\n    ss = s + 'URBBRGROUN'\\n    tk = CryptoJS.SHA1(ss).toString();\\n    var j = fetch(`https://api.cupfox.app/api/v2/search/?text=${s}&type=0&from=${p}&size=20&douban_id=0&token=${tk}`)\\n    try {\\n        var json = JSON.parse(j)\\n    } catch {\\n        var json = {}\\n    }\\n    return json\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"4.青麦\",\"path\":\"qimaitv\",\"rule\":\"js:\\nif (s != \\\"\\\") {\\n    MY_URL = \\\"https://www.qimaitv.com/index.php?s=api&c=api&m=getplaylist&title=\\\" + s + \\\"&id=undefined&page=\\\"+MY_PAGE;\\n    let html = fetch(MY_URL, {\\n        headers: {\\n            \\\"X-Requested-With\\\": \\\"XMLHttpRequest\\\"\\n        }\\n    });\\n    var info = ''\\n    try {\\n        info = JSON.parse(html).info;\\n    } catch {\\n\\n    }\\n    if (info != null) {\\n        var data = pdfa(info, \\\"body&&a\\\");\\n    } else {\\n        data = []\\n        d.push({\\n            title: '““””<small>无结果</samll>',\\n            col_type: 'text_center_1'\\n        })\\n        setResult(d)\\n    }\\n\\n    let {\\n        wrap1\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    for (let it of data) {\\n        let t = pdfh(it, \\\"h4&&Text\\\");\\n        let web = pdfh(it, '.label-1&&Text');\\n        let img = pd(it, 'img&&src');\\n        if (!t) {\\n            continue;\\n        }\\n        var u = \\\"hiker://page/p?u=\\\" + base64Encode(pd(it, \\\"a&&href\\\"))\\n        u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n        d.push({\\n            title: wrap1(web + '-' + t, s),\\n            url: u,\\n            col_type: \\\"avatar\\\",\\n            img:img,\\n            //desc: (pdfa(it, \\\"a&&span\\\") || []).map(i => pdfh(i, \\\"Text\\\")).join(\\\" \\\"),\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pd(it, \\\"a&&href\\\"),\\n                inheritTitle: false,\\n                pageTitle: t,\\n                web:web,\\n            }\\n        });\\n    }\\n    setResult(d)\\n} else {\\n\\n}\\n\\nif (getItem('home', '关') == '开') {\\n    function setLists(item) {\\n        var title = item.split('-')[0]\\n        var t = item.split('-')[1]\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n        })\\n\\n        var html = JSON.parse(fetch(`http://www.qimaitv.com/index.php?s=movie&c=home&m=getmovie&type=%E7%83%AD%E9%97%A8&catid=${t}`)).html\\n\\n        var list = pdfa(html, `body&&.movie-list-item`)\\n\\n        list.map(x => {\\n            var name = pdfh(x, '.movie-title&&Text')\\n            d.push({\\n                title: name,\\n                img: pdfh(x, 'img&&src'),\\n                desc: pdfh(x, '.movie-rating&&Text'),\\n                url: $('').lazyRule((n) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name)\\n            })\\n        })\\n    }\\n\\n    ['热播电影-1', '热播电视剧-2', '热播动漫-3', '热播综艺-5'].map(x => {\\n        setLists(x)\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"函数2\",\"path\":\"ztools\",\"rule\":\"js:\\n//url解析\\nfunction urlParse(u) {\\n    var dict = {}\\n    dict.Source = u;\\n    let params = (url) => {\\n        let queryParams = {};\\n        let reg = /([^?=&]+)=([^?=&]+)/g;\\n        url.replace(reg, function() {\\n            queryParams[arguments[1]] = arguments[2];\\n        })\\n        return queryParams\\n    }\\n    var javaUrl = JavaImporter(java.net.URL);\\n    with(javaUrl) {\\n        var url = new URL(u);\\n        dict.Protocol = url.getProtocol();\\n        dict.Host = url.getHost();\\n        dict.Port = url.getPort();\\n        dict.File = url.getFile();\\n        dict.Path = url.getPath();\\n        dict.Ref = url.getRef();\\n        dict.Hosts = `${url.getProtocol()}://${url.getHost()}`\\n    }\\n    dict.Params = params(u);\\n    return dict;\\n}\\n\\nfunction stringInArray(str, arr) {\\n    return arr.some(item => str.includes(item));\\n}\\n\\n\\n//排除没路径\\nfunction nofile(u) {\\n    url = u.href\\n    if (stringInArray(url, ['magnet', 'ed2k'])) {\\n        BitTS.push(u);\\n        return true\\n    }\\n    var u = urlParse(url)\\n    if (u.File == '' || u.File == '/' || u.Ref != null) {\\n        return true\\n    }\\n}\\n//去重\\nfunction unique(arr) {\\n    const res = new Map()\\n    return arr.filter((a) => !res.has(a.url) && res.set(a.url, 1))\\n}\\n\\n//重定向可用链接\\nfunction getTurl(u) {\\n    //log(u)\\n    try {\\n        var url = base64Decode(u);\\n    } catch {\\n        var url = u\\n    }\\n    if (!url.includes('http') || url == undefined) {\\n        url = u\\n    }\\n    url = url.includes('?') ? url.split('?')[0] : url\\n    log('url:' + url)\\n    var file = urlParse(url).File\\n    var turl = ''\\n    let head = JSON.parse(request(url, {\\n        onlyHeaders: true\\n    }));\\n    //log(head)\\n    if (head.url != undefined || head.url != '') {\\n        var jurlp = urlParse(head.url)\\n        if (jurlp.File == '/' || jurlp.File == '') {\\n            turl = jurlp.Hosts + file\\n        } else {\\n            turl = head.url\\n        }\\n    } else {\\n        turl = url\\n    }\\n    //log('turl:'+turl)\\n    turl = turl.replace(/\\\\?from.+$/gm, '');\\n\\n    turl = videoRefDetail(turl)\\n    //log(turl)\\n    return turl\\n}\\n\\n\\nfunction videoRefDetail(url) {\\n    if (stringInArray(url, [\\\"6080\\\"])) {\\n        url = url.replace(\\\"vplay\\\", \\\"video\\\");\\n    } else if (stringInArray(url, [\\\"zhuiju\\\"])) {\\n        url = url.replace(\\\"vodplay\\\", \\\"voddetail\\\");\\n    } else if (stringInArray(url, [\\\"rrets\\\"])) {\\n        url = url.replace(\\\"play\\\", \\\"project\\\")\\n    }\\n    return url;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"推送\",\"path\":\"push\",\"rule\":\"js:\\nlet items = [];\\nlet pushin = decodeURIComponent(getParam(\\\"pushurl\\\"));\\nlet tvip = getItem('hikertvboxset', '');\\n\\nitems.push({\\n    title: '当前IP：' + tvip,\\n    url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入TVBox端的IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n    col_type: 'flex_button'\\n});\\nvar purl = pushin;\\n\\nif (pushin.includes('\\\\n') && !pushin.startsWith('{')) {\\n    purl = pushin.replace(\\\"\\\\n\\\", '$');\\n}\\nif (pushin.startsWith('http') && pushin.includes(';{')) {\\n    purl = JSON.stringify({\\n        \\\"name\\\": \\\"海阔直链推送\\\",\\n        \\\"url\\\": pushin\\n    })\\n}\\nif (pushin.startsWith('https://www.aliyundrive.com/s/')) {\\n    let reftoken = JSON.parse(fetch('hiker://files/rules/icy/icy-ali-token.json', {}))[0].refresh_token;\\n    purl = JSON.stringify({\\n        \\\"url\\\": pushin,\\n        \\\"refresh_token\\\": reftoken\\n    })\\n}\\nif (pushin.includes(':52020')) {\\n    if (pushin.includes('redirectPlayUrl')) {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔投屏直链\\\",\\n            \\\"url\\\": pushin\\n        })\\n    } else {\\n        purl = JSON.stringify({\\n            \\\"name\\\": \\\"海阔网页投屏\\\",\\n            \\\"url\\\": pushin\\n        })\\n    }\\n}\\n\\n//log('推送'+purl);\\nvar state = request(tvip + '/action', {\\n    headers: {\\n        'Content-Type': 'application/x-www-form-urlencoded',\\n        //'X-Requested-With': 'XMLHttpRequest',\\n        'Referer': tvip\\n    },\\n    timeout: 2000,\\n    body: 'do=push&url=' + purl.replace(/\\\\&/g, '＆＆'),\\n    method: 'POST'\\n});\\n//log(state);\\nif (state == 'ok') {\\n    //log(state);\\n    items.push({\\n        title: \\\"✅\\\" + state,\\n        url: $('').lazyRule(() => {\\n            back(false);\\n            return 'hiker://empty'\\n        }),\\n        col_type: \\\"text_center_1\\\"\\n    });\\n} else {\\n    //log(state);\\n    items.push({\\n        title: \\\"❎\\\" + state,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\"\\n    });\\n\\n}\\nsetResult(items);\"},{\"col_type\":\"movie_3\",\"name\":\"设置\",\"path\":\"setting\",\"rule\":\"js:\\nvar d=[]\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: '设置IP地址',\\n        url: \\\"input://\\\" + getItem('hikertvboxset', 'http://' + getIP() + ':9978') + \\\"////请输入tvbox推送IP地址，如http://\\\" + getIP() + \\\":9978.js:setItem('hikertvboxset',input);refreshPage()\\\",\\n        col_type: 'flex_button'\\n    });\\n    d.push({\\n        title: getItem('hikertvboxset', ''),\\n        url: 'hiker://empty',\\n        col_type: 'flex_button'\\n    });\\n}\\n\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"x5ai\",\"path\":\"x5ai\",\"rule\":\"$.exports = function(rule, anchorId) {\\n    return $.toString((rule, anchorId, moban) => {\\n        if (window.check0 == null) {\\n            function check0() {\\n                try {\\n                    let html = document.querySelector(\\\"html\\\").innerHTML;\\n                    fba.putVar(\\\"html0\\\", html);\\n                    fba.parseLazyRuleAsync($$$().lazyRule((rule, url, anchorId, moban) => {\\n                        try {\\n                            \\n                            let html = getVar(\\\"html0\\\", \\\"\\\");\\n                            let iurl = '';\\n                            clearVar(\\\"html0\\\");\\n                            //log('url:' + url)\\n                            if (url.startsWith('https://cupfox.app/page?url=')) {\\n                                var baseurl = url.replace(/.+url=(.*?)&.+/gm, '$1')\\n                                iurl = base64Decode(baseurl)\\n                                putVar('iframe', iurl)\\n                                log('iurl:' + iurl)\\n                            }\\n                            return iurl.length > 0 ? \\\"1\\\" : \\\"0\\\";\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }, rule, location.href, anchorId, moban), $$$.toString((rule,moban) => {\\n                        //fba.log(input)\\n                        //fba.log(rule)\\n                        if (\\\"0\\\" == input) {\\n                            window.checkc = window.checkc + 1;\\n                            /*if (window.checkc > 120) {\\n                                fba.log(\\\"执行超过30秒，无法解析\\\");\\n                            } else {*/\\n                            setTimeout(window.check0, 250);\\n                            //}\\n                        } else {\\n                            var url = fba.getVar('iframe');\\n                            fba.log('moban'+moban)\\n                            if(moban=='1'){\\n                                url=url+'#immersiveTheme#'\\n                            }      \\n                            fba.log(url)\\n                            fba.open(JSON.stringify({\\n                                rule: rule,\\n                                title: '影片详情',\\n                                group: \\\"\\\",\\n                                preRule: \\\"\\\",\\n                                pages: \\\"\\\",\\n                                url: 'hiker://page/p?rule=' + rule + '&u=' + url,\\n                                findRule: \\\"\\\"\\n                            }));\\n                            window.checkurl = location.href;\\n\\n                            function checku0() {\\n                                if (window.checkurl != location.href) {\\n                                    //hash发生了变化\\n                                    setTimeout(function() {\\n                                        window.checkc = 0;\\n                                        check0();\\n                                    }, 2000);\\n                                } else {\\n                                    setTimeout(checku0, 250);\\n                                }\\n                            }\\n                            checku0();\\n                        }\\n                    },rule,moban));\\n                } catch (e) {\\n                    fba.log(e.toString());\\n                    setTimeout(window.check0, 250);\\n                }\\n            }\\n            window.checkc = 0;\\n            window.check0 = check0;\\n            check0();\\n        }\\n    }, rule, anchorId, getItem('ai','0'));\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"5.茶杯虎\",\"path\":\"aiobb\",\"rule\":\"js:\\nlet durl = getMyVar(\\\"durl\\\", \\\"\\\");\\nif (durl != '') {\\n    MY_URL = durl\\n    log(durl)\\n\\n    let url = durl;\\n    let id = url;\\n    try {\\n        var html = fetch(url);\\n    } catch {\\n        var html = ''\\n    }\\n    var rule = MY_RULE.title\\n    if (html == undefined || html == '') {\\n        toast('无数据')\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"durl\\\");\\n        refreshPage()\\n    } else {\\n\\n        d.push({\\n            title: pdfh(html, 'h4&&Text'),\\n            img: pd(html, 'img&&src'),\\n            col_type: 'movie_1_vertical_pic',\\n            desc: pdfh(html, 'body&&.pubTime&&Text'),\\n            url: url,\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        })\\n\\n\\n        var list = pdfa(html, '.movieZy&&a')\\n        if (list && list.length > 0) {\\n            try {\\n                MY_URL = \\\"\\\";\\n                let {\\n                    merge\\n                } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                list = list.map(it => {\\n                    let u = pdfh(it, 'a&&href');\\n                    let t = pdfh(it, 'ul&&Text');\\n                    u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                    u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                    return {\\n                        title: merge(t, '详情', 1),\\n                        img: 'https://www.725998.com/static/search/images/onLine.png',\\n                        col_type: \\\"avatar\\\",\\n                        url: u,\\n                        extra: {\\n                            inheritTitle: false,\\n                            cls: url,\\n                            from: 'home',\\n                        }\\n                    }\\n                });\\n                d = d.concat(list)\\n            } catch (e) {\\n                log(e.toString());\\n            }\\n        } else {\\n            d.push({\\n                title: '无资源',\\n                col_type: 'text_center_1',\\n            })\\n        }\\n        setResult(d)\\n    }\\n\\n}\\ns = getMyVar(\\\"sou\\\", \\\"\\\");\\n\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n\\n    var url = post(`https://www.725998.com/keywords.html`, {\\n        body: {\\n            keywords: s,\\n            type: 'movie'\\n        },\\n        onlyHeaders: true\\n    })\\n    var json = JSON.parse(url)\\n    var turl = json.url.replace(/-\\\\d+.html$/, '-' + MY_PAGE + '.html')\\n    MY_URL = turl\\n    var html = fetch(turl)\\n\\n    var list = pdfa(html, 'body&&.each')\\n    //log(list)\\n\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of list) {\\n        let name = pdfh(it, 'a&&title');\\n        let img = pd(it, 'img&&src');\\n        if (img == \\\"\\\") {\\n            img = \\\"https://www.725998.com/static/search/images/preloadImg.png\\\";\\n        }\\n        let url = pd(it, 'a&&href');\\n        let desc = pdfa(it, 'body&&.info&&a').map(x => pdfh(x, 'a&&Text')).join(' ');\\n        let score = pdfh(it, '.noScore&&Text');\\n        d.push({\\n            title: wrap(name, s),\\n            col_type: 'movie_1_vertical_pic',\\n            img: img,\\n            desc: '评分:' + score + '\\\\n' + desc,\\n            url: $(url).lazyRule((rule, url, s) => {\\n                var cls = findItemsByCls(url);\\n                if (!!cls) {\\n                    deleteItemByCls(url)\\n                } else {\\n                    let url = input;\\n                    let id = url;\\n                    let html = fetch(url);\\n                    var list = pdfa(html, '.movieZy&&a')\\n                    if (list && list.length > 0) {\\n                        try {\\n                            MY_URL = \\\"\\\";\\n                            let {\\n                                merge\\n                            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                            list = list.map(it => {\\n                                let u = pdfh(it, 'a&&href');\\n                                let t = pdfh(it, 'ul&&Text');\\n                                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                                return {\\n                                    title: merge(t, '详情', 1),\\n                                    img: 'https://www.725998.com/static/search/images/onLine.png',\\n                                    col_type: \\\"avatar\\\",\\n                                    url: u,\\n                                    extra: {\\n                                        inheritTitle: false,\\n                                        cls: url,\\n                                        from: 'home',\\n                                    }\\n                                }\\n                            });\\n                            addItemAfter(id, list);\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    } else {\\n                        addItemAfter(id, {\\n                            title: '无资源',\\n                            col_type: 'text_center_1',\\n                            extra: {\\n                                cls: url,\\n                            }\\n                        })\\n                    }\\n                }\\n                return \\\"hiker://empty\\\"\\n            }, MY_RULE.title, url, s),\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        })\\n    }\\n\\n    setResult(d)\\n} else {\\n\\n}\\n\\nif (getItem('home', '关') == '开') {\\n    function setLists(item) {\\n        MY_URL = 'https://www.725998.com/';\\n        var title = item.split('#')[0]\\n        var key = item.split('#')[1]\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n        })\\n\\n        var html = fetch(`https://www.725998.com/yingku-list/${key}-0-0-0-0-0-0.html`)\\n        var list = pdfa(html, 'body&&.each')\\n\\n        list.map(x => {\\n            var name = pdfh(x, 'a&&title')\\n            let img = pd(x, 'img&&src');\\n            if (img == \\\"\\\") {\\n                img = \\\"https://www.725998.com/static/search/images/preloadImg.png\\\";\\n            }\\n            let url = pd(x, 'a&&href');\\n            let score = pdfh(x, '.noScore&&Text');\\n            d.push({\\n                title: name,\\n                img: img,\\n                desc: score,\\n                url: $('').lazyRule((n, u) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    putMyVar('durl', u)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name, url)\\n            })\\n        })\\n    }\\n\\n    ['电影#1', '电视剧#2', '动漫#3', '纪录片#4'].map(x => {\\n\\n        setLists(x)\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"6.电影狗\",\"path\":\"dydog\",\"rule\":\"js:\\nMY_URL='https://www.dianyinggou.com/soMore/all-all-all-all-';\\nlet durl = getMyVar(\\\"durl\\\", \\\"\\\");\\nif (durl != '') {\\n    //log(durl)\\n\\n    let url = durl;\\n    let id = url;\\n    let name = s;\\n    try {\\n        var html = fetch(url);\\n    } catch {\\n        var html = ''\\n    }\\n    var rule = MY_RULE.title\\n\\n    d.push({\\n        title: pdfh(html, 'h4&&Text'),\\n        img: pdfh(html, 'img&&data-url'),\\n        col_type: 'movie_1_vertical_pic',\\n        desc: pdfh(html, 'body&&.pubTime&&Text'),\\n        url: url,\\n        extra: {\\n            id: url,\\n            inheritTitle: false\\n        }\\n    })\\n\\n    let html = fetch(`https://www.dianyinggou.com/SpiderMovie/zy/${name}`, {\\n        headers: {\\n            'x-requested-with': 'XMLHttpRequest'\\n        }\\n    });\\n\\n    var list = pdfa(html, '.movieZy&&a')\\n    if (list && list.length > 0) {\\n        try {\\n            MY_URL = \\\"\\\";\\n            let {\\n                wrap1\\n            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n            \\n            list = list.map(it => {\\n                let u = pdfh(it, 'a&&href');\\n                let t = pdfh(it, 'li,0&&Text');\\n                let web=pdfh(it, 'li,1&&Text');\\n                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                return {\\n                    title: wrap1(web+'-'+t, s),\\n                    img: 'https://www.725998.com/static/search/images/onLine.png',\\n                    col_type: \\\"avatar\\\",\\n                    url: u,\\n                    extra: {\\n                        inheritTitle: false,\\n                        cls: url,\\n                        pageTitle:t,\\n                        web:web,\\n                    }\\n                }\\n            });\\n            d = d.concat(list)\\n        } catch (e) {\\n            log(e.toString());\\n        }\\n    }\\n    setResult(d)\\n}\\ns = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    var page = MY_PAGE;\\n    var url = `https://www.dianyinggou.com/so/${s}/page_${page}.html`;\\n    //log(url)\\n    var html = fetch(url)\\n\\n    var list = pdfa(html, 'body&&.each')\\n    //log(list)\\n\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of list) {\\n        let name = pdfh(it, 'a&&title');\\n        let img = pd(it, 'img&&data-url');\\n        if (img == \\\"\\\") {\\n            img = \\\"https://www.dianyinggou.com/View/images/blank_bg.png\\\";\\n        }\\n        let url = pd(it, 'a&&href');\\n        let desc = pdfa(it, 'body&&.info&&a').map(x => pdfh(x, 'a&&Text')).join(' ');\\n        let score = pdfh(it, '.noScore&&Text');\\n        d.push({\\n            title: wrap(name, s),\\n            col_type: 'movie_1_vertical_pic',\\n            img: img,\\n            desc: '评分:' + score + '\\\\n' + desc,\\n            url: $(url).lazyRule((rule, url, s, name) => {\\n                var cls = findItemsByCls(url);\\n                if (!!cls) {\\n                    deleteItemByCls(url)\\n                } else {\\n                    let url = input;\\n                    let id = url;\\n                    let html = fetch(`https://www.dianyinggou.com/SpiderMovie/zy/${name}`, {\\n                        headers: {\\n                            'x-requested-with': 'XMLHttpRequest'\\n                        }\\n                    });\\n                    var list = pdfa(html, '.movieZy&&a')\\n                    if (list && list.length > 0) {\\n                        try {\\n                            MY_URL = \\\"\\\";\\n                            let {\\n                                wrap1\\n                            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                            list = list.map(it => {\\n                                let u = pdfh(it, 'a&&href');\\n                                let t = pdfh(it, 'li,0&&Text');\\n                                let web=pdfh(it, 'li,1&&Text');\\n                                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                                return {\\n                                    title: wrap1(web+'-'+t, s),\\n                                    img: 'https://www.725998.com/static/search/images/onLine.png',\\n                                    col_type: \\\"avatar\\\",\\n                                    url: u,\\n                                    extra: {\\n                                        inheritTitle: false,\\n                                        cls: url,\\n                                        pageTitle:t,\\n                                        web:web,\\n                                    }\\n                                }\\n                            });\\n                            addItemAfter(id, list);\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }\\n                }\\n                return \\\"hiker://empty\\\"\\n            }, MY_RULE.title, url, s, name),\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        })\\n    }\\n\\n    setResult(d)\\n} else {\\n\\n}\\n\\nif (getItem('home', '关') == '开') {\\n    function setLists(item) {\\n        MY_URL = 'https://www.dianyinggou.com/';\\n        var title = item.split('#')[0]\\n        var key = item.split('#')[1]\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: 'https://lanmeiguojiang.com/tubiao/more/10.png'\\n        })\\n\\n        var date = new Date();\\n        var year = date.getFullYear();\\n        //var html = fetch(`https://www.dianyinggou.com/mRecommd/${key}`);\\n        var html = fetch(`https://www.dianyinggou.com/soMore/${key}-all-all-${year}-`);\\n\\n        var list = pdfa(html, 'body&&.each')\\n\\n        list.map(x => {\\n            var name = pdfh(x, 'a&&title')\\n            let img = pd(x, 'img&&data-url');\\n            if (img == \\\"\\\") {\\n                img = \\\"https://www.dianyinggou.com/View/images/blank_bg.png\\\";\\n            }\\n            let url = pd(x, 'a&&href');\\n            let score = pdfh(x, '.noScore&&Text');\\n            d.push({\\n                title: name,\\n                img: img,\\n                desc: score,\\n                url: $('').lazyRule((n, u) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    putMyVar('durl', u)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name, url)\\n            })\\n        })\\n    }\\n\\n    function home() {\\n        ['电影#movie', '电视剧#tv', '纪录片#doc', '动漫#comic'].map(x => {\\n\\n            setLists(x)\\n        })\\n    }\\n    \\n    var page=MY_PAGE;\\n    let true_url = getMyVar(MY_RULE.url, MY_URL);\\n    if(page>1){\\n        //log(true_url)\\n        true_url=true_url+`/page_${page}.html`\\n        //log(true_url)\\n    }\\n    var html =fetch(true_url).replace('%','');\\n    //log(html)\\n    \\n    \\n    const 分类颜色 = getRangeColors();\\n    const 大类定位 = '.w_100';\\n    const 拼接分类 = 'body&&.y_filterMenu:nth-child(n+2)>div>div';\\n    const 小类定位 = 'body&&a:not(:matches(分类))';\\n    const 分类标题 = 'a&&Text';\\n    const 分类链接 = 'a&&href';\\n\\n    //动态分类\\n    eval(JSON.parse(request('hiker://page/dtfl')).rule);\\n    \\n    var list = pdfa(html, 'body&&.each')\\n\\n    list.map(x => {\\n        var name = pdfh(x, 'a&&title')\\n        let img = pd(x, 'img&&src||img&&data-url');\\n        if (img == \\\"\\\") {\\n            img = \\\"https://www.dianyinggou.com/View/images/blank_bg.png\\\";\\n        }\\n        let url = pd(x, 'a&&href');\\n        let score = pdfh(x, '.noScore&&Text');\\n        d.push({\\n            title: name,\\n            img: img,\\n            desc: score,\\n            url: $('').lazyRule((n, u) => {\\n                putMyVar(\\\"sou\\\", n)\\n                putMyVar('durl', u)\\n                refreshPage()\\n                return 'hiker://empty'\\n            }, name, url)\\n        })\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dtfl\",\"rule\":\"js:\\nconst empty = \\\"hiker://empty\\\"\\n\\nif (typeof(拼接分类) != 'undefined' && 拼接分类 != '') {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} else {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getMyVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\n\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n    col_type:'big_blank_block'\\n    })\\n    d.push({\\n    col_type:'big_blank_block'\\n    })\\n    \\n    d.push({\\n        title: fold === '1' ? '““””<b>' + 'W'.fontcolor(\\\"#FF0000\\\") + '</b>' : '““””<b>' + 'M'.fontcolor(\\\"#1aad19\\\") + '</b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putMyVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putMyVar(MY_RULE.url, input)\\n\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"7.土拨鼠\",\"path\":\"tbsdy\",\"rule\":\"js:\\nlet durl = getMyVar(\\\"durl\\\", \\\"\\\");\\nif (durl != '') {\\n    MY_URL = durl;\\n    //log(durl)\\n\\n    let url = durl;\\n    let id = url;\\n    let name = s;\\n    try {\\n        var html = fetch(url, {\\n            headers: {\\n                \\\"User-Agent\\\": PC_UA\\n            }\\n        });\\n    } catch {\\n        var html = ''\\n    }\\n\\n    var rule = MY_RULE.title\\n    let desc = pdfh(html, '.video_plot_info_content&&Text');\\n    let score = pdfh(html, '.video_point&&Text');\\n\\n    d.push({\\n        title: pdfh(html, '.video_info_title_text&&Text'),\\n        img: pdfh(html, '.video_cover_img_box&&img&&src'),\\n        col_type: 'movie_1_vertical_pic',\\n        desc: '评分:' + score + '\\\\n主演:' + desc,\\n        url: url,\\n        extra: {\\n            id: url,\\n            inheritTitle: false,\\n        }\\n    })\\n\\n\\n    var list = pdfa(html, 'body&&.video_download_link_item')\\n    if (list && list.length > 0) {\\n        try {\\n            let {\\n                wrap1\\n            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n\\n            list = list.map(it => {\\n                let u = pdfh(it, 'a&&href');\\n                let t = pdfh(it, '.video_download_link_name_text&&Text');\\n                let web = pdfh(it, '.resource_website_name&&Text');\\n                let img = pd(it, '.video_labels&&img&&src');\\n\\n                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                return {\\n                    title: wrap1(web + '-' + t, s),\\n                    img: img,\\n                    col_type: \\\"avatar\\\",\\n                    url: u,\\n                    extra: {\\n                        inheritTitle: false,\\n                        cls: url,\\n                        pageTitle: t,\\n                        web: web,\\n                    }\\n                }\\n            });\\n            d = d.concat(list)\\n        } catch (e) {\\n            log(e.toString());\\n        }\\n    }\\n    setResult(d)\\n}\\ns = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    var page = MY_PAGE;\\n    MY_URL = `https://www.tbsdy.com/search.html?keyword=${s}&paged=${page}&category=`;\\n    //log(MY_URL)\\n    let html = fetch(MY_URL, {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        }\\n    });\\n\\n    var list = pdfa(html, 'body&&.search_result_item')\\n\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n\\n    for (let it of list) {\\n        let name = pdfh(it, '.search_result_title&&Text');\\n        let img = pd(it, 'img&&src');\\n        if (img == \\\"\\\") {\\n            img = \\\"\\\";\\n        }\\n        let url = pd(it, 'a&&href');\\n        let desc = pdfa(it, 'body&&.search_result_item&&.search_result_sub_info_line&&.video_actor').map(x => pdfh(x, 'span&&Text')).join(' ');\\n        let score = pdfh(it, '.search_video_img_point&&Text');\\n        d.push({\\n            title: wrap(name, s),\\n            col_type: 'movie_1_vertical_pic',\\n            img: img,\\n            desc: '评分:' + score + '\\\\n主演:' + desc,\\n            url: $(url).lazyRule((rule, url, s, name) => {\\n\\n                var cls = findItemsByCls(url);\\n                if (!!cls) {\\n                    deleteItemByCls(url)\\n                } else {\\n                    let url = input;\\n                    let id = url;\\n                    let html = fetch(url, {\\n                        headers: {\\n                            \\\"User-Agent\\\": PC_UA\\n                        }\\n                    });\\n\\n                    var list = pdfa(html, 'body&&.video_download_link_item')\\n                    if (list && list.length > 0) {\\n                        try {\\n                            MY_URL = url;\\n                            let {\\n                                wrap1\\n                            } = $.require(\\\"hiker://page/tool?rule=\\\" + rule);\\n                            list = list.map(it => {\\n                                let u = pdfh(it, 'a&&href');\\n                                let t = pdfh(it, '.video_download_link_name_text&&Text');\\n                                let web = pdfh(it, '.resource_website_name&&Text');\\n                                let img = pd(it, '.video_labels&&img&&src');\\n\\n                                u = \\\"hiker://page/p?rule=\\\" + rule + \\\"&u=\\\" + base64Encode(u);\\n                                u = getItem('ai', '0') == '0' ? u : u + '#immersiveTheme#'\\n                                return {\\n                                    title: wrap1(web + '-' + t, s),\\n                                    img: img,\\n                                    col_type: \\\"avatar\\\",\\n                                    url: u,\\n                                    extra: {\\n                                        inheritTitle: false,\\n                                        cls: url,\\n                                        pageTitle: t,\\n                                        web: web,\\n                                    }\\n                                }\\n                            });\\n                            addItemAfter(id, list);\\n                        } catch (e) {\\n                            log(e.toString());\\n                        }\\n                    }\\n                }\\n                return \\\"hiker://empty\\\"\\n            }, MY_RULE.title, url, s, name),\\n            extra: {\\n                id: url,\\n                inheritTitle: false\\n            }\\n        })\\n    }\\n\\n    setResult(d)\\n} else {\\n\\n}\\n\\nif (getItem('home', '关') == '开') {\\n    let html = fetch('https://www.tbsdy.com/', {\\n        headers: {\\n            \\\"User-Agent\\\": PC_UA\\n        }\\n    });\\n\\n    function setLists(item) {\\n        MY_URL = 'https://www.tbsdy.com/';\\n        var title = item.name;\\n        var key = item.select;\\n        d.push({\\n            title: title,\\n            col_type: 'avatar',\\n            img: item.img,\\n        })\\n\\n        var list = pdfa(html, `body&&.container_main_hot_${key}&&.hot_resource_one`)\\n\\n        list.map(x => {\\n            var name = pdfh(x, '.resource_name&&Text')\\n            let img = pd(x, '.resource_posters&&src');\\n            if (img == \\\"\\\") {\\n                img = \\\"\\\";\\n            }\\n            let url = pd(x, 'a&&href');\\n\\n            let score = pdfh(x, '.update_tip||.resource_score||img&&Text');\\n\\n            d.push({\\n                title: name,\\n                img: img,\\n                desc: score,\\n                url: $('').lazyRule((n, u) => {\\n                    putMyVar(\\\"sou\\\", n)\\n                    putMyVar('durl', u)\\n                    refreshPage()\\n                    return 'hiker://empty'\\n                }, name, url)\\n            })\\n        })\\n    }\\n\\n    [{\\n        name: '热门电视剧',\\n        select: 'tvs',\\n        img: 'https://www.tbsdy.com/img/mrsw/web/index/index_tv.svg',\\n    }, {\\n        name: '热门电影',\\n        select: 'movies',\\n        img: 'https://www.tbsdy.com/img/mrsw/web/index/index_mv.svg'\\n    }, {\\n        name: '热门动漫',\\n        select: 'animes',\\n        img: 'https://www.tbsdy.com/img/mrsw/web/index/index_show.svg'\\n    }, {\\n        name: '热门综艺',\\n        select: 'varietys',\\n        img: 'https://www.tbsdy.com/img/mrsw/web/index/index_records.svg'\\n    }, {\\n        name: '热门纪录片',\\n        select: 'documentarys',\\n        img: 'https://www.tbsdy.com/img/mrsw/web/index/index_records.svg',\\n    }].map(x => {\\n\\n        setLists(x)\\n    })\\n}\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"CCTV","author":"","version":0,"type":"live","url":"https://v1.jinrishici.com/all","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n'CCTV-1 综合@@http://39.134.115.163:8080/PLTV/88888910/224/3221225618/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV1.jpg',\n'CCTV-2 财经@@http://39.134.115.163:8080/PLTV/88888910/224/3221225619/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV2.jpg',\n'CCTV-3 综艺@@http://39.134.115.163:8080/PLTV/88888910/224/3221225647/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV3.jpg',\n'CCTV-4 国际@@http://39.134.115.163:8080/PLTV/88888910/224/3221225621/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV4.jpg',\n'CCTV-5 体育@@http://39.134.115.163:8080/PLTV/88888910/224/3221225633/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV5.jpg',\n'CCTV-5+ 体育赛事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225649/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV5+.jpg',\n'CCTV-6 电影@@http://39.134.115.163:8080/PLTV/88888910/224/3221225650/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV6.jpg',\n'CCTV-7 军事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225624/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV7.jpg',\n'CCTV-8 电视剧@@http://39.134.115.163:8080/PLTV/88888910/224/3221225635/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV8.jpg',\n'CCTV-9 纪录@@http://39.134.115.163:8080/PLTV/88888910/224/3221225626/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV9.jpg',\n'CCTV-10 科教@@http://39.134.115.163:8080/PLTV/88888910/224/3221225627/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV10.jpg',\n'CCTV-11 戏曲@@http://39.134.115.163:8080/PLTV/88888910/224/3221225628/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV11.jpg',\n'CCTV-12 社会与法@@http://39.134.115.163:8080/PLTV/88888910/224/3221225629/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV12.jpg',\n'CCTV-13 新闻@@http://39.134.115.163:8080/PLTV/88888910/224/3221225638/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV13.jpg',\n'CCTV-14 少儿@@http://39.134.115.163:8080/PLTV/88888910/224/3221225639/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV14.jpg',\n'CCTV-15 音乐@@http://39.134.115.163:8080/PLTV/88888910/224/3221225641/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV15.jpg',\n'CCTV-17 农业@@http://39.134.115.163:8080/PLTV/88888910/224/3221225908/index.m3u8@@/storage/emulated/0/图片/CCTV/CCTV17.jpg',\n'CCTV-4K @@http://112.17.40.12/PLTV/88888888/224/3221226758/1.m3u8@@/storage/emulated/0/图片/CCTV/CCTV-4k.jpg',\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nfor (var i = 0; i < t.length && i < 24; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.desc = k[0];\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'movie_2';\n d.push(r);\n}\n\nfor (var i = 24; i < t.length; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n if (k.length < 2) continue;\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.col_type = 'text_3';\n d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"⑦直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":""},{"title":"小易直播","author":"香雅情","version":1,"url":"https://api.cc.163.com/v1/wapcc/gamecategory?catetype=fyclass","col_type":"movie_3","class_name":"全部&网游&手游&竞技&综艺","class_url":"0&1&2&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.category_info.game_list.length; i++) {\r\n    var r = {};\r\n    var j = json.data.category_info.game_list[i];\r\n    r.title = j.name;\r\n    r.pic_url = j.cover;\n    r.url = 'https://api.cc.163.com/v1/wapcc/liveinfo?gametype='+j.gametype+'&page=fypage'\nd.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"⑦直播","detail_col_type":"movie_1","detail_find_rule":"js: var json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.live_list.length; i++) {\r\n    var r = {};\r\n    var j = json.data.live_list[i];\r\n    r.title = j.title;\r\n    r.desc = \"人气：\" + j.hot_score;\n    r.pic_url = j.cover;\n    r.url = \"https://cc.163.com/live/channel/?channelids=\" + j.channelid + '@lazyRule=.js:JSON.parse(fetch(input,{})).data[0].sharefile';\nd.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"firstHeader":"class","last_chapter_rule":"","title":"电视台","author":"镇弟","version":0,"url":"hiker://home","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n'凤凰香港@@http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8@@http://www.tvyan.com/uploads/dianshi/fhxgt.jpg',\n'中央综合@@http://39.134.115.163:8080/PLTV/88888910/224/3221225642/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv1.jpg',\n'广东卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225742/index.m3u8@@http://www.tvyan.com/uploads/dianshi/guangdongtv.jpg',\n'金牌综艺@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226347/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvzongyi.jpg',\n'凤凰资讯@@http://112.17.40.140/PLTV/88888888/224/3221226491/index.m3u8@@http://www.tvyan.com/uploads/dianshi/fhzxt.jpg',\n'中央财经@@http://39.134.115.163:8080/PLTV/88888910/224/3221225619/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv2.jpg',\n'湖南卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225745/index.m3u8@@http://www.tvyan.com/uploads/dianshi/hunantv.jpg',\n'炫舞末来@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226248/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'香港HKS@@http://zhibo.hkstv.tv/livestream/mutfysrq.flv@@http://www.tvyan.com/uploads/dianshi/hkstv.jpg',\n'中央综艺@@http://39.134.115.163:8080/PLTV/88888910/224/3221225647/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv3.jpg',\n'浙江卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225744/index.m3u8@@http://www.tvyan.com/uploads/dianshi/zhejiangtv.jpg',\n'惊悚悬疑@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226423/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjingsong.jpg',\n'大爱I@@https://pulltv1.wanfudaluye.com/live/tv1.m3u8@@http://www.tvyan.com/uploads/dianshi/daai1.jpg',\n'中央国际@@http://39.134.115.163:8080/PLTV/88888910/224/3221225621/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv4asia.jpg',\n'深圳卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225741/index.m3u8@@http://www.tvyan.com/uploads/dianshi/shenzhentv.jpg',\n'明星大片@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221225929/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvdapian.jpg',\n'澳门莲花@@http://live-hls.macaulotustv.com/lotustv/5562e9e4d409d24c9600075c.m3u8#mp4@@http://www.tvyan.com/uploads/dianshi/lotustv.jpg',\n'中央体育@@http://39.134.115.163:8080/PLTV/88888910/224/3221225633/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv5.jpg',\n'湖北卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225740/index.m3u8@@http://www.tvyan.com/uploads/dianshi/hubeitv.jpg',\n'家庭剧场@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226330/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjiating.jpg',\n'爆笑大片@@http://121.12.115.14/tx.hls.huya.com/src/1524418101-1524418101-6547325889225424896-3048959658-10057-A-0-1_2000.m3u8@@http://www.tvyan.com/uploads/dianshi/cabletv108.jpg',\n'体育赛事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225649/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv5+.jpg',\n'北京卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225673/index.m3u8@@http://www.tvyan.com/uploads/dianshi/beijingtv.jpg',\n'精品大剧@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226331/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvdaju.jpg',\n'凤凰中文@@http://117.148.187.59/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221228608/index.m3u8#mp4@@http://www.tvyan.com/uploads/dianshi/fhzwt.jpg',\n'中央电影@@http://39.134.115.163:8080/PLTV/88888910/224/3221225650/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv6.jpg',\n'青海卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225727/index.m3u8@@http://www.tvyan.com/uploads/dianshi/qinghaitv.jpg',\n'古装剧场@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226323/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'耀才财经@@http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8@@http://www.tvyan.com/uploads/dianshi/bschannel.jpg',\n'中央军事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225624/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv7.jpg',\n'东南卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225657/index.m3u8@@http://www.tvyan.com/uploads/dianshi/fujiantv.jpg',\n'爱情喜剧@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226322/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvxiju.jpg',\n'亚旅卫视@@http://hls.jingchangkan.tv/jingchangkan/156722438_0HaM/index.m3u8@@https://rmt.dogedoge.com/rmt/QJlMvvW90bf0tvq4tpeio5595N1eeVApqlidBDKeU_QF8HdRtyx4o-6RA?w=212&h=130',\n'8电视剧@@http://39.134.115.163:8080/PLTV/88888910/224/3221225635/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv8.jpg',\n'天津卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225739/index.m3u8@@http://www.tvyan.com/uploads/dianshi/tianjintv.jpg',\n'军旅剧场@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226324/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjunlv.jpg',\n'明珠台@@http://116.199.5.51:8114/00000000/2e368e04c76446bc9d30ca7a9f934dae/index.m3u8?Fsv_cid=1034&Fsv_chan_hls_se_idx=12&Fsv_ctype=LIVES&version=9&Fsv_rate_id=1&Fsv_otype=1&FvSeid=5abd1660af1babb4&Pcontent_id=7f88be5fb6fd426494f6aa240f1dc7a9&Provider_id=00000000&Fsv_filetype=1&Fsv_ShiftEnable=0&Fsv_SV_PARAM1=0&Fsv_ShiftTsp=240&Fsv_CMSID=00000000&AuthInfo=P2ZSH2gNMZ8aiVfV%2BjCYczoGsAYoDo4KY5I3eHfJhGTKdSzgLwCHoSet9it9fXrMLwehJxh9gmO%2F%0AOFrWyxI%2BtteLTJnZKT7Lg8BRYQNXMQU%3D%0A@@http://www.tvyan.com/uploads/dianshi/pearl.jpg',\n'中央纪录@@http://39.134.115.163:8080/PLTV/88888910/224/3221225626/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv9.jpg',\n'江苏卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225743/index.m3u8@@http://www.tvyan.com/uploads/dianshi/jiangsutv.jpg',\n'军事评论@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226326/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjspl.jpg',\n'大爱II@@https://pulltv2.wanfudaluye.com/live/tv2.m3u8@@http://www.tvyan.com/uploads/dianshi/daai2.jpg',\n'中央科教@@http://39.134.115.163:8080/PLTV/88888910/224/3221225627/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv10.jpg',\n'东方卫视@@http://39.135.33.12/PLTV/77777777/224/3221226652/index.m3u8@@http://www.tvyan.com/uploads/dianshi/dongfang.jpg',\n'动作电影@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226329/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'大爱海外@@https://pulltv3.wanfudaluye.com/live/tv3.m3u8@@http://www.tvyan.com/uploads/dianshi/daaihaiwai.jpg',\n'中央戏曲@@http://39.134.115.163:8080/PLTV/88888910/224/3221225628/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv11.jpg',\n'辽宁卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225735/index.m3u8@@http://www.tvyan.com/uploads/dianshi/liaoningtv.jpg',\n'精品体育@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226328/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjpty.jpg',\n'邵氏电影@@https://cn-jxnc-cmcc-live-02.bilivideo.com/live-bvc/817178/live_97065163_17925468.m3u8@@https://s3.ax1x.com/2020/12/02/D53zJx.jpg',\n'社会与法@@http://39.134.115.163:8080/PLTV/88888910/224/3221225629/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv12.jpg',\n'江西卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225746/index.m3u8@@http://www.tvyan.com/uploads/dianshi/jiangxitv.jpg',\n'精品记录@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226332/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjilu.jpg',\n'翡翠台@@http://116.199.5.52:8114/00000000/index.m3u8?&Fsv_ctype=LIVES&Fsv_otype=1&FvSeid=5abd1660af1babb4&Fsv_filetype=1&Fsv_ctype=LIVES&Fsv_cid=0&Fsv_chan_hls_se_idx=188&Fsv_rate_id=1&Fsv_SV_PARAM1=0&Fsv_ShiftEnable=0&Fsv_ShiftTsp=0&Provider_id=&Pcontent_id=&Fsv_CMSID=&Fsv_otype=1@@http://www.cietv.com/img/tvb.jpg',\n'中央新闻@@http://39.134.115.163:8080/PLTV/88888910/224/3221225638/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv13.jpg',\n'黑龙江卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225736/index.m3u8@@http://www.tvyan.com/uploads/dianshi/heilongjiangtv.jpg',\n'黑莓电影@@http://117.148.187.85/hwltc.tv.cdn.zj.chinamobile.com/PLTV/88888888/224/3221229010/index.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'经典喜剧@@http://121.12.115.14/tx.hls.huya.com/src/1449597183-1449597183-6225972493358727168-2847687548-10057-A-0-1_2000.m3u8@@https://f12.baidu.com/it/u1=879030371&u2=4148947692&fm=76',\n'中央少儿@@http://39.134.115.163:8080/PLTV/88888910/224/3221225639/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv14.jpg',\n'重庆卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225734/index.m3u8@@http://www.tvyan.com/uploads/dianshi/chongqingtv.jpg',\n'超级电影@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226369/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvdianying.jpg',\n'韩国电影@@http://121.12.115.14/tx.hls.huya.com/src/1423782047-1423782047-6115097328496934912-2847687550-10057-A-0-1_2000.m3u8@@https://vdposter.bdstatic.com/5c33535fa5a74040029135dc9a6ea0e5.jpeg?x-bce-process=image%2Fresize%2Cm_fill%2Cw_593%2Ch_395',\n'中央音乐@@http://39.134.115.163:8080/PLTV/88888910/224/3221225641/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv15.jpg',\n'山东卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225738/index.m3u8@@http://www.tvyan.com/uploads/dianshi/shandongtv.jpg',\n'农业致富@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226304/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvnongye.jpg',\n'点掌财经@@http://202.69.69.180:443/webcast/bshdlive-mobile/playlist.m3u8@@http://www.tvyan.com/uploads/allimg/1701/1-1F129133S80-L.jpg',\n'超级体育@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226232/1.m3u8@@https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=68290976,2500674883&fm=26&gp=0.jpg',\n'河北卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225732/index.m3u8@@http://www.tvyan.com/uploads/dianshi/hebeitv.jpg',\n'怡伴健康@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226327/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjiankang.jpg',\n'澳门卫视@@http://61.244.22.4/ch3/ch3.live/index.m3u8@@http://www.tvyan.com/uploads/dianshi/aomen-macau.jpg',\n'中央农业@@http://39.134.115.163:8080/PLTV/88888910/224/3221225908/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv17.jpg',\n'夏门卫视@@http://ivi.bupt.edu.cn/hls/xmtv.m3u8@@http://www.tvyan.com/uploads/dianshi/xiamentv.jpg',\n'中国功夫@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226321/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvgongfu.jpg',\n'五福星@@http://121.12.115.14/tx.hls.huya.com/src/1356780980-1356780980-5827329936934830080-2713685416-10057-A-0-1_2000.m3u8@@http://www.tvyan.com/uploads/allimg/1805/1-1P5191103190-L.jpg',\n'中国气象@@http://hls.weathertv.cn/tslslive/qCFIfHB/hls/live_sd.m3u8@@http://www.tvyan.com/uploads/dianshi/zgqxpd.jpg',\n'安徽卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225737/index.m3u8@@http://www.tvyan.com/uploads/dianshi/anhuitv.jpg',\n'武搏@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226320/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvboji.jpg',\n'动作大片@@http://121.12.115.14/tx.hls.huya.com/src/1449698649-1449698649-6226408286510383104-2847699168-10057-A-0-1_2000.m3u8@@http://c.hiphotos.baidu.com/forum/w%3D340%3Bq%3D100%3Bg%3D0/sign=345960d060600c33f079d8cc2a772032/0a00ad64034f78f0a80c393772310a55b1191cd8.jpg?&src=http%3A%2F%2Fimgsrc.baidu.com%2Fforum%2Fpic%2Fitem%2F0a00ad64034f78f0a80c393772310a55b1191cd8.jpg',\n'超级电视@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226231/1.m3u8@@https://ss2.bdstatic.com/70cFvnSh_Q1YnxGkpoWK1HF6hhy/it/u=1717026512,4185765352&fm=26&gp=0.jpg',\n'吉林卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225680/index.m3u8@@http://www.tvyan.com/uploads/dianshi/jilintv.jpg',\n'潮妈辣婆@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226286/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvlama.jpg',\n'澳门葡语@@http://61.244.22.4/ch2/ch2.live/playelist.m3u8@@http://www.tvyan.com/uploads/dianshi/aoshi.jpg',\n'国际欧洲@@https://cctvtxyh5ca.liveplay.myqcloud.com/live/cctveurope_2/index.m3u8@@https://p2.img.cctvpic.com/photoAlbum/page/performance/img/2019/6/10/1560153162411_887.png',\n'四川卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225733/index.m3u8@@http://www.tvyan.com/uploads/dianshi/sichuantv.jpg',\n'海外剧场@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226325/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvhaiwai.jpg',\n'澳门澳视@@http://61.244.22.4/ch1/ch1.live/playelist.m3u8@@http://www.tvyan.com/uploads/dianshi/tdmaomen.jpg',\n'国际美洲@@https://cctvcnch5ca.v.wscdns.com/live/cctvamerica_2/index.m3u8@@https://p5.img.cctvpic.com/photoAlbum/page/performance/img/2019/6/10/1560153192667_279.png',\n'贵州卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8@@http://www.tvyan.com/uploads/dianshi/guizhoutv.jpg',\n'超电视剧@@http://otttv.bj.chinamobile.com/TVOD/88888888/224/3221226368/1.m3u8@@http://www.tvyan.com/uploads/dianshi/cctvhjjc.jpg',\n'内蒙古@@http://39.134.168.91/PLTV/1/224/3221225626/index.m3u8@@http://www.tvyan.com/uploads/dianshi/neimenggutv.jpg',\n'海南卫视@@http://39.134.168.91/PLTV/1/224/3221225620/index.m3u8@@http://www.tvyan.com/uploads/dianshi/hainantv.jpg',\n'河南卫生@@http://39.134.168.91/PLTV/1/224/3221225584/index.m3u8@@http://www.tvyan.com/uploads/dianshi/henantv.jpg',\n'山西卫视@@http://39.134.168.91/PLTV/1/224/3221225646/index.m3u8@@http://www.tvyan.com/uploads/dianshi/shanxitv.jpg',\n'云南卫视@@http://39.130.215.168:6610/gitv_live/G_YUNNAN-HD/G_YUNNAN-HD.m3u8@@http://www.tvyan.com/uploads/dianshi/yunnantv.jpg',\n'陕西卫视@@http://183.207.255.190/live/program/live/sxws/1300000/mnf.m3u8@@http://www.tvyan.com/uploads/dianshi/sxtvs.jpg',\n'广西卫视@@http://39.135.138.58:18890/PLTV/88888888/224/3221225731/index.m3u8@@http://www.tvyan.com/uploads/dianshi/guangxitv.jpg',\n'新疆卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225725/index.m3u8@@http://www.tvyan.com/uploads/dianshi/xinjiangtv.jpg',\n'甘肃卫视@@http://39.135.138.58:18890/PLTV/88888888/224/3221225724/index.m3u8@@http://www.tvyan.com/uploads/dianshi/gansutv.jpg',\n'西藏卫视@@@@http://www.tvyan.com/uploads/dianshi/xizangtv.jpg',\n'宁夏卫视@@http://39.135.138.58:18890/PLTV/88888888/224/3221225726/index.m3u8@@http://www.tvyan.com/uploads/dianshi/ningxiatv.jpg',\n'兵团卫视@@http://39.134.168.91/PLTV/1/224/3221225634/index.m3u8@@http://www.tvyan.com/uploads/dianshi/bingtuantv.jpg',\n\n\n];\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\nvar s2 = 'https://api.ixiaowai.cn/gqapi/gqapi.php#' + new Date().getTime();\r\nvar fl = getUrl().split('#')[1];\r\nfunction zero(s) {\n    return s < 10 ? '0' + s: s;\n};\nvar mydate = new Date();\nyear = mydate.getFullYear();\nmonth = mydate.getMonth() + 1;\ndata = mydate.getDate();\nhour = mydate.getHours();\nminute = mydate.getMinutes();\nsecond = mydate.getSeconds();\nday = new Array(\" 星期日 \", \"星期一1️⃣\", \"星期二2️⃣\", \"星期三3️⃣\", \"星期四4️⃣\", \"星期五5️⃣\", \"星期六6️⃣\")[mydate.getDay()];\nnewTime = year + '年' + zero(month) + '🈷️' + zero(data) + '日                    更新⏲️' + '\\t\\t\\t' + zero(hour) + ':' + zero(minute) + ':' + zero(second) + '\\t\\t\\t' + day;\nd.push({\n    title:\"            🔍搜索或网址🔎       \",\r\n    titles:hitokoto[0],\n    url: \"hiker://search\",\r\n    desc: '         庚子🐂年    \\t' + newTime + '', \r\n    col_type: 'pic_1_card',\r\n     pic_url:s2\n});\r\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"https://tvv.tw/xjj/get/\",\n col_type: 'text_center_1'\n});\nfor (var i = 0; i < t.length && i < 20; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"https://haikuoshijie.cn/user/609\",\n col_type: 'text_center_1'\n});\nfor (var i = 20; i < t.length && i < 40; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"http://xjj.jusuzs.com/video.php\",\n col_type: 'text_center_1'\n});\nfor (var i = 40; i < t.length && i < 60; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"https://www.hlapi.cn/api/wyrb\",\n col_type: 'text_center_1'\n});\nfor (var i = 60; i < t.length && i < 80; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"http://39.135.138.60:18890/PLTV/88888910/224/3221226185/index.m3u8#mp4\",\n col_type: 'text_center_1'\n});\nfor (var i = 80; i < t.length && i < 100; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\nd.push({\ntitle:'‘‘港澳台____中央______卫视______NewTV',\n url: \"http://125.210.152.21:9120/live/GQYL.m3u8#mp4\",\n col_type: 'text_center_1'\n});\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"⑦直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"#ff148e8e"},{"firstHeader":"class","last_chapter_rule":"","title":"央视聚场.追","author":"追剧君","version":0,"url":"http://api.cntv.cn/NewVideo/getVideoListByColumn?id=fyAll&n=10&sort=desc&p=fypage&mode=0&serviceId=tvcctv","col_type":"pic_1","class_name":"今日说法&新闻联播&百家讲坛&焦点访谈&开讲啦& 温馨提示: ","class_url":"TOPC1451464665008914&TOPC1451528971114112&TOPC1451557052519584&TOPC1451558976694518&TOPC1451464884159276&666","area_name":"故事里的中国&经济半小时&经济大讲堂&对话&天网","area_url":"TOPC1601362002656197&TOPC1451533652476962&TOPC1514182710380601&TOPC1451530382483536&TOPC1451543228296920","sort_name":"是真的吗&星光大道&探索发现&军事报道&新闻1+1","year_name":"新闻调查&面对面&动物世界&走进科学&新闻30分","sort_url":"TOPC1451534366388377&TOPC1451467630488780&TOPC1451557893544236&TOPC1451527941788652&TOPC1451559066181661","year_url":"TOPC1451558819463311&TOPC1451559038345600&TOPC1451378967257534&TOPC1451558190239536&TOPC1451559097947700","find_rule":"js:\nvar res={};var d=[];\n\nfypage =MY_URL.match(/p=(.*?)&/)[1];\n\nupd =JSON.parse(getRule()).class_url;\n\n if(upd!=666){\n\n  try{\n\n   html = getResCode();\n\n   var json = JSON.parse(html);  \n\n   arr = json.data.list;\n\n   arr.map(data => \n\n               d.push({\n                      title:  data.title,     \n                      desc:\"\" ,\n                      pic_url: data.image,   \n                      col_type:\"\",\n                      url: \"https://hls.cntv.myhwcdn.cn/asp/hls/2000/0303000a/3/default/\"+data.guid+\"/2000.m3u8\",   \n\n               })\n       );\n\n  }catch(e){}\n\n}else{\n\ntitle=\"5oSf6LCi5pSv5oyB77yM5oKo5Y+v54K55Ye75ZCM5q2l6Iez5pyA5paw6KeE5YiZ4oCm4oCm\";\n\nif(fypage==3)d.push({title:base64Decode( title) ,col_type:\"text_1\",url:getUrl()+\"#update\"+`@rule=js:aa=decodeURIComponent(fetch(\"http://zhui88.eu5.org/update_CCTV.php\",{}));putVar2(\"a\",aa);eval(aa);update()`})  \n\n }\n\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","group":"⑦直播","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"/storage/emulated/0/图标/小米图标/lovechat.iyangbo.com.lovechat.png"},{"title":"小虎直播","author":"香雅情","version":2,"url":"https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=fyAll&tagAll=0&page=fypage","col_type":"movie_1","class_name":"王者荣耀&绝地求生&刺激战场&DOTA2&英雄联盟&我的世界","class_url":"2336&2793&3203&7&1&1732","area_name":"","area_url":"","sort_name":"直播间关注","year_name":"美食&星秀&吃喝玩乐&一起看&二次元&颜值","sort_url":"寒夜@hy777#韩涵@774810#灵儿@238197#宸宸@271423#守着他@128973#北慕@562723#呆呆@616702#张大仙@688#草莓@577368#三国杀周周@764680#老七@498218#","year_url":"2752&1663&100044&2135&2633&2168","find_rule":"js:\nvar s = getResCode();\nvar json={};\n      eval('json=' + s);\nvar res={};\nvar d=[];\n//处理直播间关注\n//直播间关注和回放代码由wingeva大佬提供。\nvar rule=JSON.parse(getRule());\nif (rule.firstHeader==\"sort\"){\n  var rooms=rule.sort_url.split(\"#\");\n  for (room of rooms)\n\td.push({col_type:\"text_2\",title:room.split(\"@\")[0],url:\"https://m.huya.com/\"+room.split(\"@\")[1]});\n}else{\n//\n       for(var i=0;i<json.data.datas.length;i++)\n{\nvar j = json.data.datas[i];\nvar r = {};\n       r.pic_url=j.screenshot;\n       r.desc =\"👤\"+ j.nick +\"📺\" +j.totalCount;\n       r.title=\"🔗\"+j.bluRayMBitRate+ \"📙\"+j.introduction;\n       r.url=\"https://www.huya.com/\" + j.profileRoom;\n      d.push(r);\n}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js: var json = {};\nvar src = getResCode()\r\neval('json=' + src);\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.response[\"3\"].docs.length; i++) {\r\n    \r\n    var j = json.response[\"3\"].docs[i];\n    var r = {};\r\n    r.content = j.game_introduction;\n    r.url = 'https://www.huya.com/' + j.room_id;\r\n    r.desc = j.gameName;\n    r.title = j.game_nick;\r\n    r.img = j.game_screenshot;\r\n    d.push(r);\r\n}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://search.cdn.huya.com/?m=Search&do=getSearchContent&plt=m&q=**&uid=0&app=11&v=4&typ=-5&start=fypage@-1@*40@&rows=40","titleColor":"#ff228be6","group":"⑦直播","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar items = [];\n\n//取手机版网页源码\nvar mlink=fetch(MY_URL,{headers:{\"User-Agent\":MOBILE_UA}});\n//取手机版播放链接\nvar srcs = parseDomForHtml(mlink,'body&&script&&Html').split('\"')[1].split('\"')[0];\n//setError(srcs);\n\nvar islive=/var ISLIVE =.*?true.*?;/.test(mlink);\nif(islive){\n\n//取电脑版json内容\nvar html = getResCode().match(/\"stream\".*?\"(.*?)\"/)[1];\nvar jso = base64Decode(html);\neval('json='+jso);\n//setError(jso);\n\nfor (var i = 0; i < json.vMultiStreamInfo.length; i++) {\r\n    var r = {};\r\n    var j = json.vMultiStreamInfo[i];\r\n    r.title = j.sDisplayName+\"（点击可进入网页）\";\n    r.url = getUrl();\n    r.col_type = 'text_center_1';\n    items.push(r);\n\n    for (var i2 = 0; i2< json.data[0].gameStreamInfoList.length; i2++) {\n        var r2 = {};\n        var j2 = json.data[0].gameStreamInfoList[i2];\n     if(j.iBitRate==0){j.iBitRate=json.data[0].gameLiveInfo.bitRate}\n        var Hls = srcs.replace(/.*\\/src/,j2.sHlsUrl).replace(/_.*m3u8/,\"_\"+j.iBitRate+\".m3u8\");\nif(Hls.substring(0,2)=='//'){Hls='https:'+Hls}\n        r2.title = j2.sCdnType+'线路';\n        r2.url =Hls;\n        r2.col_type = 'text_3';\n        items.push(r2);\n    }\n}\n}//islive\nelse{\n  items.push({col_type:\"text_center_1\",title:\"主播不在家\"});\n}\n\n//直播间关注和回放代码由wingeva大佬提供。\n\n//回放\n\nitems.push({col_type:'line_blank'});\nvar rule=`@rule=js:var items=[];var pn=MY_URL.match(/p=(\\\\d+)/)[1];if(pn<2){for(i=0;i<4;i++)items.push({col_type:\"text_2\",title:\"线路\"+(i+1),url:\"hiker://empty@lazyRule=.js:putVar('huya$replay','\"+i+\"');'toast://已切换线路';\"});items.push({col_type:'line_blank'});}var lists=parseDomForArray(getResCode(),'body&&.J_liveSection');for(list of lists){items.push({title:parseDomForHtml(list,'.header-title&&Text'),col_type:'text_1'});var vids=parseDomForArray(list,'.J_liveSectionList&&li');for(vid of vids) items.push({col_type:\"pic_2\",title:parseDomForHtml(vid,'.card-title&&Text'),desc:parseDomForHtml(vid,'.card-detail&&Text'),url:\"https://v-api-player-ssl.huya.com/?r=vhuyaplay%2Fvideo&vid=\"+parseDomForHtml(vid,'a&&href').match(/play\\\\/(.+?)\\\\./)[1]+\"&format=mp4%2Cm3u8\"+\"@lazyRule=.js:var html=fetch(input,{headers:{'User-Agent':MOBILE_UA}});var lines=JSON.parse(html).result.items;lines[getVar('huya$replay','0')%(lines.length)].transcode.urls[0]\",pic_url:parseDomForHtml(vid,'img&&src')});} setHomeResult({data:items});`\n\nvar uid=/ ayyuid: '(.*?)'/.test(mlink)?RegExp.$1:'';\nuid&&items.push({col_type:\"text_center_1\",title:\"录像回放\",url:\"https://v.huya.com/u/\"+uid+\"/livevideo.html?p=fypage\"+rule});\n\n\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"pc","preRule":""},{"title":"小鱼直播","author":"香雅情","version":1,"url":"https://m.douyu.com/api/cate/list#fyclass","col_type":"movie_2","class_name":"手游休闲&网游竞技&单机热游&娱乐天地&科技文化&语音互动&语音直播&正能量&颜值","class_url":"9&1&15&2&11&20&18&13&8","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\nvar num = Number(MY_URL.split('#')[1]);\r\nfor (var i = 0; i < json.data.cate2Info.length; i++) {\r\n    var r = {};\r\n    var j = json.data.cate2Info[i];\n    var id = j.cate1Id;\r\n    r.title = j.cate2Name;\r\n    r.desc = '🏘' + j.count;\r\n    r.pic_url = j.pic;\n    r.url = 'https://m.douyu.com/api/room/list?page=fypage&type='+j.shortName;\r\n    if (r.title !== null && r.title !== undefined && r.title !== ''&&id == num)\nd.push(r);\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.list.length; i++) {\r\n    var r = {};\r\n    var j = json.data.list[i];\r\n    r.title = j.roomName;\n    r.url = 'https://m.douyu.com/'+j.roomId;\r\n    r.desc = j.nickname;\n    r.content = j.cateName;\r\n    r.img = j.roomSrc;\r\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\r\n}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://m.douyu.com/api/search/liveRoom?JsonBody={\"sk\":\"**\",\"offset\":fypage@-1@*20@,\"limit\":20,\"did\":\"bf1f5579c0b2f6066af0bee200051531\"};post;utf-8","titleColor":"#ff228be6","group":"⑦直播","detail_col_type":"movie_2","detail_find_rule":"js: var json = {};\r\neval('json=' + getResCode());\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < json.data.list.length; i++) {\r\n    var r = {};\r\n    var j = json.data.list[i];\r\n    r.title = j.roomName;\r\n    r.desc = j.nickname +'📺'+ j.hn;\r\n    r.pic_url = j.roomSrc;\n    r.url = 'https://web.sinsyth.com/lxapi/douyujx.x?roomid='+j.rid + '@lazyRule=.js:JSON.parse(fetch(input,{})).Rendata.link';\r\n    if (r.title !== null && r.title !== undefined && r.title !== '')\nd.push(r);\r\n}\n//规则提供：香雅情。\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"firstHeader":"class","last_chapter_rule":"","title":"全球最大网站","author":"道长","version":1,"type":"video","url":"hiker://empty##https://cn.pornhub.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑦秋名山","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=全球最大网站"},{"last_chapter_rule":"","title":"图虫摄影","author":"wingeva","version":1,"type":"picture","url":"hiker://empty/#/$fy_all{fyAll}/$fy_page{fypage}","col_type":"pic_2_card","class_name":"热门&最新&精选&风光&旅行&建筑&人文","class_url":"-1&-2&-3&693&743&767&133","area_name":"人像&美女&日系&小清新&cos","area_url":"131&564&2511&7471&3573","sort_name":"","year_name":"逆光&私房&爬楼&性感&汉服&少女&银杏&樱花","sort_url":"","year_url":"逆光&私房&爬楼&性感&汉服&少女&银杏&樱花","find_rule":"js:\n//year分类用于存放自定义标签\nlet fyall_url = MY_URL.match(/\\$fy_all\\{([^\\}]+)\\}/)[1];\nlet fypage_url = MY_URL.match(/\\$fy_page\\{([^\\}]+)\\}/)[1];\nvar discover_url=\"https://api.tuchong.com/discover/fyclass/category?os_api=25&device_type=MI&device_platform=android&ssmix=a&manifest_version_code=232&dpi=450&abflag=0&uuid=329642135962135&version_code=232&count=20&app_name=tuchong&version_name=2.3.2&openudid=53fa4df32154dfa3&resolution=1280*1000&os_version=5.0.1&ac=wifi&aid=0&page=fypage\";\nvar tag_url=\"https://tuchong.com/rest/tags/fyyear/posts?page=fypage&count=60\";\n\nvar json = JSON.parse(getRule());\nvar url=json.firstHeader==\"year\"?tag_url.replace(\"fyyear\",fyall_url).replace(\"fypage\",fypage_url):discover_url.replace(\"fyclass\",fyall_url).replace(\"fypage\",fypage_url);\ntry {\n  var html=fetch(url,{});\n  var jshtml=JSON.parse(html);\n  var plist=json.firstHeader==\"year\"?jshtml.postList:jshtml.post_list;\n  \n  var data = plist.map(function(o) {\n    var tagstr=\"\";\n    var tags=o.tags;\n    for(i in tags)\n      tagstr+=tags[i].tag_name+\",\";\n    putVar2('tuchong@text@'+o.post_id,o.excerpt);\n  return {\n    title: o.title,\n    desc: o.excerpt,\n    pic_url: json.firstHeader==\"year\"?o.cover_image_src:o.title_image.url,\n//.replace(/\\/g\\//,\"/lr/\")\n    url:(\"#noHistory##noRecordHistory#hiker://empty/##\"+JSON.stringify(o.images)+\"##\"+o.title+\"##\"+o.published_at.split(\" \")[0]+\"发布•\"+o.favorites+\"喜欢•\"+o.comments+\"点评\"+''+\"##\"+o.url+\"##\"+o.post_id+\"##\"+tagstr+\"##\"+(json.firstHeader==\"year\"?'':JSON.stringify({name:o.site.name,icon:o.site.icon,url:o.site.url}))+\"##\").replace(/[;\\r\\n]/g,\"\")\n//\"pics://\"+pics\n  };\n});\n\nsetHomeResult({ data: data });\n\n} catch (e) {\n    \n}","searchFind":"js:\ntry {\n\n  var plist=JSON.parse(getResCode()).postList;\n  var data = plist?plist.map(function(o) {\n    var tagstr=\"\";\n    var tags=o.tags;\n    for(i in tags)\n      tagstr+=tags[i].tag_name+\",\";\nputVar2('tuchong@text@'+o.post_id,o.excerpt);\n\n  return {\n    title: o.title+\" \"+o.image_count+\"P\",\n    content:o.excerpt,\n    desc: o.published_at,\n    pic_url: o.cover_image_src,\n    url: (\"hiker://empty/##\"+JSON.stringify(o.images)+\"##\"+o.title+\"##\"+o.published_at.split(\" \")[0]+\"发布•\"+o.favorites+\"喜欢•\"+o.comments+\"点评\"+''+\"##\"+o.url+\"##\"+o.post_id+\"##\"+tagstr+\"##\"+''+\"##\").replace(/[;\\r\\n]/g,\"\")\n  };\n\n}):[];\n\n\nsetSearchResult({ data: data });\n\n} catch (e) {\n    \n}","search_url":"https://tuchong.com/rest/tags/**/posts?page=fypage&count=60","group":"⑦美图","detail_col_type":"pic_1_full","detail_find_rule":"js:\n//setError(MY_URL);\nvar comment_url=\"https://api.tuchong.com/4/posts/fyAll/comments?sort_by=0&os_api=25&device_type=MI&device_platform=android&ssmix=a&manifest_version_code=232&dpi=450&abflag=0&uuid=329642135962135&version_code=232&page=fypage&app_name=tuchong&version_name=2.3.2&openudid=53fa4df32154dfa3&resolution=1280*1000&os_version=5.0.1&ac=wifi&aid=0\";\n\n/##(.*?)##(.*?)##(.*?)##(.*?)##(.*?)##(.*?)##(.*?)##/.test(MY_URL);\nvar imglist=JSON.parse(RegExp.$1);\nvar title=RegExp.$2;\nvar info=RegExp.$3;\nvar url=RegExp.$4;\ncomment_url=comment_url.replace(\"fyAll\",RegExp.$5);\nvar tag=RegExp.$6;\nvar site=RegExp.$7?JSON.parse(RegExp.$7):null;\nvar text=getVar(\"tuchong@text@\"+RegExp.$5);\n\n\nvar data = imglist.map(function(o) {\n  return {\n    title: o.title,\n    pic_url: \"https://photo.tuchong.com/\"+o.user_id+\"/f/\"+o.img_id+\".jpg\",\n    url: \"https://photo.tuchong.com/\"+o.user_id+\"/f/\"+o.img_id+\".jpg\"\n  };\n\n});\ndata.push(\n{\ncol_type:\"line_blank\"\n});\nsite&&data.push(\n{\ntitle:site.name,\npic_url:site.icon,\nurl:site.url,\ncol_type:\"avatar\"\n});\ndata.push(\n{\ntitle:title,\ndesc:'““””'+info,\nurl:/喜欢•(.*?)点评/.test(info)&&RegExp.$1<1?url:comment_url+\"#noRecordHistory#@rule=js:var json=JSON.parse(getResCode());var comments=json.commentlist;var data=[];comments.length&&/page=(.+?)&/.test(MY_URL)&&RegExp.$1<2&&data.push({title:json.comments+' 评论',url:json.baseUrl,desc:'点击跳转网页',col_type:'text_1'})&&data.push({col_type:'line_blank'});for(i in comments){var rstr='';var replys=comments[i].sub_notes;for(j in replys) rstr+='<b>'+replys[j].author.name+':</b>'+parseDomForHtml(replys[j].content,'Text')+'<br>';rstr=rstr?'<br><blockquote><font color=grey>'+rstr+'</font></blockquote>':'';data.push({title: comments[i].author.name,pic_url: comments[i].author.icon,url: comments[i].author.url,col_type: 'avatar'}),data.push({title:parseDomForHtml(comments[i].content,'Text')+rstr+'<br><small><font color=grey>'+comments[i].created_at+' • '+comments[i].likes+'喜欢'+'</font></small>',col_type:'rich_text'}),data.push({col_type:'line'});} setHomeResult({data:data});\",\n\n//url,\ncol_type:\"text_1\"\n});\n\ndata.push(\n{\ntitle:text+\"<br><br><small><font color=grey>标签：\"+tag+\"</font><small>\",\ncol_type:\"rich_text\"\n});\n  \nsetHomeResult({ data: data });","sdetail_col_type":"pic_1_full","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"唯美女生","author":"Killer","version":4,"type":"picture","url":"https://www.vmgirls.com/wp-admin/admin-ajax.php?append=list-home&paged=fypage&action=ajax_load_posts&query=&page=home&tabcid=fyAll;post","col_type":"pic_2_card","class_name":"最新&热门&清新&摄影&糖水&清纯&青春","class_url":"-2.1&-1.0&25&17&61&18&12","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.col-6;a&&title;a&&style.js:input.match(/url\\('(.*?)'\\)/)[1]+\"@Referer=\";.flex-fill&&Text;a&&href.js:$(input).lazyRule(()=>eval(JSON.parse(fetch(\"hiker://page/Picture?rule=\"+getVar('name'))).rule))","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"⑦美图","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putVar('name',MY_RULE.title)","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"var html = request(input,{});\\nvar picshowArr = [];\\nvar list = parseDomForArray(html,\\\".nc-light-gallery&&img\\\");\\n//log(list);\\nfor(let i =0;i<list.length;i++) picshowArr.push(parseDom(list[i],\\\"img&&src\\\"));\\n\\\"pics://\\\"+picshowArr.join(\\\"&&\\\");\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"大侠号爆笑动图","author":"子丑寅卯","version":1,"type":"other","url":"https://www.ali213.net/news/zl/bxgif/index_fypage.html[firstPage=https://www.ali213.net/news/zl/bxgif/]","col_type":"movie_1_left_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDom(html, '.index-left&&Html').match(/\"subscribe-li[\\s\\S]*?<\\/p/g);\nfor (var j = 0; j < list.length; j++) {\n\nd.push({\n       title: parseDomForHtml(list[j], 'img&&alt'),\n       desc: parseDomForHtml(list[j], 'p&&Text'),\n       pic_url: parseDom(list[j], 'img&&src'),\n       url: parseDom(list[j],'a&&href').split(\".html\")[0]+\"_fypage.html[firstPage=\"+parseDom(list[j],'a&&href')\n  });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"\n","titleColor":"#ffff00ff","group":"⑦美图","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar res = {};\nvar h = getResCode();\nvar list = parseDomForArray(h,'#Content&&img');\nfor(let i =0; i<list.length;i++){\n  d.push({\npic_url:parseDom(list[i],'img&&src'),\n  url:parseDom(list[i],'img&&src'),\ncol_type:\"pic_1_full\"\n})\n}\n\n  res.data = d;\n  setHomeResult(res)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://3g.ali213.net/images/head_icon.png"},{"last_chapter_rule":"","title":"930图片网","author":"dy2020","version":20220328,"type":"picture","url":"https://www.930tu.com/fyclass/index_fypage.html[firstPage=https://www.930tu.com/fyAll/]","col_type":"movie_3_marquee","class_name":"首页&美女图片&唯美图片&伤感图片&头像图片&纹身图片","class_url":"#index&meinv&weimei&shanggan&touxiang&wenshen","area_name":"斗图表情&装修图片&风景植物&图片大全&标签云","area_url":"doutubiaoqing&zhuangxiu&fengjing&pic&tags","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\r\njs:\r\nif(/#index/.test(getUrl())){eval(JSON.parse(fetch(\"hiker://page/index\")).rule)}\r\nelse if(/tags/.test(getUrl())){eval(JSON.parse(fetch(\"hiker://page/tag\")).rule)}\r\nelse{eval(JSON.parse(fetch(\"hiker://page/second\")).rule)}\nsetResult(d);","searchFind":"js:\nlog(getUrl());\nvar d=[];\nvar html=getResCode();\nvar list=pdfa(html,\"body&&div.m-list,0&&li\");\r\nfor(var i of list){\r\n\td.push({\r\n\t\ttitle: pdfh(i,\"a&&title\"),\r\n\t\turl: \"hiker://page/end?\"+\"source=\"+pd(i,\"a&&href\"),\r\n\t\tpic_url:pdfh(i,\"img&&data-original\"),\r\n\t\tcol_type: \"movie_3\",\r\n\t});\r\n}\r\nsetResult(d);","search_url":"https://www.930tu.com/e/search/index.php?keyboard=**&show=title&page=fypage@-1@#aa;POST","group":"⑦美图","detail_col_type":"pic_1_full","detail_find_rule":"js:\nvar d=[];\r\neval(JSON.parse(fetch(\"hiker://page/end\")).rule);\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面\",\"path\":\"second\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar url=getUrl();\\r\\nif(/source/.test(getUrl())){url=url.match(/source\\\\=(.+)/)[1]};\\r\\nvar html=fetch(url);\\r\\nif(MY_PAGE==1){\\r\\n\\tvar navtitle=pdfa(html,\\\"body&&div.l-title&&a\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\tvar navurl=pdfa(html,\\\"body&&div.l-title&&a\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\tfor(var i in navtitle){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +navtitle[i]+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/third?\\\"+\\\"source=\\\"+navurl[i]+\\\"index_fypage.html\\\"+\\\"[firstPage=\\\"+navurl[i]+\\\"index.html]\\\",\\r\\n\\t\\t\\tcol_type: \\\"scroll_button\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n}\\r\\n\\r\\nvar list=pdfa(html,\\\"body&&div.m-list,0&&li\\\");\\r\\nfor(var i of list){\\r\\n\\td.push({\\r\\n\\t\\ttitle: pdfh(i,\\\"a&&title\\\"),\\r\\n\\t\\turl: pd(i,\\\"a&&href\\\")+`@lazyRule=.js:var html=fetch(input);var list=[{url:input}];if(/尾页/.test(html)){var n=pdfh(html,\\\"div.page&&a:contains(尾页)&&href\\\").match(/\\\\\\\\d+/g)[1];for(var k=2;k<=n;k++){\\tlist.push({url:input.replace(\\\".html\\\",\\\"_\\\"+k+\\\".html\\\")});\\t}}var pics=bf(list).map(h=>pdfh(h,\\\"div.pic-main&&img&&src\\\"));\\\"pics://\\\"+pics.join(\\\"&&\\\")`,\\r\\n\\t\\tpic_url:pdfh(i,\\\"img&&data-original\\\"),\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"tag\",\"path\":\"tag\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar html=getResCode();\\r\\n\\r\\nif(MY_PAGE==1){\\r\\n\\tvar list=pdfa(html,\\\"body&&div.label\\\").reverse();\\r\\n\\tfor(var i in list){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#098AC1\\\">' +pdfh(list[i],\\\"h2&&Text\\\")+'</front></strong>',\\r\\n\\t\\t\\tcol_type: \\\"text_center_1\\\",\\r\\n\\t\\t});\\r\\n\\t\\tvar a_title=pdfa(list[i],\\\"body&&a\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\t\\tvar a_url=pdfa(list[i],\\\"body&&a\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\t\\tfor(var k in a_title){\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\t\\ttitle: a_title[k],\\r\\n\\t\\t\\t\\turl:\\\"hiker://page/tag_2?\\\"+\\\"source=\\\"+a_url[k]+\\\"fypage@-1@/\\\",\\r\\n\\t\\t\\t\\tcol_type: \\\"flex_button\\\",\\r\\n\\t\\t\\t});\\r\\n\\t\\t}\\r\\n\\t}\\r\\n\\r\\n}\\r\\n\\r\\nsetResult(d);\"},{\"col_type\":\"pic_1_full\",\"name\":\"end\",\"path\":\"end\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar url=getUrl();\\r\\nif(/source/.test(getUrl())){url=url.match(/source\\\\=(.+)/)[1]};\\r\\nvar html=fetch(url);\\r\\nvar list=[{url:url}];\\r\\nif(/尾页/.test(html)){\\r\\n\\tvar n=pdfh(html,\\\"div.page&&a:contains(尾页)&&href\\\").match(/\\\\d+/g)[1];\\r\\n\\tfor(var k=2;k<=n;k++){\\r\\n\\t\\tlist.push({url:url.replace(\\\".html\\\",\\\"_\\\"+k+\\\".html\\\")});\\r\\n\\t}\\r\\n}\\r\\nvar pics=bf(list);\\r\\nfor(var i of pics){\\r\\n\\tvar pic_url=pdfh(i,\\\"div.pic-main&&img&&src\\\");\\r\\n\\td.push({\\r\\n\\t\\ttitle: pdfh(i,\\\"div.pic-main&&img&&alt\\\"),\\r\\n\\t\\tpic_url:pic_url+\\\"@Referer=\\\",\\r\\n\\t\\turl: pic_url,\\r\\n\\t\\tcol_type: \\\"pic_1_full\\\",\\r\\n\\t});\\r\\n}\\r\\n\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"美女\",\"path\":\"meinv\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar url=getUrl().match(/source=(.+)/)[1];\\r\\nvar html=fetch(url);\\r\\nif(MY_PAGE==1){\\r\\n\\tvar navtitle=pdfa(html,\\\"body&&div.column-list&&a\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\tvar navurl=pdfa(html,\\\"body&&div.column-list&&a\\\").map(h=>pdfh(h,\\\"a&&href\\\"));\\r\\n\\tfor(var i in navtitle){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#098AC1\\\">' +navtitle[i]+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/tag?\\\"+\\\"source=\\\"+navurl[i]+\\\"?&page=fypage\\\",\\r\\n\\t\\t\\tcol_type: \\\"scroll_button\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n}\\n\\td.push({\\r\\n\\t\\ttitle: pdfh(html,\\\"body&&div.infodiv&&Text\\\"),\\r\\n\\t\\tpic_url:pdfh(html,\\\"body&&div.baike_thumb&&img&&src\\\")+\\\"@Referer=https://www.yeitu.com/\\\",\\r\\n\\t\\turl: \\\"\\\",\\r\\n\\t\\tcol_type: \\\"pic_3\\\",\\r\\n\\t});\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:pdfh(html,\\\"body&&div.infodiv&&Html\\\"),\\r\\n\\t\\t\\tcol_type: \\\"rich_text\\\",\\r\\n\\t\\t});\\nd.push({\\r\\n\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +pdfh(html,\\\"div.interfix_title,-1&&Text\\\")+'</front></strong>',\\r\\n\\t\\tcol_type: \\\"text_center_1\\\",\\r\\n\\t});\\r\\nvar tabtitle=pdfa(html,\\\"body&&div.img_content&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"a,1&&Text\\\"));\\r\\nvar taburl=pdfa(html,\\\"body&&div.img_content&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"a&&href\\\"));\\r\\nvar tabimg=pdfa(html,\\\"body&&div.img_content&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"img&&data-echo\\\"));\\n\\r\\nfor(var n in taburl){\\r\\n\\td.push({\\r\\n\\t\\ttitle: tabtitle[n],\\r\\n\\t\\tpic_url:tabimg[n]+\\\"@Referer=https://www.yeitu.com/\\\",\\r\\n\\t\\turl: \\\"hiker://page/end?\\\"+\\\"source=\\\"+taburl[n],\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\nd.push({\\r\\n\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +\\\"随机美女模特推荐\\\"+'</front></strong>',\\r\\n\\t\\tcol_type: \\\"text_center_1\\\",\\r\\n\\t});\\r\\nvar tabtitle=pdfa(html,\\\"body&&div.related&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"a,1&&Text\\\"));\\r\\nvar taburl=pdfa(html,\\\"body&&div.related&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"a&&href\\\"));\\r\\nvar tabimg=pdfa(html,\\\"body&&div.related&&li.image-box||div.tag_list\\\").map(h=>pdfh(h,\\\"img&&data-echo\\\"));\\n\\r\\nfor(var n in taburl){\\r\\n\\td.push({\\r\\n\\t\\ttitle: tabtitle[n],\\r\\n\\t\\tpic_url:tabimg[n]+\\\"@Referer=https://www.yeitu.com/\\\",\\r\\n\\t\\turl: \\\"hiker://page/meinv?\\\"+\\\"source=\\\"+taburl[n],\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\nd.push({\\r\\n\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +\\\"本月热点排行\\\"+'</front></strong>',\\r\\n\\t\\tcol_type: \\\"text_center_1\\\",\\r\\n\\t});\\r\\nvar tabtitle=pdfa(html,\\\"body&&div.baike-covers&&li\\\").map(h=>pdfh(h,\\\"span.h2&&Text\\\"));\\r\\nvar taburl=pdfa(html,\\\"body&&div.baike-covers&&li\\\").map(h=>pdfh(h,\\\"a&&href\\\"));\\r\\nvar tabimg=pdfa(html,\\\"body&&div.baike-covers&&li\\\").map(h=>pdfh(h,\\\"img&&data-echo\\\"));\\n\\r\\nfor(var n in taburl){\\r\\n\\td.push({\\r\\n\\t\\ttitle: tabtitle[n],\\r\\n\\t\\tpic_url:tabimg[n]+\\\"@Referer=https://www.yeitu.com/\\\",\\r\\n\\t\\turl: \\\"hiker://page/meinv?\\\"+\\\"source=\\\"+taburl[n],\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\n\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"三级页面\",\"path\":\"third\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar url=getUrl();\\r\\nif(/source/.test(getUrl())){url=url.match(/source\\\\=(.+)/)[1]};\\r\\nvar html=fetch(url);\\r\\nif(MY_PAGE==1){\\r\\n\\tvar navtitle=pdfa(html,\\\"body&&div.l-title&&a\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\tvar navurl=pdfa(html,\\\"body&&div.l-title&&a\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\tfor(var i in navtitle){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +navtitle[i]+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/third?\\\"+\\\"source=\\\"+navurl[i]+\\\"index_fypage.html\\\"+\\\"[firstPage=\\\"+navurl[i]+\\\"index.html]\\\",\\r\\n\\t\\t\\tcol_type: \\\"scroll_button\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n}\\r\\n\\r\\nvar list=pdfa(html,\\\"body&&div.m-list,0&&li\\\");\\r\\nfor(var i of list){\\r\\n\\td.push({\\r\\n\\t\\ttitle: pdfh(i,\\\"a&&title\\\"),\\r\\n\\t\\turl: pd(i,\\\"a&&href\\\")+`@lazyRule=.js:var html=fetch(input);var list=[{url:input}];if(/尾页/.test(html)){var n=pdfh(html,\\\"div.page&&a:contains(尾页)&&href\\\").match(/\\\\\\\\d+/g)[1];for(var k=2;k<=n;k++){\\tlist.push({url:input.replace(\\\".html\\\",\\\"_\\\"+k+\\\".html\\\")});\\t}}var pics=bf(list).map(h=>pdfh(h,\\\"div.pic-main&&img&&src\\\"));\\\"pics://\\\"+pics.join(\\\"&&\\\")`,\\r\\n\\t\\tpic_url:pdfh(i,\\\"img&&data-original\\\"),\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"index\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar html=getResCode();\\r\\nd.push({\\r\\n  title: \\\"\\\",\\r\\n     url:\\\"'hiker://search?rule=930图片网&s='+input\\\",\\r\\n    desc:\\\"搜索本规则\\\",\\r\\n    col_type:\\\"input\\\"\\r\\n});\\r\\n\\tvar hot_title=pdfa(html,\\\"body&&div.b-word&&a\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\thot_title.unshift(\\\"HOT:\\\");\\r\\n\\tvar hot_url=pdfa(html,\\\"body&&div.b-word&&a\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\thot_url.unshift(\\\"\\\")\\r\\n\\tfor(var i in hot_title){\\r\\n\\t\\tif(/tag/.test(hot_url[i])){\\r\\n\\t\\t\\thot_url[i]=\\\"hiker://page/tag_2?\\\"+\\\"source=\\\"+hot_url[i]+\\\"fypage/\\\"\\r\\n\\t\\t}else{\\r\\n\\t\\t\\thot_url[i]=\\\"hiker://page/third?\\\"+\\\"source=\\\"+hot_url[i]+\\\"index_fypage.html\\\"+\\\"[firstPage=\\\"+hot_url[i]+\\\"index.html]\\\"\\r\\n\\t\\t}\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +hot_title[i]+'</front></strong>',\\r\\n\\t\\t\\turl: hot_url[i],\\r\\n\\t\\t\\tcol_type: \\\"flex_button\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n\\tvar news_title=pdfa(html,\\\"body&&div.news&&a\\\").map(h=>pdfh(h,\\\"a&&title\\\"));\\r\\n\\tvar news_url=pdfa(html,\\\"body&&div.news&&a\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\tfor(var i in news_title){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: news_title[i],\\r\\n\\t\\t\\turl: \\\"hiker://page/end?\\\"+\\\"source=\\\"+news_url[i],\\r\\n\\t\\t\\tcol_type: \\\"text_2\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\nvar list=pdfa(html,\\\"body&&div.m\\\");\\r\\n//二级\\r\\nfor(var i of list){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">'+pdfh(i,\\\"h2&&Text\\\")+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/second?\\\"+\\\"source=\\\"+pd(i,\\\"h2&&a&&href\\\")+\\\"index_fypage.html\\\"+\\\"[firstPage=\\\"+pd(i,\\\"h2&&a&&href\\\")+\\\"index.html]\\\",\\r\\n\\t\\t\\tcol_type: \\\"text_center_1\\\",\\r\\n\\t\\t});\\t\\r\\n//三级\\r\\n\\t\\tvar p_title=pdfa(i,\\\"p&&a:not(.more)\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\t\\tvar p_url=pdfa(i,\\\"p&&a:not(.more)\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\t\\tfor(var k in p_title){\\r\\n\\t\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF5151\\\">' +p_title[k]+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/third?\\\"+\\\"source=\\\"+p_url[k]+\\\"index_fypage.html\\\"+\\\"[firstPage=\\\"+p_url[k]+\\\"index.html]\\\",\\r\\n\\t\\t\\tcol_type: \\\"flex_button\\\",\\r\\n\\t\\t});\\r\\n\\t\\t}\\r\\n//图片\\r\\n\\tvar li_title=pdfa(i,\\\"body&&li\\\").map(h=>pdfh(h,\\\"a&&title\\\"));\\r\\n\\tvar li_url=pdfa(i,\\\"body&&li\\\").map(h=>pd(h,\\\"a&&href\\\"));\\r\\n\\tvar li_img=pdfa(i,\\\"body&&li\\\").map(h=>pd(h,\\\"img&&data-original\\\"));\\r\\n\\tfor(var k in li_title){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle: li_title[k],\\r\\n\\t\\t\\tpic_url:li_img[k],\\r\\n\\t\\t\\turl: li_url[k]+`@lazyRule=.js:var html=fetch(input);var list=[{url:input}];if(/尾页/.test(html)){var n=pdfh(html,\\\"div.page&&a:contains(尾页)&&href\\\").match(/\\\\\\\\d+/g)[1];for(var k=2;k<=n;k++){\\tlist.push({url:input.replace(\\\".html\\\",\\\"_\\\"+k+\\\".html\\\")});\\t}}var pics=bf(list).map(h=>pdfh(h,\\\"div.pic-main&&img&&src\\\"));\\\"pics://\\\"+pics.join(\\\"&&\\\")`,\\r\\n\\t\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n}\\r\\n\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"tag_2\",\"path\":\"tag_2\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nvar url=getUrl();\\r\\nif(/source/.test(getUrl())){url=url.match(/source\\\\=(.+)/)[1]};\\r\\nvar html=fetch(url);\\r\\nif(MY_PAGE==1){\\r\\n\\tvar navtitle=pdfa(html,\\\"body&&div.l-title&&a:not(:contains(更多))\\\").map(h=>pdfh(h,\\\"a&&Text\\\"));\\r\\n\\tvar navurl=pdfa(html,\\\"body&&div.l-title&&a\\\").map(h=>pdfh(h,\\\"a&&href\\\"));\\r\\n\\tfor(var i in navtitle){\\r\\n\\t\\td.push({\\r\\n\\t\\t\\ttitle:  '‘‘’’<strong><font color= \\\"#FF0080\\\">' +navtitle[i]+'</front></strong>',\\r\\n\\t\\t\\turl: \\\"hiker://page/tag_2?\\\"+\\\"source=\\\"+\\\"https://www.930tu.com\\\"+navurl[i]+\\\"fypage@-1@/\\\",\\r\\n\\t\\t\\tcol_type: \\\"scroll_button\\\",\\r\\n\\t\\t});\\r\\n\\t}\\r\\n}\\r\\n\\r\\nvar list=pdfa(html,\\\"body&&div.m-list,0&&li\\\");\\r\\nfor(var i of list){\\r\\n\\td.push({\\r\\n\\t\\ttitle: pdfh(i,\\\"a&&title\\\"),\\r\\n\\t\\turl: \\\"https://www.930tu.com\\\"+pdfh(i,\\\"a&&href\\\")+`@lazyRule=.js:var html=fetch(input);var list=[{url:input}];if(/尾页/.test(html)){var n=pdfh(html,\\\"div.page&&a:contains(尾页)&&href\\\").match(/\\\\\\\\d+/g)[1];for(var k=2;k<=n;k++){\\tlist.push({url:input.replace(\\\".html\\\",\\\"_\\\"+k+\\\".html\\\")});\\t}}var pics=bf(list).map(h=>pdfh(h,\\\"div.pic-main&&img&&src\\\"));\\\"pics://\\\"+pics.join(\\\"&&\\\")`,\\r\\n\\t\\tpic_url:pdfh(i,\\\"img&&data-original\\\"),\\r\\n\\t\\tcol_type: \\\"movie_3\\\",\\r\\n\\t});\\r\\n}\\r\\nsetResult(d);\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/24/zGmcbq.png"},{"last_chapter_rule":"","title":"Unsplash","author":"小棉袄🌞","version":11,"type":"picture","url":"https://unsplash.dogedoge.com/wallpapers","col_type":"card_pic_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \"body&&a[href^=/wallpapers/]\");\nfor (let it of arr) {\n    if (it.includes(\"<img \")) {\n        let url = pdfh(it, \"a&&href\").replace(\"/wallpapers/\", \"\");\n        let id = url == \"phone\" ? \"\" : \"/\" + url\n        url = \"https://unsplash.dogedoge.com/napi/landing_pages/wallpapers\" + id + \"?page=fypage&per_page=12\"\n        d.push({\n            title: pdfh(it, \"div,-1&&Text\"),\n            url: url,\n            col_type: \"card_pic_2\",\n            desc: \"0\",\n            pic_url: pd(it, \"img&&src\")\n        });\n\n    }\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑦美图","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\ntry {\n    var data = JSON.parse(getResCode());\n    data = data.photos\n    for (let it of data) {\n        d.push({\n            title: it.description,\n            url: it.urls.regular + \"@Referer=#.jpg\",\n            col_type: \"pic_3\",\n            desc: \"\",\n            pic_url: it.urls.thumb + \"@Referer=\"\n        });\n    }\n} catch (e) {\n    log(e)\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"口袋微课堂","author":"子丑寅卯","version":2,"type":"music","url":"http://www.xiai123.com/fyAll.html;get;gbk","col_type":"movie_3","class_name":"首页&人教小学语文&EEC&译林版&人教pep&清华&湘鲁版&北师大3&北师大1&人教高中&外研社高中&鲁教版初中","class_url":"index&rjxiaoxueyuwen&eecyy3q&yilinbanyingyu&rjpep&qhbyy1q&xlbyy3q&bsdbyy3q&bsdbyy1q&gaozhongyingyu-rjbxkb&gaozhongyingyu-wysxbz&jjbyy3q-chuzhong","area_name":"外研社3起&外研社1起&辽师大3起&北京1起&川教新路径&鲁科版&","area_url":"wysyy3q&wysyy&lsdbklyy3q&bjbyy1q&cjbxljyy3q&lkbyy3q&","sort_name":"湘少版&新版(精通)&沪牛津&剑桥版&新起点&广东版开心&陕旅版","year_name":"科普版&重庆版&广州版&冀教1起&冀教3起","sort_url":"xsbyy3q&xbyyjt3q&shnjyy3q&jqxxyy3q&xqdyy1q&gdbyy3q&sxlybyy3q","year_url":"kpbyy&cqbyy3q&gzbyy3q&jjbyy1q&jjbyy3q","find_rule":"js:\nvar res = {};\r\nvar d = [];\r\ntry {\r\n    var list = parseDomForArray(getResCode(), 'body&&li');\r\n    for (var j in list) {\r\n        d.push({\r\n            title: parseDomForHtml(list[j], 'span&&Text'),\r\n            pic_url: parseDom(list[j], 'img&&src'),\r\n            url: parseDom(list[j], 'a&&href')\r\n        });\r\n    }\r\n} catch (e) {}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"movie_3","detail_find_rule":"js:\nfunction SMusic(sMusic) {\n    return sMusic.musicList\n}\nvar d = [];\r\r\nlet jsUrl = parseDomForHtml(getResCode(), \".biaoqian1&&script,-1&&src\");\nlet js = request(jsUrl)\r\n// log(js)\r\neval(js);\r\nfor (i in musicList) {\r\n    d.push({\r\n        pic_url: musicList[i].cover,\r\n        title: musicList[i].title.replace(/.*-/,\"\"),\r\n        url: musicList[i].src,\n        desc:musicList[i].singer\n\r\n    });\r\n}\r\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://img1.baidu.com/it/u=1423500682,3588100310&fm=26&fmt=auto"},{"last_chapter_rule":"","title":"古籍导航站","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://www.505dh.com/?ad_od=3&cu=true&utm_source=baidu-pinzhuan&utm_medium=cpc&utm_campaign=t_288551095_baidupinzhuan&utm_term=ba6fb982ce824f8382e493214bab3b10_0_33a17f3877774a89991d1f289a1279cb\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#b7ba6b"},{"last_chapter_rule":"","title":"酷我·Q","author":"团子","version":0,"type":"video","url":"http://m.kuwo.cn/newh5app/api/mobile/v1/home","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/token')).rule)\nvar d = [];\n\nvar html = JSON.parse(request(MY_URL, {\n    headers: {\n        'Token': Token,\n        'Referer': 'http://m.kuwo.cn/newh5app/'\n    }\n})).data\nvar 更多 = '‘‘’’<small><font color=\"#0aa344\">\\t\\t更多</font></small>'\nd.push({\n    title: \"🔎\",\n    col_type: \"input\",\n    desc: \"搜你想听的歌\",\n    url: \"'hiker://search?s=' + input + '&rule=' + MY_RULE.title\"\n})\nd.push({\n    title: '酷我排行榜' + 更多,\n    url: 'hiker://page/phb?id=http://m.kuwo.cn/newh5app/ranklist',\n    col_type: 'text_1',\n    extra: {\n        lineVisible: false\n    }\n})\nhtml.rank_list.map(\n    phb =>\n    d.push({\n        img: phb.pic_icon,\n        url: 'hiker://page/lb?page=fypage&title=' + phb.label + '&id=' + phb.type_id\n    })\n)\nd.push({\n    title: '推荐歌单' + 更多,\n    url: 'http://m.kuwo.cn/newh5app/api/mobile/v1/playlist/rcm/new' + rule,\n    col_type: 'text_1',\n    extra: {\n        lineVisible: false\n    }\n})\nhtml.playlist_list.map(\n    phb =>\n    d.push({\n        title: phb.name,\n        img: phb.pic,\n        url: 'http://m.kuwo.cn/newh5app/api/mobile/v1/music/playlist/' + phb.id +\n            '?pn=fypage&rn=20&ua=&ip=' + rule1\n    })\n)\n/*\nd.push({\n    title: '听书' + 更多,\n    col_type: 'text_1',\n    extra: {\n        lineVisible: false\n    }\n})\nhtml.radio_list.map(\n    phb =>\n    d.push({\n        title: phb.name,\n        img: phb.pic,\n        url: phb.id\n    })\n)\n*/\nd.push({\n    title: 'MV',\n    url: 'hiker://empty',\n    col_type: 'text_center_1',\n    extra: {\n        lineVisible: false\n    }\n})\nvar mv = pdfa(request('http://m.kuwo.cn/newh5/mv/index'), '#messDivId&&li');\nmv.map(\n    mv =>\n    d.push({\n        title: pdfh(mv, 'span&&Text'),\n        img: pdfh(mv, 'img&&data-src'),\n        url: 'http://m.kuwo.cn/newh5/mv/listByPage?id=' + pdfh(mv, 'li&&onclick').split(\"?id=\")[1].split(\"');\")[0] + '&pn=fypage@-1@&rn=30' + '@rule=js:$.require(\"hiker://page/mv\")',\n    })\n)\nsetResult(d)","searchFind":"js:\nvar d = []\neval(JSON.parse(fetch('hiker://page/token')).rule)\nvar rep = str => {return str.replace(/&nbsp;/g,' ').replace(/&apos;/g,'’')}\nJSON.parse(request(MY_URL.replace('hiker://empty##', ''), {\n    headers: {\n        'Token': Token,\n        'Referer': 'http://m.kuwo.cn/newh5app/'\n    }\n})).data.map(\n    list =>\n    d.push({\n        title: rep(list.name),\n        desc: rep(list.artist_name),\n        content: rep(list.album_name),\n        url: list.id + lazy\n    })\n)\nsetResult(d);","search_url":"hiker://empty##http://m.kuwo.cn/newh5app/api/mobile/v1/search/music?key=**&pn=fypage","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"card_pic_3\",\"name\":\"排行榜\",\"path\":\"phb\",\"rule\":\"js:\\nvar d = [];\\neval(request(getParam(\\\"id\\\")).match(/__=.*?;/)[0])\\n__.data[0].ranktype[0].list.map(\\n    phb =>\\n    d.push({\\n        title: phb.name,\\n        img: phb.pic,\\n        url:'hiker://page/lb?page=fypage&title='+phb.name+'&id='+phb.sourceid,\\n    col_type: 'icon_4'\\n    })\\n)\\nfor (let phb of __.data[0].ranktype.splice(1)){\\n    d.push({\\n        title: phb.name,\\n        img: phb.pic,\\n        url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n    })\\n  for (let list of phb.list){\\n\\td.push({\\n           // title: list.name,\\n            img: list.pic,\\n            url: 'hiker://page/lb?page=fypage&title='+list.name+'&id='+list.sourceid\\n        })\\n  }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"MV\",\"path\":\"mv\",\"rule\":\"js:\\nvar d = [];\\nconst list = pdfa(getResCode(), 'body&&li')\\nlist.forEach(video => {\\n    d.push({\\n        title: pdfh(video, 'p&&Text'),\\n        desc: pdfh(video, 'p,1&&Text'),\\n        img: pd(video, 'img&&src'),\\n        url: MY_HOME+pdfh(video, 'li&&onclick').split(\\\"'\\\")[1]+$('').lazyRule(() => {\\n\\t\\t  eval(JSON.parse(fetch('hiker://page/token')).rule)\\nvar mv = request(input, {\\n    headers: {\\n        'Token': Token,\\n        'Referer': 'http://m.kuwo.cn/newh5app/'\\n    }\\n})\\n\\n    eval(mv.match(/__=.*?;/)[0])\\n    return __.data[0].VideoInfo.url\\n}),\\n        col_type: 'movie_2',\\n    })\\n})\\nsetResult(d)\"},{\"col_type\":\"card_pic_3\",\"name\":\"列表\",\"path\":\"lb\",\"rule\":\"js:\\neval(JSON.parse(fetch('hiker://page/token')).rule)\\nvar d = [];\\ntry {\\n    var html = request('http://m.kuwo.cn/newh5app/api/mobile/v1/music/rank/' + getParam(\\\"id\\\") + '?pn=' + MY_PAGE + '&rn=20', {\\n        headers: {\\n            'Token': Token,\\n            'Referer': 'http://m.kuwo.cn/newh5app/'\\n        }\\n    })\\n\\n    JSON.parse(html).data.list.map(\\n        list =>\\n        d.push({\\n            title: list.name,\\n            img: list.pic,\\n            url: list.id + lazy\\n        })\\n    )\\n} catch (e) {\\n    d.push({\\n        title: \\\"<h4 style='text-align:center'>到底了呢！</h4>\\\",\\n        col_type: \\\"rich_text\\\"\\n    });\\n}\\nsetResult(d);\\nsetPageTitle(getParam(\\\"title\\\"))\"},{\"col_type\":\"movie_3\",\"name\":\"Token\",\"path\":\"token\",\"rule\":\"var nn = function() {\\n    function t() {\\n        return (65536 * (1 + Math.random()) | 0).toString(16).substring(1)\\n    }\\n    return t() + t() + t() + t() + t() + t() + t() + t()\\n}()\\nx = function(t) {\\n    var e = getCookie('http://m.kuwo.cn/newh5app/'),\\n        n = e.indexOf(t + \\\"=\\\");\\n    if (-1 != n) {\\n        n = n + t.length + 1;\\n        var o = e.indexOf(\\\";\\\", n);\\n        return -1 == o && (o = e.length),\\n            unescape(e.substring(n, o))\\n    }\\n    return null\\n}\\nvar Token = md5(x(\\\"BAIDU_RANDOM\\\")).toUpperCase()\\nvar lazy = $('').lazyRule(() => {\\n  setPageTitle('')\\n  eval(JSON.parse(fetch('hiker://page/token')).rule)\\n    try {\\n        var lrc = JSON.parse(request('http://m.kuwo.cn/newh5app/api/mobile/v1/music/info/' + input, {\\n            headers: {\\n                'Token': Token,\\n                'Referer': 'http://m.kuwo.cn/newh5app/'\\n            }\\n        })).data.lrc\\n\\nfunction getTime(time) {\\n            let h = parseInt(time / 60 / 60 % 24)\\n            h = h < 10 ? '0' + h : h\\n            let m = parseInt(time / 60 % 60)\\n             m = m < 10 ? '0' + m : m\\n            let s = parseInt(time % 60)\\n             s = s < 10 ? '0' + s : s\\n\\n            return [m+':'+ s+'.00']\\n        }\\n\\n    } catch (e) {}\\n//input= request('http://antiserver.kuwo.cn/anti.s?type=convert_url&format=mp3&response=url&rid=MUSIC_' + input)\\n  \\n  var api = 'http://antiserver.kuwo.cn/anti.s?type=convert_url3&format=mp3&response=url&rid='\\n  var play = bf([{url:api+input+ '&br=320kmp3'},{url:api+input+ '&br=192kmp3'},{url:api+input+ '&br=128kmp3'}]).map(data=>JSON.parse(data).url)\\n//input= JSON.parse(request(api + input+ '&br=128kmp3')).url\\n    return JSON.stringify({\\n        urls: play,names:['320K','192K','128K'],\\nlyric:lrc.map(i=>'['+getTime(i.time)+']'+i.lineLyric).join('\\\\r\\\\n')\\n    })\\n})\\n\\nvar rule1 = $('').rule(() => {\\n    eval(JSON.parse(fetch('hiker://page/token')).rule)\\n    setResult(JSON.parse(request(MY_URL, {\\n        headers: {\\n            'Token': Token,\\n            'Referer': 'http://m.kuwo.cn/newh5app/'\\n        }\\n    })).data.musicList.map(list => ({\\n        title: list.name,\\n        img: list.pic,\\n        url: list.id+'#fullTheme#' + lazy,\\n        col_type: 'card_pic_3'\\n    })))\\n})\\nvar rule = $('').rule(() => {\\n    eval(JSON.parse(fetch('hiker://page/token')).rule)\\n    setResult(JSON.parse(request(MY_URL, {\\n        headers: {\\n            'Token': Token,\\n            'Referer': 'http://m.kuwo.cn/newh5app/'\\n        }\\n    })).data.prettyList.map(list => ({\\n        title: list.name,\\n        img: list.pic,\\n        url: 'http://m.kuwo.cn/newh5app/api/mobile/v1/music/playlist/' +\\n            list.id +\\n            '?pn=fypage&rn=20&ua=&ip=' + rule1,\\n        col_type: 'card_pic_3'\\n    })))\\n})\"}]","proxy":"","icon":"http://h5static.kuwo.cn/www/kuwo-m/img/logo.5fe3300.png"},{"last_chapter_rule":"","title":"好多电子课本网𝔥","author":"Hood","version":1,"type":"other","url":"http://m.haoduoyun.cc/book/fyclass/fyarea;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_3_marquee","class_name":"人教版&北师大版&译林版&外研版&北京版&冀教版&鲁教版&教科版&鄂教版&沪教版&仁爱版&陕西旅游版&粤人版&湘少版&清华版&辽师大版&湘鲁教版","class_url":"rjb&bsb&ylb&wyb&bjb&jjb&ljb&jkb&ejb&hjb&rab&slb&yrb&xsb&qhb&lsb&xljb","area_name":"全部&数学&语文&英语","area_url":"&shuxue&yuwen&yingyu","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".main&&li;\na&&Text;\nimg&&data-original;\n*;\na&&href","searchFind":"","search_url":"http://m.haoduoyun.cc/book/search/?q=**","titleColor":"#ff13b66a","group":"⑦阅读类","detail_col_type":"text_1","detail_find_rule":".bookmulu&&a;\na&&Text.js:input.replace(/　/g,'');\n*;\n*;\na&&href.js:'x5://http://m.haoduoyun.cc'+input","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"小姐姐","author":"京梦","version":2,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"xjj.ii-love.cf\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/134.png"},{"last_chapter_rule":"","title":"爱恋动漫BT2","author":"小棉袄🌞","version":0,"type":"video","url":"hiker://empty##http://m.kisssub.org/","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    url: MY_URL.split(\"##\")[1],\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString((ru) => {\n            if (input.startsWith(\"http://m.kisssub.org/show-\")) {\n                let s = JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://page/dt?rule=\" + ru,\n                    extra: {\n                        url: input\n                    }\n                });\n                return $.toString(s => {\n                    try {\n                        fy_bridge_app.open(s)\n                    } catch (e) {\n                        fy_bridge_app.log(e.toString());\n                    }\n                }, s);\n            }\n            if (!input.includes(\"/search.php?keyword=\")) {\n                return false;\n            }\n            let t = decodeURIComponent(input.split(\"keyword=\")[1]);\n            let s = JSON.stringify({\n                title: t,\n                url: \"hiker://empty\",\n                findRule: \"js:\" + $.toString((u, ru) => {\n                    let js = $.toString(() => {\n                        try {\n                            if (document.title && document.title.length) {\n                                let r = $$$().lazyRule((t) => {\n                                    setPageTitle(t);\n                                }, document.title);\n                                fy_bridge_app.parseLazyRule(r);\n                            }\n                        } catch (e) {\n                            fy_bridge_app.log(e.toString());\n                        }\n                    });\n                    setResult([{\n                        url: u,\n                        col_type: \"x5_webview_single\",\n                        extra: {\n                            canBack: true,\n                            js: js,\n                            urlInterceptor: $.toString((ru) => {\n                                if (input.startsWith(\"http://m.kisssub.org/show-\")) {\n                                    let s = JSON.stringify({\n                                        title: \"详情\",\n                                        url: \"hiker://page/dt?rule=\" + ru,\n                                        extra: {\n                                            url: input\n                                        }\n                                    });\n                                    return $.toString(s => {\n                                        try {\n                                            fy_bridge_app.open(s)\n                                        } catch (e) {\n                                            fy_bridge_app.log(e.toString());\n                                        }\n                                    }, s);\n                                }\n                            }, ru)\n                        },\n                        desc: \"100%&&float\"\n                    }]);\n                }, input, ru)\n            });\n            return $.toString(s => {\n                try {\n                    fy_bridge_app.open(s)\n                } catch (e) {\n                    fy_bridge_app.log(e.toString());\n                }\n            }, s)\n        }, MY_RULE.title)\n    }\n}])","searchFind":"","search_url":"http://m.kisssub.org/show-.*","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"详情\",\"path\":\"dt\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    let html = getResCode();\\n    let Config = {};\\n    let el = pdfh(html, \\\".data_top&&script&&Html\\\");\\n    log(el);\\n    eval(el);\\n    let u = 'magnet:?xt=urn:btih:' + Config['hash_id'];\\n    let t = pdfh(html, \\\"h1.title&&Text\\\");\\n    setPageTitle(t);\\n    d.push({\\n        title: \\\"播放：\\\" + t,\\n        url: u,\\n    });\\n} catch (e) {\\n    log(e.toString())\\n}\\nd.push({\\n    title: \\\"查看原网页\\\",\\n    url: \\\"x5://\\\" + MY_URL,\\n    col_type: \\\"text_1\\\"\\n});\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"爱米推漫画.Dr","author":"道长","version":4,"type":"cartoon","url":"hiker://empty##https://m.imitui.com/list/xuanhuan/?page=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"漫画","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nlet parStr=\"#comic-items&&li;a,1&&Text;img&&src;.info&&Text;a&&href\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\n//log('当前页码:'+page)\nif (!/page=/.test(true_url)) {\n    true_url = true_url + '?page='+page\n} \n//true_url = 获取正确链接();\nlog(true_url)\nlet cates=打造动态分类([{\n        一级分类: 'body&&.filter-item',\n        子分类: 'ul&&li:not(:matches(^$))',\n},{一级分类: '.sorter',\n        子分类: 'ul&&li:not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"#update_list&&.itemBox;a,1&&Text;img&&src;p.txtItme,1&&Text;a,1&&href;.itemTxt&&Text\";\n一级(parStr,true);","search_url":"hiker://empty##/search/?keywords=**&page=fypage","group":"⑦阅读类","detail_col_type":"pic_1_full","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'#comicName&&Text;p.txtItme&&Text;p.txtItme,1&&Text',\n img:'#Cover&&img&&src',\n url:'p.btnItem&&a,1&&href',\n desc:'p.txtItme,2&&Text;p.txtItme,3&&Text',\n content:'p#full-des&&Text.js:input.replace(\"介绍:漫画简介：\",\"\")',\n tabs:'head&&title',\n lists:'#chapter-list-1&&li:not(:matches(🔒))',\n tab_id:'',\n 线路处理:function(u){\n     return \"道长在线\"\n }\n};\nvar 定位 = {\n    //编码:'gb18030',\n    最大页数:function (html){return pdfh(html, \".image-content&&p&&Text\").match(/\\/(\\d+)/)[1]},\n    列表:'.image-content&&img',\n    //图片:'img&&src',\n    链接替换:function (input,p){return input.replace('.html','-'+p+'.html')}\n};\nvar lazy=图片(定位);\nvar 二级处理={\n    选集名称:function(u){\n        //log(u);\n        try{\n        return u.match(/(\\d+)/)[0];\n        }catch(e){\n            return u\n        }\n    }\n};\nvar 动态最新章节=true;\nvar 倒序=false;\nvar 下载='漫画';\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/70.png"},{"last_chapter_rule":"","title":"秀色图","author":"xxs","version":2,"type":"picture","url":"hiker://empty##http://18jtp.xyz##fypage","col_type":"pic_2_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"动漫","year_url":"","find_rule":"js:\nlet d = [];\nconst 分类颜色 = '#098AC1'\nvar 大类定位 = 'body&&#menu'\nvar 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nconst page =MY_URL.split('##')[2]; //获取页码\nMY_URL = MY_URL.split('##')[1];\nlet true_url = getMyVar('html.url', MY_URL);\nif (page != 1) {\n    true_url = true_url.replace('.html', '/page/' + page + '.html'); //拼接页码\n\n}\nvar html = fetch(true_url, {\n    method: 'GET',\n    headers: {\n        'content-type': 'application/json; charst=UTF-8'\n    },\n}) //我统一使用PC UA\nif(true_url.indexOf('category')!=-1){\n    大类定位='body&&.breadcrumb';\n  小类定位 = 'body&&a';\n}\n//获取列表 \nconst fl = parseDomForArray(html, 大类定位); //四大金刚(电影，综艺，动漫，剧集)\n\nlet init_cate = []\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\n// 取四金刚缓存\nconst cate_temp_json = getMyVar(\"html.fl\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n// 取其他分类列表缓存\n\nconst classify_json = getMyVar(\"html.classify\", JSON.stringify(init_cate))\nconst classify_temp = JSON.parse(classify_json)\nif (parseInt(page) === 1) {\n    fl.forEach((category, index) => {\n        //四大金刚的分类\t\n        let sub_classify = parseDomForArray(category, 小类定位);\n        sub_classify.forEach((item, key) => {\n            let title = parseDomForHtml(item, 分类标题)\n            d.push({\n                title: key.toString() === cate_temp[index] ? '““””<b><font color=' + 分类颜色 + '>' + title + ' </font></b>' : title,\n                url: $(parseDom(item, 分类链接)).lazyRule((params) => {\n                    params.cate_temp[params.index] = params.key.toString()\n                    putMyVar(\"html.fl\", JSON.stringify(params.cate_temp))\n                    putMyVar(\"html.url\", input)\n                    refreshPage(true)\n                    return \"hiker://empty\"\n                }, {\n                    cate_temp: cate_temp,\n                    index: index,\n                    key: key,\n                    page: page,\n                }),\n                col_type: 'scroll_button',\n            })\n        })\n        d.push({\n            col_type: \"blank_block\"\n        });\n    })\n\n}\n\nvar list = pdfa(html, '.portfolio-tab-text-pic&&.item-grid');\nif(list.length==0){\nlist = pdfa(html, 'body&&#list&&li');\n}\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        img: pd(list[j], 'img&&data-original'),\n        url: 'hiker://page/detail?url=' + pd(list[j], 'a&&href').replace('play', 'detail'),\n\t     desc:pdfh(list[j],'h3r&&Text')\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nhtml = fetch(MY_URL, {});\n\nvar list = pdfa(html, '#main&&.entry-title');\nfor (var j in list) {\n    d.push({\n        \n       // img: pd(list[j], 'img&&src') + '@Referer=',\n        \n        title: pdfh(list[j], '.entry-title&&Text'),\n       // desc: pdfh(list[j], '.entry-date&&Text')+pdfh(list[j], '.entry-category&&Text'),\n        col_type:'text_1',\n        url: 'hiker://page/detail?url=' + pd(list[j], 'a&&href').replace('play', 'detail') \n    });\n}\nsetResult(d);","search_url":"https://www.jpmn8.com/page/fypage/?s=**","titleColor":"","group":"⑦阅读类","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"detail\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\nvar html = fetch(MY_URL, {headers:{'content-type':'text/html;charst=UTF-8'}});\\nlet pics = [];\\nconst mUrl=MY_URL.match(/http.*?xyz/)[0];\\n\\n//const header = pdfh(html, '#main-content&&Html');\\n/**\\nconst page_link = pdfa(html, '.content&&.pagination1&&a').length-1;\\nvar j =0;\\nwhile(j < page_link) {\\n    if (j != 0) {\\n\\t     page=j;\\n        url = MY_URL.replace('.html' ,'_'+page + '.html');\\n        html = fetch(url, {headers:{'content-type':'text/html;charst=UTF-8'}});\\n    }\\n\\n  j++;\\n}\\n**/\\ntitle = pdfh(html, 'h3&&Text');\\n/**\\nif(pics.length==0){\\n  pics.push(pdfh(html,'.NewsContent&&img&&src'));\\n}\\n**/\\n var cts = pdfa(html, '.art-content&&img');\\n    for (var i in cts) {\\n        let pic = pd(cts[i], 'img&&src');\\n        pics.push(pic)\\n    }\\nd.push({\\n    img: pics[0] + '@Referer=',\\n    url: MY_URL,\\n    col_type: 'pic_2_card',\\n    desc: '0'\\n}, {\\n    title: title,\\n    url: 'pics://' + pics.join('&&'),\\n    col_type: 'text_1'\\n});\\nsetResult(d);\"}]","proxy":"","icon":"https://www.jpmn8.com/img/logo.gif"},{"last_chapter_rule":"","title":"宅男女神","author":"guaner&名城梦&&xxs&&1606142","version":3,"type":"picture","url":"hiker://empty#fypage","col_type":"pic_2_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst Color = \"red\";\nvar mUrl = 'https://www.gnvshen.com';\nvar page = MY_URL.split('#')[1];\nvar true_url = '';\nvar url = '';\nvar html = '';\na = getVar('fnvshenaxe', '4');\nc = getVar('fnvshenaxe2', 'China');\nif (page == 1) {\n    d.push({\n        title: (a == 4 ? '““””<font color=\"red\">首页</font>' : '首页'),\n        pic: 'https://lanmeiguojiang.com/tubiao/movie/49.svg',\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','4');refreshPage(false);'toast://切换至首页'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        title: (a == 5 ? '““””<font color=\"red\">美人榜</font>' : '美人榜'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','5');refreshPage(false);'toast://切换至美人榜'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        title: (a == 6 ? '““””<font color=\"red\">排行</font>' : '排行'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','6');refreshPage(false);'toast://切换至排行'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        title: (a == 7 ? '““””<font color=\"red\">分类</font>' : '分类'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','7');refreshPage(false);'toast://切换至分类'`,\n        col_type: 'text_3'\n    });\n\n    d.push({\n        title: (a == 8 ? '““””<font color=\"red\">情报</font>' : '情报'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','8');refreshPage(false);'toast://切换至情报'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        title: (a == 9 ? '““””<font color=\"red\">搜索</font>' : '搜索'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','9');refreshPage(false);'toast://切换至搜索'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        title: (a == '追图' ? '““””<font color=\"red\">追图</font>' : '追图'),\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','追图');refreshPage(false);'toast://切换至追图'`,\n        col_type: 'text_3'\n    });\n    d.push({\n        col_type: 'line_blank'\n    });\n    if (a !== '追图'&&a !== 9) {\n        d.push({\n            title: '浏览器',\n            url: 'web://' + mUrl,\n            col_type: 'flex_button'\n        })\n    }\n}\nif (a == 4 && page == 1) {\n    url = mUrl;\n    html = fetch(url);\n    var list = [];\n    try {\n        list = pdfa(html, '#hot_n&&ul&&li');\n    } catch (e) {\n        log('热点推荐列表获取失败！');\n    }\n    d.push({\n        title: '热点推荐',\n        col_type: 'long_text',\n        extra: {\n            textSize: 22\n        }\n    })\n    if (list.length != 0) {\n        for (var j in list) {\n            d.push({\n                title: '‘‘’’' + \" <small><font size='15'>\" + pdfh(list[j], 'a&&Text') + \" </font> </small>\" + \"<small><small><font color='#f47983'>\" + \"</font></small></small>\",\n                url: 'hiker://page/detail?url=' + mUrl + pdfh(list[j], 'a&&href') + '#immersiveTheme#',\n                col_type: 'text_1',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    }\n    d.push({\n        title: '‘‘’’' + \" <font size='15'> 最近更新 </font> \" + \"<small><small><font color='#f47983'>更多></font></small></small>\",\n        url: `hiker://empty@lazyRule=.js:putVar2('fnvshenaxe','5');refreshPage(false);'toast://切换至美人榜'`,\n        col_type: \"text_1\"\n    });\n\n    var new_people_list = [];\n    try {\n        new_people_list = pdfa(html, '.post_entry&&ul&&li');\n    } catch (e) {\n        log('最近更新抄不到数据')\n    }\n    if (new_people_list.length != 0) {\n        for (var j in new_people_list) {\n            d.push({\n                title: pdfh(new_people_list[j], 'img&&alt'),\n                pic: pdfh(new_people_list[j], 'img&&data-original'),\n                url: 'hiker://page/list?url=' + mUrl + pdfh(new_people_list[j], 'a&&href') + '#fypage',\n                col_type: 'movie_3'\n            })\n        }\n    }\n} else if (a == 5) {\n    //美人榜\n    /*变量 最好更改\n     ****fnvshen.person.url\n     ****fnvshen.person.fl\n     ****fnvshen.person.classify\n     *\n     *需修改\n     ****翻页  true_url\n     ****列表 fl classify\n     ****分类  sub_classify\n     */\n    //自定义颜色const Color = \"#FA7298\";\n    url = mUrl + '/tag'\n    true_url = getVar('fnvshen.person.url', url);\n    //翻页 根据实际替换\n    true_url = true_url + '/' + page + '.html'\n    var html = fetch(true_url, {\n        headers: {\n            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n        }\n    }) //我统一使用PC UA\n\n    if (parseInt(page) === 1) {\n\t\n\tvar clearPersonLazy=\"@lazyRule=.js:clearVar('fnvshen.person.url');clearVar('fnvshen.person.fl');clearVar('fnvshen.person.classify');toast('清理完成');refreshPage(true);\";\n\td.push({\n        title: '清理',\n        url: clearPersonLazy,\n        col_type: 'flex_button'\n    })\n\t\n        //获取列表 \n        var classify = parseDomForArray(html, 'body&&.tag_div'); //其他分类列表\n\n        let init_cate = []\n        for (let i = 0; i < 20; i++) {\n            init_cate.push(\"0\")\n        }\n        // 取其他分类列表缓存\n\n        var classify_json = getVar(\"fnvshen.person.classify\", JSON.stringify(init_cate))\n        var classify_temp = JSON.parse(classify_json)\n        //其他分类\n        classify.forEach((category, index) => {\n            let sub_classify = parseDomForArray(category, 'ul&&li&&a'); ////需修改\n\n            sub_classify.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                if (title !== '') {\n                    d.push({\n                        title: key.toString() === classify_temp[index] ? '““””<b><font color=' + Color + '>' + title + ' </font></b>' : title,\n                        url: $(mUrl + parseDomForHtml(item, 'body&&a&&href')).lazyRule((params) => {\n                            params.classify_temp[params.index] = params.key.toString()\n                            putVar(\"fnvshen.person.classify\", JSON.stringify(params.classify_temp))\n                            putVar(\"fnvshen.person.url\", input)\n                            refreshPage(true)\n                            return \"hiker://empty\"\n                        }, {\n                            classify_temp: classify_temp,\n                            index: index,\n                            key: key,\n                            page: page,\n                        }),\n                        col_type: 'scroll_button',\n                    })\n                }\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        })\n    }\n    var beauty_list = [];\n    try {\n        beauty_list = pdfa(html, '.listdiv&&ul&&.beautyli');\n    } catch (e) {\n        log('美人榜数据没有');\n    }\n    if (beauty_list.length != 0) {\n        beauty_list.forEach(item => {\n            d.push({\n                title: pdfh(item, 'strong&&Text'),\n                pic: pdfh(item, 'img&&data-original'),\n                url: 'hiker://page/list?url=' + mUrl + pdfh(item, 'a&&href') + '#fypage',\n                col_type: 'pic_2_card'\n            })\n\n        })\n    }\n} else if (a == 6) {\n    //美人分类\n    /*变量 最好更改\n     ****fnvshen.ranking.url\n     ****fnvshen.ranking.fl\n     ****fnvshen.ranking.classify\n     *\n     *需修改\n     ****翻页  true_url\n     ****列表 fl classify\n     ****分类  sub_classify\n     */\n    url = mUrl + '/rank/sum'\n    true_url = getVar('fnvshen.ranking.url', url);\n    //翻页 根据实际替换\n    if (parseInt(page) !== 1) {\n        true_url = true_url + '/' + page + '.html'\n    }\n    var html = fetch(true_url, {\n        headers: {\n            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n        }\n    }) //我统一使用PC UA\n\n    if (parseInt(page) === 1) {\n\t\n\tvar clearRankingLazy=\"@lazyRule=.js:clearVar('fnvshen.ranking.url');clearVar('fnvshen.ranking.fl');clearVar('fnvshen.ranking.classify');toast('清理完成');refreshPage(true);\";\n\td.push({\n        title: '清理',\n        url: clearRankingLazy,\n        col_type: 'flex_button'\n    })\n\t\n        //获取列表 \n        var classify = parseDomForArray(html, 'body&&.hot_type_right'); //其他分类列表\n\n        let init_cate = []\n        for (let i = 0; i < 20; i++) {\n            init_cate.push(\"0\")\n        }\n        // 取其他分类列表缓存\n\n        var classify_json = getVar(\"fnvshen.ranking.classify\", JSON.stringify(init_cate))\n        var classify_temp = JSON.parse(classify_json)\n        //其他分类\n        classify.forEach((category, index) => {\n            let sub_classify = parseDomForArray(category, 'ul&&li'); ////需修改\n\n            sub_classify.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                if (title !== '') {\n                    d.push({\n                        title: key.toString() === classify_temp[index] ? '““””<b><font color=' + Color + '>' + title + ' </font></b>' : title,\n                        url: $(mUrl + parseDomForHtml(item, 'body&&a&&href')).lazyRule((params) => {\n                            params.classify_temp[params.index] = params.key.toString()\n                            putVar(\"fnvshen.ranking.classify\", JSON.stringify(params.classify_temp))\n                            putVar(\"fnvshen.ranking.url\", input)\n                            refreshPage(true)\n                            return \"hiker://empty\"\n                        }, {\n                            classify_temp: classify_temp,\n                            index: index,\n                            key: key,\n                            page: page,\n                        }),\n                        col_type: 'scroll_button',\n                    })\n                }\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        })\n    }\n    var rank_list = [];\n    try {\n        rank_list = pdfa(html, '.rankdiv&&ul&&li');\n    } catch (e) {\n        log('榜单数据错误')\n    }\n    if (rank_list.length != 0) {\n        for (var j in rank_list) {\n            var namerank_list = [];\n            try {\n                namerank_list = pdfa(rank_list[j], '.rankli_div&&span');\n            } catch (e) {\n                log('榜单数据错误2')\n            }\n            if (namerank_list.length != 0) {\n                var name = '';\n                var desc = '';\n                namerank_list.forEach((item, key) => {\n                    if (key <= 1) {\n                        name += pdfh(item, 'span&&Text')\n                    } else {\n                        desc += pdfh(item, 'span&&Text') + '\\n'\n                    }\n\n                })\n                d.push({\n                    title: name,\n                    pic: pdfh(rank_list[j], 'img&&src'),\n                    desc: desc,\n                    url: 'hiker://page/list?url=' + mUrl + pdfh(rank_list[j], 'a&&href') + '#fypage',\n                    col_type: 'movie_1_vertical_pic'\n                })\n\n            }\n        }\n    }\n\n} else if (a == 7) {\n    //美人分类\n    /*变量 最好更改\n     ****fnvshen.comment.url\n     ****fnvshen.comment.fl\n     ****fnvshen.comment.classify\n     *\n     *需修改\n     ****翻页  true_url\n     ****列表 fl classify\n     ****分类  sub_classify\n     */\n    //自定义颜色const Color = \"#FA7298\";\n    url = mUrl + '/gallery'\n    true_url = getVar('fnvshen.comment.url', url);\n    //翻页 根据实际替换\n    if (parseInt(page) !== 1) {\n        true_url = true_url + '/' + page + '.html'\n    }\n\n    var html = fetch(true_url, {\n        headers: {\n            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n        }\n    }) //我统一使用PC UA\n\n    if (parseInt(page) === 1) {\n\tvar clearCommentLazy=\"@lazyRule=.js:clearVar('fnvshen.comment.url');clearVar('fnvshen.comment.fl');clearVar('fnvshen.comment.classify');toast('清理完成');refreshPage(true);\";\n\td.push({\n        title: '清理',\n        url: clearCommentLazy,\n        col_type: 'flex_button'\n    })\n\t\n        //获取列表 \n        var classify = parseDomForArray(html, 'body&&.tag_div'); //其他分类列表\n\n        let init_cate = []\n        for (let i = 0; i < 20; i++) {\n            init_cate.push(\"0\")\n        }\n        // 取其他分类列表缓存\n\n        var classify_json = getVar(\"fnvshen.comment.classify\", JSON.stringify(init_cate))\n        var classify_temp = JSON.parse(classify_json)\n        //其他分类\n        classify.forEach((category, index) => {\n            let sub_classify = parseDomForArray(category, 'ul&&li&&a'); ////需修改\n\n            sub_classify.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                if (title !== '') {\n                    d.push({\n                        title: key.toString() === classify_temp[index] ? '““””<b><font color=' + Color + '>' + title + ' </font></b>' : title,\n                        url: $(mUrl + parseDomForHtml(item, 'body&&a&&href')).lazyRule((params) => {\n                            params.classify_temp[params.index] = params.key.toString()\n                            putVar(\"fnvshen.comment.classify\", JSON.stringify(params.classify_temp))\n                            putVar(\"fnvshen.comment.url\", input)\n                            refreshPage(true)\n                            return \"hiker://empty\"\n                        }, {\n                            classify_temp: classify_temp,\n                            index: index,\n                            key: key,\n                            page: page,\n                        }),\n                        col_type: 'scroll_button',\n                    })\n                }\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        })\n    }\n    var classification_list = [];\n    try {\n        classification_list = pdfa(html, '.listdiv&&ul&&li');\n    } catch (e) {\n        log('分类数据错误');\n    }\n    if (classification_list.length != 0) {\n        for (var j in classification_list) {\n            d.push({\n                title: pdfh(classification_list[j], 'img&&alt'),\n                pic: pdfh(classification_list[j], 'img&&data-original'),\n                url: 'hiker://page/detail?url=' + mUrl + pdfh(classification_list[j], 'a&&href') + '#gameTheme#',\n                col_type: 'pic_2_card'\n            })\n        }\n    }\n\n} else if (a == 8) {\n    //情报\n    url = mUrl + '/article/' + page + '.html';\n    html = fetch(url);\n    var article_list = [];\n    article_list = pdfa(html, 'body&&.other_girlli');\n    if (article_list.length != 0) {\n        for (var j in article_list) {\n            d.push({\n                title: '‘‘’’' + \" <font size='15'>\" + pdfh(article_list[j], '.other_girlli&&a&&Text') + \" </font> \" + \"<small><small><font color='#f47983'>\" + pdfh(article_list[j], '.date_span&&Text') + \"</font></small></small>\",\n                url: 'hiker://page/detail?url=' + mUrl + pdfh(article_list[j], 'a&&href') + '#immersiveTheme#',\n                col_type: 'text_1',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    }\n\n}else if(a==9){\n if(page==1){\n  d.push({\n        url: \"'toast://搜索成功';refreshPage()\",\n        col_type: 'input',\n        title: '搜索',\n        desc: \"搜索\",\n        extra: {\n            onChange: \"putMyVar('my-search',input)\"\n        }\n    })\n}\nlet searchStr = getMyVar(\"my-search\");\nif(searchStr){\nhtml = fetch(mUrl + '/ajax/girl_query_handler.ashx', {\n    headers: {\n     \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:102.0) Gecko/20100101 Firefox/102.0\",\n\t\t\"Content-Type\":\"application/x-www-form-urlencoded; charset=UTF-8\",\n    },\n    body: \"name=\" + searchStr ,\n    method: 'POST'\n\n}) //我统一使用PC UA\nif(html!=''){\n  data =[];\n  try{\n\tif(html!==''){\n\t  data=html.match(/data=\\[(.*?)\\]/)[1].split(\"},\");\n\t}\n  }catch(e){}\n}\ndata.forEach((item,length)=>{\n if((length+1)!=data.length){\n   item =item+\"}\"\n }\n  Json =  eval(\"(\"+item+\")\");//JSON.parse(item); \n d.push({\n\ttitle:Json.name,\n    url: 'hiker://page/list?url=' + mUrl + \"/girl/\"+ Json.id+\"/\"+ '#fypage',\n\tcol_type:'text_1',\n   extra: {\n\t href:mUrl + \"/girl/\"+ Json.id+\"/\",\n   }\n})\n})\n}\n}else if(a=='追图'){\n  r = page == 1 ? readFile('fnvshen.txt') :false;\n        Json = r ? JSON.parse(r) : [];\n        Json.forEach((x) => {\n            x.visible ? d.push(x) : null\n        });\n        \n        if (!d.length && page == 1) {\n            d.push({\n                title: \"暂无订阅主播，快去搜索订阅吧\",\n                col_type: \"text_center_1\",\n                url: \"toast://快去搜索吧\"\n            })\n        }\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"rich_text","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n    categoryGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',\n})\nfileExist('fnvshen.txt')?fileExist('fnvshen.txt'):saveFile(\"fnvshen.txt\",\"\");","pages":"[{\"col_type\":\"movie_3\",\"name\":\"CSS格式\",\"path\":\"css\",\"rule\":\"function getNewText(text,css){\\n   return '<'+css+'>' + text + '</'+css+'>';\\n}\\n\\nfunction getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"方法云集\",\"path\":\"uses\",\"rule\":\"function getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\n\\nfunction getRangeColors(){\\n    //颜色 代码来自Rx大佬\\n    let Colors=[\\\"4\\\",\\\"5\\\",\\\"0\\\",\\\"1\\\",\\\"A\\\",\\\"3\\\",\\\"8\\\",\\\"9\\\",\\\"B\\\",\\\"C\\\",\\\"D\\\",\\\"E\\\",\\\"6\\\",\\\"7\\\",\\\"F\\\"];\\n    let Color = \\\"#\\\";\\n    for (let i=0;i<6;i++){\\n        let num=Math.ceil((Math.random()*15))-1;\\n        Color+=Colors[num];\\n    }\\n    return Color;\\n}\\n\\nfunction getBaiduYunCode(content){\\n    if(content.includes(\\\"pan.baidu.com\\\")){\\n        var code = content.split(\\\"提取码：\\\");\\n        if(code.length>1) copy(code[1].substring(0,4));\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"classify\",\"rule\":\"js:\\nvar d = [];\\nconst Color = \\\"#FA7298\\\";\\nvar mUrl = 'https://www.gnvshen.com';\\nvar page = MY_URL.split('#')[1];\\nvar true_url=MY_URL.replace('#'+page,'');\\nvar url = MY_URL.replace('#'+page,'');\\nvar html = '';\\n//美人分类\\n    //翻页 根据实际替换\\n    if (parseInt(page) !== 1) {\\n        true_url = true_url+'/'+page+'.html'\\n        }\\n    \\n    var html = fetch(true_url, {\\n        headers: {\\n            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n        }\\n    }) //我统一使用PC UA\\n\\n    \\n    var list = pdfa(html, '.listdiv&&ul&&li');\\n    for (var j in list) {\\n        d.push({\\n            title: pdfh(list[j], 'img&&alt'),\\n            pic: pdfh(list[j], 'img&&data-original'),\\n            url: 'hiker://page/detail?url=' +mUrl + pdfh(list[j], 'a&&href')+'#immersiveTheme#',\\n            col_type: 'pic_2_card'\\n        })\\n\\n    }\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"视图处理\",\"path\":\"view\",\"rule\":\"//获取重定向地址\\nfunction getRedirectAddress(url){\\n    let urlRedirect = '';\\n    try{\\n        let urlCode = fetch(url,{redirect:false,withHeaders:true});\\n        urlRedirect = JSON.parse(urlCode).headers.location[0];\\n    }catch(e){}\\n    return urlRedirect;\\n}\\n\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\n//删除重定向图片链接\\nfunction deleteInvalidImgTag(context, searchValue,replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl != '') {\\n                if(getRedirectAddress(imgUrl) != ''){\\n                    returnValue = returnValue.replace(item,replaceValue);\\n                }\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction GetImgTagArrayString(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = '';\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            returnValue += matchArray[i];\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction imgTagGetUrlArray(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = [];\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue.push(imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\n\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getVar('zhainanya.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagOne(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '\\\\n<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getVar('zhainanya.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a>&nbsp;&nbsp;&nbsp;<a href=\\\"web://' + imgUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction imgTagReplacementOne(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTagOne(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet videoError = '<p><font color=\\\"grey\\\">视频暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction videoTag(context, videoUrl) {\\n    let replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + (videoUrl) + '\\\">[点击查看视频]</a></p>';\\n    if (getVar('zhainanya.hideImg')=='1') {\\n        replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + videoUrl + '\\\">[点击查看视频]</a></p>';\\n    }\\n    return context.replace(/<video data-v>/g, replaceString);\\n}\\nfunction videoTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(source|video).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let videoUrl = RegExp.$3;\\n            if(videoUrl.indexOf(\\\"//\\\")==0){videoUrl = \\\"https:\\\" + videoUrl;}\\n            if(videoUrl.includes(\\\"zhainanmi\\\")) continue;\\n            if (videoUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = videoTag(returnValue, videoUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet linkError = '<p><font color=\\\"grey\\\">链接暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction linkTag(context, linkUrl) {\\n    let replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + (linkUrl) + '\\\">[点击查看链接]</a></p>';\\n    if (getVar('zhainanya.hideImg')=='1') {\\n        replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + linkUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<link data-v>/g, replaceString);\\n}\\nfunction linkTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(iframe).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let linkUrl = RegExp.$3;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = linkTag(returnValue, linkUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction cssTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(div|p|strong)>.*?<\\\\/(div|p|strong)>/.test(item);\\n            let css = RegExp.$2;\\n            if (css.match(/^\\\\s*$/)) {\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析搜索\",\"path\":\"one\",\"rule\":\"function getItem(html,colors){\\n    var list = parseDomForArray(html, '.content&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], '.thumb&&data-original');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.post-comments&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        let time = \\\"🕧日期: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.text-muted.time--a&&Text').replace(\\\"发布于\\\",\\\"\\\") +' </font></b>';\\n        let like = \\\"💜点赞: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.text-muted.views&&a,0&&span&&Text') +' </font>&nbsp;&nbsp;</b>';\\n        let comment =  \\\"  💬评论: \\\" + '““””<b><font color='+ colors + '>' + commentNum +' </font></b>';\\n\\n        let tabs=\\\"\\\\n\\\\n\\\";\\n\\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: time+tabs+like+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\\n\\nfunction getSearchItem(html){\\n    var list = parseDomForArray(html, '.content&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], '.thumb&&data-original');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.post-comments&&Text').replace(/评论(|)/g,'');\\n        }catch(e){}\\n\\n        // let time = \\\"🕧: \\\" + parseDomForHtml(list[i], '.text-muted.time--a&&Text').replace(\\\"发布于\\\",\\\"\\\");\\n        let like = \\\"💜: \\\" + parseDomForHtml(list[i], '.text-muted.views&&a,0&&span&&Text');\\n        let comment =  \\\"💬: \\\" + commentNum;\\n\\n        let tabs=\\\"   \\\";\\n        \\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: like+tabs+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"列表\",\"path\":\"list\",\"rule\":\"js:\\nvar d = [];\\nvar mUrl = 'https://www.gnvshen.com';\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\n\\nvar page = MY_URL.split('#')[1];\\nvar true_url = MY_URL.replace('#' + page, '');\\n\\n\\n\\nhtml = fetch(true_url, {});\\nlet img = pdfh(html, '.infoleft_imgdiv&&img&&src');\\nlet name = pdfh(html, '.div_h1&&h1&&Text&&Html');\\nlet message = pdfa(html, '.infodiv&&tr').join('<br/>');\\nlet infocontent = pdfh(html, '.infocontent&&Html');\\nlet Json = {\\n    \\\"name\\\": name,\\n    \\\"img\\\": img,\\n    \\\"url\\\": true_url,\\n};\\nlurl = $(\\\"#noLoading#\\\").lazyRule((Json) => {\\n    clearVar(\\\"url\\\");\\n    r = readFile('fnvshen.txt');\\n    j = r ? JSON.parse(r) : [];\\n    t = Json ? Json : null;\\n    if (t) {\\n        flag = true;\\n        j.forEach(x => x.extra.href == t.url ? (flag = false) : null)\\n        if (flag) {\\n            j.push({\\n                visible: true,\\n                delete: false,\\n                title: t.name,\\n                img: t.img + \\\"@Referer=\\\",\\n                url:\\t\\t 'hiker://page/list?url=' + t.url + '#fypage',\\n                extra: {\\n                    href: String(t.url)\\n                },\\n                data: {\\n                    img: t.img + \\\"@Referer=\\\"\\n                }\\n            })\\n            saveFile('fnvshen.txt', JSON.stringify(j));\\n            back(true);\\n        } else {\\n\\n            back(true);\\n\\n        }\\n        return 'toast://已订阅该博主';\\n    }\\n}, Json);\\nif (page == 1) {\\n    d.push({\\n        title: name,\\n        pic: img,\\n        col_type: 'movie_1_vertical_pic'\\n    })\\n    d.push({\\n        title: \\\"订阅博主\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: lurl\\n    })\\n\\n    d.push({\\n        title: '<span>' + message + '</span>',\\n        col_type: 'rich_text'\\n    })\\n    d.push({\\n        title: infocontent,\\n        col_type: 'rich_text'\\n    })\\n}\\nvar number = '';\\ntry {\\n    number = pdfh(html, '.archive_more&&a&&Text&&Html');\\n} catch (e) {}\\nif (number == ''&&page!==1) {\\n    var list = pdfa(html, '.photo_ul&&ul&&li');\\n    for (var j in list) {        \\n        d.push({\\n            title: pdfh(list[j], 'img&&title'),\\n            pic: pdfh(list[j], 'img&&src') ? pdfh(list[j], 'img&&src') : pdfh(list[j], 'img&&data-original'),\\n            url: 'hiker://page/detail?url=' + mUrl + pdfh(list[j], 'a&&href') + '#gameTheme#',\\n            col_type: 'pic_2_card'\\n        })\\n    }\\n} else {\\n    var url = true_url + 'album/';\\n    if (page !== 1) {\\n        var url = true_url + 'album/' + page + '.html';\\n    }\\n\\n    html = fetch(url, {});\\n    try {\\n        var list = pdfa(html, '#dphoto&&.ck-item&&.ck-initem');\\n        if (list.length == 0) {\\n            list = pdfa(html, '#photo_list&&ul&&li');\\n        }\\n    } catch (e) {\\n        list = pdfa(html, '#photo_list&&ul&&li');\\n    }\\n\\t  try {\\n    for (var j in list) {\\n        d.push({\\n            title: pdfh(list[j], 'img&&title'),\\n            pic: pdfh(list[j], 'img&&src') ? pdfh(list[j], 'img&&src') : pdfh(list[j], 'img&&data-original'),\\n            url: 'hiker://page/detail?url=' + mUrl + pdfh(list[j], 'a&&href') + '#gameTheme#',\\n            col_type: 'pic_2_card'\\n        })\\n    }\\n\\t }catch (e) {}\\n}\\nsetResult(d);\"},{\"col_type\":\"rich_text\",\"name\":\"详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\n d.push({col_type: \\\"line_blank\\\"});d.push({col_type: \\\"line_blank\\\"});d.push({col_type: \\\"line_blank\\\"});\\n//观看文章模式 默认模式图文并茂/0 看图模式/1 省流模式/2 阅读模式/3\\nif (getVar('fnvshen.showMode') == '') putVar('fnvshen.showMode', '0');\\n\\n\\n//图片显示模式 网页内嵌图片/0 默认海阔显示图片/1\\nif (getVar('fnvshen.viewPicMode') == '') putVar('fnvshen.viewPicMode', '1');\\nif (getVar('fnvshen.openComment') == '') putVar('fnvshen.openComment', '0');\\n\\nif (getVar('fnvshen.viewPicMode') == '0' && getVar('fnvshen.hideImg') == '') putVar('fnvshen.hideImg', '1');\\n\\nif (getVar('fnvshen.viewPicMode') == '1' && getVar('fnvshen.bigImg') == '') putVar('fnvshen.bigImg', 'pic_1_full');\\n\\n\\nlet imageTextArray = ['🌃图文并茂', '👁看图模式', '📱省流模式', '📚阅读模式'];\\nputVar('fnvshen.imageTextMode', imageTextArray[parseInt(getVar('fnvshen.showMode'))]);\\n//看图模式\\nlet piclist='';\\nlet viewPicArray = [{\\n    0: \\\"显示图片🌌\\\",\\n    1: \\\"隐藏图片🔗\\\"\\n}, {\\n    pic_1_full: \\\"默认大图🌈\\\",\\n    pic_3: \\\"精美小图✨\\\"\\n}];\\nif (getVar('fnvshen.viewPicMode') == '1') putVar('fnvshen.imgMode', viewPicArray[1][getVar('fnvshen.bigImg')]);\\nif (getVar('fnvshen.viewPicMode') == '0') putVar('fnvshen.imgMode', viewPicArray[0][parseInt(getVar('fnvshen.hideImg'))]);\\n\\nvar picType = '';\\nif (getVar('fnvshen.viewPicMode') == '1') picType = `@lazyRule=.js:putVar('fnvshen.bigImg',getVar('fnvshen.bigImg')!=='pic_3'?'pic_3':'pic_1_full');refreshPage();'toast://已切换图片类型';\\\">`;\\nif (getVar('fnvshen.viewPicMode') == '0') picType = `@lazyRule=.js:putVar('fnvshen.hideImg',getVar('fnvshen.hideImg')!=='0'?'0':'1');refreshPage();'toast://已切换图片类型';\\\">`;\\n\\nvar commentArray = ['已关闭评论', '已开启评论'];\\nputVar('fnvshen.openCommentString', commentArray[parseInt(getVar('fnvshen.openComment'))])\\nvar commentType = `@lazyRule=.js:putVar('fnvshen.openComment',getVar('fnvshen.openComment')!=='0'?'0':'1');refreshPage();'toast://'+getVar('fnvshen.openCommentString');\\\">`;\\n\\n// if(getVar('fnvshen.showMode')=='0') putVar('fnvshen.imageTextMode','🌃图文并茂');\\n// if(getVar('fnvshen.showMode')=='1') putVar('fnvshen.imageTextMode','👁看图模式');\\n// if(getVar('fnvshen.showMode')=='2') putVar('fnvshen.imageTextMode','🌐省流模式');\\n// if(getVar('fnvshen.showMode')=='3') putVar('fnvshen.imageTextMode','📚阅读模式');\\n\\n\\n\\nvar goodColor = \\\"#4000FF\\\";\\nvar mUrl = MY_URL;\\nvar html = fetch(mUrl);\\n//var html=getResCode();\\n/**\\nd.push({\\ntitle:MY_URL,\\ncol_type:'long_text'\\n})\\n**/\\n\\neval(JSON.parse(request(\\\"hiker://page/css\\\")).rule);\\neval(JSON.parse(request(\\\"hiker://page/view\\\")).rule);\\n\\n\\nfunction getBaiduYunCode(content) {\\n    if (content.includes(\\\"pan.baidu.com\\\")) {\\n        let code = content.split(\\\"提取码：\\\");\\n        if (code.length > 1) copy(code[1].substring(0, 4));\\n    }\\n}\\n\\nvar maxPage = 1;\\nvar p1  = '';\\ntry {\\nvar htmlPage= fetch(mUrl,{\\n        headers: {\\n            'User-Agent': 'Mozilla/5.0 (Linux;;Android 11)'\\n        }\\n    });\\n    //  maxPage =  parseInt (parseDomForArray(html,'.article-paging&&a').length+1);\\n    /**let pageList = parseDomForArray(html, '#pages&&a');\\n    maxPage = parseInt(pdfh(pageList[pageList.length - 2], 'a&&Text'));**/\\n\\tp1= pdfh(htmlPage,'#pagediv&&.page&&Text&&Html')\\n\\tmaxPage=parseInt(p1.split('/')[1]);\\n\\t\\n} catch (e) {}\\n/**\\nd.push({\\ntitle:maxPage,\\ncol_type:'long_text'\\n})**/\\nlet headerTitle = getBigText(getStrongText(pdfh(html, '#htilte&&Text&&Html')?pdfh(html, '#htilte&&Text&&Html'):pdfh(html, '.article_title_div&&Text&&h1&&Html'))) + ' ' + getSmallText(getAddressTag(mUrl, '[查看原文👀]'));\\n\\n/**点赞数量\\nlet goodCount = \\\"👍🏻点\\\"+pdfh(html, '.action.action-like&&Text');\\ngoodCount = '<font color=\\\"' + goodColor + '\\\">' + goodCount \\n+ `<small><small><sup><a href=\\\"hiker://empty` + commentType + getVar('fnvshen.openCommentString').substring(1,2) + \\\"</a></sup></small></small></font>\\\";\\n**/\\n\\nlet brower = `<big><a href=\\\"hiker://empty@lazyRule=.js:putVar('fnvshen.browserLink',getVar('fnvshen.browserLink')!==''?'':'web://');refreshPage();'toast://已切换浏览模式';\\\">` + (getVar('fnvshen.browserLink') !== '' ? \\\"🌐\\\" : \\\"🌆\\\") + \\\"</a></big>\\\";\\n//标签\\nlet subType = [];\\ntry{\\n    subType = parseDomForArray(html,'#utag&&li');\\n}catch(e){}\\n\\n   \\n\\n\\n   \\nlet type=getCodeText(\\\"🏷️标签: \\\");\\n/**\\nfor(let i=0;i<subType.length;i++){\\n    type += getCodeText(pdfh(subType[i],'a&&Text'));\\n}\\n   **/\\nlet comment = [];\\ntry {\\n    comment = parseDomForArray(html, '.commentlist&&.depth-1');\\n} catch (e) {}\\n\\nd.push({\\n    title: headerTitle + '&nbsp;' /** +goodCount+'&nbsp;'**/ + brower +'<br>'+type ,\\n    col_type: 'rich_text'\\n});\\n//头\\nmUrl2='https://www.gnvshen.com';\\nfor(let i=0;i<subType.length;i++){\\n     if(pdfh(subType[i],'a&&href').indexOf('girl')!==-1){\\n        url2='hiker://page/list?url=' +mUrl2+ pdfh(subType[i],'a&&href') + '#fypage'\\n    }else{\\n        \\n       url2='hiker://page/classify?url=' +mUrl2+ pdfh(subType[i],'a&&href') + '#fypage'\\n  \\n    }\\nd.push({\\n    title: '‘‘’’' + \\\"<small><font color='red'>\\\" + pdfh(subType[i],'a&&Text') + \\\"</font></small>\\\",\\n      col_type: 'flex_button',\\n      url:url2\\n      });\\n}\\n\\n/**\\nvar lb = fetch(\\\"hiker://files/图集谷/我的美图集.txt\\\", {});\\nvar info = MY_URL.split('##')[1];\\nvar nam = info;\\nif (info) {\\n    info = info.split('&&');\\n\\n    //info[0]=nam;\\n    info = info.join('&&');\\n    var q = info.split('&&')[1];\\n    var pd = lb.includes(q);\\n    var la = pd ? getVar('tja2') : getVar('tja1');\\n    d.push({\\n        title: (pd ? '‘‘取消追图’’' : '““+追图””'),\\n        url: 'hiker://empty#' + info + la,\\n        col_type: 'flex_button'\\n    },{\\ntitle:'看图',\\nurl:piclist,\\ncol_type: 'flex_button'\\n});\\n}\\t\\t\\t\\t\\t\\t\\t   \\nd.push({\\n    col_type: 'line'\\n});\\n**/\\nvar tips = getColorText('温馨提示:图片清晰度较高，容易导致崩溃！！！建议小图访问链接查看', '#F47920');\\n// if(getVar('img')=='pic_3') \\n// d.push({title: tips,});\\nd.push({\\n    col_type: \\\"rich_text\\\",\\n    title: `<small>当前<a href=\\\"hiker://empty@lazyRule=.js:putVar('fnvshen.viewPicMode',getVar('fnvshen.viewPicMode')!=='0'?'0':'1');refreshPage();'toast://已切换图片显示模式';\\\">` + (getVar('fnvshen.viewPicMode') !== '0' ? \\\"海阔模式\\\" : \\\"网页模式\\\") + \\\"</a>👈</small>\\\" +\\n        `<small>为：<a href=\\\"hiker://empty` + picType + getVar('fnvshen.imgMode') + \\\"</a></small>\\\" +\\n        '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' +\\n        `<small>模式：<a href=\\\"hiker://empty@lazyRule=.js:if(getVar('fnvshen.showMode')=='3'){putVar('fnvshen.showMode','0')}else{putVar('fnvshen.showMode',(parseInt(getVar('fnvshen.showMode'))+1).toString());};refreshPage();'toast://已切换文章模式';\\\">` + getVar('fnvshen.imageTextMode') + \\\"</a></small>\\\" +\\n        \\\"<br><small><small>\\\" + tips + \\\"</small></small>\\\"\\n});\\nvar content = '';\\n/**\\n用于累加网站网页\\n**/\\nfor (let i = 1; i <= maxPage; i++) {\\n    if (i > 1){\\n\\t   var url = mUrl.replace('#gameTheme#','')+ i + \\\".html\\\"\\n\\thtml = fetch(url, {});\\n\\t\\n\\t}else{\\n\\t content += \\\"<p>\\\"+pdfh(html, '#ddesc&&Html')+ \\\"</p>\\\";\\n content += \\\"<p>\\\"+ pdfh(html, '#dinfo&&Html')+ \\\"</p>\\\";\\n\\t} \\n    content += pdfh(html, '#hgallery&&Html')?pdfh(html, '#hgallery&&Html'):pdfh(html, '#articleDiv&&Html');\\t\\t\\t\\t\\t\\t   \\n}\\ncontent = content\\n    .replace(/<br>/g, '')\\n    .replace(/\\\\n<p>&nbsp;<\\\\/p>/g, '')\\n    .replace(/\\\\n<p><\\\\/p>/g, '')\\n    .replace(/<pre>([\\\\s\\\\S]*?)<\\\\/pre>/g, '');\\n// .replace(/<img([\\\\s\\\\S]*?)!!([\\\\s\\\\S]*?)>/g,'');\\n//非常耗时和内存\\n// .replaceWithCallback(/<img([\\\\s\\\\S]*?)>/g, '', deleteInvalidImgTag);\\nif (getVar('fnvshen.showMode') == '2' || getVar('fnvshen.showMode') == '3') content = content.replace(/<img([\\\\s\\\\S]*?)>/g, '')\\n    .replace(/\\\\n<p><strong><\\\\/strong><\\\\/p>/g, '');\\n\\nif (getVar('fnvshen.viewPicMode') == '1') {\\n    let contentlist = content.split('\\\\n');\\n    let htmlList = '';\\n    for (let j = 0; j < contentlist.length; j++) {\\n        let imglist = imgTagGetUrlArray(contentlist[j], /<img([\\\\s\\\\S]*?)>/g);\\n        let quoteContent = contentlist[j];\\n        //文章内容-简单文本\\n        quoteContent = quoteContent\\n            .replace(/<img([\\\\s\\\\S]*?)>/g, '')\\n            // .replace(/<(iframe|sources|video)([\\\\s\\\\S]*?)<\\\\/(iframe|sources|video)>/g,'')\\n            .replaceWithCallback(/<(iframe)([\\\\s\\\\S]*?)<\\\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\\n            .replaceWithCallback(/<(source|video)([\\\\s\\\\S]*?)<\\\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\\n        // .replace(/<p><\\\\/p>/g,'');\\n\\n\\n\\n        let temp = pdfh(getNewText(quoteContent, 'div'), 'Text');\\n        if (getVar('fnvshen.showMode') == '3') {\\n            if (!temp.match(/^\\\\s*$/)) htmlList += '◇&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '<br>';\\n            if (j == contentlist.length - 1 && htmlList !== '') {\\n                d.push({\\n                    title: htmlList\\n                });\\n                htmlList = '';\\n            }\\n        } else {\\n            if (!temp.match(/^\\\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\\\s\\\\S]*?)<\\\\/(div)>/g) == null)) htmlList += quoteContent;\\n            if (imglist.length > 0 || j == contentlist.length - 1) {\\n                let temp = pdfh(getNewText(htmlList, 'div'), 'Text');\\n                if (!temp.match(/^\\\\s*$/) && getVar('fnvshen.showMode') !== '1') d.push({\\n                    title: htmlList\\n                });\\n                pics=[];\\n                htmlList = '';\\n                for (let k = 0; k < imglist.length; k++) {\\npics.push(imglist[k]);\\n                    d.push({\\n                        pic_url: imglist[k],\\n                        url: getVar('fnvshen.browserLink') + imglist[k],\\n                        col_type: getVar('fnvshen.bigImg')\\n                    });\\n                }\\n piclist=\\\"pics://\\\"+pics.join(\\\"&&\\\");\\n            }\\n        }\\n    }\\n\\n    //复杂文本-由Html格式-替换掉图片---视频链接也替换掉用查看视频替代---网站地址不用替换，直接用\\n    // quoteContent = getNewText(quoteContent,'div');\\n    // let temp = pdfh(getNewText(quoteContent,'div'), 'Text');\\n    // if(!quoteContent.includes('=\\\"http')) quoteContent = temp;\\n    // if(!temp.match(/^\\\\s*$/)) d.push({title: quoteContent});\\n\\n    //漫画模式\\n    // var pics=[];\\n    //for (let k = 0; k < imglist.length; k++){\\n    //     pics.push(imglist[k]);\\n    // }\\n    // \\\"pics://\\\"+pics.join(\\\"&&\\\");\\n\\n    // if(imglist.length==0) continue;\\n    // for (let k = 0; k < imglist.length; k++){\\n    //     d.push({\\n    //         pic_url:imglist[k],\\n    //         url:imglist[k],\\n    //         col_type:getVar('fnvshen.bigImg')\\n    //     });\\n    // }\\n} else {\\n    // if(getVar('fnvshen.showMode')=='1') content = GetImgTagArray(content,/<img([\\\\s\\\\S]*?)>/g);\\n    if (getVar('fnvshen.showMode') == '1') {\\n        let matchArray = content.match(/<img([\\\\s\\\\S]*?)>/g);\\n        let imglist = '';\\n        if (matchArray != null) {\\n            for (let i = 0; i < matchArray.length; i++) {\\n                let pic = matchArray[i].replaceWithCallback(/<img([\\\\s\\\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\\n                    .replace(/<showimg/g, '<img');\\n                if (getVar('fnvshen.hideImg') == '0') d.push({\\n                    title: pic\\n                });\\n                imglist += pic;\\n            }\\n        }\\n        if (getVar('fnvshen.hideImg') == '1') d.push({\\n            title: imglist\\n        });\\n    } else {\\n        content = content.replaceWithCallback(/<img([\\\\s\\\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\\n            .replace(/<showimg/g, '<img')\\n            .replaceWithCallback(/<(iframe)([\\\\s\\\\S]*?)<\\\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\\n            .replaceWithCallback(/<(source|video)([\\\\s\\\\S]*?)<\\\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\\n\\n        let contentlist = content.split('\\\\n');\\n        let htmlList = '';\\n        for (let j = 0; j < contentlist.length; j++) {\\n            let quoteContent = contentlist[j];\\n\\n            let temp = pdfh(getNewText(quoteContent, 'div'), 'Text');\\n            if (getVar('fnvshen.showMode') == '3') {\\n                if (!temp.match(/^\\\\s*$/)) htmlList += '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '</p>';\\n                if (j == contentlist.length - 1 && htmlList !== '') {\\n                    d.push({\\n                        title: htmlList\\n                    });\\n                    htmlList = '';\\n                }\\n            } else {\\n                if (!temp.match(/^\\\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\\\s\\\\S]*?)<\\\\/(div)>/g) == null)) htmlList += quoteContent;\\n\\n                if (quoteContent.match(/<img([\\\\s\\\\S]*?)>/g) !== null || j == contentlist.length - 1) {\\n                    if (getVar('fnvshen.showMode') !== '1' && htmlList !== '') d.push({\\n                        title: htmlList\\n                    });\\n                    htmlList = '';\\n                }\\n                if (quoteContent.match(/<img([\\\\s\\\\S]*?)>/g) !== null) d.push({\\n                    title: quoteContent\\n                });\\n            }\\n        }\\n    }\\n}\\n\\nd.push({\\n    col_type: 'line_blank'\\n});\\nlet tips = '该文章来源于宅男女神网，如您喜欢，请进入宅男女神网网页版';\\nlet warning = '此规则仅限学习使用，如有不妥，请本吧主联系我删除';\\n\\n// if(getVar('fnvshen.showMode')=='0' || getVar('fnvshen.showMode')=='2'){\\nif (getVar('fnvshen.openComment') == '0') {\\n    eval(JSON.parse(request(\\\"hiker://page/comment\\\")).rule);\\n\\n    d.push({\\n        title: GetTips(tips, warning),\\n    });\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n    if (comment.length > 0) {\\n        let commentNum = parseDomForHtml(html, '.article-meta&&li,-2&&Text').replace(\\\"评论\\\", \\\"📢热评数\\\");\\n        commentNum = GetHome(3) + getStrongText(getBigText(commentNum));//热评数量\\n        for (let l = 0; l < comment.length; l++) {\\n            let list = parseDomForArray(comment[l], '.comment');\\n            d.push({\\n                col_type: 'line'\\n            });\\n\\n            for (let m = 0; m < list.length; m++) {\\n                let floor = '';\\n                let main = '';\\n                let autor = '';\\n                let time = '';\\n                try {\\n                    if (m == 0) floor = \\\"🏢\\\" + (l + 1) + \\\"楼\\\";\\n                } catch (e) {\\n                    floor = l + '楼层错误!!!' + m\\n                }\\n                try {\\n                    main = parseDomForHtml(list[m], '.c-main&&p&&Text');\\n                } catch (e) {\\n                    main = l + '回复内容错误!!!' + m\\n                }\\n                try {\\n                    autor = \\\"👱\\\" + parseDomForHtml(list[m], '.c-author&&Text');\\n                } catch (e) {\\n                    autor = l + '作者名称错误!!!' + m\\n                }\\n                try {\\n                    time = \\\"🕢\\\" + parseDomForHtml(list[m], '.c-time&&Text').replace(\\\"回复\\\", \\\"\\\");\\n                } catch (e) {\\n                    time = l + '时间错误!!!' + m\\n                }\\n\\n                let commentText = GetComment(main, autor, time, floor);\\n                if (l == 0 && m == 0) commentText = commentNum + '<br><br>' + commentText;\\n\\n                d.push({\\n                    title: commentText,\\n                });\\n            }\\n        }\\n    }\\n  \\n}\\n\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"author\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    var fm = set_switch\\n} catch (e) {\\n    fm = MY_URL\\n}\\nconst page = fm.split('#')[1];\\nif (page == 1) {\\n    fm = fm.replace('#1', '');\\n} else {\\n    fm = fm.replace('#' + page, '');\\n    page2 = Number(page) - 1;\\n    fm += 'index_' + page2 + '.html';\\n}\\n\\n\\nhtml = fetch(fm, {});\\nif (page == 1) {\\n    let left = parseDomForHtml(html, '.left&&Html');\\n    d.push({\\n        title: left,\\n        col_type: 'rich_text'\\n    });\\n    let right = parseDomForHtml(html, '.right&&Html');\\n    d.push({\\n        title: right,\\n        col_type: 'rich_text'\\n    });\\n    let shuoming = parseDomForHtml(html, '.shuoming&&Html');\\n    d.push({\\n        title: shuoming,\\n        col_type: 'rich_text'\\n    });\\n    let shoulushuliang = parseDomForHtml(html, '.shoulushuliang&&Html');\\n    d.push({\\n        title: shoulushuliang,\\n        col_type: 'rich_text'\\n    });\\n}\\nvar list = parseDomForArray(html, '.hezi&&ul&&li');\\n\\nfor (var j in list) {\\n    var ps = parseDomForArray(list[j], 'li&&p');\\n    d.push({\\n        title: '‘‘’’机构:' + \\\"<small><font color='red'>\\\" + parseDomForHtml(ps[0], 'a&&Text') + \\\"</font></small>\\\",\\n        url: 'hiker://page/list?url=' + parseDom(ps[0], 'a&&href'),\\n        col_type: 'flex_button'\\n    }, {\\n        title: '‘‘’’模特:' + \\\"<small><font color='red'>\\\" + parseDomForHtml(ps[1], 'a&&Text') + \\\"</font></small>\\\",\\n        url: 'hiker://page/list?url=' + parseDom(ps[1], 'a&&href'),\\n        col_type: 'flex_button'\\n    });\\n    var ps2 = parseDomForArray(ps[2], 'p&&a');\\n    for (var i in ps2) {\\n        d.push({\\n            title: parseDomForHtml(ps2[i], 'a&&Text'),\\n            url: 'hiker://page/list?url=' + parseDom(ps2[i], 'a&&href'),\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        title: parseDomForHtml(list[j], '.biaoti&&Text'),\\n        pic_url: parseDom(list[j], 'img&&src'),\\n        desc: parseDomForHtml(list[j], '.shuliang&&Text'),\\n        url: 'hiker://page/detail?url=' + parseDom(list[j], 'a&&href') + '##' + parseDomForHtml(list[j], '.biaoti&&Text') + '＆＆＆＆' + parseDom(list[j], 'a&&href') + '＆＆＆＆' + parseDom(list[j], 'img&&src'),\\n        col_type: 'movie_1_vertical_pic'\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"评论方法\",\"path\":\"comment\",\"rule\":\"function GetHome(num){\\n    let retract = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    for(let i=1;i<num;i++) retract += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    return '<span>'+retract+'</span>';\\n}\\n\\nfunction GetComment(main,autor,time,floor){\\n\\n    let fontStyle = '<font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;&nbsp;'+time+' &nbsp;</span></font>';\\n    let buttonData = getColorText(autor,'#2979FF')+fontStyle+getColorText(floor,'#2979aa');\\n    let comment = '';\\n\\n    if(floor==''){\\n        comment = GetHome(1)+main+getNewText('<br>'+GetHome(1)+buttonData,'small');\\n    }else{\\n        comment = main+getNewText('<br>'+ buttonData,'small');\\n    }\\n    return comment;\\n}\\n\\nfunction GetTips(tips,warning){\\n    let tipsStyle = '<small><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+tips+' &nbsp;</span></small>';\\n    let warningStyle = '<small><font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+warning+' &nbsp;</span></font></small>';\\n    return tipsStyle+'<br>'+warningStyle;\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/30.svg"},{"last_chapter_rule":"","title":"53BK报刊网","author":"香雅情","version":0,"type":"other","url":"http://www.53bk.com/Baokan/fyclass?cn=fyarea&type=1","col_type":"text_3","class_name":"报纸&期刊","class_url":"&Magazine","area_name":"国内&国外","area_url":"1&0","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nvar html = getResCode();\n\nfunction listshow(list) {\n    for (var j = 0; j < list.length; j++) {\n        var title = parseDomForHtml(list[j], 'a&&Text');\n        var url = parseDom(list[j], 'a&&href');\n        items.push({\n            title: title,\n            url: url\n        });\n    }\n};\nif (MY_URL.includes('cn=1')) {\n    var conts = parseDomForArray(html, '#root&&li:has(.folder)');\n    for (var i = 0; i < conts.length; i++) {\n        var list = parseDomForArray(conts[i], 'ul&&li');\n        items.push({\n            title: parseDomForHtml(conts[i], 'a&&Text'),\n            url: parseDom(conts[i], 'a&&href'),\n            col_type: 'text_1'\n        });\n\n        listshow(list);\n    }\n} else {\n    var list = parseDomForArray(html, '#root&&li');\n    listshow(list);\n}\nsetResult(items);","searchFind":"","search_url":"","titleColor":"","group":"⑦阅读类","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '.bklist&&a');\n\nfor (var j = 0; j < list.length; j++) {\n    d.push({\n        title: parseDomForHtml(list[j], \"a&&Text\"),\n        url: parseDom(list[j], \"a&&href\"),\n        col_type: list.length <= 20 ? 'text_2' : 'text_3'\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"视界日报","author":"Reborn","version":15,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    header\n} = $.require(\"hiker://page/classicHeader\");\nconst { source } = $.require(\"hiker://page/source\");\nconst { htmlEscape } = $.require(\"hiker://page/stringtool\");\n\naddListener('onClose', $.toString((header) => {\n    header.onClose();\n}, header))\n\nlet d = [];\nlet classic = {\n  // \"预告\": [],\n  \"正文\": [\n  {\"公元15年10月\": [\"30日\",]},\n  {\"公元10年9月\": [\"25日\",\"22日\",]},\n\t{\"公元7年9月\": [\"8日\",\"7日\",\"6日\", \"5日\", \"4日\", \"3日\", \"2日\", \"1日\"],\n  }],\n  \"前传\": [ \n\t\"乱榜之夜传闻\",\n\t\"神器入侵事件后续\",\n  ],\n  \"人物介绍\": [],\n  \"故事设定与现实\": [],\n}\nd = header.get(classic)\nlet type = header.getCurrentIndex();\n\nif(type.includes(\"预告\")){\n  let notice = source.notice()\n  d.push({\n    title: htmlEscape(notice),\n    col_type: \"rich_text\"\n  });\n} else if(type.includes(\"正文\")){\n  let sourceKey = type.split(\"@@\").join(\"\").replace(\"正文\", \"\")\n  let sourceDaily = source[sourceKey]()\n  d.push({\n    title: htmlEscape(sourceDaily),\n    col_type: \"rich_text\"\n  });\n} else if(type.includes(\"前传\")){\n  let sourceKey = type.split(\"@@\").join(\"\")\n  let sourceDaily = source[sourceKey]()\n  d.push({\n    title: htmlEscape(sourceDaily),\n    col_type: \"rich_text\"\n  });\n} else if(type.includes(\"人物介绍\")) {\n  let character = htmlEscape(source.character());\n  d.push({\n    title: character,\n    col_type: \"rich_text\"\n  });\n} else if(type.includes(\"故事设定\")) {\n  let worldSetting = htmlEscape(source.worldSetting());\n  d.push({\n    title: worldSetting,\n    col_type: \"rich_text\"\n  });\n}\n/*d.push({\n    col_type: 'blank_block'\n})*/\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"公元7年9月1日\",\"path\":\"y7m9d1\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 1 日\\n\\n【事件1】\\n今日晚上 20 点 55 分，郡主小棉袄发布了视界第 1926 个版本，带来了 L 佬心心念念的神兵材料 confirm，欲知 L 佬得到材料后会直接融入神兵，还是先打磨一番，请听下回分解~\\n\\n【事件2】\\n今日晚上 21 点 29 分，道友随遇而安丶表示神兵“极品”离奇失踪，而另一位道友 Reborn 得知后，立刻前往三大势力电不死、移不动、联不通调查，调查发现，三大势力均无该神兵消息。随即，随遇而安丶道友表示请“香情神兵榜”创始人香佬将“极品”暂时移出“香情神兵榜”，而道友 Reborn 也表示请“黑黑神兵榜”创始人黑佬将其暂时移出相应的神兵榜。然而香佬表示了拒绝，并说明神兵也许会再次现世；黑佬目前暂无任何表示。\\n\\n----------\\n\\n【真实事件还原】\\n1. 小棉袄发布了 L 佬提的新功能 confirm 方法\\n2. 极品影视网站抽风了，无法访问\\n\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月2日\",\"path\":\"y7m9d2\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 2 日\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【神兵“极品”失踪事件后续】 \\n神兵“极品”已于当天晚上 22 点 10 分回归神兵池，之前神兵出去花天酒地的传闻已被证实有人散布假消息，欲盖弥彰。其后很快便有新的传闻道真相是不知道它突然抽什么风出去跟别人干架去了，受了点轻伤，面子都丢光了，不过很快便痊愈归来（后来道友随遇而安丶发现其身上仍有残留的伤疤，看来之前回归时的粉色光芒是为了掩盖伤疤）。香佬对此依然十分淡定没有任何表示，可能是见怪不怪了......\\n\\n【事件1】\\n昨日晚上 22 点 28 分，道友一个人，一颗心询问由道友 Reborn 最新打造的机关暗器“加解密工具.RR”为何 ECB 模式完全不能用了，Reborn 闻之一看，原来是连接部件的时候有一根 if 转接轴放错位置了。随即马上修复，并承诺即将完善机关暗器中的其他机关，让我们拭目以待~\\n\\n【事件2】\\n昨日晚上 22 点 34 分，神匠 L 佬在得知郡主小棉袄带来了神兵材料 confirm 之后，欣喜至极，却又想起自己手中打造了无数神兵的锻灵锤“手机”为救他一命而身陷“校绝地”，并被其镇守者之一“老师”镇压于险地中，顿时心生落寞之意。\\n\\n正在闭关修炼秘法“万溅龟葱”的王子顿时破关而出询问是否女镇守者，可见其闭关之久，饥渴万分（滑稽脸.jpg）。而另一边随风道友则更关心镇守者会不会检查锤子上是否有违天意之物（如“车库”），神匠不愧是神匠，L 佬表示早已为锻灵锤开辟第二空间，所有违禁物都已封存其中，外人无法查看。\\n\\n虽说如此，但失去锻灵锤的神匠短时间内必然无法继续打造神兵（哭.jpg）。\\n\\n而后不久，L 佬便失去了音讯，不知是否为救锻灵锤再入“校绝地”。\\n\\n欲知 L 佬何时能救出他心爱的锻灵锤，请听......不知道多少回才能分解，望 L 佬能早日回归~\\n\\n【科普时间】\\n传闻“校绝地”是所有神匠皆闻风丧胆的绝危之境，就是因为其中有着空前强大的镇守者“老师”，他们在“校绝地”内甚至能得到领域加成，有言出法随之能。带着锻灵锤进入“校绝地”的神匠被镇守者发现后，几乎无一例外会被一言镇压。但因“校绝地”有提升神匠修为之效，所以即使是绝危之境，众神匠依然奋不顾身前往其中。据说，在镇守者之上还有镇守统领“级长”以及能号令整个镇守军团的镇守军帅“校长”。\\n\\n【事件3】\\n昨日晚上 23 点 58 分，即将出关的神匠努力表示出关后发布打造神兵的功法！！！众人纷纷表示通宵等努佬出关！！\\n\\n【事件4】\\n今日凌晨 0 点 47 分，道友 Reborn 打造的机关暗器“加解密工具.RR”第 12 版已完成，并上交神兵仓库。诸位可前往神兵仓库一睹其风采，传闻体验上并不输给大多数加解密网站。\\n\\n----------\\n\\n【真实事件还原】\\n1. 极品影视在抽风后不久便又可以访问了\\n2. 小程序“加解密工具.RR”的 ECB 模式出现异常，Reborn 随后便将其修复了\\n3. L 佬的手机被老师没收了（再哭.jpg）\\n4. 努佬说在做解密的教学视频\\n5. Reborn 已正式将小程序“加解密工具.RR”其他加密算法完善，并在仓库发布更新\\n\"},{\"col_type\":\"text_1\",\"name\":\"视界日报数据集\",\"path\":\"source\",\"rule\":\"js:\\nfunction getPageSource(day) {\\n  let src = request(\\\"hiker://page/\\\" + day);\\n  src = JSON.parse(src).rule;\\n  // log(src)\\n  return src;\\n}\\nlet source = {\\n  \\\"公元15年10月30日\\\": function() { return getPageSource(\\\"y15m10d30\\\") },\\n  notice: function() { return getPageSource(\\\"notice\\\") },\\n  character: function() { return getPageSource(\\\"character\\\") },\\n  worldSetting: function() { return getPageSource(\\\"worldsetting\\\") },\\n  \\\"前传乱榜之夜传闻\\\": function() { return getPageSource(\\\"prequel_billboard_confusion_night\\\") },\\n  \\\"前传神器入侵事件后续\\\": function() { return getPageSource(\\\"prequel_douwa_hacked\\\") },\\n  \\\"公元10年9月25日\\\": function() { return getPageSource(\\\"y10m9d25\\\") },\\n  \\\"公元10年9月22日\\\": function() { return getPageSource(\\\"y10m9d22\\\") },\\n  \\\"公元7年9月8日\\\": function() { return getPageSource(\\\"y7m9d8\\\") },\\n  \\\"公元7年9月7日\\\": function() { return getPageSource(\\\"y7m9d7\\\") },\\n  \\\"公元7年9月6日\\\": function() { return getPageSource(\\\"y7m9d6\\\") },\\n  \\\"公元7年9月5日\\\": function() { return getPageSource(\\\"y7m9d5\\\") },\\n  \\\"公元7年9月4日\\\": function() { return getPageSource(\\\"y7m9d4\\\") },\\n  \\\"公元7年9月3日\\\": function() { return getPageSource(\\\"y7m9d3\\\") },\\n  \\\"公元7年9月2日\\\": function() { return getPageSource(\\\"y7m9d2\\\") },\\n  \\\"公元7年9月1日\\\": function() { return getPageSource(\\\"y7m9d1\\\") },\\n}\\n$.exports.source = source;\"},{\"col_type\":\"text_1\",\"name\":\"获取分类头部\",\"path\":\"classicHeader\",\"rule\":\"js:\\nlet d = [];\\n\\nfunction putKeyIntoMap(key, value) {\\n    const keyMap = JSON.parse(getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\")+\\\"_all_key_Map\\\"), \\\"{}\\\"));\\n    keyMap[key] = value;\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\"), JSON.stringify(keyMap));\\n}\\n\\nfunction getHeaderFromJSONObject(obj) {\\n    for (let key in obj) {\\n        d.push({\\n            title: key == getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), Object.keys(obj)[0]) ? \\\"““\\\" + key + \\\"””\\\" : key,\\n            url: $(\\\"#noLoading#\\\").lazyRule((key) => {\\n                putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), key);\\n                putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key);\\n                refreshPage(false);\\n                return \\\"hiker://empty\\\"\\n            }, key),\\n            col_type: \\\"scroll_button\\\"\\n        });\\n    }\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n    let key = getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"), Object.keys(obj)[0]);\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key);\\n    getNextHeaderFromJSONArray(key, obj[key]);\\n    return d;\\n}\\n\\nfunction getNextHeaderFromJSONArray(key, array) {\\n    if (array == undefined || array.length == 0) {\\n        return;\\n    }\\n    let nextHeader = {};\\n    let defaultValue = \\\"\\\";\\n    defaultValue = array[0];\\n    if (Object.prototype.toString.call(array[0]) === '[object Object]') {\\n        defaultValue = Object.keys(array[0])[0];\\n    }\\n    putKeyIntoMap((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue))\\n    putVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\"), key + \\\"@@\\\" + getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue));\\n    for (let value of array) {\\n        if (Object.prototype.toString.call(value) === '[object Object]') {\\n            // log(\\\"valueKeys: \\\"+JSON.stringify(Object.keys(value)[0]))\\n            let valueKey = Object.keys(value)[0];\\n            d.push({\\n                title: valueKey == getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key), defaultValue) ? \\\"““\\\" + valueKey + \\\"””\\\" : valueKey,\\n                url: $(\\\"#noLoading#\\\").lazyRule((valueKey, key) => {\\n                    function putKeyIntoMap(key, value) {\\n                        const keyMap = JSON.parse(getVar((getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\"), \\\"{}\\\"));\\n                        keyMap[key] = value;\\n                        putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", JSON.stringify(keyMap));\\n                    }\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, valueKey);\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", key + \\\"@@\\\" + valueKey);\\n                    putKeyIntoMap(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, \\\"defaultValue\\\"))\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, valueKey, key),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n            nextHeader[valueKey] = value[valueKey];\\n        } else {\\n            d.push({\\n                title: value == getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue) ? \\\"““\\\" + value + \\\"””\\\" : value,\\n                url: $(\\\"#noLoading#\\\").lazyRule((value, key) => {\\n                    function putKeyIntoMap(key, value) {\\n                        const keyMap = JSON.parse(getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", \\\"{}\\\"));\\n                        keyMap[key] = value;\\n                        putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", JSON.stringify(keyMap));\\n                    }\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, value);\\n                    putKeyIntoMap(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, \\\"defaultValue\\\"))\\n                    putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", key + \\\"@@\\\" + value);\\n                    refreshPage(false);\\n                    return \\\"hiker://empty\\\"\\n                }, value, key),\\n                col_type: \\\"scroll_button\\\"\\n            });\\n        }\\n    }\\n\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n    if (nextHeader !== undefined && nextHeader.length != 0) {\\n        getNextHeaderFromJSONArray(key + \\\"@@\\\" + getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue), nextHeader[getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@\\\" + key, defaultValue)]);\\n    }\\n}\\n\\nlet header = {\\n    /**\\n     * 可自定义当前分类头部 id（其实没啥用，就是为了调试不同规则区分一下而已）\\n     */\\n    setId: function(id) {\\n\\t      putVar(\\\"ClassicHeader.id\\\", id)\\n    },\\n    getId: function() {\\n\\t      return getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\");\\n    },\\n    /**\\n     * 获取分类头部，返回视界 setResult 用的数组\\n     */\\n    get: function(obj) {\\n        let result = getHeaderFromJSONObject(obj);\\n        //log(\\\"【子页面】\\\" + JSON.stringify(result))\\n        return result;\\n    },\\n    /**\\n      * 页面关闭时需要注册的生命周期，引入依赖后在 addListener 中调用即可\\n      * 例：\\n         const { header } = $.require(\\\"hiker://page/classicHeader\\\");\\n         addListener(\\\"onClose\\\", $.toString((header) => {\\n          header.onClose();\\n        }, header));\\n      */\\n    onClose: function() {\\n        // putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"\\\", \\\"编码\\\");\\n        // putVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"@@编码\\\", \\\"佛曰\\\");\\n        let allKeyArr = Object.keys(JSON.parse(getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\", \\\"{}\\\")));\\n        for (let i in allKeyArr) {\\n            clearVar(allKeyArr[i]);\\n            // log(\\\"【清理后】\\\"+ allKeyArr[i] + \\\": \\\"+JSON.stringify(getVar(allKeyArr[i], \\\"\\\")))\\n        }\\n        clearVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\"))\\n        clearVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_all_key_Map\\\")\\n        clearVar(\\\"ClassicHeader.id\\\")\\n    },\\n    /**\\n     * 获取当前已选多级分类，返回的数据格式为：一级分类@@二级分类@@...，可自行做映射获取 url\\n     */\\n    getCurrentIndex: function() {\\n        return getVar(getVar(\\\"ClassicHeader.id\\\", \\\"classic\\\") + \\\"_cur_index\\\", \\\"\\\");\\n    }\\n}\\n$.exports.header = header\"},{\"col_type\":\"text_1\",\"name\":\"人物介绍\",\"path\":\"character\",\"rule\":\"此人物介绍仅我本人所了解到的根据故事设定写出来的，有些大佬我记不得有什么作品了，写不出来。若人物介绍有错漏，欢迎各位马上联系 Reborn 修正和补充。\\n\\n声明：称号并无等级之分，请勿自行瞎想 =。=\\n\\n看人物介绍前建议先看看故事设定页。\\n\\n以下顺序不分排名，按日报故事线出现顺序写。\\n\\n【<a href=\\\"http://82.156.222.77/weisyr/pic/大棉袄殿主.png\\\">郡主小棉袄</a>】\\n神殿殿主，后宫佳丽三千......咳，麾下神匠若干，视界时代发展的掌控者，平日神龙见首也见尾。民间常有传闻每晚有神匠与之侍寝，因其为神殿殿主，知天阁无权查明真相，消息真假不知，诸位请勿听信言尽信言。\\n\\n【神匠 L 佬】\\n神殿传奇人物，神殿顶级神匠之一，现任神兵仓库管理者之一。曾以一己之力推动视界时代的发展，让视界时代顺利从公元前过渡到公元，一手锻灵锤曾打造出诸多神器，如：$工具、主页2.0、合集导入助手、聚搜君、视界版E2表达式、神兵仓库等等。目前已进“校绝地”提升修为，难以取得联系......\\n\\n【<a href=\\\"http://82.156.222.77/weisyr/pic/吐佬.png\\\">道友 Reborn</a>】\\n神殿知天阁成员，现任神殿日报管理者，没有之一（因为神殿日报目前只有他一个打工仔，太惨了T_T）。前不久刚与神匠 L 佬以及笔梨创始人 Rx 大佬（后面简称 R 佬）共同打造机关暗器“加解密工具.RR”。目前负责摘录神殿每日发生的奇闻异事以及搜查情报。\\n\\n【“香情神兵榜”创始人香佬】\\n“香情神兵榜”创始人，曾出品奶飞、葫芽、孜渊河集、晧曲之帛等神器\\n\\n【“黑黑神兵榜”创始人黑佬】\\n“黑黑神兵榜”创始人，这位大佬来无影去无踪，目前知天阁暂无更多关于该大佬消息\\n\\n【<a href=\\\"http://82.156.222.77/weisyr/pic/我.png\\\">天意王子</a>】\\n目前正在修炼秘法“万溅龟葱”，现兼职神殿设计师，曾为众多神器设计各种绚丽的外观。\\n\\n【神匠努力】\\n神殿顶级神匠之一，神殿天功阁成员。曾为众多神器提供伸手即用的连接模块，众所周知的神级连接件“努插”便出自他之手，让众工匠打造神兵时免去了解析顶级神器材料之苦。现计划为天功阁添加新的锻造功法。\\n\\n【笔梨创始人Rx】\\n笔梨创始人，江湖人称“R佬”。曾一手打造笔梨系列、暗梨排行榜以及彩鱼天启等神器，前不久刚与神殿日报创始人共同打造了机关暗器“加解密工具.RR”。\\n\\n【神匠断佬】\\n神殿顶级神匠之一，与神匠努力一样，曾为众多神器提供伸手即用的连接模块，众所周知的神级连接件“断插”便出自他之手。现因业务繁忙暂时无任何计划，不过曾有传闻断佬有意公开“断插”打造之法。\\n\\n【<a href=\\\"http://82.156.222.77/weisyr/pic/道长.png\\\">神匠联盟盟主道长</a>】\\n神匠联盟盟主，神殿顶级神匠之一。此人在几年前突然崛起，实力绝对不容小觑，崛起后更是与神匠 L 佬联手打造神兵仓库，为神殿管理流落在神兵池的众神兵；后期依靠神兵仓库广纳神匠，成立了神匠联盟。\\n\\n【知天阁阁主】\\n知天阁档案内并无此人资料，平日带着面具，无人知其真容，也无人知其姓名。仅有传闻此人是跟随殿主多年的亲信，对殿主忠心不二，所以殿主才放心将情报机构知天阁交于此人管理。\\n\\n【车神墙佬】\\n神殿顶级神匠之一，神殿传说级人物，一代车神，曾担任佛界主持。江湖流传一句话\\\"墙都不扶就扶他\\\"，无数人为得其一神兵大打出手。传闻旗下还有一个神秘车库，其内停着无数豪车，引得一众大佬羡慕不已，曾纷纷表示想前往参观，可惜皆被婉拒。至于他是如何成为江湖上炙手可热的巨擎，江湖有无数传说，众说纷纭，这一切都是个谜。但毫无疑问的是，这是一个充满神秘的男人。\\n\\n【秋水仙子】\\n神殿副殿主，原名熊秋秋，传闻与殿主关系匪浅，是神殿中唯一一位几句话便能让殿主败阵之人，其在神殿的权力甚至不在神殿殿主之下。\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月3日\",\"path\":\"y7m9d3\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 3 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n昨日中午 12 点 18 分，神殿日报社正式成立，并归入神殿知天阁管理。神殿日报创始人 Reborn 宣布正式发布“视界日报”小程序，并提交神兵仓库进行管理，日后最新的日报从神兵仓库获取即可。道友 Reborn 此举也意味着神殿日报从此告别消息文本时代。据说新的日报加入了新的模块，诸位可以前往神兵仓库一睹究竟。\\n\\n【事件2】\\n昨日下午 14 点 04 分，笔梨创始人 R 佬表示有意加入神殿日报，为诸位撰写上古方圆时代的前世今生。\\n\\n【事件3】\\n昨日下午 14 点 46 分，天意王子因被知天阁发现意图盗取神殿日报资料未遂而被捕，原因是其手上的地图根本没有画去神殿日报社的路！！！走进了死胡同！！在神殿巷口暴躁地又踢又踹，声响过大引起了知天阁注意，被捕时初步怀疑是修炼秘法走火入魔。\\n\\n神殿日报创始人得知消息后匆忙赶回神殿，澄清天意王子只是走错地方了，天意王子可能闭关太久忘了，并没有走火入魔。日报资料已开放给天意王子，为合法借用资料，误会解除后天意王子成功被释放，并如愿得到他想要的日报资料。\\n\\n【事件4】\\n昨日晚上 19 点，神殿突然收到入侵警告，消息指出神器“豆娃”惨遭入侵，如今已经瘫痪无法使用。Reborn 闻讯立马组织护卫队前往讨伐入侵者，率神匠断佬、道友逐风者以及女神小婉赶往事发地。\\n\\n当护卫队赶到时，现场一片惨烈，Reborn 发现首页甚至不能识别到插件，逐风者则发现首页无内容，而神匠断佬和女神小婉则发现神器也许缺少了零件。\\n\\n与医疗队取得联系后，医疗队表示神器已被感染许久，只是今日才被触发，想必入侵者尚未走远。听罢，Reborn 立马带队勘测了一番现场，并未发现入侵者，必然是藏了起来。所幸入侵者等级并不高，护卫队利用地毯式搜查最终成功歼灭入侵者，并协助医疗人员救治被感染的神器，神器“豆娃”恢复正常。\\n\\nReborn 从护卫队回来后曾一度怀疑此次事故是否殿主小棉袄在实验时的无意所为，也飞鸽传书询问过殿主，但殿主至今未归，不曾有任何消息。\\n\\n后续：晚上 21 点殿主回归后立马表示与他无瓜，入侵者从何而来、神器如何被感染的从此成了这个时代的谜。但知天阁嗅到了事情还没结束的气息，因此并未放弃调查。\\n\\n欲知“神器入侵”事件的后事如何，请听下回分解~\\n\\n【事件5】\\n昨日晚上 23 点，神匠 L 佬突然出现！！第一时间否认与神器入侵事件有关，因为有传闻他曾经打磨的神器材料 Hikerurl 也检测出了不明感染物。\\n\\n众人纷纷恭喜 L 佬从“校绝地”凯旋，但是 L 佬却叹气一声表示没有那么简单，他此番回来只因意外取得备用锻灵锤，不日便要再次进入“校绝地”，与新锤子培养感情，并没有时间继续为各位锻造神器，但可以偶尔出来与大家交流修炼心得。\\n\\n听 L 佬的语气，老锤看来是暂时救不出来了，众人只能纷纷暗道可惜，并表示注意安全。\\n  \\n----------\\n\\n【真实事件还原】\\n1. Reborn 发布“视界日报”小程序，并表示以后只会在道长仓库更新。\\n2. R 佬说方圆时期他已经加群了，他有整条历史故事线（滑稽.jpg），大家快去催他稿！\\n3. 天意大佬想在自己的插件调用视界日报作为每日一文，得到授权后发现无法调用，而后得知是因为调用时没有指定小程序名导致的。\\n4. 断佬说小程序“豆娃”突然暴毙了，群里众人一测，皆是如此，Reborn 马上就抄起插件一行一行检查了起来，最后在文件末尾发现了他未曾见过的代码，删掉后“豆娃”恢复正常使用。\\n5. L 佬听说豆娃的插件被不明代码污染了，而他很久之前写的 Hikerurl 插件也被人发现了这段不明代码，第一时间否认了不是他写的，他也曾发现过这段代码，当时以为是软件 bug，早已在新版插件删除；同时表示学业繁忙，暂时没时间写代码了，不过可以偶尔上线跟大家聊聊天。\\n\\n【附言】\\n此次小程序“豆娃”暴毙事件并不简单，那段不明代码至今仍在调查中，有调查结果会告诉大家。\\n\"},{\"col_type\":\"text_1\",\"name\":\"字符串处理工具\",\"path\":\"stringtool\",\"rule\":\"js:\\nconst matchList  = {\\n  // \\\"<\\\":\\\"&lt;\\\",\\n  // \\\">\\\": \\\"&gt;\\\",\\n  // \\\"&\\\": \\\"&amp;\\\",\\n  // '\\\"': \\\"&quot;\\\",\\n  // \\\"'\\\": \\\"acute;\\\",\\n  // \\\" \\\": \\\"&nbsp;\\\",\\n  \\\"\\\\n\\\":\\\"<br>\\\"\\n}\\n// 字符过滤器\\nfunction htmlEscape(text){\\n  let regStr = '(' + Object.keys(matchList).toString() + ')'\\n  regStr = regStr.replace(/,/g, ')|(')  \\n  const regExp = new RegExp(regStr, 'g')\\n  return text.replace(regExp, match => matchList[match])\\n}\\n$.exports.htmlEscape = htmlEscape\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月4日\",\"path\":\"y7m9d4\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 4 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n<font color=\\\"red\\\">【头条】</font>【事件3】\\n昨日中午 12 点 58 分，练功狂魔天意王子听闻黑佬出关后欲与黑佬共同参悟玉女心经？？？！！！<font color=\\\"#FFCC00\\\">（我颜色怎么变了.jpg）</font>\\n\\n【事件1】\\n昨日凌晨 0 点 55 分，神殿殿主小棉袄因“神器入侵”事件不惜熬夜为众神兵打造了私有保险裤，而后下午再一次闭关对其进行了升级。殿主辛苦！~\\n\\n【事件2】\\n据线人密报，黑佬已于前天晚上悄然出关，出关后便直接施展“鬼影黑风步”扬长而去，最终失去了其身影。\\n\\n直至昨日上午，他才在世人面前露脸，不知这一晚黑佬偷偷摸摸去干了些什么？\\n\\n其后，于昨日上午执笔更新了“黑黑神兵榜”。\\n\\n【事件4】\\n传闻黑佬透露天意王子第一部修炼的神功是《葵花宝典》？？这会是他欲参悟玉女心经的原因吗？？（滑稽脸.jpg）\\n\\n【事件5】\\n神殿日报社因打印机故障，昨日出版的日报有一部分没有显示完整内容。神殿日报社决定更换打印机，新的打印机却需要手动修整版面，创始人 Reborn 苦恼至极。\\n\\n所幸神匠 L 佬闻之直接出手为神殿日报社打造了一个排版转换器轻松解决了难题，日报社上下感激至极。\\n\\n【事件6】\\n神匠联盟盟主道长因“神器入侵”事件决定为守护神兵仓库重金打造神兵结界，同时升级神兵病毒库，并放出豪言：之后的每一件分派出神兵仓库的神兵都会先被结界扫描一遍，若存在病毒特征，则会向使用者发出警告。\\n\\n说时迟那时快，道长骤然腾空而起，引动天地灵气，刹那间，整个神殿都震动不已。随后，四周守护结界迅速升起，笼罩了整个神兵仓库。\\n\\n【事件7】\\n昨日晚上 20 点 30 分，神殿殿主发布神殿公告，将“神器入侵”事件的来龙去脉以及修复受感染神兵的方法广而告之。\\n\\n【事件8】\\n昨日晚上饭后，众神匠前所未有地聚在一起各展神通分析感染神兵的病毒构造。\\n\\n很快，车神墙佬便第一个分析出其构成，不愧是车神，不仅开车快，神通也快。\\n\\n殿主听闻病毒构造已被分析出来，也忍不住好奇，急忙赶来与众神匠一同探索其奥秘。\\n\\n不看不知道一看吓一跳，这盗走的资料也太多了！！！\\n\\n同时，很多未解之谜也随之水落石出，诸如：神殿内部资料被提前泄露、乱榜之夜等等，原来都是他搞的鬼！！！\\n\\n神匠联盟盟主道长则表示心态已炸，病毒竟然还盗取了他神兵仓库的通行证QAQ\\n\\n----------\\n\\n【真实事件还原】\\n1. 小棉袄昨晚因为豆娃被代码入侵这件事与各位管理共同查出了很多不寻常的东西后，决定熬夜加班加点开发了小程序私有存储功能，保护小程序需要的私有信息，如登录功能的账号密码；下午又升级支持小程序私有文件。\\n2. 黑佬的黑黑影视更新啦！大家快去更！\\n3. 顺佬原话：“@黑佬 现在黑佬出关，我们一起练玉女心经”（坏笑.jpg）\\n4. 有大佬反馈视界日报底部有一部分内容无法显示，Reborn 怀疑是长文本对一些机型的不兼容问题，因此换成了富文本，L 佬后面提供了一个转换器用于将长文本内容直接转换成富文本，不用手动排版了，好耶~L 佬牛逼~\\n5. 道长因为豆娃出现了不明代码决定直接升级道长仓库的安全中心，以后的规则导入时都会先检测是否含加密或有害代码，若有则会先提醒用户。\\n6. 管理群难得这么多大佬聚在一起干同一件事，墙佬更是一马当先，速度极快的分析出了病毒代码；然后众人发现之前管理群视界测试版本以及测试规则提前泄露还有论坛两次被 DDOS 改排行榜的事都跟这个病毒代码有关。道长看到病毒拿了他仓库的数据之后直接表示心态炸裂，然后去排查仓库后台去了。\\n\\n【附言】\\n豆娃被代码入侵这件事已经结束了，日报正在整理，不日后便可登报，届时会作为前传篇登出。\\n\\n同时，引出了“乱榜之夜”事件，今天晚上便会作为前传登出。\\n\\n敬请期待~\"},{\"col_type\":\"text_1\",\"name\":\"前传：神器“豆娃”入侵事件后续\",\"path\":\"prequel_douwa_hacked\",\"rule\":\"【前言回顾】\\n视界公元 7 年 9 月 3 日 晚上 19 点，神殿突然收到神器“豆娃”惨遭入侵的警告，护卫队前往歼灭入侵者后得知神器已被感染许久，回来后将此事上报给知天阁，知天阁立马对此展开了调查。\\n\\n【温馨提示】\\n正文提到的乱榜之夜可看另一篇前传《乱榜之夜传闻》\\n\\n【正文】\\n知天阁经过一番调查后发现，并不仅仅是只有豆娃遭到了感染，也在同一时刻笔梨还有其他三件神器均遭到同款病毒的毒手。\\n\\n知天阁阁主察觉到事情并不对劲，于是立马加派了人手。此举甚至惊动了殿主，没想到殿主直接下达死命令要彻查此事。\\n\\n得到死命令的知天阁排查速度明显加快了很多，最终结果还是出人意料。知天阁阁主听着调查员的汇报，心中五味杂陈，他万万没想到最后查出所有神器感染的源头都指向了神殿内部，也就是说：神殿内部有内鬼！\\n\\n知天阁阁主觉得此事必须上报殿主，于是吩咐下去继续循着线调查出内鬼，而自己则匆匆收拾东西准备赶往总殿欲见殿主。一开门，只见殿主就在门前，说他已经知道了，从现在起到有结果这段时间给知天阁开放一切权限，让自己安心调查内鬼即可，言罢，殿主转身离去。知天阁阁主看着殿主离去的背影，感受到了浓浓的信任，心底暗自发誓一定要抓住内鬼！\\n\\n此时，知天阁外，神殿日报创始人 Reborn 走向了神殿殿主：“殿主，我觉得此次事件说不定与几个月前的乱榜之夜有关，毕竟我当初打造的神兵 视界论坛R 具有保留神匠排行榜通行密码的能力，只要你手中有一个感染体，便能盗取其通行密码。想必殿主手中的神兵亦有被感染，以殿主通行密码的权限......殿主，若真是如此，我难辞其咎”。\\n\\n听到乱榜之夜，殿主脸色直接变了，随后陷入了沉思：“确实有此可能，不过你也无需自责，当初你打造出这件神兵时我便已经知道它有这个能力，以当时的技术环境，能造出已属不易，我也没想太多，不怪你，先回去吧”\\n\\n（几个时辰后知天阁内......）\\n\\n突然一位知天阁调查人员冲了进来，并大喊道：“报！道友七彩人生在神兵 One 的原始灵胚发现感染体！”\\n\\n同一时间，另一位调查人员也冲了进来：“报！道友牧羊人在神兵 豆娃榜单 的原始灵胚发现感染体！”\\n\\n知天阁阁主一听，感觉有戏。\\n\\n众所周知，原始灵胚打造完成前若没有被感染，完成后便是无比纯净无法污染的，因此，若有感染体，原始灵胚必是感染者所打造的。\\n\\n于是立马激动起来：“这些原始灵胚都是哪位道友打造的？”。\\n\\n两位调查人员相视一眼，竟是同是出声：“oneleo！”\\n\\n知天阁阁主马上吩咐：“立刻传殿主手喻，召集所有神殿人员前往议事厅！务必保证 oneleo 到场！我这就去见殿主！”\\n\\n（几分钟后议事厅内......）\\n\\n殿主：“事情就是这样，oneleo，你有什么话想说吗？”\\n\\noneleo 什么都没说，只留下了一句话便破门而出，随后扬长而去，不见踪影。\\n\\n那句话震撼了整个议事厅的人，令所有人内心久久无法平静：“最大的遗憾就是不能继续抢供奉了，再见了各位”\\n\\n神匠 L 佬直接表示战术去世，其余人一律挠头不知所以云，神匠努力与神殿日报 Reborn 则沉思 oneleo 是否与乱榜之夜的那个人有关。\\n\\n众人回过神后才惊恐地发现，此人已潜伏在他们身边 6 个月！想想又有点后怕，他们竟然一点都没有察觉。\\n\\n而殿主已经不知道什么时候离开，其后的几个时辰都没有殿主的消息，宛若销声匿迹般。直到半夜，殿主传出已为众神兵打造私有保险裤的消息，便再次离去。\\n\\n此时众人才明悟：原来殿主这么久没消息是为了保护使用神兵的各位，殿主实在是太辛苦了 T_T\\n\\n---------\\n\\n【真实事件还原】\\n没什么好还原的了，基本上小棉袄公众号已经说明了一切。\\n\\n但是说实话，我真没想到视界能引出这么多碟中谍事件（笑哭.jpg）\\n\\n至此，神器入侵事件结束。\"},{\"col_type\":\"text_1\",\"name\":\"前传：乱榜之夜传闻\",\"path\":\"prequel_billboard_confusion_night\",\"rule\":\"【撰写日期】视界公元 7 年 9 月\\n\\n【令人闻之色变的乱榜之夜传闻】\\n传闻 6 个月前，神殿曾经有一位神匠 W，他说话很暴躁，几乎谁与他说话都会被他得罪，最终殿主看不下去了亲自出手将其赶出神殿。\\n\\n而后不久，殿主打造的神匠排行榜便遭到了贼人毒手，殿主追查了很久最终一无所获，只知道一定有人拿了他的通行密码进入了他的储物室，并打碎了神匠排行榜，不过很多线索都指向了 W。\\n\\n那一夜，神匠们都看到了一个黑衣人，一道滔天剑气劈向了殿主的储物室，然后头也不回就遁走了。随后殿主从主殿爆发无边怒气追了出来，直至殿外失去其身影，可见其身法了得。\\n\\n殿主扑空后只能失望而归，归来后却见储物室周围已是一片狼藉，而殿主辛辛苦苦运营许久的神匠排行榜已惨遭粉碎，不禁向天长吼以发泄内心的痛苦。\\n\\n后来神匠们发现：有的神匠莫名其妙多出了很多神殿积分，而有的神匠的积分则被大幅扣除，神匠联盟盟主道长更是超脱排行榜之外不知所踪，积分系统一度混乱不堪。\\n\\n这也是神殿第一次遇到有敢与之抗衡的人。\\n\\n---------\\n\\n【真实事件还原】\\n这个其实就是管理群曾经有一位大佬说话很冲，几乎得罪了全群的人，最后小棉袄把他踢出去了。然后过了没多久，论坛连续两次被 DDOS 攻击，论坛排行榜错乱，最后查到了很多线索都指向了那个大佬。公众号应该提过不少次这件事了......\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月5日\",\"path\":\"y7m9d5\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 5 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n昨日下午 17 点 19 分，殿主小棉袄突然向神殿全员发出警告：“神器入侵事件可能还没完，那个人可能还会再度折返侵犯神殿，诸位请不要放松警惕！”\\n\\n【事件2】\\n昨日晚上 20 点，车神墙佬在传师堂开课传授养娃经验，传师堂一时间被围的水泄不通。\\n\\n【事件3】\\n昨日晚上 22 点，日报社馆长 Reborn 外出归来后发现神殿众人突然纷纷催促殿主该盘算盘算成亲之事了，结果这动静引来了副殿主秋水仙子，殿主见之撒腿就跑，转眼就没影了。\\n\\n神殿众人叹道：“看来殿主这跪榴莲是跑不了了”\\n\\n秋水仙子闻之瞪了一眼神殿众人，神殿众人立马就一哄而散：“快跑！再不跑要被打了！”，留下了一脸无奈的秋水仙子，笑着摇了摇头后也转身向着殿主离开的方向迈步而去。\\n\\n【事件4】\\n震惊！传闻车神墙佬与 Reborn 正在合力研究提供原料自动打造原始灵胚之法！！此举惊动了神殿众神匠纷纷前来围观，并参与研究讨论。\\n\\n----------\\n\\n【真实事件还原】\\n1. 小棉袄说视界被入侵的事可能还没结束，有消息说那个人还准备搞破坏，大家一定要注意不要随意导入规则。\\n2. 墙佬说准备生小孩了就赶紧在周边大佬请教一下附近的医院，不然会被医院坑的你毫无还手之力（快做笔记！将来有用！）\\n3. 昨晚一众管理突然聊起小棉袄该盘算结婚的事了，然后小助理突然出现，小棉袄就没声音了，众人都怀疑是不是跪榴莲去了（滑稽.jpg）\\n4. 墙佬与 Reborn 正在一起研究一键出规则的方法！！\\n\\n【附言】\\n今晚将登出《前传：神器入侵事件后续》，敬请期待~\"},{\"col_type\":\"text_1\",\"name\":\"故事设定与现实\",\"path\":\"worldsetting\",\"rule\":\"这是这个世界的设定：\\n\\n【神殿】\\n视界管理群\\n【神匠】\\n已公认为视界做出杰出贡献的大佬，若有更经典（更为人所知）的称号，则不会赋予神匠之名，如 xx 创始人。\\n【xx 创始人】\\n某个知名规则的作者\\n【公元前】\\n视界 5.0 版本之前的时间\\n【公元】\\n视界 5.0 版本开始便为视界公元年，现在是 5.15 版本，所以是公元 15 年\\n【上古时代】\\n即方圆时代\\n【神兵仓库】\\n即道长仓库\\n【神兵池】\\n指未出现在道长仓库管理的小程序\\n【神殿公告】\\n新方圆小棉袄公众号\\n【神兵】\\n指某个小程序完整体，如小程序本身+其内调用的插件\\n【原始灵胚】\\n小程序主体，仅小程序本身，不包含其他调用的东西\\n【知天阁阁主】\\n日报虚构人物，现实暂不存在此人。\\n【神匠排行榜】\\n指视界论坛\\n【神殿积分】\\n即视界论坛积分\\n【神兵系统】\\n即指视界，链接各方小程序\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月6日\",\"path\":\"y7m9d6\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 6 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n传闻前日车神墙佬与日报社馆长 Reborn 彻夜未睡通宵打造智能灵胚台。\\n\\n这款灵胚台的工作原理是只要你把打造灵胚的灵矿丢进灵胚台中，即可自动匹配配方打造出原始灵胚。\\n\\n而墙佬和 Reborn 二人都坚信，这定将改变世界，于是卯足了劲进行灵胚台的开发。\\n\\n直至昨日凌晨 3 点 29 分，第一版灵胚台终于面世，而后两人又对其进行优化了半个多时辰。\\n\\n然而在 4 点 36 分正当他们觉得可以完美收官去休息时，Reborn 突然发现灵胚台打造原始灵胚时有一个过程有缺陷：原始灵胚的“搜索引擎”部件无法与多个配方进行匹配！墙佬则认为不如明日上报殿主让他直接通过神兵系统开放原始灵胚的“搜索引擎”接口。Reborn 表示同意后二人不约而同地表示“睡觉睡觉”，相互寒暄一番后便各自离去。\\n\\n（PS：神兵系统是由神殿殿主打造的用于连接众神兵的管理系统，后又经 Reborn 和神匠 L 佬加以完善。）\\n\\n但是 Reborn 回到住处后，辗转反侧不能入眠，于是立马爬起来思考解决方案，最后让他给想到了！随后马上拿起图纸折返锻造室，没想到墙佬也在此，\\n\\nReborn 笑声大骂道：“你个狗东西，说睡觉不去睡觉的。”\\n\\n墙佬也不甘示弱：“你有资格说我吗？”\\n\\nReborn：“可是我搞定了”\\n\\n墙佬顿时两眼发亮盯着 Reborn：“？？？拿来看看？”\\n\\n最后两人越来越兴奋，直至天亮了仍未休息。\\n\\n在此期间，两人因灵胚台工作原理极像匹配模板，于是将第一代灵胚台命名为“模板”。\\n\\n【事件2】\\n昨日上午 9 点 42 分，在经过殿主的许可后，墙佬率众人下山，前往神殿最繁荣的附庸势力十一城展开了第一代灵胚台“模板”的发布会。\\n\\n（此时 Reborn 已经抵不住困意倒在了家里没有前往参与，醒来时后悔万分）\\n\\n此次发布会又一次给十一城带来了空前的盛况，发布会周围上上下下人满为患，连空中也挤满了人。在十一城门口，就已经能听到众人在不停地呐喊：“墙佬牛逼！墙佬牛逼！”。\\n\\n只见墙佬伸手微做下压之状，示意安静，顿时，十一城鸦雀无声，从外面听来，仿佛里面是一座死城一般。\\n\\n随后，墙佬对“模板”做起了介绍，并豪言道：“我们相信！这定将改变这个世界！”。\\n\\n发布会结束之时，一句话再度引燃了十一城：“最后！模板，免费开放！”\\n\\n这一刻，全城轰动、万众欢呼。上一次这样的场面，也是墙佬以一手 Q 系神兵令得十一城夜晚灯火彻夜通明、烟花不止。\\n\\n【事件3】\\n玄月伍日（即昨日 9 月 5 日）下午 17 点，神殿道友风佬因好奇发布会跟着下山去十一城游玩，没想到期间因被怀疑调戏良家妇女而被神殿留守在十一城的执法者晓镇压，而后直接被关禁闭。\\n\\n回归神殿后风佬找上晓佬对峙，晓佬只是淡淡地回了一句：“执行公务罢了”，随后便迈步离去，只留下风佬气的直跺脚。\\n\\n这会成为神殿势力分裂的萌芽吗？不，这并不会，有线报称，二人在饭点一起去了酒楼谈笑风生，嘻哈不断。\\n\\n【事件4】\\n有传闻昨日下午 17 点，风佬被晓佬关禁闭后，十一城掀起了一番骚乱。晓佬为镇压骚乱大开杀戒，一时间尸横遍野。还有传闻有本地居民路过看到这一幕直言道：“刚来就看到这么惊心动魄的一幕”\\n\\n后来，众人才知晓，原来当日十一城内，因有人对镇压风佬的决定有异议，甚至发动了起义，执法者晓决定采取了暴力镇压的手段来消除叛乱，维护了十一城的治安。\\n\\n【事件5】\\n昨日夜里 23 点 15 分，日报社馆长 Reborn 因近日无私发放的日报导致日报社缺水断粮，于是被迫营业，下山到十一城为日报社生存街头卖艺（误）卖器💦，在街头推销起了他锻造七七四十九的机关暗器。\\n\\n----------\\n\\n\\n【真实事件还原】\\n<strike>啊~太忙了没时间写了，晚上再还原吧~</strike>\\n来了来了~\\n\\n1. 墙佬和 Reborn 彻夜研究模板匹配自动出规则，结果墙佬直接 48 小时不睡，果然是超人~\\n2. 墙佬在内测 11 群发布“模板”后，11 群活跃度再次提升，直到今天晚上 20 点都还有人在玩“模板”\\n3. 昨天风佬被晓佬莫名关禁闭了，我也不知道怎么回事......但是问题并不大（滑稽.jpg）\\n4. Reborn 偷偷摸摸在内测 11 群宣传起他的“加解密工具”小程序🤪\"},{\"col_type\":\"movie_3\",\"name\":\"公元7年9月7日\",\"path\":\"y7m9d7\",\"rule\":\"今日报社馆长 Reborn 外出打工维持报社生存，因此停更一天，望周知～\"},{\"col_type\":\"text_1\",\"name\":\"公元7年9月8日\",\"path\":\"y7m9d8\",\"rule\":\"【视界日报】\\n【日期】视界公元 7 年 9 月 8 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n震惊！神匠 L 佬突然宣布辞去神兵仓库管理者的职位，开始了养老生活~\\n\\n目前神兵仓库已交还给神匠联盟盟主道长，传闻道长多次诚意挽留，最后还是没有留住 L 佬想养老的心，神殿众人纷纷表示婉惜。\\n\\n【事件2】\\n昨日下午 18 点 43 分，天意王子闭关处突然传来一阵锐耳的葱鸣。同一时刻，神殿不馋坊（就是厨房）中被拔下来准备入菜的葱以及无药田中仍在生长的葱，都纷纷颤动，随即便向天意王子的方向飞去。\\n\\n神殿众人闻动静不禁抬头，只见天上“绿油油”一片，有人忍不住大喊道：“是葱！”\\n\\n而后，天意王子破关而出，大喊道：“我练成啦！万溅龟......葱？卧槽？？！！”，看见成千上万的葱围在自己身边，最后一个葱字才缓缓道出。天意王子略微感应了一番，不禁头皮发麻：这些葱好像在馋他身子？？！！没有任何犹豫，天意王子立马破空而逃，万葱跟随。\\n\\n神殿众人不禁感叹道：“原来万溅龟葱秘法大成会惹来万葱馋身，此法果真了得~”\\n\\n一段时间过后，民间传出天意王子已规划好下一部要练的神功——唇羊无疾公，不知是否会与他之前传闻中的第一部修炼功法“葵花宝典”有冲突，从而导致走火入魔。有人问他他只淡淡地回了一句：“不疯魔不成佛”\\n\\n【事件3】\\n有密报称隔壁江湖与扶风正在大战，江湖为扰乱扶风军心，不惜使用美人计。\\n\\n----------\\n\\n【真实事件还原】\\n1. L 佬突然说自删仓库账号去养老了，现在仓库由道长继续维护\\n2. 王子出关改了个名叫唇羊无疾公\\n3. 江湖跟扶风解析在皇城 PK，目前这两个解析应该是用不了的\"},{\"col_type\":\"text_1\",\"name\":\"公元10年9月22日\",\"path\":\"y10m9d22\",\"rule\":\"【视界日报】\\n【日期】视界公元 10 年 9 月 22 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n眨眼视界公元年已过三，神殿日报馆长 Reborn 宣布自己可回归一日发表一期日报。\\n\\n【事件2】\\n墙佬于昨日中秋节在十一城举办了“走过路过不要错过错过无货”的限时活动，拿到门票者可前往神兵仓库领取墙佬的极品神兵，令十一城一个上午都激情澎湃，纷纷涌向神兵仓库，通往神兵仓库的通道一时拥塞不已（据说墙佬一口气送出了 20 个极品神兵，一滴都不剩了）\\n\\n【事件3】\\n墙佬以一己之力让神兵仓库二度陷入崩溃，盟主道长被迫紧急斥巨资扩张通往神兵仓库的通道\\n\\n【事件4】\\n！大新闻！传闻殿主正秘密给神兵系统造意大利炮！据说可以大幅提升神兵的进攻性！～\\n\\n----------\\n\\n【真实事件还原】\\n1. 视界不知不觉又走过了 3 个小版本\\n2. 昨天中秋节墙佬在 11 群举行了限时分享小程序活动\\n3. 由于墙佬的活动使群员太过活跃，道长仓库都崩溃了两次😂，道长加急维护提高最大链接人数\\n4. 小棉袄给视界开发了个牛逼的东西，下个版本即可见到，请诸位拭目以待～\"},{\"col_type\":\"text_1\",\"name\":\"公元10年9月25日\",\"path\":\"y10m9d25\",\"rule\":\"【视界日报】\\n【日期】视界公元 10 年 9 月 26 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n  \\n【事件1】\\n昨日清晨，十一城传报发现仍未发布的神兵系统版本外泄，且盟主道长改造的神兵“App影视”惨遭贩卖（传闻是连带着神兵系统一起贩卖）。\\n\\n殿主闻言震怒，亲自出手彻查内奸，最终内奸于神殿中被捕，殿主直接将其驱逐出境。而后又揪出其同党若干，殿主下达禁令，永生不得再入神殿管辖范围。\\n\\n此次已非神殿第一次发现间谍，经过知天阁多番搜证后发现，此次事件与前几次出现的间谍都来自同一个邪恶势力——六魔楼。每一次间谍的发现，都会伴随一些神殿机密的泄漏，也间接使神匠们不再随意分享自己的作品，只有特定时刻才会开放。\\n\\n可见，邪恶势力真是坏东西，各位千万不要想不开加入他们，甚至还会被骗财骗色；同时，也希望各位若有发现，可积极举报，协助神殿铲除间谍。\\n\\n----------\\n\\n【真实事件还原】\\n1. 管理群新版视界被泄露，道长的APP影视小程序和未发布的视界被人打包贩卖，小棉袄震怒，排查内奸，发现管理群被入侵，小棉袄就将他踢出群，又挖出几个QQ号公布出来，让管理员全局拉黑。视界再度上演谍中谍事件~\\n\\n【附言】\\n在这里我想跟大家说的是，不要被人骗了钱，不要去付费加别的什么乱七八糟的群。\\n第一，未发布的视界它没发布说明还有点问题，管理群在测试，稳定了自然会在公众号发布出来，没有私藏版的。\\n第二，没有必要为了一个本来免费的小程序付费获取（偷偷告诉你们，我自己都没嫖到道长的APP影视，那又如何，现有的小程序已经够用了，再多也只是满足自己的收藏欲罢了，嫖不到就等下一次机会，不要被人利用你们的收藏欲来骗你们的钱了）\"},{\"col_type\":\"movie_3\",\"name\":\"公元15年10月30日\",\"path\":\"y15m10d30\",\"rule\":\"【视界日报】\\n【日期】视界公元 15 年 10 月 30 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日发生的奇闻异事~\\n\\n【事件1】\\n震惊！日报社馆长 Reborn 被知天阁阁主派往异域探查多年未归（五年有余），生死未卜，本以为日报社就此没落，如今突然归来！\\n\\nReborn 归来后，毫不犹豫直奔知天阁，眼神中隐约带着惊魂未定之色，似看见了大恐怖一般。\\n\\n【事件2】\\n传闻 Reborn 在异域染上不明恶疾，如今满口胡言，开口便是“该死的”，神殿御用药师诊断后也表示目前无能为力，只能靠 Reborn 自身功力慢慢化解。\\n\\n【事件3】\\n殿主今日一大早便更新了神兵系统，完成了昨日天意王子提出的“边缘渐变”之效。\\n\\n于此同时，香佬趁机上报了一个神兵系统的问题：神兵系统显示区域与手柄重叠，殿主随手一锤🔨便修复了，可见其功力之深厚~\\n\\n【事件4】\\n神匠明日发威独自一人拿下了某地材料库！并将其打造成神兵上传到了神兵仓库！\\n\\n【事件5】\\nReborn 短暂清醒了一段时间后，冲进了锻造室改造豆娃，而后豆娃新增了设置不能进入 HTML 配置的问题，看来是清醒了却又没完全清醒。\\n\\n----------\\n\\n【真实事件还原】\\n1. 今天大佬们突然催更，刚好有空，就更了一章（不要打我！）\\n2. 不知道什么时候被传染的口头禅🙈\\n3. 其实就是小棉袄加了功能和修复了 bug\\n4. 看明日大佬仓库有什么新的东西就知道了（滑稽.jpg）\\n5. 豆娃内测规则设置改为原生控件，不再跳到网页才能修改，这个是优化不是 BUG（冒汗.jpg）\"},{\"col_type\":\"movie_3\",\"name\":\"预告\",\"path\":\"notice\",\"rule\":\"【视界日报】\\n【日期】视界公元 15 年 10 月 30 日\\n【作者】Reborn\\n\\n欲知视界管理事，须关注视界日报。下面是今日奇闻异事的预告~\\n\\n【预告 by Joker】\\n日报社馆长 Reborn 被知天阁阁主派往异域探查多年未归，生死未卜，本以为日报社就此没落，岂料 Reborn 突然返回；\\n\\n究竟是人性的扭曲还是道德的沦丧？Reborn 又在异域看到了什么？\\n\\n今晚八点，道长仓库，不见不散~\"}]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"字幕组","author":"","version":0,"type":"other","url":"hiker://bookmark","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n\n'日菁字幕组@@http://www.mytvbt.net/forumdisplay.php?fid=6&page=1',\n\n'Sub HD 字幕站@@https://subhd.tv/ ',\n'伪射手@@http://assrt.net/',\n'翻托邦字幕组@@https://fantopia.club/ ',\n'SSK字幕组@@http://sskzmz.com/ ',\n'tlf中文字幕@#https://sub.eastgame.org/', \n'opensubtitles@@https://www.opensubtitles.org/zh ',\n'中文字幕网@@http://www.hdzimu.com/', \n'风软字幕组@@http://www.1000fr.net/', \n'A7美剧字幕组@@https://www.addic7ed.com/ ',\n'射手网@@http://splayer.org/', \n'FlX字幕侠@@http://www.zimuxia.cn/',\n'伊甸园@@http://bbs.sfile2012.com/ ',\n'伊甸园字幕@@http://ytet.org/ ',\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nfor (var i = 0; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  if (k.length < 2) continue;\n  var r = {};\n  r.title = k[0];\n  r.url = k[1];\n  r.col_type = 'text_3';\n  d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.numlist&&ul&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"56听书","author":"","version":0,"type":"other","url":"https://www.ting56.cc/list/fyAll-fypage.html[firstPage=https://www.ting56.cc/list/fyAll.html];get;utf-8;{User-Agent@Windows}","col_type":"movie_1_vertical_pic","class_name":"玄幻&武侠&都市&言情&科幻&推理&恐怖&惊悚","class_url":"1&2&3&4&5&6&7&8","area_name":"历史&军事&网游&官商&评书&相声&文学","area_url":"9&10&11&12&13&16&32","sort_name":"","year_name":"儿童&穿越&娱乐&笑话&戏曲&其它&百家讲坛","sort_url":"","year_url":"14&28&33&30&31&15&29","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.clist&&ul&&li');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n        title: '《'+parseDomForHtml(list[i], 'li&&Text').split('时间')[0].replace('作者','》\\n作者').replace('播音','\\n播音'),\n      desc:'最后更新'+parseDomForHtml(list[i], 'li&&Text').split('时间')[1].split('推荐')[0],\n        pic_url: parseDom(list[i], 'img&&src'),\n        url: parseDom(list[i], 'a&&href')+\"#immersiveTheme#\"\r\n\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.clist&&ul&&li');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n        title: '《'+parseDomForHtml(list[i], 'li&&Text').split('时间')[0].replace('作者','》\\n作者').replace('播音','\\n播音'),\n      desc:'最后更新'+parseDomForHtml(list[i], 'li&&Text').split('时间')[1].split('推荐')[0],\n        pic_url: parseDom(list[i], 'img&&src'),\n        url: parseDom(list[i], 'a&&href')+\"#immersiveTheme#\"\r\n\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.ting56.cc/search.php?searchword=**","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\") &&urls[i].match(/\\.mp3|\\.m4a/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n});\n//获取简介\nvar des_desc = '简介：' + parseDomForHtml(html, '.introbox&&Text');\n\nd.push({\n\n    //作者、类型等\n    title: '类型'+parseDomForHtml(html, '.conlist&&Text').split('类型')[1].split('人气')[0].replace('更新','\\n更新').replace('播音','\\n播音'),\n\n    //描述\n    desc:'状态'+ parseDomForHtml(html, '.conlist&&Text').split('状态')[1].split('推荐')[0],\n\n    //图片地址\n    pic_url: parseDom(html, '.conlist&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//限制简介长度\nif (des_desc.length > 110) {\n    des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\nd.push({\n    col_type: 'line'\n});\n\n//选集列表\nvar list = parseDomForArray(html, '.numlist&&ul&&li:has(a)');\n\n//线路名称\nd.push({\n    title: '播放列表(共' + list.length + '集)',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_center_1'\n});\n\n//选集名称\nfor (var i in list) {\n\n    var title = parseDomForHtml(list[i], 'a&&Text');\n\n    if (title.length > 16) {\n        title = title.substring(0, 16);\n    }\n    d.push({\n        title: title,\n        url: parseDom(list[i], 'a&&href') + `@lazyRule=.js:base64Decode(request(input).split('now')[1].split('\\(')[1].split('\\)')[0])`,\n  //url: 'x5Rule://' + parseDom(list[i], 'a&&href') + '@' +_x5,\n        col_type: parseDomForHtml(list[0], 'a&&Text').length > 3 ? 'text_2' : 'text_3'\n    });\n\n}\n\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"3G壁纸i","author":"ivnyoov","version":0,"type":"other","url":"https://www.3gbizhi.com/fyclass/index_fypage.html[firstPage=https://www.3gbizhi.com/fyclass/]","col_type":"movie_3_marquee","class_name":"美女&明星&影视&动漫&卡通&汽车&爱情&游戏&体育&车模&风景&品牌&可爱&节日&建筑&植物&动物&创意&精美","class_url":"wallMV&wallMX&wallYS&wallDM&wallKT&wallQC&wallAQ&wallYX&wallTY&wallCM&wallQFJ&wallPP&wallKA&wallJR&wallJZ&wallZW&wallDW&wallCY&wallQT","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".contlistw&&.cl&&li;\nimg&&alt;\nimg&&lazysrc;\n.tips&&Text;\na,2&&href.js:input+'@lazyRule=#showimg＆＆＆＆a,2＆＆＆＆href'","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"⑦阅读类","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"人一生必读一百本书","author":"Ks","version":0,"type":"other","url":"https://m.100ben.net/fyAll/list_fypage.html","col_type":"movie_3","class_name":"全部&世界名著&现代文学&外国小说&励志书籍&古典文学&武侠小说&言情小说&推理小说&科幻小说&人物传记&盗墓悬疑&穿越玄幻&科普书籍","class_url":"all&shijiemingzhu&xiandaiwenxue&waiguoxiaoshuo&lizhishuji&gudianwenxue&wuxiaxiaoshuo&yanqingxiaoshuo&tuilixiaoshuo&kehuanxiaoshuo&renwuzhuanji&daomuxuanyi&xuanhuanchuanyue&kepushuji","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list&&li;a,1&&Text;img&&src;div,1&&Text;a&&href","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"text_1","detail_find_rule":".dir&&dd;a&&Text;;.content&&Text;a&&href==>js:var res={};\nvar d=[];\ndata=parseDomForHtml(getResCode(),'#content&&Html');\nd.push({title:data,col_type:'rich_text'});\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"网红屋","author":"VIP内容无法显示","version":0,"type":"picture","url":"https://www.whspin.comfyclass?page=fypage","col_type":"movie_3_marquee","class_name":"MICAT猫萌榜&TASTE顽味生活&MiiTao蜜桃社&rosi写真&喵糖映画&UXING优星馆&BoLoli波萝社&ugirls爱尤物&MiStar魅妍社&aiss爱丝&DKGirl御女郎&TGOD推女神旅拍&MyGirl美媛馆&Toutiaogirls头条女神&YouMi尤蜜荟&XIAOYU语画界&IMISS爱蜜社&YouWu尤物馆&禁忌摄影&Girlt果团网&ROSI口罩系列&disi第四印象&XiuRen秀人网&ROSI情趣系列&kelagirls克拉女神&LeYuan星乐园&MFStar模范学院&HuaYan花の颜&XINGYAN星颜社&ISHOW爱秀&QingDouKe青豆客&FEILIN嗲囡囡&HuaYang花漾&UGirls尤果网&YouMei尤美&legbaby美腿宝贝&TGOD推女神","class_url":"/54&/42&/18&/43&/59&/23&/20&/49&/15&/31&/53&/28&/25&/38&/56&/58&/19&/14&/44&/57&/47&/22&/24&/48&/45&/46&/21&/52&/55&/17&/51&/16&/60&/29&/61&/39&/27&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nvar html=getResCode();\npdfa(html,'.row&&a').forEach(j=>{\nd.push({\ntitle:pdfh(j,'img&&alt'),\npic:pd(j,'img&&src'),\nurl:$(pd(j,'a&&href')).lazyRule(()=>{\nvar page=pdfh(request(input),'.pagination&&a,-1&&Text');\nvar urls=[];\nfor(var i=1;i<=page;i++){\nurls.push({url:input+\"?page=\"+i});\n}\nvar pics=[];\nbf(urls).forEach(j=>{\npdfa(j,'.row&&img').forEach(k=>{\npics.push(pd(k,'img&&src'));\n})\n})\nreturn \"pics://\"+pics.join('&&');\n}),\ndesc:pdfh(j,'a&&Text').split(' ')[0]+pdfh(j,'a&&Text').split(' ')[1]\n})\n})\nsetResult(d)","searchFind":"js:\nvar d=[];\nvar html=getResCode();\npdfa(html,'.row&&a').forEach(j=>{\nd.push({\ntitle:pdfh(j,'img&&alt'),\npic:pd(j,'img&&src'),\nurl:$(pd(j,'a&&href')).lazyRule(()=>{\nvar page=pdfh(request(input),'.pagination&&a,-1&&Text');\n\nvar urls=[];\nfor(var i=1;i<=page;i++){\nurls.push({url:input+\"?page=\"+i});\n}\nvar pics=[];\nbf(urls).forEach(j=>{\npdfa(j,'.row&&img').forEach(k=>{\npics.push(pd(k,'img&&src'));\n})\n})\nreturn \"pics://\"+pics.join('&&');\n}),\ndesc:pdfh(j,'a&&Text').split(' ')[0]+pdfh(j,'a&&Text').split(' ')[1]\n})\n})\nsetResult(d)","search_url":"https://www.whongw.com/search?search=**","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#45E8FB"},{"firstHeader":"class","last_chapter_rule":"","title":"知乎搬运工","author":"Killer","version":1,"type":"news","url":"https://www.sxctp.org/fyclass/index-fypage.html","col_type":"text_1","class_name":"严选&小说","class_url":"article&novel","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.container,2&&.bg-white');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),\n        desc: pdfh(list[j], '.my-arclist-time&&Text').replace(\"阅读全文\",\"\").replace(\">\",\"\")+\"\\n\"+pdfh(list[j], '.my-arclist-desc&&Text'),\n       // img: pd(list[j], 'img&&src'),\n        url: pd(list[j], 'a&&href')+\"#readTheme#\"\n    })\n}\nsetResult(d)","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nd.push({\n\t\t title: parseDomForHtml(getResCode(), 'article&&Html'),\n    col_type:'rich_text',\n　　extra: {\n        textSize: 16,\n        click: true\n    }\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=知乎"},{"last_chapter_rule":"","title":"俄乌战争战报速览","author":"none","version":22,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nfunction show(type,title,url){\n  for (let i in title){\n\td.push({\n\t  col_type : type,\n\t  title : title[i],\n     url:url[i]\n  }); }}\n\nfunction show_line(){ d.push({col_type : 'line'});}\nfunction title_show(){\n  d.push({\n        col_type: 'text_center_1',\n        title: '乌克兰战况最新进展✈✈',\n        url:'https://www.zhihu.com/question/519001325/answer/2366167394',\n\t      desc:'当前版本:'+local_Ver+' 仓库版本:'+Cangku_Ver\n});\n}\n\nfunction b_zhibo(b_id,web_url){\n  //感谢镇弟大佬~\n  if(getItem('mianxiu','0')==1){\n  let url_raw = 'http://106.53.212.251/daili/bili.php?id='+b_id;\n  //log({urlraw:url_raw});\n  var url_real='';\n  try {\n\tlet data_2 = fetch(url_raw, {\n       headers: { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'},\n       redirect: false,\n       withHeaders: true });\n\tlet data_3 = JSON.parse(data_2);\n\tlog({d3:data_3});\n   url_real = data_3.headers.location[0] + '#isVideo=true#';\n\tif(url_real == '#isVideo=true#'){url_real = web_url;/*toast('b站直播免嗅可能已失效，已暂时将其切换至web播放模式')*/};\n        } catch (e) {url_real = web_url};\n  return url_real;}else{return web_url}\n}\n\nfunction version_check(){\n//版本号检查\nvar noter = '';\ntry {\n    let myrule = JSON.parse(getRule());\n    local_Ver = myrule.version;\n    Cangku_Ver = JSON.parse(fetch('http://hiker.nokia.press/hikerule/rulelist.json?id=3908', {})).version;\n    var img_logo_url = '';\n    if (local_Ver < Cangku_Ver) {\n        log({\n            Notice: \"有新版本啦 可以更新哦\"\n        });\n        noter = '有新版本啦 可以更新哦';\n    } else {\n        log({\n            Notice: \"已是最新版本\"\n        });\n        noter = '已是最新版本';\n    }\n} catch (err) {\n    log({\n        check_version: '检查版本信息失败，稍后再试'\n    });\n    noter = '检查版本信息失败，稍后再试';\nputMyVar('note',noter);}\n\n//加载信息\n//致敬原作者\nd.push({\n        col_type: 'icon_small_3',\n        title: '作者',\n        img:'https://gitee.com/barlown/my-res/raw/imgbed/%E6%88%91%E7%9A%84.png',\n        url:'https://www.zhihu.com/people/zhang-teng-3-81'\n});\nd.push({\n        col_type: 'icon_small_3',\n        title: '设置',\n        img:'https://gitee.com/barlown/my-res/raw/imgbed/%E8%AE%BE%E7%BD%AE.png',\n        url:'#noHistory#hiker://page/index.html'\n});\nd.push({\n        col_type: 'icon_small_3',\n        title: '更新',\n        img: 'https://gitee.com/barlown/my-res/raw/imgbed/%E5%94%AE%E5%90%8E%20(1).png',\n        url: $('hiker://empty').lazyRule(()=>{let Note = getMyVar('note', '检查失败，请稍后重试');\"toast://\"+Note;if(Note == '有新版本啦 可以更新哦'){confirm({title:'更新提示', content:'检测到你的规则版本小于服务器版本，是否立即更新？', confirm:'toast(\"请移步仓库更新\")', cancel:'refreshPage()'})};return 'hiker://empty'})\n    });\nshow_line();\n}\n\nfunction show_content(){\n  \n//知乎无图模式\nvar html = fetch(nowURL,{});\nvar content = pdfh(html,'body&&.RichContent-inner&&Text');\n//log({content:content});\nvar details = content.match(/\\s\\d\\d\\:\\d\\d[\\s\\S]*?\\d\\d\\:\\d\\d/g);\nvar newest_time = details[0].match(/\\d\\d\\:\\d\\d/g)[0];\nvar LNT = getItem('last_new_time','9999');\nlog({time_check:details[0].match(/\\d\\d\\:\\d\\d/g)[0].replace(':','') - LNT.replace(':','')});\n//log({details:content});\nfor (let i in details){\n  let text_length = details[i].length;\n  if(details[i].match(/\\d\\d\\:\\d\\d/g)[0].replace(':','') - LNT.replace(':','')>0){\n  d.push({\n\tcol_type : 'long_text',\n\ttitle : '★'+ details[i].substring(0,text_length-5).replace(\"(\",\"( \")\n  });\n  }else{\n\t  d.push({\n\tcol_type : 'long_text',\n\ttitle : details[i].substring(0,text_length-5).replace(\"(\",\"( \")\n  });}}\nsetItem('last_new_time',newest_time);\n\n}\n\nfunction show_content_img(){\n//知乎有图模式\nvar html_2 = fetch(nowURL,{});\nvar con_1 = html_2.match(/span class\\=\"RichText[\\s\\S]*?div class\\=\\\"ContentItem\\-time/g)[0];\nvar con_raw = con_1.match(/\\<p[\\s\\S]*?\\<\\/p\\>|\\<img src=\"https\\:\\/\\/pic2\\.zhimg\\.com[\\s\\S]*?source/g);\n//设置上次最近更新时间\nvar last_nt2=con_1.match(/\\d+\\:\\d+/g)[0].replace(':','');\n//内容清洗\nfor (let j in con_raw){\n  try{let temp = con_raw[j].match(/\\d+\\:\\d+/g)[0];putMyVar('start_line',j);/*log({start_line_num:getMyVar('start_line','0')});*/break}catch(e){putMyVar('start_line',-1);/*log({start_line_num:getMyVar('start_line','-1')})*/}\n}\nvar con_list = [];\nfor (let i=getMyVar('start_line','0');i<con_raw.length;i++){\n  try{\n\tcon_list[i] = con_raw[i].match(/\\>[\\s\\S]*?\\</g)[0].replace('<','').replace('>','');var check_p = 1;}catch(e){con_list[i] = con_raw[i].match(/https[\\s\\S]*?source/g)[0];var check_p = 0;};\n //log({list:con_list[i]});\n  if(check_p == 1){\ntry{var new2 = con_list[i].match(/^\\d+\\:\\d+/g)[0].replace(':','')}catch(e){var new2='0'}\nif(new2-getItem('last_NT2','9999')>0){\nd.push({\n\t  col_type:'long_text',\n\t  title:'★'+con_list[i].replace('\\n','')\n\t})\n}else{\n\td.push({\n\t  col_type:'long_text',\n\t  title:con_list[i].replace('\\n','')\n\t})};\n  }else{\n\t\td.push({\n\t    col_type:'pic_1_full', \n\t    img:con_list[i].replace('?source','')+\"@Referer=https://www.zhihu.com/question/518753930\"\n  });\nlog({imgurl:con_list[i].replace('?source','')});\n};\n}\nsetItem('last_NT2',last_nt2);\n}\n\nfunction backup_content(){\n//夸克\nvar json={};\nvar js = [];\nlet html = fetch('https://quark.sm.cn/api/rest?method=news.eventlist&format=html&schema=v2&q=乌克兰',{});\nvar jhtml = html.match(/\\{\\\"year\\\"\\:\\\"2022\\\"\\,\\\"date\\\"[\\s\\S]*?\\{\\\"year\\\"\\:\\\"2022\\\"\\,\\\"date\\\"/g);\nfor (var i in jhtml){\n  let jhtml_clean = jhtml[i].replace(/\\,\\{\\\"year\\\"\\:\\\"2022\\\"\\,\\\"date\\\"/g,'');\n  eval('json=' + jhtml_clean);\ntry{\n let temp= json.group[0];\n  let t = temp.time;\n  let nt =JSON.stringify(new Date(parseInt(t)*1000)+ 8 * 3600 * 1000);\n  log({jsshow:nt})\n  var newTime = nt.match(/\\d+\\:\\d+/g)[0];\n  //log({jsshow:newTime});\n let s=json.group[0].source;\nlet ct= json.group[0].title;\n\tlet content = '【'+ newTime+'】 ' + ct + ' 《'+ s +'》' ;\n d.push({col_type:'long_text',title:content})\n  }catch(e){};\n}}\n\nfunction bili_content(){\nvar json={};\nvar html = '';\nhtml = fetch('https://app.bilibili.com/x/topic/web/details/cards?topic_id=11363&sort_by=0&offset=&page_size=20&source=H5',{});\neval('json=' + html);\nvar offset = json.data.topic_card_list.offset;\nvar list = json.data.topic_card_list.items;\nfor (let i in list){\n  let time = list[i].dynamic_card_item.modules.module_author.pub_time;\n  let title_r = list[i].dynamic_card_item.modules.module_dynamic.desc;\n  try{\n  let title = title_r.rich_text_nodes[0].orig_text;\n  let content = '【'+ time+'】' +'\\n'+ title;\n  d.push({col_type:'long_text',title:content});\n  }catch(e){}\n}\n//设置浏览长度i  即循环次数\nfor (let i = 0;i<4;i++){\nhtml = fetch('https://app.bilibili.com/x/topic/web/details/cards?topic_id=11363&sort_by=0&offset='+offset+'&page_size=20&source=H5',{});\neval('json=' + html);\nvar offset = json.data.topic_card_list.offset;\nvar list = json.data.topic_card_list.items;\nfor (let i in list){\n  let time = list[i].dynamic_card_item.modules.module_author.pub_time;\n  let title_r = list[i].dynamic_card_item.modules.module_dynamic.desc;\n  try{\n  let title = title_r.rich_text_nodes[0].orig_text;\n  let content = '【'+ time+'】' +'\\n'+ title;\n  d.push({col_type:'long_text',title:content});\n  }catch(e){}\n}\n}\n\n/*\n  //该部分感谢eet大佬和‘最熟悉的陌生人’\n  try{\n  let html = request('https://www.bilibili.com/v/topic/detail?topic_id=11363&topic_name=关注俄乌局势最新进展',{headers:{method:'get','content-type':'charst=UTF-8','User-Agent':MOBILE_UA}});\n  var list = pdfa(html,'body&&.bili-dyn-item');\n  for (let i in list){\n\tlet time = pdfh(list[i],'.bili-dyn-time&&Text');\n\tlet content_r = pdfh(list[i],'.bili-rich-text&&Text');\n\tif (content_r == ''){continue;};\n\tlet content = '【'+time+'】 '+ content_r;\n\t d.push({col_type:'long_text',title:content});\n  }\n  }catch(e){backup_content();toast('切换为b站源失败，已自动切换至夸克源')}\n  */\n}\n\n// _mian_\nvar res = {};\nvar d = [];\nvar nowURL='https://www.zhihu.com/question/519001325/answer/2366167394';\n// 第一行直播链接\nvar Live = ['央视直播','凤凰资讯','风直播','CCTV-13','深圳卫视'];\nvar playUrl = [b_zhibo('21686237','https://b23.tv/9F9anTy')/*'https://b23.tv/9F9anTy'*/,'http://playtv-live.ifeng.com/live/06OLEEWQKN4.m3u8','https://play-live.ifeng.com/live/089Z7UJK1Z4.m3u8','http://39.134.115.163:8080/PLTV/88888910/224/3221225638/index.m3u8','http://39.134.66.66/PLTV/88888888/224/3221225668/index.m3u8'];\nshow('scroll_button',Live,playUrl);\nshow_line();\n\n\n// 第二行 新闻期刊\nvar newspaper = ['图文：央视','🔥B站','新浪','夸克','环球','联合早报(新加坡)','乌克兰新闻网'];\nvar newspaperurl = ['https://news.cctv.com/world/','https://www.bilibili.com/v/topic/detail?topic_id=11363&topic_name=关注俄乌局势最新进展','https://sinanews.sina.cn/project/timeline/2022-02-24/detail-imcwiwss2660206.d.html','https://quark.sm.cn/api/rest?method=news.eventlist&format=html&schema=v2&q=俄乌局势最新进展','https://m.huanqiu.com/list/world','https://www.zaobao.com/','https://www.unian.info/'];\nshow('scroll_button',newspaper,newspaperurl);\nshow_line();\n\n//检查版本信息\nvar local_Ver='' ;\nvar Cangku_Ver='';\nversion_check();\n//题目\n//show('text_center_1',['乌克兰战况最新进展✈✈'],['https://www.zhihu.com/question/519001325/answer/2366167394']);\ntitle_show();\n// 内容\nvar cm = getItem('content_mode','0');\nif(cm==0){\ntry{\nif(getItem('img_mode','0')=='1'){show_content_img();}else{\n  show_content();}}catch(e){backup_content();}\n}\nelse{ //非知乎内容\n  try{if(cm==1){backup_content();}else{bili_content()}}catch(e){backup_content();}  \n}\nres.data = d;\nsetHomeResult(res); ","searchFind":"","search_url":"","group":"⑦阅读类","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"设置\",\"path\":\"index.html\",\"rule\":\"js:\\n// 主程序\\nvar d = [];\\nvar res = {};\\n// 首行文字提示\\nd.push({\\n\\tcol_type: 'text_center_1',\\n\\ttitle: '““❤””‘速览显示设置’',\\n\\turl: 'hiker://empty',\\n});\\n\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '知乎无图',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('img_mode','0');return \\\"toast://已设置为无图模式,请返回首页手动刷新~\\\"})()`\\n});\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '知乎有图',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('img_mode','1');return \\\"toast://已设置为有图模式,请返回首页手动刷新~\\\"})()`\\n});\\n\\nd.push({\\n\\tcol_type: 'line',\\n});\\n//主页内容设置--------2\\nd.push({\\n\\tcol_type: 'text_center_1',\\n\\ttitle: '主页内容设置📰',\\n\\turl: 'hiker://empty',\\n});\\n\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '知乎',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('content_mode','0');return \\\"toast://已设置为知乎源,请返回首页手动刷新~\\\"})()`\\n});\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '夸克',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('content_mode','1');return \\\"toast://已设置为夸克源,请返回首页手动刷新~\\\"})()`\\n});\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: 'b站',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('content_mode','2');return \\\"toast://已设置为b站源,请返回首页手动刷新~\\\"})()`\\n});\\nd.push({\\n\\tcol_type: 'line',\\n});\\n//主页内容设置----------3\\nd.push({\\n\\tcol_type: 'text_center_1',\\n\\ttitle: '播放设置▶️',\\n\\turl: 'hiker://empty',\\n  desc:'仅限于设置b站的直播'\\n});\\n\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '免嗅播放视频',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('mianxiu','1');return \\\"toast://已设置为免嗅播放,请返回主页刷新🔄~\\\"})()`\\n});\\nd.push({\\n\\tcol_type: 'text_2',\\n\\ttitle: '网页播放',\\n\\turl: 'hiker://empty' + `@lazyRule=js:(()=>{setItem('mianxiu','0');return \\\"toast://已设置为网页播放，请返回主页刷新🔄~\\\"})()`\\n});\\n\\nd.push({\\n\\tcol_type: 'line',\\n});\\n\\nvar shimo = pdfh(fetch('https://shimo.im/docs/47kgJ47EKYCraYqV/read',{}),'.ql-editor&&Text').match(/\\\\#[\\\\s\\\\S]*?\\\\#/g);\\nd.push({col_type:'text_center_1',title:shimo[0].replace(/\\\\#/g,'')});\\nfor(let i = 1;i<shimo.length;i++){d.push({col_type:'long_text',title:shimo[i].replace(/\\\\#/g,'')});}\\nd.push({col_type:'line'});\\nres.data = d;\\nsetHomeResult(res); \"},{\"name\":\"testpage\",\"path\":\"index2.html\",\"rule\":\"js:\\nvar json = {};\\neval('json=' + fetch('https://quark.sm.cn/api/rest?method=news.eventlist&format=html&schema=v2&q=%E4%B9%8C%E5%85%8B%E5%85%B0',{}));\\nlog({json:json});\"}]","proxy":"","icon":"https://www.thegreatcoursesdaily.com/wp-content/uploads/2020/09/header-2.jpg"},{"last_chapter_rule":"","title":"草榴论坛 免翻","author":"K","version":2,"type":"all","url":"https://cl.8606x.xyz/thread0806.php?fid=fyclass&search=&page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"text_1","class_name":"技术讨论区&达盖尔的旗帜&新时代的我们&成人文学&亚洲有玛&亚洲无玛&欧美&动漫&国产&中字原创&下载&在线","class_url":"7&16&8&20&15&2&4&5&25&26&21&22","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&h3:not(:has(font)):not(:contains(者必看));\na&&Text;\n;\n;\na&&href.js:\"https://cl.8606x.xyz/\"+input.replace(\"data\",\"mob\");","searchFind":"","search_url":"","group":"⑧NSFW","detail_col_type":"pic_1_full","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"迷妹","author":"道长","version":3,"type":"video","url":"https://3bmmd3nh.life/suoyoushipin/fyAll/index_fypage.html[firstPage=https://3bmmd3nh.life/suoyoushipin/fyAll]","col_type":"movie_2","class_name":"国产&主播&日韩&欧美&三级&动漫","class_url":"guochan&zhibo&rihan&oumei&sanji&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), 'body&&.items&&figure');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'figcaption&&Text'),\ndesc: parseDomForHtml(list[j], 'a&&Text'),\r\npic_url: parseDom(list[j],'img&&src'),     \r\nurl:parseDomForHtml(list[j],'img&&src').substring(0,parseDomForHtml(list[j],'img&&src').length-4).replace(\"3bmmaeh.life/pic\",\"3bmmikh.life/new/hls\")+'/index.m3u8'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar json = getResCode();\nvar fires = {};\nvar resJson = {};\neval('resJson=' + json);\nvar res = [];\nfor (var i = 0; i < resJson.data.length; i++) {\n        var mo = resJson.data[i];\n        var r = {};\n        r.title = mo.videoTitle;\n        r.url = 'https://3bmmd3nh.life/' + mo.pageUrl+'@lazyRule=.table&&input&&value';\n        r.desc = mo.CreateTime;\n        r.img = 'https://3bmmd3nh.life/' + mo.videoImgUrl;\n        res.push(r);\n}\nfires.data = res;\nsetSearchResult(fires);","search_url":"https://3bmmd3nh.life/bax/search?title=**&current=fypage&size=16&source=m4","group":"⑧NSFW","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://3bmmd3nh.life/favicon.ico"},{"last_chapter_rule":"","title":"Jable一级","author":"TyrantGenesis","version":1,"type":"all","url":"https://jable.tv/fyAll/fypage/?from=fypage","col_type":"movie_2","class_name":"热门&最新","class_url":"hot&new-release","area_name":"主奴調教&直接開啪&中文字幕&凌辱強暴&制服誘惑&角色劇情&盜攝偷 拍&無碼解放&男友視角&多P群交&絲襪美腿&女同歡愉","area_url":"categories/bdsm&categories/sex-only&categories/chinese-subtitle&categories/rape&categories/uniform&categories/roleplay&categories/hidden-cam&categories/uncensored&categories/pov&categories/groupsex&categories/pantyhose&categories/lesbian","sort_name":"","year_name":"3P&4小時以上&Cosplay&NTR&OL&一日十回&下雨天&不倫&中出&主播&乳交&人 妻&便利店&健身房&偶像&偷 拍&催眠&兔女郎&凌辱&出軌&刑具&口交&口 爆&吊帶襪&和服&圖書館","sort_url":"","year_url":"tags/3p&tags/more-than-4-hours&tags/Cosplay&tags/ntr&tags/ol&tags/10-times-a-day&tags/rainy-day&tags/incest&tags/creampie&tags/female-anchor&tags/tit-wank&tags/wife&tags/store&tags/gym-room&tags/idol&tags/hidden-cam&tags/hypnosis&tags/bunny-girl&tags/insult&tags/affair&tags/torture&tags/blowjob&tags/cum-in-mouth&tags/stockings&tags/kimono&tags/library","find_rule":".site-content&&.video-img-box;h6&&a&&Text;img&&data-src;.label&&Text;a&&href.js:input+'@lazyRule=.js:fetch(input,{}).match(/https.*?m3u8/)[0]';","searchFind":".site-content&&.video-img-box;h6&&a&&Text;a&&href.js:input+'@lazyRule=.js:fetch(input,{}).match(/https.*?m3u8/)[0]';.label&&Text;h6&&a&&Text;img&&data-src","search_url":"https://jable.tv/search/**/?from_videos=fypage&from_albums=fypage","group":"⑧NSFW","detail_col_type":"pic_1","detail_find_rule":".site-content;.header-left&&h4&&Text;video&&poster;.tags&&Text;a&&href.js:input+'@lazyRule=.js:fetch(input,{}).match(/https.*?m3u8/)[0]';","sdetail_col_type":"pic_1","sdetail_find_rule":".site-content;.header-left&&h4&&Text;video&&poster;.tags&&Text;a&&href","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"title":"dota官网壁纸Ⓜ︎","author":"墨非白","version":1,"url":"https://www.dota2.com.cn/enjoy/fyAll/indexfypage.htm","col_type":"pic_1_full","class_name":"原画欣赏&精美壁纸","class_url":"gameart&gamewall","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDom(getResCode(), '.picbox&&Html').match(/<li>[\\s\\S]*?<\\/li>/g);\nfor (var j = 0; j < list.length; j++){\n  var pic = list[j].match(/href=\\\"[\\s\\S]*?\\\"/g)\n  var num = pic.length-1;\n\td.push({\n\t  pic_url:'https://'+pic[num].split('\"')[1].split('\\/\\/')[1],\n\t  url:'https://'+pic[num].split('\"')[1].split('//')[1],\n\t});\n};\nres.data = d;\nsetHomeResult(res);\n","searchFind":"","search_url":"","titleColor":"#ff148e8e","group":"⑧dota","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","icon":"#ff148e8e"},{"last_chapter_rule":"","title":"听书评书网","author":"缘分","version":0,"type":"video","url":"https://m.5tps.vip/m_lfyAll_fypage.html","col_type":"text_1","class_name":"单田芳&刘兰芳&田连元&袁阔成&连丽如&张少佐&田战义&孙一&石连君&马长辉&王军&王玥波&王封臣&关永超&昊儒&粤语评书&其他评书","class_url":"_hot/1&_hot/2&_hot/3&_hot/4&_hot/5&_hot/6&_hot/7&_hot/8&_hot/29&_hot/25&_hot/27&_hot/28&_hot/30&_hot/35&_hot/26&_hot/12&/13","area_name":"玄幻奇幻&恐怖惊悚&言情通俗&武侠小说&历史军事&刑侦反腐&官场商战&人物纪实&有声文学&童话寓言&广播剧&英文读物&百家讲坛","area_url":"/46&/14&/19&/11&/15&/16&/17&/18&/10&/20&/36&/22&/9","sort_name":"","year_name":"今日头条&商业财经&脱口秀&亲子教育&教育培训&综艺娱乐&相声小品&轻音清心&时尚生活&戏曲&二人转&健康养生","sort_url":"","year_url":"/40&/42&/41&/43&/44&/34&/21&/23&/45&/38&/31&/33","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.top_list&&a');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'body--span&&a&&Text'),\n            desc: pdfh(list[j], 'span&&Text'),\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.top_list&&a');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'body--span&&a&&Text'),\n            desc: pdfh(list[j], 'span&&Text'),\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://m.5tps.vip/so.php?keyword=**&page=fypage","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\ntry {\nd.push({\n    title: pdfh(html, '.bookinfo&&.info&&div,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'.bookinfo&&.info&&div,2&&Text').substring(0, 18),\n    desc: pdfh(html, '.bookinfo&&.info&&div,4&&Text'),\n    img: pd(html, \n'.bookimg&&img&&src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.bookimg&&img&&src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy1', {})).rule);\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\nvar list = pdfa(html,'.compress&&li') \n    if (getVar('shsort') == '1') {\n        var list = list.reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: parseDomForHtml(list[0], 'a&&Text').length > 4 ? 'flex_button' : 'text_3'\n        });\n    }\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var html = request(input).match(/play_link = \\\"(.*?)\\\"/)[1]\\n    var mp3 = request(html,{headers:{\\n                'Referer': 'https://m.5tps.vip/'\\n            }}).match(/mp3:''.*?'(.*?)'/)[1]\\n    var url = 'https://pse.wodeshougong.com/'+mp3;\\n    var url1 = 'https://psf.wodeshougong.com/'+mp3;\\n    var url2 = 'https://177h.wodeshougong.com/'+mp3;\\n    var url3 = 'https://177d.wodeshougong.com/'+mp3;\\n    var url4 = 'https://177f.wodeshougong.com/'+mp3;\\n        return JSON.stringify({\\n        urls: [url,url1,url2,url3,url4],\\n        headers: [{'Referer':'https://ai-m-5tps.iiszg.com/'},{'Referer':'https://ai-m-5tps.iiszg.com/'},{'Referer':'https://ai-m-5tps.iiszg.com/'},{'Referer':'https://ai-m-5tps.iiszg.com/'}\\n,{'Referer':'https://ai-m-5tps.iiszg.com/'}],\\n    })\\n}, MY_HOME)\"},{\"col_type\":\"movie_3\",\"name\":\"lazy1\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {       \\nrequireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\\n        return lazyParse(input);\\n     \\n});\"}]","proxy":"","icon":"https://m.5tps.vip/favicon.ico"},{"last_chapter_rule":"","title":"听书轻合集.dz","author":"轻合集生成器","version":82,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet requireVersion = 2462\nif(getAppVersion() < requireVersion){\n    confirm({\n        title: \"重要提示\",\n        content: \"请更新软件到最新版确保各项功能正常使用，否则该提示会一直显示\"\n    })\n}\nconst {\n    dataLoad\n} = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\nlet el = [{\n    title: ' ' + getItem('myCollection').bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n    url: 'hiker://page/Config?rule=' + getItem('myCollection'),\n    img: MY_RULE.icon || 'hiker://images/icon1',\n    col_type: 'avatar'\n}, {\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getItem('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input',\n    extra: {\n        rules: $.toString(() => {\n            const {\n                dataLoad\n            } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\n            return JSON.stringify(dataLoad())\n        })\n    }\n}]\n\nlet newWindow = readFile('newWindow')\ndataLoad().forEach((v) => {\n    let fypage = /^[^;]*?fypage.*?(;.*)?$/.test(v.url) ? 'fypage' : '1',\n        d = {\n            title: v.title,\n            url: 'hiker://page/indexLoad?#' + fypage + '#noHistory#',\n            img: v.icon || 'https://cf-ipfs.com/ipfs/QmXxgDVAZLWhFxikrAFVPRZQuJ2uFae7syXhFubPwMwUiU',\n            extra: {\n                RULE: v\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: getItem('myCollection') + d.title\n    })\n    el.push(d)\n})\nsetResult(el)","searchFind":"js:\nvar d = [];\nlet requireVersion = 2462\nif (getAppVersion() < requireVersion) {\n    d.push({\n        title: \"请更新软件到最新版确保各项功能正常使用，否则该提示会一直显示\",\n    });\n}\nd.push({\n    title: \"点我查看搜索结果\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        rules: $.toString(() => {\n            const {\n                dataLoad\n            } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\n            return JSON.stringify(dataLoad())\n        })\n    }\n});\n\nsetResult(d);","search_url":"hiker://empty?keyword=**&page=fypage","titleColor":"#ff13b66a","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myCollection', MY_RULE.title)\nsetItem('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=2433&auth=6ed0eefb-ab05-53c1-95e5-ba5976bbc7e0')\n// \n// 包裹错误\nevalPrivateJS('FZpxnY6DYs+FlUtZDGKtTIxbEdTjo2EbKP8KoQFr7YVKb3UCmaS99qX9M45cFXNdVzC3Jie+WgKuz9w9n3ymdt2zI50CX8MXufo0H+HpY+kCQNPeOkMSSr93I5VfQ9xDCj9vD3881VmRrNWrzsaizYiBmggMZAuijiNRYlytcLW0in3kW08WDiQzJE1tfDmcJsJoEDBDcQsjNhSHWQwSKEbAQtSXazcVYdovJDrZpr+5bJmQa+DzFLDQjj5q1wuZ3OiZi0hNZbldQWULvsHKBxnZ8hEbX9SKVCqBKH3UNQA=')","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\n//避免require多次调用\\nlet rCache = {};\\n\\nfunction require(param0, param1, param2, param3, param4) {\\n    if (rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0;\\n    param3 = MY_TICKET;\\n    param4 = eval;\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4);\\n}\\nlet myCollection_el = [],\\n    pageNum = parseInt(MY_URL.split('#')[1]),\\n    RULE = MY_PARAMS.RULE,\\n    fyAll = RULE.url.includes('fyAll'),\\n    // 加载ClassTab组件\\n    ClassTab = $.require('hiker://page/ClassTab?rule=' + getItem('myCollection')),\\n    tabHeader = []\\n\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, {\\n    name: RULE.title\\n})\\nif (pageNum == 1) {\\n    addListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\n    putVar('myCollection-searchMode', RULE.title)\\n    tabHeader.load(myCollection_el)\\n    if (RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rule: getItem('myCollection'),\\n            RULE: RULE,\\n            rules: $.toString((r) => {\\n                return JSON.stringify([r])\\n            }, RULE)\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 处理MY_URL和MY_RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.find_rule\\nMY_RULE.detail_find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst {\\n    runCode,\\n    urlParse\\n} = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar {\\n    MY_URL,\\n    MY_URL_Options\\n} = urlParse(RULE.url, {}, pageNum, (url) => {\\n        url[0] = fyAll ? url[0].replace(/fyAll/g, '$${fyAll}') : url[0].replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n        url[0] = tabHeader.setUrl(url[0])\\n    }),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\n\\nif (pageNum == 1) eval(MY_RULE.preRule)\\n//重新初始化config\\nlet _cfg = getMyVar('initConfig', '{}');\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    getUrl = function() {\\n        return MY_URL\\n    }\\n\\n    getResCode = function() {\\n        return indexHtml\\n    }\\n\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) {\\n                if (!v.url.startsWith('hiker://empty#'))\\n                    return v\\n            }\\n            v.extra = {\\n                url: v.url,\\n                RULE: MY__RULE,\\n                pageTitle: v.title\\n            }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: url,\\n                    RULE: MY_RULE,\\n                    pageTitle: title\\n                }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\n//避免require多次调用\\nlet rCache = {};\\n\\nfunction require(param0, param1, param2, param3, param4) {\\n    if (rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0;\\n    param3 = MY_TICKET;\\n    param4 = eval;\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4);\\n}\\nlet myCollection_el = [],\\n    pageNum = 1\\n\\n// 处理MY_URL和MY_RULE\\nlet RULE = MY_PARAMS.RULE\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.detail_col_type\\nMY_RULE.find_rule = RULE.detail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = RULE.pageList\\nMY_RULE.pages = RULE.pages\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = RULE.params\\n\\nconst {\\n    runCode,\\n    urlParse\\n} = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet fypageFlag = MY_PARAMS.url.indexOf('fypage')\\nif (fypageFlag >= 0) pageNum = parseInt(/^\\\\d+/.exec(MY_URL.slice(fypageFlag)))\\nvar {\\n    MY_URL,\\n    MY_URL_Options\\n} = urlParse(MY_PARAMS.url, RULE.urlHeaders, pageNum),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 解析正文\\nif (MY_PARAMS.pageTitle) setPageTitle(MY_PARAMS.pageTitle)\\neval(MY_RULE.preRule)\\n//重新初始化config\\nlet _cfg = getMyVar('initConfig', '{}');\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\nsetLastChapterRule(MY_RULE.last_chapter_rule)\\nMY_PARAMS = MY_RULE.params\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    getUrl = function() {\\n        return MY_URL\\n    }\\n\\n    getResCode = function() {\\n        return indexHtml\\n    }\\n\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: v.url,\\n                RULE: MY__RULE\\n            }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^(.*?)(?:==>(.*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: url,\\n                    RULE: Object.assign({}, MY_RULE, {\\n                        detail_find_rule: detailFindRule\\n                    })\\n                }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    dataLoad: function(showAll) {\\n        //检查间隔，默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            time = parseInt(readFile('updateTime')) || 0,\\n            now = new Date().getTime(),\\n            data = []\\n        if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n            // 获取远程数据\\n            let url = getItem('remoteUrl')\\n            try {\\n                let remoteData = fetch(url)\\n                if (url.startsWith('hiker://page/'))\\n                    remoteData = JSON.parse(remoteData).rule\\n                data = JSON.parse(remoteData)\\n            } catch (e) {}\\n            if(data.length == 0) {\\n                data = JSON.parse(readFile('dataCache') || '[]')\\n                log('没有获取到更新数据')\\n            } else {\\n                data = data.filter((v) => { return v.title != getItem('myCollection') && !v.author.includes('轻合集生成器') })\\n                saveFile('dataCache', JSON.stringify(data))\\n                saveFile('updateTime', now.toString())\\n                log('更新数据已写入本地')\\n            }\\n        } else {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n        }\\n        // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if(showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    },\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, headers, pageNum, func) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        if (func) func(url)\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: headers, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = 'text/plain;charst=' + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return { MY_URL: url[0], MY_URL_Options: options }\\n    }\\n}\\n\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"单搜\",\"path\":\"singleSearch\",\"rule\":\"js:\\n//避免require多次调用\\nlet rCache = {};\\n\\nfunction require(param0, param1, param2, param3, param4) {\\n    if (rCache[param0] != null) {\\n        return\\n    }\\n    if (!param0) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0;\\n    param3 = MY_TICKET;\\n    param4 = eval;\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4);\\n}\\nlet myCollection_el = [],\\n    RULE = MY_PARAMS.RULE,\\n    keyword = getParam('keyword'),\\n    pageNum = parseInt(getParam('page'))\\n\\n// 处理MY_URL和MY_RULE\\nMY_TYPE = 'search'\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.col_type = RULE.col_type\\nMY_RULE.detail_col_type = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_col_type : RULE.sdetail_col_type\\nMY_RULE.find_rule = RULE.searchFind\\nMY_RULE.detail_find_rule = ['', '*'].includes(RULE.sdetail_find_rule) ? RULE.detail_find_rule : RULE.sdetail_find_rule\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\nMY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\nMY_RULE.params = {}\\n\\nconst {\\n    runCode,\\n    urlParse\\n} = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nvar {\\n    MY_URL,\\n    MY_URL_Options\\n} = urlParse(RULE.search_url, {}, pageNum, (url) => {\\n        url[0] = url[0].replace(url[0].includes('%%') ? /%%/g : /\\\\*\\\\*/g, encodeStr(keyword, url[2]))\\n    }),\\n    indexHtml = fetch(MY_URL, MY_URL_Options)\\nMY_RULE.url = MY_URL\\nMY_RULE.urlHeaders = MY_URL_Options.headers\\n// 正文解析\\nif (pageNum == 1) {\\n    setPageTitle('“' + keyword + '”的搜索结果')\\n    try {\\n        eval(MY_RULE.preRule)\\n    } catch (e) {}\\n}\\n\\n//重新初始化config\\nlet _cfg = getMyVar('initConfig', '{}');\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    getUrl = function() {\\n        return MY_URL\\n    }\\n\\n    getResCode = function() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign({}, MY_RULE),\\n                subTitle = v.title\\n            v.title += '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + (v.desc || '').fontcolor('#666666')).small()\\n            v.desc = v.content || ''\\n            if (!v.img && !v.pic_url) v.col_type = 'text_1'\\n            delete v.content\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule'].find((vv) => v.url.startsWith(vv + '://'))) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, params] = v.url.split('#')[0].match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                v.url = v.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n                return v\\n            } else if (!MY_RULE.detail_find_rule || v.url.startsWith('hiker://')) {\\n                if (!v.url.startsWith('hiker://empty#'))\\n                    return v\\n            }\\n            v.extra = {\\n                url: v.url,\\n                RULE: MY__RULE,\\n                pageTitle: subTitle\\n            }\\n            v.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n            if (v.extra.RULE.url.includes('#immersiveTheme#')) v.url += '&#immersiveTheme#'\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 4) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 1) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title + '““””<br>' + (RULE.title.fontcolor('#12b668') + ' ▪ ' + desc.fontcolor('#666666')).small(),\\n                url: url,\\n                desc: content,\\n                img: img\\n            }\\n        if (!res.img) res.col_type = 'text_1'\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE,' + $.stringify({\\n                    pages: MY_RULE.pages,\\n                    pageList: MY_RULE.pageList,\\n                    find_rule: '',\\n                    params: ''\\n                }) + ');MY_URL=\\\"' + MY_URL + '\\\";')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: url,\\n                    RULE: MY_RULE,\\n                    pageTitle: title\\n                }\\n                res.url = 'hiker://page/detailLoad?rule=' + getItem('myCollection')\\n                if (res.extra.RULE.url.includes('#immersiveTheme#')) res.url += '&#immersiveTheme#'\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearVar(\\\"myCollection-sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst { dataLoad } = $.require('hiker://page/utility?rule=' + getItem('myCollection'))\\nlet data = dataLoad(true),\\n    el = [{\\n        title: '清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon1',\\n        col_type: 'avatar'\\n    }],\\n    searchThd = readFile('searchThd') || '5',\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    editMode = getVar('myCollection-editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  🔍 搜索模式: ' + (searchThd == 0 ? '列' : '聚' + searchThd) + '  ',\\n    url: $(['列表搜索', '聚合搜索'], 1).select((searchThd) => {\\n        if (input == '列表搜索') {\\n            saveFile('searchThd', '0')\\n            refreshPage()\\n        } else {\\n            if (searchThd == 0) searchThd = 5\\n            return $(searchThd, '输入搜索线程，最好不要超过16').input(() => {\\n                saveFile('searchThd', input)\\n                refreshPage()\\n            })\\n        }\\n    }, searchThd),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, { col_type: 'big_blank_block' });\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putVar('myCollection-editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nel.push({\\n    title: '恢复出厂数据',\\n    url: $('确定要恢复出厂，清楚自定义数据吗？').confirm(() => {\\n        deleteFile('customData')\\n        refreshPage(false)\\n        return 'toast://已恢复出厂数据'\\n    }),\\n    col_type: 'scroll_button'\\n})\\n\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getVar('myCollection-sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putVar('myCollection-sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putVar('myCollection-sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"}]","proxy":"","icon":"https://z3.ax1x.com/2021/11/16/IWJhxf.png"},{"last_chapter_rule":"","title":"国学大师","author":"tee","version":0,"type":"read","url":"http://www.guoxuedashi.net/fyclass","col_type":"text_2","class_name":"国学书库&诗词宝典&精选&正史","class_url":"ShuKu/&shici/&SiKuQuanShu/gxjx.php&24shi/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar list = pdfa(getResCode(), '.info_content&&a:not(:contains(点此)):not(:contains(下载)):not(:contains(影印)):not(:contains(【))');\nfor(let i of list){\n    d.push({\n        title: pdfh(i, 'a&&Text'),\n        url: pd(i, 'a&&href')\n    });\n};\n\nsetResult(d)","searchFind":"*","search_url":"","group":"⑧小说","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\n\n//书名\nvar html = getResCode();\nd.push({\n    title: \"<big>\" + pdfh(html, '.info_tree&&Text') + \"</big>\",\n    col_type: 'rich_text'\n});\n\n//分割线\nd.push({\n    title: '',\n    col_type: 'line'\n});\n\n//目录\nvar list = pdfa(html, 'body&&dl&&a');\nfor (let i of list) {\n    d.push({\n        title: pdfh(i, 'a&&Text'),\n        col_type: 'text_2',\n        url: $(pd(i, 'a&&href') + \"#autoPage##readTheme#\").rule(() => {\n            var d = [];\n            d.push({\n                col_type: \"rich_text\",\n                title: \"<big>\" + pdfh(getResCode(), '.info&&h1&&Text') + \"</big>\",\n            });\n            d.push({\n                title: pdfh(getResCode(), '.info_txt&&Html').replace(new RegExp(\"\\n\\n\", \"g\"), \"<br>\").replace(new RegExp(\"\\r\\n\", \"g\"), \"<br>\").replace(new RegExp(\"<br><br>　　<br><br>\", \"g\"), \"<br><br>\"),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            });\n            d.push({\n                title: pdfh(getResCode(), '.info_txt2&&Html').replace(new RegExp(\"\\n\\n\", \"g\"), \"<br>\").replace(new RegExp(\"\\r\\n\", \"g\"), \"<br>\").replace(new RegExp(\"<br><br>　　<br><br>\", \"g\"), \"<br><br>\"),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            });\n            setResult(d);\n        })\n    });\n};\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级公共模板\",\"path\":\"yiji\",\"rule\":\"/**\\n * 建议复制粘贴到一个 js 文件，然后上传仓库或者码云，之后都作为依赖进行 requireCache 调用\\n * 有能力者可修改一下自定义项再作为依赖 require\\n */\\nfunction 一级() {};\\nObject.assign(一级.prototype, {\\n    constructor: 一级,\\n    test() {},\\n    获取源码(url, header) {\\n        return fetch(true_url, {\\n            headers: header || {\\n                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n            }\\n        }) // 默认统一使用PC UA\\n    },\\n    获取正确链接(page, regex) {\\n        let true_url = getMyVar('header.url', MY_URL);\\n        let 链接处理工具 = requireCache(config.链接处理工具依赖)\\n        true_url = 链接处理工具\\n            .链接(true_url)\\n            .页码(page)\\n            .插入新处理规则(regex || [])\\n            .获取处理结果();\\n        return true_url;\\n    },\\n    打造分类(ruleList) {\\n        if (!ruleList) {\\n            let 分类定位 = [\\n                // 定位四大金刚\\n                {\\n                    一级分类: 大类定位,\\n                    子分类: 统一小类定位 || 小类定位,\\n                    分类链接: {\\n                        二次处理(url) {\\n                            try {\\n                                return 对分类链接进行二次处理(url)\\n                            } catch (e) {\\n                                return url\\n                            }\\n                        }\\n                    }\\n                }\\n            ]\\n\\n            if (拼接分类的大类定位 && (统一小类定位 || 拼接分类的小类定位)) {\\n                分类定位.push(\\n                    // 定位其他大分类，如地区、年份等\\n                    {\\n                        一级分类: 拼接分类的大类定位,\\n                        子分类: 统一小类定位 || 拼接分类的小类定位,\\n                        分类链接: {\\n                            二次处理(url) {\\n                                try {\\n                                    return 对拼接分类链接进行二次处理(url)\\n                                } catch (e) {\\n                                    return url\\n                                }\\n                            }\\n                        }\\n                    }\\n                )\\n            }\\n            ruleList = 分类定位;\\n        }\\n        // '0' 为默认不折叠，'1' 为默认折叠\\n        const 当前折叠状态 = getMyVar('header.fold', '1')\\n\\n        // 引入动态分类依赖\\n        // 框架已经稳定，使用 requireCache 更佳\\n        let htmlCategories = requireCache(config.动态分类依赖)\\n        htmlCategories.界面(d)\\n            // .分类链接(true_url)\\n            .源码(html)\\n            .页码(page)\\n            .添加分类定位(ruleList)\\n            .开启内置折叠功能() // 必须\\n            .折叠(当前折叠状态) // 必须\\n            .选中的分类颜色(分类颜色)\\n            .开始打造分类();\\n    },\\n    生成片单(d, html) {\\n        let list = parseDomForArray(html, 列表);\\n        for (let j in list) {\\n            d.push({\\n                title: parseDomForHtml(list[j], 标题),\\n                desc: parseDomForHtml(list[j], 描述),\\n                img: parseDom(list[j], 图片) + '@Referer=',\\n                url: parseDom(list[j], 链接).replace('play', 'detail').replace('/sid/1/nid/1', '') + \\\"#immersiveTheme#\\\"\\n            });\\n        }\\n    }\\n})\\n\\n$.exports = new 一级();\\n$.exports\"}]","icon":""},{"last_chapter_rule":"","title":"数字图书馆.T","author":"tee","version":3,"type":"read","url":"http://read.nlc.cn/allSearch/searchList?searchType=fyAll&showType=1&pageNo=fypage","col_type":"movie_3","class_name":"数字古籍&数字方志&赵城金藏&宋人文集&碑帖菁华&甲骨世界&东文研汉籍&哈佛善本&法藏敦煌遗书","class_url":"10024&12&10021&30&34&32&54&14&10022","area_name":"民国图书&民国法律&民国期刊&民国报纸","area_url":"24&23&35&60","sort_name":"","year_name":"少儿连环画&少儿文津奖图书&少儿新闻总署推荐图书&少儿图书","sort_url":"","year_url":"41&49&44&27","find_rule":"ul,1&&li;.tt&&Text;img&&src;.txt&&Text;a&&href","searchFind":"ul,2&&li;;a,1&&Text;a&&href;;p,0&&Text+p,1&&Text+p,2&&Text;img&&src","search_url":"http://read.nlc.cn/allSearch/searchList?searchType=fyAll&showType=1&pageNo=fypage&searchWord=**","group":"⑧小说","detail_col_type":"movie_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar res = {};\nvar d = [];\n\nlet src = getResCode();\nd.push({ //标题详情\n    title: parseDomForHtml(src, \".title&&Text\"),\n    col_type: \"pic_1_card\",\n    desc: parseDomForHtml(src, \".xiangxi&&Text\"),\n    pic_url: parseDom(src, \".pic&&img&&src\"),\n    url: \"\",\n});\n\nd.push({\n    title: \"在线打开\",\n    col_type: 'text_center_1',\n    url: parseDom(getResCode(), \".btns&&a&&href\"),\n});\n\nlet list = parseDomForArray(getResCode(), \"ul&&li\");\nfor (let a in list) {\n    d.push({ //分卷目录\n        title: parseDomForHtml(list[a], \".aa&&Text\"),\n        col_type: \"text_3\",\n        desc: parseDomForHtml(list[a], \".xiangxi&&Text\"),\n        picurl: parseDom(list[a], \"img&&src\"),\n        url: parseDom(list[a], \"a,1&&href\").js:input+'@lazyRule=body＆＆＆＆a＆＆＆＆href', //.replace(\"/OutOpenBook/OpenObjectBook\",\"/static/webpdf/indexnobj.html\").replace(\"amp;\",\"\") + \"&curpage=0\"\n        options: {\n            header: {\n                \"User-Agent\": MOBILE_UA\n            }\n        }\n    });\n};\n\nsetResult(d);","ua":"pc","preRule":"/*\n馆藏音像&文津沙龙&视频荟萃&文津讲坛&中国典籍与文化系列\n51&50&52&6&58\n*/\n\n/*\n//二级解析规则\njs:\nvar res = {};\nvar d = [];\n\nlet src = getResCode();\nd.push({ //标题详情\n    title: parseDomForHtml(src, \".title&&Text\"),\n    col_type: \"pic_1_card\",\n    desc: parseDomForHtml(src, \".xiangxi&&Text\"),\n    pic_url: parseDom(src, \".pic&&img&&src\"),\n    url: \"\",\n});\n\nd.push({\n    title: \"在线打开\",\n    col_type: 'text_center_1',\n    url: parseDom(getResCode(), \".btns&&a&&href\"),\n});\n\nlet list = parseDomForArray(getResCode(), \"ul&&li\");\nfor (let a in list) {\n    d.push({ //分卷目录\n        title: parseDomForHtml(list[a], \".aa&&Text\"),\n        col_type: \"text_3\",\n        desc: parseDomForHtml(list[a], \".xiangxi&&Text\"),\n        picurl: parseDom(list[a], \"img&&src\"),\n        url: parseDom(list[a], \"a,1&&href\").js:input+'@lazyRule=body＆＆＆＆a＆＆＆＆href', //.replace(\"/OutOpenBook/OpenObjectBook\",\"/static/webpdf/indexnobj.html\").replace(\"amp;\",\"\") + \"&curpage=0\"\n        options: {\n            header: {\n                \"User-Agent\": MOBILE_UA\n            }\n        }\n    });\n};\n\nsetResult(d);\n*/","pages":"[]","icon":"http://read.nlc.cn/static/style/images/gutu_logo.jpg"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.play-list&&ul&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"听书宝","author":"","version":0,"type":"music","url":"http://m.tingshubao.com/list/fyAll_fypage.html[firstPage=http://m.tingshubao.com/list/fyAll.html];get;gb2312","col_type":"movie_1_vertical_pic","class_name":"有声小说&玄幻武侠&都市小说&言情小说&惊悚悬疑&历史军事&网游科幻","class_url":"1&27&28&29&31&32&33","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.book-ol&&li');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n        title: '《'+parseDomForHtml(list[i], 'h4&&Text')+'》'+'\\n'+parseDomForHtml(list[i], '.book-meta&&Text'),\n      desc: parseDomForHtml(list[i], '.book-desc&&Text'),\n        pic_url: parseDom(list[i], 'img&&data-original'),\n        url: parseDom(list[i], 'a&&href')+\"#immersiveTheme#\"\r\n\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.book-ol&&li');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n        title: '《'+parseDomForHtml(list[i], 'h4&&Text')+'》'+'\\n'+parseDomForHtml(list[i], '.book-meta&&Text'),\n      desc: parseDomForHtml(list[i], '.book-desc&&Text'),\n        pic_url: parseDom(list[i], 'img&&data-original'),\n        url: parseDom(list[i], 'a&&href')+\"#immersiveTheme#\"\r\n\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.tingshubao.com/search.asp?page=fypage&searchword=**&searchtype=-1;get;gb2312","titleColor":"","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\") &&urls[i].match(/\\.mp3|\\.m4a/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n});\n//获取简介\nvar des_desc = '简介：' + parseDomForHtml(html, '.book-des--p&&Text');\n\nd.push({\n\n    //作者、类型等\n    title: parseDomForHtml(html, '.book-rand-a,0&&Text') + '\\n' + parseDomForHtml(html, '.book-des&&p&&Text').replace('播音','\\n播音'),\n\n    //描述\n    desc: parseDomForHtml(html, '.book-rand-a,2&&Text'),\n\n    //图片地址\n    pic_url: parseDom(html, '.book&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//限制简介长度\nif (des_desc.length > 110) {\n    des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\nd.push({\n    col_type: 'line'\n});\n\n//选集列表\nvar list = parseDomForArray(html, '.play-list&&ul&&li:has(a)');\n\n//线路名称\nd.push({\n    title: '播放列表(共' + list.length + '集)',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_center_1'\n});\n\n//选集名称\nfor (var i in list) {\n\n    var title = parseDomForHtml(list[i], 'a&&Text');\n\n    if (title.length > 16) {\n        title = title.substring(0, 16);\n    }\n\n    d.push({\n        title: title,\n        url: 'x5Rule://' + parseDom(list[i], 'a&&href') + '@' +_x5,\n        col_type: parseDomForHtml(list[0], 'a&&Text').length > 3 ? 'text_2' : 'text_3'\n    });\n}\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://m.tingshubao.com/favicon.ico"},{"last_chapter_rule":"","title":"笔趣阁APP","author":"","version":23,"type":"read","url":"https://scxs.pysmei.com/top/man/top/fysort/fyyear/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"推荐&收藏&评分&完结&最热","year_name":"周榜&月榜&总榜","sort_url":"commend&collect&vote&over&hot","year_url":"week&month&total","find_rule":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\nfor (let it of data.data.BookList) {\n    let id = it.Id;\n    let cid = Math.floor(id/1000)+1;\n    d.push({\n        title: decodeURIComponent(it.Name),\n        url: \"hiker://page/目录\",\n        col_type: \"movie_3\",\n        desc: it.Author,\n        pic_url: \"https://imgapixs.pysmei.com/BookFiles/BookImages/\" + it.Img,\n        extra:{\n            url:\"https://infosxs.pysmei.com/BookFiles/Html/\" + cid + \"/\" + id + \"/index.html\",\n            name:decodeURIComponent(it.Name),\n            pic_url:\"https://imgapixs.pysmei.com/BookFiles/BookImages/\" + it.Img\n        }\n    });\n}\n\nsetResult(d);\n","searchFind":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\nfor (let it of data.data) {\n    let id = it.Id;\n    let cid = Math.floor(id/1000)+1;\n    d.push({\n        title: it.Name,\n        url: \"https://infosxs.pysmei.com/BookFiles/Html/\" + cid + \"/\" + id + \"/index.html\",\n        col_type: \"movie_3\",\n        desc: it.Author,\n        content: it.Desc,\n        pic_url: it.Img\n    });\n}\n\nsetResult(d);","search_url":"https://souxs.leeyegy.com/search.aspx?key=**&siteid=app2","group":"⑧小说","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nvar data = JSON.parse(getResCode());\\n\\nd.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<big>\\\" + data.data.cname + \\\"</big>\\\",\\n});\\nlog(data.data.cname)\\nd.push({\\n    title: data.data.content.replace(new RegExp(\\\"\\\\n\\\", \\\"g\\\"), \\\"<br>\\\").replace(new RegExp(\\\"\\\\r\\\", \\\"g\\\"), \\\"<br>\\\").replace(new RegExp(\\\"<br><br>　　<br><br>\\\", \\\"g\\\"), \\\"<br><br>\\\"),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"目录\",\"path\":\"目录\",\"rule\":\"js:\\n\\nvar d = [];\\nlet sp = \\\"},]\\\"\\nlet code = getResCode().replace(new RegExp(sp, \\\"g\\\"), \\\"}]\\\")\\n//log(code)\\nvar data = JSON.parse(code);\\n//log(data.data.list)\\nvar bookid = data.data.id;\\nvar index = Math.floor(bookid / 1000) + 1;\\nd.push({\\n    title: \\\"下载\\\",\\n    url: \\\"hiker://page/download.view#noHistory##noRecordHistory##noRefresh#?rule=本地资源管理\\\",\\n    col_type: \\\"text_1\\\",\\n    extra: {\\n        chapterList: data.data.list[0].list.map((it) => ({\\n            title: it.name,\\n            url: \\\"https://contentxs.pysmei.com/BookFiles/Html/\\\" + index + \\\"/\\\" + bookid + \\\"/\\\" + it.id + \\\".html\\\"\\n        })),\\n        info: {\\n            bookName: MY_PARAMS.name,\\n            ruleName: MY_RULE.title,\\n            bookTopPic: MY_PARAMS.pic_url,\\n            parseCode: $.toString(() => {\\n                var data = JSON.parse(request(input));\\n                return data.data.content;\\n            }),\\n            type:\\\"novel\\\"\\n        },\\n        defaultView: \\\"0\\\"\\n    }\\n});\\nfor (let it of data.data.list[0].list) {\\n    let chapterid = it.id;\\n    let chapterurl = \\\"https://contentxs.pysmei.com/BookFiles/Html/\\\" + index + \\\"/\\\" + bookid + \\\"/\\\" + chapterid + \\\".html\\\"\\n    d.push({\\n        title: it.name,\\n        col_type: \\\"text_2\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\",\\n        url: $(chapterurl + \\\"#autoPage##readTheme#\\\").rule(() => {\\n            $.require(\\\"hiker://page/content\\\")\\n        })\\n    });\\n}\\nsetResult(d);\"}]","icon":""},{"last_chapter_rule":"","title":"番茄小说","author":"麻花疼","version":17,"type":"other","url":"https://writer.muyewx.com/api/author/library/book_list/v0/?page_count=18&page_index=fypage@-1@&gender=0&category_id=fyclass&creation_status=-1&word_count=-1&sort=0","col_type":"movie_3","class_name":"全部&重生&穿越&悬疑&系统&盗墓&历史","class_url":"-1&36&37&10&19&81&12","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\nfor (let it of data.data.book_list) {\n    d.push({\n        title: decodeURIComponent(it.book_name),\n        url: config.api + \"/novel/book/directory/list/v1?book_id=\" + it.book_id + \"#immersiveTheme#\",\n        col_type: \"movie_3\",\n        desc: it.author,\n        pic_url: config.封面域名 + it.thumb_uri\n    });\n}\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\nvar list = data.data.ret_data;\nfor (let it of list) {\n    d.push({\n        title: it.title.replace(/<em>/g, \"\").replace(/<\\/em>/g, \"\"),\n        url: config.api + \"/novel/book/directory/list/v1?book_id=\" + it.book_id + \"#immersiveTheme#\",\n        col_type: \"\",\n        desc: it.author,\n        pic_url: it.thumb_url\n    });\n}\nsetResult(d);","search_url":"https://novel.snssdk.com/api/novel/channel/homepage/search/search/v1/?aid=13&q=**","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar data = JSON.parse(getResCode());\nvar book_info = data.data.book_info;\nd.push({\n    title: book_info.book_name,\n    url: getUrl(),\n    col_type: \"movie_1_vertical_pic_blur\",\n    desc: \"作者：\" + book_info.author + \"\\n最新章节：\" + book_info.last_chapter_title + \"\\n分类标签：\" + book_info.complete_category,\n    pic_url: book_info.thumb_url\n});\nd.push({\n    title: '““””<small><font color=#871f78>数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nvar list = data.data.item_list;\nvar urls = []\nfor (let i = 0; i < list.length; i++) {\n    let index = Math.floor(i / 100)\n    if (urls.length <= index) {\n        urls.push([])\n    }\n    urls[index].push(list[i])\n}\n\nvar ul = []\nfor (let it of urls) {\n    ul.push({\n        url: config.api + \"/novel/book/directory/detail/v1/?item_ids=\" + it.join(\",\"),\n        options: {\n            header: {\n                \"User-Agent\": MOBILE_UA\n            }\n        }\n    })\n}\n\nfunction getCache() {\n    let cache = getMyVar(book_info.book_name, \"\")\n    if (cache == \"\") {\n        cache = JSON.stringify(batchFetch(ul))\n        putMyVar(book_info.book_name, cache)\n    }\n    addListener(\"onRefresh\", $.toString((key) => {\n        clearMyVar(key)\n    }, book_info.book_name))\n    return JSON.parse(cache)\n}\n\nlet chapters = getCache()\nfor (let it of chapters) {\n    let cps = JSON.parse(it).data;\n    for (let c of cps) {\n        d.push({\n            title: c.title,\n            col_type: \"text_2\",\n            desc: \"\",\n            pic_url: \"\",\n            url: $(config.api + \"/novel/book/reader/full/v1/?item_id=\" + c.item_id + \"#autoPage##fullTheme#\").rule(() => {\n                $.require(\"hiker://page/c\")\n            })\n        });\n    }\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    api: \"https://novel.snssdk.com/api\",\n    封面域名: \"http://p6-novel.byteimg.com/large/\"\n});\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"c\",\"rule\":\"js:\\nvar d = [];\\nvar data = JSON.parse(getResCode());\\nvar c = data.data.novel_data;\\nd.push({\\n    title: \\\"““””<big>\\\" + c.chapter_title + \\\"</big>\\\",\\n    url: \\\"\\\",\\n    col_type: \\\"text_center_1\\\",\\n    desc: \\\"\\\",\\n    pic_url: \\\"\\\"\\n});\\n\\nd.push({\\n    title: pdfh(data.data.content, \\\"article&&Html\\\"),\\n    col_type: \\\"rich_text\\\",\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":"https://img0.baidu.com/it/u=3261019260,110575185&fm=117&fmt=auto&gp=0.jpg"},{"last_chapter_rule":"","title":"爱情小说","author":"","version":0,"type":"other","url":"http://www.aiqing163.com/Love-Novel/fyclass/list_fyarea_fypage.html;get;gbk","col_type":"movie_3","class_name":"经典&校园&短篇&浪漫","class_url":"jingdianxiaoshuo&xiaoyuanxiaoshuo&duanpianxiaoshuo&langmanxiaoshuo","area_name":"经典&校园&短篇&浪漫","area_url":"12&13&14&15","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d =        []\nvar list = pdfa(getResCode(), 'body&&.listbox&&ul&&li');//表项\nfor (var j in list) {\n    d.push({\n        title: pdfh(list        [j], 'a,2&&Text'),//标题\n        desc: pdfh(list        [j], 'p&&Text'),//简介\n        pic_url: pd(list        [j], 'img&&src'),//封面\n        url: pd(list         [j], 'a&&href'),//链接\n    })\n}\nsetResult(d)","searchFind":"","search_url":"","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nString.prototype.myReplace=function(f,e) {//吧f替换成e\n    var reg = new RegExp(f, \"g\"); //创建正则RegExp对象   \n    return this.replace(reg, e);\n}\nvar res = {};\nvar d =     [];\nhtml = getResCode();\nvar htmls=   [];\nhtmls   [0]={url:getUrl()};//提取下一页(一种提取方法是不停获取并访问下一页链接)，另一种方法获取总页数，页数后缀替换好，然后一起获取数据\nif(html.indexOf(\"下一页\")<0){var pagetotal=1;}\nelse{var pagetotal=parseInt(parseDomForHtml(html, \"#Pages&&span&&Text\").match(/\\d{1,}/g)   [1]);}\n  for(var i=2;i<=pagetotal;i++){\n     htmls   [i-1]={url:getUrl().replace(\".html\",\"_\"+i+\".html\")}\n }\nd.push({\n    title: \"<h1>\"+parseDomForHtml(html, \"h2&&Text\")+\"<\\h1>\",//提取网页标题\n    col_type: 'rich_text'\n},{\n    title: \"<h3>\"+parseDomForHtml(html, \".info&&html\")+\"<\\h3>\",//提取发帖时间\n    col_type: 'rich_text'\n},{\n    title: \"\"+parseDomForHtml(html, \"span.author&&Text\")+\"\",//提取浏览量\n    col_type: 'rich_text'\n},{\n    title: parseDomForHtml(html, \".content&&Html\").myReplace(\"gzh\",\"\"),//提取网页正文+去掉替换不需要字符\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"阅读食用法","author":"道长","version":1,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar host='https://yd.mgz6.cc/';\n\nd.push({\n    title: '阅读正式版',\n    url: $().lazyRule((host)=>{\n        let html=request(host);\n        let link=pdfh(html,'.actions&&a&&href');\n        //return 'download://'+link\n        return link\n    },host),\n    col_type: \"text_1\",\n});\nd.push({\n    title: '阅读测试版',\n    url: 'https://kunfei.lanzoui.com/b0f810h4b',\n    col_type: \"text_1\",\n});\nd.push({\n    title: '订阅瞄公子',\n url:$('http://dy.mgz6.cc/').lazyRule(()=>{\n        let html=request(input);\n        let link=pdfh(html,'.actions&&a&&href');\n        return link\n    }),\n    col_type: \"text_1\",\n});\nlet j='http://no-mystery.gitee.io/shuyuan/%E5%85%A8%E7%BD%91%E9%80%9A%E7%94%A8.json';\nd.push({\n    title: '不世玄奇书源',\n url:'yuedu://booksource/importonline?src='+j,\n    col_type: \"text_1\",\n});\n\nj='https://namofree.gitee.io/yuedu3/legado3_booksource_by_Namo.json';\nd.push({\n    title: 'Namo书源',\n url:'yuedu://booksource/importonline?src='+j,\n    col_type: \"text_1\",\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s4.ax1x.com/2022/02/08/HlHe7F.png"},{"last_chapter_rule":"","title":"📙藏书阁","author":"小棉袄🌞&永远の明日&团子","version":220717104,"type":"all","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    },  {\n        img: 'https://bing.img.run/1366x768.php',\n        desc: '0',\n        col_type: 'card_pic_1',\n    }, {\n        img: 'https://lanmeiguojiang.com/tubiao/ke/1.png',\n        title: '收藏',\n        url:\"hiker://collection\",\n        col_type:\"icon_2\"\n    },  {\n        img: 'https://lanmeiguojiang.com/tubiao/ke/137.png',\n        title: '历史',\n        url:\"hiker://history\",\n        col_type:\"icon_2\"\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nif (getItem(\"read_policy\") !== \"1\") {\n    el.push({\n        title: '““””<small><font color=#871f78>以下数据来源于网络，如您喜欢，请支持官方</font></small>',\n        desc: '““””<small><font color=#f20c00>本规则仅限免费学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播或售卖此规则的整体或部分！</font></small>',\n        url: $('#noHistory#').lazyRule(() => {\n            setItem(\"read_policy\", \"1\")\n            refreshPage(false)\n            return \"toast://你已同意该协议\"\n        }),\n        col_type: 'text_center_1'\n    })\n}\n\nif (getItem(\"data\") !== \"1\") {\n    url = getMyVar('remoteUrl')\n    el.push({\n        title: '““””<small><font color=#871f78>点击获取源</font></small>',\n        url: $('#noHistory#').lazyRule((url) => {\n            setItem(\"data\", \"1\")\n            requireDownload('https://gitlab.com/DreamOzO/DreamOzO/-/raw/main/Book', url)\n            back(false)\n            refreshPage(true)\n            return \"toast://数据已获取\"\n        },url),\n        col_type: 'text_center_1'\n    })\n}\n\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'hiker://files//rules/Tz/Book')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if(fileExist(url)){\\n                deleteFile(url)\\n            requireDownload('https://gitlab.com/DreamOzO/DreamOzO/-/raw/main/Book', url)\\n            } else {\\n                requireDownload('https://gitlab.com/DreamOzO/DreamOzO/-/raw/main/Book', url)\\n            }\\n            refreshPage(true)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 168 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/70.svg"},{"last_chapter_rule":"","title":"全本下载","author":"拼尽全力","version":1,"type":"read","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"知轩藏书\",\n    url: $.toString(() => {\n        return \"hiker://page/x5\"\n    }),\n    col_type: \"input\",\n    desc: \"搜索完结的书籍\",\n    pic_url: \"\",\n    extra: {\n        titleVisible: false,\n        onChange: $.toString(() => {\n            putMyVar(\"s\", input);\n        }),\n        defaultValue: getMyVar(\"s\", \"\"),\n        u: \"http://zxcs.me/?keyword=**\"\n    }\n});\nd.push({\n    title: \"知轩藏书\",\n    url: \"hiker://page/x5\",\n    col_type: \"icon_2_round\",\n    desc: \"\",\n    pic_url: \"http://zxcs.me/favicon.ico\",\n    extra: {\n        u: \"http://zxcs.me/?keyword=**\"\n    }\n});\nd.push({\n    title: \"奇书网\",\n    url: \"hiker://page/x5\",\n    col_type: \"icon_2_round\",\n    desc: \"\",\n    pic_url: \"http://m.qishu.me/favicon.ico\",\n    extra: {\n        u: \"http://m.qishu.me/search.asp?keyword=**&classid=#gbk#\"\n    }\n});\nd.push({\n    title: '““””<small><font color=#20b2aa>数据来源于对应的网站，软件和规则不提供任何内容！</font></small>',\n    desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nlet u = MY_PARAMS.u;\\nlet s = getMyVar(\\\"s\\\", \\\"\\\");\\nif (s == \\\"\\\") {\\n    u = getHome(u);\\n} else {\\n    if (u.includes(\\\"#gbk#\\\")) {\\n        u = u.replace(\\\"#gbk#\\\", \\\"\\\");\\n        s = encodeStr(s, \\\"gbk\\\");\\n    }\\n    u = u.replace(\\\"**\\\", s);\\n}\\nlet ad = JSON.parse(fetch(\\\"hiker://page/ad\\\")).rule;\\nad = ad.split(\\\"￥\\\")[2];\\nlet blockRules = ad.split(\\\"&&\\\");\\nd.push({\\n    title: \\\"\\\",\\n    url: u,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        blockRules: blockRules,\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"广告拦截\",\"path\":\"ad\",\"rule\":\"海阔视界规则分享，当前分享的是：广告网址拦截￥ad_url_rule￥cdn.jquery-cdn.cc@domain=m.qishu.me&&xs.bntxt.com&&cdn.hczxkab.cn&&cdn.gioduog.cn&&.sjfs.xyz&&.ph8qzppr.xyz&&.xian98.top&&24klm.cn&&dc.ifczkst.cn&&cdn.jquery-cdn.cc@domain=m.qishuk.com&&cdn.krqcuib.cn\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"走读π.dh","author":"benana","version":2,"type":"tool","url":"hiker://empty&&#fyAll","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res={};\nvar d=[];\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #000000\">'+'免费E书'+'</span></b>',\n    col_type: 'text_center_1',\n});\nd.push({\r\n    title: \"鸠摩捜书\",\r\n    url: \"https://www.jiumodiary.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"苦瓜书盘\",\r\n    url: \"https://www.kgbook.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"伴读搜书\",\r\n    url: \"https://www.bandubook.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"书格\",\r\n    url: \"http://shuge.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"好读\",\r\n    url: \"http://haodoo.net/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"图灵社区\",\r\n    url: \"http://www.ituring.com.cn/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"云海电子图书馆\",\r\n    url: \"http://pdfbook.cn/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"PDF之家\",\r\n    url: \"http://www.pdfzj.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"高清杂志网\",\r\n    url: \"http://www.gqzzw.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"亚马逊免费电子\",\r\n    url: \"https://www.amazon.cn/Kindle%E5%85%8D%E8%B4%B9%E7%94%B5%E5%AD%90%E4%B9%A6/b/ref=amb_link_3?ie=UTF8&node=116175071&pf_rd_m=A1AJ19PSB66TGU&pf_rd_s=merchandised-search-leftnav&pf_rd_r=QA09QX96YRZ5BVM6D6DF&pf_rd_r=QA09QX96YRZ5BVM6D6DF&pf_rd_t=101&pf_rd_p=047e4bfa-1996-4eba-bf3c-4dcb84fb6933&pf_rd_p=047e4bfa-1996-4eba-bf3c-4dcb84fb6933&pf_rd_i=116169071\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"azw3贴吧\",\r\n    url: \"https://tieba.baidu.com/f?kw=azw3\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"淘链客\",\r\n    url: \"https://www.toplinks.cc/s/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"慧眼看\",\r\n    url: \"https://www.huiyankan.com/https://www.huiyankan.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #000000\">'+'实用工具'+'</span></b>',\n    col_type: 'text_center_1',\n});\nd.push({\r\n    title: \"Gridzzly\",\r\n    url: \"http://gridzzly.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"电子书转格式\",\r\n    url: \"http://cloudconvert.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"docsmall\",\r\n    url: \"https://docsmall.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"创客贴\",\r\n    url: \"http://www.chuangkit.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Dimmy.club\",\r\n    url: \"http://www.chuangkit.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"BrowserFrame\",\r\n    url: \"http://browserframe.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Flourish\",\r\n    url: \"http://flourish.studio/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"PDF派\",\r\n    url: \"http://www.pdfpai.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"RemoveBG\",\r\n    url: \"http://www.pdfpai.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Kapwing\",\r\n    url: \"http://www.kapwing.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"crx4Chrome\",\r\n    url: \"http://www.kapwing.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"mdnice\",\r\n    url: \"http://mdnice.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #000000\">'+'免费图库'+'</span></b>',\n    col_type: 'text_center_1',\n});\nd.push({\r\n    title: \"Unsplash\",\r\n    url: \"https://unsplash.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Pixabay\",\r\n    url: \"http://pixabay.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Pexels\",\r\n    url: \"http://www.pexels.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"VisualHunt\",\r\n    url: \"http://www.wanmen.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"pngimg\",\r\n    url: \"http://www.pngimg.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"SSYER\",\r\n    url: \"https://www.ssyer.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Undraw\",\r\n    url: \"https://undraw.io/illustrations\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #000000\">'+'学习资源'+'</span></b>',\n    col_type: 'text_center_1',\n});\nd.push({\r\n    title: \"中文PubMet\",\r\n    url: \"http://www.chinapubmet.net/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"中国国家图书馆\",\r\n    url: \"http://www.nlc.cn/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"故宫数字文物馆\",\r\n    url: \"https://digicol.dpm.org.cn/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"爱问资源\",\r\n    url: \"http://ishare.iask.sina.com.cn/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"万千合集站\",\r\n    url: \"http://www.hejizhan.com/html/search\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"国学网\",\r\n    url: \"http://www.guoxue.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"owllook网络小说\",\r\n    url: \"http://owllook.net/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Project Guten\",\r\n    url: \"http://gutenberg.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Planet eBook\",\r\n    url: \"https://planetebook.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Library Genesi\",\r\n    url: \"http://libgen.li/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #000000\">'+'在线学习'+'</span></b>',\n    col_type: 'text_center_1',\n});\nd.push({\r\n    title: \"国图公开课\",\r\n    url: \"http://open.nlc.cn/onlineedu/client/index.htm\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"网易云课堂\",\r\n    url: \"https://study.163.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"网易公开课\",\r\n    url: \"https://open.163.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"中国大学MOOC\",\r\n    url: \"https://icourse163.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"好大学在线\",\r\n    url: \"http://www.cnmooc.org/home/index.mooc\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"万门大学\",\r\n    url: \"http://www.wanmen.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"慕课网\",\r\n    url: \"https://www.imooc.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Coursera\",\r\n    url: \"https://www.coursera.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Udemy\",\r\n    url: \"https://www.udemy.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"edX\",\r\n    url: \"https://www.edx.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"Udacity\",\r\n    url: \"https://www.udacity.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"TED\",\r\n    url: \"http://www.ted.com/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\r\nd.push({\r\n    title: \"可汗学院\",\r\n    url: \"https://www.khanacademy.org/\",\r\ndesc: '0',\r\n  col_type: 'flex_button'\r\n});\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = parseDomForArray(html, '.chapterlist,1&&ul')[0];\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'Text');\nsetResult(\"更新至: \"+title);","title":"第一小说","author":"大众","version":5,"url":"https://www.01xs.com/fyclass/","col_type":"movie_1_vertical_pic","class_name":"玄幻&仙侠&都市&历史&网游&科幻&同人&综合&青春&现代&古代&幻想&完本","class_url":"fenlei1&fenlei2&fenlei3&fenlei4&fenlei5&fenlei6&fenlei7&fenlei8&fenlei9&fenlei10&fenlei11&fenlei12&qb","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.listcon&&ul&&li');\nfor (var i in list) {\n    d.push({\n        title: parseDomForHtml(list[i], 'img&&alt')+'\\n'+ parseDomForHtml(list[i], 'span,-1&&Text').split('/')[1],\n        desc: parseDomForHtml(list[i], 'p,1&&Text'),\n        pic_url: parseDom(list[i], 'img&&data-original'),\n        url: parseDom(list[i], 'a&&href') + \"#immersiveTheme#\",\n    })\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.jilu&&.banner&&ul');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'li,1&&Text'),\n            desc: '作者：'+parseDomForHtml(list[j], 'li,3&&Text'),\n            content: parseDomForHtml(list[j], 'li,2&&Text'),\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\",\n        });\n    }\n} catch (e) {}\nsetResult(d);","search_url":"https://www.01xs.com/search.php?keyword=**","titleColor":"#ffff7000","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar conts = parseDomForArray(html, '.chapterlist,1&&ul');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar des_desc = '简介：' + parseDomForHtml(html, '.articleinfo&&.p3&&Text').substring(0, 28) + '...查看详情';\nd.push({\n    title: '书名：' + parseDomForHtml(getResCode(), '.articleinfo&&img&&alt').replace(getUrl() + \"/\", \"\") + '\\n' + parseDomForHtml(getResCode(), '.articleinfo&&.author&&Text').replace(getUrl() + \"/\", \"\") + '\\t' + '\\t' + parseDomForHtml(getResCode(), '.articleinfo&&.p4&&Text').split('文章')[1].replace(getUrl() + \"/\", \"\") + '\\n' + parseDomForHtml(getResCode(), '.articleinfo&&.p4,2&&Text').replace(getUrl() + \"/\", \"\"),\n    desc: des_desc,\n    pic_url: parseDom(getResCode(), '.articleinfo&&img&&src'),\n    url: 'hiker://empty#' + '　　' + parseDomForHtml(html, '.articleinfo&&.p3&&Text') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text',extra: {textSize: 20}});res.data = d; setHomeResult(res);`,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">目录</span></b>' : '““””<b><span style=\"color: #1aad19\">目录</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'Text');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + \"#autoPage##fullTheme#\" + `@rule=js:` + $.toString(() => {\n                    let d = [];\n                    var des_title = parseDomForHtml(getResCode(), '#c1&&h1&&Text');\n                    d.push({\n                        title: '‘‘' + des_title + '’’',\n                        col_type: 'text_center_1'\n                    });\n                    let cont = parseDomForArray(getResCode(), '#content&&p');\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\"<br><br>\");\n                    d.push({\n                        title: html,\n                        col_type: \"rich_text\",\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    });\n                    setResult(d);\n                }),\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'Text');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + \"#autoPage##fullTheme#\" + `@rule=js:` + $.toString(() => {\n                    let d = [];\n                    var des_title = parseDomForHtml(getResCode(), '#c1&&h1&&Text');\n                    d.push({\n                        title: '‘‘' + des_title + '’’',\n                        col_type: 'text_center_1'\n                    });\n                    let cont = parseDomForArray(getResCode(), '#content&&p');\n                    let html = cont.map(it => '　　' + parseDomForHtml(it, 'p&&Html')).join(\"<br><br>\");\n                    d.push({\n                        title: html,\n                        col_type: \"rich_text\",\n                        extra: {\n                            textSize: 18,\n                            click: true\n                        }\n                    });\n                    setResult(d);\n                }),\n                col_type: jm.length > 5 ? 'text_1' : 'text_1',\n            });\n        }\n    }\n}\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ffff7000"},{"firstHeader":"class","last_chapter_rule":"","title":"顶点小说🅛","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":54,"url":"https://m.top.la/list/fyAll_fypage.html;get;gbk","col_type":"movie_3","class_name":"玄幻小说&仙侠小说&都市小说&历史军事","class_url":"1&2&3&4","area_name":"网游小说&科幻小说&言情小说","area_url":"5&6&7","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list&&.xbk:has(li);span&&Text;img&&src;*;a&&href.js:input+\"mulu/1/\"","searchFind":"js:\nvar res = {};\r\nvar d = [];\r\ntry {\r\n    var list = parseDomForArray(getResCode(), '.slist&&li');\r\n    for (var j in list) {\r\n        d.push({\r\n            title: parseDomForHtml(list[j], 'a,1&&Text'),\r\n            desc: parseDomForHtml(list[j], 'a,-1&&Text'),\r\n            //pic_url: parseDom(list[j], 'img&&data-original'),       \r\n            url: parseDom(list[j], 'a,1&&href') + \"/mulu/1/\"\r\n        });\r\n    }\r\n} catch (e) {}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://m.top.la/s.php?submit=&type=articlename&s=**;post;gbk","titleColor":"#0040ff","group":"⑧小说","detail_col_type":"text_1","detail_find_rule":"js:\n$.require(\"hiker://page/chapter\")","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"““””<big>\\\" + parseDomForHtml(getResCode(), \\\"#header&&.zhong&&Text\\\") + \\\"</big>\\\",\\n});\\nd.push({\\n    title: parseDomForHtml(getResCode(), \\\"#nr&&Html\\\"),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"目录解析\",\"path\":\"chapter\",\"rule\":\"let cfg = {\\n    分页列表: \\\"body&&.showpage&&a:not(:contains(没有更多分页))\\\",\\n    分页链接: \\\"a&&href\\\",\\n    分页请求头: {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n        \\\"Content-Type\\\": \\\"text/html; charset=GBK\\\"\\n    },\\n    一页章节数: 40,\\n    章节列表: \\\"body&&.lb&&li:not(:contains(本页章节列表结束！))\\\",\\n    章节标题: \\\"a&&Text\\\",\\n    章节链接: \\\"a&&href\\\",\\n    缓存个数: 15\\n}\\n\\n\\nvar code = getResCode()\\nvar caches;\\n\\nfunction getCache() {\\n    let c = readFile(\\\"chapter.json\\\") || \\\"[]\\\";\\n    caches = JSON.parse(c)\\n    let url = getUrl()\\n    log(url)\\n    for (let it of caches) {\\n        if (it.url == url) {\\n            return it;\\n        }\\n    }\\n    return {\\n        url: url,\\n        page: 0,\\n        chapters: []\\n    }\\n}\\n\\nfunction saveCache(che) {\\n    let c = caches\\n    if (c.length > cfg.缓存个数) {\\n        c.shift()\\n    }\\n    let exist = false\\n    for (let i = 0; i < c.length; i++) {\\n        if (c[i].url == che.url) {\\n            c[i] = che;\\n            exist = true;\\n            break\\n        }\\n    }\\n    if (!exist) {\\n        c.push(che)\\n    }\\n    saveFile(\\\"chapter.json\\\", JSON.stringify(c))\\n}\\n\\nlet cache = getCache();\\n\\nlet mp = pdfa(code, cfg.分页列表)\\nlet page = mp.length;\\nlog(\\\"实际页数：\\\" + page)\\nlog(\\\"缓存页数：\\\" + cache.page)\\nif (page == cache.page) {\\n    //已完结，目录全部缓存了\\n    setResult(cache.chapters)\\n    return\\n}\\n//解析本地没有的缓存\\nlet urls = []\\nlet htmls = []\\n//log(mp)\\nfor (let i = cache.page; i < mp.length; i++) {\\n    if (i == 0) {\\n        htmls.push(code)\\n        continue\\n    }\\n    let it = mp[i];\\n    urls.push({\\n        url: pd(it, cfg.分页链接),\\n        options: {\\n            headers: cfg.分页请求头 || {}\\n        }\\n    })\\n}\\n//log(urls)\\nlet d = [].concat(cache.chapters)\\nhtmls = htmls.concat(batchFetch(urls))\\n//log(htmls)\\nfor (let it of htmls) {\\n    if (it == \\\"\\\") {\\n        break\\n    }\\n    let list = pdfa(it, cfg.章节列表)\\n    let temp = []\\n    for (let ii of list) {\\n        temp.push({\\n            title: pdfh(ii, cfg.章节标题).split(\\\" （\\\")[0].split(\\\"（\\\")[0],\\n            url: pd(ii, cfg.章节链接) + \\\"#autoPage##fullTheme#@rule=js:$.require('hiker://page/content')\\\"\\n        })\\n    }\\n    log(list.length)\\n    if (list.length == cfg.一页章节数) {\\n        //章节齐全的才放本地缓存\\n        cache.page = cache.page + 1\\n        cache.chapters = cache.chapters.concat(temp)\\n    }\\n    d = d.concat(temp)\\n}\\n\\nsaveCache(cache)\\nsetResult(d)\"},{\"col_type\":\"text_1\",\"name\":\"目录分页\",\"path\":\"cp\",\"rule\":\"js:\\n$.require(\\\"hiker://page/chapter\\\")\"}]","icon":"#0040ff"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar json = JSON.parse(html);\r\nvar list = json.data.list;\nvar title = list[list.length-1].title.replace(/【.*?】|《.*?》|（[^上|中|下].*?）/g,\"\");\nsetResult('最新：'+title);","title":"海盗APP𝔥","author":"Hood","version":7,"type":"music","url":"https://app.tingxiaoshuo.cc/listen/apptingchina/categoryList?size=10&page=fypage&categoryId=fyAll","col_type":"movie_3_marquee","class_name":"玄幻奇幻&都市言情&宫斗女频&官场商战&武侠仙侠&刑侦推理","class_url":"6&7&8&9&10&11","area_name":"探险科幻&重生穿越&恐怖惊悚&文学历史&两性情感&网游竞技","area_url":"12&13&14&15&49&50","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res={};\r\nvar items=[];\nvar html = getResCode();\n\nvar json = JSON.parse(html);\r\nvar list = json.data.list;\r\n\r\nfor(i=0;i<list.length;i++){\r\n    items.push({\r\n        title: list[i].bookTitle,\r\n        desc: list[i].bookName,\r\n        pic_url: list[i].bookImage,\r\n        url: \"https://app.tingxiaoshuo.cc/listen/apptingchina/chapter?sort=asc&size=99999&page=1&bookId=\" + list[i].id\r\n    });\r\n}\n\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\nvar html = getResCode();\n\nvar json = JSON.parse(html);\r\nvar list = json.data.bookData;\r\n\r\nfor( i=0; i<list.length; i++ ){\r\n    items.push({\r\n        title: list[i].bookTitle,\r\n        desc: list[i].bookName,\n        content: list[i].bookDesc,\r\n        pic_url: list[i].bookImage,\n        url: \"https://app.tingxiaoshuo.cc/listen/apptingchina/chapter?sort=asc&size=99999&page=1&bookId=\" + list[i].id\r\n    });\r\n}\n\nres.data = items;\r\nsetHomeResult(res);","search_url":"https://app.tingxiaoshuo.cc/listen/apptingchina/appSearch?search=**","group":"⑧小说","detail_col_type":"text_3","detail_find_rule":"js:\r\nvar res = {};\r\nvar items = [];\nvar html = getResCode();\n\nvar json = JSON.parse(html);\r\nvar list = json.data.list;\n\nvar listx = list[0];\nif(list.length>1){listx = list[1]}\nvar titlex = listx.title.replace(/【.*?】|《.*?》|（.*?）/g,\"\");\n\nfor( i=0; i<list.length; i++ ){\n    items.push({\n        title: list[i].title.replace(/【.*?】|《.*?》|（[^上|中|下].*?）/g,\"\"),\r\n        url: \"https://app.tingxiaoshuo.cc/listen/apptingchina/AppGetChapterUrl?uid=52f5753a8a8539c8&chapterId=\" + list[i].chapterId + \"&bookId=\" + list[i].bookId +`@lazyRule=.js:var json = JSON.parse(fetch(input,{})); json.src + '#isMusic=true#'`,\n        col_type: titlex.length>5?'flex_button':'text_3'\n    });\r\n}\n\nfor(var b=0; b<5; b++){\nitems.push({col_type: 'big_blank_block'});}\n\r\nres.data = items;\r\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff228be6"},{"last_chapter_rule":"","title":"七界小说","author":"小棉袄🌞","version":26,"url":"https://m.7jie.com/top/fyclass/fypage.html","col_type":"movie_1_vertical_pic","class_name":"总排行榜&月点击榜&周点击榜&总推荐榜&月推荐榜&周推荐榜&总收藏榜&总字数榜&最近更新","class_url":"allvisit&monthvisit&weekvisit&allvote&monthvote&weekvote&goodnum&size&lastupdate","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"ul.list&&li;a,1&&Text;img&&src;a,2&&Text+'\\n'+.intro&&Text;a&&href.js:input.replace(\"xs/\",\"shu/\").replace(\".html\",\"\")","searchFind":"ul.list&&li;a,1&&Text;a&&href.js:input.replace(\"xs/\",\"shu/\").replace(\".html\",\"\");*;a,2&&Text+'\\n'+.intro&&Text;img&&src","search_url":"https://m.7jie.com/search.html?searchkey=**;post;utf-8","group":"⑧小说","detail_col_type":"text_1","detail_find_rule":"js:\n$.require(\"hiker://page/chapter\")","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"目录\",\"path\":\"chapter\",\"rule\":\"let cfg = {\\n    分页列表: \\\".pagelist&&option\\\",\\n    分页链接: \\\"option&&value\\\",\\n    分页请求头: {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n    },\\n    一页章节数: 100,\\n    章节列表: \\\"ul.read&&li\\\",\\n    章节标题: \\\"a&&Text\\\",\\n    章节链接: \\\"a&&href\\\",\\n    缓存个数: 15\\n}\\n\\n\\nvar code = getResCode()\\nvar caches;\\n\\nfunction getCache() {\\n    let c = readFile(\\\"chapter.json\\\") || \\\"[]\\\";\\n    caches = JSON.parse(c)\\n    let url = getUrl()\\n    log(url)\\n    for (let it of caches) {\\n        if (it.url == url) {\\n            return it;\\n        }\\n    }\\n    return {\\n        url: url,\\n        page: 0,\\n        chapters: []\\n    }\\n}\\n\\nfunction saveCache(che) {\\n    log(che.length)\\n    let c = caches\\n    if (c.length > cfg.缓存个数) {\\n        c.shift()\\n    }\\n    let exist = false\\n    for (let i = 0; i < c.length; i++) {\\n        if (c[i].url == che.url) {\\n            c[i] = che;\\n            exist = true;\\n            break\\n        }\\n    }\\n    if (!exist) {\\n        c.push(che)\\n    }\\n    saveFile(\\\"chapter.json\\\", JSON.stringify(c))\\n}\\n\\nlet cache = getCache();\\n\\nlet mp = pdfa(code, cfg.分页列表)\\nlet page = mp.length;\\nlog(\\\"实际页数：\\\" + page)\\nlog(\\\"缓存页数：\\\" + cache.page)\\nif (page == cache.page) {\\n    //已完结，目录全部缓存了\\n    setResult(cache.chapters)\\n    return\\n}\\n//解析本地没有的缓存\\nlet urls = []\\nlet htmls = []\\n//log(mp)\\nfor (let i = cache.page; i < mp.length; i++) {\\n    if (i == 0) {\\n        htmls.push(code)\\n        continue\\n    }\\n    let it = mp[i];\\n    urls.push({\\n        url: pd(it, cfg.分页链接),\\n        options: {\\n            headers: cfg.分页请求头 || {}\\n        }\\n    })\\n}\\n//log(urls)\\nlet d = [].concat(cache.chapters)\\nhtmls = htmls.concat(batchFetch(urls))\\n//log(htmls)\\nfor (let it of htmls) {\\n    if (it == \\\"\\\") {\\n        break\\n    }\\n    let list = pdfa(it, cfg.章节列表)\\n    let temp = []\\n    for (let ii of list) {\\n        temp.push({\\n            title: pdfh(ii, cfg.章节标题).split(\\\" （\\\")[0].split(\\\"（\\\")[0],\\n            url: pd(ii, cfg.章节链接) + \\\"#autoPage##fullTheme#@rule=js:$.require('hiker://page/content')\\\"\\n        })\\n    }\\n    //log(list.length)\\n    if (list.length == cfg.一页章节数) {\\n        //章节齐全的才放本地缓存\\n        cache.page = cache.page + 1\\n        cache.chapters = cache.chapters.concat(temp)\\n    }\\n    d = d.concat(temp)\\n}\\n\\nsaveCache(cache)\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"““””<big>\\\" + pdfh(getResCode(), \\\".headline&&Text\\\") + \\\"</big>\\\",\\n});\\nd.push({\\n    title: pdfh(getResCode(), \\\".content&&Html\\\"),\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"}]","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '.playul&&li:has(a)');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"275听书2","author":"小棉袄🌞","version":20,"url":"https://www.i275.comfyAll?page=fypage","col_type":"movie_3_marquee","class_name":"首页&玄幻奇幻&都市言情&宫斗女频&官场商战&武侠仙侠&刑侦推理","class_url":"/&/category/6.html&/category/7.html&/category/8.html&/category/9.html&/category/10.html&/category/11.html","area_name":"探险科幻&重生穿越&恐怖惊悚&文学历史&两性情感&网游竞技","area_url":"/category/12.html&/category/13.html&/category/14.html&/category/15.html&/category/49.html&/category/50.html","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".yun-list&&li;.text&&.name&&Text;img&&data-original;.actor&&Text.js:input.replace(/\\,[\\s\\S]*/,\"\");a&&href","searchFind":".yun-list&&li;.text&&.name&&Text;a&&href;.actor&&Text;.other&&Text.js:\"简介：\"+input;img&&data-original","search_url":"https://www.i275.com/pc/index/search.html?keyword=**&submit=&page=fypage","titleColor":"#ff228be6","group":"⑧小说","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar desc = parseDomForHtml(html, '.juqing&&dd&&Text');\n\nd.push({\n    //作者、类型等\n    title: parseDomForHtml(html, '.info&&.fn-left,1--i&&Text') + '\\n' + parseDomForHtml(html, '.info&&.fn-right,1--i&&Text') + '\\n' + parseDomForHtml(html, '.info&&.fn-left,2--i&&Text'),\n    //描述\n    desc: desc,\n    //图片地址\n    pic_url: parseDom(html, 'img,1&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\n//选集列表\nvar list = parseDomForArray(html, '.playul&&li:has(a)');\n\n//选集名称\nfor (var i in list) {\n\n    var title = parseDomForHtml(list[i], 'a&&Text');\n\n    d.push({\n        title: title.replace(/第/g, \"\").replace(/集/g, \"\"),\n        url: $(parseDom(list[i], 'a&&href')).lazyRule(() => {\n            let book = input.split(\"play/\")[1].split(\"/\")[0];\n            let chapter = input.split(\"/\")[input.split(\"/\").length - 1].split(\".html\")[0];\n            let res = request(\"https://www.i275.com/pc/index/getChapterUrl?bookId=\" + book + \"&chapterId=\" + chapter);\n            var s = JSON.parse(res).src.split(\"*\").map(item => String.fromCharCode(item)).join(\"\") + \"#isMusic=true#\";\n            return s;\n        }),\n        col_type: 'text_4'});\n}\n\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff228be6"},{"last_chapter_rule":"","title":"好多电子课本网","author":"Hood","version":1,"type":"read","url":"http://m.haoduoyun.cc/book/fyclass/fyarea;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_3_marquee","class_name":"人教版&北师大版&译林版&外研版&北京版&冀教版&鲁教版&教科版&鄂教版&沪教版&仁爱版&陕西旅游版&粤人版&湘少版&清华版&辽师大版&湘鲁教版","class_url":"rjb&bsb&ylb&wyb&bjb&jjb&ljb&jkb&ejb&hjb&rab&slb&yrb&xsb&qhb&lsb&xljb","area_name":"全部&数学&语文&英语","area_url":"&shuxue&yuwen&yingyu","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".main&&li;\na&&Text;\nimg&&data-original;\n*;\na&&href","searchFind":"","search_url":"http://m.haoduoyun.cc/book/search/?q=**","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"text_1","detail_find_rule":".bookmulu&&a;\na&&Text.js:input.replace(/　/g,'');\n*;\n*;\na&&href.js:'x5://http://m.haoduoyun.cc'+input","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"title":"短视频X5","author":"道阻且右","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var d=[];\n\nd.push({\n    desc:'auto&&float',\n    url:'https://tvv.tw/xjj/get/',\n\t\t col_type: 'x5_webview_single'\n});\n\nsetResult(d);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"last_chapter_rule":"","title":"小易公开课","author":"","version":0,"type":"read","url":"https://open.163.com/fyclass;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64)}","col_type":"movie_3","class_name":"国内名校&国外名校&可汗学院","class_url":"cuvocw&ocw&khan","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res = {};var d = [];\n\nvar content = parseDom(getResCode(), 'body&&Html');\nvar content_list =parseDomForArray(content, 'body&&.m-cate');\nvar list=[];\nfor(var i in content_list){\nif(content_list[i].indexOf(\"小编推荐\")==-1){\nlist.push('<body>' + content_list[i] + '</body>');\n  }\n}\n\nfor(var j in list){\nvar list_list = parseDomForArray(list[j], 'body&&.g-cell1');\n\nfor(var v in list_list){\nif(list_list[v].indexOf(\"u-tag\")!=-1){\nd.push({\ntitle:parseDomForHtml(list_list[v],'h2&&Text'),\nurl:'',\ncol_type:'text_center_1'\n});\n  }else{\n\ntry{\nvar desc_text=parseDomForHtml(list_list[v],'.sub&&Text');}catch(e){}\n\nd.push({\ntitle:parseDomForHtml(list_list[v],'h5&&Text'),\ndesc:desc_text,\npic_url:parseDomForHtml(list_list[v],'.lazy&&data-original'),\nurl:parseDomForHtml(list_list[v],'.u-cover&&href').replace(/&mid[\\s\\S]*?/g,''),\ncol_type:'movie_2'\n});\n    }\n  }\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"js:var res = {};var d = [];\n\nvar des_pic = parseDom(getResCode(), 'body&&.content-left&&img&&src');\n\nvar des_title = parseDomForHtml(getResCode(), 'body&&.content-title&&Text');\n\nvar des_desc = parseDomForHtml(getResCode(), 'body&&.content-desc&&Text');\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'pic_1'\n});\n\nvar des_intro = parseDomForHtml(getResCode(), 'body&&div.content-intro&&Text');\n\nd.push({\ntitle:'课程简介',\nurl:'',\ncol_type:'text_center_1'\n});\n\nd.push({\ntitle:des_intro,\ncol_type:'long_text'\n});\n\nd.push({col_type:'line_blank'});\n\nd.push({\ntitle:'课程列表',\ncol_type:'text_center_1'\n});\n\nvar content=unescape(parseDomForHtml(getResCode(), 'body&&script:not([src])&&Html').replace(/\\\\u/g, '%u'));\n\neval(content.replace('window.__NUXT__', 'var content'));\n\nvar list=content.data[0].movieInfoList;\n\nfor(var i in list){\nd.push({\ntitle:'【第'+list[i].num+'集】'+list[i].title,\nurl:'https://open.163.com/newview/movie/free?pid='+content.data[0].plid+'&mid='+list[i].mid+'#'+i+`@lazyRule=.js:try{var get=fetch(input,{headers:{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0；； WOW\"}});var get=unescape(parseDomForHtml(get, 'body&&script:not([src])&&Html').replace('window.__NUXT__', 'var content').replace(/\\\\u/g, '%u'));eval(get);var id=input.split('#')[1];var url_list=content.state.movie.moiveList[id];if(url_list.m3u8ShdUrl!=''){url_list.m3u8ShdUrl}else if(url_list.mp4ShdUrl!=''){url_list.mp4ShdUrl}else if(url_list.m3u8HdUrl!=''){url_list.m3u8HdUrl}else if(url_list.mp4HdUrl!=''){url_list.mp4HdUrl}else if(url_list.m3u8SdUrl!=''){url_list.m3u8SdUrl}else if(url_list.mp4SdUrl!=''){url_list.mp4SdUrl}else if(url_list.mp4ShareUrl!=''){url_list.mp4ShareUrl}else{input}}catch(e){input}`,\ncol_type:'text_1'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","title":"随机视频","author":"仰望星空","version":0,"url":"https://v1.jinrishici.com/all.json","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n\n'①@@0',\n'②@@1',\n'③@@2',\n'④@@3',\n'⑤@@4',\n'⑥@@5',\n'⑦@@6',\n'⑧@@7',\n'⑨@@8',\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push(\n{\n   title:hitokoto.content,\n   desc:\n'类别：'+hitokoto.category+\n'\\n作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\n   col_type: 'pic_1',\n   url:\"http://m.yugaopian.cn/\",\n   pic_url: 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime()\n\n});\n\n\nfor (var i = 0; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.title = k[0];\n  r.url = 'http://xjj.tvv.tw/get/get'+k[1]+'.php'+'@lazyRule=.js:fetch(input,{})';\n  r.col_type = 'text_2';\n  d.push(r);\n}\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.data.songs;\nvar items = list.map(data => ({\n    title: data.name,\n//两个接口\n    url: 'https://api.bcrjl.com/api/music.163.src.php?id='+data.id,\n//'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3',\n    desc: data.album.name,\n    content: data.artists[0].name\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"https://v1.alapi.cn/api/music/search?keyword=**","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.result.tracks;\nvar items = list.map(data => ({\n    title: data.name,\n    url: 'http://music.163.com/song/media/outer/url?id='+data.id+'.mp3',\n    desc: data.artists[0].name+'  '+data.album.name,\n    pic_url: data.album.blurPicUrl\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":""},{"last_chapter_rule":"","title":"美女小视频","author":"缘分","version":0,"type":"video","url":"hiker://empty##fypage","col_type":"pic_2_card","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\ntry {\n    for (var j = 0; j < 12; j++) {\n        var list = JSON.parse(request('https://api.linhun.vip/api/jingxuanshipin?type=热舞'));\n        d.push({\n            pic_url: list.img,\n            url: list.video\n        })\n    }\n} catch (e) {}\nsetResult(d)","searchFind":"","search_url":"","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/30.svg"},{"title":"美拍·Q","author":"发粪涂墙","version":0,"url":"https://www.meipai.com/squares/new_timeline?page=fypage&count=24&tid=fyAll;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36&&Cookie@virtual_device_id=275efe32d376d4a77c8971bdbd7bec48}","col_type":"pic_1","class_name":"搞笑&爱豆&高颜值&舞蹈&音乐&美食","class_url":"13&16&474&63&62&59","area_name":"美妆&萌宠&旅行&手工&游戏&运动&穿秀","area_url":"27&6&426&450&480&487&460","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res = {};\nvar d = [];\nvar json = JSON.parse(getResCode());\nfor (var i in json.medias) {\n    var j = json.medias[i];\nd.push({\n    title: j.caption,\n    desc: j.user.screen_name,\n    pic_url: j.cover_pic,\n    url: j.video + `@lazyRule=.js:eval(base64Decode('ZnVuY3Rpb24gZ2V0SGV4KGEpIHsKICAgIHJldHVybiB7CiAgICAgICAgc3RyOiBhLnN1YnN0cmluZyg0KSwKICAgICAgICBoZXg6IGEuc3Vic3RyaW5nKDAsIDQpLnNwbGl0KCIiKS5yZXZlcnNlKCkuam9pbigiIikKICAgIH07Cn0KZnVuY3Rpb24gZ2V0RGVjKGEpIHsKICAgIHZhciBiID0gcGFyc2VJbnQoYSwgMTYpLnRvU3RyaW5nKCk7CiAgICByZXR1cm4gewogICAgICAgIHByZTogYi5zdWJzdHJpbmcoMCwgMikuc3BsaXQoIiIpLAogICAgICAgIHRhaWw6IGIuc3Vic3RyaW5nKDIpLnNwbGl0KCIiKQogICAgfTsKfQpmdW5jdGlvbiBzdWJzdHIoYSwgYikgewogICAgdmFyIGMgPSBhLnN1YnN0cmluZygwLCBiWzBdKSwgZCA9IGEuc3Vic3RyKGJbMF0sIGJbMV0pOwogICAgcmV0dXJuIGMgKyBhLnN1YnN0cmluZyhiWzBdKS5yZXBsYWNlKGQsICIiKTsKfQpmdW5jdGlvbiBnZXRQb3MoYSwgYikgewogICAgYlswXSA9IGEubGVuZ3RoIC0gYlswXSAtIGJbMV07CiAgICByZXR1cm4gYjsKfQpmdW5jdGlvbiBhdG9iKGEpIHsKICAgIGZvciAodmFyIGIsIGMsIGQgPSAwLCBnID0gMCwgaCA9ICIiOyBjID0gYS5jaGFyQXQoZysrKTsgfmMgJiYgKGIgPSBkICUgNCA/IDY0ICogYiArIGMgOiBjLCBkKysgJSA0KSA/IGggKz0gU3RyaW5nLmZyb21DaGFyQ29kZSgyNTUgJiBiID4+ICgtMiAqIGQgJiA2KSkgOiAwKQogICAgICAgIGMgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLz0nLmluZGV4T2YoYyk7CiAgICByZXR1cm4gaDsKfQpmdW5jdGlvbiB0b1VybChhKSB7CiAgICB2YXIgYiA9IGdldEhleChhKTsKICAgIHZhciBjID0gZ2V0RGVjKGIuaGV4KTsKICAgIHZhciBkID0gc3Vic3RyKGIuc3RyLCBjLnByZSk7CiAgICByZXR1cm4gJ2h0dHBzOicgKyBhdG9iKHN1YnN0cihkLCBnZXRQb3MoZCwgYy50YWlsKSkpLnJlcGxhY2UoJ0AnLCcnKTsKfQoJCQkJCQ=='));'https://'+toUrl(input).split('https://')[1]`,\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"last_chapter_rule":"","title":"小度视频","author":"","version":0,"url":"http://m.v.baidu.com/short/fyclass?pagelets[]=video-list&reqID=0&&page=fypage","col_type":"pic_1","class_name":"推荐&搞笑&明星&旅行&生活","class_url":"recnewslist&amuse&yule&predefine8&info","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res={};var d=[];\nvar strs=getResCode();\nstrs=strs.match(/<a class=\\\\\\\"video-item rtl\\\\\\\" href=\\\\\\\"([^\\\\]*)\\\\\\\"[^>]*title=\\\\\\\"([^\\\\]*)\\\\\\\".*?data-origin=\\\\\\\"([^\\\\]*)\\\\\\\"/gi);\nfor(var i=0;i<strs.length;i++){\nd.push({\ntitle:strs[i].match(/<a class=\\\\\\\"video-item rtl\\\\\\\" href=\\\\\\\"([^\\\\]*)\\\\\\\"[^>]*title=\\\\\\\"([^\\\\]*)\\\\\\\".*data-origin=\\\\\\\"([^\\\\]*)\\\\\\\"/i)[2],\npic_url:strs[i].match(/<a class=\\\\\\\"video-item rtl\\\\\\\" href=\\\\\\\"([^\\\\]*)\\\\\\\"[^>]*title=\\\\\\\"([^\\\\]*)\\\\\\\".*data-origin=\\\\\\\"([^\\\\]*)\\\\\\\"/i)[3],\nurl:strs[i].match(/<a class=\\\\\\\"video-item rtl\\\\\\\" href=\\\\\\\"([^\\\\]*)\\\\\\\"[^>]*title=\\\\\\\"([^\\\\]*)\\\\\\\".*data-origin=\\\\\\\"([^\\\\]*)\\\\\\\"/i)[1]+`@lazyRule=.js:parseDom(fetch(input,{}), 'html&&script,-1&&Html').match(/mp4\\\":\\\"([^\\\"]*)\\\"/)[1]`}); };\r\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]"},{"firstHeader":"class","title":"戏曲大全","version":0,"url":"https://m.chuiyue.com/fyAllindexfypage.html[firstPage=https://m.chuiyue.com/fyAll];gbk","col_type":"movie_3","class_name":"戏曲大全&广场舞&生活百科&经典怀旧","class_url":"eg/&hj/&ys/&zj/","area_name":"民间小调&全部专题","area_url":"topiclist/mingjianxiaodiao.html&topic","year_name":"","year_url":"","find_rule":"body&&li;h3&&Text;img&&src;p||a&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":""},{"title":"译学馆","author":"","version":0,"url":"https://www.yxgapp.com/category/video/fyAll/page/fypage/","col_type":"movie_3","class_name":"科普&英语&科技&影评&美食&励志&极客","class_url":"science&english&technology&movie&food&inpirations&geeks","area_name":"商业&社会&旅游&动物&儿童&卡通&时尚","area_url":"business&society&travel&animals&kids&cartoon&fashion","sort_name":"","year_name":"计算机&心理&教育&手工&趣闻&职场","sort_url":"","year_url":"computer&psychology&education&handcrafts&mysteries&career","find_rule":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&article');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'h3&&Text'),\ndesc:parseDomForHtml(list[i],'.elementor-post-author&&Text'),\npic_url:parseDom(list[i],'img&&src'),\nurl:parseDom(list[i],'a&&href')+`@lazyRule=body&&video.elementor-video[controls]&&src`,\ncol_type: 'movie_1'});\n  }catch(e){}\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"⑧短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":""},{"last_chapter_rule":"","title":"推图网","author":"Timik","version":1,"type":"picture","url":"https://m.tuiimg.com/fyclass/list_fypage.html","col_type":"movie_3","class_name":"全部&性感&清纯&妹子&写真","class_url":"meinv&xingganmeinv&qingchunmeinv&meizitu&meinvxiezhen","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.main&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&a&&Text'),\n        desc: pdfh(list[j], '.mb-time&&Text'),\n        pic_url: pd(list[j], 'img&&realsrc'),\n        url: pd(list[j], 'h2&&a&&href')\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = []\nvar list = pdfa(getResCode(), '.main&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&a&&Text'),\n        desc: pdfh(list[j], '.mb-time&&Text'),\n        pic_url: pd(list[j], 'img&&realsrc'),\n        url: pd(list[j], 'h2&&a&&href')\n    })\n}\nsetResult(d)","search_url":"https://www.tuiimg.com/search/?searchkey=**;post;utf-8","group":"⑧美图","detail_col_type":"pic_1_full","detail_find_rule":"js:\nvar res = {}\nvar d = []\nvar _pd = pdfa(getResCode(),'body&&script')[0].split(/,/);\nvar num =Number(_pd[3]);\nvar path = _pd[1].replace(/\\\"/g, \"\");\n\tfor(var i = 1 ; i < num+1;i++){\n\t\tlet img = \"https://i.tuiimg.net/\"+path+i+\".jpg\"\t\n\t\td.push({\n\t\t  pic_url:img,\n\t\t  url:img,\n\t\t  col_type:'pic_3'\n\t\t})\n\t}\nres.data=d;\nsetHomeResult(res)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/9.png"},{"last_chapter_rule":"","title":"全图网","author":"Timik","version":1,"type":"picture","url":"http://q.quantuwang1.com/meinv/taotu/index_fypage.html[firstPage=http://q.quantuwang1.com/meinv/taotu/index.html]","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".index_middle_c&&li;span&&Text.js:input.replace(/\\[.*?\\]/,'').trim();img&&src;span&&Text.js:input.split(\"]\")[0].replace('[','').trim();a&&href","searchFind":"","search_url":"","group":"⑧美图","detail_col_type":"movie_1","detail_find_rule":"js: var res = {};\nvar d = [];\nvar html = getResCode();\nvar imgs = [];\nvar pics = [];\n//取得所有分页地址\nvar urls = (parseDomForArray(fetch(MY_URL, {}), '.index_c_page&&a') + '').match(/\\/m.*?.html/g);\n//log(urls)\nvar array = [];\n//循环所有分页加上绝对地址\nfor (u of urls) {\n    array.push({\n        url: 'http://q.quantuwang1.com/' + u\n    })\n};\n//将处理后的地址插入数组中\narray.unshift({\n    url: MY_URL\n});\nvar htmlArray = batchFetch(array);\n//log(htmlArray)\n//取得所有图片地址\nfor (h of htmlArray) {\n    imgs = parseDomForHtml(h, '.index_c_img&&img&&src')\n    pics.push(imgs);\n};\n//log(pics)\nfor (x in pics) {\n    d.push({\n        pic_url: pics[x],\n        url: pics[x],\n        col_type: \"pic_3\"\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/9.png"},{"last_chapter_rule":"","title":"简单音乐","author":"旧巷陌人","version":0,"type":"music","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('hiker://page/Config.view')\ngetBaseParse()","searchFind":"","search_url":"","group":"⑧耳音","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"Config.view\",\"rule\":\"const empty = 'hiker://empty'\\n\\nconst Color = (test) => {\\n    return '<font color=\\\"#FA7298\\\">' + test + '</front>';\\n}\\n\\nconst SpringGreen = (test) => {\\n    return '<font color=\\\"#3CB371\\\">' + test + '</front>';\\n}\\n\\nconst Strong = (test) => {\\n    return '<strong>' + test + '</strong>';\\n}\\n\\nconst Small = (test) => {\\n    return '<small>' + test + '</small>';\\n}\\n\\nconst Gray = (test) => {\\n    return \\\"<font color='gray'>\\\" + test + \\\"</font>\\\";\\n}\\n\\nconst Rich = (test) => {\\n    return \\\"‘‘’’\\\" + test;\\n}\\n\\nconst getMove = (arr, index, tindex) => {\\n    if (index > tindex) {\\n        arr.splice(tindex, 0, arr[index]);\\n        arr.splice(index + 1, 1)\\n    } else {\\n        arr.splice(tindex + 1, 0, arr[index]);\\n        arr.splice(index, 1)\\n    }\\n}\\n\\nconst aesEncrypt = (word) => {\\n    eval(getCryptoJS());\\n    let str_key = CryptoJS.enc.Utf8.parse(\\\"0CoJUm6Qyw8W8jud\\\");\\n    let str_iv = CryptoJS.enc.Utf8.parse('0102030405060708');\\n    let aes_str = CryptoJS.AES.encrypt(word, str_key, {\\n        iv: str_iv,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    }).toString();\\n    str_key = CryptoJS.enc.Utf8.parse(\\\"aaaabbbbccccdddd\\\");\\n    return CryptoJS.AES.encrypt(aes_str, str_key, {\\n        iv: str_iv,\\n        mode: CryptoJS.mode.CBC,\\n        padding: CryptoJS.pad.Pkcs7\\n    }).toString();\\n}\\n\\nconst NetEaseConfig = (path, body, method) => {\\n    NetEaseUrl = 'https://music.163.com'\\n    if (method != 'GET') {\\n        body = 'params=' + aesEncrypt(JSON.stringify(body)) + '&encSecKey=' + '814e4abf9c1c6a2af74a7ecca8843f3052626c5c054584352e3fd38a519bd659e687cf1c079e1aac5dd9d491af6b8abf92109862ada93dc7b0ef94a8ee79d557ff2a20512b87ce507e357861366b8542139c67896748852d4086104a8dfc99a2e2e0640b46a4357407b72407b2849b323425c6ed45a0222e69d551a2e59e15b7'\\n    }\\n    NetEaseMap = request(NetEaseUrl + path, {\\n        headers: {\\n            'Referer': NetEaseUrl,\\n            'Origin': NetEaseUrl,\\n            'Cookie': 'NMTID=00OQ5Vi-4NKTGfogEunoULh0Qy8PMsAAAGEbKo-Yg; os=pc'\\n        },\\n        body: body,\\n        method: method\\n    })\\n    return JSON.parse(NetEaseMap)\\n}\\n\\nconst TencentConfig = (mid) => {\\n    TencentUrl = mid;\\n    if (typeof mid == \\\"number\\\") {\\n        body = {\\n            \\\"Songlist\\\": {\\n                \\\"module\\\": \\\"music.srfDissInfo.DissInfo\\\",\\n                \\\"method\\\": \\\"CgiGetDiss\\\",\\n                \\\"param\\\": {\\n                    \\\"dirid\\\": 0,\\n                    \\\"from\\\": 15,\\n                    \\\"ctx\\\": 0,\\n                    \\\"onlysonglist\\\": 0,\\n                    \\\"orderlist\\\": 1,\\n                    \\\"tag\\\": 1,\\n                    \\\"rec_flag\\\": 1,\\n                    \\\"disstid\\\": mid,\\n                    \\\"new_format\\\": 1,\\n                    \\\"host_uin\\\": 0,\\n                    \\\"optype\\\": 2,\\n                    \\\"enc_host_uin\\\": \\\"0\\\"\\n                }\\n            },\\n            \\\"comm\\\": {\\n                \\\"ct\\\": \\\"1\\\",\\n                \\\"v\\\": \\\"90\\\",\\n                \\\"cv\\\": \\\"101805\\\",\\n                \\\"gzip\\\": \\\"0\\\"\\n            }\\n        }\\n        TencentUrl = 'http://u6.y.qq.com/cgi-bin/musicu.fcg?data=' + escape(JSON.stringify(body))\\n    }\\n    TencentMap = request(TencentUrl, {\\n        headers: {\\n            'Referer': 'https://y.qq.com/portal/player.html'\\n        }\\n    })\\n    return JSON.parse(TencentMap)\\n}\\n\\nconst KwmusiccarConfig = (KwmusiccarUrl) => {\\n    let host = 'http://m.kuwo.cn/newh5app/'\\n    if (!getMyVar('Kwmusiccar')) {\\n        Cookie = fetchCookie(host + 'api/mobile/v1/home')\\n        Cookie = JSON.parse(Cookie)[0]\\n        putMyVar('Kwmusiccar', Cookie)\\n    }\\n    const x = (t) => {\\n        let e = getMyVar('Kwmusiccar'),\\n            n = e.indexOf(t + \\\"=\\\");\\n        if (-1 != n) {\\n            n = n + t.length + 1;\\n            let o = e.indexOf(\\\";\\\", n);\\n            return -1 == o && (o = e.length),\\n                unescape(e.substring(n, o))\\n        }\\n        return null\\n    }\\n    Token = md5(x(\\\"BAIDU_RANDOM\\\")).toUpperCase()\\n    KwmusiccarUrl = host + 'api/mobile/v1/music' + KwmusiccarUrl\\n    KwmusiccarMap = request(KwmusiccarUrl, {\\n        headers: {\\n            'Referer': host,\\n            'Token': Token,\\n            'Cookie': getMyVar('Kwmusiccar')\\n        }\\n    })\\n    return JSON.parse(KwmusiccarMap).data\\n}\\n\\nconst MiguConfig = (MiguUrl) => {\\n    MiguHost = 'https://app.c.nf.migu.cn/'\\n    if (!/^(https?)/.test(MiguUrl)) {\\n        MiguUrl = MiguHost + MiguUrl\\n    }\\n    MiguMap = request(MiguUrl, {\\n        headers: {\\n            'Referer': MiguHost\\n        }\\n    })\\n    return JSON.parse(MiguMap)\\n}\\n\\nconst getSelectMap = (MusicMap, SelectMap, i, mid, name, input) => {\\n    switch (getItem('getUpMap', SelectMap[SelectMap.length - 1])) {\\n        case SelectMap[0]:\\n            getCopy = getMyVar('BuildMusic', MusicMap[0]) + '\\\\n歌单名称：' + name + '\\\\n歌单识别：' + base64Encode('' + mid + '')\\n            copy(getCopy)\\n            break;\\n        case SelectMap[1]:\\n            return $(empty).lazyRule((empty, MusicMap, i) => {\\n                storage0.putMyVar('MusicMapConfirm', MusicMap)\\n                storage0.putMyVar('indexConfirm', i)\\n                confirm({\\n                    title: \\\"歌单删除\\\",\\n                    content: \\\"确定好了吗，该歌单将删除\\\",\\n                    confirm: () => {\\n                        MusicMap = storage0.getMyVar('MusicMapConfirm')\\n                        i = storage0.getMyVar('indexConfirm')\\n                        down = 'hiker://files/rules/js/简单音乐.js'\\n                        dataMap = readFile(down);\\n                        eval('dataMap =' + dataMap)\\n                        switch (getMyVar('BuildMusic', MusicMap[0])) {\\n                            case MusicMap[0]:\\n                                dataMap.BuildMusic.NetEase.splice(i, 1)\\n                                break;\\n                            case MusicMap[1]:\\n                                dataMap.BuildMusic.Tencent.splice(i, 1)\\n                                break;\\n                            case MusicMap[2]:\\n                                dataMap.BuildMusic.Kwmusiccar.splice(i, 1)\\n                                break;\\n                            case MusicMap[3]:\\n                                dataMap.BuildMusic.Kugou.splice(i, 1)\\n                                break;\\n                            default:\\n                                dataMap.BuildMusic.Migu.splice(i, 1)\\n                                break;\\n                        }\\n                        saveFile(down, JSON.stringify(dataMap), 0);\\n                        refreshPage(false)\\n                        toast('删除成功');\\n                    }\\n                })\\n                return empty\\n            }, empty, MusicMap, i)\\n            break;\\n        case SelectMap[2]:\\n            putMyVar('getMove', i)\\n            refreshPage(false)\\n            break;\\n        default:\\n            return $(empty + '#cacheOnly#fypage').rule((mid, MusicMap) => {\\n                require('hiker://page/Config.view')\\n                let page = MY_PAGE\\n                let layout = [];\\n                switch (getMyVar('BuildMusic', MusicMap[0])) {\\n                    case MusicMap[0]:\\n                        if (page == 1) {\\n                            NetEaseMap = '/api/v6/playlist/detail?id=' + mid + '&n=1000&limit=1000'\\n                            NetEaseMap = NetEaseConfig(NetEaseMap, '', 'GET')\\n                            try {\\n                                NetEaseParse(layout, NetEaseMap.playlist.tracks)\\n                            } catch (e) {\\n                                layout.push({\\n                                    title: Rich(Small(Gray('～～～' + NetEaseMap.message + '～～～'))),\\n                                    url: empty,\\n                                    col_type: 'text_center_1',\\n                                    extra: {\\n                                        lineVisible: false\\n                                    }\\n                                })\\n                            }\\n                        }\\n                        break;\\n                    case MusicMap[1]:\\n                        if (page == 1) {\\n                            TencentMap = TencentConfig(mid).Songlist.data.songlist\\n                            TencentParse(layout, TencentMap)\\n                        }\\n                        break;\\n                    case MusicMap[2]:\\n                        KwmusiccarUrl = '/playlist/' + mid + '?pn=' + page + '&rn=20&ua=&ip='\\n                        try {\\n                            KwmusiccarMap = KwmusiccarConfig(KwmusiccarUrl).musicList\\n                            KwmusiccarParse(layout, KwmusiccarMap)\\n                        } catch (e) {\\n                            toast('别拖了，都到底哦')\\n                        }\\n                        break;\\n                    case MusicMap[3]:\\n                        if (page == 1) {\\n                            try {\\n                                KugouUrl = 'https://m.kugou.com/plist/list/' + mid + '/?json=true'\\n                                KugouMap = JSON.parse(request(KugouUrl)).list.list.info\\n                                KugouParse(layout, KugouMap)\\n                            } catch (e) {\\n                                mid = pdfh(request(mid), 'body&&script,2&&Html')\\n                                mid = mid.match(/window\\\\.\\\\$output = ([\\\\S\\\\s].*);/)[1]\\n                                KugouMap = JSON.parse(mid).info.songs\\n                                KugouParse(layout, KugouMap)\\n                            }\\n                        }\\n                        break;\\n                    default:\\n                        MiguUrl = 'MIGUM3.0/resource/playlist/song/v2.0?pageNo=' + page + '&pageSize=50&playlistId=' + mid\\n                        MiguMap = MiguConfig(MiguUrl).data.songList\\n                        MiguParse(layout, MiguMap)\\n                        break;\\n                }\\n                setResult(layout);\\n            }, mid, MusicMap)\\n    }\\n    return empty\\n}\\n\\nconst getImport = (MusicMap, input) => {\\n    let down = 'hiker://files/rules/js/简单音乐.js'\\n    let dataMap = readFile(down);\\n    eval('dataMap =' + dataMap)\\n    let NetEase = dataMap.BuildMusic.NetEase\\n    let Tencent = dataMap.BuildMusic.Tencent\\n    let Kwmusiccar = dataMap.BuildMusic.Kwmusiccar\\n    let Kugou = dataMap.BuildMusic.Kugou\\n    let Migu = dataMap.BuildMusic.Migu\\n    try {\\n        switch (getMyVar('BuildMusic', MusicMap[0])) {\\n            case MusicMap[0]:\\n                if (input.startsWith(MusicMap[0])) {\\n                    mid = input.match(/识别：(.*)/)[1]\\n                    mid = base64Decode(mid)\\n                } else if (input.search('music.163') >= 1) {\\n                    mid = input.match(/(playlist\\\\/|id=)(\\\\d+)/)[2]\\n                }\\n                NetEaseMap = '/api/v6/playlist/detail?id=' + mid + '&n=1000&limit=1000'\\n                NetEaseMap = NetEaseConfig(NetEaseMap, '', 'GET').playlist\\n                Break = true\\n                NetEase.forEach(item => {\\n                    if (item.mid == NetEaseMap.id) {\\n                        toast('歌单重复导入了哦')\\n                        Break = false\\n                    }\\n                })\\n                if (Break) {\\n                    NetEase.push({\\n                        name: NetEaseMap.name,\\n                        picUrl: NetEaseMap.coverImgUrl,\\n                        mid: NetEaseMap.id\\n                    })\\n                    saveFile(down, JSON.stringify(dataMap), 0);\\n                    refreshPage(false)\\n                }\\n                break;\\n            case MusicMap[1]:\\n                if (input.startsWith(MusicMap[1])) {\\n                    mid = input.match(/识别：(.*)/)[1]\\n                    mid = base64Decode(mid)\\n                } else if (input.search('qq.com') >= 1) {\\n                    mid = input.match(/id=(\\\\d+)/)[1]\\n                }\\n                TencentMap = TencentConfig(Number(mid)).Songlist.data.dirinfo\\n                Break = true\\n                Tencent.forEach(item => {\\n                    if (item.mid == TencentMap.id) {\\n                        toast('歌单重复导入了哦')\\n                        Break = false\\n                    }\\n                })\\n                if (Break) {\\n                    Tencent.push({\\n                        name: TencentMap.title,\\n                        picUrl: TencentMap.picurl,\\n                        mid: TencentMap.id\\n                    })\\n                    saveFile(down, JSON.stringify(dataMap), 0);\\n                    refreshPage(false)\\n                }\\n                break;\\n            case MusicMap[2]:\\n                if (input.startsWith(MusicMap[2])) {\\n                    mid = input.match(/识别：(.*)/)[1]\\n                    mid = base64Decode(mid)\\n                } else if (input.search('kuwo.cn') >= 1) {\\n                    mid = input.match(/(playlist\\\\/|playlist_detail\\\\/)(\\\\d+)/)[2]\\n                }\\n                KwmusiccarUrl = '/playlist/' + mid + '?pn=1&rn=20&ua=&ip='\\n                KwmusiccarMap = KwmusiccarConfig(KwmusiccarUrl)\\n                Break = true\\n                Kwmusiccar.forEach(item => {\\n                    if (item.mid == KwmusiccarMap.id) {\\n                        toast('歌单重复导入了哦')\\n                        Break = false\\n                    }\\n                })\\n                if (Break) {\\n                    Kwmusiccar.push({\\n                        name: KwmusiccarMap.name,\\n                        picUrl: KwmusiccarMap.pic,\\n                        mid: KwmusiccarMap.id\\n                    })\\n                    saveFile(down, JSON.stringify(dataMap), 0);\\n                    refreshPage(false)\\n                }\\n                break;\\n            case MusicMap[3]:\\n                try {\\n                    if (input.startsWith(MusicMap[3])) {\\n                        Input = input.match(/识别：(.*)/)[1]\\n                        Input = base64Decode(Input)\\n                        mid = pdfh(request(Input), 'body&&script,2&&Html')\\n                        mid = mid.match(/window\\\\.\\\\$output = ([\\\\S\\\\s].*);/)[1]\\n                    } else if (input.search('kugou.com') >= 1) {\\n                        Input = input.match(/(https|http)(.*link)/)[0]\\n                        mid = pdfh(request(Input), 'body&&script,2&&Html')\\n                        mid = mid.match(/window\\\\.\\\\$output = ([\\\\S\\\\s].*);/)[1]\\n                    }\\n                    KugouMap = JSON.parse(mid).info.listinfo\\n                    Break = true\\n                    Kugou.forEach(item => {\\n                        if (item.mid == Input) {\\n                            toast('歌单重复导入了哦')\\n                            Break = false\\n                        }\\n                    })\\n                    if (Break) {\\n                        Kugou.push({\\n                            name: KugouMap.name,\\n                            picUrl: KugouMap.pic.replace('{size}', '400'),\\n                            mid: Input\\n                        })\\n                        saveFile(down, JSON.stringify(dataMap), 0);\\n                        refreshPage(false)\\n                    }\\n                } catch (e) {\\n                    if (input.startsWith(MusicMap[3])) {\\n                        mid = input.match(/识别：(.*)/)[1]\\n                        mid = base64Decode(mid)\\n                    } else if (input.search('kugou.com') >= 1) {\\n                        mid = input.match(/(\\\\/list\\\\/)(.*)\\\\//)[2]\\n                    }\\n                    KugouUrl = 'https://m3ws.kugou.com/plist/list/' + mid\\n                    KugouMap = request(KugouUrl)\\n                    Break = true\\n                    Kugou.forEach(item => {\\n                        if (item.mid == mid) {\\n                            toast('歌单重复导入了哦')\\n                            Break = false\\n                        }\\n                    })\\n                    if (Break) {\\n                        Kugou.push({\\n                            name: pdfh(KugouMap, '.content&&p&&Text'),\\n                            picUrl: pdfh(KugouMap, '.content&&img&&_src'),\\n                            mid: mid\\n                        })\\n                        saveFile(down, JSON.stringify(dataMap), 0);\\n                        refreshPage(false)\\n                    }\\n                }\\n                break;\\n            default:\\n                if (input.startsWith(MusicMap[4])) {\\n                    mid = input.match(/识别：(.*)/)[1]\\n                    mid = base64Decode(mid)\\n                } else if (input.search('migu.cn') >= 1) {\\n                    if (input.startsWith('分享')) {\\n                        mid = input.match(/(https|http).*(\\\\w)/)[0]\\n                        mid = JSON.parse(request(mid, {\\n                            onlyHeaders: true\\n                        })).url\\n                        mid = mid.match(/(id=)(\\\\d+)/)[2]\\n                    } else {\\n                        mid = input.match(/(playlist\\\\/)(\\\\d+)/)[2]\\n                    }\\n                }\\n                MiguUrl = 'MIGUM3.0/resource/playlist/v2.0?playlistId=' + mid\\n                MiguMap = MiguConfig(MiguUrl).data\\n                Break = true\\n                Migu.forEach(item => {\\n                    if (item.mid == MiguMap.musicListId) {\\n                        toast('歌单重复导入了哦')\\n                        Break = false\\n                    }\\n                })\\n                if (Break) {\\n                    Migu.push({\\n                        name: MiguMap.title,\\n                        picUrl: MiguMap.imgItem.img,\\n                        mid: MiguMap.musicListId\\n                    })\\n                    saveFile(down, JSON.stringify(dataMap), 0);\\n                    refreshPage(false)\\n                }\\n                break;\\n        }\\n    } catch (e) {\\n        toast('糟糕崩溃了，请检查链接是否有误')\\n    }\\n}\\n\\nconst getMySelectMap = (MusicMap, SelectMap, mid, name, input) => {\\n    switch (getItem('getUpMap', SelectMap[SelectMap.length - 1])) {\\n        case SelectMap[0]:\\n            getCopy = getMyVar('MusicMyMap', MusicMap[0]) + '\\\\n歌单名称：' + name + '\\\\n歌单识别：' + base64Encode('' + mid + '')\\n            copy(getCopy)\\n            break;\\n        default:\\n            return $(empty + '#cacheOnly#').rule((MusicMap, mid) => {\\n                require('hiker://page/Config.view')\\n                let layout = [];\\n                switch (getMyVar('MusicMyMap', MusicMap[0])) {\\n                    case MusicMap[0]:\\n                        NetEaseMap = '/api/v6/playlist/detail?id=' + mid + '&n=1000&limit=1000'\\n                        NetEaseMap = NetEaseConfig(NetEaseMap, '', 'GET')\\n                        try {\\n                            NetEaseParse(layout, NetEaseMap.playlist.tracks)\\n                        } catch (e) {\\n                            layout.push({\\n                                title: Rich(Small(Gray('～～～' + NetEaseMap.message + '～～～'))),\\n                                url: empty,\\n                                col_type: 'text_center_1',\\n                                extra: {\\n                                    lineVisible: false\\n                                }\\n                            })\\n                        }\\n                        break;\\n                    default:\\n                        TencentMap = TencentConfig(mid).Songlist.data.songlist\\n                        TencentParse(layout, TencentMap)\\n                        break;\\n                }\\n                setResult(layout);\\n            }, MusicMap, mid)\\n    }\\n    return empty\\n}\\n\\nconst getBaseParse = () => {\\n    MusicMap = ['我的歌单', '歌单收藏', '音乐菜单'];\\n    let layout = [];\\n    MusicMap.forEach(item => {\\n        layout.push({\\n            title: item == getMyVar('MusicMap', MusicMap[0]) ? Rich(Strong(Color(item))) : item,\\n            url: $('#noLoading#').lazyRule((item, empty) => {\\n                switch (item) {\\n                    case '音乐菜单':\\n                        upMap = ['歌单样式']\\n                        storageMap = storage0.getMyVar('SelectMap')\\n                        upMap = storageMap.concat(upMap)\\n                        return $(upMap, 2, '已选择-' + '[' + getItem('getUpMap', storageMap[storageMap.length - 1]) + ']').select((upMap, empty) => {\\n                            switch (input) {\\n                                case upMap[upMap.length - 1]:\\n                                    return $(getColTypes(), 2, '已选择-' + '[' + getItem('getColTypes', 'card_pic_3') + ']').select(() => {\\n                                        setItem('getColTypes', input)\\n                                        toast('切换样式-' + input)\\n                                    })\\n                                    break;\\n                                default:\\n                                    setItem('getUpMap', input)\\n                                    toast('切换方法-' + input)\\n                                    break;\\n                            }\\n                            return empty\\n                        }, upMap, empty)\\n                        break;\\n                    default:\\n                        putMyVar('MusicMap', item);\\n                        clearItem('getUpMap')\\n                        refreshPage();\\n                        return empty;\\n                        break;\\n                }\\n            }, item, empty),\\n            col_type: 'scroll_button'\\n        })\\n    })\\n    layout.push({\\n        col_type: 'blank_block'\\n    })\\n    switch (getMyVar('MusicMap', MusicMap[0])) {\\n        case MusicMap[0]:\\n            getMyMusicParse(layout)\\n            break;\\n        default:\\n            getBuildMusicParse(layout)\\n            break;\\n    }\\n    setResult(layout)\\n}\\n\\nconst getMyMusicParse = (layout) => {\\n    let down = 'hiker://files/rules/js/简单音乐.js'\\n    let getLogin;\\n    if (fileExist(down)) {\\n        eval('getLogin =' + readFile(down))\\n    } else {\\n        getLogin = {}\\n        saveFile(down, JSON.stringify(getLogin), 0);\\n    }\\n    MusicMap = ['网易歌单', '腾讯歌单'];\\n    MusicMap.forEach(item => {\\n        layout.push({\\n            title: item == getMyVar('MusicMyMap', MusicMap[0]) ? Rich(Strong(Color(item))) : item,\\n            url: $('#noLoading#').lazyRule((item, empty) => {\\n                putMyVar('MusicMyMap', item);\\n                refreshPage();\\n                return empty;\\n            }, item, empty),\\n            col_type: 'scroll_button'\\n        })\\n    })\\n    switch (getMyVar('MusicMyMap', MusicMap[0])) {\\n        case MusicMap[0]:\\n            getNetEaseParse(layout, getLogin, MusicMap)\\n            break;\\n        default:\\n            getTencentParse(layout, getLogin, MusicMap)\\n            break;\\n    }\\n}\\n\\nconst getBuildMusicParse = (layout) => {\\n    let down = 'hiker://files/rules/js/简单音乐.js'\\n    let getLogin;\\n    eval('getLogin =' + readFile(down))\\n    getSaveFile = false\\n    if (getLogin.BuildMusic == null) {\\n        getLogin.BuildMusic = {}\\n        getSaveFile = true\\n    }\\n    if (getLogin.BuildMusic.NetEase == null) {\\n        getLogin.BuildMusic.NetEase = []\\n        getSaveFile = true\\n    }\\n    if (getLogin.BuildMusic.Tencent == null) {\\n        getLogin.BuildMusic.Tencent = []\\n        getSaveFile = true\\n    }\\n    if (getLogin.BuildMusic.Kwmusiccar == null) {\\n        getLogin.BuildMusic.Kwmusiccar = []\\n        getSaveFile = true\\n    }\\n    if (getLogin.BuildMusic.Kugou == null) {\\n        getLogin.BuildMusic.Kugou = []\\n        getSaveFile = true\\n    }\\n    if (getLogin.BuildMusic.Migu == null) {\\n        getLogin.BuildMusic.Migu = []\\n        getSaveFile = true\\n    }\\n    if (getSaveFile) {\\n        saveFile(down, JSON.stringify(getLogin), 0);\\n        eval('getLogin =' + readFile(down))\\n    }\\n    MusicMap = ['网易歌单', '腾讯歌单', '酷我歌单', '酷狗歌单', '咪咕歌单'];\\n    MusicMap.forEach(item => {\\n        layout.push({\\n            title: item == getMyVar('BuildMusic', MusicMap[0]) ? Rich(Strong(Color(item))) : item,\\n            url: $('#noLoading#').lazyRule((item, empty) => {\\n                putMyVar('BuildMusic', item);\\n                refreshPage();\\n                return empty;\\n            }, item, empty),\\n            col_type: 'scroll_button'\\n        })\\n    })\\n    switch (getMyVar('BuildMusic', MusicMap[0])) {\\n        case MusicMap[0]:\\n            dataMap = getLogin.BuildMusic.NetEase\\n            break;\\n        case MusicMap[1]:\\n            dataMap = getLogin.BuildMusic.Tencent\\n            break;\\n        case MusicMap[2]:\\n            dataMap = getLogin.BuildMusic.Kwmusiccar\\n            break;\\n        case MusicMap[3]:\\n            dataMap = getLogin.BuildMusic.Kugou\\n            break;\\n        default:\\n            dataMap = getLogin.BuildMusic.Migu\\n            break;\\n    }\\n    SelectMap = ['歌单分享', '删除歌单', '歌单移动', '查看内容']\\n    storage0.putMyVar('SelectMap', SelectMap)\\n    dataMap.forEach((item, i) => {\\n        name = item.name\\n        select = $(empty + '#noLoading#').lazyRule((MusicMap, SelectMap, i, mid, name) => {\\n            require('hiker://page/Config.view')\\n            return getSelectMap(MusicMap, SelectMap, i, mid, name, input)\\n        }, MusicMap, SelectMap, i, item.mid, item.name)\\n        if (getMyVar('getMove', '')) {\\n            if (getMyVar('getMove', '') == i) {\\n                name = Rich(Small(SpringGreen(name)))\\n            }\\n            select = $(empty).lazyRule((MusicMap, i) => {\\n                require('hiker://page/Config.view')\\n                down = 'hiker://files/rules/js/简单音乐.js'\\n                eval('getLogin =' + readFile(down))\\n                index = getMyVar('getMove', '')\\n                switch (getMyVar('BuildMusic', MusicMap[0])) {\\n                    case MusicMap[0]:\\n                        getMove(getLogin.BuildMusic.NetEase, Number(index), i)\\n                        break;\\n                    case MusicMap[1]:\\n                        getMove(getLogin.BuildMusic.Tencent, Number(index), i)\\n                        break;\\n                    case MusicMap[2]:\\n                        getMove(getLogin.BuildMusic.Kwmusiccar, Number(index), i)\\n                        break;\\n                    case MusicMap[3]:\\n                        getMove(getLogin.BuildMusic.Kugou, Number(index), i)\\n                        break;\\n                    default:\\n                        getMove(getLogin.BuildMusic.Migu, Number(index), i)\\n                        break;\\n                }\\n                saveFile(down, JSON.stringify(getLogin), 0);\\n                clearMyVar('getMove')\\n                refreshPage(false)\\n                return empty\\n            }, MusicMap, i)\\n        }\\n        layout.push({\\n            title: name,\\n            img: item.picUrl,\\n            url: select,\\n            col_type: 'card_pic_3'\\n        })\\n    })\\n    layout.push({\\n        title: '歌单导入',\\n        img: 'https://missuo.ru/file/1eb6219db8632428a2396.jpg',\\n        url: $('', '请输入歌单链接').input((MusicMap) => {\\n            require('hiker://page/Config.view')\\n            return getImport(MusicMap, input)\\n        }, MusicMap),\\n        col_type: 'card_pic_3'\\n    })\\n}\\n\\nconst getNetEaseParse = (layout, getLogin, MusicMap) => {\\n    NetEaseMap = getLogin.NetEase\\n    if (NetEaseMap == null || NetEaseMap.length == 0) {\\n        layout.push({\\n            title: '查\\\\n询',\\n            desc: \\\"输入关键词查询用户\\\",\\n            url: $.toString((empty) => {\\n                putMyVar('关键词', input);\\n                refreshPage();\\n                return empty;\\n            }, empty),\\n            col_type: 'input',\\n            extra: {\\n                type: 'textarea',\\n                height: 3,\\n                defaultValue: getMyVar('关键词')\\n            }\\n        })\\n        if (getMyVar('关键词', '') != '') {\\n            path = '/weapi/search/get'\\n            body = {\\n                \\\"s\\\": getMyVar('关键词'),\\n                \\\"type\\\": 1002,\\n                \\\"limit\\\": 30,\\n                \\\"offset\\\": 0\\n            }\\n            data = NetEaseConfig(path, body, 'POST')\\n            data.result.userprofiles.forEach(item => {\\n                layout.push({\\n                    title: item.nickname,\\n                    img: item.avatarUrl,\\n                    url: $(empty).lazyRule((empty, userId) => {\\n                        down = 'hiker://files/rules/js/简单音乐.js'\\n                        data = readFile(down);\\n                        eval('data =' + data)\\n                        data.NetEase = []\\n                        data.NetEase.push(userId)\\n                        saveFile(down, JSON.stringify(data), 0);\\n                        refreshPage()\\n                        return empty\\n                    }, empty, item.userId),\\n                    col_type: 'avatar'\\n                })\\n            })\\n        }\\n    } else {\\n        addListener('onRefresh', $.toString(() => {\\n            switch (getMyVar('注销', '0')) {\\n                case '0':\\n                    putMyVar('注销', 1);\\n                    break;\\n                default:\\n                    putMyVar('注销', 0);\\n                    break;\\n            }\\n        }));\\n        if (getMyVar('注销', '0') == 1) {\\n            layout.push({\\n                title: Rich(Small(Gray('～～～注销绑定～～～'))),\\n                url: $(empty).lazyRule((empty) => {\\n                    down = 'hiker://files/rules/js/简单音乐.js'\\n                    data = readFile(down);\\n                    eval('data =' + data)\\n                    data.NetEase.splice(0, 1)\\n                    saveFile(down, JSON.stringify(data), 0);\\n                    clearMyVar('注销')\\n                    refreshPage()\\n                    return empty\\n                }, empty),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n        NetEaseMap = '/api/user/playlist?offset=0&uid=' + getLogin.NetEase[0] + '&limit=1000'\\n        NetEaseMap = NetEaseConfig(NetEaseMap, '', 'GET').playlist\\n        SelectMap = ['歌单分享', '查看内容']\\n        storage0.putMyVar('SelectMap', SelectMap)\\n        NetEaseMap.forEach(item => {\\n            layout.push({\\n                title: item.name,\\n                img: item.coverImgUrl,\\n                url: $(empty + '#noLoading#').lazyRule((MusicMap, SelectMap, mid, name) => {\\n                    require('hiker://page/Config.view')\\n                    return getMySelectMap(MusicMap, SelectMap, mid, name, input)\\n                }, MusicMap, SelectMap, item.id, item.name),\\n                col_type: 'card_pic_3'\\n            })\\n        })\\n    }\\n}\\n\\nconst getTencentParse = (layout, getLogin, MusicMap) => {\\n    TencentMap = getLogin.Tencent\\n    if (TencentMap == null || TencentMap.length == 0) {\\n        layout.push({\\n            desc: \\\"请输入您的QQ号\\\",\\n            col_type: \\\"input\\\",\\n            extra: {\\n                type: 'textarea',\\n                height: 3,\\n                onChange: \\\"setItem('QQ', input)\\\",\\n                titleVisible: false\\n            }\\n        }, {\\n            title: Rich(Strong(Gray('绑定账号'))),\\n            url: $(empty).lazyRule((empty) => {\\n                down = 'hiker://files/rules/js/简单音乐.js'\\n                data = readFile(down);\\n                eval('data =' + data)\\n                data.Tencent = []\\n                data.Tencent.push(getItem('QQ'))\\n                saveFile(down, JSON.stringify(data), 0);\\n                refreshPage()\\n                return empty\\n            }, empty),\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    } else {\\n        addListener('onRefresh', $.toString(() => {\\n            switch (getMyVar('注销', '0')) {\\n                case '0':\\n                    putMyVar('注销', 1);\\n                    break;\\n                default:\\n                    putMyVar('注销', 0);\\n                    break;\\n            }\\n        }));\\n        if (getMyVar('注销', '0') == 1) {\\n            layout.push({\\n                title: Rich(Small(Gray('～～～注销绑定～～～'))),\\n                url: $(empty).lazyRule((empty) => {\\n                    down = 'hiker://files/rules/js/简单音乐.js'\\n                    data = readFile(down);\\n                    eval('data =' + data)\\n                    data.Tencent.splice(0, 1)\\n                    saveFile(down, JSON.stringify(data), 0);\\n                    clearMyVar('注销')\\n                    refreshPage()\\n                    return empty\\n                }, empty),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n        TencentUrl = 'http://c.y.qq.com/rsc/fcgi-bin/fcg_user_created_diss?hostuin=' + getLogin.Tencent[0] + '&size=1000&format=json'\\n        TencentMap = TencentConfig(TencentUrl)\\n        SelectMap = ['歌单分享', '查看内容']\\n        storage0.putMyVar('SelectMap', SelectMap)\\n        try {\\n            TencentMap = TencentMap.data.disslist\\n            TencentMap = TencentMap.filter(item => item.tid != 0)\\n            if (TencentMap.length > 0) {\\n                TencentMap.forEach(item => {\\n                    layout.push({\\n                        title: item.diss_name,\\n                        img: item.diss_cover,\\n                        url: $(empty + '#noLoading#').lazyRule((MusicMap, SelectMap, mid, name) => {\\n                            require('hiker://page/Config.view')\\n                            return getMySelectMap(MusicMap, SelectMap, mid, name, input)\\n                        }, MusicMap, SelectMap, item.tid, item.diss_name),\\n                        col_type: 'card_pic_3'\\n                    })\\n                })\\n            } else {\\n                layout.push({\\n                    title: Rich(Small(Gray('～～～啥也没有留下～～～'))),\\n                    url: empty,\\n                    col_type: 'text_center_1',\\n                    extra: {\\n                        lineVisible: false\\n                    }\\n                })\\n            }\\n        } catch (e) {\\n            layout.push({\\n                title: Rich(Small(Gray('～～～' + TencentMap.message + '～～～'))),\\n                url: empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n    }\\n}\\n\\nconst NetEaseParse = (layout, data) => {\\n    if (data.length != 0) {\\n        data.forEach(item => {\\n            singer = item.ar.map(tag => tag.name).join('、')\\n            layout.push({\\n                title: item.name,\\n                desc: singer,\\n                img: item.al.picUrl,\\n                url: $(empty).lazyRule((mid) => {\\n                    require('hiker://page/Config.view')\\n                    return getNetEasePlayer(mid)\\n                }, item.id),\\n                col_type: getItem('getColTypes', 'card_pic_3'),\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            })\\n        })\\n    } else {\\n        layout.push({\\n            title: Rich(Small(Gray('～～～啥也没有留下～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst TencentParse = (layout, data) => {\\n    if (data.length != 0) {\\n        data.forEach(item => {\\n            subtitle = ''\\n            if (item.subtitle) {\\n                subtitle = item.subtitle + '-'\\n            }\\n            singer = item.singer.map(tag => tag.name).join('、')\\n            layout.push({\\n                title: item.title,\\n                desc: subtitle + singer,\\n                img: 'https://y.gtimg.cn/music/photo_new/T002R300x300M000' + item.album.mid + '.jpg',\\n                url: $(empty).lazyRule((mid) => {\\n                    require('hiker://page/Config.view')\\n                    return getTencentPlayer(mid)\\n                }, item.mid),\\n                col_type: getItem('getColTypes', 'card_pic_3'),\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            })\\n        })\\n    } else {\\n        layout.push({\\n            title: Rich(Small(Gray('～～～啥也没有留下～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst KwmusiccarParse = (layout, data) => {\\n    if (data.length != 0) {\\n        data.forEach(item => {\\n            subtitle = ''\\n            if (item.artist_name) {\\n                subtitle = item.artist_name + '-'\\n            }\\n            singer = ''\\n            if (item.album_name) {\\n                singer = item.album_name\\n            }\\n            layout.push({\\n                title: item.name,\\n                desc: subtitle + singer,\\n                img: item.pic,\\n                url: $(empty).lazyRule((mid) => {\\n                    require('hiker://page/Config.view')\\n                    return getKwmusiccarPlayer(mid)\\n                }, item.id),\\n                col_type: getItem('getColTypes', 'card_pic_3'),\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            })\\n        })\\n    } else {\\n        layout.push({\\n            title: Rich(Small(Gray('～～～到底了哦～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst KugouParse = (layout, data) => {\\n    if (data.length != 0) {\\n        KugouMusic = []\\n        data.forEach(item => {\\n            KugouMusic.push({\\n                url: 'http://www.kugou.com/yy/index.php?r=play/getdata&hash=' + item.hash + '&album_id=' + item.album_id,\\n                options: {\\n                    headers: {\\n                        'Cookie': 'kg_mid=1'\\n                    }\\n                }\\n            })\\n        })\\n        KugouMap = bf(KugouMusic)\\n        KugouMap.forEach(item => {\\n            data = JSON.parse(item).data\\n            play_url = 'toast://暂无资源！！'\\n            if (data.play_url) {\\n                play_url = JSON.stringify({\\n                    urls: [data.play_url],\\n                    lyric: data.lyrics\\n                })\\n            }\\n            layout.push({\\n                title: data.audio_name,\\n                img: data.img,\\n                url: play_url,\\n                col_type: getItem('getColTypes', 'card_pic_3'),\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            })\\n        })\\n    } else {\\n        layout.push({\\n            title: Rich(Small(Gray('～～～到底了哦～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst MiguParse = (layout, data) => {\\n    function fillHost(url) {\\n        if (!/^(https?)/.test(url)) {\\n            return \\\"http://d.musicapp.migu.cn/\\\" + url;\\n        } else {\\n            return url;\\n        }\\n    }\\n    if (data.length != 0) {\\n        data.forEach(item => {\\n            subtitle = ''\\n            if (item.album) {\\n                subtitle = item.album + '-'\\n            }\\n            singer = item.singerList.map(tag => tag.name).join('、')\\n            layout.push({\\n                title: item.songName,\\n                desc: subtitle + singer,\\n                img: fillHost(item.img1),\\n                url: $(empty).lazyRule((item) => {\\n                    require('hiker://page/Config.view')\\n                    return getMiguPlayer(item)\\n                }, item),\\n                col_type: getItem('getColTypes', 'card_pic_3'),\\n                extra: {\\n                    inheritTitle: false\\n                }\\n            })\\n        })\\n    } else {\\n        layout.push({\\n            title: Rich(Small(Gray('～～～到底了哦～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst getNetEasePlayer = (mid) => {\\n    musicUrl = '/api/song/enhance/player/url?br=320000&ids=[' + mid + ']'\\n    musicMap = NetEaseConfig(musicUrl, '', 'GET')\\n    lysicUrl = '/api/song/lyric?os=osx&id=' + mid + '&lv=-1&kv=-1&tv=-1'\\n    lysicMap = NetEaseConfig(lysicUrl, '', 'GET')\\n    if (musicMap.data[0].url) {\\n        return JSON.stringify({\\n            urls: [musicMap.data[0].url],\\n            lyric: lysicMap.lrc.lyric\\n        })\\n    }\\n    return 'toast://暂无资源可播！！'\\n}\\n\\nconst getTencentPlayer = (mid) => {\\n    try {\\n        nameMap = ['标准', '高清', 'HD高清', '无损']\\n        musicMap = ['size_128mp3', 'size_192aac', 'size_320mp3', 'size_flac']\\n        musics = []\\n        i = musicMap.length\\n        while (i--) {\\n            body = 'https://api.dog886.com/v1/qq/getQQSong?id=' + mid + '&code=' + musicMap[i]\\n            music = JSON.parse(request(body)).data.url\\n            if (music.search('guid') >= 1) {\\n                musics.push(music)\\n            } else {\\n                nameMap.splice(i, 1)\\n            }\\n        }\\n        names = []\\n        x = nameMap.length\\n        while (x--) {\\n            names.push(nameMap[x])\\n        }\\n        body = 'https://api.dog886.com/v1/qq/getQQLyric?id=' + mid\\n        lysic = JSON.parse(request(body)).data\\n        if (musics.length) {\\n            return JSON.stringify({\\n                urls: musics,\\n                names: names,\\n                lyric: lysic\\n            })\\n        }\\n        return 'toast://暂无资源可播！！'\\n    } catch (e) {\\n        return 'toast://糟糕崩溃了！！请等待治愈....'\\n    }\\n}\\n\\nconst getKwmusiccarPlayer = (mid) => {\\n    let lyric = KwmusiccarConfig('/info/' + mid).lrc\\n    const getTime = (time) => {\\n        let h = parseInt(time / 60 / 60 % 24)\\n        h = h < 10 ? '0' + h : h\\n        let m = parseInt(time / 60 % 60)\\n        m = m < 10 ? '0' + m : m\\n        let s = parseInt(time % 60)\\n        s = s < 10 ? '0' + s : s\\n        return [m + ':' + s + '.00']\\n    }\\n    let api = 'http://antiserver.kuwo.cn/anti.s?type=convert_url3&format=mp3&response=url&rid='\\n    names = ['320k', '192k', '128k']\\n    let urls = []\\n    names.forEach(item => {\\n        urls.push({\\n            url: api + mid + '&br=' + item + 'mp3'\\n        })\\n    })\\n    urls = bf(urls).map(data => JSON.parse(data).url)\\n    lyric = lyric.map(i => '[' + getTime(i.time) + ']' + i.lineLyric).join('\\\\r\\\\n')\\n    return JSON.stringify({\\n        urls: urls,\\n        names: names,\\n        lyric: lyric\\n    })\\n}\\n\\nconst getMiguPlayer = (item) => {\\n    let MusicUrl = 'https://app.c.nf.migu.cn/MIGUM2.0/v1.0/content/sub/listenSong.do?toneFlag=formatType=HQ&netType=00&userId=15548614588710179085069&ua=Android_migu&version=5.1&copyrightId=0&contentId=' + item.contentId + '&resourceType=2&channel=0'\\n    let MiguMusic = JSON.parse(request(MusicUrl, {\\n        onlyHeaders: true\\n    })).url\\n    let lyricUrl = 'http://music.migu.cn/v3/api/music/audioPlayer/getLyric?copyrightId=' + item.copyrightId\\n    let MiguLyric = MiguConfig(lyricUrl)\\n    if (MiguMusic.search('Key') >= 1) {\\n        return JSON.stringify({\\n            urls: [MiguMusic],\\n            lyric: MiguLyric.lyric\\n        })\\n    }\\n    return 'toast://暂无资源可播！！'\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"亚色天堂","author":"Timik","version":0,"type":"other","url":"http://91porm.i18nobs.xyz/video/fyclass?page=fypage","col_type":"movie_2","class_name":"国产&日韩&欧美&二次元&论理","class_url":"1&2&3&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res = {};\r\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), 'body&&.colVideoList');\r\nfor (var j = 0; j < list.length; j++) {\r\n\tif (list[j]) {\r\n\t\tvar url = parseDom(list[j], '.title&&href');\r\n\t\td.push({\r\n\t\t\ttitle: parseDomForHtml(list[j], '.title&&title'),\r\n\t\t\tpic_url: parseDomForHtml(list[j], 'img&&data-original'),\r\n\t  // desc: parseDomForHtml(list[j], '.layer-b&&Text'),\r\n\t\t\turl: parseDomForHtml(list[j],'.title&&href')+'@lazyRule=body&&#player-container&&data-src',\ncol_type: 'movie_2'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑧课外","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"异星软件","author":"香雅情","version":0,"type":"other","url":"http://www.yxssp.com/fyclass/page/fypage","col_type":"movie_1","class_name":"Android&Windows","class_url":"os/android&os/windows","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".td-ss-main-content&&.td_module_wrap;h3&&Text;img&&src;.td-module-meta-info&&Text;a&&href","searchFind":".td-ss-main-content&&.td_module_wrap;h3&&Text;a&&href;;.td-module-meta-info&&Text;img&&src","search_url":"http://www.yxssp.com/page/fypage?s=**","titleColor":"","group":"⑧资源","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"title":"开眼·发现","version":0,"url":"http://baobab.kaiyanapp.com/api/v1/tag/videos?start=fypage@-1@*10@&num=10&strategy=date&id=fyclass","col_type":"pic_1","class_name":"广告&剧情&运动&创意&旅行&记录&音乐&影视&科技&开胃&游戏&搞笑&时尚&综艺&生活&","class_url":"16&12&1022&2&1019&24&1018&1025&1024&1020&30&140&26&28&666&","area_name":"","area_url":"","year_name":"","year_url":"","find_rule":"js:var s=getResCode();var json={};eval('json='+s);var res={};var d=[];for(var i=0;i<json.itemList.length;i++){var j = json.itemList[i]; var r = {};\nif(j.data.content){\nr.pic_url=j.data.content.data.cover.feed;r.title = j.data.content.data.title;r.url=j.data.content.data.playUrl;d.push(r);}}res.data = d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯"},{"title":"新车评","author":"O_O","version":0,"url":"https://www.xincheping.com/video/type/fyAll/pfypage.html","col_type":"movie_2","class_name":"新车抢鲜评&最强对比&新车评let's购","class_url":"998&1024&1011","area_name":"新车大真探&购车我帮你&社论&原来是这样","area_url":"1027&1022&1033&1015","sort_name":"","year_name":"特别策划&新电报&趣拍TIME&自驾游记&往期视频","sort_url":"","year_url":"999&1034&1032&1025&1013","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\r\nvar list = parseDom(html, '.v_llbox&&Html').match(/<li[\\s\\S]*?<\\/li/g);\r\nfor (var j = 0; j < list.length; j++) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], 'span&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&src'),\r\n       url: parseDom(list[j],'a&&href'),\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);\r\n","searchFind":"","search_url":"https://www.xincheping.com/search-v2/video.do?query=**","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"firstHeader":"class","title":"简书美食","author":"","version":0,"url":"https://www.jianshu.com/asimov/collections/slug/qqfxgN/public_notes?page=fypage&count=10&order_by=added_at","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res={};var d=[];html=getResCode();var json=JSON.parse(html);json.map(data=>d.push({title:data.object.data.title,pic_url:data.object.data.list_image_url,col_type:\"\",url:\"https://www.jianshu.com/asimov/p/\"+data.object.data.slug+`@rule=js:var res={};var d=[];html=getResCode();var json=JSON.parse(html).free_content.replace(/data-original-src=\"(.*?)\"/g,'src=\"https:$1?imageMogr2/auto-orient/strip%7CimageView2/2/w/700/format/webp');d.push({title:json,col_type:'rich_text'});res.data=d;setHomeResult(res);`,}));\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"rich_text","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"firstHeader":"class","title":"美食杰","author":"道阻且右","version":0,"url":"https://m.meishij.net/fyAll/pfypage/","col_type":"movie_2","class_name":"早餐&午餐&下午茶&晚餐&夜宵&饭类&烩饭&炒饭&焖饭&面包&方便面&焖面&拌面&饼类&包子&饺子&馄饨&粥类","class_url":"fenlei/zaocan&fenlei/wucan&fenlei/xiawucha&fenlei/wancan&fenlei/yexiao&fenlei/fan&fenlei/huifan&fenlei/chaofan&fenlei/menfan&fenlei/mian&fenlei/fangbianmian&fenlei/menmian&fenlei/banmian&fenlei/bing&fenlei/baozi&fenlei/jiaozi&fenlei/hundun&fenlei/zhou","area_name":"快手菜&下饭菜&应季时蔬&素食&肉食&汤类&家常菜&热菜&凉菜&素菜&靓汤&粥品&主食&点心&卤味&微波炉&海鲜&火锅&酱料蘸料&干果零食&饮品&孕妇&产妇&宝宝&老人&美容&瘦身","area_url":"fenlei/kuaishoucai&fenlei/xiafancai&fenlei/yingjishishu&fenlei/sushi&fenlei/roushi&fenlei/tang&fenlei/jiachangcai&fenlei/recai&fenlei/liangcai&fenlei/sucai&fenlei/liangtang&fenlei/zhoupin&fenlei/zhushi&fenlei/dianxin&fenlei/luwei&fenlei/weibolu&fenlei/haixian&fenlei/huoguo&fenlei/jiangliaozhanliao&fenlei/ganguolingshi&fenlei/yinpin&fenlei/yunfu&fenlei/chanfu&fenlei/youer&fenlei/laoren&fenlei/meirong&fenlei/jianfei","sort_name":"北京小吃&天津小吃&河北小吃&山西小吃&蒙古小吃&上海小吃&山东小吃&江苏小吃&浙江小吃&安徽小吃&吉林小吃&辽宁小吃&陕西小吃&新疆小吃&宁夏小吃&甘肃小吃&青海小吃&湖北小吃&湖南小吃&河南小吃&江西小吃&重庆小吃&四川小吃&云南小吃&贵州小吃&西藏小吃&广东小吃&福建小吃&广西小吃&海南小吃&香港小吃&台湾小吃&成都小吃&特色小吃&黑龙江小吃","year_name":"川菜&鲁菜&粤菜&湘菜&闽菜&浙菜&苏菜&徽菜&京菜&沪菜&豫菜&湖北菜&东北菜&西北菜&云贵菜&清真菜&山西菜&江西菜&广西菜&港台菜&其它菜&云南菜&贵州菜&淮扬菜","sort_url":"xiaochi/beijingxiaochi&xiaochi/tianjinxiaochi&xiaochi/hebeixiaochi&xiaochi/shanxixiaochi&xiaochi/mengguxiaochi&xiaochi/shanghaixiaochi&xiaochi/shandongxiaochi&xiaochi/jiangsuxiaochi&xiaochi/zhejiangxiaochi&xiaochi/anhuixiaochi&xiaochi/jilinxiaochi&xiaochi/liaoningxiaochi&xiaochi/shanxixiaochi1&xiaochi/xinjiangxiaochi&xiaochi/ningxiaxiaochi&xiaochi/gansuxaiochi&xiaochi/qinghaixiaochi&xiaochi/hubeixiaochi&xiaochi/hunanxiaochi&xiaochi/henanxiaochi&xiaochi/jiangxixiaochi&xiaochi/chongqingxiaochi&xiaochi/sichuanxiaochi&xiaochi/yunnanxiaochi&xiaochi/guizhouxiaochi&xiaochi/xizangxiaochi&xiaochi/guangdongxiaochi&xiaochi/fujianxiaochi&xiaochi/guangxixiaochi&xiaochi/hainanxiaochi&xiaochi/xianggangxiaochi&xiaochi/taiwanxiaochi&xiaochi/chengduxiaochi&xiaochi/tesexiaochi&xiaochi/heilongjiangxiaochi","year_url":"caixi/chuancai&caixi/lucai&caixi/yuecai&caixi/xiangcai&caixi/mincai&caixi/zhecai&caixi/sucai1&caixi/huicai&caixi/jingcai&caixi/hucai&caixi/yucai&caixi/hubeicai&caixi/dongbeicai&caixi/xibeicai&caixi/yunguicai&caixi/qingzhencai&caixi/shanxicai&caixi/jiangxicai&caixi/guangxicai&caixi/gangtaicai&caixi/qitacai&caixi/yunnancai&caixi/guizhoucai&caixi/huaiyangcai","find_rule":"body&&.con_data_s2_list&&li:not([class=\"ad\"]);img&&alt;img&&src;;a&&href","searchFind":"body&&.wap2017_cplist_ul&&li:not(.p0_15);h3&&Text;a&&href;;.des&&Text;img&&src","search_url":"https://m.meishij.net/search.php?q=**&page=fypage","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"js:var res = {};var d = [];\n\n//开关  开启：1    关闭：0\nvar Config_preview = 1;//视频教程\nvar Config_desc = 0;//美食简介\nvar Config_raw_material = 1;//原料辅料\nvar Config_step = 1;//图文教程\nvar Config_pics = 1;//图文教程图片\n\nif(Config_preview){\nvar video_conts = parseDomForHtml(getResCode(), 'body&&Html').match(/<video id=\\\"artical_video[\\s\\S]*?<\\/video>/g);\nvar des_title = '做法:'+parseDom(getResCode(), 'body&&.cpargsw&&Text').replace(getUrl()+\"/\",\"\").replace(\" \",\"\\r\\r美食口味:\").replace(\" \",\"\\r\\r需要时间\").replace(\"热量\",\"\").replace(\" \",\"\\n热量:\").replace(\" \",\"\\r\\r难度:\");\nif (video_conts != null){\nvar des_desc=\"点击查看视频教程\";\nvar des_url = parseDom(getResCode(), 'body&&#artical_video&&src');\nvar des_pic = parseDom(getResCode(), 'body&&#artical_video&&poster');\n}else{\nvar des_desc=\"暂无视频教程或未正常加载，点击可查看原网页\";\nvar des_pic = parseDom(getResCode(), 'body&&.headerimg&&src');\nvar des_url = getUrl();\n}\nd.push({title:des_title,desc:des_desc,pic_url:des_pic,url:des_url,col_type: 'pic_1'});\n}\n\nif(Config_desc){\nd.push({title:'美食简介',url:'toast://戳错地方啦',col_type: 'text_center_1'});\nd.push({title:parseDom(getResCode(), 'body&&.cpdes&&Text').replace(getUrl()+\"/\",\"\"),col_type: 'long_text'});\nd.push({col_type: 'line_blank'});\n}\n\nif(Config_raw_material){\nvar mHtml = '<body>' + parseDom(getResCode(), 'body&&.cpc_c3&&Html') + '</body>';\nvar tabs = parseDomForArray(mHtml, 'body&&.c_mtr_t');\nvar conts = parseDomForArray(mHtml, 'body&&.c_mtr_ul');\nfor(var i=0;i<tabs.length;i++){\nd.push({\ntitle:parseDomForHtml(tabs[i],'div&&Text'),url:'hiker://search',\ncol_type: 'text_center_1'});\nvar list=conts[i].match(/<div class=\\\"c_mtr_li[\\s\\S]*?<\\/div>/g);\nfor(var j=0;j<list.length;j++){\nd.push({\ntitle:parseDomForHtml(list[j],'div&&Text'),url:'hiker://search',\ncol_type: 'text_1'});\n  }\n}\nd.push({col_type: 'line_blank'});\n}\n\nif(Config_step){\nd.push({title:'制作步骤',url:'hiker://search',col_type: 'text_center_1'});\nvar shtml='<body>' + parseDom(getResCode(), 'body&&.cpc_c4&&Html') + '</body>';\nvar step = parseDomForArray(shtml,'body&&.stepitem');\nfor(var v in step){\nd.push({title:parseDomForHtml(step[v],'div&&Text').replace(\" \",\"：\"),col_type: 'rich_text'});\n\nif(Config_pics){\nif(step[v].indexOf(\"http\")!=-1){\nvar pic_list=step[v].match(/<img[\\s\\S]*?jpg\\\">/g);\nfor(var w in pic_list){\nd.push({pic_url:parseDomForHtml(pic_list[w],'img&&src'),url:parseDomForHtml(pic_list[w],'img&&src'),col_type: 'pic_1_full'});\n}}}\n\n}}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":""},{"title":"故事会New","author":"","version":0,"url":"http://new-qk.lifves.com/list.php?url=M0QzJWV1c3NpNjIlMTIwMkQzJXJhZXk2MiUyODVlNjY5YmEyMzktOWQ3Yi04NWY0LWUyNjItNzFjM2NkODBEMyVkaUYzJWxpYXRlZEYyJWFnYW1GMiVjcEYyJW1vYy5uYWtpcS5zcGQuZ3N0eGRuakYyJUYyJUEzJXB0dGg=","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(parseDomForHtml(getResCode(),\"body&&script,2&&Html\"));\nlet data=[];\nfor(let i=0;i<data_list.data_list.length;i++){\n    let l=data_list.data_list[i];\n    for(let j=0;j<l.list.length;j++){\n        let item=l.list[j];\n        data.push({\n            title:item.span,\n            url:\"http://new-qk.lifves.com/intro.php?url=\"+item.link,\n            pic_url:item.img\n        });\n    }\n}\nsetResult(data);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"text_1","detail_find_rule":"js:\neval(parseDomForHtml(getResCode(),\"body&&script,2&&Html\").split(\"localStorage\")[0]);\nlet data=[];\nfor(let i=0;i<page_list.length;i++){\n    let item=page_list[i];\n    data.push({\n       title:item.title,\n       url:\"x5://http://new-qk.lifves.com/\"+item.href,\n    });\n}\nsetResult(data);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"title":"推次元","author":"","version":0,"url":"http://t2cy.com/phone/fyclass/index_fypage.html[firstPage=http://t2cy.com/phone/fyclass/]","col_type":"movie_1_vertical_pic","class_name":"正片&写真&Coser&发现&视频&漫展","class_url":"list&daily&coser&seek&video&anime","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list_box||.coser_list||.seek_recommend_list||.swiper-wrapper||.anime_list&&li;h2||.coser_user||h3&&Text;img&&data-loadsrc||src;.tab||.ml10||.discuss||p,2&&Text;.showImg||h3||h2&&a&&href","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar result = [];\nvar title = parseDomForHtml(getResCode(),'.pt40&&Html');\nresult.push({\n\t\t title: title.replace(/\\/d\\//g,'http://t2cy.com/d/'),\n    col_type:'rich_text'\n});\nres.data=result;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":""},{"title":"网易新闻","author":"","version":0,"url":"https://3g.163.com/touch/reconstruct/article/list/BBM54PGAwangning/fypage@-1@*10@-10.html","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res={};var d=[];html=getResCode().substring(9,getResCode().length-1);eval(\"json=\"+html);for (var i = 0; i <json.BBM54PGAwangning.length; i ++) {var j=json.BBM54PGAwangning[i];var title=j.title;pic=j.imgsrc;desc=j.ptime;url=j.url;docid=j.docid;if(url=\" \"){url='https://3g.163.com/news/article/'+docid+'.html';}d.push({title:title,pic_url:pic ,desc:desc , url:url+'@lazyRule=.js:\"javascript:document.write(\\'<meta name=viewport content=width=device-width, initial-scale=1.0><style type=text/css>body{background:#f4f4f4;color:#272a30;font-size:17px;font-family:Microsoft Yahei} a{font-size:14px}</style><style type=text/css>.contentt,video{width:100%}</style><style type=text/css>.contentt img{width: 98% !important}</style><style type=text/css>.contentt p{text-indent:1.4em}</style><article class=contentt>\"+parseDom(fetch(input, {}),\".content&&Html\").replace(/\\'|data-/g, \"\")+\"</article>\\')\"'}); }\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto"},{"title":"玩机大学","author":"","version":0,"url":"https://www.cccitu.com/fyclass/page/fypage","col_type":"movie_1","class_name":"首页&Android&Windows&iOS&Mac&Linux&网站&专题&VPS","class_url":"&android&windows&ios&mac&linux&web&special&vps","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".posts-wrapper&&article;h2&&Text;img&&src;.entry-excerpt&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"鱼塘热榜","author":"小棉袄🌞","version":1,"type":"other","url":"https://api.tophub.fun/v2/GetAllInfoGzip?id=fyAll&page=fypage-1;get;UTF-8;{Referer@https://mo.fish}","col_type":"text_1","class_name":"鱼塘&V2EX&虎扑&天涯&知乎日报&知乎&吾爱破解&什么值得买&微博","class_url":"1065&59&2&6&7&1&125&117&58","area_name":"GitHub&今日头条&IT之家&豆瓣&Segmentfault&36Kr&Bilibili","area_url":"85&150&112&57&60&12&115","sort_name":"","year_name":"虎嗅&掘金&抖音&微信&开发者头条&少数派&AcFun&InfoQ每日&百度热搜&开源中国","sort_url":"","year_url":"8&154&148&11&1034&116&142&1009&83&114","find_rule":"js:var s=getResCode();var json={};eval('json='+s);var res={};var d=[];\n\n// setError(s);\n\nfor(var i=0;i<json.Data.data.length;i++){var j = json.Data.data[i]; var r = {};;r.desc=(j.Desc||j.hotDesc)||(j.type||j.TypeName);r.title = j.Title.replace(']','] ');r.url=j.Url+\"@lazyRule=.js:JSON.parse(fetch(input,{headers:{Referer:\\\"https://mo.fish/\\\"},redirect:false, withHeaders:true})).headers.location[0].replace('bbs.tianya.cn//','bbs.tianya.cn/m/')\";d.push(r);}\n\nres.data = d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://img.printf520.com/dist/static/images/fish-avatar.jpg"},{"title":"杂志&报纸","author":"香雅情","version":2,"url":"http://new-qk.lifves.com/;get;utf-8;{User-Agent@Mobile}","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\n//杂志分类\nvar ztit =[\"读者\",\"意林\",\"花火\",\"知音\",\"文苑\",\"小小说\",\"故事会\",\"故事林\",\"故事家\",\"儿童故事\",\"故事作文\",\"故事大王\",\"百姓故事\",\"传奇故事\",\"古今故事\",\"民间故事\",\"风流一代\",\"飞言情\",\"飞魔幻\",\"飞粉色\",\"桃之夭夭\",\"军事\",\"经济\",\"科学\",\"医疗\",\"语文\",\"数学\",\"英语\",\"科幻\",\"今日文摘\",\"特别文摘\",\"美文\",\"周刊\",\"南风窗\",\"啄木鸟\",\"看天下\"];\n//报纸分类\nvar btit =[\"新民晚报/320700001254\",\"解放日报/320700000440\",\"扬子晚报/320700001264\",\"羊城晚报/320700001265\",\"经济日报/320700000125\",\"信息时报/320700000922\",\"南方都市报/320700001347\"];\n\n//杂志链接前缀\nvar urlo = \"http://new-qk.lifves.com/search.php?keyword=\"\n//报纸链接前缀\nvar urlt = \"http://qk.lifves.com/magazine.php?s=报纸&key=\"\n\nd.push({\ntitle:\"杂志\",\ncol_type: 'text_1'\n});\n\nfor (var a = 0; a<ztit.length; a++){\nd.push({\ntitle: ztit[a],\nurl: urlo+ztit[a],\ncol_type: 'text_3'\n});\n}\nd.push({\ntitle:\"报纸\",\ncol_type: 'text_1'\n});\nfor (var b = 0; b<btit.length; b++){\nd.push({\ntitle: btit[b].split(\"\\/\")[0],\nurl: urlt+btit[b].split(\"\\/\")[1],\ncol_type: 'text_3'\n});\n}\n\nres.data = d; \nsetHomeResult(res);","searchFind":"js:\nvar res ={};\nvar d = [];\nvar html = fetch(getUrl(),{headers:{'User-Agent':'Mobile'}});\nvar jsurl = parseDomForHtml(html,\"body&&script,2&&Html\");\nvar json = JSON.parse(jsurl.split(\"parse\\(\\'\")[1].split(\"\\'\\)\")[0]);\n\nfor (var i = 0; i < json.data_list.length; i++) {\r\n    var r = {};\r\n    var j = json.data_list[i];\r\n    r.title = j.title;\n    r.desc = j.span;\n    r.img = j.img;\n    r.url = \"http://new-qk.lifves.com/\"+j.href;\nd.push(r);\r\n}\n\nres.data=d;\nsetSearchResult(res);","search_url":"http://new-qk.lifves.com/search.php?keyword=**","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1_vertical_pic","detail_find_rule":"js:\nvar res ={};\nvar d = [];\nvar html = getResCode();\r\nvar url = getUrl();\nif (url.indexOf(\"报纸\") != -1){\n//setError(url)\nfor (var i=0;  i<html.split('container').length-1; i++){\r\n        var title = parseDom(getResCode(), 'body&&.layui-container,'+i+'&&a&&b&&Text').replace(getUrl()+\"\\/\",'');\n//setError(title)\r\n        var urlp = parseDom(getResCode(), 'body&&.layui-container,' + i + '&&a&&href').replace(getUrl()+\"\\/\",'');\n        var img = parseDom(html, 'body&&.layui-container,' + i + '&&a&&img&&src');\n//setError(urlp)\n\r\n        d.push({\r\n            title: title,\n            pic_url: img,\r\n            url: \"http://qk.lifves.com/\"+urlp,\r\n        });\r\n    }\r\n}\nelse{\nvar jsurl = parseDom(getResCode(),'body&&script,2&&Html');\n\nvar json = JSON.parse(jsurl.split(\"parse\\(\\'\")[1].split(\"\\'\\)\")[0]);\n\nfor (var i = 0; i < json.data_list.length; i++) {\r\n    var r = {};\r\n    var j = json.data_list[i];\r\n    r.title = j.title;\n    r.pic_url = j.img;\n    r.url = \"x5://http://new-qk.lifves.com/\"+j.href;\nd.push(r);\r\n}\n}\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1_vertical_pic","sdetail_find_rule":"*","ua":"mobile","preRule":""},{"title":"知乎早报","author":"小飞飞","version":0,"url":"https://www.zhihu.com/api/v4/columns/c_1085975047386050560/items?limit=10&offset=fypage@-1@*10@&_t=;get;utf-8;{User-Agent@APP6.0}","col_type":"pic_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res={};var d=[];\n\nvar json = JSON.parse(getResCode());  \n\nfor (var i = 0; i < json.data.length; i ++) {\nvar j=json.data[i];\n\nd.push({title:j.title,pic_url:j.image_url , \nurl:getUrl()+i+`@lazyRule=.js:var i=input.split(\"_t=\")[1];var text=JSON.parse(fetch(input, {})).data[i];text=JSON.stringify(text.content);\"javascript:document.write('<meta name=viewport content=width=device-width, initial-scale=1.0><style type=text/css>body{background:#f4f4f4;color:#272a30;font-size:17px;font-family:Microsoft Yahei} a{font-size:14px}</style><style type=text/css>.contentt img{width: 92% !important;height:auto;}</style><style type=text/css>.contentt p{text-indent:1.4em}  ol{display:none;}</style><script>fy_bridge_app.setWebTitle(\\\\\"知乎早报\\\\\")</script><article class=contentt style=width: 100% !important;word-break:break-all;word-wrap:break-word; >\"+text.replace(/\\'|<a.*?>|^\\\"|\\\"$/gi, \"\")+\"</article>')\"`,\n}); \n}\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"title":"我要自学网","version":0,"url":"https://www.51zxw.net/List.aspx?cid=fyclass;get;UTF-8;{User-Agent@Windows}","col_type":"movie_1","class_name":"电脑办公&平面设计&室内设计&室外设计&影视动画&机械设计&工业自动化&程序设计&网页设计&会计财务","class_url":"3&8&14&390&28&35&471&18&451&351","area_name":"","area_url":"","year_name":"","year_url":"","find_rule":".courses&&a;.name&&Text;img&&src;.info&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯"},{"title":"CSDN","author":"","version":0,"url":"https://www.csdn.net/api/articles?type=more&category=fyclass&shown_offset=0&first_view=false;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； Win64；； x64; rv:66.0) Gecko/20100101 Firefox/66.0&&Host@www.csdn.net}","col_type":"text_1","class_name":"移动开发&架构&前端&云计算/大数据&音视频开发&数据库&程序人生","class_url":"mobile&arch&web&cloud&avi&db&career","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json={}; eval('json=' + getResCode());var res={};var d=[];for(var i=0;i<json.articles.length;i++){var r={};var j=json.articles[i];r.title=j.title;r.pic_url='*';r.desc=j.sub_title+' · '+j.views+'阅读 · '+j.created_at+'\\n\\n'+j.desc;r.url=j.url;d.push(r);}res.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto"},{"title":"虎嗅","author":"小飞飞","version":0,"url":"https://article-api.huxiu.com/web/channel/articleList?platform=www&last_time=2587024558&channel_id=fyclass","col_type":"movie_1","class_name":"娱乐&财经&科技&消费&文化","class_url":"22&115&105&103&113","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var res={};var d=[];var url=getUrl();var json = JSON.parse(fetch(url,{}));for (var i = 0; i < json.data.datalist.length; i ++) {var j=json.data.datalist[i];d.push({title:j.title,desc:j.formatDate,pic_url:j.pic_path,url:j.share_url+`@lazyRule=.js:var Text=parseDom(fetch(input,{}),\".article-content&&Html\" );\"javascript:document.write('<meta name=viewport content=width=device-width, initial-scale=1.0><style type=text/css>body{background:#f4f4f4;color:#272a30;font-size:17px;font-family:Microsoft Yahei} .text-img-note{font-size:12px;text-align:center;}</style><style type=text/css>.contentt img{width: 92% !important;height:auto;display:block;margin:20px auto}</style><style type=text/css>.contentt p{text-indent:1.4em} .share-page-additional ,.neirong-shouquan,.text-remarks{display:none}</style><script>fy_bridge_app.setWebTitle(\\\\\"虎嗅APP\\\\\")</script><article class=contentt>\"+Text.replace(/\\'|<a.*?>|<br>/g, \"\")+\"</article>')\"`})}res.data=d;setHomeResult(res); ","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto"},{"firstHeader":"class","title":"界面新闻","version":0,"url":"https://m.jiemian.com/lists/fyclass_fypage.html","col_type":"movie_1","class_name":"天下&中国&宏观&文娱&体育&时尚&文化&旅行&生活&游戏&歪楼&数据&正午&科技&汽车&地产&证券&金融&消费&工业&交通&投资&营销&职场&管理&创业&出国&楼市&财富&健康&JMedia","class_url":"32&71&174&63&82&68&130&105&135&118&3&154&53&2&65&51&62&112&9&31&28&30&86&49&50&139&141&143&181&410&472","area_name":"","area_url":"","year_name":"","year_url":"","find_rule":"body&&.news-view;h3&&Text;img&&src;.news-footer&&Text;a&&href","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":""},{"last_chapter_rule":"","title":"广州共享课堂X5","author":"","version":0,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\n\nd.push({\n    desc:'auto&&float',\n    url:'https://gzclass.gztv.com/gksubjecmob/index.html#/',\n\t\t col_type: 'x5_webview_single'\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑧资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://ykt.eduyun.cn/r/cms/ykt/default/imgsj0827/logo.png"},{"last_chapter_rule":"","title":"悦读","author":"Joe&&小棉袄🌞","version":17,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/home\")","searchFind":"js:\nvar d = [];\nlet kw = getParam(\"kw\")\nsetResult([{\n    title: \"点击开始聚搜\",\n    url: \"hiker://page/ju?p=fypage&kw=\" + kw\n}])\nsetResult(d);","search_url":"hiker://empty?kw=**","group":"⑧阅读","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"源目录\",\"path\":\"source\",\"rule\":\"js:\\nvar d = [];\\nvar m = MY_PARAMS.rules\\nvar baseurl = m.bookSourceUrl\\nif (m.ruleExplore.bookList) {\\n    var rule = m.ruleExplore\\n} else {\\n    var rule = m.ruleSearch\\n}\\nd.push({\\n    title: \\\"搜索\\\",\\n    desc: \\\"请输入搜索关键词\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"kw\\\", input);\\n        return \\\"hiker://page/search?p=fypage&kw=\\\" + input\\n    }),\\n    col_type: \\\"input\\\",\\n    extra: {\\n        \\\"u\\\": baseurl + m.searchUrl,\\n        \\\"rules\\\": m,\\n        defaultValue: getMyVar(\\\"kw\\\", \\\"\\\"),\\n        bookSourceName: m.bookSourceName\\n    }\\n})\\nif (m.enabledExplore&&m.exploreUrl) {\\n    JSON.parse(m.exploreUrl).forEach(item => {\\n        d.push({\\n            title: item.title,\\n            col_type: item.style.layout_flexBasisPercent == 1 ? \\\"text_center_1\\\" : \\\"text_3\\\",\\n            url: item.url == \\\"\\\" ? \\\"hiker://empty\\\" : \\\"hiker://page/books?p=fypage\\\",\\n            extra: {\\n                \\\"all\\\": m,\\n                \\\"rules\\\": rule,\\n                \\\"u\\\": baseurl + item.url\\n            }\\n        })\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"home\",\"rule\":\"var d = [];\\nif (fileExist(\\\"hiker://files/yuedu/list.json\\\") && JSON.parse(fetch(\\\"hiker://files/yuedu/list.json\\\")).urls.length != 0) {\\n    d.push({\\n        title: \\\"⚙️设置\\\",\\n        url: \\\"hiker://page/config\\\",\\n        col_type: \\\"scroll_button\\\"\\n    });\\n    let data = JSON.parse(fetch(\\\"hiker://files/yuedu/list.json\\\"))\\n    data.urls.forEach(item => {\\n        d.push({\\n            title: item.name,\\n            url: $().lazyRule((i) => {\\n                putMyVar(\\\"tab\\\", i)\\n                refreshPage()\\n                return \\\"toast://切换成功\\\"\\n            }, item.name),\\n            col_type: \\\"scroll_button\\\"\\n        })\\n    })\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            putMyVar(\\\"kw\\\", input);\\n            return \\\"hiker://page/ju?p=fypage&kw=\\\" + input\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"聚合搜索，请输入关键词\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"kw\\\", \\\"\\\")\\n        }\\n    });\\n    let list = JSON.parse(fetch(\\\"hiker://files/yuedu/\\\" + md5(getMyVar(\\\"tab\\\", data.urls[0].name)) + \\\".json\\\"))\\n    list.forEach(item => {\\n        let s = JSON.stringify(item)\\n        if (s.includes(\\\"<js>\\\") || s.includes(\\\"@js:\\\") || s.includes(\\\"$.\\\") || s.includes(\\\"🔞\\\")) {\\n            var url = \\\"toast://当前书源暂不支持\\\"\\n            return\\n        } else {\\n            var url = \\\"hiker://page/source?p=fypage\\\"\\n        }\\n        d.push({\\n            title: item.bookSourceName + `(${item.bookSourceGroup})`,\\n            col_type: \\\"text_2\\\",\\n            url: url,\\n            extra: {\\n                \\\"rules\\\": item\\n            }\\n        })\\n    })\\n} else {\\n    setResult([{\\n        title: \\\"你还没有书哦～～点我进入设置\\\",\\n        url: \\\"hiker://page/config\\\",\\n        col_type: \\\"text_center_1\\\"\\n    }])\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"列表\",\"path\":\"books\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    var m = MY_PARAMS.rules\\n    // 阅读=>视界\\n    var url = MY_PARAMS.u.replace(\\\"{{page}}\\\", MY_PAGE)\\n    var listrule = \\\"body&&\\\" + m.bookList.replace(/\\\\![0-9]/g, \\\"\\\").replace(\\\" \\\", \\\"&&\\\").split(\\\"||\\\")[0]\\n    if (m.author) {\\n        var author = m.author.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n    } else {\\n        var author = false\\n    }\\n    if (m.coverUrl) {\\n        var cover = m.coverUrl.replace(\\\"@\\\", \\\"&&\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n    } else {\\n        var cover = false\\n    }\\n    var name = m.name.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n        return a.replace(\\\".\\\", \\\",\\\")\\n    })\\n    var bookurl = m.bookUrl.replace(\\\"@\\\", \\\"&&\\\").replace(/\\\\.[0-9]/g, function(a) {\\n        return a.replace(\\\".\\\", \\\",\\\")\\n    })\\n    if (m.intro) {\\n        var intro = m.intro.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n    } else {\\n        var intro = false\\n    }\\n    MY_URL = url;\\n    var res = request(url)\\n    let list = pdfa(res, listrule)\\n    if (list.length > 0) {\\n        list.forEach(item => {\\n            d.push({\\n                col_type: (cover ? \\\"movie_1_vertical_pic\\\" : \\\"text_1\\\"),\\n                title: parseDomForHtml(item, name),\\n                img: (cover ? parseDom(item, cover) + \\\"@Referer=\\\" : \\\"hiker://empty\\\"),\\n                url: \\\"hiker://page/menu?url=\\\" + parseDom(item, bookurl) + \\\"#autoCache##immersiveTheme#\\\",\\n                desc: (author ? parseDomForHtml(item, author) : \\\"\\\") + \\\"\\\\n\\\" + (intro ? parseDomForHtml(item, intro) : \\\"\\\"),\\n                extra: {\\n                    \\\"bookName\\\": parseDomForHtml(item, name),\\n                    \\\"cover\\\": (cover ? parseDom(item, cover) + \\\"@Referer=\\\" : \\\"hiker://empty\\\"),\\n                    \\\"Toc\\\": MY_PARAMS.all.ruleToc,\\n                    \\\"content\\\": MY_PARAMS.all.ruleContent\\n                }\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: \\\"列表加载失败：\\\" + listrule,\\n            col_type: \\\"text_center_1\\\",\\n            url: \\\"hiker://empty\\\"\\n        })\\n    }\\n} catch (e) {\\n    d.push({\\n        title: \\\"加载失败：\\\" + e.message,\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\"\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"text_center_1\",\"name\":\"设置\",\"path\":\"config\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    if (!fileExist(\\\"hiker://files/yuedu/list.json\\\")) {\\n        writeFile(\\\"hiker://files/yuedu/list.json\\\", '{\\\"urls\\\":[]}')\\n    }\\n    d.push({\\n        title: \\\"添加订阅\\\",\\n        url: $(\\\"\\\", \\\"订阅名称\\\").input(() => {\\n            return $(\\\"\\\", \\\"订阅链接\\\").input((name) => {\\n                let list = JSON.parse(fetch(\\\"hiker://files/yuedu/list.json\\\"))\\n                list.urls.push({\\n                    name: name,\\n                    url: input\\n                })\\n                writeFile(\\\"hiker://files/yuedu/list.json\\\", JSON.stringify(list))\\n                try {\\n                    var t = fetch(input)\\n                    JSON.parse(t)\\n                    writeFile(\\\"hiker://files/yuedu/\\\" + md5(name) + \\\".json\\\", t)\\n                    return \\\"toast://导入成功\\\"\\n                } catch (e) {\\n                    return \\\"toast://导入失败\\\"\\n                }\\n                refreshPage()\\n            }, input)\\n        })\\n    })\\n    let list = JSON.parse(fetch(\\\"hiker://files/yuedu/list.json\\\"))\\n    list.urls.forEach((item, i) => {\\n        d.push({\\n            title: item.name,\\n            desc: item.url,\\n            url: $([\\\"删除\\\", \\\"编辑名称\\\", \\\"编辑地址\\\", \\\"更新\\\"]).select((lis, i) => {\\n                var list = lis\\n                if (input == \\\"删除\\\") {\\n                    return $(\\\"确认删除？\\\").confirm((list, i) => {\\n                        deleteFile(\\\"hiker://files/yuedu/\\\" + md5(list.urls[i].name) + \\\".json\\\")\\n                        list.urls.splice(i, 1)\\n                        writeFile(\\\"hiker://files/yuedu/list.json\\\", JSON.stringify(list))                        \\n                        refreshPage()\\n                    }, list, i)\\n                } else if (input == \\\"编辑名称\\\") {\\n                    return $(\\\"\\\").input((list, i) => {\\n                        list.urls[i].name = input\\n                        writeFile(\\\"hiker://files/yuedu/list.json\\\", JSON.stringify(list))\\n                        refreshPage()\\n                    }, list, i)\\n                } else if (input == \\\"编辑地址\\\") {\\n                    return $(\\\"\\\").input((list, i) => {\\n                        list.urls[i].url = input\\n                        writeFile(\\\"hiker://files/yuedu/list.json\\\", JSON.stringify(list))\\n                        refreshPage()\\n                    }, list, i)\\n                } else {\\n                    try {\\n                        var t = fetch(list.urls[i].url)\\n                        JSON.parse(t)\\n                        writeFile(\\\"hiker://files/yuedu/\\\" + md5(list.urls[i].name) + \\\".json\\\", t)\\n                        refreshPage()\\n                        toast(\\\"更新成功\\\")\\n                    } catch (e) {\\n                        toast(\\\"更新失败\\\")\\n                    }\\n                }\\n            }, list, i),\\n            col_type: \\\"text_1\\\"\\n        })\\n    })\\n} catch (e) {\\n    d.push({\\n        title: \\\"错误：\\\" + e.message,\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\"\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"text_1\",\"name\":\"目录\",\"path\":\"menu\",\"rule\":\"js:\\nvar d = [];\\nvar res = getResCode()\\nlet Toc = MY_PARAMS.Toc\\nlet {\\n    getArray,\\n    getText,\\n    getUrl0\\n} = $.require(\\\"hiker://page/converter\\\");\\ngetArray(res, Toc.chapterList).forEach(item => {\\n    //log(item);    \\n    var title = getText(item, Toc.chapterName)\\n    if (title != \\\"\\\") {\\n        d.push({\\n            title: title,\\n            url: \\\"hiker://page/content\\\",\\n            extra: {\\n                title: title,\\n                content: MY_PARAMS.content,\\n                url: getUrl0(item, Toc.chapterList, Toc.chapterUrl) + \\\"#autoPage##readTheme#\\\"\\n            }\\n        })\\n    }\\n})\\nvar cp = d.map(function(item) {\\n    return {\\n        \\\"title\\\": item.title,\\n        \\\"url\\\": item.extra.url.replace(\\\"#autoPage##readTheme#\\\", \\\"\\\")\\n    }\\n})\\nd.unshift({\\n    title: \\\"下载\\\",\\n    url: \\\"hiker://page/download.view#noRecordHistory##noRefresh##noHistory#?rule=本地资源管理\\\",\\n    col_type: \\\"text_center_1\\\",\\n    extra: {\\n        chapterList: cp,\\n        defaultView: \\\"1\\\",\\n        info: {\\n            bookName: MY_PARAMS.bookName,\\n            bookTopPic: MY_PARAMS.cover,\\n            ruleName: \\\"悦读\\\",\\n            parseCode: $.toString((MY_PARAMS) => {\\n                var res = request(input);\\n                var rule = MY_PARAMS.content;\\n                let r = rule.content.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n                    return a.replace(\\\".\\\", \\\",\\\")\\n                });\\n                let r1 = r.split(\\\"&&\\\");\\n                let r2 = r1.slice(0, r1.length - 1).join(\\\"&&\\\");\\n                let arr = pdfa(res, \\\"body&&\\\" + r2);\\n                //log(arr);\\n                var tt = \\\"\\\"\\n                for (let it of arr) {\\n                    it = it.replace(new RegExp(\\\"\\\\n\\\", \\\"g\\\"), \\\"--br--\\\");\\n                    //log(it);\\n                    var t = pdfh(it, \\\"Text\\\");\\n                    t = t.replace(new RegExp(\\\"--br--\\\", \\\"g\\\"), \\\"<br>\\\");\\n                    if (t == \\\"\\\") {\\n                        continue\\n                    }\\n                    let t2 = t.split(\\\"<br>\\\");\\n                    for (let it2 of t2) {\\n                        if (it2 == \\\"\\\" || it2.length == 1) {\\n                            continue\\n                        }\\n                        if (!it2.startsWith(\\\"　\\\") && !it2.startsWith(\\\"&nbsp;&nbsp;\\\")) {\\n                            it2 = \\\"&nbsp;&nbsp;&nbsp;&nbsp;\\\" + it2.trim();\\n                        }\\n                        if (rule.replaceRegex) {\\n                            it2 = it2.replace(new RegExp(rule.replaceRegex.replace(\\\"##\\\", \\\"\\\"), \\\"g\\\"), \\\"\\\")\\n                        }\\n                        if (it2 == \\\"\\\") {\\n                            continue\\n                        }\\n                        tt += it2 + \\\"\\\\n\\\"\\n                    }\\n                }\\n                return tt\\n            }, MY_PARAMS),\\n            type: \\\"novel\\\"\\n        }\\n    }\\n})\\nd.unshift({\\n    title: MY_PARAMS.bookName,\\n    img: MY_PARAMS.cover,\\n    url: MY_URL,\\n    col_type: \\\"movie_1_vertical_pic_blur\\\"\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"内容\",\"path\":\"content\",\"rule\":\"js:\\nvar d = [];\\nvar res = getResCode()\\nvar rule = MY_PARAMS.content\\nlet r = rule.content.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n    return a.replace(\\\".\\\", \\\",\\\")\\n});\\nlet r1 = r.split(\\\"&&\\\");\\nlet r2 = r1.slice(0, r1.length - 1).join(\\\"&&\\\");\\nlet arr = pdfa(res, \\\"body&&\\\" + r2);\\n//log(arr);\\nfor (let it of arr) {\\n    it = it.replace(new RegExp(\\\"\\\\n\\\", \\\"g\\\"), \\\"--br--\\\");\\n    //log(it);\\n    var t = pdfh(it, \\\"Text\\\");\\n    t = t.replace(new RegExp(\\\"--br--\\\", \\\"g\\\"), \\\"<br>\\\");\\n    if (t == \\\"\\\") {\\n        continue\\n    }\\n    let t2 = t.split(\\\"<br>\\\");\\n    for (let it2 of t2) {\\n        if (it2 == \\\"\\\" || it2.length == 1) {\\n            continue\\n        }\\n        if (!it2.startsWith(\\\"　\\\") && !it2.startsWith(\\\"&nbsp;&nbsp;\\\")) {\\n            it2 = \\\"&nbsp;&nbsp;&nbsp;&nbsp;\\\" + it2.trim();\\n        }\\n        if (rule.replaceRegex) {\\n            it2 = it2.replace(new RegExp(rule.replaceRegex.replace(\\\"##\\\", \\\"\\\"), \\\"g\\\"), \\\"\\\")\\n        }\\n        if (it2 == \\\"\\\" || it2 == \\\"&nbsp;&nbsp;&nbsp;&nbsp;\\\") {\\n            continue\\n        }\\n        d.push({\\n            title: it2,\\n            url: \\\"\\\",\\n            col_type: \\\"rich_text\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\"\\n        });\\n    }\\n}\\nd.unshift({\\n    title: \\\"<big>\\\" + MY_PARAMS.title + \\\"</big>\\\",\\n    col_type: \\\"rich_text\\\"\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_1_vertical_pic\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\nlet {\\n    search\\n} = $.require(\\\"hiker://page/ss\\\");\\nlet d = [];\\nlet kw = getParam(\\\"kw\\\");\\nlet s = kw;\\nsetPageTitle(\\\"搜索\\\" + kw + \\\" \\\" + MY_PARAMS.bookSourceName);\\nlet matchMust = getItem(\\\"mm\\\", \\\"0\\\");\\nlet tip = \\\"精确匹配：\\\" + (matchMust == \\\"1\\\" ? \\\"是\\\" : \\\"否\\\");\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: tip,\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            setItem(\\\"mm\\\", getItem(\\\"mm\\\", \\\"0\\\") == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n            refreshPage();\\n            return \\\"toast://OK\\\";\\n        }),\\n        col_type: \\\"text_1\\\",\\n    });\\n}\\nlet d2 = search(MY_PARAMS.rules, kw, MY_PAGE);\\nfor (let it of d2) {\\n    if (matchMust == \\\"0\\\" || (it.title && it.title.indexOf(kw) >= 0)) {\\n        it.title = it.title.includes(\\\"““””\\\") ? it.title : \\\"““””\\\" + it.title.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n        d.push(it);\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"转换\",\"path\":\"converter\",\"rule\":\"$.exports = {\\n    getArray: (html, rule) => {\\n        let r1 = rule.split(\\\"!\\\")[0].split(\\\"||\\\");\\n        let arr = pdfa(html, \\\"body&&\\\" + r1[0].replace(\\\" \\\", \\\"&&\\\").replace(\\\"@\\\", \\\"&&\\\"));\\n        if (r1.length > 1) {\\n            let r2 = r1[1].split(\\\":\\\");\\n            let r3 = [];\\n            for (let it of r2) {\\n                try {\\n                    let i = parseInt(it);\\n                    if (isNaN(i)) {\\n                        continue;\\n                    }\\n                    r3.push(i);\\n                } catch (e) {}\\n            }\\n            let arr2 = [];\\n            for (let i = 0; i < arr.length; i++) {\\n                if (r3.indexOf(i) < 0) {\\n                    arr2.push(arr[i]);\\n                }\\n            }\\n            return arr2;\\n        }\\n        log(\\\"获取失败，失败定位：\\\" + r1[0].replace(\\\" \\\", \\\"&&\\\").replace(\\\"@\\\", \\\"&&\\\"))\\n        return arr;\\n    },\\n    getText: (html, rule) => {\\n        var ru = rule.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        }).split(\\\"##\\\")\\n        if (ru.length == 1) {\\n            var r = pdfh(html, ru[0])\\n        } else {\\n            var r = pdfh(html, ru[0]).replace(new RegExp(ru[1], \\\"g\\\"), \\\"\\\")\\n        }\\n        if (r == \\\"\\\") {\\n            log(\\\"返回为空，可能是定位失败：\\\" + rule.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n                return a.replace(\\\".\\\", \\\",\\\")\\n            }).split(\\\"##\\\")[0])\\n        }\\n        return r\\n    },\\n    getUrl0: (html, parentRule, rule) => {\\n        if (parentRule != null) {\\n            parentRule = parentRule.split(\\\"!\\\")[0];\\n        }\\n        let p = parentRule != null && parentRule[parentRule.length - 1] == \\\"a\\\" ? \\\"a&&\\\" : \\\"\\\";\\n        let r = pd(html, p + rule.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\");\\n        }).split(\\\"##\\\")[0].split(\\\"##\\\")[0]);\\n        if (r == \\\"\\\") {\\n            log(\\\"返回为空，可能是定位失败：\\\" + p + rule.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n                return a.replace(\\\".\\\", \\\",\\\");\\n            }).split(\\\"##\\\")[0])\\n        }\\n        return r\\n    }\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"聚搜\",\"path\":\"ju\",\"rule\":\"js:\\nvar d = [];\\nlet {\\n    search,\\n    listRules\\n} = $.require(\\\"hiker://page/ss\\\");\\nlet {\\n    all,\\n    use,\\n    data\\n} = listRules(MY_PAGE);\\ndata = data || [];\\nlet s = getParam(\\\"kw\\\");\\nsetPageTitle(\\\"搜索\\\" + s);\\nlet matchMust = getItem(\\\"mm\\\", \\\"0\\\");\\nlet tip = \\\"搜索源：\\\" + use + \\\"/\\\" + all + \\\"  精确匹配：\\\" + (matchMust == \\\"1\\\" ? \\\"是\\\" : \\\"否\\\");\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: tip,\\n        url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n            setItem(\\\"mm\\\", getItem(\\\"mm\\\", \\\"0\\\") == \\\"0\\\" ? \\\"1\\\" : \\\"0\\\");\\n            refreshPage();\\n            return \\\"toast://OK\\\";\\n        }),\\n        col_type: \\\"text_1\\\",\\n        extra: {\\n            id: \\\"yuedu-s-h\\\"\\n        }\\n    });\\n} else if (data.length > 0) {\\n    updateItem(\\\"yuedu-s-h\\\", {\\n        title: tip\\n    });\\n}\\nlet p = MY_PAGE;\\nlet pageid = \\\"yuedu-page\\\" + MY_PAGE;\\nif (data.length > 0) {\\n    d.push({\\n        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：1/\\\" + data.length,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_center_1\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            id: pageid\\n        }\\n    });\\n}\\nsetResult(d);\\nif (data.length > 0) {\\n    //多线程加载\\n    let tasks = data.map(it => {\\n        return {\\n            func: function(rule) {\\n                return search(rule, s, 1);\\n            },\\n            param: it,\\n            id: \\\"rule@\\\" + it.name\\n        }\\n    });\\n\\n    batchExecute(tasks, {\\n        func: function(param, id, error, result) {\\n            //log(\\\"listener: \\\" + (result || []).length)\\n            param.i = param.i + 1;\\n            if (result) {\\n                try {\\n                    for (let it of result) {\\n                        param.j = param.j + 1;\\n                        if (matchMust == \\\"1\\\") {\\n                            if (!it.title || !it.title.includes(s)) {\\n                                continue;\\n                            }\\n                        }\\n                        let extra = it.extra || {};\\n                        extra.id = \\\"__app\\\" + MY_PAGE + \\\"@\\\" + param.j;\\n                        extra.bookName = it.title\\n                        extra.cover = it.pic_url || it.img\\n                        addItemBefore(pageid, {\\n                            title: it.title.includes(\\\"““””\\\") ? it.title : \\\"““””\\\" + it.title.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\"),\\n                            desc: it.desc,\\n                            url: it.url,\\n                            pic_url: it.pic_url || it.img,\\n                            col_type: it.pic_url || it.img ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                            extra: extra\\n                        })\\n                    }\\n                } catch (e) {}\\n\\n            }\\n            if (param.i >= param.all) {\\n                deleteItem(pageid)\\n            } else {\\n                updateItem({\\n                    title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                    url: \\\"hiker://empty\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    desc: \\\"\\\",\\n                    pic_url: \\\"\\\",\\n                    extra: {\\n                        id: pageid\\n                    }\\n                })\\n            }\\n        },\\n        param: {\\n            all: data.length,\\n            i: 0,\\n            j: -1\\n        }\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索辅助\",\"path\":\"ss\",\"rule\":\"$.exports = {\\n    search: (rule, kw, page) => {\\n        let d = [];\\n        let m = rule.ruleSearch\\n        // 阅读=>视界\\n        let u = rule.bookSourceUrl + rule.searchUrl;\\n        let url = u.replace(\\\"{{page}}\\\", page).replace(\\\"{{key}}\\\", kw)\\n        let listrule = \\\"body&&\\\" + m.bookList.replace(/![0-9]/g, \\\"\\\").replace(\\\" \\\", \\\"&&\\\").split(\\\"||\\\")[0]\\n        let author = m.author.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n        let cover = m.coverUrl.replace(\\\"@\\\", \\\"&&\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n        let name = m.name.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n        let bookurl = m.bookUrl.replace(\\\"@\\\", \\\"&&\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        })\\n        let intro = m.intro.replace(\\\"@\\\", \\\"&&\\\").replace(\\\"text\\\", \\\"Text\\\").replace(/\\\\.[0-9]/g, function(a) {\\n            return a.replace(\\\".\\\", \\\",\\\")\\n        });\\n        //setPageTitle(\\\"搜索\\\" + getParam(\\\"kw\\\") + \\\" \\\" + MY_PARAMS.bookSourceName);\\n        //MY_URL = url;\\n        let res = request(url)\\n        let list = pdfa(res, listrule)\\n        list.forEach(item => {\\n            d.push({\\n                title: parseDomForHtml(item, name),\\n                img: parseDom(item, cover, url),\\n                url: \\\"hiker://page/menu?url=\\\" + parseDom(item, bookurl, url) + \\\"#autoCache##immersiveTheme#\\\",\\n                desc: rule.bookSourceName + \\\"\\\\n\\\" + parseDomForHtml(item, author) + \\\"\\\\n\\\" + parseDomForHtml(item, intro),\\n                extra: {\\n                    \\\"Toc\\\": rule.ruleToc,\\n                    \\\"content\\\": rule.ruleContent,\\n                    \\\"bookName\\\": parseDomForHtml(item, name),\\n                    \\\"cover\\\": parseDom(item, cover, url)\\n                }\\n            })\\n        });\\n        return d;\\n    },\\n    listRules: (page, rule) => {\\n        try {\\n            //并发数量\\n            let size = 20;\\n            let data1 = JSON.parse(fetch(\\\"hiker://files/yuedu/list.json\\\"))\\n            let list = JSON.parse(fetch(\\\"hiker://files/yuedu/\\\" + md5(getMyVar(\\\"tab\\\", data1.urls[0].name)) + \\\".json\\\"))\\n            let rules = [];\\n            list.forEach(item => {\\n                let s = JSON.stringify(item)\\n                if (s.includes(\\\"<js>\\\") || s.includes(\\\"@js:\\\") || s.includes(\\\"$.\\\") || s.includes(\\\"🔞\\\")) {\\n                    return\\n                } else {\\n                    rules.push(item);\\n                }\\n            });\\n            if (!page && !rule) {\\n                return rules.map(it => it.name);\\n            }\\n            if (rule != null) {\\n                return rules.filter(i => i.name == rule);\\n            }\\n            let start = (page - 1) * size;\\n            if (rules.length < start + 1) {\\n                return [];\\n            }\\n            let len = size;\\n            if (rules.length < page * size) {\\n                len = rules.length - start\\n            }\\n            let all = rules.length;\\n            let use = (page - 1) * size + len;\\n            return {\\n                all: all,\\n                use: use,\\n                data: rules.slice(start, start + len)\\n            };\\n        } catch (e) {\\n            return {\\n                all: 0,\\n                use: 0,\\n                data: []\\n            }\\n        }\\n    }\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"YINRSS","author":"","version":0,"type":"read","url":"hiker://empty#fypage","col_type":"icon_round_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst data = [];\nconst apis = $.require('hiker://page/apis');\nconst source = apis.getSource().data;\ndata.push.apply(data, source.map(d => ({\n    img: d.logo,\n    url: 'hiker://page/feed?page=fypage&id=' + d.id,\n    title: d.name,\n    col_type: 'icon_round_4'\n})));\nsetResult(data);","searchFind":"","search_url":"","group":"⑧阅读","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"接口\",\"path\":\"apis\",\"rule\":\"js:\\nconst baseUrl = 'https://api.yinrss.com';\\nconst fetchApi = function (path) {\\n  const res = JSON.parse(fetch(baseUrl + path));\\n  if (res.errno !== 0) {\\n\\ttoast(res.error);\\n  }\\n  return res;\\n}\\n\\nfunction getSource() {\\n  return fetchApi('/source');\\n}\\n\\nfunction getFeed(media, id) {\\n  return fetchApi('/feed?limit=25&id=' + id + '&media=' + media + '&keyword=');\\n}\\n\\nfunction getDetail(id) {\\n  return fetchApi('/detail?id=' + id);\\n}\\n\\n$.exports = {\\n  getSource: getSource,\\n  getFeed: getFeed,\\n  getDetail: getDetail,\\n}\"},{\"col_type\":\"rich_text\",\"name\":\"页面->详情\",\"path\":\"detail\",\"rule\":\"js: require(\\\"https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/moment.js/2.29.1/moment.min.js\\\");\\nrequire(\\\"https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/moment.js/2.29.1/locale/zh-cn.min.js\\\");\\nconst apis = $.require('hiker://page/apis');\\n\\nconst data = [];\\nconst id = getParam(\\\"id\\\", 0);\\nconst read_array = getItem(\\\"read_array\\\", \\\"\\\").split(\\\",\\\");\\nread_array.push(id);\\nsetItem(\\\"read_array\\\", read_array.join(\\\",\\\"));\\nconst detail = apis.getDetail(id).data;\\nconst subtitle =\\n  '<font color=\\\"#9e9e9e\\\">' +\\n  detail.source +\\n  \\\"  \\\" +\\n  moment(detail.date).calendar() +\\n  \\\"</font><br/>\\\";\\ndata.push({\\n  title: \\\"<h1>\\\" + detail.title + \\\"</h1>\\\" + subtitle + detail.content,\\n});\\nsetResult(data);\\n\"},{\"col_type\":\"movie_1\",\"name\":\"页面->列表\",\"path\":\"feed\",\"rule\":\"js: require(\\\"https://lf3-cdn-tos.bytecdntp.com/cdn/expire-1-M/moment.js/2.29.1/moment.min.js\\\");\\nrequire(\\\"https://lf6-cdn-tos.bytecdntp.com/cdn/expire-1-M/moment.js/2.29.1/locale/zh-cn.min.js\\\");\\nconst apis = $.require('hiker://page/apis');\\n\\nconst data = [];\\nconst media = getParam(\\\"id\\\", 0);\\nconst read_array = getItem(\\\"read_array\\\", \\\"\\\").split(\\\",\\\");\\nif (MY_PAGE === 1) clearMyVar(\\\"page_\\\" + media);\\nconst startId = getMyVar(\\\"page_\\\" + media, \\\"\\\");\\nconst feed = apis.getFeed(media, startId).data;\\nfeed.length && putMyVar(\\\"page_\\\" + media, feed[feed.length - 1].id);\\naddListener(\\n  \\\"onRefresh\\\",\\n  $.toString((media) => clearMyVar(\\\"page_\\\" + media), media)\\n);\\naddListener(\\n  \\\"onClose\\\",\\n  $.toString((media) => clearMyVar(\\\"page_\\\" + media), media)\\n);\\ndata.push.apply(\\n  data,\\n  feed.map((d) => {\\n    function getRead() {\\n      return read_array.includes(d.id);\\n    }\\n\\n    function wrap(text) {\\n      return '‘‘’’<font color=\\\"#9e9e9e\\\">' + text + \\\"</font>’’’\\\";\\n    }\\n\\n    const desc = d.source + \\\"·\\\" + moment(d.date).fromNow();\\n\\n    return {\\n      title: getRead() ? wrap(d.title) : d.title,\\n      desc: getRead() ? wrap(desc) : desc,\\n      img: d.img,\\n      url: $('#noLoading#').lazyRule(\\n        (d, desc, wrap) => {\\n          updateItem({\\n            title: wrap(d.title),\\n            desc: wrap(desc),\\n            extra: {\\n              id: d.id,\\n            },\\n          });\\n          return \\\"hiker://page/detail?id=\\\" + d.id;\\n        },\\n        d,\\n        desc,\\n        wrap\\n      ),\\n      col_type: d.img ? 'movie_1' : 'text_1',\\n      extra: {\\n        id: d.id,\\n      },\\n    };\\n  })\\n);\\nsetResult(data);\\n\"}]","icon":"https://yinrss.com/favicon.ico"},{"last_chapter_rule":"","title":"精华书阁","author":"","version":6,"type":"read","url":"https://m.jhssd.com/list/fyAll_fypage.html","col_type":"movie_1_vertical_pic","class_name":"玄幻&修真&都市&穿越&网游&科幻&灵异&女生&其它","class_url":"1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '#list&&ul');\nfor (var i in list) {\n    d.push({\n        title: \"《\" + parseDomForHtml(list[i], '.xsm&&Text') + \"》\" + '\\n' + '' + parseDomForHtml(list[i], '.tjxs&&span,1&&Text') + '\\t\\t' + '状态：' + parseDomForHtml(list[i], '.tjrs&&Text'),\n        desc: parseDomForHtml(list[i], '.tjxs&&span,2&&Text'),\n        img: parseDom(list[i], 'img&&src') + `@Referer=`,\n        url: \"hiker://page/cp\",\n        extra: {\n            url: pd(list[i], 'a&&href')+'index_1.html'\n        }\n    })\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.searchbook');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.bookname&&Text'),\n        desc: parseDomForHtml(list[j], '.author&&Text'),\n        content: parseDomForHtml(list[j], '.update&&Text'),\n        pic_url: parseDom(list[j], 'img&&src'),\n        url: \"hiker://page/cp\",\n        extra: {\n            url: pd(list[j], 'a&&href') + 'index_1.html'\n        }\n    })\n}\nsetResult(d)","search_url":"https://m.jhssd.com/search.html?ie=utf-8&word=**","group":"⑧阅读","detail_col_type":"text_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"目录\",\"path\":\"chapter\",\"rule\":\"let cfg = {\\n    分页列表: \\\".listpage&&select&&option\\\",\\n    分页链接: \\\"option&&value\\\",\\n    分页请求头: {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n    },\\n    一页章节数: 20,\\n    章节列表: \\\"body&&.chapter,1&&li\\\",\\n    章节标题: \\\"a&&Text\\\",\\n    章节链接: \\\"a&&href\\\",\\n    缓存个数: 15\\n}\\n\\n\\nvar code = getResCode()\\nvar caches;\\n\\nfunction getCache() {\\n    let c = readFile(\\\"chapter.json\\\") || \\\"[]\\\";\\n    caches = JSON.parse(c)\\n    let url = getUrl()\\n    log(url)\\n    addListener(\\\"onRefresh\\\", $.toString((url) => {\\n        let c = readFile(\\\"chapter.json\\\") || \\\"[]\\\";\\n        c = JSON.parse(c)\\n        let che = {\\n            url: url,\\n            page: 0,\\n            chapters: []\\n        };\\n        for (let i = 0; i < c.length; i++) {\\n            if (c[i].url == che.url) {\\n                c[i] = che;\\n                log(\\\"clear:\\\" + url)\\n                saveFile(\\\"chapter.json\\\", JSON.stringify(c))\\n                break\\n            }\\n        }\\n    }, url))\\n    for (let it of caches) {\\n        if (it.url == url) {\\n            return it;\\n        }\\n    }\\n    return {\\n        url: url,\\n        page: 0,\\n        chapters: []\\n    }\\n}\\n\\nfunction saveCache(che) {\\n    let c = caches\\n    if (c.length > cfg.缓存个数) {\\n        c.shift()\\n    }\\n    let exist = false\\n    for (let i = 0; i < c.length; i++) {\\n        if (c[i].url == che.url) {\\n            c[i] = che;\\n            exist = true;\\n            break\\n        }\\n    }\\n    if (!exist) {\\n        c.push(che)\\n    }\\n    saveFile(\\\"chapter.json\\\", JSON.stringify(c))\\n}\\n\\nlet cache = getCache();\\n\\nlet mp = pdfa(code, cfg.分页列表)\\nlet page = mp.length;\\nlog(\\\"实际页数：\\\" + page)\\nlog(\\\"缓存页数：\\\" + cache.page)\\nif (page == cache.page) {\\n    //已完结，目录全部缓存了\\n    setResult(cache.chapters)\\n    return\\n}\\n//解析本地没有的缓存\\nlet urls = []\\nlet htmls = []\\n//log(mp)\\nfor (let i = cache.page; i < mp.length; i++) {\\n    if (i == 0) {\\n        htmls.push(code)\\n        continue\\n    }\\n    let it = mp[i];\\n    urls.push({\\n        url: pd(it, cfg.分页链接),\\n        options: {\\n            headers: cfg.分页请求头 || {}\\n        }\\n    })\\n}\\n//log(urls)\\nlet d = [].concat(cache.chapters)\\nhtmls = htmls.concat(batchFetch(urls))\\n//log(htmls)\\nfor (let it of htmls) {\\n    if (it == \\\"\\\") {\\n        break\\n    }\\n    let list = pdfa(it, cfg.章节列表)\\n    let temp = []\\n    for (let ii of list) {\\n        temp.push({\\n            title: pdfh(ii, cfg.章节标题).split(\\\" （\\\")[0].split(\\\"（\\\")[0],\\n            url: pd(ii, cfg.章节链接) + \\\"#autoPage##readTheme#@rule=js:$.require('hiker://page/content')\\\"\\n        });        \\n    }\\n    log(list.length)\\n    if (list.length == cfg.一页章节数) {\\n        //章节齐全的才放本地缓存\\n        cache.page = cache.page + 1\\n        cache.chapters = cache.chapters.concat(temp)\\n    }\\n    d = d.concat(temp)\\n}\\nsaveCache(cache)\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"正文\",\"path\":\"content\",\"rule\":\"var d = [];\\nd.push({\\n    col_type: \\\"rich_text\\\",\\n    title: \\\"<big>\\\" + parseDomForHtml(getResCode(), \\\"h1&&Text\\\") + \\\"</big>\\\",\\n});\\n\\nfunction 净化(c) {\\n    return c.replace(/精华书阁|，最快更新|https:\\\\/\\\\/m\\\\.jhssd\\\\.com|m\\\\.jhssd\\\\.com|最新章节！|最快更新最新章节/g, \\\"\\\")\\n        .split(\\\"<br>\\\")\\n        .filter(i => !i.includes(\\\"<a \\\") && !i.includes(\\\"<center\\\") && !i.includes(\\\"最快更新\\\") && !i.includes(\\\"本章未完\\\") && !i.includes(\\\"免费阅读\\\"))\\n        .join(\\\"<br>\\\")\\n        .replace(/<br>\\\\s*<br>/g, \\\"<br><br>\\\")\\n        .replace(/<br>[\\\\s|<br>]*<br>/g, \\\"<br><br>\\\");\\n}\\n\\nfunction getContent(url, code) {\\n    if (code == null) {\\n        code = request(url)\\n    }\\n    let c = pdfh(code, \\\"#nr1&&Html\\\")\\n    if (c.indexOf(\\\"点击下一页继续阅读\\\") > 0) {\\n        let next = pd(code, \\\".nr_page,1&&.next&&a&&href\\\")\\n        c = 净化(c) + \\\"<br>\\\" + getContent(next, null)\\n    }\\n    return 净化(c);\\n}\\n\\nlet c = getContent(null, getResCode())\\n\\nd.push({\\n    title: c,\\n    col_type: 'rich_text',\\n    extra: {\\n        textSize: 18,\\n        click: true\\n    }\\n});\\nsetResult(d);\"},{\"col_type\":\"text_1\",\"name\":\"目录分页\",\"path\":\"cp\",\"rule\":\"js:\\n$.require(\\\"hiker://page/chapter\\\")\"}]","proxy":"","icon":"https://m.jhssd.com/favicon.ico"},{"last_chapter_rule":"","title":"文学网","author":"","version":6,"type":"other","url":"https://m.gdwxcn.com/fyAllindex_fypage.html[firstPage=https://m.gdwxcn.com/fyAll];get;GBK","col_type":"text_1","class_name":"国学&诗词&古文&历史&典籍&小说&武侠&唐诗&宋词&元曲&汉赋&文化","class_url":"guoxue/&gushici/&gwjs/&lsdj/&dianji/&xiaoshuo/&wuxia/&tangshi/&songci/&yuanqu/&hanfu/&gdwxyj/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar list=parseDomForArray(html,'div.main&&li');\n\nfor(var i in list){\nd.push({\n       title: pdfh(list[i], 'a&&Text'),\r\n       desc: pdfh(list[i], 'p&&Text'),\r\n       img: pd(list[i], ''),\r\n       url: pd(list[i], 'a&&href') + \"#readTheme#\",\n})\n}\nsetResult(d);","searchFind":"","search_url":"","group":"⑧阅读","detail_col_type":"rich_text","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=pdfh(html,'.wztext&&Html')\n\nd.push(\n{\n\t\t\ttitle: tabs,\n\t\t col_type: 'rich_text',\n   extra: {click: true},\n});\n\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://m.gdwxcn.com/skin/default/images/hylogo.gif"},{"last_chapter_rule":"","title":"DJ音乐盒·Q","author":"发粪涂墙","version":0,"type":"other","url":"http://appxml.jyw8.com/fyclass_fyarea_fypage.xml","col_type":"movie_1_vertical_pic","class_name":"串烧&中文&慢摇&英文&交谊舞","class_url":"XCQS&ZWWQ&MHWQ&YWWQ&jiaoYi","area_name":"最新&原创&推荐&人气&热门&下载&精品&独家","area_url":"newUP&YC&TJ&PH&down&ding&JP&DuJia","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar fftq ='';\nif(getVar('bfq')=='0'){\nd.push({\n   desc: '60&&float',\n   url:getVar('fftq'),\n\t\tcol_type: 'x5_webview_single'\n});\nputVar('fftq','');\n}\nd.push({col_type:\"rich_text\",title:`<small>当前模式为：<a href=\"hiker://empty@lazyRule=.js:putVar('bfq',getVar('bfq')=='1'?'0':'1');refreshPage();if(getVar('bfq')=='1'){refreshX5WebView('')}'toast://已切换模式';\">`+(getVar('bfq')=='1'?\"默认播放器\":\"X5播放器\")+\"</a></small>\"});\nd.push({col_type:'blank_block'});\ntry{\nvar list = parseDomForArray(getResCode(), 'plants&&PLANT');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'NAME&&Text'),\r\n       desc: '🕒'+parseDomForHtml(list[j], 'TIME&&Text')+'\\t\\t🎧'+parseDomForHtml(list[j], 'tingCount&&Text')+'\\t\\t'+parseDomForHtml(list[j], 'FILESIZE&&Text'),\r\n       pic_url: 'http://img.djyule.com/Pic120/'+ parseDomForHtml(list[j], 'HYhomeID&&Text')+'.jpg',\r\n       url: parseDomForHtml(list[j], 'PLAYURL&&Text')+`@lazyRule=.js:var url = 'http://pc64-20.jyw8.com/'+input;if(getVar('bfq')=='0'){putVar('fftq',url);refreshPage();'toast://切换选集成功！'}else{url}`\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'plants&&PLANT');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'NAME&&Text'),\r\n       desc: '🕒'+parseDomForHtml(list[j], 'TIME&&Text')+'\\t\\t🎧'+parseDomForHtml(list[j], 'tingCount&&Text')+'\\t\\t'+parseDomForHtml(list[j], 'FILESIZE&&Text'),\r\n       pic_url: 'http://img.djyule.com/Pic120/'+ parseDomForHtml(list[j], 'HYhomeID&&Text')+'.jpg',\r\n       url: 'http://pc64-20.jyw8.com/' + parseDomForHtml(list[j],'PLAYURL&&Text')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"http://appso.djyule.com/search.asp?keyName=**&upHY=&page=fypage","titleColor":"#fff20c00","group":"⑧音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"if(!getVar('bfq')){putVar('bfq','1');}","pages":"[]","proxy":"","icon":"http://sj.djyule.com/img/logo.png"},{"last_chapter_rule":"","title":"腾讯MV·Q","author":"发粪涂墙","version":0,"type":"music","url":"https://u.y.q%71.com/cgi-bin/musicu.fcg?JsonBody={\"req_1\":{\"module\":\"MvService.MvInfoProServer\",\"method\":\"GetAllocMvInfo\",\"param\":{\"order\":fyyear,\"start\":fypage@-1@*20@,\"size\":20,\"version_id\":fyarea,\"area_id\":fyclass}}};post","col_type":"movie_2","class_name":"全部&内地&港台&欧美&韩国&日本","class_url":"15&16&17&18&19&20","area_name":"全部&MV&现场&翻唱&舞蹈&影视&综艺&儿童","area_url":"7&8&9&10&11&12&13&14","sort_name":"","year_name":"最新&最热","sort_url":"","year_url":"1&0","find_rule":"js:\nvar d = [];\nJSON.parse(getResCode()).req_1.data.list.map(list =>\n    d.push({\n        title: list.title,\n        pic_url: list.picurl,\n        url: $('https://u.y.q%71.com/cgi-bin/musicu.fcg?JsonBody={\"mvUrl\":{\"module\":\"music.stream.MvUrlProxy\",\"method\":\"GetMvUrls\",\"param\":{\"vids\":[\"' + list.vid + '\"],\"request_type\":10003,\"addrtype\":3,\"format\":264}}};post', 'Html').b64().lazyRule((id) => {\n            return JSON.parse(pdfh(input, 'body&&Html')).mvUrl.data[id].mp4[3].freeflow_url[0]\n        }, list.vid),\n    })\n)\n\nsetResult(d);","searchFind":"","search_url":"","group":"⑧音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://y.qq.com/mediastyle/mod/mobile/img/logo.svg"},{"last_chapter_rule":"","title":"广播迷🎧","author":"子丑寅卯","version":2,"type":"music","url":"http://www.guangbomi.com/live/;get;gbk","col_type":"flex_button","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar conts = parseDomForArray(html, 'body&&.ax-filter&&.ax-item:not(:contains(其他)):not(:contains(类型))');\n\nfor (var i in conts) {\nvar list = parseDomForArray(conts[i], 'body&&.ax-text&&a');\n\nd.push({\n title:'““'+parseDomForHtml(conts[i], '.ax-head&&Text')+'””',\n  col_type: 'text_center_1'\n     });\n\nfor (var j in list) {\n    d.push({\n    title: parseDomForHtml(list[j], 'a&&Text'),\n    url: parseDom(list[j], 'a&&href')+'fypage.html[firstPage='+parseDom(list[j], 'a&&href')+';get;gbk]',\n    col_type: 'flex_button'\n           });\n         }\n      \n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), 'body&&.ax-item-block');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: '▶️'+parseDomForHtml(list[j], 'a&&Text'),           \n  url:  parseDom(list[j], 'a&&href') ,\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://www.guangbomi.com/index.php?m=search&c=index&a=init&siteid=1&typeid=54&q=**&page=fypage[firstPage=http://www.guangbomi.com/index.php?m=search&c=index&a=init&siteid=1&typeid=54&q=**;get;gbk]","group":"⑧音乐","detail_col_type":"text_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.ax-grid-inner&&li');\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8|_mp4|obj|download|\\.flv|ggkk/)){\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n});\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: '▶️'+parseDomForHtml(list[j], 'a&&title'),           \n  url: \"x5Rule://\" + parseDom(list[j], 'a&&href') + '@' + _x5,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.mp4','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\n    d.push({       \n             title:'立即播放',\n               url: $(MY_URL).lazyRule(()=>{\n                    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nreturn lazyParse(input,5000);\n                       }),\n          col_type:'text_center_1'\n    });\n\nres.data  =  d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","icon":"http://gbmi.okzz.cn/logo.png"},{"last_chapter_rule":"","title":"听音","author":"子丑寅卯","version":6,"url":"https://api.cntv.cn/newVideoset/getVideoAlbumListByPageIdTvty?serviceId=tvty&id=fyAll&p=fypage@&n=10&cb=cblist3","col_type":"movie_1_vertical_pic","class_name":"评书&悬疑&健康&警事","class_url":"PAGEfi6eQ0LXRP0F2MruYmat200828&PAGEdfca6fcG7STLxSjeBCmU201125&PAGEnUBwfxDuaWyigDcVbjvr200828&PAGEamuxeyNI770HqgG67FJc201125","area_name":"历史&文化&电视剧","area_url":"PAGEZEFdcHJXJL3hm8LIMyIT200828&PAGE75jPoBBgP47n5MSGzQsg201125&PAGEucQhBjWzSNBxC93UoCAt201126","sort_name":"","year_name":"解案&青少&戏曲","sort_url":"","year_url":"PAGESsDhkmHn8iz07VCAqiFS200828&PAGE9vqXqD5Hp4SvD4R9otsp210111&PAGEdDkUJqtxc6TS2KEhOiGN201125","find_rule":"js:\r\n\r\nvar d=[];\ntry{\nlet json=JSON.parse(getResCode().match(/\\((.*?)\\)/)[1]).data.list;\n\n\nfor(i in json){\n    d.push({\n       pic_url:json[i].image2,\n        title:json[i].title,\n       desc:'‘‘'+json[i].brief+'’’',\nurl:'https://api.cntv.cn/NewVideo/getVideoListByAlbumIdNew?id='+json[i].id+'&serviceId=tvty&pub=2&mode=2&p=fypage&n=100&sort=asc&cb=Callback1&cb=Callback1'\n    });\n}\n}catch(e){}\nsetResult(d);","searchFind":"","search_url":"","group":"⑧音乐","detail_col_type":"avatar","detail_find_rule":"js:\r\nvar d=[];\n\nvar _x5 = $.toString(() => {\n    //fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].indexOf(\"gokey\")==-1&&urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)){\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isMusic=true#'\n        }\n    }\n});\n\n\nlet json=JSON.parse(getResCode().match(/Callback.*\\((.*?)\\)/)[1]).data.list;\n\nfor(i in json){\n    d.push({\n       pic_url:json[i].image,\n        title:json[i].title,\n       url: 'x5Rule://' + json[i].url + '@' + _x5,\n\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic.51yuansu.com%2Fpic2%2Fcover%2F00%2F34%2F22%2F5811543e32414_610.jpg&refer=http%3A%2F%2Fpic.51yuansu.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638591623&t=18fa239c7aa8ed336e2dca27d76cfaa4"},{"last_chapter_rule":"","title":"HiFi阁","author":"子丑寅卯","version":3,"url":"https://www.hifige.com/album/page/fypage?fyAll","col_type":"movie_1_vertical_pic","class_name":"区域:内地&港台&欧美&日韩&其它","class_url":"quyu=neidi&quyu=gangtai&quyu=oumei&quyu=rihan&quyu=qita","area_name":"流行&车载&古典&草原&民乐","area_url":"leixing=liuxing&leixing=chezai&leixing=gudian&leixing=caoyuan&leixing=minge","sort_name":"原声碟&乐器纯音&轻音乐&演唱会&合集","year_name":"经典&3D音效&舞曲摇滚&试音碟","sort_url":"leixing=yuansheng&leixing=yueqi&leixing=qingyinyue&leixing=yanchanghui&leixing=heji","year_url":"leixing=jingdian&leixing=3d&leixing=dj&leixing=shiyindie","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#main&&.pos-r');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),       \r\ndesc: parseDomForHtml(list[j], '.album-meta&&Text'),       \r\npic_url: parseDom(list[j], 'div&&Html').match(/url\\('(.*?)'/)[1],       \r\nurl: parseDom(list[j],'a&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#main&&.pos-r');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),       \r\ndesc: parseDomForHtml(list[j], '.album-meta&&Text'),       \r\npic_url: parseDom(list[j], 'div&&Html').match(/url\\('(.*?)'/)[1],       \r\nurl: parseDom(list[j],'a&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.hifige.com/page/fypage?s=**&post_type=album","group":"⑧音乐","detail_col_type":"avatar","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar html = pdfh(getResCode().replace('|\"','\"'), '.wp-player&&data-title').split('|');\nvar jshtml=pdfh(getResCode().replace('|\"','\"'), '.wp-player&&data-address').split('|');\n\r\nfor (var j in html){\n\r\nd.push({       \r\ntitle: html[j],   \npic_url:pdfh(getResCode(),'.box&&img&&src'),\nurl: jshtml[j]+'#isMusic=true#',         \r\n});\r\n}\r\n\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://www.hifige.com/wp-content/themes/seven/images/logo.png"},{"last_chapter_rule":"","title":"嗨瑶音乐网·Q","author":"发粪涂墙","version":0,"type":"music","url":"http://www.92kk.com/dance/lists-id-fyAll-fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_1_vertical_pic","class_name":"试音车载&酒吧串烧&劲爆舞曲&串烧车载","class_url":"26&23&22&5","area_name":"CLUB&HOUSE&酒吧潮曲&Disco","area_url":"33&34&35&36","sort_name":"伤感串烧&电音车载&车载连版&喊麦现场","year_name":"夜店视频&热舞视频&舞曲视频&车载故事","sort_url":"25&27&21&25","year_url":"55&56&16&6","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.share_list&&li:not(.title)');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&Text'),\n       desc: parseDomForHtml(list[j], 'li--a&&Text'),\n       img: parseDom(list[j], 'img,-1&&src'),\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=video||audio&&src`\n  });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.share_list&&li:not(.title)');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&Text'),\r\n       desc: parseDomForHtml(list[j], 'li--a&&Text'),\r\n       img: parseDom(list[j], 'img,-1&&src'),\r\n       url: parseDom(list[j], 'a&&href') + `@lazyRule=video||audio&&src`\r\n  });\r\n}\r\nsetResult(d);","search_url":"http://www.92kk.com/index.php/dance/so/key?key=**&cid=0&p=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","titleColor":"#fff20c00","group":"⑧音乐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","icon":"http://m.92kk.com/favicon.ico"},{"last_chapter_rule":"","title":"苹果DJ","author":"发粪涂墙","version":0,"type":"music","url":"http://m.pingguodj.com/fyAll.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)}","col_type":"icon_round_4","class_name":"          🎦视频          &          🎶音乐          ","class_url":"video&music","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = pdfa(getResCode(), '.topic&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: pdfh(list[j], 'img&&alt'),\r\n       img: pd(list[j], 'img&&src'),\r\n       url: pd(list[j],'a&&href').split('1.html')[0]+'fypage.html'\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\r\nvar list = pdfa(getResCode(), '.video&&a')\r\nif (/glist/.test(getResCode()))\r\n    list = pdfa(getResCode(), '.glist&&li')\r\nfor (var j in list) {\r\n    d.push({\r\n        title: pdfh(list[j], 'img&&alt'),\r\n        img: MY_HOME + pdfh(list[j], 'Html').match(/\\/attachment.*?jpg/)[0],\r\n        url: pd(list[j], 'a&&href') + '@lazyRule=source||audio&&src.js:\"http://st.chaoyindj.com/\"+input.split(\"com/\")[1]'\r\n    });\r\n}\r\nsetResult(d);","search_url":"http://m.pingguodj.com/dance/so/key?key=**&p=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)}","titleColor":"","group":"⑧音乐","detail_col_type":"movie_2","detail_find_rule":"js:\nvar d = [];\nvar list = pdfa(getResCode(), '.video&&a')\nif (/glist/.test(getResCode()))\n    list = pdfa(getResCode(), '.glist&&li')\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        img: MY_HOME + pdfh(list[j], 'Html').match(/\\/attachment.*?jpg/)[0],\n        url: pd(list[j], 'a&&href') + '@lazyRule=source||audio&&src.js:\"http://st.chaoyindj.com/\"+input.split(\"com/\")[1]'\n    })\n}\nsetResult(d)","sdetail_col_type":"movie_2","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://www.pingguodj.com/favicon.ico"},{"last_chapter_rule":"","title":"苹果DJ·Q","author":"发粪涂墙","version":0,"type":"music","url":"http://m.pingguodj.com/fyAll.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)}","col_type":"icon_round_4","class_name":"          🎦视频          &          🎶音乐          ","class_url":"video&music","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = pdfa(getResCode(), '.topic&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: pdfh(list[j], 'img&&alt'),\r\n       img: pd(list[j], 'img&&src'),\r\n       url: pd(list[j],'a&&href').split('1.html')[0]+'fypage.html'\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\r\nvar list = pdfa(getResCode(), '.video&&a')\r\nif (/glist/.test(getResCode()))\r\n    list = pdfa(getResCode(), '.glist&&li')\r\nfor (var j in list) {\r\n    d.push({\r\n        title: pdfh(list[j], 'img&&alt'),\r\n        img: MY_HOME + pdfh(list[j], 'Html').match(/\\/attachment.*?jpg/)[0],\r\n        url: pd(list[j], 'a&&href') + '@lazyRule=source||audio&&src.js:\"http://st.chaoyindj.com/\"+input.split(\"com/\")[1]'\r\n    });\r\n}\r\nsetResult(d);","search_url":"http://m.pingguodj.com/dance/so/key?key=**&p=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)}","titleColor":"","group":"⑧音乐","detail_col_type":"movie_2","detail_find_rule":"js:\nvar d = [];\nvar list = pdfa(getResCode(), '.video&&a')\nif (/glist/.test(getResCode()))\n    list = pdfa(getResCode(), '.glist&&li')\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        img: MY_HOME + pdfh(list[j], 'Html').match(/\\/attachment.*?jpg/)[0],\n        url: pd(list[j], 'a&&href') + '@lazyRule=source||audio&&src.js:\"http://st.chaoyindj.com/\"+input.split(\"com/\")[1]'\n    })\n}\nsetResult(d)","sdetail_col_type":"movie_2","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":"http://www.pingguodj.com/favicon.ico"},{"last_chapter_rule":"","title":"播视网","author":"香雅情","version":0,"type":"video","url":"https://search.boosj.com/search_fyAll___fypage_.html","col_type":"movie_1_vertical_pic","class_name":"全部&娱乐&时尚&生活&汽车世界&旅游&公益&酷玩&儿童频道&童星体验站&健康&格子星动画&综艺","class_url":"res_&res_14&res_19&res_23&res_402&res_462&res_1222&res_2922&res_3362&res_4302&res_4711&res_4983&cinema__","area_name":"广场舞&广场舞公开课&广场舞队视频大全&健身舞&瑜伽","area_url":"res_1362&res_3642&res_3424&res_3408&res_3410","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, 'body&&.bj-col4:has(.imgtext)');\n\nfor (var i = 0; i < list.length; i++) {\n    var title = parseDomForHtml(list[i], 'a&&title');\n    var img = parseDom(list[i], 'img&&data-original');\n    var url = parseDom(list[i], 'a&&href');\n    var desc = parseDomForHtml(list[i], '.imgtext--h3&&Text');\n    items.push({\n        title: title,\n        pic_url: img,\n        url: $(url).lazyRule(() => {\n            var vid = request(input).match(/vid:\\\"(.*?)\\\"/)[1];\n            var rip = request('https://gslb.boosj.com/ipv2.json', {});\n            //log(rip);\n            let url = buildUrl('https://gslb.boosj.com/gslb?_id=' + vid, JSON.parse(rip))\n            //log(url)\n            var json = JSON.parse(fetch(url, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA,\n                    \"Referer\": \"https://www.boosj.com/\"\n                }\n            }));\n            //log(json);\n            return json.url + '?' + json.t + ';{Referer@https://www.boosj.com/}'\n        }),\n        desc: desc\n    });\n}\n\nsetHomeResult({\n    data: items\n});","searchFind":"js:\nvar res = {};\r\nvar items = [];\r\nvar html = JSON.parse(getResCode());\r\n\r\nvar list = html.body.result;\r\n\r\nfor (var i = 0; i < list.length; i++) {\r\n    var title = list[i].resourceName;\r\n    var img = list[i].imageUrl;\r\n    var cont = list[i].intro;\r\n    var url = list[i].resourceId;\r\n    var score = list[i].score;\r\n\r\n    items.push({\r\n        title: title,\r\n        pic_url: img + '@Referer=',\r\n        url: $(url).lazyRule(() => {\r\n            var vid = input;\r\n            var rip = request('https://gslb.boosj.com/ipv2.json', {});\r\n            //log(rip);\r\n            let url = buildUrl('https://gslb.boosj.com/gslb?_id=' + vid, JSON.parse(rip))\r\n            //log(url)\r\n            var json = JSON.parse(fetch(url, {\r\n                headers: {\r\n                    \"User-Agent\": MOBILE_UA,\r\n                    \"Referer\": \"https://www.boosj.com/\"\r\n                }\r\n            }));\r\n            //log(json);\r\n            return json.url + '?' + json.t + ';{Referer@https://www.boosj.com/}'\r\n        }),\r\n        content: cont,\r\n        desc: '评分:' + score\r\n    });\r\n}\r\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://search.boosj.com/m_ajax?q=**&p=fypage","titleColor":"","group":"⑧音频悦耳","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"酷狗音乐*","author":"1606142","version":5,"type":"music","url":"fyarea/fypage?_t=fyclass","col_type":"icon_2","class_name":"即点即听&显示词图","class_url":"2&1","area_name":"歌单&排行榜&冬日&老歌","area_url":"https://m3ws.kugou.com/plist/index&https://www.kugou.com/yy/rank/home/1-6666.html?from=rank&https://m3ws.kugou.com/plist/list/3387086&https://m3ws.kugou.com/plist/list/3387468","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar ej = (getUrl().split('?_t=')[1] == 1) ? `@rule=js:var res = {};var d = [];if(!MY_URL.includes('getdata&hash=')){var ym=fetch(MY_URL,{headers:{\"User-Agent\":PC_UA}});try{var so=parseDomForHtml(ym,'head&&script&&Html').replace(/var[\\\\S\\\\s]*?\\\\= (?=\\\\[{)/g,'var so=');try{eval(so);}catch(e){}var ym=fetch('http://www.kugou.com/yy/index.php?r=play/getdata&hash='+(so[0].sqhash?so[0].sqhash:so[0].hash)+'&album_id='+so[0].album_id,{headers:{'Cookie':'kg_mid=1'}});}catch(e){d.push({title:ym,col_type:'long_text'});}}else{var ym=fetch(MY_URL,{headers:{'Cookie':'kg_mid=1'}});}var da=JSON.parse(ym);d.push({img:da.data.img,url:da.data.img,col_type:'pic_1_full'});if(getVar('pd')==''){d.push({title:(da.data.play_url)?'““点击试听””':'““无法试听””',url:da.data.play_url+'#noHistory#@lazyRule=.js:putVar2(\"pd\",input);refreshPage();\"toast://正在加载播放！\";',col_type:'text_center_1'});}else{d.push({desc:'50',url:getVar('pd'),col_type:'x5_webview_single'});putVar2('pd','');}d.push({title:da.data.lyrics,col_type:'long_text'});res.data = d;setHomeResult(res);` : `@lazyRule=.js:if(!input.includes('getdata&hash=')){var ym=fetch(input,{headers:{\"User-Agent\":PC_UA}});try{var so=parseDomForHtml(ym,'head&&script&&Html').replace(/var[\\\\S\\\\s]*?\\\\= (?=\\\\[{)/g,'var so=');try{eval(so);}catch(e){}var json=JSON.parse(fetch('http://www.kugou.com/yy/index.php?r=play/getdata&hash='+(so[0].sqhash?so[0].sqhash:so[0].hash)+'&album_id='+so[0].album_id,{headers:{'Cookie':'kg_mid=1'}}));}catch(e){}}else{var json=JSON.parse(fetch(input,{headers:{'Cookie':'kg_mid=1'}}));}dat=[];dat.push(json.data.play_url);var lrc=json.data.lyrics.split('\\\\r\\\\n');com=[];for(var i of lrc){var t=i.split(']')[1];try{var m=i.match(/[\\\\d]+/g);m=Number(m[0])*60+Number(m[1]);if(t!=''&&m!='')com.push({text:t,time:m});}catch(e){}}dm='hiker://files/酷狗音乐/dm.json';writeFile(dm,JSON.stringify(com));JSON.stringify({urls:dat,danmu:dm})`;\nputVar2('ej', ej);\nvar res = {};\nvar d = [];\nvar ym = MY_URL.includes('hiker://') ? '' : getResCode();\ntry {\n    var xs = parseDom(ym, '.pc_temp_main&&.pc_temp_side&&Html').match(/<div[\\s\\S]*?<\\/div>/g);\n    for (var i = 0; i < (xs.length); i++) {\n        var ti = xs[i].split('title=\"')[1].split('\"')[0];\n        d.push({\n            title: ti,\n            col_type: 'text_1'\n        });\n        var ys = parseDom(xs[i], 'ul&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\n        for (var j = 0; j < (ys.length); j++) {\n            var ti2 = ys[j].split('title=\"')[1].split('\"')[0];\n            var pi2 = ys[j].split('url(')[1].split(')')[0];\n            var adr2 = ys[j].split('href=\"')[1].split('\"')[0].replace('1-', 'fypage-');\n            if (ti2 != '酷音乐流行风向标') {\n                d.push({\n                    title: ti2,\n                    img: pi2,\n                    url: adr2 + '#noHistory#',\n                    col_type: 'icon_2_round'\n                });\n            }\n        }\n    }\n} catch (e) {}\ntry {\n    var a = parseDomForArray(ym, '.panel-img-list&&li');\n    for (var i in a) {\n        d.push({\n            title: parseDomForHtml(a[i], '.panel-img-content-first&&Text'),\n            desc: \"0\",\n            //desc: '🎧 ' + parseDomForHtml(a[i], '.panel-img-content-sub&&Text'),\n            img: parseDomForHtml(a[i], 'a&&.panel-img-left&&img&&_src'),\n            url: parseDomForHtml(a[i], 'a&&href') + '/fypage#noHistory#',\n            col_type: 'card_pic_3'\n        });\n    }\n} catch (e) {}\n\ntry {\n    if (MY_URL.includes('special')) {\n        ym = fetch('https://m3ws.kugou.com/plist/list/' + MY_URL.split('/')[6].replace('.html', '') + '/' + MY_URL.split('/')[7], {});\n    }\n    eval(getVar('q'));\n} catch (e) {}\nif (ym == '') {\n    d.push({\n        col_type: 'blank_block'\n    });\n    d.push({\n        desc: '480&&float',\n        url: 'https://m3ws.kugou.com/share/zlist.html?u=505547618&h1=260725117451931064455925875611781547060&h2=05a4903ea545f6c798866de3c51c40c2&listid=3&global_collection_id=collection_3_505547618_3_0&uid=505547618&type=0&_t=1612572360&token=b6835523c62c538543abeaeff7257e01020645004c92c5aad162c02e3df39a5a&sign=e288c440fa18113097eea16d85159047&chl=link',\n        col_type: 'x5_webview_single'\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar ke=MY_URL.split('&keyword=')[1].split('&page=')[0];\nvar res = {};var d = [];var ym=getResCode();\nif(MY_URL.split('&page=')[1].split('&pagesize=')[0]==1){\n\nvar ym1=fetch('http://mobilecdnbj.kugou.com/api/v3/search/special?version=9108&keyword='+ke+'&pagesize=20&filter=0&page=1&sver=2&with_res_tag=1',{});\nvar dat1=JSON.parse(ym1.split('info\":')[1].split('}]')[0]+`}]`);\nfor(var i=0;i<(dat1.length)&&i<5;i++)\n{\ntry{\nd.push({\ntitle:'歌单：'+dat1[i].specialname,\ncontent:'创建时间：'+dat1[i].publishtime,\nimg:dat1[i].imgurl,\ndesc:'🎧 '+dat1[i].playcount,\nurl:'https://m3ws.kugou.com/plist/list/'+dat1[i].specialid+'/fypage',\n});}catch(e){}\n}\n}\nvar dat=JSON.parse(ym.split('info\":')[1].split(',\"aggregation')[0]);\n\nfor(var i=0;i<(dat.length);i++)\n{\nvar hou=parseInt(dat[i].duration/60)+'';\nvar sec=dat[i].duration%60+'';\nsec=(sec.length==1)?('0'+sec):sec;\n/*\nif(dat[i].sqhash){var ha=dat[i].sqhash;}\n\nelse{var ha=dat[i].hash;}\n*/\n\nd.push({\ntitle:dat[i].filename,\ndesc:hou+':'+sec,\nurl:'http://www.kugou.com/yy/index.php?r=play/getdata&hash='+dat[i].hash+'&album_id='+dat[i].album_id,\n});\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://mobilecdn.kugou.com/api/v3/search/song?format=jsonp&keyword=**&page=fypage&pagesize=20&showtype=1&callback=kgJSONP224132806","group":"⑧音频悦耳","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};var d = [];var ym=getResCode();\ntry{var xs=parseDomForArray(ym,'.pc_temp_songlist&&ul&&li');\nfor(var i=0;i<(xs.length);i++)\n{\nvar ti=xs[i].split('title=\"')[1].split('\"')[0];\nvar adr=xs[i].split('href=\"')[1].split('\"')[0];\nvar des=xs[i].split('pc_temp_time\">')[1].split('<')[0].replace(/[^\\S]/g,'');\n\nd.push({\n\ttitle: ti,\n url:adr+'#noHistory#'+getVar('ej'),\n desc:des,\n\tcol_type: 'text_1'\n});\n}}catch(e){}\ntry{if(MY_URL.includes('/1')&&!MY_URL.includes('home')){\nd.push({title:MY_URL.slice(0,-2),url:'toast://可以长按复制该歌单链接',col_type:'text_1'});d.push({col_type:'line_blank'});}\neval(getVar('q'));\n}catch(e){}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"long_text","sdetail_find_rule":"js:var res = {};var d = [];\ntry{\nvar ym=fetch(MY_URL,{headers:{'Cookie':'kg_mid=1'}});\n//d.push({title:MY_URL,url:MY_URL,col_type:'text_center_1'});\nvar da=JSON.parse(ym);d.push({img:da.data.img,url:da.data.img,col_type:'pic_1_full'});if(getVar('pd')==''){d.push({title:(da.data.play_url)?'““点击试听””':'““无法试听””',url:da.data.play_url+'#noHistory#@lazyRule=.js:putVar2(\"pd\",input);refreshPage();\"toast://正在加载播放！\";',col_type:'text_center_1'});}else{d.push({desc:'50',url:getVar('pd'),col_type:'x5_webview_single'});putVar2('pd','');}d.push({title:da.data.lyrics,col_type:'long_text'});}catch(e){}\ntry{if(MY_URL.includes('/1')){\nd.push({title:MY_URL.slice(0,-2),url:'toast://可以长按复制该歌单链接',col_type:'text_1'});d.push({col_type:'line_blank'});}\neval(getVar('q'));\n}catch(e){}\nres.data = d;setHomeResult(res);","ua":"mobile","preRule":"var ej=`@lazyRule=.js:if(!input.includes('getdata&hash=')){var y=fetch(input,{});var so=JSON.parse(y.split('dataFromSmarty = ')[1].split('}]')[0]+'}]')[0];JSON.parse(fetch('http://www.kugou.com/yy/index.php?r=play/getdata&hash='+so.hash+'&album_id='+so.album_id,{headers:{'Cookie':'kg_mid=1'}})).data.play_url;}else{JSON.parse(fetch(input,{headers:{'Cookie':'kg_mid=1'}})).data.play_url;}`;\nputVar2('ej',ej);\nputVar2('q',\"var a=parseDomForArray(ym,'.panel-songslist&&li');for(var i in a){ var xx=JSON.parse('{'+a[i].split('>{')[1].split('}<')[0]+'}');d.push({title:xx.filename,url:'http://www.kugou.com/yy/index.php?r=play/getdata&hash='+xx.hash+'&album_id='+xx.album_id+'#noHistory#'+getVar('ej'), col_type:'text_1'});}\");","pages":"[]","proxy":"","icon":"https://gimg3.baidu.com/search/src=http%3A%2F%2Fgdown.baidu.com%2Fimg%2F0%2F200_200%2F7203dcc7a8573c83a1b5bf1c6da9237f.png&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=w150&n=0&g=0n&q=100&fmt=auto?sec=1634662800&t=c1d86a928bca763f4ebd927a05a11e97"},{"last_chapter_rule":"","title":"QQ音乐·Q","author":"发粪涂墙","version":0,"type":"music","url":"https://c.y.%71%71.com/node/pc/wk_v15/top.html","col_type":"card_pic_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar tabs = [];\n\nvar conts = pdfa(html, 'body&&.mod_toplist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&.toplist__item'))\n    tabs.push(pdfh(conts[i], 'h2&&Text'))\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    for (var j in list) {\n        d.push({\n        //    title: parseDomForHtml(list[j], 'span&&Text'),\n            img: parseDom(list[j], 'img&&src'),\n            desc: '0',\n            url: 'https://u.y.qq.com/cgi-bin/musicu.fcg?format=json&inCharset=utf8&outCharset=utf-8&platform=yqq.json&needNewCode=0&data=%7B%22comm%22%3A%7B%22cv%22%3A1602%2C%22ct%22%3A20%7D%2C%22toplist%22%3A%7B%22module%22%3A%22musicToplist.ToplistInfoServer%22%2C%22method%22%3A%22GetDetail%22%2C%22param%22%3A%7B%22topid%22%3A'+parseDomForHtml(list[j], 'a&&data-tid').split('/')[1]+'%2C%22num%22%3A300%2C%22period%22%3A%22%22%7D%7D%7D&_='+new Date().getTime(),\n            //   col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","searchFind":"js:\nsetResult(JSON.parse(getResCode()).data.song.list.map(data => ({\n    title: data.title,\n    // img: data.cover,\n     desc: data.singer[0].title,\n     url: $('https://api.vvhan.com/api/music?id=' + data.mid + '&type=song&media=tencent').lazyRule(() => {\n        return JSON.parse(fetch(input)).mp3url+'#'+new Date().getTime()\n    })\n    //url: 'https://i.y.qq.com/v8/playsong.html?ADTAG=ryqq.songDetail&songmid=' + data.mid + '&songid=0&songtype=0' + `@lazyRule=.js:parseDom(request(input),'audio&&src')||JSON.parse(fetch('https://api.vvhan.com/api/music?id='+input.match(/songmid=(.*)&songid/)[1]+'&type=song&media=tencent')).mp3url||'toast://收费音乐，有空解决'`,\n})));","search_url":"/soso/fcgi-bin/client_search_cp?format=json&p=fypage&n=30&w=**&aggr=1&lossless=0&cr=1&new_json=1&platform=yqq.json&needNewCode=0&loginUin=","titleColor":"#fff20c00","group":"⑧音频悦耳","detail_col_type":"text_1","detail_find_rule":"js:\nsetResult(JSON.parse(getResCode()).toplist.data.songInfoList.map(data => ({\n    title: data.title,\n    desc: data.singer[0].title,\n    url: $('https://api.vvhan.com/api/music?id=' + data.mid + '&type=song&media=tencent').lazyRule(() => {\n        return JSON.parse(fetch(input)).mp3url+'#'+new Date().getTime()\n  // url: 'https://i.y.qq.com/v8/playsong.html?ADTAG=ryqq.songDetail&songmid=' + data.mid + '&songid=0&songtype=0' + `@lazyRule=.js:parseDom(request(input),'audio&&src')||JSON.parse(fetch('https://api.vvhan.com/api/music?id='+input.match(/songmid=(.*)&songid/)[1]+'&type=song&media=tencent')).mp3url||'toast://收费音乐，有空解决'`,\n    })\n})));","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://y.qq.com/mediastyle/mod/mobile/img/logo.svg"},{"last_chapter_rule":"","title":"悦音2","author":"子丑寅卯","version":10,"type":"other","url":"hiker://empty#type=0&keyword=fyAll#&page=fypage&limit=100","col_type":"text_1","class_name":"民谣&抖音&快手&排行榜&流行","class_url":"民谣&抖音&快手&排行榜&流行","area_name":"粤语&闽南&华语&影视&经典","area_url":"粤语&闽南&华语&影视&经典","sort_name":"","year_name":"歌手|伍佰&周杰伦&陈奕迅","sort_url":"","year_url":"伍佰&周杰伦&陈奕迅","find_rule":"js:\r\n\r\nvar d=[];\nvar page = MY_URL.split('#');\nif(page[2].indexOf('page=1')>-1){\nd.push({\n    title: \"🔎\",\n    url: \"'toast://正在搜索：' + input;refreshPage(false)\",\n    desc: \"开心时入耳，伤心时入心。\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\n}\nif (getVar('my-search') == \"\") {\n    var html = request('https://y.yueymusic.com/', {\n        headers: {},\n        body: page[1] + page[2],\n        method: 'POST'\n    });\n} else {\n    var html = request('https://y.yueymusic.com/', {\n        headers: {},\n        body: page[1] + '&keyword=' + getVar('my-search') + page[2],\n        method: 'POST'\n    })\r\n}\n\n    let json = JSON.parse(html);\nfor(let item of json){\n    d.push({\n        desc:item.artist+'   '+'““'+item.album+'””',\n        title:item.name,          \n        pic_url: \"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F1%2F58bea73736b92.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1634313719&t=1ee7433797f08011a48a1e89f35fe48e\",\n\nurl:item.id+`@lazyRule=.js:JSON.parse(request('https://y.yueymusic.com/index/music', {headers:{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36\"},body:'type=0&id='+input,method:'POST'})).music`\n\n    });\n}\n\nsetResult(d);","searchFind":"js:\r\n\r\nvar d=[];\n\nd.push({\n    title: \"🔎\",\n    url:\"'hiker://search?rule=悦音&s='+input\",\n    desc: \"宁可少字，不要错字。\",\n    col_type:\"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\r\n\nlet json=JSON.parse(getResCode());\nfor(let item of json){\n    d.push({\n        desc:item.artist,\n        title:item.name,  \n     pic_url: \"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fpic1.win4000.com%2Fwallpaper%2F1%2F58bea73736b92.jpg&refer=http%3A%2F%2Fpic1.win4000.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1634313719&t=1ee7433797f08011a48a1e89f35fe48e\",\n url:item.id+`@lazyRule=.js:JSON.parse(request('https://y.yueymusic.com/index/music', {headers:{\"User-Agent\":\"Mozilla/5.0 (Linux; Android 9; MHA-AL00 Build/HUAWEIMHA-AL00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/79.0.3945.116 Mobile Safari/537.36\"},body:'type=0&id='+input,method:'POST'})).music`\n\n    });\n}\n\nsetResult(d);","search_url":"https://y.yueymusic.com/?type=0&keyword=**&page=fypage&limit=50;post","group":"⑧音频悦耳","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"卫华音乐","author":"卫华","version":1,"type":"video","url":"hiker://empty##https://tool.liumingye.cn/music/?page=searchPage#/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"⑧音频悦耳","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卫华音乐"},{"firstHeader":"class","last_chapter_rule":"","title":"工具台","author":"@LoyDgIk","version":0,"type":"other","url":"hiker://bookmark","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar titles = [\n'剪贴板@@https://netcut.cn/@@https://netcut.cn/favicon.ico',\n'源仓库@@http://ku.mumuceo.com/@@http://ku.mumuceo.com/static/images/lib/haikuo.png',\n'一个木函@@https://web.woobx.cn/@@https://web.woobx.cn/favicon.ico',\n'via插件 @@ http://via-app.cn@@http://via-app.cn/favicon.ico',\n'微点分享@@https://wefocu.com/@@https://wefocu.com/wp-content/uploads/2019/11/8dedb06c85c8a5.png',\n'油猴脚本@@https://greasyfork.org/zh-CN/scripts/@@https://greasyfork.org/assets/blacklogo96-e0c2c76180916332b7516ad47e1e206b42d131d36ff4afe98da3b1ba61fd5d6c.png',\n'一个工具箱@@http://www.atoolbox.net/',\n'云极客工具@@https://www.ygktool.cn/#home',\n'孟坤工具箱@@http://tool.mkblog.cn/',\n'兔二工具@@https://www.tool2.cn/#daohangtxPhone',\n'点亮应用@@https://dianliang521.github.io/dianliangyingyong/index.html',\n'现实君工具箱@@http://tool.uixsj.cn/',\n'NET牛人@@https://ss.netnr.com/',\n'云上应用@@https://www.imcloudapp.com/',\n'精准云工具@@https://jingzhunyun.com/',\n'爱资料工具@@https://www.toolnb.com/',\n'MikuTools@@https://tools.miku.ac/',\n'在线工具箱@@https://tool.lu/',\n\n'传输文本@@https://getnote.cf',\n'文叔叔文件@@https://www.wenshushu.cn/',\n'一个不算糟糕的可私有文本分享平台@@https://pasteme.cn/',\n'阅后即焚@@ https://sesme.lylares.com/',\n'Tmplink@@https://app.tmp.link/index.html?tmpui_page=/',\n'配色网@@https://color.uisdc.com/',\n'取色器@@https://colors.ichuantong.cn/',\n'文本随心改@@https://getnote.cf/',\n'公众号封面@@http://www.gjw123.com/tools-getWxArticleImages',\n'QQ头像获取@@http://www.gjw123.com/tools-qqnumberimg',\n'竖排文字生成@@https://m.fuhaoku.net/tool/shupaiwenzi.html',\n'在线摇骰子@@https://math.yunser.com/dice/',\n'B站封面获取@@https://tools.miku.ac/bilibili_cover_get',\n'网页源码查看@@https://tools.miku.ac/get_html',\n'关系计算器@@https://tools.miku.ac/relatives_name',\n'身份证解析@@https://tools.miku.ac/chinese_id',\n'常用电话列表@@https://www.iamwawa.cn/dianhua.html',\n'公众号音频@@http://www.xmyeditor.com/tools/music.html',\n'扩展名对照@@https://shulijp.com/info/dzb/filename.html',\n'对联生成器@@http://www.nicetool.net/app/duilian.html',\n'Base64转换@@http://www.jsons.cn/base64/',\n'实时台风预警@@http://www.gjw123.com/tools-taifeng',\n'跳转代码生成@@https://www.qtool.net/jumpcode',\n'文本翻转@@http://www.atoolbox.net/Tool.php?Id=759',\n\n'NET壁纸@@https://ss.netnr.com/wallpaper#36',\n'上传图片@@http://aote.frqrjg.top/Ali',\n'路过图床@@https://imgchr.com/',\n'阿里图床@@https://www.wz64.com/aliimg.htm',\n'定稿抠图@@https://www.gaoding.com/koutu?hmsr=zhongcao-kt_zh_phl-koutu---sy-bdqd&utm_medium=&utm_source=zhongcao',\n'素材图@@https://www.logosc.cn/so/',\n'图标下载@@https://www.easyicon.net/',\n'免费多图床@@https://www.rruu.net/',\n'随时图接口@@https://api.lyiqk.cn',\n\n'汉化软件站@@http://www.hanzify.org/',\n'3k资源网@@https://www.3kzy.com/',\n'大眼仔旭@@http://www.dayanzai.me',\n\n'极简插件@@https://chrome.zzzmh.cn',\n'B站视频解析@@https://xbeibeix.com/api/bilibili/',\n'简书@@https://www.jianshu.com/',\n'虾库@@http://www.xiacoo.com/type/ziyuansousuo/',\n'小鸡词典@@https://jikipedia.com/',\n'心灵乌鸡汤@@https://www.wujitang.top/chicks/positive',\n'表情包大全@@https://m.b7.cn/',\n'一句@@https://www.iamwawa.cn/shici.html',\n'期刊杂志@@http://new-qk.lifves.com/',\n'随机小姐姐@@http://www.8la8.cn/tool/xjj/',\n'新佛曰论禅@@http://hi.pcmoe.net/buddha.html',\n'阿虚同学@@http://kyon945.ys168.com/',\n'西瓜导航@@https://nav.hzwdd.cn/',\n'发现中国@@https://www.ageeye.cn/',\n'草料二维码@@https://cli.im/mob',\n'高速免费接口@@https://api.btstu.cn',\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nd.push({\r\n    title: '推荐网站(返回首页)',\n    url: 'hiker://home@A1首页',\r\n    col_type: 'text_1'\r\n});\n\nfor(var i=0;i<t.length && i<4;i++)\n{\n    var k=t[i].split(/\\s*@@\\s*/);\n    if(k.length<2)continue;\n    var r={};\n    r.title=k[0];\n    r.url=k[1];\n    r.pic_url = k[2];\n    r.col_type= 'icon_4';\n    d.push(r);\n}\nfor(var i=4;i<t.length && i<6;i++){\n    var k=t[i].split(/\\s*@@\\s*/);\n    if(k.length<2)continue;\n    var r={};\n    r.title=k[0];\n    r.url=k[1];\n    r.pic_url = k[2];\n    r.col_type= 'icon_2';\n    d.push(r);\n    }\n\nd.push({\r\n    title: '工具箱',\n    url: 'hiker://home@工具台',\r\n    col_type: 'text_1'\r\n});\n\nfor(var i=6;i<t.length;i++)\n{\n   var k=t[i].split(/\\s*@@\\s*/);\n   if(k.length<2)continue;\n   var r={};      \n   var l={};\n   r.title=k[0];\n   r.url=k[1];\n   r.col_type='text_3';\n   d.push(r);\n\n    l.col_type= 'text_1';\nif(i==17)\n    {\n        l.title='实用';\n        l.url= 'hiker://home@工具台',\n        d.push(l);\n    }\nif(i==41)\n    {\n        l.title='图片';\n        l.url= 'hiker://home@工具台',\n        d.push(l);\n    }\nif(i==50)\n    {\n        l.title='软件下载';\n        l.url= 'hiker://home@工具台',\n        d.push(l);\n    }\nif(i==53)\n    {\n        l.title='其他';\n        l.url= 'hiker://home@工具台',\n        d.push(l);\n    }\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"⑨其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"总仓库","author":"Reborn","version":36,"type":"other","url":"hiker://home","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar mRule = JSON.parse(getRule());\neval(getCryptoJS());\n\n// 仓库配置本地缓存文件\nvar settingsCacheFile = \"hiker://files/depot_v2_settings.json\";\n// 本地缓存开关\nvar needCacheSetting = true;\n\n// 仓库个性设置\nvar settings = {\n    // beta测试版，若要开启测试通道请设为true\n    beta: false,\n    // 在这里添加仓库配置，可使本地添加的仓库置顶\n    authorList: [\n        \"[例子]置顶私人仓库@@Reborn_0@@HikerRulesPrivacy@@access_token='****'\",\n        \"[例子]自定义文件名@@Reborn_0@@HikerRulesDepot@@remoteFilename='update_1.json'\"\n    ],\n    remoteAuthorListUrl: \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/authorList.json\",\n    // 在这里添加仓库配置，可使本地添加的仓库置底\n    authorListBottom: [\n        \"[例子]置底本地仓库@@Reborn_0@@HikerRulesPrivacy\"\n    ],\n    // 在这里添加随机头像\n    picUrlList: [\n        \"https://www.easyicon.net/api/resizeApi.php?id=1271624&size=128\",\n        \"https://www.easyicon.net/api/resizeApi.php?id=1271647&size=128\",\n        \"https://www.easyicon.net/api/resizeApi.php?id=1266536&size=128\",\n        \"https://www.easyicon.net/api/resizeApi.php?id=1271655&size=128\",\n    ],\n    // 隐藏开关，不需要隐藏请设置为false\n    needHideRule: true,\n    // 自行添加要隐藏的标记，格式为：[\"[标记名1]\"，\"[标记名2]\"...]\n    hideSymbols: [\"[模板]\", \"[未完成]\"],\n    // 总仓库更新地址，若总仓库更新没问题请勿擅自修改！！！\n    remoteDepotRuleUrl: \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/depotRule_v2_release.json\",\n    remoteBetaDepotRuleUrl: \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/depotRule_v2_beta.json\"\n};\n// 若不是第一次使用总仓库则隐藏开发文档\nvar depotStatus = {\n    // 此处所有配置都会被下方覆盖，请移步下方配置 depotStatus.xxx = xxx;\n};\nvar depotSettings = {\n};\nvar statusCacheFile =  \"hiker://files/\" + mRule.title + \"_\" + mRule.author + \".json\";\n// 仓库状态缓存文件地址\nvar statusCacheFile = statusCacheFile != null && statusCacheFile != \"\" ? statusCacheFile : \"hiker://files/\" + mRule.title + \"_\" + mRule.author + \".json\";\n// 举例 hiker://files/depotStatus_v2.json\nputVar({key: 'statusCacheFile', value: statusCacheFile});\n\nvar depotStatusFile = fetch(statusCacheFile, {});\nif (depotStatusFile != \"\") {\n    eval(\"depotStatus=\" + depotStatusFile);\n}\n// 仓库配置远程地址，请自行配置\n// 举例：https://gitee.com/Reborn_0/HikerRulesDepot/raw/master/depot_v2_settings.json\ndepotStatus.settingsRemoteFile = \"\";\n\n// 若需要永久显示开发文档，则取消注释\n// depotStatus.showDevDoc = true;\n// 若需要永久显示提示，则取消注释\n// depotStatus.showTips = true;\n// 若需要永久显示例子，则取消注释\n// depotStatus.showEtc = true;\n\nvar fileUrl = \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/V2_FindRule_Cloud.js\";\neval(fetch(fileUrl, {}));\n\n// setError(JSON.stringify(d));\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\neval(getCryptoJS());\nvar key = getUrl().split(\"#\")[1];\n// key = \"影视\";\nvar page = 1;\ntry { \n   page = parseInt(getUrl().split(\"#\")[2]);\n}\ncatch (e) { }\nvar pageSize = page * 5;\n/*d.push({\n    title: \"page: \" + page,\n    desc: \"pageSize: \"+ pageSize + \" pageAdd: \"+ pageAdd\n});*/\n\nif (key != null && key != \"\") {\n    var regExp = new RegExp(\"[^]*\"+key+\"[^]*\");\n    // 仓库个性设置\n    var settings = {\n        // 在这里添加仓库配置，可使本地添加的仓库置顶\n        authorList: [\n           // \"[例子]置顶私人仓库@@Reborn_0@@HikerRulesPrivacy@@access_token='****'\",\n           // \"[例子]自定义文件名@@Reborn_0@@HikerRulesDepot@@remoteFilename='update_1.json'\"\n        ],\n        remoteAuthorListUrl: \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/authorList.json\",\n        // 在这里添加仓库配置，可使本地添加的仓库置底\n        authorListBottom: [\n           // \"[例子]置底本地仓库@@Reborn_0@@HikerRulesPrivacy\"\n        ],\n    };\n\n    // 似乎加了之后慢了很多\n    var ruleReg = new RegExp(/{[^]*/);\n    function getRuleKeyWord(remoteRule) {\n        var remoteRuleRule = null;\n            try {\n                eval(\"remoteRuleRule=\" + base64Decode(remoteRule.rule.replace(\"rule://\", \"\")).match(ruleReg)[0]);\n            } catch (e) { }\n            var remoteRuleKeyWord = null;\n            if(remoteRuleRule != null) {\n                try {\n                    remoteRuleKeyWord = remoteRuleRule.title + remoteRuleRule.url + remoteRuleRule.author;\n                } catch (e) { }\n            }\n            if(remoteRuleKeyWord == null) remoteRuleKeyWord = remoteRule.title;\n            return remoteRuleKeyWord;\n    }\n\n    // 搜索解析思路：\n    // 获取搜索链接中的**，然后循环遍历每一个仓库的规则，正则模糊匹配到不为空的就加入搜索结果\n    var remoteAuthorList = [];\n    try {\n        eval(\"remoteAuthorList=\" + fetch(settings.remoteAuthorListUrl, {}));\n    } catch (e) {\n    }\n    Array.prototype.push.apply(settings.authorList, remoteAuthorList);\n    if (settings.authorListBottom.length != 0) Array.prototype.push.apply(settings.authorList, settings.authorListBottom);\n\n    // 空间换时间, n^2->2n？虽然Array.prototype.push.apply可能也是一个n？（体验上没感觉快多少，毕竟那个fetch太多了...）\n    var mRemoteRules = [];\n    // 1.拿到仓库\n    for (var i = (page-1) * 5; i < settings.authorList.length && i < pageSize; i++) {\n       // if (i < pageSize) break;\n        var authorList = settings.authorList[i];\n        var authorAndOwnerAndProject = authorList.split(\"@@\");\n        var author = authorAndOwnerAndProject[0];\n        var remoteUrl = \"\";\n\n        var apiType = \"1\";  // 0 为文件直链，1 为码云API\n        var apiTypeJS = authorList.match(/apiType=.[\\s\\S]*?'/) + \";\";\n        eval(apiTypeJS);\n        if (apiType == null) apiType = \"1\";\n\n        if (apiType == \"0\") {\n            var fullUrl = \"\";\n            var fullUrlJS = authorList.match(/fullUrl=.[\\s\\S]*?'/) + \";\";\n            eval(fullUrlJS);\n            remoteUrl = fullUrl;\n        } else if (apiType == \"1\") {\n            var remoteApiHome = \"https://gitee.com/api/v5/repos/\";\n            var owner = authorAndOwnerAndProject[1];   // 仓库拥有者\n            var repo = authorAndOwnerAndProject[2]; // 仓库名\n            var remoteFilename = null; // 文件名\n            var path = remoteFilename;  // 在仓库中文件的路径\n            var access_token = null;  // 用户授权码，在码云\"设置—>安全设定->个人访问令牌\"中可以生成\n            var tokenJS = authorList.match(/access_token=.[\\s\\S]*?'/) + \";\";\n            eval(tokenJS);\n            // setError(access_token==null);\n            var remoteFilenameJS = authorList.match(/remoteFilename=.[\\s\\S]*?'/) + \";\";\n            eval(remoteFilenameJS);\n            if (remoteFilename == null) {\n                remoteFilename = \"update.json\";\n            }\n            path = remoteFilename;\n            // setError(remoteFilename)\n            // API链接参考：https://gitee.com/api/v5/repos/{{owner}}/{{repo}}/contents/{{path}}?access_token=****\n            remoteUrl = remoteApiHome + owner + \"/\" + repo + \"/contents/\" + path;\n            if (access_token != null) {\n                remoteUrl = remoteUrl + \"?access_token=\" + access_token;\n            }\n            // setError(remoteUrl);\n            // var remoteHome = \"https://gitee.com/\" + owner + \"/\" + repo + \"/blob/master/update.json\";\n        }\n\n        // var remoteUrl = remoteApiHome + encodeURIComponent(author) + \"/\" + remoteFilename;\n        var remoteSource = fetch(remoteUrl, {});\n        // setError(remoteUrl);\n        try {\n            eval(\"remoteSource=\" + remoteSource);\n            var remoteRules = remoteSource;\n            if (apiType == \"0\") {\n            } else if (apiType == \"1\") {\n                eval(\"remoteRules=\" + base64Decode(remoteSource.content));\n            }\n            if (remoteRules.data != null) {\n                Array.prototype.push.apply(mRemoteRules, remoteRules.data);\n            } else {\n                Array.prototype.push.apply(mRemoteRules, remoteSource);\n            }\n            /*if(mRemoteRules.length < page * 8) {\n                 page++;\n                 pageSize = page * 5;\n                 pageAdd++;\n                 putVar({key: 'pageAdd', value: pageAdd});\n            }*/\n        }catch (e) {\n        }\n    }\n    // 2.拿到单个仓库的规则列表\n    if (mRemoteRules.length != 0) {\n        // 换个锤子的二分法，一定要遍历所有数据的，这样顶多是O(1/2 n)，忽略常数还是O(n)，确实会快一丢丢，空间换时间的结果\n        var left = 0;\n        var right = mRemoteRules.length - 1;\n        while (left <= right) {\n            var remoteRuleLeft = mRemoteRules[left];\n            var remoteRuleRight = mRemoteRules[right];\n            if (regExp.test(getRuleKeyWord(remoteRuleLeft)) == true) {\n                d.push({\n                    title: remoteRuleLeft.title,\n                    url: \"https://baidu.com#\" + remoteRuleLeft.rule,\n                    desc: remoteRuleLeft.author,\n                    content: \"云端版本：\" + remoteRuleLeft.version\n                });\n            }\n            if (regExp.test(getRuleKeyWord(remoteRuleRight)) == true) {\n                d.push({\n                    title: remoteRuleRight.title,\n                    url: \"https://baidu.com#\" + remoteRuleRight.rule,\n                    desc: remoteRuleRight.author,\n                    content: \"云端版本：\" + remoteRuleRight.version\n                });\n            }\n            left++;\n            right--;\n        }\n    }\n}\n\nif((page) * 5 < settings.authorList.length) {\n    if(d.length == 0) {\n         d.push({\n             title: \"没加载到东西？不要紧，上滑可能有惊喜哦！\",\n             desc: \"PS: 只要没显示最后一页就还有希望！\"\n         });\n    } else {\n         d.push({\n             title: \"未到最后一页，请继续上滑加载更多。\"\n         });\n    }\n} else {\n     d.push({\n         title: \"已到最后一页\"\n     });\n}\n\n// setError(JSON.stringify(d));\nres.data = d;\nsetSearchResult(res);","search_url":"hiker://home#**#fypage","titleColor":"#ffff7000","group":"⑨其他","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\neval(getCryptoJS());\n\n// 仓库配置本地缓存文件\nvar settingsCacheFile = \"hiker://files/depot_v2_settings.json\";\n// 本地缓存开关\nvar needCacheSetting = true;\n\n// 仓库个性设置\nvar settings = {\n    // 设置 true 一键净化，除了规则和仓库通知，啥也不要\n    hideAll: false,\n    // 小仓库标题开关（注意事项上面那个），不需要显示请设置为true\n    noTitle: true,\n    // 注意事项开关，不需要显示请设置为true\n    noWarning: false,\n    // 规则数量显示开关，不需要显示请设置为true\n    noRulesNum: false,\n    // 是否允许超过一定规则数后改变显示样式，默认不开启\n    needChangeShowType: false,\n    // 设置最大显示完整文本的规则数，大于设置值则显示为按钮样式(默认 text_2)\n    showFullTextMax: 10,\n    // 设置超过允许显示完整文本的规则数后显示的样式\n    overMaxShowType: \"text_2\",\n    /**\n     * 规则映射列表\n     * 左本地，右远端，本地映射为远端，达到替换内容的目的\n     * 需要全名匹配需要在映射表中加入{ \"matchAll\": true }\n     * （注意，程序逻辑为先映射后执行下面的删除标记）\n     */\n    rulesMapping: [\n        // [{\"title\": \"嗨哆咪\", \"author\": \"Reborn\"}, {\"title\": \"嗨哚咪影视\", \"author\": \"Reborn\"}, {\"matchAll\": true}],\n        // [{\"title\": \"预告片\", \"author\": \"Reborn\"}, {\"title\": \"预告片(?=•Re)\", \"author\": \"Reborn\"}],\n        // [{\"title\": \"预告片•T\", \"author\": \"Reborn\"}, {\"title\": \"预告片•Re\", \"author\": \"Reborn\"}],\n        // [{\"title\": \".*?(?=•T)\", \"author\": \"Reborn\"}, {\"title\": \".*?(?=•Re)\", \"author\": \"Reborn\"}],\n        // [{\"title\": \".*?(?=•B)\", \"author\": \"Reborn\"}, {\"title\": \".*?(?=•Re)\", \"author\": \"Reborn\"}]\n    ],\n    // 云端规则映射列表链接，内容格式是JSON数组，请自己设置\n    remoteRulesMappingUrl: \"\",\n    // 入戏开关？（滑稽）// 删除开关，不需要删除请设置为false\n    needDelSymbol: true,\n    // 自行添加要被删掉的标记\n    symbols: [\"标记1\", \"标记2\"],\n    // 隐藏开关，不需要隐藏请设置为false\n    needHideRule: true,\n    // 自行添加要隐藏的标记，格式为：[标记名]\n    hideSymbols: [\"[模板]\", \"[未完成]\"],\n    // 是否隐藏例子，需要隐藏请设置为true\n    needHideEtc: false,\n\n    // 若需要关闭忽略本次更新请设置为true\n    noIgnoreUpdate: false,\n    // 本地忽略更新列表，\n    // 内容模板为 {title: \"规则名\", author: \"规则作者\"}\n    ignoreUpdateRuleList: [\n        // {title: \"预告片•Re\", author: \"Reborn\"},\n    ],\n    // 云端忽略更新列表链接，格式是JSON数组，请自己设置\n    remoteIgnoreListUrl: \"\",\n    // 参考链接：\n    // https://gitee.com/Reborn_0/HikerRulesDepot/raw/master/ignoreUpdateRuleList.json\n    // https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/Reborn/ignoreUpdateRuleList.json\n};\nvar statusCacheFile = getVar('statusCacheFile');\n// 若不是第一次使用总仓库则存储仓库状态\nvar depotStatus = {\n    // 此处所有配置都会被下方覆盖，请移步下方配置 depotStatus.xxx = xxx;\n};\nvar depotSettings = {};\n\nif (settings.needHideEtc == true) settings.hideSymbols.push(\"[例子]\");\n\n// 仓库状态缓存文件地址\nif (statusCacheFile == null || statusCacheFile == \"\") statusCacheFile = \"hiker://files/depotStatus_v2.json\";\n// 举例 hiker://files/depotStatus_v2.json\n\nvar depotStatusFile = fetch(statusCacheFile, {});\nif (depotStatusFile != \"\") {\n    eval(\"depotStatus=\" + depotStatusFile);\n}\n\n// 仓库配置远程地址，请自行配置\n// 举例：https://gitee.com/Reborn_0/HikerRulesDepot/raw/master/depot_v2_settings.json\ndepotStatus.settingsRemoteFile = \"\";\n\n// 若需要永久显示提示，则取消注释\n// depotStatus.showSecondListTips = true;\n\nvar fileUrl = \"https://gitee.com/qiusunshine233/hikerView/raw/master/ruleversion/V2_DetailRule_Cloud.js\";\neval(fetch(fileUrl, {}));\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_center_1","sdetail_find_rule":"js:\nvar res = {};\nvar d = [];\n\nvar rule = getUrl().split(\"#\")[1];\nif(rule != null && rule != \"\") {\n     d.push({\n          title: \"立即导入规则\",\n          url: rule\n     });\n}\n\nres.data = d;\nsetHomeResult(res);","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"龙轩导航","author":"","version":0,"type":"other","url":"http://api.ilxdh.com/navig/classify/list?fid=fyclass;post","col_type":"text_3","class_name":"生活&影视&搜索&软件工具&设计素材&音乐读物&学习提升","class_url":"167&171&172&173&174&176&177","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\r\nvar list = json.data;\r\nvar res = {};\r\nvar d = [];\r\nfor (var i = 0; i < list.length; i++) {\r\n    try {\r\n        var r = {};\r\n        var j = list[i];\r\n        r.title = j.name;\r\n        r.col_type = 'text_1';\r\n        d.push(r);\r\n        var items = j.web.map(data => ({\r\n            title: data.name,\r\n            url: data.url\r\n        }));\r\n        d.push.apply(d,items);\r\n    } catch (e) {}\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"⑨其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"分类聚合工具","author":"Reborn","version":7,"type":"other","url":"hiker://home","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\n\n// 所有开关 开则true 不开则false\n// 顶部注意事项开关\nlet showWarning = true;\n// 规则去重开关\nlet clearDuplicate = false;\n// 自定义分类关键词列表\nvar keyList = [\"分类关键词1\", \"分类关键词2\"];\n// 网络词库开关\nlet networkData = false;\n// 网络词库链接\nlet keys_data_url = \"https://cdn.jsdelivr.net/gh/fighting41love/funNLP/data/%E6%95%8F%E6%84%9F%E8%AF%8D%E5%BA%93/%E8%89%B2%E6%83%85%E8%AF%8D%E5%BA%93.txt\";\n\n// 从插件中读取分类关键词（分享用）\nlet keys_data_js_url = \"hiker://files/rules/js/class_keys_data.js\";\ntry {\n    let keys_data_js = fetch(keys_data_js_url, {});\n    let js_key_list = keys_data_js.split(/[\\s\\n]/);\n    if (js_key_list != null && (typeof js_key_list !== \"string\") && js_key_list.length !== 0) {\n        Array.prototype.push.apply(keyList, js_key_list);\n    }\n} catch (e) { }\n\nif (networkData === true) {\n// 从网络中读取分类关键词\n    let keys_data = fetch(keys_data_url, {});\n    keys_data = keys_data.split(/[\\s\\n]/);\n    Array.prototype.push.apply(keyList, keys_data);\n}\n\n// 词库去重\nkeyList = Array.from(new Set(keyList));\n\nlet rules = JSON.parse(getResCode());\n\nvar mRulesList = new Array(keyList.length);\nfor (let i = 0; i < mRulesList.length; i++) {\n    let rulesTemp = rules;\n    mRulesList[i] = rulesTemp.filter(item => {\n        let result = false;\n        try {\n            result = keyList[i] !== \"\" && (item.class_name + item.year_name + item.area_name).indexOf(keyList[i]) > -1;\n        } catch (e) {  result = false;  }\n        return result;\n    });\n}\n\nfunction getIndexInArray(array, title) {\n    for (let i = 0; i < array.length; i++) {\n        if (array[i].title === title) return i;\n    }\n    return -1;\n}\n\nvar keyNum = 0;\nvar itemsTemp = [];\nfor (let i = 0; i < mRulesList.length; i++) {\n    let mRules = mRulesList[i];\n    if (mRules.length > 0) {\n        itemsTemp.push({\n            title: keyList[i],\n            col_type: \"text_1\"\n        });\n        keyNum++;\n        for (let j = 0; j < mRules.length; j++) {\n            let rule = mRules[j];\n            itemsTemp.push({\n                title: rule.title,\n                url: \"hiker://home@\" + rule.title,\n            });\n        }\n    }\n}\n\nif (clearDuplicate === true){\n    let obj = {};\n    itemsTemp = itemsTemp.reduce((current, next) => {\n        obj[next.title] ? \"\" : obj[next.title] = true && current.push(next);\n        return current;\n    }, []);\n}\n\nif (showWarning === true) {\n    items.push({\n        title: \"<b>本工具秉承\\\"““有杀错不放过””\\\"精神</b>\",\n        desc: \"必然““存在误杀””，请谨慎处理！\\n\\n规则中有多个开关和自定义关键词，请自行配置~\",\n        col_type: \"text_1\"\n    });\n}\n\nitems.push({\n    title: \"总规则数：\" + rules.length + \"\\n当前待处理：\" + keyNum + \" 组 / \" + (itemsTemp.length - keyNum) + \"条 规则\",\n    desc: \"少掉的规则去哪里了？当然是不含关键词的规则啦！\\n(然而还有一部分是匹配失败的结果🙈️...)\",\n    col_type: \"pic_1\"\n});\n\nwhile (itemsTemp.length) items.push(itemsTemp.shift());\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js: // From Zruiry\nvar jsonZr = JSON.parse(fetch('hiker://home'));\r\nvar res = {};\nvar d = [];\nvar n = 0;\nfor (var i = 0; i <jsonZr.length; i++) {\n    if ((jsonZr[i].title + jsonZr[i].class_name + jsonZr[i].year_name + jsonZr[i].area_name).includes(getUrl().split('#')[1]))\n    n++;\n}\nd.push({\n    title: '您的本地共有' + jsonZr.length + '条规则',\n    content: \"共搜索到\" + n + \"条结果\",\n});\nfor (var i = 0; i <jsonZr.length; i++) {\n    var r = {};\n    r.title = jsonZr[i].title;\n    var ruleAuthor = jsonZr[i].author;\n    var ruleGroup = jsonZr[i].group;\n    var ruleUrl = JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//);\n    r.desc = \"规则版本：\" + jsonZr[i].version;\n    if (jsonZr[i].author == null || jsonZr[i].author == undefined || jsonZr[i].author == '') {\n       ruleAuthor = \"未知\";\n} \n    if(JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == null || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == undefined || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == '') {\n        ruleUrl = \"无法识别\";\n}\n    if (JSON.stringify(jsonZr[i].url).includes(\"hiker\")) {\n       ruleUrl = jsonZr[i].url;\n}\n    if (jsonZr[i].group == null || jsonZr[i].group == undefined || jsonZr[i].group == '') {\n       ruleGroup = \"暂无分组\";\n}\n    r.content = \"规则作者：\" + ruleAuthor + \"\\n所在分组：\" + ruleGroup + \"\\n站点网址：\" + ruleUrl;\n    r.url = 'hiker://home@' + jsonZr[i].title;\n    r.img = 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime() / i * (i + 1);\n    if ((jsonZr[i].title + jsonZr[i].class_name + jsonZr[i].year_name + jsonZr[i].area_name).includes(getUrl().split('#')[1]))\n    d.push(r);\n}\r\nres.data = d;\r\nsetSearchResult(res);\r","search_url":"hiker://bookmark#**","titleColor":"#ffff7000","group":"⑨其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蜂鸟图片模板-论坛模式","author":"发粪涂墙&名城梦&Killer","version":0,"type":"picture","url":"https://photo.fengniao.com/ajaxPhoto.php?action=getPhotoLists&fid=fyclass&sort=fysort&page=fypage","col_type":"pic_2","class_name":"人像&先·蜂&风光&旅行&新手&生态&纪实&生活&手机&拍妻&车模&其他","class_url":"101&595&125&15&27&16&20&115&22&492&403&999","area_name":"","area_url":"","sort_name":"最新&最热","year_name":"","sort_url":"0_1&1_1","year_url":"","find_rule":"js:\nsetResult(JSON.parse(getResCode()).content.map(\n    data => ({\n        title: data.title,\n        img: data.image,\n        url: 'https://m.fengniao.com/photo/pic_' + data.threadid + '.html'\n    })\n))","searchFind":"","search_url":"","group":"⑨图集","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res={};\nvar d=[];\nvar html = request(MY_URL);\nvar title = pdfh(html,'h1&&Text');//标题需要改动\n\n//————以下不用改动，属于格式————//\nvar size=16;\n//图片显示模式 网页内嵌图片/0 默认海阔显示图片/1\nif(getMyVar('fuliba.bigImg')=='') putMyVar('fuliba.bigImg','pic_1_full');\n\nlet viewPicArray = [{ pic_1_full:\"默认大图🌈\", pic_3:\"精美小图✨\"}];\nputMyVar('fuliba.imgMode',viewPicArray[0][getMyVar('fuliba.bigImg')]);\n\nvar picType = `@lazyRule=.js:putMyVar('fuliba.bigImg',getMyVar('fuliba.bigImg')!=='pic_3'?'pic_3':'pic_1_full');refreshPage();'toast://已切换图片类型';\">`;\n\nfunction getNewText(text,css){\n   return '<'+css+'>' + text + '</'+css+'>';\n}\n\nfunction getBigText(text) {\n    return '<big>' + text + '</big>';\n}\nfunction getSmallText(text) {\n    return '<small>' + text + '</small>';\n}\nfunction getStrongText(text) {\n    return '<strong>' + text + '</strong>';\n}\nfunction getTitleText(text) {\n    return getStrongText(text);\n}\nfunction getColorText(text, color) {\n    return '<font color=\"' + color + '\">' + text + '</font>';\n}\nfunction getGreyText(text) {\n    return getColorText(text, 'grey');\n}\nfunction getAuthorText(text) {\n    return getColorText(text, userColor);\n}\nfunction getCodeText(text) {\n    return '<code>' + text + '</code>';\n}\nfunction getBlockquoteText(text) {\n    return '<blockquote>' + text + '</blockquote>'\n}\nfunction getAddressTag(url, text) {\n    return '<a href=\"' + url + '\">' + text + '</a>'\n}\nfunction getCommentMeta(html) {\n    return getSmallText(html);\n}\nlet headerTitle = getBigText(getStrongText(title)) + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文👀]'));\nd.push({title: headerTitle,});\nd.push({col_type:'line'});\nd.push({col_type:\"rich_text\",title:`<small>当前模式为：<a href=\"hiker://empty`+picType+getMyVar('fuliba.imgMode')+\"</a></small>\"});\n//————以上不用改动，属于格式————//\n\n\n/*\n//————以下为翻页图片模板————//\nvar i = parseDomForHtml(html, \".page&&Text\").split(\"/\")[1];\nvar tp = (html, arr) => {\n    parseDomForArray(html, \".ck-parent-div&&img\").map(item => {\n        arr.push(parseDomForHtml(item, \"img&&src\"));\n    });\n}\nvar htmlUrl = [];\nfor (let p = 2; p <=i; p++) {\n    htmlUrl.push({\n        url: MY_URL+ \"/\" + p + \".html\",\n        \n    });\n}\nvar htmlArr = batchFetch(htmlUrl);\nvar imglist = [];\ntp(html, imglist);\nhtmlArr.map(item =>tp(item, imglist));\n//————以上为翻页图片模板————//\n*/\n\n//————以下为不翻页图片模板————//\nvar imglist = parseDomForArray(html, 'body&&img').map(\n                img => (parseDomForHtml(img, 'img&&src'))\n            );\n//————以上为不翻页图片模板————//\n\n\n\n//————以下为图片显示样式————//\nfor (let k = 0; k < imglist.length; k++){\n    d.push({\n        pic_url:imglist[k],\n        url: imglist[k],\n        col_type:getMyVar('fuliba.bigImg'),\n    });\n}\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"轻松一下🍎","author":"ssl","version":2,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.hhdglm.com/dy.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑨测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"title":"萌果资源","author":"香雅情","version":0,"url":"http://api.appearoo.top/fyAll-fypage.html","col_type":"text_center_1","class_name":"首页&电影&连续剧&综艺&动漫","class_url":"index&vodtype/1&vodtype/2&vodtype/3&vodtype/4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&动画片&纪录片","area_url":"vodtype/6&vodtype/7&vodtype/8&vodtype/9&vodtype/10&vodtype/11&vodtype/12&vodtype/20&vodtype/21","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"vodtype/13&vodtype/14&vodtype/15&vodtype/16","find_rule":".stui-vodlist&&li:has(h3);h3&&Text;*;li--h3&&Text;a&&href","searchFind":".stui-vodlist&&li;h3&&Text;a&&href;em&&Text;li--h3&&Text","search_url":"http://api.appearoo.top/vodsearch/**----------fypage---.html","titleColor":"","group":"⑨资源网","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nd.push({\n\t\t\ttitle: '',\n    desc:'240&&float',\n    url:'',\n\t\tcol_type: 'x5_webview_single'\n});\nrefreshX5WebView('');\nvar html=getResCode();\nvar tabs=parseDomForArray(html,'body&&#playlist');\nvar conts=parseDomForArray(html,'body&&.stui-content__playlist');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".stui-content__thumb&&img&&src\");\nd.push({\n\t\t\ttitle: '剧情简介：'+'    共'+conts.length+'条线路',\n    desc:parseDomForHtml(html, \".stui-content__desc&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nfor(var i in conts){\n  var list=parseDomForArray(conts[i],'body&&input');\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"h3&&Text\"),\n\t\t\tcol_type: 'text_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j in list){\n\t\t\td.push({\n\t\t\t\ttitle:list[j].split('value=\"')[1].split('$')[0],\n      url:list[j].split('$')[1].split('\"')[0]+`@lazyRule=.js:var src = 'https://jsap.attakids.com/?url='+input;refreshX5WebView(src)`,\n      col_type: 'text_2'\n\t\t\t});\n   }\n\n  }\n}\n\n//二级模板by香雅情\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","icon":""},{"last_chapter_rule":"","title":"小高教学网","author":"小🔥星","version":3,"type":"other","url":"https://www.gw54.com/sort/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"绿色软件&资源分享&QQ技术教程&微信技巧&QQ空间技术&其他技术教程&免费域名空间","class_url":"ruanjian&mianfeijishu&qqjishu&wxjq&qqkjjishu&qitajishu&mianfeikongjian","area_name":"游戏技巧&建站知识&自学教程&新媒体运营&摄影剪辑&系统&小说&上传&影音&盒子&学习&娱乐&ios&美图&其他软件&微信小程序&网站源码&活动&会员&流量&红包&实物&其他活动","area_url":"jiqiao&jianzhan&yaxi520&meiti&sheying&xitong&xs&xz&tx&tv&xuexi&yule&ios&meitu&qitaruanjian&vxxcx&wangzhanyuanma&huodong&huiyuan&liuliang&hongbao&shiwu&qitahuodong","sort_name":"","year_name":"休闲娱乐&网站推荐&脚本&值得一看","sort_url":"","year_url":"yule&wz&jiaoben&daohangtx","find_rule":".list-ul&&li;.soft-title&&Text;img&&src.js:input+ \"@Referer=\";.list-ca&&Text;a&&href","searchFind":".list-ul&&li;img&&alt;a&&href;.list-ca&&Text;.list-info&&Text;img&&src.js:input+ \"@Referer=\"","search_url":"https://www.gw54.com/index.php?keyword=**","titleColor":"#ff148e8e","group":"⑨资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/10/28/5L5enP.png"},{"firstHeader":"class","last_chapter_rule":"","title":"央视网","author":"xxs","version":0,"type":"other","url":"https://news.cctv.com/2019/07/gaiban/cmsdatainterface/page/fyclass_fypage.jsonp?cb=fyclass","col_type":"movie_1_left_pic","class_name":"新闻&国内&国际&生活&社会&科技&法治&文娱&教育&健康&经济","class_url":"news&china&world&life&society&tech&law&ent&edu&health&economy","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(request(\"hiker://page/uses\")).rule);\nvar html=getResCode();\n\n\n//var json = JSON.stringify();\n//var js = JSON.stringify(json);\nvar jsb = html.substring(html.indexOf(\"(\") + 1, html.lastIndexOf(\")\"));\n\n//var reg = new RegExp(\"\\\\\\\\\", \"g\");\n//jsb = jsb.replace(reg, \"\");\nvar jsons = JSON.parse(jsb);\n\nfor (var i = 0; i < jsons.data.list.length; i++) {\n    var j = jsons.data.list[i];\n    d.push({\n        title: j.title,\n        desc: j.keywords + '  |““””<font color=\"red\">' + getDateDiff(j.focus_date)+'</font>',\n        pic_url: j.image,\n        url: j.url\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"⑨资讯","detail_col_type":"movie_1","detail_find_rule":"js:\nString.prototype.myReplace=function(f,e) {//吧f替换成e\n    var reg = new RegExp(f, \"g\"); //创建正则RegExp对象   \n    return this.replace(reg, e);\n}\nvar res = {};\nvar d = [];\nhtml = getResCode();\n\nd.push({\n    title: \"<h1>\"+parseDomForHtml(html, \"#title_area&&h1&&Html\")+\"<\\h1>\",\n    col_type: 'rich_text'\n},{\n    title: parseDomForHtml(html, \"#content_area&&Html\").myReplace(\"src=\\\"\",\"src=\\\"http:\"),\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"方法云集\",\"path\":\"uses\",\"rule\":\"function getDateDiff(dateStr) {\\n        var publishTime = getDateTimeStamp(dateStr) / 1000,\\n        d_seconds,\\n        d_minutes,\\n        d_hours,\\n        d_days,\\n        timeNow = parseInt(new Date().getTime() / 1000),\\n        d,\\n \\n        date = new Date(publishTime * 1000),\\n        Y = date.getFullYear(),\\n        M = date.getMonth() + 1,\\n        D = date.getDate(),\\n        H = date.getHours(),\\n        m = date.getMinutes(),\\n        s = date.getSeconds();\\n        //小于10的在前面补0\\n        if (M < 10) {\\n                M = '0' + M;\\n        }\\n        if (D < 10) {\\n                D = '0' + D;\\n        }\\n        if (H < 10) {\\n                H = '0' + H;\\n        }\\n        if (m < 10) {\\n                m = '0' + m;\\n        }\\n        if (s < 10) {\\n                s = '0' + s;\\n        }\\n \\n        d = timeNow - publishTime;\\n        d_days = parseInt(d / 86400);\\n        d_hours = parseInt(d / 3600);\\n        d_minutes = parseInt(d / 60);\\n        d_seconds = parseInt(d);\\n \\n        if (d_days > 0 && d_days < 3) {\\n                return d_days + '天前';\\n        } else if (d_days <= 0 && d_hours > 0) {\\n                return d_hours + '小时前';\\n        } else if (d_hours <= 0 && d_minutes > 0) {\\n                return d_minutes + '分钟前';\\n        } else if (d_seconds < 60) {\\n                if (d_seconds <= 0) {\\n                        return '刚刚';\\n                } else {\\n                        return d_seconds + '秒前';\\n                }\\n        } else if (d_days >= 3 && d_days < 30) {\\n                return M + '-' + D + ' ' + H + ':' + m;\\n        } else if (d_days >= 30) {\\n                return Y + '-' + M + '-' + D + ' ' + H + ':' + m;\\n        }\\n}\\n \\nfunction getDateTimeStamp(dateStr) {\\n          // 如果时间格式为2020/07/09 21:43:19.000  需要去掉.000 不然ios和firefox会有问题\\nreturn Date.parse(dateStr.replace(/-/gi, \\\"/\\\"));\\n}　　\\n\\n//console.log(this.getDateDiff(\\\"2020-07-03 10:03:19.000\\\"));\"}]","icon":"https://p5.img.cctvpic.com/photoAlbum/templet/common/DEPA1604367490409644/logonew190218.jpg"},{"last_chapter_rule":"","title":"小黄书","author":"Timik","version":1,"type":"picture","url":"https://xchina.pro/photos/kind-fyclass/fypage.html;get;UTF-8;{User-Agent@Windows}","col_type":"movie_3","class_name":"写真&人体","class_url":"1&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet arr = pdfa(getResCode(), \".list&&.item\");\n    for (let it of arr) {\n        d.push({\n            title: pdfh(it, \"img&&alt\").replace(/\\[.*\\]/,\"\"),\n\t\t       desc:pdfh(it,\"img&&alt\").split(\"]\")[0].replace(/\\[/,\"\"),\n            pic: pdfh(it, \"img&&src\"),\n            url: \"https://xchina.pro/\" + pdfh(it, \"a&&href\")\n        })\n    }\nsetResult(d);","searchFind":"","search_url":"","group":"⑩NSFW","detail_col_type":"pic_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\ntry {\n    //获取列表规则,为空则为单图片\n    var list_rule = '.photos&&img[alt]';\n    //获取图片规则，基于列表\n    var pic_rule = \".cr_only&&src\";\n    //详情页中的标题，用于下载文件名\n    var title_rule = \".no-scroll&&div&&div&&h1&&Text\";\n    //页数规则\n    var num_rule = \".pager&&div&&a,-2&&Text\";\n    //详情页下一页替换规则\n    var next_url_rule = MY_URL.replace(\".html\", \"\") + \"/{page}.html\";\n    //log({next_url_rule:next_url_rule});\n    //字符串编码\n    var charset = \"UTF-8\";\n    var user_agent = 'Windows';\n    //获取页数\n    var num = parseDomForHtml(html, num_rule);\n    // log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent, 'content-type': 'application/json; charset=' + charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\", i);\n        // log({ next_url: next_url });\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent, 'content-type': 'application/json; charset=' + charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if (list_rule == '') {\n            var pic = parseDomForHtml(x, pic_rule)\n            // log({ pic: pic });\n            pics.push(pic);\n        } else {\n            var list = parseDomForArray(x, list_rule)\n            // log({ list: list })\n            for (var key in list) {\n                var pic = parseDomForHtml(list[key], pic_rule)\n                // log({ pic: pic });\n                pics.push(pic);\n            }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x].replace(\"_600x0\",\"\"),\n            col_type: \"pic_3\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n        title: title + \"(\" + pics.length + \"P)\",\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title').replace(/[:./]/g,\"\");\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj[i];\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"pic_1_full","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"私密套图","author":"byke","version":1,"type":"picture","url":"http://www.smtaotu.com/simi/taomim/fyAll_fypage.html;get;gb2312","col_type":"movie_3","class_name":"性感美女&无圣光&精品套图&高清套图&清纯靓丽&内衣诱惑&性感写真","class_url":"1&25&18&24&2&9&11","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#list&&div&&ul&&li;li&&div&&a&&Text;li&&img&&src;;li&&a&&href","searchFind":"","search_url":"","group":"⑩NSFW","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar pics = [];\n\n// 下一页\n\n\ntry {\n\n    //获取列表规则,为空则为单图片\n    var list_rule = '';\n    //获取图片规则，基于列表\n    var pic_rule = \"#picg&&div&&a&&img&&src\";\n    //详情页中的标题，用于下载文件名\n    var title_rule = \"#picg&&div&&p&&a&&title\";\n    //页数规则\n    var num_rule = \".pagelist&&div&&p&&a,-2&&Text\";\n    //详情页下一页替换规则\n    var next_url_rule = MY_URL.replace(\".html\",\"\") + \"_{page}.html\";\n\t//log({next_url_rule:next_url_rule});\n    //字符串编码\n    var charset = \"gb2312\";\n    var user_agent = 'Windows';\n\n    //获取页数\n    var num = parseDomForHtml(html, num_rule);\n    //log({num:num});\n    let htmlArr = [];\n    htmlArr.push({ url: MY_URL, options: { headers: { 'User-Agent': user_agent,'content-type':'application/json; charset='+charset } } });\n    for (i = 2; i <= num; i++) {\n        var next_url = next_url_rule.replace(\"{page}\",i);\n        log({next_url:next_url});\n        htmlArr.push({ url: next_url, options: { headers: { 'User-Agent': user_agent ,'content-type':'application/json; charset='+charset } } });\n    }\n    htmlArr = batchFetch(htmlArr);\n    var title = parseDomForHtml(htmlArr[0], title_rule);\n    //log({title:title});\n    putVar('title', title);\n    htmlArr.forEach(x => {\n        if(list_rule==''){\n            var pic = parseDomForHtml(x, pic_rule)\n            log({pic:pic});\n            pics.push(pic);\n        }else {\n            var list = parseDomForArray(x, list_rule)\n        log({list:list})\n        for (var key in list) {\n            var pic = parseDomForHtml(list[key], pic_rule)\n            log({pic:pic});\n            pics.push(pic);\n        }\n        }\n    });\n    for (x in pics) {\n        d.push({\n            pic_url: pics[x],\n            url: pics[x],\n            col_type: \"pic_1_full\"\n        });\n    }\n    putVar('pics', pics);\n    d.unshift({\n\t  title:title + \"(\"+pics.length+\")\",\n\t  col_type: 'text_center_1', extra: { lineVisible: false }\n\t});\n    d.push({\n        title: '下载全部图片',\n        url: $(' 是否下载全部图片').confirm(_ => {\n            var picsStr = getVar('pics')\n            var titleStr = getVar('title').replace(/[:./]/g,\"\");\n            var jsonObj = JSON.parse(picsStr);//转换为json对象\n            var pics = [];\n            for (var i = 0; i < jsonObj.length; i++) {\n                var s = jsonObj;\n                log({ p: s });\n                var file = s.split(\".\");\n                var len = file.length\n                var suffix = file[len - 1];\n                if (!fileExist('hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix)) {\n                    saveImage(s, 'hiker://files/download/' + titleStr + '/' + (i + 1) + '.' + suffix);\n                }\n            }\n\n            return 'toast://下载成功';\n        }),\n        col_type: 'text_center_1', extra: { lineVisible: false }\n    });\n\n} catch (error) {\n    log({ error: error });\n}\n\n\n\nres.data = d;\nsetHomeResult(res);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"图片\",\"path\":\"Picture\",\"rule\":\"var html = fetch(input,{});\\nvar picshowArr = [];\\nvar list = parseDomForArray(html,\\\".nc-light-gallery&&img\\\");\\nfor(let i =0;i<list.length;i++) picshowArr.push(parseDom(list,\\\"img&&src\\\"));\\n\\\"pics://\\\"+picshowArr.join(\\\"&&\\\");\"},{\"col_type\":\"movie_3\",\"name\":\"\",\"path\":\"\",\"rule\":\"\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"触站","author":"TyrantGenesis","version":1,"type":"picture","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/huashi6.js'))\nbaseParse()","searchFind":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/huashi6.js'))\nsearchParse()","search_url":"https://rt.huashi6.com/front/works/search?index=fypage&title=**","group":"⑩TyrantG","detail_col_type":"movie_1","detail_find_rule":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/huashi6.js'))\nsecParse()","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/huashi6.js'))\nsecParse()","ua":"pc","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\nhuashi6()","pages":"[]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/chuzhan.png"},{"last_chapter_rule":"","title":"幸运数字","author":"道长","version":1,"type":"other","url":"hiker://empty","col_type":"text_5","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"游戏","year_url":"","find_rule":"js:\nvar d=[];\naddListener('onRefresh', $.toString(()=>{\r\n    clearMyVar(\"win\");\r\n    clearMyVar(\"cnt\");\r\n}));\nd.push({\n    title:'开始游戏',\n    desc:'海阔唯一一款原生游戏',\n    col_type:'text_center_1',\n    url:$(\"#noLoading#\").lazyRule((id) => {\n        let btns=[];\n        let seldict={\n            '人机':20,\n            '简易':40,\n            '中等':60,\n            '困难':80,\n            '噩梦':100,\n            '地狱':150\n        };\n        let num=seldict[getMyVar('sel','人机')];\n        let arr=Array.from({length:num}, (v,k) => k);\n        //列表乱序函数\r\nfunction randomSort(arr) {\r\n    arr.sort(function(a, b) {\r\n        return Math.random() - 0.5;\r\n    });\n    return arr;\n    }\n    var 取随机列表 = function(arr, num) {\r\n    var sData = arr.slice(0), i = arr.length, min = i - num, item, index;\r\n    while (i-- > min) {\r\n        index = Math.floor((i + 1) * Math.random());\r\n        item = sData[index];\r\n        sData[index] = sData[i];\r\n        sData[i] = item;\r\n    }\r\n    return sData.slice(min);\r\n};\nfunction color(text, color) {\r\n    text += \"\";\r\n    if (text.indexOf(\"““””\") === 0) {\r\n        text.replace(\"““””\", \"\");\r\n    }\r\n    return \"““””<font color='\" + color + \"'>\" + text + \"</font>\";\r\n}\nlet answer=parseInt(取随机列表(arr,1)[0])+'';\n        putMyVar('answer',answer);\n    function click(id,val){\n        return $('#noLoading#').lazyRule((id,val)=>{\n                    //log(val);\n                    function color(text, color) {\r\n    text += \"\";\r\n    if (text.indexOf(\"““””\") === 0) {\r\n        text.replace(\"““””\", \"\");\r\n    }\r\n    return \"““””<font color='\" + color + \"'>\" + text + \"</font>\";\r\n}\n                    let tt=parseInt(val)+'';\n                    updateItem({\n            extra: {\n                id: id\n            },\n            title: getMyVar('answer')===tt?color(tt,'red'):tt\n        });\n        let cnt_next=parseInt(getMyVar('cnt','0'))+1;\n        putMyVar('cnt',cnt_next+'');\n        updateItem({\n            extra: {\n                id: 'tips'\n            },\n            desc: '已翻:'+getMyVar('cnt','0')+'次'\n        });\n              if(getMyVar('answer')==tt||getMyVar('win')=='true'){\n                  putMyVar('win','true');\n                  return $('你赢得了游戏！是否重新洗牌?').confirm(()=>{\n                      clearMyVar('win');\n                      clearMyVar('cnt');\n                      refreshPage(false);\n                      return 'hiker://empty'\n                  })\n              }\n                    return 'hiker://empty'\n                },id,val)\n    }\n       arr=randomSort(arr);\n       //log(arr);\n        for(let i=0;i<num;i++){\n            btns.push({\n                title:'？',\n                col_type:'text_5',\n                url:click('btn_'+i,arr[i]),\n                extra:{\n                    id:'btn_'+i\n                }\n            });\n            \n        }\n        let sel=Object.keys(seldict);\n        addItemAfter(id,{\n            title:'本次幸运数字为:'+answer,\n            desc:'翻到此数字赢得胜利,当前难度:'+color(getMyVar('sel','人机'),'#d96715'),\n            url:$(sel,2,'请选择游戏难度').select(()=>{\n                putMyVar('sel',input);\n                refreshPage(false);\n                return 'toast://'+input+'难度已开启，请重新开始游戏尽情发挥吧'\n            }),\n            col_type:'text_1',\n            extra:{\n                id:'tips'\n            }\n        });\n        addItemAfter('tips',btns);\n       deleteItem(id);\n        return \"hiker://empty\"\n    }, 'start'),\n    extra:{\n        id:'start'\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/img/lucky.png"},{"last_chapter_rule":"","title":"道长壁纸","author":"道长","version":3,"type":"cartoon","url":"hiker://empty##fyarea/home.txt#mode=fyclass","col_type":"pic_2_card","class_name":"查看&复制地址","class_url":"read&copy","area_name":"美女&阅读背景&仓库","area_url":"meinv&yuedu&house","sort_name":"","year_name":"","sort_url":"图片","year_url":"","find_rule":"js:\n//log(MY_URL);\nMY_URL='https://gitcode.net/qq_32394351/dr/-/raw/master/img/'+MY_URL.split('##')[1];\nvar mode=MY_URL.split('mode=')[1];\n//log(mode);\nlet html=request(MY_URL).trim();\nlet pics=html.split('\\n').map((it)=>{\n    let name=it.split(',')[0].trim();\n    let pic_url=it.split(',')[1].trim();\n    let url=pic_url;\n    if(mode=='read'){\n        url=pic_url;\n    }else if(mode=='copy'){\n        url=$('#noLoading#').lazyRule((url)=>{\n           // copy(url);\n            return 'copy://'+url\n        },url);\n    }\n    return {\n        title:name,\n        pic_url:pic_url,\n        url:url\n    }\n});\nvar d=pics;\n\nsetResult(d)","searchFind":"","search_url":"","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://gitcode.net/qq_32394351/dr/-/raw/master/img/道长壁纸.png"},{"last_chapter_rule":"","title":"搜大佬","author":"Zruiry&道阻且右&青弦","version":0,"type":"other","url":"https://v1.jinrishici.com/all.json","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n'小棉袄@@小棉袄',\n'发粪涂墙@@发粪涂墙',\n'香雅情@@香雅情',\n'子丑寅卯@@子丑寅卯',\n'路遥@@路遥',\n'镇弟@@镇弟',\n'北城@@北城',\n'入戏太深@@入戏太深',\n'道阻且右@@道阻且右',\n'Reborn@@Reborn',\n'zerOne123@@zerOne123',\n'Zruiry@@Zruiry',\n'断念@@断念',\n'Rx@@Rx',\n'O_O@@O_O',\n'追剧君@@追剧君',\n'♦️@@♦️',\n'♦️@@♦️',\n'♦️@@♦️',\n'♦️@@♦️',\n];\n\nvar t=titles;\nvar res={};\nvar d=[];\nvar hitokoto={};\neval(\"hitokoto=\"+getResCode());\n\nconst num=Math.floor((Math.random()*5))+1;\nconst bigPicUrl=\"https://gitee.com/qingxian555/picture/raw/master/首页图/设计/\"+num+\".jpg\";\n\nd.push(\n{\ntitle:hitokoto.content,\n/*desc:'节选：'+hitokoto.author+'《'+hitokoto.origin+'》'+'\\n类别：'+hitokoto.category,*/\ncol_type: 'pic_1_card',\n\nurl:bigPicUrl,\npic_url:bigPicUrl,\n});\n\n\nd.push({\n title: '⬇️大佬的名字⬇️(排名顺序不分先后)',\n url: 'hiker://home@主页',\n col_type: 'text_center_1'\n});\nfor (var i = 0; i < t.length && i < 20; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = 'hiker://search?s='+k[1]+'&rule=搜大佬';\n r.pic_url = k[2];\n r.col_type = 'text_4';\n d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nlet jsonZr = JSON.parse(fetch('hiker://home', {}));\nlet res = {};\nlet d = [];\nlet n = 0;\nfor (let i = 0; i < jsonZr.length; i++) {\n    if ((jsonZr[i].title + jsonZr[i].author + JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) + JSON.stringify(jsonZr[i].url).match(/.*?hiker.*?/)).includes(getUrl().split('#')[1]))\n        n++;\n}\nd.push({\n    title: '您的本地共有' + jsonZr.length + '条规则',\n    content: \"共搜索到\" + n + \"条结果\",\n});\nfor (let i = 0; i < jsonZr.length; i++) {\n    let r = {};\n    r.title = jsonZr[i].title;\n    let ruleAuthor = jsonZr[i].author;\n    let ruleGroup = jsonZr[i].group;\n    let ruleUrl = JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//);\n    r.desc = \"规则版本：\" + jsonZr[i].version;\n    if (jsonZr[i].author == null || jsonZr[i].author == undefined || jsonZr[i].author == '') {\n        ruleAuthor = \"未知\";\n    }\n    if (JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == null || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == undefined || JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) == '') {\n        ruleUrl = \"无法识别\";\n    }\n    if (JSON.stringify(jsonZr[i].url).includes(\"hiker\")) {\n        ruleUrl = jsonZr[i].url;\n    }\n    if (jsonZr[i].group == null || jsonZr[i].group == undefined || jsonZr[i].group == '') {\n        ruleGroup = \"暂无分组\";\n    }\n    r.content = \"规则作者：\" + ruleAuthor + \"\\n所在分组：\" + ruleGroup + \"\\n站点网址：\" + ruleUrl;\n    r.url = 'hiker://home@' + jsonZr[i].title;\n    r.img = 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime() / i * (i + 1);\n    if ((jsonZr[i].title + jsonZr[i].author + JSON.stringify(jsonZr[i].url).match(/https?:\\/\\/.*?\\//) + JSON.stringify(jsonZr[i].url).match(/.*?hiker.*?/)).includes(getUrl().split('#')[1]))\n        d.push(r);\n}\n\nres.data = d;\nsetSearchResult(res);","search_url":"hiker://Zruiry#**","titleColor":"#fff20c00","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"随机装备.dz","author":"道长","version":2,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://couy.xyz/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/145.png"},{"last_chapter_rule":"","title":"无花果网盘","author":"勇士","version":1,"type":"tool","url":"hiker://empty##https://www.dmxq.fun/vodshow/20--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，滑动返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://pan.whgpc.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"js:\nvar d = []\nfor (var j of JSON.parse(getResCode()).list) {\n    d.push({\n        title: j.name,\n        img: j.pic + \"@Referer=\",\n        url: MY_HOME + '/voddetail/' + j.id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://pan.whgpc.com"},{"last_chapter_rule":"","title":"财联社","author":"","version":0,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://m.cls.cn/index\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"⑩其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimg.alicdn.com%2Fbao%2Fuploaded%2FT1IO.SFjBfXXaCwpjX.png_200x200.jpg&refer=http%3A%2F%2Fimg.alicdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1639148995&t=70d3b5ee66d77512d1066427619e816a"},{"last_chapter_rule":"","title":"代码模板编辑","author":"永远の明日","version":0,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet el = [], oriIndex = parseInt(getVar('ruleTepl-oriIndex', '-1'))\n\nJSON.parse(fetch('hiker://files/rules/rule_template.json')).forEach((v, i) => {\n  el.push({\n    title: '““””<b>' + v.title + '</b> <span style=\"color:grey\"><small>(' + (v.templateType == 'codeBlock' ? '代码块' : '小程序') + ')</small></span>',\n    url: 'copy://' + v.title,\n  }, {\n    title: '读取', col_type: 'flex_button',\n    url: v.templateType == 'codeBlock'\n      ? 'copy://' + v.content\n      : '海阔视界￥home_rule￥' + JSON.stringify(v)\n  }, {\n    title: '删除', col_type: 'flex_button',\n    url: $('确认删除【' + v.title + '】?').confirm((i) => {\n      let template = JSON.parse(fetch('hiker://files/rules/rule_template.json'))\n      template.splice(i, 1)\n      writeFile('hiker://files/rules/rule_template.json', JSON.stringify(template, null, 2))\n      refreshPage(false)\n      return 'hiker://empty'\n    }, i)\n  }, {\n    title: oriIndex >= 0 ? ((i == oriIndex ? '““' : '') + '⇋  ' + (i + 1).toString()) : '移动',\n    col_type: 'flex_button',\n    url: oriIndex >= 0 ?\n      $('#noLoading#').lazyRule((oriIndex, i) => {\n        let template = JSON.parse(fetch('hiker://files/rules/rule_template.json'))\n        template.splice(i, 0, template.splice(oriIndex, 1)[0])\n        writeFile('hiker://files/rules/rule_template.json', JSON.stringify(template, null, 2))\n        putVar('ruleTepl-oriIndex', '-1')\n        refreshPage(false)\n        return 'hiker://empty'\n      }, oriIndex, i)\n      : $('#noLoading#').lazyRule((i) => {\n        putVar('ruleTepl-oriIndex', i.toString())\n        refreshPage(false)\n        return 'hiker://empty'\n      }, i)\n  }, { col_type: 'line_blank' }\n  )\n})\n\nsetResult(el)","searchFind":"","search_url":"","titleColor":"","group":"⑩回收站","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":""},{"last_chapter_rule":"","title":"瓜果视频-2","author":"Timik","version":1,"type":"other","url":"hiker://empty$$$fyclass","col_type":"icon_5","class_name":"向日葵&丝瓜&草莓","class_url":"https://api.xrkapi004.xyz&https://api.sgapi004.xyz&https://api.cmapi004.xyz","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nputVar('host', getHome(MY_URL.split('$$$')[1]));\nvar res = {};\nvar list = JSON.parse(fetch(getVar('host') + '/api/videosort/')).rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: getVar('host') + '/api/videosort/' + data.id + '?orderby=new&page=fypage',\n    pic_url: \"data:image/jpeg;base64,\" + fetch(data.icobase64.url).slice(32)\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar html = fetch(getVar('host')+'/api/videosort/0?page=fypage&serach='+MY_URL.split('$$$')[1]+'&uuid=674d0eb77a5ff867&device=0');\nvar list = JSON.parse(html).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: (data.authername?'演员：'+data.authername:'') + (data.playtimes?'时长：'+data.playtimes:''),\n    pic_url: \"data:image/jpeg;base64,/9j/\"+fetch(data.coverbase64.url).split('/9j/')[1]\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"hiker://empty$$$**","group":"⑩福利","detail_col_type":"movie_2","detail_find_rule":"js:\nvar res = {};\nvar list = JSON.parse(getResCode()).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: (data.authername?'演员：'+data.authername:'') + (data.playtimes?'时长：'+data.playtimes:''),\n    pic_url: \"data:image/jpeg;base64,/9j/\"+fetch(data.coverbase64.url).split('/9j/')[1]\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"js:\nvar list = base64Decode(fetch('https://api.notelive.cn/render/guaguoho',{})).split('#');\n//log({list:list})\nvar urls = [];\nfor (let k in list){\n  urls.push({\n\turl:list[k].match(/htt.*/)\n  })\n}\nurls.shift()\nputVar('urls',urls)\nlog(getVar(\"urls\"))","pages":"[]","proxy":"","icon":"https://wimg.ruan8.com/uploadimg/ico/2019/0722/1563790568190843.jpg"},{"last_chapter_rule":"","title":"秋葵&榴莲","author":"","version":0,"type":"other","url":"http://fyclass/api/videosort/","col_type":"icon_round_small_4","class_name":"秋葵&榴莲","class_url":"api.klpqk.com&yxsp1.com","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: MY_URL+data.id+'?orderby=new&page=fypage',\n    //desc: data.tagName,\n    pic_url: data.icopath\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar lazy = `@lazyRule=Text.js:var u= JSON.parse(input).rescont.videopath;; if(u.search(\"yuanqiplay\")!=-1){ \"https://yxsp1.com/api/index.m3u8?m3u8=\"+u; }else{ u; }`;\nvar items = list.map(data => ({\n    title: data.title,\n    url:MY_URL.split('api/')[0]+'api/videoplay/'+data.id +'?uuid=a2c3d1d461980d00' + lazy,\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"http:/liulianshipin100.com/api/videosort/0?serach=**&page=fypage","group":"⑩秋名山","detail_col_type":"movie_2","detail_find_rule":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar lazy = `@lazyRule=Text.js:var u= JSON.parse(input).rescont.videopath;; if(u.search(\"yuanqiplay\")!=-1){ \"https://yxsp1.com/api/index.m3u8?m3u8=\"+u; }else{ u; }`;\n\nvar items = list.map(data => ({\n    title: data.title,\n    url: MY_HOME + '/api/videoplay/' + data.id + '?uuid=a2c3d1d461980d00' +lazy,\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"瓜果","author":"","version":0,"type":"other","url":"http://fyclass/api/videosort/","col_type":"icon_round_small_4","class_name":"丝瓜&向日葵&草莓&秋葵","class_url":"api.sgbe2.xyz&api.xrkapi004.xyz&api.cmapi004.xyz&api.klpqk.com","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: 'http://api.sgbe2.xyz:80/api/videosort/'+data.id+'?orderby=new&page=fypage',\n    //desc: data.tagName,\n    pic_url: data.icopath\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑩秋名山","detail_col_type":"movie_2","detail_find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: 'http://api.sgbe2.xyz/api/videoplay/'+data.id+'?uuid=74a11c4f-95e6-469c-961c-98ce38ec9bbf'+'@lazyRule=Text.js:JSON.parse(input).rescont.videopath',\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"猫咪·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty#{\n \"access_token\": \"\",\n \"cate_id\": fyAll,\n \"identifier\": \"ffffffff-c67a-899b-ffff-ffffef05ac4a\",\n \"page\": fypage,\n \"region\": 0,\n \"type_id\": 0,\n \"vip\": 0,\n \"year\": \"\"\n}","col_type":"movie_3","class_name":"全部&国产专区&欧美精品&动漫&中文字幕&人气女忧&不雅视频&韩三级&热剧大人版&抖音妹合集&猫咪自拍","class_url":"0&32&16&31&34&35&37&39&40&41&42","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/aes')).rule);\nvar bodys = En(MY_URL.split('#')[1])\nvar html = JSON.parse(De(request('http://119.28.59.69:8089/api/video/index', {\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n method: 'POST',\n body: 'params=' + bodys + '&version=26&sign=' + CryptoJS.MD5('QEBBQADSwrXIXaNqBmMofjfRY/8Sxaxgparams' + bodys + 'version26QEBBQADSwrXIXaNqBmMofjfRY/8Sxaxg')\n})))\nsetResult(html.data.data.map(data => ({\n title: data.name,\n img: data.image,\n // desc:data.\n url: $('http://119.28.59.69:8089/api/video/detail?params=' + En('{\"id\":\"' + data.id + '\"}')).lazyRule(() => {\n eval(JSON.parse(request('hiker://page/aes')).rule)\n return JSON.parse(De(request(input))).data.video_item[0].file\n }),\n col_type: 'movie_3'\n})));","searchFind":"js:\neval(JSON.parse(request('hiker://page/aes')).rule);\nvar bodys = En(MY_URL.split('#')[1])\nvar html = JSON.parse(De(request('http://119.28.59.69:8089/api/special/video?params='+bodys)))\nsetResult(html.data.data.map(data => ({\n title: data.video_name,\n img: data.image,\n // desc:data.\n url: $('http://119.28.59.69:8089/api/video/search?params='+En('{\"id\":\"'+data.video_id+'\"}')).lazyRule(() => {\n\t eval(JSON.parse(request('hiker://page/aes')).rule)\n\t return JSON.parse(De(request(input))).data.video_item[0].file\n\t}),\n col_type: 'movie_3'\n})));","search_url":"hiker://empty#{\"keyword\":\"**\",\"page\":fypage}","group":"⑩秋名山","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"aes\",\"path\":\"aes\",\"rule\":\"eval(getCryptoJS())\\nvar a = CryptoJS.enc.Utf8.parse(\\\"625222f9149e961d\\\")\\n var t = CryptoJS.enc.Utf8.parse(\\\"5efdtf6060e2o330\\\")\\nfunction De(word) {\\n word = CryptoJS.enc.Hex.parse(word)\\n return CryptoJS.AES.decrypt(CryptoJS.enc.Base64.stringify(word), a, {\\n iv: t,\\n mode: CryptoJS.mode.CBC,\\n padding: CryptoJS.pad.Pkcs7\\n }).toString(CryptoJS.enc.Utf8)\\n}\\nfunction En(word) {\\n var Encrypted = CryptoJS.AES.encrypt(word, a, {\\n iv: t,\\n mode: CryptoJS.mode.CBC,\\n padding: CryptoJS.pad.Pkcs7\\n });\\n return Encrypted.ciphertext.toString();\\n};\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"xvideos","author":"","version":0,"type":"other","url":"https://m-xvideos.com/fyAll/fypage[firstPage=https://m-xvideos.com/fyAll]","col_type":"movie_2","class_name":"巨屌&巨乳&巨臀&口交&女同&喷出&中出&ASMR","class_url":"c/Big_Cock-34&c/q:hd/Big_Tits-23&c/q:hd/Big_Ass-24&c/q:hd/Blowjob-15&c/q:hd/Lesbian-26&c/q:hd/Squirting-56&c/q:hd/Creampie-40&c/q:hd/ASMR-229","area_name":"肛交&乱搞&成熟&阿拉伯&中&韩&日&泰","area_url":"c/q:hd/Anal-12&c/q:hd/Fucked_Up_Family-81&c/q:hd/Mature-38&c/q:hd/Arab-159&lang/chinese&lang/korean&lang/japanese&lang/thai","sort_name":"","year_name":"少女&黑人&金发&褐发&红发&颜射&群交&自慰","sort_url":"","year_url":"c/q:hd/Teen-13&c/q:hd/Black_Woman-30&c/q:hd/Blonde-20&c/q:hd/Brunette-25&c/q:hd/Redhead-31&c/q:hd/Cumshot-18&c/q:hd/Gangbang-69&c/q:hd/Solo_and_Masturbation-33","find_rule":"js:\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.title&&Text'),\r\n       desc: parseDomForHtml(list[j], 'span&&Text'),\r\n       pic_url: parseDom(list[j], 'img&&data-src'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.thumb-block');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.title&&Text'),\n            desc: parseDomForHtml(list[j], 'span&&Text'),\n            img: parseDom(list[j], 'img&&data-src'),\n            url: parseDom(list[j], 'a&&href')\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://m-xvideos.com/?k=**&quality=hd&p=fypage@-1@*0@","group":"⑩课外","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};var d = [];\nvar code =getResCode();\nvar url = code.split(\"html5player.setVideoHLS('\")[1].split(\"'\")[0];\nvar hls = request(url).match(/hls-.*?m3u8/g);\nJSON.stringify(hls.sort(function(a,b){return b.match(/\\d+/) - a.match(/\\d+/)}));\nfor (var j in hls) {\nd.push({\n    title:hls[j].split('-')[1].replace('.m3u8',''),\n    url:url.split('hls.')[0]+hls[j],\n    col_type:'text_4'\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bkimg.cdn.bcebos.com/pic/3ac79f3df8dcd1000832c90c7f8b4710b9122f74?x-bce-process=image/resize,m_lfit,w_536,limit_1"},{"firstHeader":"class","last_chapter_rule":"","title":"美拍🐰","author":"","version":0,"type":"video","url":"https://www.meipai.com/squares/new_timeline?page=fypage&count=24&tid=fyAll","col_type":"movie_3_marquee","class_name":"搞笑&爱豆&高颜值&舞蹈&音乐&美食&美妆&萌宠&旅行&手工&游戏&运动&穿秀","class_url":"13&16&474&63&62&59&27&6&426&450&480&487&460","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var json = JSON.parse(getResCode());\n   //log(json.medias.length);\n\tfor (var i = 0; i < json.medias.length; i++) {\n\t\tvar j = json.medias[i];\n\t\t\n\t\td.push({\n\t\t\ttitle: j.caption,\n\t\t\tpic_url: j.cover_pic,\n\t\t\tdesc: j.cover_title,\n\t\t\turl: j.cover_pic.replace('mvimg10','mvvideo10').replace('jpg','mp4'),\n\t\t});\n\t}\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"⑬短视频","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"X5Rule测试工具","author":"Reborn","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nd.push({\n    // title: \"点我测试\",\n    desc: \"请输入链接\",\n    col_type: 'input',\n    extra: {\n        titleVisible: false,\n        type: \"textarea\",\n        height: -1,\n        defaultValue: getVar(\"test-url\", \"\"),\n        onChange: $.toString(() => {\n            putVar(\"test-url\", input)\n        })\n    },\n})\nd.push({\n    title: '点我测试',\n    col_type: 'text_center_1',\n    url: $(\"\").lazyRule(() => {\n        showLoading(\"强力嗅探中，请稍候……\")\n        let inputValue = getVar(\"test-url\", \"\")\n        return $(inputValue).x5Lazy(() => {\n            var urls = _getUrls()\n            /**\n             * exceptKeys 是排除的关键字列表\n             */\n            var exceptKeys = [\"m3u8djksiej\", \"playm3u8\", \"m3u8.tv\", \"min.css\"]\n            fy_bridge_app.log(JSON.stringify(urls))\n            for (var i in urls) {\n                if (exceptKeys.every((key)=> !urls[i].includes(key)) \n                    && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8|\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]\n                }\n            }\n        })\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"⑭工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"YouTube","author":"TyrantGenesis","version":2,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/TyrantG/TEST/youtube.js'))\nbaseParse()","searchFind":"","search_url":"","titleColor":"#bdb2ff","group":"⑳TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\nyoutube()","pages":"[]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/youtube.png"},{"last_chapter_rule":"","title":"斗鱼直播","author":"TyrantGenesis","version":5,"type":"live","url":"https://m.douyu.com","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch(\"hiker://files/rules/TyrantG/LIVE/douyu.js\"))\nbaseParse()","searchFind":"js:\neval(fetch(\"hiker://files/rules/TyrantG/LIVE/douyu.js\"))\nsearchParse()","search_url":"https://m.douyu.com/api/search/anchor?limit=10&offset=fypage@-1@*10@&sk=**;POST","titleColor":"#bdb2ff","group":"⑳TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"const BASE_URL = \"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/\"\nconst LOCAL_URL = \"hiker://files/rules/TyrantG/\"\n\n/* Base Function */\nconst godWriteFile = (path) => {\n  if (Array.isArray(path))\n\tpath.forEach(item => writeFile(LOCAL_URL+item, fetch(BASE_URL+item)))\n  else\n\twriteFile(LOCAL_URL+path, fetch(BASE_URL+path))\n}\n\nconst godSaveFile = (path) => {\n  if (Array.isArray(path))\n\tpath.forEach(item => {\n\t  if (! fileExist(LOCAL_URL+item)) writeFile(LOCAL_URL+item, fetch(BASE_URL+item))\n\t})\n  else\n\tif (! fileExist(LOCAL_URL+path)) writeFile(LOCAL_URL+path, fetch(BASE_URL+path))\n  \n}\n/* Base Function */\n\ngodWriteFile([\"LIVE/douyu.js\", \"public/douyu-tabs.html\"])\ngodSaveFile([\"public/css/element-ui.css\", \"public/js/vue.min.js\", \"public/js/element-ui.js\"])","pages":"[]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/douyu.png"},{"last_chapter_rule":"","title":"虎牙直播","author":"TyrantGenesis","version":3,"type":"live","url":"https://m.huya.com","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/TyrantG/LIVE/huya.js'))\nbaseParse()","searchFind":"js:\neval(fetch('hiker://files/TyrantG/LIVE/huya.js'))\nsearchParse()","search_url":"https://search.cdn.huya.com/?m=Search&do=getSearchContent&plt=m&q=**&uid=0&app=11&v=1&typ=-5&start=fypage@-1@*12@&rows=12","titleColor":"#bdb2ff","group":"⑳TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\nhuya_live()","pages":"[]","proxy":"","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/huya.png"},{"last_chapter_rule":"","title":"企鹅体育","author":"TyrantGenesis","version":1,"type":"live","url":"hiker://empty?page=fypage&_=_","col_type":"scroll_button","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/TyrantG/LIVE/qie_sport.js'))\nbaseParse()","searchFind":"js:\neval(fetch('hiker://files/TyrantG/LIVE/qie_sport.js'))\nsearchParse()","search_url":"https://live.qq.com/api/info/search?keyword=**&from=room;post","group":"⑳TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\nqie_sport_live()","pages":"[]","icon":"https://live.qq.com/nextStatic/img/head/logo.png"},{"title":"站酷","author":"TyrantGenesis","version":2,"type":"picture","url":"https://www.zcool.com.cn/p1/discover/list##fypage","col_type":"","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/zcool.js'))\nbaseParse()","searchFind":"js:\neval(fetch('hiker://files/TyrantG/IMAGE/zcool.js'))\nsearchParse()","search_url":"https://www.zcool.com.cn/p1/search/content?JsonBody={\"word\":\"**\",\"cate_id\":0,\"recommend_level\":0,\"time\":0,\"has_video\":0,\"city_id\":0,\"college_id\":0,\"sort\":5,\"ps\":20,\"column\":4,\"p\":\"fypage\"};POST","titleColor":"#bdb2ff","group":"⑳TyrantG","detail_col_type":"","detail_find_rule":"","sdetail_col_type":"","sdetail_find_rule":"","ua":"pc","preRule":"eval(fetch(\"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/God_Plan.js\"))\nzcool()","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/zcool.jpg"},{"title":"稀土掘金","author":"TyrantGenesis","version":1,"type":"news","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    clearItem('cate_level_1_id')\n    clearItem('cate_level_2_id')\n    clearItem('cursor')\n}))\nconst d = []\nconst EMPTY = 'hiker://empty'\nconst CATE_URL              = 'https://juejin.cn'\nconst SEC_CARE_API          = 'https://api.juejin.cn/recommend_api/v1/tag/recommend_tag_list'\nconst CONTENT_LIST_API      = 'https://api.juejin.cn/recommend_api/v1/article/recommend_cate_tag_feed'\nconst CURRENT_PAGE          = MY_URL.split('##')[1].toString()\nconst CATE_LEVEL_1_ID       = getItem('cate_level_1_id', '')\nconst CATE_LEVEL_2_ID       = getItem('cate_level_2_id', '')\n\nconst CATE_LEVEL_1_ARRAY    = pdfa(fetch(CATE_URL, {headers: {\"User-Agent\": PC_UA}}), '.view-nav&&a')\n\nif (CURRENT_PAGE === '1') {\n    clearItem('cursor')\n    CATE_LEVEL_1_ARRAY.forEach(item => {\n        let id = pdfh(item, '.category-popover-box&&st:state') || ''\n        let title = pdfh(item, '.category-popover-box&&Text')\n        let url = pdfh(item, 'a&&href')\n\n        d.push({\n            title: id === CATE_LEVEL_1_ID ? '‘‘’’<strong><font color=\"red\">'+title+'</font></strong>' : title,\n            url: $(EMPTY).lazyRule(params => {\n                setItem('cursor', '0')\n                setItem('cate_level_1_id', params.id)\n                setItem('cate_level_2_id', '')\n                refreshPage(true)\n                return 'hiker://empty'\n            }, {\n                id: id\n            }),\n            col_type: 'scroll_button'\n        })\n    })\n    d.push({\n        col_type: \"blank_block\"\n    })\n\n    if (CATE_LEVEL_1_ID) {\n        d.push({\n            title: CATE_LEVEL_2_ID === '' ? '‘‘’’<strong><font color=\"red\">全部</font></strong>' : '全部',\n            url: $(EMPTY).lazyRule(_ => {\n                setItem('cate_level_2_id', '')\n                refreshPage(true)\n                return 'hiker://empty'\n            }),\n            col_type: 'scroll_button'\n        })\n        let data = {\"cate_id\": CATE_LEVEL_1_ID}\n\n        let headers = {\n            \"User-Agent\": PC_UA,\n            \"Content-Type\": 'application/json',\n            \"Referer\": 'https://juejin.cn/',\n        }\n        const CATE_LEVEL_2_JSON = fetch(SEC_CARE_API, {headers: headers, method:'POST', body: JSON.stringify(data)})\n        const CATE_LEVEL_2_RESULT = JSON.parse(CATE_LEVEL_2_JSON)\n\n        if (CATE_LEVEL_2_RESULT && CATE_LEVEL_2_RESULT.err_no === 0) {\n            const CATE_LEVEL_2_ARRAY = CATE_LEVEL_2_RESULT.data\n            CATE_LEVEL_2_ARRAY.forEach(item => {\n                d.push({\n                    title: CATE_LEVEL_2_ID === item.tag_id.toString() ? '‘‘’’<strong><font color=\"'+item.color+'\">'+item.tag_name+'</font></strong>' : item.tag_name,\n                    url: $(EMPTY).lazyRule(params => {\n                        setItem('cursor', '0')\n                        setItem('cate_level_2_id', params.id)\n                        refreshPage(true)\n                        return 'hiker://empty'\n                    }, {\n                        id: item.tag_id\n                    }),\n                    col_type: 'scroll_button'\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n    }\n}\n\nconst CURSOR = getItem('cursor', '0')\ndata = {\n    cate_id: \"6809637769959178254\",\n    cursor: CURSOR,\n    id_type: 2,\n    limit: 20,\n    sort_type: 200,\n}\nif (CATE_LEVEL_1_ID) data.cate_id = CATE_LEVEL_1_ID\nif (CATE_LEVEL_2_ID) data.tag_id = CATE_LEVEL_2_ID\n\nheaders = {\n    \"User-Agent\": PC_UA,\n    \"Content-Type\": 'application/json',\n    \"Referer\": 'https://juejin.cn/',\n}\nconst LIST_JSON = fetch(CONTENT_LIST_API, {headers: headers, method:'POST', body: JSON.stringify(data)})\nconst LIST_RESULT = JSON.parse(LIST_JSON)\n\nif (LIST_RESULT && LIST_RESULT.err_no === 0) {\n    setItem('cursor', LIST_RESULT.cursor)\n    log('Data')\n    log(getItem('cursor', '0'))\n    const LIST = LIST_RESULT.data\n    LIST.forEach(item => {\n        d.push({\n            title: item.article_info.title,\n            desc: item.article_info.brief_content,\n            pic_url: item.article_info.cover_image,\n            url: $(CATE_URL+'/post/'+item.article_id).rule(_ => {\n                const d = []\n\n                d.push({\n                    desc: '100% && float',\n                    url: MY_URL,\n                    col_type:\"x5_webview_single\"\n                })\n\n                setResult(d)\n            }),\n            col_type: 'movie_1'\n        })\n    })\n}\n\nsetResult(d)\n","searchFind":"","search_url":"","group":"⑳TyrantG","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://git.tyrantg.com/tyrantgenesis/hikerViewRules/raw/master/assets/images/juejin.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'span&&Text');\nsetResult(\"更新至: \"+title);","title":"阿里云♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"http://www.aliyuntt.com/index.php/vod/show/by/fysort/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"4K&电影&剧集&综艺&动漫&国创&日韩","class_url":"42&1&21&22&23&24&25","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"","sort_url":"time&hits&score","year_url":"","find_rule":"js:\nvar d = [];\n\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.module-items&&.module-item');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyloaded&&data-src') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);\n","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"http://www.aliyuntt.com/index.php/vod/search/page/fypage/wd/**.html","group":"ⓐ珍藏","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html=getResCode();\n\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//默认播放地址(需修改)\nvar lazy =\n`@lazyRule=.player-wrapper&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(player_aaaa.url);if(url.match(/.html/)){var input=url;`+lazy+`}else{url}`;\n\n//地区年份分类主演导演图片\n\nd.push({\n\ttitle: '分类：'+parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g,'')+'  '+parseDomForHtml(html, '.tag-link,2&&Text')+'  '+parseDomForHtml(html, '.tag-link,3&&Text').substring(0, 25)+ '\\n' + parseDomForHtml(html,'.video-info-items,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 30)+'\\n'+parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 33),\tdesc:  '简介:  '+parseDomForHtml(html,'.zkjj_a&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\nurl:setUrl,\n  \ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.module-tab-content&&.module-tab-item');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'div&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))//有可能改Text\n\n}\n//折叠需要用到的\nfunction setTabs(tabs, vari) {\n\nd.push({\n        col_type: 'line'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n\n\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '断插',\n    url: 'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/171.png"},{"last_chapter_rule":"","title":"一个都不能死♔","author":"蓝莓果酱UX","version":4,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://lanmeiguojiang.com/web1/youxi.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"ⓒ珍藏","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/132.png"},{"last_chapter_rule":"","title":"光棍影视♔","author":"蓝莓果酱UX","version":5,"type":"video","url":"https://www.ggyy111.com/show/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"全部&大陆&香港&台湾&美国&法国","area_url":"&大陆&香港&台湾&美国&法国","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.box-item');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.hdtag&&Text'),\n       pic_url: parseDom(list[j], 'a&&img&&src'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.box-item');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], 'a&&Text'),\n            content: parseDomForHtml(list[j], '.hdtag&&Text'),\n            img: parseDom(list[j], 'a&&img&&src'),\n            url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://www.ggyy111.com/search/**----------fypage---.html","group":"ⓓ影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n/*免嗅地址*/\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候...');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n/*线路↓*/\nvar arts = parseDomForArray(html, 'body&&.panel-heading');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').split('-')[1])\n}\n/*线路*/\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.dslist-group');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n/*选集*/\n\n\n//以下头框\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.li_r,1&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, '.li_r,2&&Text').substring(0, 80) + '\\n' + parseDomForHtml(html, '.li_r,4&&Text').substring(0, 60),\n    //定位描述\n    desc: ' 更新于：' + parseDomForHtml(html, 'em&&Text').substring(0, 15),\n    //定位图片\n    pic_url: parseDom(html, '.img-thumbnail&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar desc = parseDomForHtml(html, 'body&&.summary&&Text').replace('[收起部分]','').replace('　',''); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 40) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\n/*   😜  这里是线路和选集，可以不用修改！！！*/\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #5599FF\">正在使用逆序</span></b>' : '““””<b><span style=\"color: #9955FF\">正在使用正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n})\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/135.png"},{"last_chapter_rule":"","title":"七二零♔","author":"蓝莓果酱UX","version":5,"type":"video","url":"https://www.720kp.cn/kanshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&纪录片","class_url":"1&2&3&4&21","area_name":"全部&大陆&香港&台湾&美国&法国","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018","find_rule":"body&&.pack-ykpack;a&&title;.eclazy&&data-original.js:input+\"@Referer=\";.pack-prb&&Text;a&&href.js:input +\"#immersiveTheme#\"","searchFind":"body&&.ec-search&&li;a&&title;a&&href.js:input +\"#immersiveTheme#\";.pack-prb&&Text;.ecitem-desc&&Text;.eclazy&&data-original.js:input+\"@Referer=\"","search_url":"https://www.720kp.cn/kansearch/**-------------.html","group":"ⓓ影视","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];\nvar html=getResCode();\n//默认播放地址(需修改)\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.rmvb|pt=m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace('/player/?url=','')\n        }\n    }\n});\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.desc_txt&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.s-cover&&img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.play_source_tab&&a');\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))//有可能改Text\n\n}\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl: getUrl(),\ncol_type:'movie_1_vertical_pic_blur'\n});\nd.push({\n    col_type: 'line'\n});\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'text_5'\n        })\n    }\n}\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line'\n    }); \nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/137.png"},{"last_chapter_rule":"","title":"大象影视♔","author":"蓝莓果酱UX","version":8,"type":"video","url":"https://www.daxiangtv.net/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&|♔|&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&冒险片&武侠片&奇幻片&|♔|&国产剧&港台剧&日韩剧&欧美剧&海外局","class_url":"1&2&3&4&|♔|&6&7&8&9&10&11&12&22&31&32&33&|♔|&13&14&15&16&82","area_name":"全部&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], 'a&&data-original') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'a&&title'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], '.detail--h4&&Text') + '\\n' + parseDomForHtml(list[j], 'body&&Text') + '\\n' + parseDomForHtml(list[j], 'body&&Text'),\n        //定位图片\n        img: parseDom(list[j], 'a&&data-original') + \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.daxiangtv.net/vodsearch/-------------.html?wd=**&submit=","titleColor":"","group":"ⓓ影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\nvar arts = parseDomForArray(html,'.nav&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n\ttitle: parseDomForHtml(html, '.data&&Text').replace('分类|','').replace('地区：','').replace('年份：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.data,2&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,1&&Text').substring(0, 15),\n\tdesc:parseDomForHtml(html,'.sketch&&Text').substring(0, 16),\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: MY_URL,\n\tcol_type: 'movie_1_vertical_pic_blur'\n});\n\nvar des_desc = parseDomForHtml(html, '.sketch&&Text');\n d.push({\n          title: des_desc.length > 46 ? des_desc.replace(des_desc, des_desc.substring(0, 46) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n         url: 'hiker://empty#' + parseDomForHtml(html,'body&&.myui-content__detail&&Html').split('/h1>')[1].replace(/;/g,'').replace(/<p/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,      \n          col_type: 'text_1'\n});\n/*\nvar lazy= `@lazyRule=body&&.embed-responsive&&script&&Html.js:eval(input);player_aaaa.url`\n*/\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/https.*url=/,'')\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('通用解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序切换’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: list.length > 3 ? 'text_4' : 'text_2'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: list.length > 3 ? 'text_4' : 'text_2'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/9.png"},{"last_chapter_rule":"","title":"天堂电影♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://m.kkdsa.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&犯罪电影","area_url":"6&7&8&9&10&11&12&20&21","sort_name":"","year_name":"国产剧&香港剧&台湾剧&日本剧&韩国剧&欧美剧&海外剧","sort_url":"","year_url":"13&14&15&16&22&23&24","find_rule":"body&&.card;img&&alt;.lazy&&data-original;.label&&Text;a&&href","searchFind":"body&&.card;img&&alt;a&&href;.label&&Text;.card-heading&&Text;.lazy&&data-original","search_url":"https://m.kkdsa.com/vodsearch/----------fypage---.html?wd=**","titleColor":"272727","group":"ⓓ影视","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar lazy=`@lazyRule=#bofang_box&&script&&Html.js:eval(input);var url=player_aaaa.url;var xx=player_aaaa.from;if(xx=='bjyun'){url.split('/share')[0]+fetch(url,{headers:{\"User-Agent\":\"Mozilla/5.0\",\"Referer\":\"https://m.kkdsa.com\"}}).match(/url: \\'(.*?)\\'/)[1]}else if(xx=='dbyun'){url.split(\"\\/share\")[0]+fetch(url,{}).split(\\'main = \"\\')[1].split(\\'\"\\')[0]}else{url}`\n\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h2&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'p,6&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'img&&src');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.pull-left');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.play-list');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('[ ]',''))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'movie_1_vertical_pic'\n});\n\n//折叠需要用到的\nd.push({\n        col_type: 'line_blank'\n    })\nfunction setTabs(tabs, vari) {\n    for (var i = 0; i < tabs.length; i++) {\n\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\",\n            col_type: 'flex_button'\n        })\n    }\n    d.push({ col_type: 'blank_block' });\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘正逆序：’’',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/8.png"},{"last_chapter_rule":"","title":"无限影视♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"https://www.wxtv.net/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-');get;utf-8;{User-Agent@Mobile}","col_type":"movie_3","class_name":"连续剧&电影&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&香港剧&韩国剧&欧美剧&日本剧&台湾剧","class_url":"2&1&3&4&6&7&8&9&10&11&12&13&14&15&16&20&21","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\n\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n        pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\r\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\r\n    });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://www.wxtv.net' + j.pic;\n    r.url = 'https://www.wxtv.net/voddetail/' + j.id + '/' + \"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.wxtv.net/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","group":"ⓓ影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = `@lazyRule=.js:eval(parseDomForHtml(request(input,{}),'.myui-player__box&&script&&Html'));var url=player_aaaa.url;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(JSON.parse(fetch('hiker://page/globalParse?rule=道长仓库Pro', {})).rule);lazyParse(\"http://www.youhuifuligou.com/json/?id=1&url=\"+url,3000)}else{url}`;\n\nvar arts = parseDomForArray(html, '.nav&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n    title: parseDomForHtml(html, '.data,2&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, '.data,3&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 20),\n    desc: ' 简 介：' + parseDomForHtml(html, '.data,5&&Text').replace('　　', '').substring(0, 18) + '\\n' + parseDomForHtml(html, '.data,5&&Text').substring(18, 40) + '…',\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/movie/10.svg\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/movie/58.svg\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=②精品',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/movie/5.svg\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/01/豆瓣.svg\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line'\n});\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'text_4'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line'\n    });\n    \nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/4.png"},{"firstHeader":"class","last_chapter_rule":"","title":"九州电影♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"http://www.jiuzhou911.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.channel&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.other&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".sul&&li;a&&title;h4&&a&&href;p,0&&Text;p,-1&&Text;img&&data-original","search_url":"http://www.jiuzhou911.com/search.php?page=fypage&searchword=**","titleColor":"#ff228be6","group":"ⓓ影视","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n//简介\nvar des_desc = parseDom(getResCode(), '.cdes1&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.img&&img&&src');\n//线路\nvar tabs = parseDom(getResCode(), '.row-l&&Html').match(/h2[\\s\\S]*?<\\/h2/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"stab_list[\\s\\S]*?<\\/div>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'text_center_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split(\">\")[1].split(\"<\")[0],\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n      col_type: 'text_5',\n\t\t\t\turl: 'http://www.jiuzhou911.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.playerall&&script&&Html.js:eval(input);now`,\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/10.png"},{"last_chapter_rule":"","title":"轻松时刻♔","author":"蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://lanmeiguojiang.com/xiaojiejie/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"ⓖ视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"last_chapter_rule":"","title":"轻松一刻♔","author":"蓝莓果酱UX","version":2,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://t.xxgeek.com/tools/mmvod/m.php\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"ⓖ视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"last_chapter_rule":"","title":"视界直播12.29","author":"小棉袄🌞入戏","version":32,"type":"live","url":"hiker://empty##https://shuyuan.miaogongzi.net/shuyuan/1640775401.txt","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"❶直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                .replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"超清直播.1080","author":"入戏","version":0,"type":"live","url":"hiker://empty##https://wds.ecsxs.com/222806.txt","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1])\nsetResult(data);","searchFind":"js:\nlet rule = JSON.parse(fetch(\"hiker://home@\" + MY_RULE.title))\nlet key = MY_URL.split(\"##\")[1];\nMY_URL = rule.url;\nvar data = [];\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\")\nrenderLiveData(MY_URL.split(\"##\")[1], key)\nsetResult(data);","search_url":"hiker://empty##**","group":"❶直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\nfunction renderLiveData(url, filter) {\\n    try {\\n        let _d = [];\\n        try {\\n            let net = request(url, {\\n                headers: {\\n                    Referer: getReferer(url)\\n                }\\n            });\\n            if (net.includes(\\\"<html>\\\")) {\\n                throw \\\"not xxx\\\";\\n            }\\n            var txts = net.replace(/#EXTINF:-1 ,/g, '')\\n                .replace(/#EXTINF:-1,/g, '')\\n                .replace(/\\\\n#genre#/g, ',#genre#')\\n                .replace(/#EXTINF:-1/g, '')\\n                .replace(/group-title=\\\"/g, '')\\n                .replace(/\\\\nhttp/g, ',http')\\n                .replace(/=/g, '')\\n                .replace(/，#/g, ',#')\\n                .replace(/\\\",/g, '/')\\n                .replace(/ /g, '')\\n                .split('\\\\n');\\n            const d1 = []\\n            for (var i = 0; i < txts.length; i++) {\\n                var r = {};\\n                var j = txts[i].split(',');\\n                if (txts[i].indexOf(\\\"#EXTINF\\\") == 0 &&\\n                    j.length == 3 && j[2].indexOf(\\\"http\\\") == 0) {\\n                    r.title = j[1].split('/')[j[0].split('/').length - 1];\\n                    r.url = j[2].replace(`\\\\n`, '').replace('\\\\r', '');\\n                    if (r.url.indexOf(\\\"http\\\") == 0) {\\n                        r.url = r.url + \\\"#isVideo=true#\\\";\\n                    }\\n                    d1.push(r);\\n                    continue;\\n                }\\n\\n                if (j.length < 2) {\\n                    continue;\\n                }\\n                r.title = j[0].split('/')[j[0].split('/').length - 1];\\n                if (filter != null && !r.title.includes(filter)) {\\n                    continue;\\n                }\\n                r.url = j[1].replace(`\\\\n`, '').replace('\\\\r', '');\\n                if (r.url.indexOf(\\\"http\\\") == 0) {\\n                    r.url = r.url + \\\"#isVideo=true#\\\";\\n                }\\n                d1.push(r);\\n            }\\n            //多线路\\n            const d2 = {}\\n            for (let it of d1) {\\n                if (d2[it.title] == null) {\\n                    d2[it.title] = []\\n                }\\n                d2[it.title].push(it.url)\\n            }\\n\\n            for (let it of Object.keys(d2)) {\\n                _d.push({\\n                    title: it,\\n                    url: JSON.stringify({\\n                        urls: d2[it]\\n                    })\\n                })\\n            }\\n        } catch (e) {}\\n        if (_d && _d.length) {\\n            data = data.concat(_d)\\n            saveFile(\\\"data.json\\\", JSON.stringify(_d));\\n        } else {\\n            let _td = readFile(\\\"data.json\\\");\\n            if (_td) {\\n                data = data.concat(JSON.parse(_td))\\n            }\\n        }\\n    } catch (e) {\\n        data.push({\\n            title: \\\"数据加载失败\\\",\\n            desc: JSON.stringify(e),\\n            col_type: \\\"text_1\\\"\\n        })\\n    }\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"有容","author":"轻合集生成器","version":100,"type":"all","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nlet disableHome = !!readFile('disableHome',0);\n// log('typeShow:'+typeShow);\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nvar mySub = (function (){\n    require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/subscribe.js'); // 引入道长订阅\n    return 道长主页(true)\n})();\nconst path = mySub.subPath;\n// const cfg = mySub.cfg;\n// const subs = mySub.subs;\nconst sub_count = mySub.sub_count;\n// const cms_config = mySub.cms_config;\nconst nowData = mySub.nowData;\nconst nowSub = mySub.nowSub;\nconst subBtns = mySub.el;\nlet iconApi = mySub.iconApi;\nif(typeof(iconApi)==='undefined'||!iconApi){\n    iconApi = false;\n}\nlet el = [], rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nlet isXj=(typeof(MY_NAME)!='undefined' && MY_NAME == '嗅觉浏览器');\nif(!disableHome&&!isXj){\neval(fetch(\"hiker://assets/home.js\"));\nvar _urgent=false;\nel=el.concat(HikerHome.load(\"main\",_urgent));\n}\nlet rule_cnt=typeof(getRuleCount)==='function'?getRuleCount():'未知';\nlet tips='小程序:'+rule_cnt+' 订阅:'+sub_count;\nel.push({\n    url: '\"hiker://search?s=\"+input',\n    desc: tips+' 搜你要...',\n    title: '搜索',\n    col_type: 'input',\n    extra: {\n        rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        }, QING_TITLE, typeShow,disTabModify),\n        defaultValue: getMyVar('searchKey', ''),\n        onChange: \"putMyVar('searchKey',input)\"\n    }\n});\nel = el.concat(subBtns); // 连接订阅设置和切换按钮\nel.push({\n    col_type:\"blank_block\",\n});\nlet appKey = getMyVar('appKey','');\nif(appKey){//有搜索关键字则筛选\n    rules = rules.filter(it=>it.title.includes(appKey)||it.url.includes(appKey));\n}\n\nfunction getCateUrl(show){ // 空白字符串,全部,英语，中文\n    return $('#noLoading#').lazyRule((show,typeShow,disTabModify)=>{\n        if(disTabModify){//禁用了自定义分类\n            if(!show){//全部\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }else{\n            if(!show||show==='全部'){\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }\n\n        if(((!typeShow&&show!=='全部')||(typeShow&&typeShow!==show))&&!(!typeShow&&!show)){\n            // log('typeShow:'+typeShow+'!=show:'+show);\n            refreshPage(false);\n        }\n        return 'hiker://empty'\n    },show,typeShow,disTabModify);\n}\n\nlet typeBtns = [];\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            typeBtns.push({\n                title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n                url:getCateUrl(k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    let typeNow = typeShow || '全部';\n    types.forEach((its)=>{\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length;\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url||it.sort_url==='其他').length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        typeBtns.push({\n            title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n            url: getCateUrl(its),\n            col_type: 'scroll_button'\n        })\n\n    });\n\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\nlet searchTitle = appKey?small(color(' :'+appKey.slice(0,5), '#12b668')):'';\ntypeBtns.splice(1,0,{\n    title:'🔍'+searchTitle,\n    col_type:'scroll_button',\n    url:$(appKey,'请输入小程序名称|链接').input(()=>{\n        putMyVar('appKey',input);\n        refreshPage(false);\n        return 'hiker://empty'\n    })\n});\nel = el.concat(typeBtns);\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || (iconApi?iconApi+v.title:'hiker://images/icon1'),\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true,\n                nowData: nowData\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"乃大","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'hiker://files/rules/dzHouse/ruleCache/cmsData.json');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\n    addListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n/*\\nel.push({\\n    title:'““””' + '🏅'.small() + '&nbsp 订阅管理 &nbsp'.bold().fontcolor('#757575'),\\n    url:$('hiker://empty').rule(()=>{\\n        setPageTitle('订阅管理');\\n        require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/subscribe.js');\\n        一级();\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n */\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode === '导入海阔') {\\n    el.push({\\n        title:'搜索',\\n        desc:'输入小程序标题|地址进行搜索...',\\n        url:$.toString(()=>{\\n            refreshPage(false);\\n        }),\\n        col_type:'input',\\n        extra: {\\n            onChange: \\\"putMyVar('importSearchKey',input)\\\",\\n            titleVisible: true,\\n            defaultValue:getMyVar('importSearchKey','')\\n        },\\n    });\\n    el.push({\\n        title: '全部导入(非搜索过滤后结果)',\\n        url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n        col_type: 'text_center_1',\\n        extra: {lineVisible: false}\\n    });\\n}\\nvar datas = (disableCustom ? data : JSON.parse(readFile('customData') || '[]'));\\nlet sk = getMyVar('importSearchKey','');\\nif(editMode === '导入海阔'&&sk) {\\n    datas = datas.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n    data = data.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n}\\ndatas.forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]));\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\n    const QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    {\\n        RULE,\\n        isIndex,\\n        pageTitle,\\n        nowData\\n    } = MY_PARAMS,\\n    thisRULE = {}\\nif (nowData) {\\n    //log(nowData);\\n    let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n    thisRULE = JSON.parse(fetch(pt)).find((v) => v.title == RULE.title)\\n} else {\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\n}\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title, nowData) => {\\n                    let rules = []\\n                    let r = {}\\n                    if (nowData) {\\n                        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n                        r = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n                    } else {\\n                        r = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == title)\\n                    }\\n                    rules = [r]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title, nowData),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule2 = RULE.preRule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(thisRULE.title + \\\"@pre\\\", \\\"no\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url,nowData) => {\\n    let RULE = {}\\n    if (nowData) {\\n        //log(nowData);\\n        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n        RULE = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n    } else {\\n        RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    }\\n    return {\\n        title:title,\\n        url: url,\\n        pages: RULE.pages,\\n        pageList: JSON.parse(RULE.pages || '[]')\\n    }\\n}, QING_TITLE, RULE.title,MY_RULE.url, nowData)\\n\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) {\\n        return rule\\n    }\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm','copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title,\\n                nowData: nowData\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), {\\n                        detail_find_rule: detailFindRule\\n                    }),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"主页元素\",\"path\":\"home_item\",\"rule\":\"const Gtimeout=500; //全局超时\\nconst avatarPic=\\\"http://q1.qlogo.cn/g?b=qq&nk=434857005&s=640\\\"; //头像链接\\n\\nvar range = function (min,max) {\\nreturn Math.floor(Math.random()*(max-min))+min;\\n};\\n\\nfunction getOne(items) {\\n    return items[Math.floor(Math.random() * items.length)]\\n}\\nfunction getSay() {//获取一言\\n   let sc='https://v2.jinrishici.com/one.json';\\n    var colors = ['grey', '#ff7512', '#cb54ff', '#ff5358', '#ff9044', '#7678ff', '#34b1ff'];\\n    let word = \\\"此情若是长久时,网络不好可不行\\\";\\n    let sjsc=\\\"\\\";\\ntry{\\nsjsc=JSON.parse(request(sc,{timeout:Gtimeout})).data.content;\\n}catch(e) {sjsc = word;}\\n      let say = '<small><font color=\\\"' + getOne(colors) + '\\\">' + sjsc + '</font></small>';\\n    return say\\n}\\n\\n$.exports.getSay=getSay;\\n$.exports.avatarPic=avatarPic;\\n$.exports.Gtimeout=Gtimeout;\\n$.exports.range=range;\\n$.exports.getOne=getOne;\"}]","proxy":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/=>https://gitcode.net/qq_32394351/dr/-/raw/master/js/","icon":"https://cdn.jsdelivr.net/gh/alist-org/logo@main/logo.svg"},{"last_chapter_rule":"","title":"爱优腾","author":"","version":0,"url":"https://v1.jinrishici.com/all","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"https://www.520juhui.top/","find_rule":"js:\nvar titles = [\n\n '优酷™  @@  https://m.youku.com@@https://ae01.alicdn.com/kf/H8bb923925af44d47870300d34782de55i.png?glideCache=skip',\n\n  '爱奇艺™@@https://m.iqiyi.com@@https://ae01.alicdn.com/kf/H7f83f4193f6c4810bb3cde3ebc9a1cd6X.png?glideCache=skip',\n\n  '腾讯™  @@  https://m.v.qq.com@@https://ae01.alicdn.com/kf/H89104aa906944448a5154f3b76c951f4y.png?glideCache=skip',\n\n  '咪咕™  @@  https://m.miguvideo.com@@https://ae01.alicdn.com/kf/Hfd61468f6fc9437bbba24cb2711055f9k.png?glideCache=skip',\n\n  '芒果™  @@  https://m.mgtv.com@@https://ae01.alicdn.com/kf/H6615610baee34bfeb4d3d22ed1aeedfcn.png?glideCache=skip',\n\n  '哔哩™  @@  https://m.bilibili.com/index.html@@https://ae01.alicdn.com/kf/Hf0e6c6020eba44aca267c43cba770183o.png?glideCache=skip',\n\n  '乐视™  @@  http://m.le.com/@@https://ae01.alicdn.com/kf/H1f0a1ee56b9448fb923f3dfeb3176af1K.png?glideCache=skip',\n\n  '搜狐™  @@  https://m.tv.sohu.com/@@https://ae01.alicdn.com/kf/H0604ed7ec5424e10b950281e38c63407Q.png?glideCache=skip',\n\n\n  'PPTV™@@https://m.pptv.com/@@https://ae01.alicdn.com/kf/Ha07ebe600df94e9da592a63c8336a0d8R.png?glideCache=skip',\n\n  '风行™  @@  http://m.fun.tv/@@https://ae01.alicdn.com/kf/H5cae2ec6c51e47e498a3388d1ff26edfK.png?glideCache=skip',\n\n  '1095 @@https://vip.1905.com/listm/p1o1.shtml/@@https://ae01.alicdn.com/kf/He517a9b732c543528c1d6b7dcf6a6462x.png?glideCache=skip',\n\n  '搜狗视频@@http://m.v.sogou.com/?source=node&spver=@@https://ae01.alicdn.com/kf/Hef3d43b3150642d4a72d0bcefced0f54k.jpg?glideCache=skip'\n\n\n];\n\nvar t = titles;\nvar res = {};\nvar d = [];\nvar hitokoto = {};\neval('hitokoto=' + getResCode());\n\nd.push({title:hitokoto.content,url:\"  https://movie.douban.com/tag/#/\",desc:'类别：'+hitokoto.category+'                                                                                                        作者：'+hitokoto.author+'《'+hitokoto.origin+'》',\ncol_type: 'pic_1',\n\n   url:\"https://fulibus.net/\",\n   pic_url: 'https://acg.xydwz.cn/gqapi/gqapi.php?t=' + new Date().getTime()\n});\n\nfor (var i = 0; i < t.length && i < 12; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  var r = {};\n  r.desc = k[0];\n  r.url = k[1];\n  r.pic_url = k[2];\n  r.col_type = 'pic_3';\n  d.push(r);\n}\n\nfor (var i = 12; i < t.length; i++) {\n  var k = t[i].split(/\\s*@@\\s*/);\n  if (k.length < 1) continue;\n  var r = {};\n  r.title = k[0];\n  r.url = k[1];\n  r.col_type = 'text_3';\n  d.push(r);\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff7000","group":"其他","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"last_chapter_rule":"","title":"望山学堂","author":"","version":1,"url":"https://open.163.com/fyclass;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64)}","col_type":"movie_3","class_name":"国内名校&国外名校&可汗学院","class_url":"cuvocw&ocw&khan","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res = {};var d = [];\n\nvar content = parseDom(getResCode(), 'body&&Html');\nvar content_list =parseDomForArray(content, 'body&&.m-cate');\nvar list=[];\nfor(var i in content_list){\nif(content_list[i].indexOf(\"小编推荐\")==-1){\nlist.push('<body>' + content_list[i] + '</body>');\n  }\n}\n\nfor(var j in list){\nvar list_list = parseDomForArray(list[j], 'body&&.g-cell1');\n\nfor(var v in list_list){\nif(list_list[v].indexOf(\"u-tag\")!=-1){\nd.push({\ntitle:parseDomForHtml(list_list[v],'h2&&Text'),\nurl:'',\ncol_type:'text_center_1'\n});\n  }else{\n\ntry{\nvar desc_text=parseDomForHtml(list_list[v],'.sub&&Text');}catch(e){}\n\nd.push({\ntitle:parseDomForHtml(list_list[v],'h5&&Text'),\ndesc:desc_text,\npic_url:parseDomForHtml(list_list[v],'.lazy&&data-original'),\nurl:parseDomForHtml(list_list[v],'.u-cover&&href').replace(/&mid[\\s\\S]*?/g,''),\ncol_type:'movie_2'\n});\n    }\n  }\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"","group":"其他","detail_col_type":"movie_1","detail_find_rule":"js:var res = {};var d = [];\n\nvar html=getResCode();\n\nvar des_pic = parseDom(html, 'body&&.content-left&&img&&src');\n\nvar des_title = parseDomForHtml(html, 'body&&.content-title&&Text');\n\nvar des_desc = parseDomForHtml(html, 'body&&.content-desc&&Text');\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:getUrl(),\ncol_type:'pic_1'\n});\n\nvar des_intro = parseDomForHtml(html, 'meta[name=\"description\"]&&content');\n\nd.push({\ntitle:'课程简介',\nurl:'',\ncol_type:'text_center_1'\n});\n\nd.push({\ntitle:des_intro,\ncol_type:'long_text'\n});\n\nd.push({col_type:'line_blank'});\n\nd.push({\ntitle:'课程列表',\ncol_type:'text_center_1'\n});\n\nvar content=unescape(parseDomForHtml(html, 'body&&script:not([src])&&Html').replace(/\\\\u/g, '%u'));\n\neval(content.replace('window.__NUXT__', 'var content'));\n\nvar list=content.data[0].movieInfoList;\n\nfor(var i in list){\nd.push({\ntitle:'【第'+list[i].num+'集】'+list[i].title,\nurl:'https://open.163.com/newview/movie/free?pid='+content.data[0].plid+'&mid='+list[i].mid+'#'+i+`@lazyRule=.js:try{var get=fetch(input,{headers:{\"User-Agent\":\"Mozilla/5.0 (Windows NT 10.0；； WOW\"}});var get=unescape(parseDomForHtml(get, 'body&&script:not([src])&&Html').replace('window.__NUXT__', 'var content').replace(/\\\\u/g, '%u'));eval(get);var id=input.split('#')[1];var url_list=content.state.movie.moiveList[id];if(url_list.m3u8ShdUrl!=''){url_list.m3u8ShdUrl}else if(url_list.mp4ShdUrl!=''){url_list.mp4ShdUrl}else if(url_list.m3u8HdUrl!=''){url_list.m3u8HdUrl}else if(url_list.mp4HdUrl!=''){url_list.mp4HdUrl}else if(url_list.m3u8SdUrl!=''){url_list.m3u8SdUrl}else if(url_list.mp4SdUrl!=''){url_list.mp4SdUrl}else if(url_list.mp4ShareUrl!=''){url_list.mp4ShareUrl}else{input}}catch(e){input}`,\ncol_type:'text_1'\n});\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]"},{"last_chapter_rule":"","title":"PS教程自学网","author":"子丑寅卯","version":4,"url":"http://m.16xx8.com/photoshop/fyAll/fypage","col_type":"pic_1_card","class_name":"基础教程&滤镜教程&文字特效&美化教程&调色教程&照片处理&抠图教程&合成教程&修复教程&制作实例&网页设计&绘画教程","class_url":"xinshoujiaocheng&lvjingtexiao&wenzitexiao&meihuajiaocheng&diaosejiaocheng&xiaoguojiaocheng&koutujiaocheng&hechengjiaocheng&xiufujiaocheng&zhizuoshili&wangyesheji&shuhuijiaocheng","area_name":"新手教程&技巧教程&工具教程&通道教程&其它教程&理论教程&人物调色&风景调色&影楼调色","area_url":"xinshoujiaocheng/rumen&xinshoujiaocheng/jiqiao&xinshoujiaocheng/gongju&xinshoujiaocheng/tongdao&xinshoujiaocheng/qita&xinshoujiaocheng/lilun&diaosejiaocheng/renwu/&diaosejiaocheng/jingwu/&yinglou","sort_name":"磨皮教程&人像精修&美白教程&上色教程&美容瘦身","year_name":"滤镜做图&滤镜使用&边框教程&动画教程&闪图闪字&立体字&普通字&火焰字&冰雪字&金属字&可爱字","sort_url":"meihuajiaocheng/mopi&diaosejiaocheng/pifu&meihuajiaocheng/meibai&meihuajiaocheng/shangse&meihuajiaocheng/huazhuang","year_url":"lvjingtexiao/lvjingtu&lvjingtexiao/shiyong&biankuangjiaocheng&ir/donghua&ir/shanzi&wenzitexiao/3d&wenzitexiao/putong&huoyanzi&bingxuezi&jinshuzi&keaizi","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), 'body&&.entry-header-inner');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),       \r\ndesc: parseDomForHtml(list[j], 'span,3&&Text'),       \r\npic_url: parseDomForHtml(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), 'body&&.entry-header-inner');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'h2&&Text'),       \r\ndesc: parseDomForHtml(list[j], 'span,3&&Text'),       \r\npic_url: parseDomForHtml(list[j], 'img&&src'),       \r\nurl: parseDom(list[j],'a&&href')  \r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://m.16xx8.com/page/fypage?s=**","group":"其他","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{ \r\nd.push({       \r\ntitle: parseDomForHtml(getResCode().replace(/src=\"/g,'src=\"https:'), 'body&&.entry-content&&Html'),       \n    col_type: \"rich_text\",\n    extra: {\n        textSize: 18,\n        click: true\n    }\n\n\r\n});\r\n\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fp5.itc.cn%2Fq_70%2Fimages03%2F20200622%2F2d84b5c094d14971be26324d952c3361.gif&refer=http%3A%2F%2Fp5.itc.cn&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1638681468&t=3e98ad2605d0f9c0e860555f1f07c923"},{"last_chapter_rule":"","title":"杂志铺","author":"顺","version":1,"type":"read","url":"hiker://empty##http://qikan.lifves.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/2adad25bff6148078ecef8163899bcfd_1.png"},{"last_chapter_rule":"","title":"武林秘籍","author":"套壳网页，只需要改小程序链接##后面的内容即可","version":1,"type":"other","url":"hiker://empty##https://www.1tiaolu.com/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//正常来讲这里不需要修改\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://pp.myapp.com/ma_icon/0/icon_54162674_1636017540/96"},{"last_chapter_rule":"","title":"国际小姐姐2","author":"","version":2,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://jiejie.de/xjj/tiktok/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        autoPlay: true\n    }\n}])","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/03/xbGBnA.png"},{"last_chapter_rule":"","title":"抠图","author":"","version":2,"type":"tool","url":"hiker://empty##https://bgsub.cn/webapp/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL.split(\"##\")[1],\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://res.cnwest.com/t/site/10001/a209bcf3e52b0593bd2c51ae47c9d6ab/assets/snrtv2020/images/logo.png"},{"last_chapter_rule":"","title":"B站(舞蹈)","author":"","version":2,"type":"other","url":"https://api.bilibilI.com/x/web-interface/newlist?rid=fyAll&type=0&pn=fypage&ps=20&jsonp=jsonp","col_type":"movie_3","class_name":"宅舞&街舞&明星舞&大陆舞&综合舞&舞蹈教程","class_url":"20&198&199&200&154&156","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar json = JSON.parse(getResCode()).data.archives; //表项\n\nfor (let h = 0; h < json.length; h++) {\n    var title = json[h].title; //标题\n    var img = json[h].pic; //封面\n    var desc = json[h].tname; //介绍(时间)\n    let aid = json[h].aid;\n    let cid = json[h].cid;\n    var url = 'https://player.bilibili.com/player.html?aid=' + json[h].aid; //链接\n    d.push({\n        title: title,\n        col_type: 'movie_3', //显示模式视频三\n        desc: desc,\n        img: img + \"@Referer=\",\n        url: \"hiker://page/x5#gameTheme#\",\n        extra: {\n            u: `https://www.bilibili.com/blackboard/html5mobileplayer.html?aid=${aid}&cid=${cid}&page=1&autoplay=1&high_quality=1&as_wide=1`\n        }\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_PARAMS.u,\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\"\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"呀哩呀哩","author":"","version":0,"type":"other","url":"https://www.yaliyali.cc/f/fyAll--------fypage---.html","col_type":"movie_3","class_name":"国产&日韩","class_url":"1&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&a;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;.module-item&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.yaliyali.cc/vodsearch/**----------fypage---.html","titleColor":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"acgNya","author":"","version":0,"type":"other","url":"http://www.acgnya.com/vodshow/fyclass--------fypage---/","col_type":"movie_3","class_name":"连载&完结&特摄&国漫","class_url":"6&7&13&20","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".module-items&&a;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.acgnya.com/vodsearch/**----------fypage---/","titleColor":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"组件展示优化版","author":"🏅京梦","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nd.push({\n    title: '点击即复制',\n    col_type: 'text_center_1',\n    url: 'toast://点我干嘛？',\n    desc:'相应的样式名',\n})\nd.push({\n    title: 'text_1',\n    col_type: 'text_1',\n    url: 'copy://text_1',\n    desc:'',\n})\nd.push({\n    title: 'text_2',\n    col_type: 'text_2',\n    url: 'copy://text_2',\n    desc:'',\n})\nd.push({\n    title: 'text_3',\n    col_type: 'text_3',\n    url: 'copy://text_3',\n    desc:'',\n})\nd.push({\n    title: 'text_4',\n    col_type: 'text_4',\n    url: 'copy://text_4',\n    desc:'',\n})\nd.push({\n    title: 'text_5',\n    col_type: 'text_5',\n    url: 'copy://text_5',\n    desc:'',\n})\nd.push({\n    title: 'text_center_1',\n    col_type: 'text_center_1',\n    url: 'copy://text_center_1',\n    desc:'',\n})\nd.push({\n    title: 'long_text',\n    col_type: 'long_text',\n    url: 'copy://long_text',\n    desc:'',\n})\nd.push({\n    title: 'rich_text',\n    col_type: 'rich_text',\n    url: 'copy://rich_text',\n    desc:'',\n})\nd.push({\n    title: 'text_icon',\n    col_type: 'text_icon',\n    url: 'copy://text_icon',\n    desc:'',\n})\nd.push({\n    title: 'movie_1',\n    col_type: 'movie_1',\n    url: 'copy://movie_1',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_1_left_pic',\n    col_type: 'movie_1_left_pic',\n    url: 'copy://movie_1_left_pic',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_1_vertical_pic',\n    col_type: 'movie_1_vertical_pic',\n    url: 'copy://movie_1_vertical_pic',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_1_vertical_pic_blur',\n    col_type: 'movie_1_vertical_pic_blur',\n    url: 'copy://movie_1_vertical_pic_blur',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_2',\n    col_type: 'movie_2',\n    url: 'copy://movie_2',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_3',\n    col_type: 'movie_3',\n    url: 'copy://movie_3',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'movie_3_marquee',\n    col_type: 'movie_3_marquee',\n    url: 'copy://movie_3_marquee',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_1',\n    col_type: 'pic_1',\n    url: 'copy://pic_1',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_1_full',\n    col_type: 'pic_1_full',\n    url: 'copy://pic_1_full',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_1_card',\n    col_type: 'pic_1_card',\n    url: 'copy://pic_1_card',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_2',\n    col_type: 'pic_2',\n    url: 'copy://pic_2',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_2_card',\n    col_type: 'pic_2_card',\n    url: 'copy://pic_2_card',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_3',\n    col_type: 'pic_3',\n    url: 'copy://pic_3',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'pic_3_square',\n    col_type: 'pic_3_square',\n    url: 'copy://pic_3_square',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_1_search',\n    col_type: 'icon_1_search',\n    url: 'copy://icon_1_search',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_2',\n    col_type: 'icon_2',\n    url: 'copy://icon_2',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_2_round',\n    col_type: 'icon_2_round',\n    url: 'copy://icon_2_round',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_small_3',\n    col_type: 'icon_small_3',\n    url: 'copy://icon_small_3',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\n\nd.push({\n    title: 'icon_4',\n    col_type: 'icon_4',\n    url: 'copy://icon_4',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_4_card',\n    col_type: 'icon_4_card',\n    url: 'copy://icon_4_card',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_small_4',\n    col_type: 'icon_small_4',\n    url: 'copy://icon_small_4',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_round_4',\n    col_type: 'icon_round_4',\n    url: 'copy://icon_round_4',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'icon_round_small_4',\n    col_type: 'icon_round_small_4',\n    url: 'copy://icon_round_small_4',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\n\nd.push({\n    title: 'icon_5',\n    col_type: 'icon_5',\n    url: 'copy://icon_5',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'input',\n    col_type: 'input',\n    url: 'copy://input',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'avatar',\n    col_type: 'avatar',\n    url: 'copy://avatar',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'x5_webview_single',\n    col_type: 'text_center_1',\n    url: 'copy://x5_webview_single',\n    desc:'',\n})\nd.push({\n    title: 'flex_button',\n    col_type: 'flex_button',\n    url: 'copy://flex_button',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'scroll_button',\n    col_type: 'scroll_button',\n    url: 'copy://scroll_button',\n    desc:'',\n})\nd.push({\n    title: 'line',\n    col_type: 'line',\n    url: 'copy://line',\n    desc:'',\n})\nd.push({\n    title: 'line_blank',\n    col_type: 'line_blank',\n    url: 'copy://line_blank',\n    desc:'',\n})\nd.push({\n    title: 'blank_block',\n    col_type: 'blank_block',\n    url: 'copy://blank_block',\n    desc:'',\n})\nd.push({\n    title: 'big_blank_block',\n    col_type: 'big_blank_block',\n    url: 'copy://big_blank_block',\n    desc:'',\n})\nd.push({\n    title: 'big_big_blank_block',\n    col_type: 'big_big_blank_block',\n    url: 'copy://big_big_blank_block',\n    desc:'',\n})\nd.push({\n    title: 'card_pic_1',\n    col_type: 'card_pic_1',\n    url: 'copy://card_pic_1',\n    img: 'hiker://images/home_pic1',\n    desc:'0',\n})\nd.push({\n    title: 'card_pic_2',\n    col_type: 'card_pic_2',\n    url: 'copy://card_pic_2',\n    img: 'hiker://images/home_pic1',\n    desc:'0',\n})\nd.push({\n    title: 'card_pic_2_2',\n    col_type: 'card_pic_2_2',\n    url: 'copy://card_pic_2_2',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'card_pic_2_2_left',\n    col_type: 'card_pic_2_2_left',\n    url: 'copy://card_pic_2_2_left',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nd.push({\n    title: 'card_pic_3',\n    col_type: 'card_pic_3',\n    url: 'copy://card_pic_3',\n    img: 'hiker://images/home_pic1',\n    desc:'',\n})\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"铜钟🎶","author":"缘分","version":1,"type":"other","url":"fyclass","col_type":"card_pic_3","class_name":"首页&热歌榜","class_url":"https://tonzhon.com/api/playlist_recommendations&https://tonzhon.com/secondhand_api/hot_list/netease","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nd.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"输入歌手、歌曲名搜索\",\n    col_type: \"input\",\n});\nif (MY_URL.search(/playlist/) > -1) {\n    var list = JSON.parse(getResCode()).playlists\n    for (var j in list) {\n        d.push({\n            title: list[j].name,\n            pic_url: 'https://static.tonzhon.com/' + list[j].coverUrl,\n            url: 'https://tonzhon.com/api/playlists/' + list[j].id\n        });\n    }\n} else {\n    var lazy = $('').lazyRule(() => {\n        log(input);\n        var url = request(input).match(/data.*?\"(http.*?)\"/)[1]\n        return url\n    })\n    var lists = pd(getResCode(), 'Text').match(/originalId[\\s\\S]*?false/g) //.split(\"false\")\n    for (var j in lists) {\n        d.push({\n            title: pdfh(lists[j], 'Text').match(/originalId[\\s\\S]*?name\\\":\\\"(.*?)\\\"/)[1],\n            url: 'https://tonzhon.com/secondhand_api/song_source/netease/' + pd(lists[j], 'Text').match(/originalId\\\":(\\d+)/)[1] + lazy,\n            col_type: 'text_1'\n        });\n    }\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\n//MY_URL= getResCode().split(\"#\")[1]\nvar list = JSON.parse(getResCode()).result.songs;\nfor (var i in list) {\n    var play = 'http://music.163.com/api/song/detail/?id=' + list[i].id + '&ids=%5B' + list[i].id + '%5D';\n    var pic = request(play).match(/blurPicUrl\":\"(http.*?jpg)/)[1]\n    d.push({\n        title: list[i].name + '-『' + list[i].artists[0].name + \"』\",\n        img: pic,\n        url: \"https://music.163.com/song/media/outer/url?id=\" + list[i].id + \".mp3\"\n    })\n}\nsetResult(d);","search_url":"http://music.cyrilstudio.top/search?keywords=**","group":"其它","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    try {\n        try {\n            input = 'https://tonzhon.com/secondhand_api/song_source/netease/' + input\n            var url = request(input).match(/data.*?\"(http.*?)\"/)[1]\n            return url\n        } catch (e) {\n\n            input = input.replace('netease', 'qq')\n\n            var url = request(input, {\n                headers: {\n                    'Referer': MY_URL\n                }\n            }).match(/data[\\s\\S]*?\"(http.*?)\"/)[1]\n\n            return url\n        }\n    } catch (e) {\n        var id = input.split(\"qq/\")[1]\n        var url = 'http://antiserver.kuwo.cn/anti.s?type=convert_url&rid=' + id + '&format=mp3&response=url'\n        url = request(url, {})\n        return url\n    }\n})\ntry {\n    var list = pd(getResCode(), 'Text').split(\"songs\\\":\")[1].split(\",\\\"playingTimes\")[0].split(\"platform\")\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'Text').match(/originalId[\\s\\S]*?name\\\":\\\"(.*?)\\\"/)[1],\n            url: pd(list[j], 'Text').match(/originalId\\\":\\\"(.*?)\\\"/)[1] + lazy,\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://tonzhon.com/favicon.ico"},{"last_chapter_rule":"","title":"TVbox工具","author":"Joe","version":0,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar configIp = fileExist(\"hiker://files/tvbox/config.json\") ? request(\"hiker://files/tvbox/config.json\") : \"0.0.0.0:9978\"\nd.push({\n    title: '当前ip:' + configIp,\n    img: MY_RULE.icon,\n    col_type: 'avatar',\n    url: $(configIp, \"输入ip\").input(() => {\n        if (input.match(`(.*).(.*).(.*).(.*):(.*)`)) {\n            writeFile(\"hiker://files/tvbox/config.json\", input)\n            refreshPage()\n            toast(\"切换成功\")\n        } else {\n            toast(\"格式错误！\")\n        }\n    })\n})\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"api\",\"path\":\"api\",\"rule\":\"$.exports.推送tvbox = function(vod) {\\n    var configIp = fileExist(\\\"hiker://files/tvbox/config.json\\\") ? request(\\\"hiker://files/tvbox/config.json\\\") : \\\"0.0.0.0:9978\\\"\\n    var url = \\\"\\\"\\n    if (vod.vod) {\\n        vod.vod.forEach((ite, i) => {\\n            ite.urls.forEach(item => {\\n                var a = item.name + \\\"$\\\" + item.url.replace(/\\\\&/g, \\\"＆＆\\\").replace(\\\"#isVideo=true#\\\", \\\"\\\")\\n                url += a + (vod.headers ? \\\"|\\\" + Object.entries(vod.headers).map(function(item) {\\n                    return item[0] + \\\"=\\\" + item[1]\\n                }).join(\\\"&\\\") : \\\"\\\") + \\\"#\\\"\\n            })\\n            if (i + 1 != vod.vod.length) {\\n                url += \\\"$$$\\\"\\n            }\\n        })\\n        var from = vod.vod.map(function(item) {\\n            return item.name\\n        })\\n    } else {\\n        log(\\\"失败\\\")\\n        return false\\n    }\\n    let xyq_detail = {\\n        name: vod.name ? vod.name : \\\"\\\",\\n        pic: vod.pic ? vod.pic.split('@')[0] : \\\"https://lanmeiguojiang.com/tubiao/movie/59.svg\\\",\\n        content: vod.content ? vod.content : \\\"暂无简介\\\",\\n        url: url,\\n        from: from.join(\\\"$$$\\\"),\\n        actor: vod.actor ? vod.actor : \\\"\\\",\\n        director: vod.director ? vod.director : \\\"\\\",\\n    }\\n    log(xyq_detail)\\n    let state = post(\\\"http://\\\" + configIp + '/action', {\\n        body: {\\n            do: 'push',\\n            url: JSON.stringify(xyq_detail)\\n        },\\n        headers: {\\n            'User-Agent': MOBILE_UA\\n        },\\n    });\\n    log(state)\\n    if (state === 'ok') {\\n        return true\\n    } else {\\n        return false\\n    }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/337.png"},{"last_chapter_rule":"","title":"短视频·Q","author":"发粪涂墙","version":0,"type":"video","url":"http://www.sharenice.net/fyAll?page=fypage[firstPage=http://www.sharenice.net/fyAll]","col_type":"movie_3","class_name":"首页&抖音&快手&微视&火山&场库&体育","class_url":"&douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html","area_name":"美拍&秒拍&全民&梨&好兔&美女&正能量","area_url":"meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html","sort_name":"生活&音乐&美食&明星&动漫&影视&时尚","year_name":"搞笑&社会&游戏&娱乐&旅游&萌系","sort_url":"tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html","year_url":"tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&li:has(img)');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       pic_url: parseDom(list[j], 'img&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+ `@lazyRule=.js:parseDomForHtml(request('http://m.sharenice.net/mobile'+input.split('net')[1]),'.video-play-box&&video&&src')+'#.mp4'`\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Proxitok","author":"","version":2,"type":"video","url":"hiker://empty##https://proxitok.pussthecat.org/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: \"https://proxitok.pussthecat.org/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        //floatVideo: true\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"美食手册Pro","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":2,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nvar d = [];\n\nd.push({\n\n    col_type: \"x5_webview_single\",\n\n    url: \"https://cook.yunyoujun.cn/?www.hiquer.com\",\n\n    desc: \"float&&100%\",\n\n    extra: {\n\n        canBack: true,\n\n        urlInterceptor: $.toString((MY_RULE) => {\n\n            if (input.match(/video/)) {\n\n                return $.toString((url, MY_RULE) => {\n\n                    fba.open(JSON.stringify({\n\n                        rule: MY_RULE.title,\n\n                        title: '影片详情',\n\n                        group: MY_RULE.group,\n\n                        preRule: MY_RULE.preRule,\n\n                        pages: MY_RULE.pages,\n\n                        url: url+ '#immersiveTheme#',\n\n                        findRule: MY_RULE.detail_find_rule\n\n                    }));\n\n                }, input, MY_RULE)\n\n            }\n\n            // 拦截app下载页面——非网页代码\n\n            if (input.includes('download')) return true;\n\n        }, MY_RULE),\n\n        js: $.toString(() => {\n\n            eval(fy_bridge_app.getInternalJs());\n\n        }),\n\n        blockRules: [''],\n\n        ua: MOBILE_UA\n\n    }\n\n});\n\nsetResult(d);\n\n\n","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar lazy = $('').lazyRule(() => {\r\n    videoParms = findItem(input);\r\n    aid = videoParms.extra.aid;\r\n    bvid = videoParms.extra.bvid;\r\n    cid = videoParms.extra.cid;\r\n    badge = videoParms.extra.badge;\r\n    viedeoData = JSON.parse(fetch(\"https://api.bilibili.com/x/player/playurl?avid=\" + aid + \"&bvid=\" + bvid + \"&cid=\" + cid + \"&qn=80&fnver=0&fnval=4048\", {\r\n        headers: {\r\n            \"User-Agent\": PC_UA,\r\n            \"Referer\": 'https://www.bilibili.com/'\r\n        },\r\n        method: \"GET\"\r\n    })).data;\r\n    video = viedeoData.dash.video[0].baseUrl\r\n    audio = viedeoData.dash.audio[0].baseUrl\r\n    return JSON.stringify({\r\n        urls: [video + \"#isVideo=true#\"],\r\n        audioUrls: [audio],\r\n        danmu: 'https://comment.bilibili.com/' + cid + '.xml',\r\n        names: ['bilibili']\r\n    }) + ';{User-Agent@\"\"&&Referer@https://www.bilibili.com/video/BV1wL411T73J?spm_id_from=333.337.search-card.all.click&vd_source=60cd820d66490f513305005717358b72}';\r\n\r\n});\r\nvar d = [];\r\nMY_URL = MY_URL.split(\"#\")[0];\r\nhtml = fetch(MY_URL);\r\nData = JSON.parse(html.match(/viewInfo[\\S\\s]+(?=,\"related\")/)[0].replace('viewInfo\":', ''));\r\nsetPageTitle(Data.title);\r\nsetPagePicUrl(Data.pic.replace('\\u002F', '/') + \"@Referer=\");\r\nd.push({\r\n    title: Data.title,\r\n    col_type: \"pic_1\",\r\n    img: Data.pic.replace('\\u002F', '/') + \"@Referer=\",\r\n    url: MY_URL + lazy,\r\n    desc: Data.desc,\r\n    extra: {\r\n        id: MY_URL,\r\n        aid: Data.aid,\r\n        bvid: Data.bvid,\r\n        cid: Data.cid,\r\n        badge: ''\r\n    }\r\n})\r\nd.push({\r\n    title: '相关视频 <small><small><span style=\"color:#19B89D\">' + getItem('模式', '双边') + '></span></small></small>',\r\n    col_type: \"avatar\",\r\n    img: 'https://lanmeiguojiang.com/tubiao/more/197.png',\r\n    url: $('#noLoading#').lazyRule(() => {\r\n        列表长度 = getMyVar('列表长度');\r\n        if (getItem('模式', '列表') == '列表') {\r\n            for (let index = 1; index <= 列表长度; index++) {\r\n                updateItem('food' + index, {\r\n                    col_type: 'movie_2',\r\n                });\r\n            }\r\n            setItem('模式', '双边')\r\n        } else {\r\n            for (let index = 1; index <= 列表长度; index++) {\r\n                updateItem('food' + index, {\r\n                    col_type: 'movie_1_left_pic',\r\n                });\r\n            }\r\n            setItem('模式', '列表')\r\n        }\r\n        updateItem('显示模式', {\r\n            title: '相关视频 <small><small><span style=\"color:#19B89D\">' + getItem('模式', '列表') + '></span></small></small>',\r\n        });\r\n        return 'toast://已切换模式为:' + getItem('模式', '列表')\r\n    }),\r\n    extra: {\r\n        id: '显示模式'\r\n    }\r\n})\r\naddData = JSON.parse(html.match(/related\":[\\S\\s]+(?=,\"hotShareShow\")/)[0].replace('related\":', ''));\r\nputMyVar('列表长度', addData.length);\r\nindex = 1;\r\naddData.forEach(list => {\r\n    if (getItem('模式', '列表') == '列表') {\r\n        d.push({\r\n            title: list.title,\r\n            img: list.pic.replace('\\u002F', '/') + \"@Referer=\",\r\n            url: 'food' + index + lazy,\r\n            desc: '分享用户：' + list.owner.name,\r\n            col_type: 'movie_1_left_pic',\r\n            extra: {\r\n                id: 'food' + index,\r\n                aid: list.aid,\r\n                bvid: list.bvid,\r\n                cid: list.cid,\r\n                badge: ''\r\n            }\r\n        });\r\n    } else {\r\n        d.push({\r\n            title: list.title,\r\n            img: list.pic.replace('\\u002F', '/') + \"@Referer=\",\r\n            url: 'food' + index + lazy,\r\n            desc: '分享用户：' + list.owner.name,\r\n            col_type: 'movie_2',\r\n            extra: {\r\n                id: 'food' + index,\r\n                aid: list.aid,\r\n                bvid: list.bvid,\r\n                cid: list.cid,\r\n                badge: ''\r\n            }\r\n        });\r\n    }\r\n    index += 1;\r\n});\r\nsetResult(d);\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/95.svg"},{"last_chapter_rule":"","title":"软件搜搜","author":"小棉袄🌞","version":9,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet url = \"https://rjss.pages.dev/\";\nlet ite = $.require(\"hiker://page/u\")(MY_RULE.title, getHome(url));\nd.push({\n    title: \"\",\n    url: url,\n    col_type: \"x5_webview_single\",\n    desc: \"100%&&float\",\n    pic_url: \"\",\n    extra: {\n        urlInterceptor: ite,\n        canBack: true\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"ysfx\",\"path\":\"ysfx\",\"rule\":\"js:\\nvar d = [];\\nlet ite = $.require(\\\"hiker://page/u\\\")(getParam(\\\"r\\\").split(\\\"##\\\")[0], getHome(MY_URL.split(\\\"##\\\")[1]));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    title: \\\"\\\",\\n    url: MY_URL.split(\\\"##\\\")[1],\\n    col_type: \\\"x5_webview_single\\\",\\n    desc: \\\"100%&&float\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        urlInterceptor: ite,\\n        js: js,\\n        canBack: true\\n    }\\n});\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"u\",\"path\":\"u\",\"rule\":\"$.exports = function(rule, origin) {\\n    return $.toString((rule, origin) => {\\n        let host = origin.replace(new RegExp(\\\"http://|https://\\\"), \\\"\\\").split(\\\"/\\\")[0];\\n        let hosts = host.split(\\\".\\\");\\n        if (hosts.length > 2) {\\n            host = hosts[hosts.length - 2] + \\\".\\\" + hosts[hosts.length - 1];\\n        }\\n        if (input.startsWith(\\\"magnet\\\")) {\\n            confirm({\\n                title: \\\"温馨提示\\\",\\n                content: \\\"检测到新的磁链地址，点击确定按钮即可播放，点击取消按钮可以复制链接\\\",\\n                confirm: $.toString((mag) => {\\n                    return mag;\\n                }, input),\\n                cancel: $.toString((mag) => {\\n                    return \\\"copy://\\\" + mag\\n                }, input)\\n            })\\n            return true;\\n        } else if (input.includes(\\\"aliyundrive.com\\\")) {\\n            log(input);\\n            let r1 = fetch(\\\"hiker://home@云盘汇影\\\");\\n            if (!r1 || r1.length <= 5) {\\n                let ru = $.toString(() => {\\n                    return \\\"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@云盘汇影@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi5LqR55uY5rGH5b2xIiwiYXV0aG9yIjoiTXJGbHkiLCJ1cmwiOiJoaWtlcjovL2VtcHR5JCQkZnlwYWdlIiwidmVyc2lvbiI6NiwiY29sX3R5cGUiOiJ0ZXh0XzEiLCJjbGFzc19uYW1lIjoiIiwidHlwZSI6ImFsbCIsImNsYXNzX3VybCI6IiIsImFyZWFfbmFtZSI6IiIsImFyZWFfdXJsIjoiIiwic29ydF9uYW1lIjoiIiwieWVhcl9uYW1lIjoiIiwic29ydF91cmwiOiIiLCJ5ZWFyX3VybCI6IiIsImZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmhvbWVQYWdlKCk7Iiwic2VhcmNoX3VybCI6Imhpa2VyOi8vZW1wdHkkJCQqKiQkJGZ5cGFnZSQkJCIsImdyb3VwIjoi4pGg572R55uYIiwic2VhcmNoRmluZCI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLnNlYXJjaFBhZ2UodHJ1ZSk7XG4iLCJkZXRhaWxfY29sX3R5cGUiOiJtb3ZpZV8xIiwiZGV0YWlsX2ZpbmRfcnVsZSI6ImpzOlxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xuYWxpLmRldGFpbFBhZ2UoKTsiLCJzZGV0YWlsX2NvbF90eXBlIjoibW92aWVfMSIsInNkZXRhaWxfZmluZF9ydWxlIjoiIiwidWEiOiJtb2JpbGUiLCJwcmVSdWxlIjoidmFyIGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vZ2l0ZWUuY29tL2ZseTEzOTcvaGlrZXItaWN5L3Jhdy9tYXN0ZXIvYWxpLmpzJyk7XG5pZighYWxpanMgfHwgIWFsaWpzLmluY2x1ZGVzKCdhbGknKSl7XG5cdGFsaWpzID0gZmV0Y2goJ2h0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9naC9mbHkxMzk3L2hpa2VyLWljeS9hbGkuanMnKVxufVxuaWYoIWFsaWpzIHx8ICFhbGlqcy5pbmNsdWRlcygnYWxpJykpe1xuXHRhbGlqcyA9IGZldGNoKCdodHRwOi8vbGZpY3kuY29tOjMwMDAwL21yZmx5L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaS5qcycpXG59XG5pZihhbGlqcykge1xuXHR3cml0ZUZpbGUoXCJoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanNcIixhbGlqcyk7XG5cdGV2YWwoYWxpanMpO1xuXHRhbGkucHJlUnVsZSgpO1xufVxuIiwicGFnZXMiOiJbe1wiY29sX3R5cGVcIjpcIm1vdmllXzNcIixcIm5hbWVcIjpcIue9keebmOivpuaDhVwiLFwicGF0aFwiOlwiZGV0YWlsXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkuYWxpUnVsZSgpO1wifSx7XCJjb2xfdHlwZVwiOlwibW92aWVfMV9sZWZ0X3BpY1wiLFwibmFtZVwiOlwi6LWE5rqQ572R6aG16K+m5oOFXCIsXCJwYXRoXCI6XCJzaXRlLWRldGFpbFwiLFwicnVsZVwiOlwianM6XFxuZXZhbChmZXRjaCgnaGlrZXI6Ly9maWxlcy9ydWxlcy9pY3kvYWxpLmpzJykpO1xcbmFsaS5kZXRhaWxQYWdlKCk7XCJ9LHtcImNvbF90eXBlXCI6XCJtb3ZpZV8zXCIsXCJuYW1lXCI6XCLkuKrkurrnvZHnm5jor6bmg4VcIixcInBhdGhcIjpcImRyaXZlXCIsXCJydWxlXCI6XCJqczpcXG5ldmFsKGZldGNoKCdoaWtlcjovL2ZpbGVzL3J1bGVzL2ljeS9hbGkuanMnKSk7XFxuYWxpLmluaXRDb25maWcoKTtcXG5hbGkubXlBbGlSdWxlKCk7XCJ9XSIsImljb24iOiJodHRwczovL2dpdGVlLmNvbS9mbHkxMzk3L2hpa2VyLWljeS9yYXcvbWFzdGVyL2FsaXl1bi5wbmcifQ==\\\"\\n                });\\n                confirm({\\n                    title: '温馨提示',\\n                    content: '本规则依赖云盘汇影规则，点击下面的确定按钮导入，注意导入后一定要在云盘汇影登录阿里云盘账号，否则不能用',\\n                    confirm: ru,\\n                    cancel: ru\\n                });\\n                return false;\\n            }\\n            log(\\\"input\\\");\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"阿里云盘\\\",\\n                    url: \\\"hiker://page/detail?rule=云盘汇影&url=\\\" + url + '??fypage',\\n                }))\\n            }, input, rule)\\n        } else if (/\\\\.(mp3|flac|m4a)$/.test(input)) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.playVideo(url);\\n            }, input, rule)\\n        } else if (!input.includes(host) && input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://page/ysfx?rule=\\\" + rule + \\\"&r=\\\" + rule + \\\"##\\\" + url,\\n                }))\\n            }, input, rule)\\n        } else if (!input.startsWith(\\\"http\\\")) {\\n            log(input);\\n            //能唤起APP的白名单\\n            let white = [\\n                \\\"qklink\\\",\\n                \\\"bdnetdisk\\\",\\n                \\\"xunleiapp\\\"\\n            ];\\n            let inWhite = white.filter(it => input.startsWith(it)).length > 0;\\n            if (!inWhite) {\\n                return false;\\n            }\\n            return $.toString((url, rule) => {\\n                fy_bridge_app.openThirdApp && fy_bridge_app.openThirdApp(url);\\n            }, input, rule)\\n        }\\n    }, rule, origin);\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"吃啥","author":"顺","version":1,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\n菜单 = \"馄饨 拉面 烩面 热干面 刀削面 油泼面 炸酱面 炒面 重庆小面 米线 酸辣粉 土豆粉 螺狮粉 凉皮儿 麻辣烫肉夹馍 羊肉汤 炒饭 盖浇饭 卤肉饭 烤肉饭 黄焖鸡 驴肉火烧 麻辣香锅 火锅 酸菜鱼 烤串 披萨 烤鸭 汉堡 炸鸡 寿司 蟹黄包 粽子 煎饼果子 生煎 炒年糕 盖浇饭 砂锅 大排档 米线 满汉全席 西餐 麻辣烫 自助餐 炒面 快餐 水果 西北风 馄饨 火锅 烧烤 泡面 速冻水饺 日本料理 涮羊肉 味千拉面 肯德基 面包 扬州炒饭 自助餐 茶餐厅 海底捞 咖啡 比萨 麦当劳 兰州拉面 沙县小吃 烤鱼 海鲜 铁板烧 韩国料理 粥 快餐 东南亚菜 甜点 农家菜 川菜 粤菜 湘菜 本帮菜 竹笋烤肉 泡面 馒头 西红柿炒蛋 包子\";\n\n/* 菜单名用单空格隔开 */\neval(JSON.parse(fetch(\"hiker://page/吃啥\")).rule);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"吃啥\",\"path\":\"吃啥\",\"rule\":\"菜单 = 菜单.split(' ')\\nh = new Date().getHours();\\nif (h > 8 && h < 14) tips = '中午'\\nif (h > 13 && h < 21) tips = '晚上'\\nif (h > 20 || h < 3) tips = '夜宵'\\nif (h > 2 && h < 9) tips = '早餐'\\nvar d = []\\nfor (let i = 0; i < 100; i++) {\\n    d.push({\\n        col_type: 'blank_block'\\n    })\\n}\\nd.push({\\n    col_type: 'card_pic_3',\\n    url: \\\"hiker://empty\\\",\\n}, {\\n    col_type: 'card_pic_3',\\n    url: eval(JSON.parse(fetch(\\\"hiker://page/开始\\\")).rule),\\n    extra: {\\n        id: '图片',\\n    },\\n    img: 'http://m.yh31.com/tp/zjbq/201705260842272914.gif',\\n})\\n\\nd.push({\\n    title: \\\"““””<big><b><font color=grey>\\\" + tips + '该吃啥呢？' + \\\"</font><b></big>\\\",\\n    col_type: 'text_center_1',\\n    extra: {\\n        id: '开始',\\n    },\\n    url: eval(JSON.parse(fetch(\\\"hiker://page/开始\\\")).rule),\\n})\\nd.push({\\n    title: '***',\\n    col_type: 'text_center_1',\\n    url: eval(JSON.parse(fetch(\\\"hiker://page/开始\\\")).rule),\\n    extra: {\\n        id: '结果',\\n        lineVisible: false\\n    },\\n})\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"开始\",\"path\":\"开始\",\"rule\":\"$('#noLoading#').lazyRule(function(菜单, tips) {\\n        updateItem('开始', {\\n            title: \\\"““””<big><b><font color=grey>\\\" + tips + '吃' + \\\"</font><b></big>\\\",\\n        })\\n        t = new Date().getTime();\\n        if (getMyVar('开始', '0') == 0) {\\n            putMyVar('开始', '1')\\n            updateItem('图片', {\\n                img: 'http://5b0988e595225.cdn.sohucs.com/images/20191107/2511c629ec2b4081a095defaf4babb66.gif'\\n            })\\n            for (let i = 0; i < 菜单.length * 250; i++) {\\n                for (let j in 菜单) {\\n                    if ((new Date().getTime() - t) % 50 == 0) {\\n                        updateItem('结果', {\\n                            title: \\\"““””<big><big><b><font color=#ff8000>\\\" + 菜单[Math.floor(Math.random() * 菜单.length)] + \\\"</font><b></big></big>\\\",\\n\\n                            url: 'toast://还不够你吃吗😏'\\n                        })\\n                    }\\n                }\\n            }\\n            java.lang.Thread.sleep(100);\\n            updateItem('图片', {\\n                img: 'http://5b0988e595225.cdn.sohucs.com/images/20180808/739ceebf12e443e68d66073f2f15baf2.gif'\\n            })\\n            java.lang.Thread.sleep(1000);\\n            updateItem('图片', {\\n                img: 'http://5b0988e595225.cdn.sohucs.com/images/20180808/d51b62512afd41199ec25a6b402b7b21.gif'\\n            })\\n            putMyVar('开始', '0')\\n        }\\n        return 'hiker://empty'\\n    }, 菜单, tips)\"}]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/87946f10aa1240629cf7396effa7f621.png"},{"last_chapter_rule":"","title":"发表情","author":"1","version":0,"type":"video","url":"https://fabiaoqing.com/fyclass/page/fypage.html","col_type":"movie_3","class_name":"当下流行表情包&表情&标签墙&斗图表情包&怼人表情包&情侣表情包&群聊表情包&emoji表情包","class_url":"bqb/lists/type/hot&biaoqing/lists&tag/index&bqb/lists/type/doutu&bqb/lists/type/duiren&bqb/lists/type/liaomei&bqb/lists/type/qunliao&bqb/lists/type/emoji","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d=[]\nif(MY_PAGE==1){\nd.push({\ntitle:\"搜表情\",\nurl:'\"hiker://search?rule=发表情&s=\"+input',\ndesc:'不要输错字🤗',\ncol_type:'input'\n})\nd.push({\ntitle:\"搜索表情包\",\nurl:'\"hiker://page/3?url=https://fabiaoqing.com/search/bqb/keyword/\"+input+\"/type/bqb/page/fypage.html\"',\ndesc:'不要输错字🤗',\ncol_type:'input'\n})\n}\n\n\nif(MY_URL.indexOf('bqb/lists')>-1){\n\npdfa(getResCode(),'#bqblist&&a:has(.segment)').forEach(j=>{\nd.push({\ntitle:'““””<b><font color=\"#00ff00\">'+pdfh(j,'a&&title')+\"👉详情\",\nurl:pd(j,'a&&href')+`@lazyRule=js:var pic=[];var list=pdfa(request(input),'.swiper-wrapper&&img');for(var i in list){pic.push(pd(list[i],'img&&data-original').replace('bmiddle','large')+\"@Referer=\")};\"pics://\"+pic.join('&&')`,\ncol_type:'text_center_1'\n})\npdfa(j,'.segment&&img').forEach(k=>{\nd.push({\ntitle:pdfh(k,'img&&alt'),\npic:pd(k,'img&&data-original').replace('bmiddle','large')+'@Referer=',\nurl:pd(k,'img&&data-original').replace('bmiddle','large')+\"@lazyRule=js:input\",\ncol_type:'card_pic_3'\n})\n\n\n})\n\n\n})\n\n\n}\n\nif(MY_URL.indexOf('biaoqing/lists')>-1){\npdfa(getResCode(),'body&&.tagbqppdiv').forEach(j=>{\nd.push({\ntitle:pdfh(j,'a&&title'),\npic:pd(j,'img&&data-original').replace('bmiddle','large')+'@Referer=',\nurl:pd(j,'a&&href')+\"@lazyRule=js:var pic=pdfh(request(input),'.swiper-wrapper&&img&&src');pic\",\ncol_type:'movie_3'\n})\n\n})\n\n}\n\nif(MY_URL.indexOf('tag/index')>-1){\npdfa(getResCode(),'.segment&&a').forEach(j=>{\nd.push({\ntitle:pdfh(j,'a&&title'),\nurl:pd(j,'a&&href')+'#immersiveTheme#',\ncol_type:'text_3'\n})\n\n\n\n})\n\n}\n\nsetResult(d);","searchFind":"js:\nvar d=[];\npdfa(getResCode(),'body&&.tagbqppdiv').forEach(j=>{\nd.push({\ntitle:pdfh(j,'a&&title'),\npic:pd(j,'img&&data-original').replace('bmiddle','large')+'@Referer=',\nurl:pd(j,'a&&href')+\"@lazyRule=js:var pic=pdfh(request(input),'.swiper-wrapper&&img&&src');pic\",\ncol_type:'movie_3'\n})\n\n})\nsetResult(d)","search_url":"https://fabiaoqing.com/search/bqb/keyword/**/type/bq/page/fypage.html","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar pic=[];\npdfa(getResCode(),'.imghover&&a').forEach(j=>{\nd.push({\ntitle:pdfh(j,'a&&title'),\npic:pd(j,'img&&data-original').replace('bmiddle','large')+'@Referer=',\nurl:pd(j,'img&&data-original').replace('bmiddle','large'),\ncol_type:'pic_2'\n})\n})\npdfa(getResCode(),'.pagination&&a').forEach(j=>{\nd.push({\ntitle:pdfh(j,'a&&Text'),\nurl:\"hiker://page/2?url=\"+pd(j,'a&&href'),\ncol_type:'text_4'\n})\n})\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"2\",\"path\":\"2\",\"rule\":\"js:\\nvar d=[];\\npdfa(getResCode(),'.imghover&&a').forEach(j=>{\\nd.push({\\ntitle:pdfh(j,'a&&title'),\\npic:pd(j,'img&&data-original').replace('bmiddle','large')+'@Referer=',\\nurl:pd(j,'img&&data-original').replace('bmiddle','large'),\\ncol_type:'pic_2'\\n})\\n\\n})\\npdfa(getResCode(),'.pagination&&a').forEach(j=>{\\nd.push({\\ntitle:pdfh(j,'a&&Text'),\\nurl:\\\"hiker://page/2?url=\\\"+pd(j,'a&&href'),\\ncol_type:'text_4'\\n})\\n\\n\\n\\n})\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"表情包搜索\",\"path\":\"3\",\"rule\":\"js:\\nvar d=[];\\npdfa(getResCode(),'#bqb&&a:has(.segment)').forEach(j=>{\\nd.push({\\ntitle:pdfh(j,'a&&title')+\\\"👉详情\\\",\\nurl:pd(j,'a&&href')+`@lazyRule=js:var pic=[];var list=pdfa(request(input),'.swiper-wrapper&&img');for(var i in list){pic.push(pd(list[i],'img&&data-original').replace('bmiddle','large')+\\\"@Referer=\\\")};\\\"pics://\\\"+pic.join('&&')`,\\ncol_type:'text_center_1'\\n})\\npdfa(j,'.segment&&img').forEach(k=>{\\nd.push({\\ntitle:pdfh(k,'img&&alt'),\\npic:pd(k,'img&&data-original').replace('bmiddle','large')+'@Referer=',\\nurl:pd(k,'img&&data-original').replace('bmiddle','large'),\\ncol_type:'card_pic_3'\\n})\\n\\n\\n})\\n\\n\\n})\\nsetResult(d)\"}]","proxy":"","icon":"http://tva3.sinaimg.cn/large/6e3e5b9bgy1fg5yzzlw8pg208r08rk6u.gif"},{"last_chapter_rule":"","title":"片吧影院·Z","author":"zetalpha","version":7,"type":"other","url":"http://www.pianbb.com/class/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"l","find_rule":"js:\nvar d = []\n//随机颜色\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n//动态分类定义\n//需根据实际修改\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.dropdown.type.clearfix'\nconst 拼接分类 = 'body&&#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(留言))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\n\nvar type = ''\nvar tl = ['top', 'month', 'week', 'day']\ntry {\n    type = true_url.match(/sort\\/(\\w+).*?\\.html$/m)[1]\n} catch {}\n\n//log(type)\n\nif (tl.includes(type)) {} else {\n    true_url = true_url.replace('sort', 'class')\n    //log(1 + true_url)\n    if (true_url.indexOf('-.html') == -1) {\n        //log(2 + true_url)\n        if (new RegExp(/(\\d{4}).html/).test(true_url)) {\n            //log(3 + true_url)\n            true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, page + '---$2.html')\n            //log(4 + true_url)\n        } else {\n            //log(5 + true_url)\n            true_url = true_url.replace('.html', '--------' + page + '---.html')\n        }\n    } else {\n        true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, (a, b, c) => {\n            var y = c != undefined ? c : '';\n            return page + '---' + y + '.html'\n        })\n        //log(6 + true_url)\n        //true_url = true_url.replace(/(\\d)?---(\\d{4})?.html/, page + '---$2.html')\n    }\n}\n//log(true_url)\n\n\n\n//获取源码\nvar html = request(true_url)\n\n\n//动态分类\neval(JSON.parse(request('hiker://page/dt')).rule)\n\n\n//页面内容填充\nconst list = pdfa(html, 'body&&.stui-vodlist__box')\nlist.forEach(video => {\n\n    //log(video)\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\n//log(d)\nsetResult(d);","searchFind":"body&&.stui-vodlist__box;\nh4&&a&&Text;\na&&href;\n.pic-text.text-right&&Text;\n;\na&&data-original;","search_url":"http://www.pianbb.com/so/**----------fypage---.html","titleColor":"#009cff","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, 'body&&.stui-vodlist__head>span');\n\n\n//log(arts)\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&ul.stui-content__playlist.clearfix');\n\nvar down = pdfa(html, 'body&&ul.stui-content__down.clearfix');\n\n\n//log(conts)\n\n//log(down)\nvar conts1 =conts.concat(down)\n\n//log(conts1)\n\nvar lists = [];\nfor (var i in conts1) {\n    lists.push(pdfa(conts1[i], 'body&&a:not(.copy_btn)'))\n}\n\nfunction getData(datan) {\n    let arr = [];\n    let datat = '';\n    arr = xpathArray(html, \"//span[contains(text(),'\" + datan + \"')]/following-sibling::*//text()\");\n    if (arr.length == 0) {\n        arr = xpathArray(html, \"//span[contains(text(),'\" + datan + \"')]/parent::*/text()\");\n    }\n    arr = arr.filter(x => x != 0)\n\n    //log(arr)\n    switch (datan) {\n        case '主演':\n            if (arr.length != 0) {\n                datat = datan + '：' + arr.slice(0, 5).join('、');\n            }\n            break;\n\n        case '剧情':\n            datat = datan + '：' + arr.slice(1, 2).join('、');\n            break;\n        default:\n\n            datat = datan + '：' + arr.join('、');\n            break;\n    }\n    datat = datat.replace(/&middot;/g, '·')\n    return datat;\n}\n\n\n\n\n/*\nlog(getData('状态'))\nlog(getData('年份'))\nlog(getData('类型'))\nlog(getData('地区'))\nlog(getData('导演'))\nlog(getData('主演'))\nlog(getData('更新'))\nlog(getData('剧情'))\n*/\n\n\nd.push({\n    title: getData('状态') +\n        '\\n' + getData('导演') +\n        '\\n' + getData('主演') +\n        '\\n' + getData('更新'),\n    desc: getData('剧情'),\n    img: pd(html, 'body&&.stui-content&&img&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//log(d)\n//快捷搜索 不需要注释掉就行\n//eval(JSON.parse(fetch('hiker://page/qsearch', {})).rule);\n\n//独立快捷版搜索\neval(JSON.parse(fetch('hiker://page/qsearchd', {})).rule);\n\n\n//eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n\neval(JSON.parse(fetch('hiker://page/Parse', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"嗅探\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    if (input.indexOf('magnet:?xt') == -1) {\\n        return \\\"video://\\\" + input\\n    } else {\\n        return input\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"快捷搜索\",\"path\":\"qsearch\",\"rule\":\"//搜索，以下基本不需要修改。\\ntry {\\n    var title = parseDomForHtml(html, 'h1&&Text');\\n    var Color = \\\"#f13b66a\\\";\\n    var Color1 = \\\"#098AC1\\\";\\n\\n\\n\\n    function getHead(title) {\\n        return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n    }\\n} catch {}\\n\\nlet qdbcfile = \\\"hiker://files/rules/joker/qdb_config.js\\\"\\n\\n\\nif (fileExist(qdbcfile)) {\\n    var json = JSON.parse(request(qdbcfile));\\n    var list = json.quickSearchConfigs.order;\\n    for (l in list) {\\n        var obj = json.quickSearchConfigs[list[l]];\\n        //log(obj)\\n\\n        d.push({\\n            title: list[l],\\n            url: 'hiker://search?s=' + title + '&rule=' + obj.name,\\n            pic_url: obj.pic,\\n            col_type: json.quickSearchConfigs.mode\\n        });\\n    }\\n} else {\\n    d.push({\\n        title: '不存在青豆小程序点我导入',\\n        col_type: 'text_1',\\n        url: $('#noLoading#').lazyRule((name, home) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === name);\\n            if (hasRule) {\\n                back();\\n                //toast(\\\"请配置快速搜索\\\")\\n                return home + \\\"s@\\\" + name;\\n            } else {\\n                //toast(\\\"请安装青豆小程序\\\")\\n                return 'rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ6Z2S6LGG44CR77+laG9tZV9ydWxlX3VybO+/pWh0dHA6Ly9oaWtlci5ub2tpYS5wcmVzcy9oaWtlcnVsZS9ydWxlbGlzdC5qc29uP2lkPTE1OTE='\\n            }\\n        }, \\\"青豆\\\", \\\"hiker://home\\\")\\n\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\nd.push({\\n    title:'配置',\\n    col_type: 'flex_button',\\n    url: \\n    $().lazyRule(()=>{ \\n        toast(\\\"点击设置配置快速搜索\\\");\\n        return 'hiker://home@青豆'\\n    })\\n   \\n})\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\nif (typeof(拼接分类) != 'undefined' && 拼接分类 != '') {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} else {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””' + '∨'.fontcolor(\\\"#FF0000\\\") + '' : '““””' + '∧'.fontcolor(\\\"#1aad19\\\") + '',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                if (typeof(排除) != 'undefined' && 排除 != '') {\\n                    title = title.replace(new RegExp(排除, \\\"g\\\"), \\\"\\\")\\n                }\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? \\\"““””\\\" + title.fontcolor(分类颜色) : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"通免\",\"path\":\"Parse\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    if (input.indexOf('magnet:?xt') == -1) {\\n        try {\\n            var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n            var url = html.url\\n            if (html.encrypt == '1') {\\n                url = unescape(url);\\n            } else if (html.encrypt == '2') {\\n                url = unescape(base64Decode(url));\\n            }\\n            if (/m3u8|mp4/.test(url)) {\\n                return url\\n            } else {\\n                requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\\n                return lazyParse(input);\\n            }\\n        } catch (e) {\\n            log('报错改web嗅探');\\n            //requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\\n            //return lazyParse(input);\\n            return \\\"video://\\\" + input\\n        }\\n    } else {\\n        return input\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"快捷搜索_独立\",\"path\":\"qsearchd\",\"rule\":\"//搜索，以下基本不需要修改。\\ntry {\\n    var title = parseDomForHtml(html, 'h1&&Text');\\n    var Color = \\\"#f13b66a\\\";\\n    var Color1 = \\\"#098AC1\\\";\\n\\n\\n\\n    function getHead(title) {\\n        return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n    }\\n} catch {}\\n\\nvar rules = {\\n    \\\"quickSearchConfigs\\\": {\\n        \\\"mode\\\": \\\"icon_round_small_4\\\",\\n        \\\"order\\\": [\\\"海阔搜索\\\", \\\"风影\\\", \\\"香情\\\", \\\"聚影\\\"],\\n        \\\"海阔搜索\\\": {\\n            \\\"name\\\": \\\"\\\",\\n            \\\"pic\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\"\\n        },\\n        \\\"风影\\\": {\\n            \\\"name\\\": \\\"风影 Ⓕ\\\",\\n            \\\"pic\\\": \\\"https://pic1.imgdb.cn/item/6346beda16f2c2beb1f1bbde.jpg\\\",\\n            \\\"rule\\\": \\\"copy://https://pasteme.tyrantg.com/xxxxxx/tajhqzgaaeoqxjio\\\"\\n        },\\n        \\\"香情\\\": {\\n            \\\"name\\\": \\\"香情影视\\\",\\n            \\\"pic\\\": \\\"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/xqys.png\\\"\\n        },\\n        \\\"聚影\\\": {\\n            \\\"name\\\": \\\"聚影√\\\",\\n            \\\"pic\\\": \\\"https://img.vinua.cn/images/QqyC.png\\\",\\n            \\\"rule\\\": \\\"rule://Iua1t+mYlOinhueVjOmmlumhtemikemBk+inhOWImeOAkOiBmuW9seKImuOAke+/pWhvbWVfcnVsZV91cmzvv6VodHRwOi8vaGlrZXIubm9raWEucHJlc3MvaGlrZXJ1bGUvcnVsZWxpc3QuanNvbj9pZD01MTAy\\\"\\n        }\\n    }\\n}\\n\\nvar json = rules;\\nvar list = json.quickSearchConfigs.order;\\n\\nfor (l in list) {\\n    var obj = json.quickSearchConfigs[list[l]];\\n    log(obj.name)\\n\\n\\n    d.push({\\n        title: list[l],\\n        url: $('#noLoading#').lazyRule((obj, home, title) => {\\n            let ruleList = JSON.parse(request(home));\\n            let hasRule = ruleList.some(item => item.title === obj.name);\\n            if (hasRule || obj.name == '') {\\n                //toast(\\\"请配置快速搜索\\\")\\n                return 'hiker://search?s=' + title + '&rule=' + obj.name;\\n            } else {\\n\\n                if (obj.hasOwnProperty(\\\"rule\\\")) {\\n                    return obj.rule\\n                } else {\\n                    return \\\"toast://请安装\\\" + obj.name + \\\"小程序\\\";\\n                }\\n            }\\n        }, obj, \\\"hiker://home\\\", title),\\n        pic_url: obj.pic,\\n        col_type: json.quickSearchConfigs.mode\\n    })\\n}\\n\\n\\n/*    $().lazyRule((obj, home, title) => {\\n        let ruleList = JSON.parse(request(home));\\n        let hasRule = ruleList.some(item => item.title === obj.name);\\n        if (hasRule) {\\n\\n            //toast(\\\"请配置快速搜索\\\")\\n            return 'hiker://search?s=' + title + '&rule=' + obj.name,\\n        } else {\\n            //toast(\\\"请安装青豆小程序\\\")\\n            if (obj.hasOwnProperty(\\\"rule\\\")) {\\n                return \\\"toast://请安装\\\" + obj.name + \\\"小程序\\\";\\n            } else {\\n\\n                return '2'\\n            }\\n        }\\n    }, obj, \\\"hiker://home\\\", title)*/\\n\\n\\n\\n\\nd.push({\\n    col_type: 'line'\\n})\\n\\n/*d.push({\\n    title: '配置',\\n    col_type: 'flex_button',\\n    url: $().lazyRule(() => {\\n        toast(\\\"点击设置配置快速搜索\\\");\\n        return 'hiker://home@青豆'\\n    })\\n\\n})*/\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/15/zAvjsJ.png"},{"last_chapter_rule":"","title":"潘多拉魔盒","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://huazhechen.gitee.io/cuber/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"黄金渔夫🄴","author":"警告：本小程序仅供海阔视界用户学习交流使用。如有导入，请务必在24小时之内删除！若作它用，后果自负！","version":0,"type":"news","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://flash.7k7k.com/cms/cms10/20180413/1641034189/06/index.htm\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"翻译君","author":"Joe&小棉袄🌞","version":2,"type":"tool","url":"hiker://empty?c=fyclass","col_type":"text_1","class_name":"谷歌&有道","class_url":"google&youdao","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nif (getParam(\"c\") != \"youdao\") {\n    $.require(\"hiker://page/google\")\n} else {\n    $.require(\"hiker://page/youdao\")    \n}","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"有道\",\"path\":\"youdao\",\"rule\":\"var d = [];\\nlet li = [\\\"en\\\", \\\"fr\\\", \\\"ko\\\", \\\"ja\\\"]\\nvar i = \\\"你干嘛\\\"\\nvar ts = new Date().getTime() + \\\"\\\"\\nvar salt = ts + Math.ceil(Math.random() * 10)\\nvar sign = md5(\\\"fanyideskweb\\\" + i + salt + \\\"Nw(nmmbP%A-r6U3EUn]Aj\\\")\\nvar bv = md5(\\\"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36\\\")\\nlet res = post(\\\"http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule\\\", {\\n    headers: {\\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36',\\n        'Referer': 'http://fanyi.youdao.com/',\\n        \\\"Cookie\\\": \\\"OUTFOX_SEARCH_USER_ID=2036527045@116.237.121.245; YOUDAO_MOBILE_ACCESS_TYPE=0; OUTFOX_SEARCH_USER_ID_NCOO=676155865.7042987; _yd_btn_fanyi_11=true; _yd_newbanner_day=11; ___rl__test__cookies=1665111929076\\\"\\n    },\\n    body: {\\n        'i': i,\\n        'from': 'AUTO',\\n        'to': 'AUTO',\\n        'smartresult': 'dict',\\n        'client': 'fanyideskweb',\\n        'salt': salt,\\n        'sign': sign,\\n        'ts': ts,\\n        'bv': bv,\\n        'doctype': 'json',\\n        'version': '2.1',\\n        'keyfrom': 'fanyi.web',\\n        'action': 'FY_BY_CLICKBUTTION'\\n    }\\n})\\nd.push({\\n    title: \\\"想什么呢，洗洗睡吧骚年\\\"\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"谷歌\",\"path\":\"google\",\"rule\":\"var d = [];\\nvar l1 = [\\\"检测语言\\\", \\\"阿尔巴尼亚语\\\", \\\"阿拉伯语\\\", \\\"阿姆哈拉语\\\", \\\"阿萨姆语\\\", \\\"阿塞拜疆语\\\", \\\"埃维语\\\", \\\"艾马拉语\\\", \\\"爱尔兰语\\\", \\\"爱沙尼亚语\\\", \\\"奥利亚语\\\", \\\"奥罗莫语\\\", \\\"巴斯克语\\\", \\\"白俄罗斯语\\\", \\\"班巴拉语\\\", \\\"保加利亚语\\\", \\\"冰岛语\\\", \\\"波兰语\\\", \\\"波斯尼亚语\\\", \\\"波斯语\\\", \\\"博杰普尔语\\\", \\\"布尔语(南非荷兰语)\\\", \\\"鞑靼语\\\", \\\"丹麦语\\\", \\\"德语\\\", \\\"迪维希语\\\", \\\"蒂格尼亚语\\\", \\\"多格来语\\\", \\\"俄语\\\", \\\"法语\\\", \\\"梵语\\\", \\\"菲律宾语\\\", \\\"芬兰语\\\", \\\"弗里西语\\\", \\\"高棉语\\\", \\\"格鲁吉亚语\\\", \\\"贡根语\\\", \\\"古吉拉特语\\\", \\\"瓜拉尼语\\\", \\\"哈萨克语\\\", \\\"海地克里奥尔语\\\", \\\"韩语\\\", \\\"豪萨语\\\", \\\"荷兰语\\\", \\\"吉尔吉斯语\\\", \\\"加利西亚语\\\", \\\"加泰罗尼亚语\\\", \\\"捷克语\\\", \\\"卡纳达语\\\", \\\"科西嘉语\\\", \\\"克里奥尔语\\\", \\\"克罗地亚语\\\", \\\"克丘亚语\\\", \\\"库尔德语（库尔曼吉语）\\\", \\\"库尔德语（索拉尼）\\\", \\\"拉丁语\\\", \\\"拉脱维亚语\\\", \\\"老挝语\\\", \\\"立陶宛语\\\", \\\"林格拉语\\\", \\\"卢干达语\\\", \\\"卢森堡语\\\", \\\"卢旺达语\\\", \\\"罗马尼亚语\\\", \\\"马尔加什语\\\", \\\"马耳他语\\\", \\\"马拉地语\\\", \\\"马拉雅拉姆语\\\", \\\"马来语\\\", \\\"马其顿语\\\", \\\"迈蒂利语\\\", \\\"毛利语\\\", \\\"梅泰语（曼尼普尔语）\\\", \\\"蒙古语\\\", \\\"孟加拉语\\\", \\\"米佐语\\\", \\\"缅甸语\\\", \\\"苗语\\\", \\\"南非科萨语\\\", \\\"南非祖鲁语\\\", \\\"尼泊尔语\\\", \\\"挪威语\\\", \\\"旁遮普语\\\", \\\"葡萄牙语\\\", \\\"普什图语\\\", \\\"齐切瓦语\\\", \\\"契维语\\\", \\\"日语\\\", \\\"瑞典语\\\", \\\"萨摩亚语\\\", \\\"塞尔维亚语\\\", \\\"塞佩蒂语\\\", \\\"塞索托语\\\", \\\"僧伽罗语\\\", \\\"世界语\\\", \\\"斯洛伐克语\\\", \\\"斯洛文尼亚语\\\", \\\"斯瓦希里语\\\", \\\"苏格兰盖尔语\\\", \\\"宿务语\\\", \\\"索马里语\\\", \\\"塔吉克语\\\", \\\"泰卢固语\\\", \\\"泰米尔语\\\", \\\"泰语\\\", \\\"土耳其语\\\", \\\"土库曼语\\\", \\\"威尔士语\\\", \\\"维吾尔语\\\", \\\"乌尔都语\\\", \\\"乌克兰语\\\", \\\"乌兹别克语\\\", \\\"西班牙语\\\", \\\"希伯来语\\\", \\\"希腊语\\\", \\\"夏威夷语\\\", \\\"信德语\\\", \\\"匈牙利语\\\", \\\"修纳语\\\", \\\"亚美尼亚语\\\", \\\"伊博语\\\", \\\"伊洛卡诺语\\\", \\\"意大利语\\\", \\\"意第绪语\\\", \\\"印地语\\\", \\\"印尼巽他语\\\", \\\"印尼语\\\", \\\"印尼爪哇语\\\", \\\"英语\\\", \\\"约鲁巴语\\\", \\\"越南语\\\", \\\"中文\\\", \\\"宗加语\\\"]\\nvar l2 = [\\\"auto\\\", \\\"sq\\\", \\\"ar\\\", \\\"am\\\", \\\"as\\\", \\\"az\\\", \\\"ee\\\", \\\"ay\\\", \\\"ga\\\", \\\"et\\\", \\\"or\\\", \\\"om\\\", \\\"eu\\\", \\\"be\\\", \\\"bm\\\", \\\"bg\\\", \\\"is\\\", \\\"pl\\\", \\\"bs\\\", \\\"fa\\\", \\\"bho\\\", \\\"af\\\", \\\"tt\\\", \\\"da\\\", \\\"de\\\", \\\"dv\\\", \\\"ti\\\", \\\"doi\\\", \\\"ru\\\", \\\"fr\\\", \\\"sa\\\", \\\"tl\\\", \\\"fi\\\", \\\"fy\\\", \\\"km\\\", \\\"ka\\\", \\\"gom\\\", \\\"gu\\\", \\\"gn\\\", \\\"kk\\\", \\\"ht\\\", \\\"ko\\\", \\\"ha\\\", \\\"nl\\\", \\\"ky\\\", \\\"gl\\\", \\\"ca\\\", \\\"cs\\\", \\\"kn\\\", \\\"co\\\", \\\"kri\\\", \\\"hr\\\", \\\"qu\\\", \\\"ku\\\", \\\"ckb\\\", \\\"la\\\", \\\"lv\\\", \\\"lo\\\", \\\"lt\\\", \\\"ln\\\", \\\"lg\\\", \\\"lb\\\", \\\"rw\\\", \\\"ro\\\", \\\"mg\\\", \\\"mt\\\", \\\"mr\\\", \\\"ml\\\", \\\"ms\\\", \\\"mk\\\", \\\"mai\\\", \\\"mi\\\", \\\"mni-Mtei\\\", \\\"mn\\\", \\\"bn\\\", \\\"lus\\\", \\\"my\\\", \\\"hmn\\\", \\\"xh\\\", \\\"zu\\\", \\\"ne\\\", \\\"no\\\", \\\"pa\\\", \\\"pt\\\", \\\"ps\\\", \\\"ny\\\", \\\"ak\\\", \\\"ja\\\", \\\"sv\\\", \\\"sm\\\", \\\"sr\\\", \\\"nso\\\", \\\"st\\\", \\\"si\\\", \\\"eo\\\", \\\"sk\\\", \\\"sl\\\", \\\"sw\\\", \\\"gd\\\", \\\"ceb\\\", \\\"so\\\", \\\"tg\\\", \\\"te\\\", \\\"ta\\\", \\\"th\\\", \\\"tr\\\", \\\"tk\\\", \\\"cy\\\", \\\"ug\\\", \\\"ur\\\", \\\"uk\\\", \\\"uz\\\", \\\"es\\\", \\\"iw\\\", \\\"el\\\", \\\"haw\\\", \\\"sd\\\", \\\"hu\\\", \\\"sn\\\", \\\"hy\\\", \\\"ig\\\", \\\"ilo\\\", \\\"it\\\", \\\"yi\\\", \\\"hi\\\", \\\"su\\\", \\\"id\\\", \\\"jw\\\", \\\"en\\\", \\\"yo\\\", \\\"vi\\\", \\\"zh-CN\\\", \\\"ts\\\"]\\nd.push({\\n    col_type: \\\"input\\\",\\n    extra: {\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"f\\\", input)\\n        }),\\n        titleVisible: false,\\n        defaultValue: getMyVar(\\\"f\\\", \\\"\\\"),\\n        type: \\\"textarea\\\",\\n        height: -1\\n    }\\n});\\nd.push({\\n    title: getMyVar(\\\"from\\\", \\\"auto\\\"),\\n    col_type: \\\"text_4\\\",\\n    url: $(l1, 2).select((l1, l2) => {\\n        let index = l1.indexOf(input)\\n        putMyVar(\\\"from\\\", l2[index])\\n        refreshPage()\\n    }, l1, l2)\\n});\\nd.push({\\n    title: \\\"------->\\\",\\n    col_type: \\\"text_2\\\",\\n    url: $().lazyRule(() => {\\n        try {\\n            var res = JSON.parse(request(buildUrl(\\\"https://220.181.174.162:443/translate_a/single\\\", {\\n                'client': 'gtx',\\n                'sl': getMyVar(\\\"from\\\", \\\"auto\\\"),\\n                'tl': getMyVar(\\\"to\\\", \\\"auto\\\"),\\n                'ie': 'UTF-8',\\n                'oe': 'UTF-8',\\n                'dt': 't',\\n                'q': getMyVar(\\\"f\\\", \\\"\\\")\\n            }), {\\n                headers: {\\n                    Host: \\\"translate.googleapis.com\\\"\\n                }\\n            }))[0];\\n            log(res);\\n            let source = [];\\n            let target = [];\\n            for (let i in res) {\\n                let it = res[i];\\n                source.push(it[1]);\\n                target.push(it[0]);\\n            }\\n            log(source);\\n            let o1 = source.join(\\\"\\\\n\\\");\\n            let o2 = target.join(\\\"\\\\n\\\");\\n\\n            addItemAfter(\\\"inpu\\\", {\\n                title: \\\"原文：\\\" + o1 + \\\"\\\\n\\\" + \\\"译文：\\\" + o2,\\n                col_type: \\\"long_text\\\"\\n            })\\n        } catch (e) {\\n            toast(\\\"出现问题：\\\" + e.message)\\n            log(e.message)\\n            if (e.message == \\\"Unexpected token: <\\\") {\\n                log(\\\"你可能访问太快了\\\")\\n            }\\n        }\\n        return \\\"hiker://empty\\\"\\n    })\\n});\\nd.push({\\n    title: getMyVar(\\\"to\\\", \\\"auto\\\"),\\n    col_type: \\\"text_4\\\",\\n    url: $(l1, 2).select((l1, l2) => {\\n        let index = l1.indexOf(input)\\n        putMyVar(\\\"to\\\", l2[index])\\n        refreshPage()\\n    }, l1, l2),\\n    extra: {\\n        id: \\\"inpu\\\"\\n    }\\n})\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"福利吧Ⓜ️","author":"","version":1,"type":"other","url":"hiker://empty#fyAll#fypage#https://fuliba2021.net","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//以下是 列表解析规则（JS）\nvar res = {};\nvar item = [];\n\n// var type=MY_URL.split('#')[1];\nvar page=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\nif(getMyVar('fuliba.titleColor')==\"\") putMyVar('fuliba.titleColor',\"#FA7298\");\nif(getMyVar('fuliba.descColor')==\"\") putMyVar('fuliba.descColor',\"#708090\");\n\nif(getMyVar('fuliba.categoryNum')==\"\") putMyVar('fuliba.categoryNum','0');\nif(getMyVar('fuliba.url')==\"\") putMyVar('fuliba.url',mUrl);\n\n//自定义颜色\nconst titleColor=getMyVar('fuliba.titleColor');\nconst descColor = getMyVar('fuliba.descColor');\n\nconst categoryNum = getMyVar('fuliba.categoryNum');\nconst clickUrl = getMyVar('fuliba.url');\n\n\neval(JSON.parse(request(\"hiker://page/uses\")).rule);\nif(page === '1'){\n\n    var tColor = getRangeColors();\n    var dColor = getRangeColors();\n    var mHtml = request(mUrl,{});\n\n    var categoryOne = parseDomForArray(mHtml, '#menu-item-2299&&a');\n    var categoryTwo = parseDomForArray(mHtml, '.items&&a');\n\n    var categories = [];\n    categories.push(getAddressTag(mUrl,'福利吧'));\n    categories.push.apply(categories,categoryOne);\n    categories.push.apply(categories,categoryTwo);\n    const categoriesArray = categories;\n\n    categoriesArray.forEach((category, index) => {\n        let title = parseDomForHtml(category,'a&&Text');\n        let titleNum = title.split(\" \")[1];\n        let url = parseDomForHtml(category,'a&&href');\n        if(index == 1) title = title.replace(\"福利吧\",\"最新福利\");\n        if(index > 9){\n            title = title.split(\" \")[0];\n        }else{\n            titleNum = \"(∞)\";\n        }\n        if(url.indexOf(\"/\") == 0) url = mUrl + url;\n        item.push({\n\n            title: index.toString()===getMyVar('fuliba.categoryNum')?'““””<b><font color='+titleColor+'>'+title+'</font></b>'+'““””<small><small><small><font color='+\"#FA7298\"+'>'+titleNum+' </font></small></small></small>':title,\n            url: $(url).lazyRule((params) => {\n\n                putMyVar(\"fuliba.categoryNum\", params.index.toString());\n                putMyVar('fuliba.url',params.url);\n                putMyVar('fuliba.titleColor',params.tColor);\n                putMyVar('fuliba.descColor',params.dColor);\n                refreshPage(true);\n                return \"hiker://empty\";\n            }, {index: index,url: url,tColor: tColor,dColor: dColor,}),\n            col_type: 'scroll_button',\n        });\n        if(index == 4 || index == 9 || index == 21) item.push({col_type:\"blank_block\"});\n    })\n    item.push({col_type:\"blank_block\"});\n}\n\n\nvar ul = clickUrl+\"/page/\"+page;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item.push.apply(item,getItem(html,descColor));\n}\n\nres.data = item;\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar page=MY_URL.split('#')[1];\nvar searchn=MY_URL.split('#')[2];\nvar mUrl=MY_URL.split('#')[3];\n\nvar ul = mUrl+\"/page/\"+ page+\"/?s=\"+searchn;\nvar status = JSON.parse(fetch(ul, {headers:{\"User-Agent\":MOBILE_UA,\"Referer\":ul}, redirect:false, withHeaders:true}));\n\nvar res = {};\nvar item=[];\n\nif(status.statusCode!==404){\n    var html=fetch(ul,{});\n    eval(JSON.parse(request(\"hiker://page/one\")).rule);\n    item=getSearchItem(html);\n}\n\nres.data = item;\nsetHomeResult(res);","search_url":"hiker://empty#fypage#**#https://fuliba2021.net","group":"其它","detail_col_type":"rich_text","detail_find_rule":"js:\nvar res={};\nvar d=[];\n\n//观看文章模式 默认模式图文并茂/0 看图模式/1 省流模式/2 阅读模式/3\nif(getMyVar('fuliba.showMode')=='') putMyVar('fuliba.showMode','0');\n\n\n//图片显示模式 网页内嵌图片/0 默认海阔显示图片/1\nif(getMyVar('fuliba.viewPicMode')=='') putMyVar('fuliba.viewPicMode','1');\nif(getMyVar('fuliba.openComment')=='') putMyVar('fuliba.openComment','0');\n\nif(getMyVar('fuliba.viewPicMode')=='0' && getMyVar('fuliba.hideImg')=='') putMyVar('fuliba.hideImg','1');\n\nif(getMyVar('fuliba.viewPicMode')=='1' && getMyVar('fuliba.bigImg')=='') putMyVar('fuliba.bigImg','pic_1_full');\n\n\nlet imageTextArray = ['🌃图文并茂','👁看图模式','📱省流模式','📚阅读模式'];\nputMyVar('fuliba.imageTextMode',imageTextArray[parseInt(getMyVar('fuliba.showMode'))]);\n\nlet viewPicArray = [{0:\"显示图片🌌\",1:\"隐藏图片🔗\"},{ pic_1_full:\"默认大图🌈\", pic_3:\"精美小图✨\"}];\nif(getMyVar('fuliba.viewPicMode')=='1') putMyVar('fuliba.imgMode',viewPicArray[1][getMyVar('fuliba.bigImg')]);\nif(getMyVar('fuliba.viewPicMode')=='0') putMyVar('fuliba.imgMode',viewPicArray[0][parseInt(getMyVar('fuliba.hideImg'))]);\n\nvar picType = '';\nif(getMyVar('fuliba.viewPicMode')=='1') picType = `@lazyRule=.js:putMyVar('fuliba.bigImg',getMyVar('fuliba.bigImg')!=='pic_3'?'pic_3':'pic_1_full');refreshPage();'toast://已切换图片类型';\">`;\nif(getMyVar('fuliba.viewPicMode')=='0') picType = `@lazyRule=.js:putMyVar('fuliba.hideImg',getMyVar('fuliba.hideImg')!=='0'?'0':'1');refreshPage();'toast://已切换图片类型';\">`;\n\nvar commentArray = ['已关闭评论','已开启评论'];\nputMyVar('fuliba.openCommentString',commentArray[parseInt(getMyVar('fuliba.openComment'))])\nvar commentType = `@lazyRule=.js:putMyVar('fuliba.openComment',getMyVar('fuliba.openComment')!=='0'?'0':'1');refreshPage();'toast://'+getMyVar('fuliba.openCommentString');\">`;\n\n// if(getMyVar('fuliba.showMode')=='0') putMyVar('fuliba.imageTextMode','🌃图文并茂');\n// if(getMyVar('fuliba.showMode')=='1') putMyVar('fuliba.imageTextMode','👁看图模式');\n// if(getMyVar('fuliba.showMode')=='2') putMyVar('fuliba.imageTextMode','🌐省流模式');\n// if(getMyVar('fuliba.showMode')=='3') putMyVar('fuliba.imageTextMode','📚阅读模式');\n\n\n\nvar goodColor = '#4000FF';\nvar size = 16;\nvar html=getResCode();\n\neval(JSON.parse(request(\"hiker://page/css\")).rule);\neval(JSON.parse(request(\"hiker://page/view\")).rule);\n\n\nfunction getBaiduYunCode(content){\n    if(content.includes('pan.baidu.com')){\n        let code = content.split('提取码：');\n        if(code.length>1) copy(code[1].substring(0,4));\n    }\n}\n\nvar maxPage = 1;\ntry {\n    maxPage =  parseInt (parseDomForArray(html,'.article-paging&&a').length+1);\n} catch (e) { }\n\n\nlet headerTitle = getBigText(getStrongText(parseDomForHtml(html, '.article-title&&Text'))) + ' ' + getSmallText(getAddressTag(MY_URL, '[查看原文👀]'));\n\nlet goodCount = '👍🏻点'+parseDomForHtml(html, '.action.action-like&&Text');\ngoodCount = '<font color=\"' + goodColor + '\">' + goodCount \n+ `<small><small><sup><a href=\"hiker://empty` + commentType + getMyVar('fuliba.openCommentString').substring(1,2) + \"</a></sup></small></small></font>\";\n\nlet brower = `<big><a href=\"hiker://empty@lazyRule=.js:putMyVar('fuliba.browserLink',getMyVar('fuliba.browserLink')!==''?'':'web://');refreshPage();'toast://已切换浏览模式';\">`+(getMyVar('fuliba.browserLink')!==''?\"🌐\":\"🌆\")+\"</a></big>\";\n\n//var subTime = getCodeText(parseDomForHtml(html,'.article-meta--a&&li,0&&Text').replace('发布于','日期:'));\n\nlet subType = [];\ntry{\n    subType = parseDomForArray(html,'.article-tags&&a');\n}catch(e){}\nif(subType.length==0) subType = parseDomForArray(html,'.article-meta&&span,1&&a');\n\n\nlet type=getCodeText('🏷️标签: ');\nfor(let i=0;i<subType.length;i++){\n    type += getCodeText(parseDomForHtml(subType[i],'a&&Text'));\n}\n\nlet comment=[];\ntry{\n    comment = parseDomForArray(html,'#postcomments&&.depth-1');\n}catch(e){}\n\n//if(headerTitle.includes('女神') || headerTitle.includes('写真') || headerTitle.includes('套图') ||type.includes('宅男女神') || type.includes('写真套图')) putMyVar('img','pic_3');\n\nd.push({title: headerTitle+'&nbsp;' +goodCount+'&nbsp;'+brower+'<br>'+type,});\nd.push({col_type:'line'});\n\n// var tips = getColorText('温馨提示:图片清晰度较高，加载速度取决于网速！！！','#F47920');\n//if(getMyVar('img')=='pic_3') d.push({title: tips,});\n\n\nd.push({col_type:\"rich_text\",title:\n    `<small>当前<a href=\"hiker://empty@lazyRule=.js:putMyVar('fuliba.viewPicMode',getMyVar('fuliba.viewPicMode')!=='0'?'0':'1');refreshPage();'toast://已切换图片显示模式';\">`+(getMyVar('fuliba.viewPicMode')!=='0'?\"海阔模式\":\"网页模式\")+\"</a>👈</small>\"\n    +`<small>为：<a href=\"hiker://empty`+picType+getMyVar('fuliba.imgMode')+\"</a></small>\"\n    +'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'\n    +`<small>模式：<a href=\"hiker://empty@lazyRule=.js:if(getMyVar('fuliba.showMode')=='3'){putMyVar('fuliba.showMode','0')}else{putMyVar('fuliba.showMode',(parseInt(getMyVar('fuliba.showMode'))+1).toString());};refreshPage();'toast://已切换文章模式';\">`+getMyVar('fuliba.imageTextMode')+\"</a></small>\"\n});\n\nvar content = '';\nfor (let i = 1; i <= maxPage; i++) {\n    if(i > 1) html = fetch(MY_URL.replace('.html', '.html/' + (i)),{});\n\n    let contentZero = parseDomForHtml(html, '.article-content&&Html');\n    if(maxPage > 1){    \n        contentZero = contentZero.split('<span class=\"wp_keywordlink\"><a href')[0];\n    }\n\n    if(i>1){\n        try{\n            let not_copy = parseDomForHtml(contentZero, '.article-update-tips&&Html');\n            contentZero = contentZero.replace(not_copy, '');\n        }catch(e){}\n    }\n    content += contentZero;\n}\n\n// getBaiduYunCode(content);\n\n\ncontent = content\n    .replace(/<br>/g, '')\n    .replace(/\\n<p>&nbsp;<\\/p>/g,'')\n    .replace(/\\n<p><\\/p>/g,'')\n    .replace(/<pre>([\\s\\S]*?)<\\/pre>/g,'')\n    .replace(/<p>/g,'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;')\n    .replace(/<\\/p>/g,'<br>');\n    // .replace(/<img([\\s\\S]*?)!!([\\s\\S]*?)>/g,'');\n    //非常耗时和内存\n    // .replaceWithCallback(/<img([\\s\\S]*?)>/g, '', deleteInvalidImgTag);\n\nif(getMyVar('fuliba.showMode')=='2' || getMyVar('fuliba.showMode')=='3') content = content.replace(/<img([\\s\\S]*?)>/g,'')\n  .replace(/\\n<p><strong><\\/strong><\\/p>/g,'');\n\nif(getMyVar('fuliba.viewPicMode')=='1'){\n    let contentlist = content.split('\\n');\n    let htmlList = '';\n    for(let j=0;j<contentlist.length;j++){\n        let imglist = imgTagGetUrlArray(contentlist[j],/<img([\\s\\S]*?)>/g);\n        let quoteContent = contentlist[j];\n        //文章内容-简单文本\n        quoteContent = quoteContent\n            .replace(/<img([\\s\\S]*?)>/g,'')\n            // .replace(/<(iframe|sources|video)([\\s\\S]*?)<\\/(iframe|sources|video)>/g,'')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n            // .replace(/<p><\\/p>/g,'');\n\n\n\n        let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n        if(getMyVar('fuliba.showMode')=='3'){\n            if(!temp.match(/^\\s*$/)) htmlList += '◇&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '<br>';\n            if(j==contentlist.length-1 && htmlList !== ''){\n                d.push({title: htmlList,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n                htmlList = '';\n            }\n        }else{\n            if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n            if(imglist.length > 0 || j==contentlist.length-1){\n                let temp = parseDomForHtml(getNewText(htmlList,'div'), 'Text');\n                if(!temp.match(/^\\s*$/) && getMyVar('fuliba.showMode')!=='1') d.push({title: htmlList,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                htmlList = '';\n                for (let k = 0; k < imglist.length; k++){\n                    d.push({\n                        pic_url:imglist[k],\n                        url:getMyVar('fuliba.browserLink')+imglist[k],\n                        col_type:getMyVar('fuliba.bigImg'),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }\n                    });\n                }\n            }\n        }\n    }   \n\n    //复杂文本-由Html格式-替换掉图片---视频链接也替换掉用查看视频替代---网站地址不用替换，直接用\n    // quoteContent = getNewText(quoteContent,'div');\n    // let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n    // if(!quoteContent.includes('=\"http')) quoteContent = temp;\n    // if(!temp.match(/^\\s*$/)) d.push({title: quoteContent});\n\n    //漫画模式\n    // var pics=[];\n    //for (let k = 0; k < imglist.length; k++){\n    //     pics.push(imglist[k]);\n    // }\n    // \"pics://\"+pics.join(\"&&\");\n\n    // if(imglist.length==0) continue;\n    // for (let k = 0; k < imglist.length; k++){\n    //     d.push({\n    //         pic_url:imglist[k],\n    //         url:imglist[k],\n    //         col_type:getMyVar('fuliba.bigImg')\n    //     });\n    // }\n}else{\n    // if(getMyVar('fuliba.showMode')=='1') content = GetImgTagArray(content,/<img([\\s\\S]*?)>/g);\n    if(getMyVar('fuliba.showMode')=='1'){\n        let matchArray = content.match(/<img([\\s\\S]*?)>/g);\n        let imglist = '';\n        if (matchArray != null) {\n            for (let i = 0; i < matchArray.length; i++) {\n                let pic = matchArray[i] .replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n                                        .replace(/<showimg/g, '<img');\n                                       \n                if(getMyVar('fuliba.hideImg') == '0') d.push({title: pic,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n                imglist += pic;\n            }\n        }\n        if(getMyVar('fuliba.hideImg') == '1') d.push({title: imglist,\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    }else{\n        content = content.replaceWithCallback(/<img([\\s\\S]*?)>/g, '<img data-v>', imgTagReplacementOne)\n            .replace(/<showimg/g, '<img')\n            .replaceWithCallback(/<(iframe)([\\s\\S]*?)<\\/(iframe)>/g, '<link data-v>', linkTagReplacement2)\n            .replaceWithCallback(/<(source|video)([\\s\\S]*?)<\\/(source|video)>/g, '<video data-v>', videoTagReplacement2);\n\n        let contentlist = content.split('\\n');\n        let htmlList = '';\n        for(let j=0;j<contentlist.length;j++){\n            let quoteContent = contentlist[j];\n\n            let temp = parseDomForHtml(getNewText(quoteContent,'div'), 'Text');\n            if(getMyVar('fuliba.showMode')=='3'){\n                if(!temp.match(/^\\s*$/)) htmlList += '<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + temp + '</p>';\n                if(j==contentlist.length-1 && htmlList !== ''){\n                    d.push({title: htmlList,\n                        extra: {\n                        textSize: size,\n                        click: true\n                    }});\n                    htmlList = '';\n                }\n            }else{\n                if(!temp.match(/^\\s*$/) || quoteContent.includes('blockquote>') || (quoteContent.includes('div>') && quoteContent.match(/<(div)([\\s\\S]*?)<\\/(div)>/g) == null)) htmlList += quoteContent;\n\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null || j==contentlist.length-1){\n                    if(getMyVar('fuliba.showMode')!=='1' && htmlList !== '') d.push({title: htmlList,\n                        extra: {\n                        textSize: size,\n                        click: true\n                    }});\n                    htmlList = '';\n                }\n                if(quoteContent.match(/<img([\\s\\S]*?)>/g) !== null) d.push({title: quoteContent,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n            }\n        }\n    }\n}\n\n\nd.push({col_type: 'line_blank'});\nlet tips = '该文章来源于福利吧，如您喜欢，请进入福利吧网页版';\nlet warning = '此规则仅限学习使用，如有不妥，请本吧主联系我删除';\n\n// if(getMyVar('fuliba.showMode')=='0' || getMyVar('fuliba.showMode')=='2'){\nif(getMyVar('fuliba.openComment')=='0'){\n    eval(JSON.parse(request(\"hiker://page/comment\")).rule);\n\n    d.push({title: GetTips(tips,warning),\n                        extra: {\n                            textSize: size,\n                            click: true\n                        }});\n    d.push({col_type: 'line_blank'});\n\n    if(comment.length > 0){\n        let commentNum = parseDomForHtml(html,'.article-meta&&span,2&&Text').replace('评论','📢热评数');\n        commentNum = GetHome(3)+getStrongText(getBigText(commentNum));\n        for (let l = 0; l < comment.length; l++){\n            let list = parseDomForArray(comment[l],'.comment');\n            d.push({col_type: 'line'});\n\n            for (let m = 0; m < list.length; m++) {\n                let floor = ''; let main = '';  let autor = ''; let time = '';\n                try{\n                    if(m==0) floor = '🏢' + parseDomForHtml(list[m],'.comt-f&&Text').replace('#','')+'楼';\n                }catch(e){\n                    floor = l+'楼层错误!!!'+m\n                }\n                try{\n                    main =  parseDomForHtml(list[m],'.comt-main&&p&&Text');\n                }catch(e){\n                    main = l+'回复内容错误!!!'+m\n                }\n                try{\n                    autor = '👱' + parseDomForHtml(list[m],'.comt-author&&Text');\n                }catch(e){\n                    autor = l+'作者名称错误!!!'+m\n                }\n                try{\n                    time = '🕢' + parseDomForHtml(list[m],'.comt-meta--span&&Text').replace('回复','');\n                }catch(e){\n                    time = l+'时间错误!!!'+m\n                }\n\n                let commentText = GetComment(main,autor,time,floor);\n                if(l==0 && m==0) commentText = commentNum +'<br><br>'+ commentText;\n\n                d.push({title: commentText,\n                    extra: {\n                    textSize: size,\n                    click: true\n                }});\n            }\n        }\n    }\n}\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"CSS格式\",\"path\":\"css\",\"rule\":\"function getNewText(text,css){\\n   return '<'+css+'>' + text + '</'+css+'>';\\n}\\n\\nfunction getBigText(text) {\\n    return '<big>' + text + '</big>';\\n}\\nfunction getSmallText(text) {\\n    return '<small>' + text + '</small>';\\n}\\nfunction getStrongText(text) {\\n    return '<strong>' + text + '</strong>';\\n}\\nfunction getTitleText(text) {\\n    return getStrongText(text);\\n}\\nfunction getColorText(text, color) {\\n    return '<font color=\\\"' + color + '\\\">' + text + '</font>';\\n}\\nfunction getGreyText(text) {\\n    return getColorText(text, 'grey');\\n}\\nfunction getAuthorText(text) {\\n    return getColorText(text, userColor);\\n}\\nfunction getCodeText(text) {\\n    return '<code>' + text + '</code>';\\n}\\nfunction getBlockquoteText(text) {\\n    return '<blockquote>' + text + '</blockquote>'\\n}\\nfunction getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\nfunction getCommentMeta(html) {\\n    return getSmallText(html);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"视图处理\",\"path\":\"view\",\"rule\":\"//获取重定向地址\\nfunction getRedirectAddress(url){\\n    let urlRedirect = '';\\n    try{\\n        let urlCode = fetch(url,{redirect:false,withHeaders:true});\\n        urlRedirect = JSON.parse(urlCode).headers.location[0];\\n    }catch(e){}\\n    return urlRedirect;\\n}\\n\\nString.prototype.replaceWithCallback = function (searchValue, replaceValue, callback) {\\n    let returnValue = this;\\n    if (callback != null) {\\n        returnValue = callback(this, searchValue, replaceValue);\\n    }\\n    return returnValue;\\n};\\n\\n//删除重定向图片链接\\nfunction deleteInvalidImgTag(context, searchValue,replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl != '') {\\n                if(getRedirectAddress(imgUrl) != ''){\\n                    returnValue = returnValue.replace(item,replaceValue);\\n                }\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction GetImgTagArrayString(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = '';\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            returnValue += matchArray[i];\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction imgTagGetUrlArray(context, searchValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = [];\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue.push(imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\n\\nlet imgError = '<p><font color=\\\"grey\\\">图片暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction imgTag(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagOne(context, imgUrl) {\\n    let replaceString = imgUrl === '' ? imgError : '\\\\n<p><showimg src=\\\"' + (imgUrl + '@Referer=' + MY_URL) + '\\\"></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = imgUrl === '' ? imgError : '<p><a href=\\\"' + imgUrl + '\\\">[点击查看大图]</a>&nbsp;&nbsp;&nbsp;<a href=\\\"web://' + imgUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<img data-v>/g, replaceString);\\n}\\nfunction imgTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTag(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\nfunction imgTagReplacementOne(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<img.*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let imgUrl = RegExp.$2;\\n            if (imgUrl.indexOf(\\\"placeholder\\\") > -1) {\\n                /<img.*?(data-original)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n                imgUrl = RegExp.$2;\\n            }\\n            if(imgUrl.indexOf(\\\"//\\\")==0){imgUrl = \\\"https:\\\" + imgUrl;}\\n            if (imgUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = imgTagOne(returnValue, imgUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet videoError = '<p><font color=\\\"grey\\\">视频暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction videoTag(context, videoUrl) {\\n    let replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + (videoUrl) + '\\\">[点击查看视频]</a></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = videoUrl === '' ? videoError : '<p><a href=\\\"' + videoUrl + '\\\">[点击查看视频]</a></p>';\\n    }\\n    return context.replace(/<video data-v>/g, replaceString);\\n}\\nfunction videoTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(source|video).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let videoUrl = RegExp.$3;\\n            if(videoUrl.indexOf(\\\"//\\\")==0){videoUrl = \\\"https:\\\" + videoUrl;}\\n            if(videoUrl.includes(\\\"zhainanmi\\\")) continue;\\n            if (videoUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = videoTag(returnValue, videoUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nlet linkError = '<p><font color=\\\"grey\\\">链接暂时无法显示，若要查看请<a href=\\\"' + MY_URL + '\\\">访问原文</a></font></p>';\\nfunction linkTag(context, linkUrl) {\\n    let replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + (linkUrl) + '\\\">[点击查看链接]</a></p>';\\n    if (getMyVar('fuliba.hideImg')=='1') {\\n        replaceString = linkUrl === '' ? linkError : '<p><a href=\\\"' + linkUrl + '\\\">[点击查看链接]</a></p>';\\n    }\\n    return context.replace(/<link data-v>/g, replaceString);\\n}\\nfunction linkTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(iframe).*?(data-original|data-src|src)=\\\"(.*?)\\\"([\\\\s\\\\S]*?)>/.test(item);\\n            let linkUrl = RegExp.$3;\\n            if(linkUrl.indexOf(\\\"//\\\")==0){linkUrl = \\\"https:\\\" + linkUrl;}\\n            if (linkUrl !== '') {\\n                returnValue = returnValue.replace(item, replaceValue);\\n                returnValue = linkTag(returnValue, linkUrl);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\\n\\nfunction cssTagReplacement2(context, searchValue, replaceValue) {\\n    let matchArray = context.match(searchValue);\\n    let returnValue = context;\\n    if (matchArray != null) {\\n        for (let i = 0; i < matchArray.length; i++) {\\n            let item = matchArray[i];\\n            /<(div|p|strong)>.*?<\\\\/(div|p|strong)>/.test(item);\\n            let css = RegExp.$2;\\n            if (css.match(/^\\\\s*$/)) {\\n                returnValue = returnValue.replace(item, replaceValue);\\n            }\\n        }\\n    }\\n    return returnValue;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"评论方法\",\"path\":\"comment\",\"rule\":\"\\nfunction GetHome(num){\\n    let retract = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    for(let i=1;i<num;i++) retract += '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;';\\n    return '<span>'+retract+'</span>';\\n}\\n\\nfunction GetComment(main,autor,time,floor){\\n\\n    let fontStyle = '<font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;&nbsp;'+time+' &nbsp;</span></font>';\\n    let buttonData = getColorText(autor,'#2979FF')+fontStyle+getColorText(floor,'#2979aa');\\n    let comment = '';\\n\\n    if(floor==''){\\n        comment =GetHome(1)+main+getNewText('<br>'+GetHome(1)+buttonData,'small');\\n    }else{\\n        comment = main+getNewText('<br>'+ buttonData,'small');\\n    }\\n    return comment;\\n}\\n\\nfunction GetTips(tips,warning){\\n    let tipsStyle = '<small><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+tips+' &nbsp;</span></small>';\\n    let warningStyle = '<small><font color=\\\"grey\\\"><span class=\\\"normal-font gray-font align-baseline\\\">&nbsp;'+warning+' &nbsp;</span></font></small>';\\n    return tipsStyle+'<br>'+warningStyle;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"解析搜索\",\"path\":\"one\",\"rule\":\"function getItem(html,colors){\\n    var list = parseDomForArray(html, 'body&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], 'img&&data-src');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.pc&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        let time = \\\"🕧日期: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.meta&&time&&Text') +' </font></b>';\\n        let like = \\\"💜点赞: \\\" + '““””<b><font color='+ colors + '>' + parseDomForHtml(list[i], '.post-like&&span&&Text') +' </font></b>';\\n        let comment =  \\\"  💬评论: \\\" + '““””<b><font color='+ colors + '>' + commentNum +' </font></b>';\\n\\n        let tabs=\\\"\\\\n\\\\n\\\";\\n\\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: time+tabs+like+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\\n\\nfunction getSearchItem(html){\\n    var list = parseDomForArray(html, 'body&&article');//       【列表】\\n    var item=[];\\n    for (var i in list) {\\n        let title = parseDomForHtml(list[i], 'h2&&Text');\\n        let pic = \\\"https://img0.baidu.com/it/u=1420719556,2509925486&fm=26&fmt=auto&gp=0.jpg\\\";\\n        try{\\n            pic = parseDomForHtml(list[i], 'img&&data-src');\\n        }catch(e){}\\n        let commentNum = '0';\\n        try{\\n            commentNum = parseDomForHtml(list[i], '.pc&&Text').split(\\\"(\\\")[1].split(\\\")\\\")[0];\\n        }catch(e){}\\n\\n        // let time = \\\"🕧:\\\"  + parseDomForHtml(list[i], '.meta&&time&&Text');\\n        let like = \\\"💜: \\\" + parseDomForHtml(list[i], '.post-like&&span&&Text');\\n        let comment =  \\\"💬: \\\" + commentNum;\\n\\n        let tabs=\\\"   \\\";\\n        \\n        item.push({\\n            title:title,//【标题】\\n            pic_url: pic, //图片\\n            desc: like+tabs+comment,//【描述】\\n            url: parseDom(list[i], 'h2&&a&&href') +'#fullTheme##noRecordHistory##noHistory#',//【链接】\\n        });\\n    }\\n    return item;\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"方法云集\",\"path\":\"uses\",\"rule\":\"function getAddressTag(url, text) {\\n    return '<a href=\\\"' + url + '\\\">' + text + '</a>'\\n}\\n\\nfunction getRangeColors(){\\n    //颜色 代码来自Rx大佬\\n    let Colors=[\\\"4\\\",\\\"5\\\",\\\"0\\\",\\\"1\\\",\\\"A\\\",\\\"3\\\",\\\"8\\\",\\\"9\\\",\\\"B\\\",\\\"C\\\",\\\"D\\\",\\\"E\\\",\\\"6\\\",\\\"7\\\",\\\"F\\\"];\\n    let Color = \\\"#\\\";\\n    for (let i=0;i<6;i++){\\n        let num=Math.ceil((Math.random()*15))-1;\\n        Color+=Colors[num];\\n    }\\n    return Color;\\n}\\n\\nfunction getBaiduYunCode(content){\\n    if(content.includes(\\\"pan.baidu.com\\\")){\\n        var code = content.split(\\\"提取码：\\\");\\n        if(code.length>1) copy(code[1].substring(0,4));\\n    }\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"夜玫瑰","author":"","version":41,"type":"other","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    if (tit != \\\"\\\" && !tit.includes(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,            \\n            col_type: \\\"text_3\\\",\\n            extra: {\\n                id: it.href\\n            }\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    }\\n                }\\n            });\\n        }\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `夜玫瑰@https://www.yemg.cc/index.php/vod/search.html?wd=**`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"含B楼","author":"","version":41,"type":"other","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    if (tit != \\\"\\\" && !tit.includes(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,            \\n            col_type: \\\"text_3\\\",\\n            extra: {\\n                id: it.href\\n            }\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    }\\n                }\\n            });\\n        }\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `含B楼@https://hci.hbll.beauty/cn/home/web/index.php/vod/search.html?wd=**`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"色片","author":"","version":41,"type":"other","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    if (tit != \\\"\\\" && !tit.includes(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,            \\n            col_type: \\\"text_3\\\",\\n            extra: {\\n                id: it.href\\n            }\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    }\\n                }\\n            });\\n        }\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `色片@https://qq.com.qzmp00.icu/search?pid=0&keyword=**`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"关键","author":"","version":41,"type":"other","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require('hiker://page/pro')","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        title: pdfh(it, \\\"a&&title\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    let tit = it.title || \\\"\\\";\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    if (tit != \\\"\\\" && !tit.includes(it)) {\\n        return false;\\n    }\\n    return it.match(/原画|备用|蓝光|超清|正片|韩版|4K|4k|1080P|720P|TC|HD|BD/)\\n}\\n\\nfunction notChapter(it) {\\n    if (it == null || it.text == null) {\\n        return true;\\n    }\\n    return it.text.match(/[0-9]\\\\.[0-9]分/);\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    if (notChapter(it)) {\\n        //优先排除\\n        return false;\\n    }\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,            \\n            col_type: \\\"text_3\\\",\\n            extra: {\\n                id: it.href\\n            }\\n        });\\n    }\\n}\\nif (d.length == 0) {\\n    //匹配失败\\n    d.push({\\n        title: \\\"\\\",\\n        url: url,\\n        col_type: \\\"x5_webview_single\\\",\\n        desc: \\\"float&&100%\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            canBack: true\\n        }\\n    });\\n    toast(\\\"AI匹配失败，已使用X5加载\\\");\\n    setResult(d);\\n} else {\\n    //为线路加分割线\\n    let d2 = [];\\n    for (let i = 0; i < d.length; i++) {\\n        d2.push(d[i]);\\n        if (i < d.length - 1) {\\n            let it = d[i];\\n            let t1 = parseInt(clearText(it.title));\\n            let next = d[i + 1];\\n            let t2 = parseInt(clearText(next.title));\\n            if (t2 - t1 > 1 || t1 - t2 > 1) {\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"line_blank\\\"\\n                });\\n                d2.push({\\n                    col_type: \\\"big_blank_block\\\"\\n                });\\n            }\\n        }\\n    }\\n\\n    setResult(d2);\\n}\"},{\"col_type\":\"text_1\",\"name\":\"搜索测试\",\"path\":\"s\",\"rule\":\"js:\\nlet url = base64Decode(getParam(\\\"u\\\"));\\nlog(url);\\nlet key = getParam(\\\"key\\\");\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nsetResult(sp(url, key, \\\"搜索测试\\\"));\"},{\"col_type\":\"movie_3\",\"name\":\"聚合搜索\",\"path\":\"pro\",\"rule\":\"var d = [];\\nif (MY_PAGE == 1) {\\n    d.push({\\n        title: \\\"搜索\\\",\\n        url: $.toString(() => {\\n            refreshPage();\\n            return \\\"hiker://empty\\\";\\n        }),\\n        col_type: \\\"input\\\",\\n        desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n        pic_url: \\\"\\\",\\n        extra: {\\n            defaultValue: getMyVar(\\\"sou\\\", \\\"\\\"),\\n            onChange: $.toString(() => {\\n                putMyVar(\\\"sou\\\", input);\\n            })\\n        }\\n    });\\n    addListener(\\\"onClose\\\", $.toString(() => {\\n        clearMyVar(\\\"sou\\\");\\n        clearMyVar(\\\"so\\\");\\n    }));\\n}\\n\\nlet s = getMyVar(\\\"sou\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, r != \\\"\\\" ? r : null);\\n\\n    let pageid = MY_RULE.title + \\\"-page\\\" + p;\\n    if (data.length > 0) {\\n        d.push({\\n            title: \\\"加载第\\\" + p + \\\"页中，进度：1/\\\" + data.length,\\n            url: \\\"\\\",\\n            col_type: \\\"text_center_1\\\",\\n            desc: \\\"\\\",\\n            pic_url: \\\"\\\",\\n            extra: {\\n                id: pageid\\n            }\\n        });\\n    }\\n    setResult(d);\\n    log(data.length);\\n    if (data.length > 0) {\\n        //多线程加载        \\n        let realPage = \\\"\\\" == r ? 1 : p;\\n        let tasks = data.map(it => {\\n            return {\\n                func: function(rule) {\\n                    return rule.find(s, realPage);\\n                },\\n                param: it,\\n                id: \\\"rule@\\\" + it.name\\n            }\\n        });\\n\\n        batchExecute(tasks, {\\n            func: function(param, id, error, result) {\\n                //log(\\\"listener: \\\" + (result || []).length)\\n                param.i = param.i + 1;\\n                if (result) {\\n                    try {\\n                        for (let it of result) {\\n                            param.j = param.j + 1;\\n                            addItemBefore(pageid, {\\n                                title: wrap(it.title, s),\\n                                desc: it.desc,\\n                                url: it.url,\\n                                pic_url: it.pic_url,\\n                                col_type: it.pic_url ? 'movie_1_vertical_pic' : \\\"text_1\\\",\\n                                extra: it.extra\\n                            })\\n                        }\\n                    } catch (e) {}\\n\\n                }\\n                if (param.i >= param.all) {\\n                    deleteItem(pageid)\\n                } else {\\n                    updateItem({\\n                        title: \\\"加载第\\\" + MY_PAGE + \\\"页中，进度：\\\" + (param.i + 1) + \\\"/\\\" + param.all,\\n                        url: \\\"\\\",\\n                        col_type: \\\"text_center_1\\\",\\n                        desc: \\\"\\\",\\n                        pic_url: \\\"\\\",\\n                        extra: {\\n                            id: pageid\\n                        }\\n                    })\\n                }\\n            },\\n            param: {\\n                all: data.length,\\n                i: 0,\\n                j: -1\\n            }\\n        })\\n    }\\n} else {\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let data = load(-1, null);\\n    if (data.length > 0) {\\n        for (let it of data) {\\n            d.push({\\n                title: it.name,\\n                url: \\\"select://\\\" + JSON.stringify({\\n                    title: \\\"请选择操作\\\",\\n                    col: 1,\\n                    options: [\\\"访问首页\\\", \\\"搜索此站\\\"],\\n                    js: $.toString((url) => {\\n                        if (input == \\\"访问首页\\\") {\\n                            MY_URL = url;\\n                            return \\\"x5://\\\" + getHome(url)\\n                        } else {\\n                            return \\\"hiker://page/singles\\\"\\n                        }\\n                    }, it.url)\\n                }),\\n                col_type: \\\"flex_button\\\",\\n                desc: \\\"\\\",\\n                pic_url: \\\"\\\",\\n                extra: {\\n                    RULE: {\\n                        name: it.name,\\n                        url: it.url\\n                    }\\n                }\\n            });\\n        }\\n        $.require(\\\"hiker://page/manage\\\")(d, data.map(it => it.name));\\n    }\\n}\\n\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"数据\",\"path\":\"data\",\"rule\":\"//并发规则数\\nlet size0 = 10;\\nlet rulesText0 = `关键@http://cohsck.cc/vodsearch/-------------.html?wd=**&submit=`;\\nlet rulesText = getItem(\\\"rules\\\", rulesText0);\\nlet sp = $.require(\\\"hiker://page/sp\\\");\\nrules = rulesText.split(\\\"\\\\n\\\")\\n    .filter(it => it.includes(\\\"@\\\"))\\n    .map(rule => {\\n        let s = rule.split(\\\"@\\\");\\n        return {\\n            name: s[0],\\n            find: function(key, page) {\\n                return sp(s[1], key, s[0]);\\n            },\\n            url: s[1]\\n        };\\n    });\\n\\nfunction load(page, rule) {\\n    let size = page <= 0 ? rules.length : size0;\\n    page = page <= 0 ? 1 : page;\\n    if (!page && !rule) {\\n        return rules.map(it => it.name);\\n    }\\n    if (rule != null) {\\n        if (page != null && page > 1) {\\n            return rules.filter(i => i.name == rule && i.page);\\n        }\\n        return rules.filter(i => i.name == rule);\\n    }\\n    let start = (page - 1) * size;\\n    if (rules.length < start + 1) {\\n        return [];\\n    }\\n    let len = size;\\n    if (rules.length < page * size) {\\n        len = rules.length - start\\n    }\\n    return rules.slice(start, start + len);\\n}\\n\\nfunction addRule(name, surl) {\\n    setItem(\\\"rules\\\", rulesText + \\\"\\\\n\\\" + name + \\\"@\\\" + surl);\\n}\\n\\nfunction removeRule(name) {\\n    let newT = rulesText.split(\\\"\\\\n\\\")\\n        .filter(it => it.indexOf(name + \\\"@\\\") < 0)\\n        .join(\\\"\\\\n\\\");\\n    setItem(\\\"rules\\\", newT);\\n}\\n\\n$.exports = {\\n    load: load,\\n    addRule: addRule,\\n    removeRule: removeRule\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索解析\",\"path\":\"sp\",\"rule\":\"function search(url, key, rule) {\\n    let d = [];\\n    let html = \\\"\\\";\\n    if (url.includes(\\\"**\\\")) {\\n        //get请求\\n        let old = url;\\n        url = url.replace(\\\"**\\\", key);\\n        html = request(url);\\n        //自动过验证码和频繁访问限制\\n        let {\\n            check, test\\n        } = $.require(\\\"hiker://page/yzm\\\");\\n        if (check(url, html, d)) {\\n            log(\\\"重试了\\\");\\n            html = request(url, {\\n                headers: {\\n                    \\\"Referer\\\": url\\n                }\\n            });           \\n        }         \\n        test(url, html, d, old, key, rule);\\n    } else {\\n        //自动识别post请求\\n        html = request(url);\\n        let form = pdfh(html, \\\"body&&form&&Html\\\");\\n        let action = pd(html, \\\"form&&action\\\", url);\\n        let inputs = pdfa(html, \\\"body&&form&&input\\\");\\n        let body = {};\\n        for (let it of inputs) {\\n            let name = pdfh(it, \\\"input&&name\\\");\\n            if (name && name != \\\"\\\") {\\n                let value = pdfh(it, \\\"input&&value\\\");\\n                body[name] = value || key;\\n            }\\n        }\\n        html = post(action, {\\n            body: body\\n        });\\n    }\\n\\n    let alist = pdfa(html, \\\"body&&a\\\");\\n    let arr = alist.map(it => {\\n        let t = pdfh(it, \\\"a&&Text\\\");\\n        let t2 = pdfh(it, \\\"a&&title\\\");\\n        return {\\n            //html: it,\\n            text: t2 && t2.includes(key) ? t2 : t,\\n            href: pd(it, \\\"a&&href\\\", url)\\n        }\\n    });\\n\\n    function isResult(it) {\\n        it = it.text || \\\"\\\";\\n        if (it == \\\"\\\" || it.match(/搜索|结果/)) {\\n            return false\\n        }\\n        return it.includes(key);\\n    }\\n\\n    for (let i = 0; i < arr.length; i++) {\\n        let it = arr[i];\\n        let t = it.text;\\n        if (!it.href || it.href == \\\"\\\") {\\n            continue;\\n        }\\n        if (isResult(it)) {\\n            d.push({\\n                title: t,\\n                url: \\\"hiker://page/p?u=\\\" + base64Encode(it.href),\\n                col_type: \\\"text_1\\\",\\n                desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\"\\n            });\\n        }\\n    }\\n    return d;\\n}\\n$.exports = search;\"},{\"col_type\":\"movie_3\",\"name\":\"增删\",\"path\":\"manage\",\"rule\":\"$.exports = function(d, names) {\\n    d.push({\\n        title: \\\" + \\\",\\n        url: $(\\\"#noLoading#\\\").lazyRule((rr) => {\\n            deleteItemByCls(\\\"aiadd\\\");\\n            addItemAfter(rr + \\\"aisdel\\\", [{\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站名称\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('name', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"\\\",\\n                    desc: \\\"请输入网站搜索地址\\\",\\n                    col_type: \\\"input\\\",\\n                    extra: {\\n                        titleVisible: false,\\n                        onChange: \\\"putMyVar('surl', input)\\\",\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                },\\n                {\\n                    title: \\\"提交保存\\\",\\n                    col_type: \\\"text_center_1\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(() => {\\n                        let surl = getMyVar(\\\"surl\\\", \\\"\\\");\\n                        let name = getMyVar(\\\"name\\\", \\\"\\\");\\n                        if (surl == \\\"\\\" || name == \\\"\\\") {\\n                            return \\\"toast://请输入完整内容\\\"\\n                        }\\n                        let r = decodeURIComponent(surl);\\n                        r = r.replace(new RegExp(\\\"[\\\\u4e00-\\\\u9fa5]+\\\", \\\"g\\\"), \\\"**\\\");\\n                        let {\\n                            addRule\\n                        } = $.require(\\\"hiker://page/data\\\");\\n                        addRule(name, r);\\n                        refreshPage();\\n                        return \\\"toast://已保存\\\";\\n                    }),\\n                    extra: {\\n                        cls: \\\"aiadd\\\"\\n                    }\\n                }\\n            ]);\\n            return \\\"hiker://empty\\\"\\n        }, MY_RULE.title),\\n        col_type: \\\"flex_button\\\",\\n    });\\n    d.push({\\n        title: \\\" - \\\",\\n        url: \\\"select://\\\" + JSON.stringify({\\n            options: names,\\n            title: \\\"请选择要删除的站点\\\",\\n            js: $.toString(() => {\\n                let {\\n                    removeRule\\n                } = $.require(\\\"hiker://page/data\\\");\\n                removeRule(input);\\n                refreshPage();\\n                return \\\"toast://OK\\\";\\n            })\\n        }),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: MY_RULE.title + \\\"aisdel\\\"\\n        }\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function wrap(text, s) {\\n    return text.includes(\\\"““””\\\") ? text : \\\"““””\\\" + text.replace(new RegExp(\\\"<em>|</em>\\\", \\\"g\\\"), \\\"\\\").replace(new RegExp(s, \\\"g\\\"), \\\"<strong><span style=\\\\\\\"color: #1E90FF\\\\\\\">\\\" + s + \\\"</span></strong>\\\")\\n}\\n$.exports = {\\n    wrap: wrap\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"单搜\",\"path\":\"singles\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"搜索\\\",\\n    url: $.toString(() => {\\n        putMyVar(\\\"so\\\", input);\\n        refreshPage();\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"请输入关键词，尽量少字不要多字\\\",\\n    pic_url: \\\"\\\",\\n    extra: {\\n        defaultValue: getMyVar(\\\"so\\\", \\\"\\\")\\n    }\\n});\\nlet s = getMyVar(\\\"so\\\", \\\"\\\");\\nlet r = \\\"\\\";\\nif (s != \\\"\\\") {\\n    let p = MY_PAGE;\\n    let {\\n        load\\n    } = $.require(\\\"hiker://page/data\\\");\\n    let {\\n        wrap\\n    } = $.require(\\\"hiker://page/tool\\\");\\n    let data = load(p, MY_PARAMS.RULE.name);\\n    let arr = data[0].find(s, p);\\n    for (let it of arr) {\\n        it.title = wrap(it.title, s)\\n        d.push(it);\\n    }\\n}\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"沙雕新闻","author":"小棉袄🌞","version":1,"type":"read","url":"https://shadiao.plus/page/fypage","col_type":"movie_1_left_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#page&&article;h2&&Text;img&&src;.entry-summary&&Text;a&&href.js:\"x5://\"+input","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"大学资源","author":"小🔥星","version":8,"type":"other","url":"http://www.dxzy163.com/list/indexfyAll_fypage.html[firstPage=http://www.dxzy163.com/list/indexfyAll.html];get;gb2312","col_type":"movie_2","class_name":"经济管理&市场营销&医学课程&机械工程&大学理工&公共课程&名校公开课&建筑工程&金融财会&环境地理&社会科学&创新技术&电子通讯&哲学课程&自然科学&法律法规&人力资源&石油化工&农业课程&环境工程&电气工程&文化历史&园林专业&人工智能&其他&","class_url":"39&40&66&41&42&45&41&96&103&112&113&129&132&143&144&146&151&162&168&169&171&173&182&183&85&","area_name":"考研数学&考研英语&考研政治&考研专业课&名家讲坛&成功讲座&人文讲座&礼仪讲座&国学讲座&演讲口才&经济管理&百家讲坛&人在职场&年轻成长&企业管理&销售管理&家庭教育&心理学&MBA课程&母婴系列&投资理财&TED&","area_url":"48&49&50&87&35&36&37&63&64&54&58&92&93&94&118&119&139&140&148&158&163&181&","sort_name":"办公软件&网页设计&程序设计&平面设计&三维软件&应用软件&电脑网络&电脑基础&数据库&操作系统&移动开发&IT认证&分析计算&工程软件&","year_name":"初一&学前&一年级&二年级&三年级&四年级&五年级&六年级&动漫视频&儿童系列&少儿益智&小学综合&四六级考试&品牌英语&基础英语&其他语种&雅思托福&英语口语&工程建筑&考试认证&财会考试&公务员考试&司法考试","sort_url":"17&18&23&19&20&21&22&72&102&157&161&172&175&184&","year_url":"99&89&107&108&109&110&90&138&111&152&153&156&24&25&26&27&123&170&43&67&52&53&97","find_rule":".position-relative&&.col-md-3;img&&alt;img&&src;span&&Text;a&&href","searchFind":".tab-content&&.col-md-3;\n.course-name&&Text;\na&&href;\n.course-footer&&Text;\n.course-desc&&Text;\nimg&&src","search_url":"http://www.dxzy163.com/search.asp?page=fypage&searchword=**&searchtype=-1;get;gb2312","group":"其它","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nd.push({\n    desc: \"258&&float\",\n    col_type: \"x5_webview_single\"\n});\n\n//var lazy = ``;\n//感谢Hood,killer,小棉袄等大佬的指导\nfunction lazy(url) {\n    return 'x5Rule://' + url + '@' + $.toString(() => {\n        var urls = _getUrls()\n        for (let i in urls) {\n            if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8|\\.flv|\\.m4a/i)) {\n                return urls[i]\n            }\n        }\n\n        function muteMe(elem) {\n            try {\n                elem.pause();\n            } catch (e) {}\n        }\n        var videos = document.querySelectorAll(\"video\"),\n            audios = document.querySelectorAll(\"audio\"),\n            v2 = document.querySelectorAll(\"embed\"),\n            v3 = document.querySelectorAll(\"#player\");\n        try {\n            [].forEach.call(videos, function(video) {\n                muteMe(video);\n            });\n        } catch (e) {}\n        try {\n            [].forEach.call(audios, function(audio) {\n                muteMe(audio);\n            });\n        } catch (e) {}\n        try {\n            [].forEach.call(v2, function(v) {\n                muteMe(v);\n            });\n        } catch (e) {}\n        try {\n            [].forEach.call(v3, function(v) {\n                muteMe(v);\n            });\n        } catch (e) {}\n    })\n}\n\nvar arts = parseDomForArray(html, 'body&&.playfrom');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\n}\nvar conts = parseDomForArray(html, 'body&&.videourl');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'div&&a'))\n}\nd.push({\n    title: parseDomForHtml(html, 'body&&.markdown-box&&Text'),\n    pic_url: parseDom(html, 'img,1&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'pic_1_card'\n});\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: '‘‘线路’’',\n        url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n        col_type: 'flex_button'\n    })\n    if (getVar('折叠') == '开' || getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘选集’’',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/[\\s]*?第/, \"第\"),\n                url: lazy(parseDom(list[j], 'a&&href')),extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: 'text_1'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text').replace(/[\\s]*?第/, \"第\"),\n                url: lazy(parseDom(list[j], 'a&&href')),extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},//加快嗅探\n                col_type: 'text_1'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/11/19/IHF1fK.png"},{"firstHeader":"class","last_chapter_rule":"","title":"个性主题","author":"@LoyDgIk","version":43,"type":"other","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(fetch(\"hiker://assets/home.js\"));\n\nvar _urgent=false;\nsetResult(HikerHome.load(\"main\",_urgent));","searchFind":"","search_url":"","titleColor":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/47.png"},{"last_chapter_rule":"","title":"优直播~nba","author":"幻梦月光贝","version":0,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: \"https://m.yoozhibo.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        floatVideo: true\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"扫雷音效版","author":"@LoyDgIk","version":10,"type":"other","url":"hiker://empty#noRefresh#","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst Game = $.require(\"hiker://page/Game\");\nlet game = new Game;\nlet layout = [];\nlayout.push({\n    url: \"https://m.saolei123.com/assets/sounds/init.mp3\",\n    desc: \"0\",\n    col_type: \"x5_webview_single\",\n    extra: {\n        showProgress: false\n    }\n});\nlet mode = getMyVar(\"mode\", \"排雷\");\nlayout.push({\n    title: mode === \"排雷\" ? \"‘‘排雷’’\" : \"排雷\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        updateItem(\"排雷\", {\n            title: \"‘‘排雷’’\"\n        });\n        updateItem(\"插旗\", {\n            title: \"插旗\"\n        });\n        putMyVar(\"mode\", \"排雷\");\n        return \"hiker://empty\";\n    }),\n    col_type: \"text_4\",\n    extra: {\n        id: \"排雷\"\n    }\n});\nlayout.push({\n    title: mode === \"插旗\" ? \"‘‘插旗’’\" : \"插旗\",\n    url: $(\"#noLoading#\").lazyRule(() => {\n        updateItem(\"插旗\", {\n            title: \"‘‘插旗’’\"\n        });\n        updateItem(\"排雷\", {\n            title: \"排雷\"\n        });\n        putMyVar(\"mode\", \"插旗\");\n        return \"hiker://empty\";\n    }),\n    col_type: \"text_4\",\n    extra: {\n        id: \"插旗\"\n    }\n});\nlayout.push({\n    title: \"自定义\",\n    url: $(game.rowCount + \",\" + game.columnCount + \",\" + game.lanCount, \"格式(均不能为0):\\n排数,列数,雷数\").input(() => {\n        let arr = input.split(\",\");\n        if (arr.length !== 3 || arr.some(n => !Number(n))) {\n            return \"toast://格式错误\";\n        }\n        if (Number(arr[0]) * Number(arr[1]) <= Number(arr[2])) {\n            return \"toast://兄弟游戏不能这么玩，总格子数还没雷多\";\n        }\n        setItem(\"rowCount\", arr[0]);\n        setItem(\"columnCount\", arr[1]);\n        setItem(\"lanCount\", arr[2]);\n        refreshPage(false);\n        return \"toast://已创建新的游戏\";\n    }),\n    col_type: \"text_4\"\n});\nlayout.push({\n    title: \"种子\",\n    url: $([\"导入\", \"分享\"], 1, \"选择操作(作弊没意思)\").select(() => {\n        switch (input) {\n            case \"分享\":\n                const Game = $.require(\"hiker://page/Game\");\n                let game = new Game(storage0.getMyVar(\"layData\", null));\n                let simplifyData = game.layData.map((r) => r.map(c => Number(c.isLan)));\n                let share = JSON.stringify({\n                    rowCount: game.rowCount,\n                    columnCount: game.columnCount,\n                    lanCount: game.lanCount,\n                    simplifyData: simplifyData\n                });\n                return \"copy://\" + base64Encode(share);\n            case \"导入\":\n                return $(\"\", \"粘贴种子信息\").input(() => {\n                    if (!input.trim()) return \"toast请输入\";\n                    try {\n                        let share = JSON.parse(base64Decode(input));\n                        setItem(\"rowCount\", share.rowCount + \"\");\n                        setItem(\"columnCount\", share.columnCount + \"\");\n                        setItem(\"lanCount\", share.lanCount + \"\");\n                        putMyVar(\"isSeed\", \"true\");\n                        updateItem({\n                            title: \"⛳0 /\" + share.lanCount + \"💣\",\n                            extra: {\n                                count: share.lanCount,\n                                id: \"flagY\",\n                                lineVisible: false\n                            }\n                        });\n                        const Game = $.require(\"hiker://page/Game\");\n                        let game = new Game(Game.parse(share.simplifyData));\n                        game.clear().render().time();\n                        return \"toast://解析完成!已创建游戏\"\n                    } catch (e) {\n                        log(e.toString())\n                        return \"toast://种子解析出错\";\n                    }\n                });\n        }\n    }),\n    col_type: \"text_4\"\n});\nlayout.push({\n    title: \"⛳0/\" + game.lanCount + \"💣\",\n    url: $(\"#noLoading#\").lazyRule((lanCount) => {\n        let that = findItem(\"flagY\").extra;\n        if (that.count !== lanCount) {\n            return \"toast://旗还没插完!\";\n        }\n        const Game = $.require(\"hiker://page/Game\");\n        let game = new Game(storage0.getMyVar(\"layData\", null));\n        game.fast();\n        return \"hiker://empty\";\n    }, game.lanCount),\n    col_type: \"text_center_1\",\n    extra: {\n        id: \"flagY\",\n        count: 0,\n        lineVisible: false\n    }\n});\nlayout.push({\n    col_type: \"blank_block\",\n    extra: {\n        id: \"GameY\"\n    }\n});\nsetResult(layout);\n\ngame.render().time();","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"Game \",\"path\":\"Game\",\"rule\":\"function rand(m, n) {\\n    if (!n) {\\n        n = m, m = 0;\\n    }\\n    return Math.ceil(Math.random() * (n - m + 1) + m - 1)\\n}\\nconst numberMap = [\\\"\\\", \\\"1️⃣\\\", \\\"2️⃣\\\", \\\"3️⃣\\\", \\\"4️⃣\\\", \\\"5️⃣\\\", \\\"6️⃣\\\", \\\"7️⃣\\\", \\\"8️⃣\\\", \\\"9️⃣\\\", \\\"🔟\\\"];\\nconst lanFh = \\\"💥\\\";\\nconst flagFh = \\\"⛳\\\";\\nconst notFh = \\\"⬛\\\";\\nconst blankFh = \\\"⬜️\\\";\\nconst audio = {\\n    lose: \\\"https://m.saolei123.com/assets/sounds/lose.mp3\\\",\\n    win: \\\"https://m.saolei123.com/assets/sounds/win.mp3\\\",\\n    explosion: \\\"https://m.saolei123.com/assets/sounds/explosion.mp3\\\",\\n    empty: \\\"https://m.saolei123.com/assets/sounds/empty.mp3\\\",\\n    reveal: \\\"https://m.saolei123.com/assets/sounds/reveal.mp3\\\",\\n    mark: \\\"https://m.saolei123.com/assets/sounds/mark.mp3\\\",\\n    init: \\\"https://m.saolei123.com/assets/sounds/init.mp3\\\"\\n}\\n\\nfunction Game(layData) {\\n    this.bindID = \\\"GameY\\\";\\n    this.clickMode = getMyVar(\\\"mode\\\", \\\"排雷\\\");\\n    this.isEnd = !!getMyVar(\\\"isEnd\\\", \\\"\\\");\\n    this.init(layData);\\n}\\nGame.parse = function(arr) {\\n    let layData = [];\\n    for (let r = 0; r < arr.length; r++) {\\n        let row = [];\\n        let rowy = arr[r];\\n        for (let c = 0; c < rowy.length; c++) {\\n            row.push({\\n                isLan: Boolean(rowy[c]),\\n                isFlag: false,\\n                isTurn: false,\\n                id: r + \\\"-\\\" + c,\\n                row: r,\\n                col: c,\\n                aLanCount: 0\\n            });\\n        }\\n        layData.push(row);\\n    }\\n    return layData;\\n}\\nObject.assign(Game.prototype, {\\n    rowCount: Number(getItem(\\\"rowCount\\\", \\\"10\\\")),\\n    columnCount: Number(getItem(\\\"columnCount\\\", \\\"9\\\")),\\n    lanCount: Number(getItem(\\\"lanCount\\\", \\\"14\\\")),\\n\\n    init(layData) {\\n        this.victoryCount = this.rowCount * this.columnCount - this.lanCount;\\n        if (layData) {\\n            this.layData = layData;\\n            return;\\n        }\\n        clearMyVar(\\\"layData\\\");\\n        clearMyVar(\\\"isSeed\\\");\\n        this.layData = layData = [];\\n        for (let r = 0; r < this.rowCount; r++) {\\n            let row = [];\\n            for (let c = 0; c < this.columnCount; c++) {\\n                row.push({\\n                    isLan: false,\\n                    isFlag: false,\\n                    isTurn: false,\\n                    id: r + \\\"-\\\" + c,\\n                    row: r,\\n                    col: c,\\n                    aLanCount: 0\\n                });\\n            }\\n            layData.push(row);\\n        }\\n        this.clear();\\n        addListener(\\\"onClose\\\", this.clear);\\n        addListener(\\\"onRefresh\\\", this.clear);\\n        this.setLan();\\n        //refreshX5WebView(audio.init);\\n        //this.render();\\n        return this;\\n    },\\n    clear() {\\n        clearMyVar(\\\"time\\\");\\n        clearMyVar(\\\"isEnd\\\");\\n        return this;\\n    },\\n    time(t) {\\n        if (t) {\\n            let s = Number(getMyVar(\\\"time\\\", \\\"0\\\"));\\n            clearMyVar(\\\"time\\\");\\n            let e = Date.now();\\n            return (e - s) / 1000;\\n        } else {\\n            putMyVar(\\\"time\\\", \\\"\\\" + Date.now());\\n        }\\n    },\\n    setLan() {\\n        let layData = this.layData;\\n        if (!layData || layData.length !== this.rowCount) throw new Error(\\\"游戏未初始化\\\");\\n        for (var index = 0; index < this.lanCount; index++) {\\n            while (true) {\\n                var row = parseInt(Math.random() * this.rowCount);\\n                var col = parseInt(Math.random() * this.columnCount);\\n                if (!layData[row][col].isLan) {\\n                    layData[row][col].isLan = true;\\n                    break;\\n                }\\n            }\\n        }\\n    },\\n    turn(r, c, noRefresh) {\\n        let item = this.layData[r][c];\\n        if (item.isFlag) {\\n            if (!noRefresh) {\\n                return toast(\\\"已标记\\\");\\n            }\\n        } else if (item.isLan) {\\n            updateItem(this.bindID + item.id, {\\n                title: lanFh\\n            });\\n            refreshX5WebView(audio.explosion);\\n            this.settlement(true);\\n            return true;\\n        } else if (!item.isTurn) {\\n            let around = this.getAround(r, c);\\n            let aLanCount = around.reduce((i, v) => i + v.isLan, 0);\\n            if (aLanCount === 0 && around.length > 0) {\\n                item.isTurn = true;\\n                /*updateItem(this.bindID + item.id, {\\n                    title: \\\"▢\\\"\\n                });*/\\n                around.forEach(v => this.turn(v.row, v.col, true));\\n                if (!noRefresh) {\\n                    refreshX5WebView(audio.empty);\\n                    this.render();\\n                }\\n            } else {\\n                if (!noRefresh) {\\n                    refreshX5WebView(audio.mark);\\n                }\\n\\n                item.aLanCount = aLanCount;\\n                item.isTurn = true;\\n                if (!noRefresh) {\\n                    updateItem(this.bindID + item.id, {\\n                        title: numberMap[aLanCount] || blankFh\\n                    });\\n                }\\n\\n            }\\n        }\\n    },\\n    fast() {\\n        if (this.judgeEnd()) return;\\n        for (let row of this.layData) {\\n            for (let item of row) {\\n                if (!item.isFlag && !item.isTurn) {\\n                    if (this.turn(item.row, item.col)) return;\\n                }\\n            }\\n        }\\n        this.settlement();\\n\\n    },\\n    judgeEnd() {\\n        if (this.isEnd) {\\n            confirm({\\n                title: \\\"游戏提示\\\",\\n                content: \\\"已经结束了，再来一局？\\\",\\n                confirm: () => {\\n                    clearMyVar(\\\"isEnd\\\");\\n                    refreshPage();\\n                },\\n                cancel: \\\"\\\"\\n            });\\n            return true;\\n        }\\n    },\\n    click(r, c) {\\n        if (this.judgeEnd()) return;\\n        if (this.clickMode === \\\"插旗\\\") {\\n            let item = this.layData[r][c];\\n            if (item.isTurn) return;\\n            let flag = findItem(\\\"flagY\\\").extra;\\n            if (!item.isFlag && flag.count === this.lanCount) return toast(\\\"旗帜已用完\\\");\\n            refreshX5WebView(audio.reveal);\\n            item.isFlag = !item.isFlag;\\n            updateItem(this.bindID + item.id, {\\n                title: item.isFlag ? flagFh : notFh\\n            });\\n\\n            let count = item.isFlag ? flag.count + 1 : flag.count - 1;\\n            updateItem({\\n                title: \\\"⛳\\\" + count + \\\"/\\\" + this.lanCount + \\\"💣\\\",\\n                extra: {\\n                    count: count,\\n                    id: \\\"flagY\\\",\\n                    lineVisible: false\\n                }\\n            });\\n        } else if (this.clickMode === \\\"排雷\\\") {\\n            this.turn(r, c);\\n        }\\n        if (!this.settlement()) {\\n            storage0.putMyVar(\\\"layData\\\", this.layData);\\n        }\\n    },\\n    getAround(r, c) {\\n        let rr = r ? r - 1 : 0,\\n            cc = c ? c - 1 : 0;\\n        let arr = [];\\n        for (let i = rr; i <= r + 1 && i > -1 && i < this.rowCount; i++) {\\n            for (let j = cc; j <= c + 1 && j > -1 && j < this.columnCount; j++) {\\n                let item = this.layData[i][j];\\n                if (item.isTurn || (r === i && c === j)) continue;\\n                arr.push(item);\\n            }\\n        }\\n        return arr;\\n    },\\n    settlement(isFail) {\\n        if (isFail) {\\n            putMyVar(\\\"isEnd\\\", \\\"true\\\");\\n            this.layData.forEach((row) => {\\n                row.forEach((item) => {\\n                    if (item.isLan) {\\n\\n                        updateItem(this.bindID + item.id, {\\n                            title: lanFh,\\n                        });\\n\\n                    }\\n                });\\n            });\\n\\n            java.lang.Thread.sleep(645);\\n            refreshX5WebView(audio.lose);\\n            confirm({\\n                title: \\\"游戏提示\\\",\\n                content: \\\"你输啦！再来一局？\\\",\\n                confirm: () => {\\n                    clearMyVar(\\\"isEnd\\\");\\n                    refreshPage();\\n                },\\n                cancel: \\\"\\\"\\n            });\\n            return true;\\n        } else {\\n            let ti = this.layData.reduce((i, v) => i + v.reduce((i, v) => i + v.isTurn, 0), 0);\\n            if (ti === this.victoryCount) {\\n                putMyVar(\\\"isEnd\\\", \\\"true\\\");\\n                refreshX5WebView(audio.win);\\n                confirm({\\n                    title: \\\"游戏提示(\\\" + (getMyVar(\\\"isSeed\\\", \\\"\\\") ? \\\"种子地图)\\\" : \\\"随机地图)\\\"),\\n                    content: \\\"🎉你赢啦！再来一局？\\\\n难度：\\\" + ((this.lanCount / (this.rowCount * this.columnCount)) * 100).toFixed(2) + \\\"%\\\\n时间：\\\" + this.time(true) + \\\"s\\\",\\n                    confirm: () => {\\n                        clearMyVar(\\\"isEnd\\\");\\n                        clearMyVar(\\\"isSeed\\\");\\n                        refreshPage();\\n                    },\\n                    cancel: \\\"\\\"\\n                });\\n                return true;\\n            }\\n        }\\n        return false;\\n    },\\n    render() {\\n        let layData = this.layData;\\n        let layout = [];\\n        let click = (r, c) => {\\n            const Game = $.require(\\\"hiker://page/Game\\\");\\n            let game = new Game(storage0.getMyVar(\\\"layData\\\", null));\\n            game.click(r, c);\\n            return \\\"hiker://empty\\\";\\n        };\\n        deleteItemByCls(this.bindID);\\n        layData.forEach((row, r) => {\\n            row.forEach((item, c) => {\\n                layout.push({\\n                    title: item.isTurn ? (numberMap[item.aLanCount] || blankFh) : (item.isFlag ? flagFh : (item.aLanCount || notFh)),\\n                    col_type: \\\"flex_button\\\",\\n                    url: $(\\\"#noLoading#\\\").lazyRule(click, r, c),\\n                    extra: {\\n                        id: this.bindID + item.id,\\n                        cls: this.bindID\\n                    }\\n                });\\n            });\\n            layout.push({\\n                col_type: \\\"line\\\",\\n                extra: {\\n                    cls: this.bindID\\n                }\\n            });\\n        });\\n        storage0.putMyVar(\\\"layData\\\", layData);\\n        addItemAfter(this.bindID, layout);\\n        return this;\\n    }\\n\\n});\\n$.exports = Game;\"}]","proxy":"","icon":"https://appimg.dbankcdn.com/application/icon144/19ab2d6a9793436f8b7a1b5dae345be5_1.png"},{"last_chapter_rule":"","title":"蓝奏搜索","author":"小棉袄🌞","version":13,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"宁可少字，不要错字。\",\n    col_type: \"input\"\n}])","searchFind":"body&&.result&&.lanzou-item;.lanzou-item-right-title&&Text;a&&href;.text-muted&&Text;.text-muted,1&&Text;*","search_url":"https://www.sixyin.com/disk-search?keyword=**","titleColor":"","group":"其它","detail_col_type":"rich_text","detail_find_rule":"js:\nvar list = parseDomForArray(getResCode(), \"body&&.url_adreess\");\nvar l = [{\n    title: \"<small>若打不开链接或者提示分享已取消，请尝试其他的地址</small>\"\n}];\nvar li = list.map(it => {\n    return {\n        title: it.replace(\"<p \",\"<span \").replace(\"</p>\",\"</span>\")\n    }\n});\nsetResult(l.concat(li))","sdetail_col_type":"rich_text","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"Upload.ee","author":"小棉袄🌞","version":1,"type":"other","url":"hiker://empty##https://www.upload.ee","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"下载\",\n    url: $.toString(() => {\n        if (!input.startsWith(\"https://www.upload.ee/files/\")) {\n            return \"toast://链接不能识别\"\n        }\n        showLoading(\"获取下载地址中，请稍候\");\n        let html = request(input);\n        let u = pd(html, \"body&&#d_l&&href\");\n        hideLoading();\n        return u;\n    }),\n    col_type: \"input\",\n    desc: \"输入Upload.ee链接下载文件\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"上传文件\",\n    url: \"https://www.upload.ee\",\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"文件示例：6月合集1\",\n    url: $().lazyRule(() => {\n        showLoading(\"获取下载地址中，请稍候\");\n        let html = request(\"https://www.upload.ee/files/14272195/2022-6-1.json.html\");\n        let u = pd(html, \"body&&#d_l&&href\");\n        hideLoading();\n        return \"海阔视界￥home_rule_url￥\" + u;\n    }),\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"文件示例：6月合集2\",\n    url: $().lazyRule(() => {\n        showLoading(\"获取下载地址中，请稍候\");\n        let html = request(\"https://www.upload.ee/files/14272238/2022-6-2.json.html\");\n        let u = pd(html, \"body&&#d_l&&href\");\n        hideLoading();\n        return \"海阔视界￥home_rule_url￥\" + u;\n    }),\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"镜像检测","author":"","version":1,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: \"https://find.looks.wang/index.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        urlInterceptor: $.toString((ru) => {\n            if (!input.includes(\"find.looks.wang\")) {\n                let s = JSON.stringify({\n                    title: \"详情\",\n                    url: \"hiker://page/dt?rule=\" + ru,\n                    extra: {\n                        u: input\n                    }\n                });\n                return $.toString(s => {\n                    try {\n                        fy_bridge_app.open(s)\n                    } catch (e) {\n                        fy_bridge_app.log(e.toString());\n                    }\n                }, s);\n            }\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"dt\",\"path\":\"dt\",\"rule\":\"js:\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nsetResult([{\\n    url: MY_PARAMS.u,\\n    col_type: \\\"x5_webview_single\\\",\\n    extra: {\\n        canBack: true,\\n        js: js,       \\n    },\\n    desc: \\\"100%&&float\\\"\\n}]);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"F搜","author":"小棉袄🌞","version":0,"type":"other","url":"","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"","searchFind":"","search_url":"https://fsoufsou.com/search?tbn=all&q=**","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"图标工具","author":"小棉袄🌞","version":1,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet url = \"https://www.logosc.cn/logo/monogram?s=\"\n\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: url,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.logosc.cn/img/home/LOGOSC.ico?v=2"},{"last_chapter_rule":"","title":"测试listener","author":"小棉袄🌞","version":5,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\",$.toString(()=>{\n    log(\"onClose\")\n}));\naddListener(\"onRefresh\",$.toString(()=>{\n    log(\"onRefresh\")\n}));\n\nsetResult([{\n    url:\"'toast://嗨嗨嗨'\",\n    title:\"刷新，切换别的规则，然后查看日志\",\n    col_type:\"text_1\"\n}])","searchFind":"","search_url":"","titleColor":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"测试自动提取","author":"小棉袄🌞","version":1,"type":"other","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nlet u = \"https://auete.com/Movie/khp/huantaipingyang/play-0-0.html\";\nd.push({\n    title: \"点我播放：\" + u,\n    url: \"video://\" + u,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nu = \"https://gimytv.tv/ep-9HA-1-1.html\";\nd.push({\n    title: \"点我播放：\" + u,\n    url: \"video://\" + u,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        videoExcludeRules: [\"?url=\"]\n    }\n});\n\nu = 'https://aliyun.beiyan.cc:4433/vodplay/849-1-1/';\n\nd.push({\n    title: \"点我播放：\" + u,\n    url: \"video://\" + u,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nu = 'https://www.jpys.me/vodplay/128910-1-1.html';\nd.push({\n    title: \"点我播放：\" + u,\n    url: \"video://\" + u,\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        videoExcludeRules: [\"?url=\"]\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"手机乐园","author":"Rx","version":10,"type":"other","url":"https://m.shouji.com.cn/applist/soft_0fyAll_fypage.html","col_type":"icon_4_card","class_name":"最新&推荐&热门","class_url":"_new&&_top","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: \"input\",\n        url: $.toString(() => {\n            return \"hiker://page/x5?u=\" + base64Encode(\"https://fsoufsou.com/search?tbn=all&q=shouji.com.cn%20\" + input);\n        }),\n        desc: \"\",\n        title: \"搜索\"\n    });\n    d.push({\n        title: \"乐园主页\",\n        url: \"hiker://page/x5?u=\" + base64Encode(\"https://m.shouji.com.cn/\"),\n        col_type: \"\",\n        desc: \"\",\n        pic_url: \"https://img.shouji.com.cn/simg/20161102/8497521127.png\"\n    });\n    d.push({\n        title: \"应用集\",\n        url: \"hiker://page/x5?u=\" + base64Encode(\"https://m.shouji.com.cn/zt/list_1.html\"),\n        col_type: \"\",\n        desc: \"\",\n        pic_url: \"https://img.shouji.com.cn/simg/20161102/8497521127.png\"\n    });\n}\nlet arr = pdfa(getResCode(), \".applist&&ul&&li\");\nfor (let it of arr) {\n    d.push({\n        title: pdfh(it, \".mid&&a&&Text\"),\n        url: pd(it, \".mid&&a&&href\"),\n        col_type: \"\",\n        desc: pdfh(it, \".bot&&span&&Text\"),\n        pic_url: pd(it, \"img&&src\")\n    });\n}\n\nsetResult(d);","searchFind":"","search_url":"https://fsoufsou.com/search?tbn=all&q=shouji.com.cn%20**","group":"其它","detail_col_type":"avatar","detail_find_rule":"js:\nvar d = [];\nd.push({\n    title: pdfh(getResCode(),\"#infocont&&Text\"),\n    url: pd(getResCode(), \"#appBox&&.topdown&&a&&href\"),\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nvar img = parseDomForHtml(getResCode(), '.info&&.tx&&img&&src');\nvar labs = parseDomForArray(getResCode(), '.alldown&&.versions&&dl&&dt');\nvar down = parseDomForArray(getResCode(), '.alldown&&.versions&&dl&&dd');\nfor (var i = 0; i < labs.length; i++) {\n    d.push({\n        title: parseDomForHtml(labs[i], 'dt&&Text'),\n        pic_url: img,\n        url: parseDomForHtml(down[i], '.down&&a&&href'),\n        col_type: 'avatar'\n    });\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"x5\",\"path\":\"x5\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\", \\\"\\\"));\\nlet js = $.toString(() => {\\n    try {\\n        if (document.title && document.title.length) {\\n            let r = $$$().lazyRule((t) => {\\n                setPageTitle(t);\\n            }, document.title);\\n            fy_bridge_app.parseLazyRule(r);\\n        }\\n    } catch (e) {\\n        fy_bridge_app.log(e.toString());\\n    }\\n});\\nd.push({\\n    col_type: \\\"x5_webview_single\\\",\\n    url: url,\\n    desc: \\\"float&&100%\\\",\\n    title: \\\"\\\",\\n    extra: {\\n        js: js,\\n        canBack: true,\\n        urlInterceptor: $.toString((my) => {\\n            if (input.startsWith(my)) {\\n                return false;\\n            }\\n            return $.toString((url) => {\\n                fy_bridge_app.open(JSON.stringify({\\n                    title: \\\"详情\\\",\\n                    url: \\\"hiker://empty\\\",\\n                    findRule: \\\"js:\\\" + $$$.toString((u) => {\\n                        let js = $.toString(() => {\\n                            try {\\n                                if (document.title && document.title.length) {\\n                                    let r = $$$().lazyRule((t) => {\\n                                        setPageTitle(t);\\n                                    }, document.title);\\n                                    fy_bridge_app.parseLazyRule(r);\\n                                }\\n                            } catch (e) {\\n                                fy_bridge_app.log(e.toString());\\n                            }\\n                        });\\n                        setResult([{\\n                            url: u,\\n                            col_type: \\\"x5_webview_single\\\",\\n                            extra: {\\n                                canBack: true,\\n                                js: js\\n                            },\\n                            desc: \\\"100%&&float\\\"\\n                        }]);\\n                    }, url)\\n                }))\\n            }, input)\\n        }, getHome(url, url))\\n    }\\n});\\n\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"中文转拼音","author":"道长","version":0,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"工具","year_url":"","find_rule":"js:\neval(JSON.parse(fetch('hiker://page/homeIndex')).rule);","searchFind":"","search_url":"","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"setItem('myApp', MY_RULE.title);\ninitConfig({\n  插件:'http://hiker.nokia.press/hikerule/rulelist.json?id=3230',\n  字典1:'https://gitlab.com/hjdhnx/hiker/-/raw/main/js/pinyin_dict_withtone.js',\n});","pages":"[{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homeIndex\",\"rule\":\"js:\\nlet d = [];\\nconst {color,small} = $.require(\\\"hiker://page/utiliy?rule=道长仓库Pro\\\");\\nlet options = ['带声调','不带声调','首字母','多音字'];\\nfor(let i in options){\\n    let it = options[i];\\n    d.push({\\n        title:(it===getMyVar('option','不带声调'))||(it==='多音字'&&getMyVar('多音字',''))?color(it,'#23a309'):it,\\n        col_type:'scroll_button',\\n        url:$('#noLoading#').lazyRule((it)=>{\\n            if(it==='多音字'){\\n                let flag = getMyVar('多音字','')?'':'是';\\n                putMyVar('多音字',flag);\\n            }else{\\n                putMyVar('option',it);\\n            }\\n            refreshPage(false);\\n            return 'hiker://empty'\\n        },it)\\n    });\\n}\\n\\nd.push({\\n    title:'转换',\\n    col_type:'input',\\n    extra:{\\n        onChange: \\\"putMyVar('input',input)\\\",\\n        titleVisible: true,\\n        textSize: 13,\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        defaultValue:getMyVar('input',''),\\n    },\\n    url:$.toString(()=>{\\n        require(config.字典1);\\n        require(config.插件);\\n        let option = getMyVar('option','不带声调');\\n        let input = getMyVar('input','');\\n        let ret = '';\\n        let 多音字 = !!getMyVar('多音字','');\\n        switch (option){\\n            case '带声调':\\n                ret = pinyinUtil.getPinyin(input, ' ', true, 多音字);\\n                break;\\n            case '不带声调':\\n                ret = pinyinUtil.getPinyin(input, ' ', false, 多音字);\\n                break;\\n            case '首字母':\\n                ret = pinyinUtil.getFirstLetter(input, 多音字);\\n                break;\\n            default:\\n                ret = pinyinUtil.getPinyin(input, ' ', false, 多音字);\\n                break;\\n        }\\n        log(ret);\\n        putMyVar('out',ret);\\n        refreshPage(false);\\n        return 'toast://转换完毕'\\n    }),\\n})\\n\\nd.push({\\n    title:'复制',\\n    col_type:'input',\\n    desc:'转换后结果',\\n    url:$.toString(()=>{\\n        let ret = getMyVar('out','');\\n        if(ret){\\n            copy(ret);\\n            return 'hiker://empty'\\n        }else{\\n            return 'toast://无结果!'\\n        }\\n    }),\\n    extra:{\\n        onChange: \\\"putMyVar('out',input)\\\",\\n        titleVisible: true,\\n        textSize: 13,\\n        type: \\\"textarea\\\",\\n        height:-1,\\n        defaultValue:getMyVar('out',''),\\n    }\\n});\\n\\nsetResult(d);\"}]","icon":"https://lanmeiguojiang.com/tubiao/messy/17.svg"},{"firstHeader":"class","title":"爱广场舞","author":"香雅情","version":2,"url":"https://m.igcwu.com/fyAll/index_fypage.html[firstPage=https://m.igcwu.com/fyAll/];GET;UTF-8;{User-Agent@Mobile}","col_type":"movie_1","class_name":"最新&中老年&减肥操&瑜伽视频&16步&美久&云裳&小丫&动动&茉莉&春英&王广成&青儿&格格&杨艺&刘荣&応子&杨丽萍&海之韵&叶子&吉美&舞动旋律2007&王梅&惠汝&周思萍&兰梦&幸福天天&廖弟&楠楠&珍珍&萱萱&君君&张春丽&范范&乾县&凤凰六哥&紫蝶踏歌&莉莉&阿中中&红乔开心&紫薇&临盘立华&宇美&开云&穿心村&俏木兰&心心&绚彩&北雀舞之韵&湘湘&安庆小红人&贺月秋&迪斯科&张林冰&飞舞&天姿&金达莱&阿里梧桐&裳魅力健身舞队&珊珊&旭旭&娜娜&阿真&清荷&萍恋","class_url":"new&gcw/zhonglaonian&jianfeicao&yujia&gcw/16bu&gcw/meijiu&gcw/yunshang&gcw/xiaoya&gcw/dongdong&gcw/moli&gcw/chunying&gcw/wangguangcheng&gcw/qinger&gcw/gege&gcw/yangyi&gcw/liurong&gcw/yingzi&gcw/yangliping&gcw/haizhiyun&gcw/yezi&gcw/jimei&gcw/wudongxuanlv2007&gcw/wangmei&gcw/huiru&gcw/zhousiping&gcw/lanmeng&gcw/xingfutiantian&gcw/liaodi&gcw/nannan&gcw/zhenzhen&gcw/xuanxuan&gcw/junjun&gcw/zhangchunli&gcw/fanfan&gcw/qianxian&gcw/fenghuangliuge&gcw/zidie&gcw/lili&gcw/azhongzhong&gcw/hongqiaokaixin&gcw/ziwei&gcw/linpanlihua&gcw/yumei&gcw/kaiyun&gcw/chuanxincun&gcw/qiaomulan&gcw/xinxin&gcw/xuancai&gcw/beiquewuzhiyun&gcw/xiangxiang&gcw/anqingxiaohongren&gcw/heyueqiu&gcw/disike&gcw/zhanglinbing&gcw/feiwu&gcw/tianzi&gcw/jindalai&gcw/aliwutong&gcw/smljsd&gcw/shanshan&gcw/xuxu&gcw/nana&gcw/azhen&gcw/qinghe&gcw/pinglian","area_name":"舞韵年华&蒙城梦蝶&谢岗大龙幸福玫瑰&山西风陵渡茉莉花&四川泸县彩虹&山口北村惠质兰馨&杭州千岛湖心语&千岛湖心随舞动&淄博馨秀&西安桃园芳草&龙都舞动晨韵&甘肃庄浪紫荆花&艺莞儿&俞函&陈敏&凤凰香香&春花&五三&高安子君&廊坊星月&糖豆星舞炫起来&柔柔&太湖一莲&阿娜&爱贺&舞之梅&谢春燕&沭河之光&纯艺舞吧&大湾群联&济南朵朵&龙都舞动晨韵&东方倩影&斌斌&新风尚&定南&点点点&丁建女&冬梅&朵朵&大庆银河&戴儿&大小姐&东滨村&东塔&丁坊丁家&大湾&黄山紫纤&华南楼&花家湖芳儿&怀宁文化&华清群&菏泽三院&贺月秋&哈梵&黑姑娘&红舞鞋&杭州小孙&紫嫣荷风清韵&海天羊群&灵宝大王哈哈&红苹果&华丰&贺英&汉英&黄山屯浦&紫藤花开依梅&华梅&惠妹&画村健影&花与影&华雨快乐&邯郸珍珍&厦门湖里梅梅&花尘如诗&禾城绿叶&何庆&江西恒丰&红叶紫&黄材国兵&东东&段希帆&冬之雪&大森林&德美&晶晶&蝶儿&达州兰草&大堰爱尚&凤舞九天&妃儿&达州凤凰姊妹&奉节雪儿&飞燕&芳姿&奉节芬芳&抚州左岸&枫树岭&朝天门&财源影碟&承鼎&陈函&茶料&曹禺公园&昌乐体育场玉玲珑&春谷&楚悦&春秋&仓屋榜&重庆玲玲&重庆王坪恋蝶&彩虹云子&春之灵&翠竹映霞&春风&重庆知音健身&春之绿&彩云之南&春雨&诚信&冰蓝&虫虫&初美&郏县花之舞&内蒙海韵激情&方强农场红姐&海鹰&衡阳建湘&广州花都&安徽慧慧&汇翠花园凌云&红枫&德阳惠蓉&宏美&北京朝丽晚霞&春之花&蓝天云&建群村&香儿&柏景湾姐妹&北京舞之缘&冰羽&宝龙&北京爱雨&冰雪&北京朝丽晚霞&精彩&北冶杏儿&北京龙潭&红旭添香&华彩&高美&夫妻&凤之韵&风清云淡&飞魅&飞去来兮&庄浪飞燕&范岗秋之韵&凤妹&凤丽&付喆&福清清荣花园&非梦&广州新盛&果果&高龙慧慧&郭村小新&高唐乐天&瑞昌高丰&集美区灌口田头&府州咏梅&赣州国际时代&巩义宋陵&古城忻韵&古月&涡阳蝶舞&藁城梅花&福建榕城锦江&冰凌花&冰彩&青青世界&坪上&紫紫雨&体育总局推12套&阿英&爱吾&安徽凤凰飞&阿敏&啊萍&阿采&安庆艳丽&阿克苏闫辉&阿珂&阿卉&阿文贝贝&爱尚云&安庆雪舞飞扬&笑笑&阿梅&锦江之星&佳木斯快乐舞步&北京加州&白埠靓丽&翠屏快乐&蝶依&hehe+大众健身队&百合花&北京雪莲&布吉&千岛湖贝乐&新生代&北京青青&金灿灿&北京美洋洋&花卉园美美&菊蓉&君彩&姜堰琴韵&靖安美华&锦山&午后骄阳&菁百合&珲春金达莱&靖江韵律&金徽阳光&嘉兴花园&京兴福韵&荆州电大&径山艳儿&径山霞儿&金康丽&九江向霞&晋祁&济源店留&胶南美丽&威海金海滩&吉首新桥&莒南华阳&金坛体育馆&九九翡翠&江汉馨月&锦锋&九色鹿&洁琼&江津贾嗣梅梅&济南糖粉&金刚兄弟&江南雨&九江丁丁&ktv樱花&快乐天天&孔雀公园&可爱玫瑰花&开心飞扬&快乐飞扬&快乐逍遥","area_url":"gcw/wuyunnianhua&gcw/mengchengmengdie&gcw/xgdlxfmg&gcw/sxfldmlh&gcw/sclxch&gcw/skbchzlx&gcw/hzqdhxy&gcw/qdhxswd&gcw/ziboxinxiu&gcw/xatyfc&gcw/ldwdcy&gcw/gszlzjh&gcw/yiguaner&gcw/yuhan&gcw/chenmin&gcw/fenghuangxiangxiang&gcw/chunhua&gcw/wusan&gcw/gaoanzijun&gcw/langfangxingyue&gcw/tangdouxingwuxuanqilai&gcw/rourou&gcw/taihuyilian&gcw/ana&gcw/aihe&gcw/wuzhimei&gcw/xiechunyan&gcw/shuhezhiguang&gcw/chunyiwuba&gcw/dawanqunlian&gcw/jinanduoduo&gcw/longduwudongchenyun&gcw/dongfangqingying&gcw/binbin&gcw/xinfengshang&gcw/dingnan&gcw/diandiandian&gcw/dingjiannv&gcw/dongmei&gcw/duoduo&gcw/daqingyinhe&gcw/daier&gcw/daxiaojie&gcw/dongbincun&gcw/dongta&gcw/dingfangdingjia&gcw/dawan&gcw/huangshanzixian&gcw/huananlou&gcw/huajiahufanger&gcw/huainingwenhua&gcw/huaqingqun&gcw/hezesanyuan&gcw/heyueqiu&gcw/hafan&gcw/heiguniang&gcw/hongwuxie&gcw/hangzhouxiaosun&gcw/ziyanhefengqingyun&gcw/haitianyangqun&gcw/lingbaodawanghaha&gcw/hongpingguo&gcw/huafeng&gcw/heying&gcw/hanying&gcw/huangshantunpu&gcw/zitenghuakaiyimei&gcw/huamei&gcw/huimei&gcw/huacunjianying&gcw/huayuying&gcw/huayukuaile&gcw/handanzhenzhen&gcw/xiamenhulimeimei&gcw/huachenrushi&gcw/hechenglvye&gcw/heqing&gcw/jiangxihengfeng&gcw/hongyezi&gcw/huangcaiguobing&gcw/dongdonggcw&gcw/duanxifan&gcw/dongzhixue&gcw/dasenlin&gcw/demei&gcw/jingjing&gcw/dieer&gcw/dazhoulancao&gcw/dayanaishang&gcw/fengwujiutian&gcw/feier&gcw/dazhoufenghuangzimei&gcw/fengjiexueer&gcw/feiyan&gcw/fangzi&gcw/fengjiefenfang&gcw/fuzhouzuoan&gcw/fengshuling&gcw/chaotianmen&gcw/caiyuanyingdie&gcw/chengding&gcw/chenhan&gcw/chaliao&gcw/caoyugongyuan&gcw/cltycyll&gcw/chungu&gcw/chuyue&gcw/chunqiu&gcw/cangwubang&gcw/chongqinglingling&gcw/chongqingwangpingliandie&gcw/caihongyunzi&gcw/chunzhiling&gcw/cuizhuyingxia&gcw/chunfeng&gcw/cqzyjs&gcw/chunzhilv&gcw/caiyunzhinan&gcw/chunyu&gcw/chengxin&gcw/binglan&gcw/chongchong&gcw/chumei&gcw/jiaxianhuazhiwu&gcw/namenghaiyunjiqing&gcw/fangqiangnongchanghongjie&gcw/haiying&gcw/hengyangjianxiang&gcw/guangzhouhuadu&gcw/anhuihuihui&gcw/huicuihuayuanlingyun&gcw/hongfeng&gcw/deyanghuirong&gcw/hongmei&gcw/beijingchaoliwanxia&gcw/chunzhihua&gcw/lantianyun&gcw/jianquncun&xianger&gcw/bjwjm&gcw/bjwzy&gcw/bingyu&gcw/baolong&gcw/beijingaiyu&gcw/bingxue&gcw/beijingchaoliwanxia&gcw/jingcai&gcw/beiyexinger&gcw/beijinglongtan&gcw/hongxutianxiang&huacai&gcw/gaomei&gcw/fuqi&gcw/fengzhiyun&gcw/fengqingyundan&gcw/feimei&gcw/feiqulaixi&gcw/zhuanglangfeiyan&gcw/fangangqiuzhiyun&gcw/fengmei&gcw/fengli&gcw/fu_&gcw/fqqrhy&gcw/feimeng&gcw/guangzhouxinsheng&gcw/guoguo&gcw/gaolonghuihui&gcw/guocunxiaoxin&gcw/gaotangletian&gcw/ruichanggaofeng&gcw/jmqgktt&gcw/fuzhouyongmei&gcw/ganzhouguojishidai&gcw/gongyisongling&gcw/guchengxinyun&gcw/guyue&gcw/woyangdiewu&gcw/gaochengmeihua&gcw/fjrcjj&gcw/binglinghua&gcw/bingcai&gcw/qingqingshijie&gcw/pingshang&gcw/ziziyu&gcw/tiyuzongjutui12tao&gcw/aying&gcw/aiwu&gcw/anhuifenghuangfei&gcw/amin&gcw/aping&gcw/acai&gcw/anqingyanli&gcw/akesuyanhui&gcw/ake&gcw/ahui&gcw/awenbeibei&gcw/aishangyun&gcw/anqingxuewufeiyang&gcw/xiaoxiao&gcw/amei&gcw/jinjiangzhixing&gcw/jiamusikuailewubu&gcw/beijingjiazhou&gcw/baibuliangli&gcw/cuiping&gcw/dieyi&gcw/hehedazhong&gcw/baihehua&gcw/beijingxuelian&gcw/buji&gcw/qiandaohubeile&gcw/xinshengdai&gcw/beijingqingqing&gcw/jincancan&gcw/beijingmeiyangyang&gcw/huahuiyuanmeimei&gcw/jurong&gcw/juncai&gcw/jiangyanqinyun&gcw/jinganmeihua&gcw/jinshan&gcw/wuhoujiaoyang&gcw/jingbaihe&gcw/huichunjindalai&gcw/jingjiangyunlv&gcw/jinhuiyangguang&gcw/jiaxinghuayuan&gcw/jingxingfuyun&gcw/jingzhoudianda&gcw/jingshanyaner&gcw/jingshanxiaer&gcw/jinkangli&gcw/jiujiangxiangxia&gcw/jinqi&gcw/jiyuandianliu&gcw/jiaonanmeili&gcw/whjht&gcw/jishouxinqiao&gcw/junanhuayang&gcw/jintantiyuguan&gcw/jiujiufeicui&gcw/jianghanxinyue&gcw/jinfeng&gcw/jiuselu&gcw/jieqiong&gcw/jjgsmm&gcw/jinantangfen&gcw/jingangxiongdi&gcw/jiangnanyu&gcw/jiujiangdingding&gcw/ktvyinghua&gcw/kuailetiantian&gcw/kongquegongyuan&gcw/keaimeiguihua&gcw/kaixinfeiyang&gcw/kuailefeiyang&gcw/kuailexiaoyao","sort_name":"","year_name":"凯旋门&开心乐&快乐金盛&快乐小天使&丈地&紫妮&紫玫瑰&昭平&紫薇花&中油四季&紫陌&紫风铃&紫雪&章源之夜&紫萍&张琳&左邻右舍&张元娃&昭平湖&众毅&樟树雪华&朱朱&知音&志远&娜娜&南阳军军&妮雅&南岸芳芳&南阳铜铃&南京丽丽&南阳和平&倪爱达&楠之韵&萍乡绿茵&葡萄王&翩翩齐舞韵&平顶山相约快乐&境心&靖江绝色彩虹&珲春快乐玉儿&豆豆&周周老师&龙游红飞&霓裳依依&俪影&金社世纪&李开心&京京&卢姨&曾惠林&紫晨&黎塘&朝晖&兰玉&兰燕稻都&兰欣&李静&李华&洛阳完美&莱茵&灵动&龙城依诺&高唐乐天&龙河星城&冷雾&龙湾头&李江华&辣妈潮敏&溧阳河口&冷水新桥&乐昌爱心&伶意&乐秀馨悦&兰州莲花&漓江飞舞&流星雨&路通&来苏紫梦&临安飞翔&李琦&乐海&美秀&乐心&里湖邂逅&兰州春韵&陆川叶青&龙泉开心&蓝莓思洁&黎州波波&兰轩&梦舞&梦蝶花&梅飞雪&洛川梦之舞&上海闵行亦乐&美婷&漫步月光&美的新海岸&美裳&墨兰&马尾凤飞&青馨明月&郑州市玫瑰城&马陵山秋&漫山茱萸&咩咩&宜春嫣紫&茉莉锦瑟&茉莉琴琴&茉莉张家界感恩&茉莉芬芬&漫步飞扬&钱隆&清水百合&晴雨&群群&秋之韵&青扬&齐欢乐&清秋&乔茜&轻舞如风&钱江源&琴韵姊妹花&千岛湖韵丽恋裳&曲沃高阳&晴晴明珠&重庆华怡&千江飞雪&仟玉&轻纱曼舞&榕城舞魅&瑞金娇媚&荣溶&瑞洪&若冰&融侨李姐&瑞洪幸福群&三堡快乐&盛泽雨夜&水月翔燕&姗姗&四门&丝雨&双桥七彩&狮城&盛世兴业&四川彩虹&帅乡&素颜翩翩&邵固古堤&上海芳华&神韵&索洁&上元芳草&三堡镇快乐&遂昌牡丹亭&时尚姐妹&陕西铜川金谟&陕西三三&山西敏敏&陕西炫舞&双子学跳&天姿&神彩&塔河蓉儿&土土&天云&天使之翼&西乡踏歌起舞&同安银湖&唐山美满&听语&太湖美&天翼朝霞&同心&天台晨曦&雨蝶&瑛姿&英瑛&沅陵燕子&嫣红&月亮姐姐&宜阳灵山&应利英&逸之韵&夜来香&艳艳&云紫燕&玉美人&玉全&杨阳&游弋&月季花&云嘻姐妹&樱红&阳城飞跃&游城&艳桃&燕妮&悦靓&阳光玫瑰&咏儿&益馨&迎仙舞动青春&宜兴神州&伊依&嫣然明月&亚男&一帘&玉玲珑&余丰方&北京缘缘&优柔&云中鹤花语&艺高高&舞动阳光&万安滨江&河北舞动文安&舞之灵&温州燕子&舞动广丰&万年青&武冈&为舞疯狂&万载康乐&温馨&武家&舞乐乐&舞艳天&舞之兰&武阿哥&峡谷&兴梅&小雨点&杭州西湖文化&炫舞飞扬&邢台芬芳&霞彩飞扬&绚舞&旭华&新东方&西湖莉莉&小虎&栾城夏之星&许岭飘逸&萧山青青&西兴&西铁娇娇&肖玲&相约&兴隆矿雨露&新密紫竹&西安悠然&珍儿&舟山香樟树&心儿爽秀儿&新乡飞燕&桐城小翠&梅州心悦&溪东给力&厦门芳草园&筱芳&徐姐&湘粤&忻城甜之缘&雪落泾河&小刚青青草&山西杏花&小淘气&昕韵丽影&夏之荷&仙仙&小洋人&夏天&其他","sort_url":"","year_url":"gcw/kaixuanmen&gcw/kaixinle&gcw/kuailejinsheng&gcw/kuailexiaotianshi&gcw/zhangdi&gcw/zini&gcw/zimeigui&gcw/zhaoping&gcw/ziweihua&gcw/zhongyousiji&gcw/zimo&gcw/zifengling&gcw/zixue&gcw/zhangyuanzhiye&gcw/ziping&gcw/zhanglin&gcw/zuolinyoushe&gcw/zhangyuanwa&gcw/zhaopinghu&gcw/zhongyi&gcw/zhangshuxuehua&gcw/zhuzhu&gcw/zhiyin&gcw/zhiyuan&gcw/nana&gcw/nanyangjunjun&gcw/niya&gcw/nananfangfang&gcw/nanyangtongling&gcw/nanjinglili&gcw/nanyangheping&gcw/niaida&gcw/nanzhiyun&gcw/pingxianglvyin&gcw/putaowang&gcw/pianpianqiwuyun&gcw/pdsxykl&gcw/jingxin&gcw/jjjsch&gcw/hcklye&gcw/doudou&gcw/zhouzhou&gcw/longyouhongfei&gcw/nishangyiyi&gcw/liying&gcw/jinsheshiji&gcw/likaixin&gcw/jjgcw&gcw/luyi&gcw/zenghuilin&gcw/zichen&gcw/litang&gcw/zhaohui&gcw/lanyu&gcw/lanyandaodu&gcw/lanxin&gcw/lijing&gcw/lihua&gcw/luoyangwanmei&gcw/laiyin&gcw/lingdong&gcw/longchengyinuo&gcw/gaotangletian&gcw/longhexingcheng&gcw/lingwu&gcw/longwantou&gcw/lijianghua&gcw/lamachaomin&gcw/liyanghekou&gcw/lingshuixinqiao&gcw/lechangaixin&gcw/lingyi&gcw/lexiuxinyue&gcw/lanzhoulianhua&gcw/lijiangfeiwu&gcw/liuxingyu&gcw/lutong&gcw/laisuzimeng&gcw/linanfeixiang&gcw/liqi&gcw/lehai&gcw/meixiu&gcw/lexin&gcw/lihuxiehou&gcw/lanzhouchunyun&gcw/luchuanyeqing&gcw/longquankaixin&gcw/lanmeisijie&gcw/lizhoubobo&gcw/lanxuan&gcw/mengwu&gcw/mengdiehua&gcw/meifeixue&gcw/luochuanmengzhiwu&gcw/shanghaiminxingyile&gcw/meiting&gcw/manbuyueguang&gcw/meidexinhaian&gcw/meishang&gcw/molan&gcw/maweifengfei&gcw/qingxinmingyue&gcw/zhengzhoushimeiguicheng&gcw/malingshanqiu&gcw/manshanzhuyu&gcw/miemie&gcw/yichunyanzi&gcw/molijinse&gcw/moliqinqin&gcw/molizhangjiajieganen&gcw/molifenfen&gcw/manbufeiyang&gcw/qianlong&gcw/qingshuibaihe&gcw/qingyu&gcw/qunqun&gcw/qiuzhiyun&gcw/qingyang&gcw/qihuanle&gcw/qingqiu&gcw/qiaoxi&gcw/qingwurufeng&gcw/qianjiangyuan&gcw/qinyunzimeihua&gcw/qdhylls&gcw/quwogaoyang&gcw/qingqingmingzhu&gcw/zhongqinghuayi&gcw/qianjiangfeixue&gcw/qianyu&gcw/qingshamanwu&gcw/rongchengwumei&gcw/ruijinjiaomei&gcw/rongrong&gcw/ruihong&gcw/ruobing&gcw/rongqiaolijie&gcw/ruihongxingfuqun&gcw/sanbaokuaile&gcw/shengzeyuye&gcw/shuiyuexiangyan&gcw/shanshan&gcw/simen&gcw/siyu&gcw/shuangqiaoqicai&gcw/shicheng&gcw/shengshixingye&gcw/sichuancaihong&gcw/shuaixiang&gcw/suyanpianpian&gcw/shaogugudi&gcw/shanghaifanghua&gcw/shenyun&gcw/suojie&gcw/shangyuanfangcao&gcw/sanbaozhenkuaile&gcw/suichangmudanting&gcw/shishangjiemei&gcw/sxtcjm&gcw/shanxisansan&gcw/shanximinmin&gcw/shanxixuanwu&gcw/shuangzixuetiao&gcw/tianzi&gcw/shencai&gcw/taheronger&gcw/tutu&gcw/tianyun&gcw/tianshizhiyi&gcw/xixiangtageqiwu&gcw/tonganyinhu&gcw/tangshanmeiman&gcw/tingyu&gcw/taihumei&gcw/tianyichaoxia&gcw/tongxin&gcw/tiantaichenxi&gcw/yudie&gcw/yingzigcw&gcw/yingying&gcw/yuanlingyanzi&gcw/yanhong&gcw/yueliangjiejie&gcw/yiyanglingshan&gcw/yingliying&gcw/yizhiyun&gcw/yelaixiang&gcw/yanyan&gcw/yunziyan&gcw/yumeiren&gcw/yuquan&gcw/yangyang&gcw/youyi&gcw/yuejihua&gcw/yunxijiemei&gcw/yinghong&gcw/yangchengfeiyue&gcw/youcheng&gcw/yantao&gcw/yanni&gcw/yueliang&gcw/yangguangmeigui&gcw/yonger&gcw/yixin&gcw/yingxianwudongqingchun&gcw/yixingshenzhou&gcw/yiyi&gcw/yanranmingyue&gcw/yanan&gcw/yilian&gcw/yulinglong&gcw/yufengfang&gcw/beijingyuanyuan&gcw/yourou&gcw/yunzhonghehuayu&gcw/yigaogao&gcw/wudongyangguang&gcw/wananbinjiang&gcw/hebeiwudongwenan&gcw/wuzhiling&gcw/wenzhouyanzi&gcw/wudongguangfeng&gcw/wannianqing&gcw/wugang&gcw/weiwufengkuang&gcw/wanzaikangle&gcw/wenxin&gcw/wujia&gcw/wulele&gcw/wuyantian&gcw/wuzhilan&gcw/wuage&gcw/xiagu&gcw/xingmei&gcw/xiaoyudian&gcw/hzxhwh&gcw/xuanwufeiyang&gcw/xingtaifenfang&gcw/xiacaifeiyang&gcw/xuanwu&gcw/xuhua&gcw/xindongfang&gcw/xihulili&gcw/xiaohu&gcw/luanchengxiazhixing&gcw/xulingpiaoyi&gcw/xiaoshanqingqing&gcw/xixing&gcw/xitiejiaojiao&gcw/xiaoling&gcw/xiangyue&gcw/xinglongkuangyulu&gcw/xinmizizhu&gcw/xianyouran&gcw/zhener&gcw/zhoushanxiangzhangshu&gcw/xinershuangxiuer&gcw/xinxiangfeiyan&gcw/tongchengxiaocui&gcw/meizhouxinyue&gcw/xidonggeili&gcw/xiamenfangcaoyuan&gcw/xiaofang&gcw/xujie&gcw/xiangyue&gcw/xinchengtianzhiyuan&gcw/xueluojinghe&gcw/xiaogangqingqingcao&gcw/shanxixinghua&gcw/xiaotaoqi&gcw/cuanyunliying&gcw/xiazhihe&gcw/xianxian&gcw/xiaoyangren&gcw/xiatian&gcw/qita","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'.video_list&&li');\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'a,1&&title');\n        var img = parseDom(list[i], 'a&&style');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], 'a&&data-desc');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url+`@lazyRule=.js:var html=parseDomForHtml(request(input),'.gcwbox&&iframe&&src');html`,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"body&&.item-video;p&&Text;a&&href;*;*;img&&src","search_url":"https://www.igcwu.com/e/sch/index.php?page=fypage@-1@*1@&keyboard=**&sear=1","titleColor":"#ff228be6","group":"其它","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","icon":"#ff228be6"},{"last_chapter_rule":"","title":"一拳动漫","author":"道长&老子胸口有纹身","version":0,"type":"video","url":"hiker://empty##http://47.97.68.224/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"动漫","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/20.svg"},{"last_chapter_rule":"","title":"手指影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://szys5678.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://szys5678.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://szys5678.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://szys5678.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/手指影视.png"},{"last_chapter_rule":"","title":"益达影院.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://luobu.yss6080.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://luobu.yss6080.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://luobu.yss6080.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://luobu.yss6080.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/益达影院.png"},{"last_chapter_rule":"","title":"大熊影视.W","author":"老子胸口有纹身","version":2,"type":"video","url":"https://dxys2233.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://dxys2233.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://dxys2233.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://dxys2233.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/大熊影视.png"},{"last_chapter_rule":"","title":"爱西西.W","author":"老子胸口有纹身","version":1,"type":"video","url":"https://myaixixi.com/api.php/app/video?pg=fypage&tid=fyclass&class=fyarea&area=fyyear&lang=&year=fysort&token=;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺","class_url":"1&2&4&3","area_name":"全部&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&经典&古装&枪战&历史","area_url":"&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&经典&古装&枪战&历史","sort_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"全部&大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其它","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&大陆&香港&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其它","find_rule":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.vod_name;\n    r.img = j.vod_pic+\"@Referer=\";\n    r.desc = j.vod_remarks;\n    r.url = 'https://myaixixi.com/api.php/app/video_detail?id='+j.vod_id+'&token='+'#immersiveTheme#';\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","searchFind":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.vod_name;\n    r.img = j.vod_pic;\n    r.desc = j.vod_time_add;\n    r.url = 'https://myaixixi.com/api.php/app/video_detail?id='+j.vod_id+'&token='+'#immersiveTheme#';\n    r.content = j.vod_remarks;\nif (r.title !== null && r.title !== undefined && r.title !== '') {\nd.push({title:r.title,\nimg:r.img,\ndesc:r.desc,\nurl:r.url,\ncol_type: 'movie_1'});\n}\nelse if(r.title == null || r.title == undefined || r.title == ''){\nd.push({\ntitle:'搜索无结果',\ncol_type: 'movie_1'\n});\n}\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://myaixixi.com/api.php/app/search?pg=1&text=**&token=;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=568259&key=adeiknouxzEGKNYZ06&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else if(url.match(/laodi/)){request('https://zy.laodi.xyz/S55978.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_content,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_url_with_player;\nvar title = 'www' + html.data.vod_name;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊' +tabs[i].name + '””' : tabs[i].name,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/爱西西影视.png"},{"last_chapter_rule":"","title":"雨果影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://2.yhys63.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://2.yhys63.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://2.yhys63.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://2.yhys63.com/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/雨果影视.png"},{"last_chapter_rule":"","title":"雪梨视频.W","author":"老子胸口有纹身","version":1,"type":"video","url":"https://zsb2233.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://zsb2233.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://zsb2233.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://zsb2233.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/雪梨视频.png"},{"last_chapter_rule":"","title":"极品影视.W","author":"老子胸口有纹身","version":1,"type":"video","url":"http://app.yhzy.xyz/lvdou_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.yhzy.xyz/lvdou_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.yhzy.xyz/lvdou_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://app.yhzy.xyz/lvdou_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://jf.96ym.cn/api/?key=13FXcA46Nzg4QeFHbq&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/RongXingVR/)){request('https://svip.rongxingvr.top/api/?key=5rpZKy4ydAe7PZcThD&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/5.svg"},{"last_chapter_rule":"","title":"康耀影视.W","author":"老子胸口有纹身","version":1,"type":"video","url":"http://124.222.126.23:999/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://124.222.126.23:999/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://124.222.126.23:999/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://124.222.126.23:999/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/康耀影视.png"},{"last_chapter_rule":"","title":"HG影视.W","author":"老子胸口有纹身","version":1,"type":"video","url":"http://hgyx.vip/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://hgyx.vip/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://hgyx.vip/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://hgyx.vip/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/HG影视.png"},{"last_chapter_rule":"","title":"麻瓜视频.W","author":"老子胸口有纹身","version":1,"type":"video","url":"http://aliyun.k8aa.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://aliyun.k8aa.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://aliyun.k8aa.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://aliyun.k8aa.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/麻瓜视频1.png"},{"last_chapter_rule":"","title":"逗逗影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://appys.jdodo.xyz/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://appys.jdodo.xyz/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://appys.jdodo.xyz/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://appys.jdodo.xyz/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/JDODO影视.png"},{"last_chapter_rule":"","title":"叮当影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://tv.0573wl.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://tv.0573wl.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://tv.0573wl.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://tv.0573wl.com/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/叮当影视.png"},{"last_chapter_rule":"","title":"剧白白.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://v.pipitu.top/xgapp.php/v2/video?pg=fypage&tid=fyclass&class=fyarea&area=fyyear&lang=&year=fysort&token=","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&古装&枪战&历史","area_url":"&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&古装&枪战&历史","sort_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"全部&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","sort_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&大陆&香港&台湾&美国&英国&法国&日本&韩国&德国&泰国&印度&西班牙&加拿大&其它","find_rule":"js:\nvar d=[];\nvar list=JSON.parse(getResCode()).data;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://v.pipitu.top/xgapp.php/v2/video_detail?id='+list[i].vod_id+'#immersiveTheme#',\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:\nvar d=[];\nvar list=JSON.parse(getResCode()).data;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://v.pipitu.top/xgapp.php/v2/video_detail?id='+list[i].vod_id+'#immersiveTheme#',\ncontent:list[i].vod_time_add,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://v.pipitu.top/xgapp.php/v2/search?text=**&pg=fypage","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js')\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le|1905.com/)){require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');aytmParse(url)}else if(url.match(/renrenmi/)){request('https://jiexi.moeamv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1]}else if(url.match(/LT/)){request('https://jx.ikmjtv.com/?url='+url).match(/url: \"(.*?)\"/)[1]}else{url}`\n\n\n\n//标题图片简介\n  d.push({\n            title:'地区：'+html.data.vod_info.vod_area+'    年代：'+html.data.vod_info.vod_year+'\\n主演：'+html.data.vod_info.vod_actor.substring(0, 10)+'\\n导演：'+html.data.vod_info.vod_director.substring(0,10),\n          pic_url:html.data.vod_info.vod_pic,\n          desc:'简介：'+html.data.vod_info.vod_blurb,\n          url: setupPages(\"设置\"),\n     col_type:'movie_1_vertical_pic_blur'\n        });\n\n//线路与选集代码开始\nvar tabs = html.data.vod_info.vod_url_with_player;\nvar title = 'www' + html.data.vod_info.vod_url_with_player;\n\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(title, '0') == i ? '““'+tabs[i].name + '””' : tabs[i].name,\n        url: `hiker://empty@lazyRule=.js:putVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n        col_type: 'scroll_button'\n    });\n}\n\n      var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/牛马TV.png"},{"last_chapter_rule":"","title":"雪人影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://zy.qd234.cn/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://zy.qd234.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://zy.qd234.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://zy.qd234.cn/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/雪人影视.png"},{"last_chapter_rule":"","title":"独播社.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://35ys.cc/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://35ys.cc/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://35ys.cc/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://35ys.cc/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/独播社.png"},{"last_chapter_rule":"","title":"DC影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://chaorenbb.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://chaorenbb.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://chaorenbb.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://chaorenbb.com/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/DC影视.png"},{"last_chapter_rule":"","title":"段友影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://121.204.249.135:4433/ruifenglb_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://121.204.249.135:4433/ruifenglb_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://121.204.249.135:4433/ruifenglb_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://121.204.249.135:4433/ruifenglb_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/段友影视3.png"},{"last_chapter_rule":"","title":"CJT影院.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://www.cjt521.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.cjt521.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.cjt521.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.cjt521.com/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/CJT影院.png"},{"last_chapter_rule":"","title":"月色影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://69ty.cc/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://69ty.cc/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){request('https://ltnb.jeeves.vip/home/api?type=ys&uid=2492729&key=bkmopwEFMNQSUWXZ67&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/月色影视.png"},{"last_chapter_rule":"","title":"杨桃影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://ytys3456.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://ytys3456.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://ytys3456.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://ytys3456.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/杨桃影视.png"},{"last_chapter_rule":"","title":"心爱影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://xays6677.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://xays6677.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://xays6677.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://xays6677.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/心爱影视.png"},{"last_chapter_rule":"","title":"全能影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://qnys5566.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.13(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://qnys5566.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://qnys5566.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://qnys5566.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.13(dart:io)}","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/wuduyun/)){request('https://jf.1080p.icu/home/api?type=dsp&uid=147565&key=adilmopuBEFJNUV067&url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/duoduozy/)){request('http://a.dxzj88.com/ddzy/dd.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, url:\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\nif(html.data.vod_actor !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_actor,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'主演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\nif(html.data.vod_director !=\"\"){\nd.push({\n    title: '<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_director,\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nelse{\nd.push({\n    title:'<span style=\"color:#006600\">' +'导演：</span>'+'<span style=\"color:#ff0000\">'+'含泪抓出空白😭',\ncol_type: 'rich_text', extra: {textSize: 14}\n    });}\nd.push({\n    col_type: 'line_blank'\n})\n\nd.push({\n    title:  '<span style=\"color:#006600\">' +'简介：</span>'+'<span style=\"color:#668c99\">'+html.data.vod_blurb,\n    col_type: 'rich_text', extra: {textSize: 14}\n});\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'🎋选 集🎋</span>'+'<span style=\"color:#668c90\">'+'\\n🍃点击切换排序🍃',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/全能影视.png"},{"last_chapter_rule":"","title":"爱酷影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|LT|bpptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://jf.96ym.cn/api/?key=13FXcA46Nzg4QeFHbq&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://languangyingshiziyuan.1080zy.top/longteng.php/?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/爱酷影视.png"},{"last_chapter_rule":"","title":"猫爪影视.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://www.69ty.cc/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://www.69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://www.69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://www.69ty.cc/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|LT|bpptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://jf.96ym.cn/api/?key=13FXcA46Nzg4QeFHbq&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://languangyingshiziyuan.1080zy.top/longteng.php/?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/懒猫电影.png"},{"last_chapter_rule":"","title":"300看世界.W","author":"老子胸口有纹身","version":0,"type":"video","url":"http://300kan.top/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://300kan.top/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://300kan.top/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://300kan.top/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"套娃","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|LT|bpptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://jf.96ym.cn/api/?key=13FXcA46Nzg4QeFHbq&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://languangyingshiziyuan.1080zy.top/longteng.php/?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/300看世界.png"},{"last_chapter_rule":"","title":"茶客","author":"轻合集生成器","version":104,"type":"other","url":"hiker://empty","col_type":"icon_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//关闭自定义分类？\nconst defaultDisTabModify = true;\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '');\nlet disTabModify = readFile('disTabModify');\nlet disableHome = !!readFile('disableHome',0);\n// log('typeShow:'+typeShow);\nif(disTabModify===''){\n    saveFile('disTabModify', defaultDisTabModify+'');\n    disTabModify = defaultDisTabModify;\n}else if(/true|false/.test(disTabModify)){\n    disTabModify = JSON.parse(disTabModify);\n}\n//log('关闭自定义分类？'+disTabModify);\nvar mySub = (function (){\n    require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/subscribe.js'); // 引入道长订阅\n    return 道长主页(true)\n})();\nconst path = mySub.subPath;\n// const cfg = mySub.cfg;\n// const subs = mySub.subs;\nconst sub_count = mySub.sub_count;\n// const cms_config = mySub.cms_config;\nconst nowData = mySub.nowData;\nconst nowSub = mySub.nowSub;\nconst subBtns = mySub.el;\nlet iconApi = mySub.iconApi;\nif(typeof(iconApi)==='undefined'||!iconApi){\n    iconApi = false;\n}\nlet el = [], rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\nlet isXj=(typeof(MY_NAME)!='undefined' && MY_NAME == '嗅觉浏览器');\nif(!disableHome&&!isXj){\neval(fetch(\"hiker://assets/home.js\"));\nvar _urgent=false;\nel=el.concat(HikerHome.load(\"main\",_urgent));\n}\nlet rule_cnt=typeof(getRuleCount)==='function'?getRuleCount():'未知';\nlet tips='小程序:'+rule_cnt+' 订阅:'+sub_count;\nel.push({\n    url: '\"hiker://search?s=\"+input',\n    desc: tips+' 搜你要...',\n    title: '搜索',\n    col_type: 'input',\n    extra: {\n        rules: $.toString((QING_TITLE, typeShow,disTabModify) => {\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url);\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        }, QING_TITLE, typeShow,disTabModify),\n        defaultValue: getMyVar('searchKey', ''),\n        onChange: \"putMyVar('searchKey',input)\"\n    }\n});\nel = el.concat(subBtns); // 连接订阅设置和切换按钮\nel.push({\n    col_type:\"blank_block\",\n});\nlet appKey = getMyVar('appKey','');\nif(appKey){//有搜索关键字则筛选\n    rules = rules.filter(it=>it.title.includes(appKey)||it.url.includes(appKey));\n}\n\nfunction getCateUrl(show){ // 空白字符串,全部,英语，中文\n    return $('#noLoading#').lazyRule((show,typeShow,disTabModify)=>{\n        if(disTabModify){//禁用了自定义分类\n            if(!show){//全部\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }else{\n            if(!show||show==='全部'){\n                clearMyVar('typeShow');\n            }else{\n                putMyVar('typeShow', show);\n            }\n        }\n\n        if(((!typeShow&&show!=='全部')||(typeShow&&typeShow!==show))&&!(!typeShow&&!show)){\n            // log('typeShow:'+typeShow+'!=show:'+show);\n            refreshPage(false);\n        }\n        return 'hiker://empty'\n    },show,typeShow,disTabModify);\n}\n\nlet typeBtns = [];\nif(disTabModify) {\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' };\n    for (let k in types) {\n        if (!k || rules.find((v) => v.type === k)) {\n            let title = '““””' + (k === typeShow ? types[k].bold().fontcolor('#12b668') : types[k]);\n            let cnt = rules.filter(it => !k || it.type === k).length;\n            typeBtns.push({\n                title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n                url:getCateUrl(k),\n                col_type: 'scroll_button'\n            })\n        }\n    }\n\n    if (typeShow) {\n        rules = rules.filter((v) => v.type === typeShow);\n    }\n}else{\n    types = rules.map(it => it.sort_url || \"其他\");\n    types.unshift('全部');\n    types = unique2(types);\n    let typeNow = typeShow || '全部';\n    types.forEach((its)=>{\n        let title = '““””' + (its === typeNow ? its.bold().fontcolor('#12b668') : its);\n        let cnt;\n        if (its === '全部') {\n            cnt = rules.length;\n        } else if (its === '其他') {\n            cnt = rules.filter(it => !it.sort_url||it.sort_url==='其他').length;\n        } else {\n            cnt = rules.filter(it => it.sort_url === its).length;\n        }\n        typeBtns.push({\n            title: small(title) + ' ' + small(color(cnt, '#ff7000')),\n            url: getCateUrl(its),\n            col_type: 'scroll_button'\n        })\n\n    });\n\n    if(typeNow==='其他'){\n        rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n    }else if(typeNow!=='全部'){\n        rules = rules.filter((v) => v.sort_url===typeNow);\n    }\n}\nlet searchTitle = appKey?small(color(' :'+appKey.slice(0,5), '#12b668')):'';\ntypeBtns.splice(1,0,{\n    title:'🔍'+searchTitle,\n    col_type:'scroll_button',\n    url:$(appKey,'请输入小程序名称|链接').input(()=>{\n        putMyVar('appKey',input);\n        refreshPage(false);\n        return 'hiker://empty'\n    })\n});\nel = el.concat(typeBtns);\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule);\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || (iconApi?iconApi+v.title:'hiker://images/icon1'),\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true,\n                nowData: nowData\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n});\nsetResult(el)","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const defaultDisTabModify = false; //默认禁用自定义分类关闭.就是开启自定义\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '');\n            let disTabModify = readFile('disTabModify');\n            if(disTabModify===''){\n                saveFile('disTabModify', defaultDisTabModify+'');\n                disTabModify = defaultDisTabModify;\n            }else if(/true|false/.test(disTabModify)){\n                disTabModify = JSON.parse(disTabModify);\n            }\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)();\n            if (disTabModify&&typeShow) {\n                rules = rules.filter((v) => v.type === typeShow);\n            }else if(!disTabModify){\n                let typeNow = typeShow || '全部';\n                if(typeNow==='其他'){\n                    rules = rules.filter((v) => !v.sort_url||v.sort_url==='其他');\n                }else if(typeNow!=='全部'){\n                    rules = rules.filter((v) => v.sort_url===typeNow);\n                }\n            }\n            return JSON.stringify(rules)\n        })\n    }\n}]);","search_url":"hiker://empty?keyword=**","group":"小姐姐","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title);\nputMyVar('remoteUrl', 'hiker://files/rules/dzHouse/ruleCache/cmsData.json');","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\n    addListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()');\\nsetPageTitle('⚙ 轻合集设置 ⚙');\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://')){\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            }\\n            deleteCache(url);\\n            back(false);\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用');\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n},  {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n            .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n/*\\nel.push({\\n    title:'““””' + '🏅'.small() + '&nbsp 订阅管理 &nbsp'.bold().fontcolor('#757575'),\\n    url:$('hiker://empty').rule(()=>{\\n        setPageTitle('订阅管理');\\n        require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/subscribe.js');\\n        一级();\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n */\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode === '导入海阔') {\\n    el.push({\\n        title:'搜索',\\n        desc:'输入小程序标题|地址进行搜索...',\\n        url:$.toString(()=>{\\n            refreshPage(false);\\n        }),\\n        col_type:'input',\\n        extra: {\\n            onChange: \\\"putMyVar('importSearchKey',input)\\\",\\n            titleVisible: true,\\n            defaultValue:getMyVar('importSearchKey','')\\n        },\\n    });\\n    el.push({\\n        title: '全部导入(非搜索过滤后结果)',\\n        url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n        col_type: 'text_center_1',\\n        extra: {lineVisible: false}\\n    });\\n}\\nvar datas = (disableCustom ? data : JSON.parse(readFile('customData') || '[]'));\\nlet sk = getMyVar('importSearchKey','');\\nif(editMode === '导入海阔'&&sk) {\\n    datas = datas.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n    data = data.filter(it=>it.title.includes(sk)||(it.url&&it.url.includes(sk)));\\n}\\ndatas.forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]));\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\n    const QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    {\\n        RULE,\\n        isIndex,\\n        pageTitle,\\n        nowData\\n    } = MY_PARAMS,\\n    thisRULE = {}\\nif (nowData) {\\n    //log(nowData);\\n    let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n    thisRULE = JSON.parse(fetch(pt)).find((v) => v.title == RULE.title)\\n} else {\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\n}\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title, nowData) => {\\n                    let rules = []\\n                    let r = {}\\n                    if (nowData) {\\n                        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n                        r = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n                    } else {\\n                        r = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == title)\\n                    }\\n                    rules = [r]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title, nowData),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule2 = RULE.preRule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(thisRULE.title + \\\"@pre\\\", \\\"no\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url,nowData) => {\\n    let RULE = {}\\n    if (nowData) {\\n        //log(nowData);\\n        let pt = 'hiker://files/rules/dzHouse/ruleCache/' + nowData + '.json';\\n        RULE = JSON.parse(fetch(pt)).find((v) => v.title == title)\\n    } else {\\n        RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    }\\n    return {\\n        title:title,\\n        url: url,\\n        pages: RULE.pages,\\n        pageList: JSON.parse(RULE.pages || '[]')\\n    }\\n}, QING_TITLE, RULE.title,MY_RULE.url, nowData)\\n\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) {\\n        return rule\\n    }\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm','copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title,\\n                nowData: nowData\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) {\\n                    return ''\\n                }\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), {\\n                        detail_find_rule: detailFindRule\\n                    }),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title,\\n                    nowData: nowData\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"主页元素\",\"path\":\"home_item\",\"rule\":\"const Gtimeout=500; //全局超时\\nconst avatarPic=\\\"http://q1.qlogo.cn/g?b=qq&nk=434857005&s=640\\\"; //头像链接\\n\\nvar range = function (min,max) {\\nreturn Math.floor(Math.random()*(max-min))+min;\\n};\\n\\nfunction getOne(items) {\\n    return items[Math.floor(Math.random() * items.length)]\\n}\\nfunction getSay() {//获取一言\\n   let sc='https://v2.jinrishici.com/one.json';\\n    var colors = ['grey', '#ff7512', '#cb54ff', '#ff5358', '#ff9044', '#7678ff', '#34b1ff'];\\n    let word = \\\"此情若是长久时,网络不好可不行\\\";\\n    let sjsc=\\\"\\\";\\ntry{\\nsjsc=JSON.parse(request(sc,{timeout:Gtimeout})).data.content;\\n}catch(e) {sjsc = word;}\\n      let say = '<small><font color=\\\"' + getOne(colors) + '\\\">' + sjsc + '</font></small>';\\n    return say\\n}\\n\\n$.exports.getSay=getSay;\\n$.exports.avatarPic=avatarPic;\\n$.exports.Gtimeout=Gtimeout;\\n$.exports.range=range;\\n$.exports.getOne=getOne;\"}]","proxy":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/=>https://gitcode.net/qq_32394351/dr/-/raw/master/js/","icon":"https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/img/dao.png"},{"last_chapter_rule":"","title":"天天评书网","author":"子丑寅卯","version":1,"url":"https://m.pingshu365.com/sm/fyAll_fypage.html;get;GBK","col_type":"text_1","class_name":"恐怖悬疑&盗墓探险&官场刑侦&历史军事&科学教育&经典文学&儿童读物&仙侠玄幻&都市言情&传统武侠&职场商战&人物传记&纪实文学&其他类别","class_url":"304&305&307&309&315&314&312&306&308&310&311&313&316&300","area_name":"单田芳&袁阔成&田连元&刘兰芳&王玥波&连丽如&张少佐&其他评书","area_url":"293&294&295&297&296&298&299&302","sort_name":"","year_name":"相声小品&百家讲坛&戏曲","sort_url":"","year_url":"303&317&318","find_rule":"body&&.top_list&&a;a&&Text;;;a&&href.js:input+'#immersiveTheme#'","searchFind":"body&&.top_list&&a;a&&Text;a&&href.js:input+'#immersiveTheme#'","search_url":"https://m.pingshu365.com/search/1.asp?page=fypage&keyword=**&stype=;get;GBK","titleColor":"#ffff00ff","group":"小说","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\nvar html=getResCode();\nd.push({       \r\ntitle: parseDomForHtml(html, '.bookname&&Text'),       \r\ndesc: parseDomForHtml(html, '.info&&Text').split('标签')[0].replace('音质','\\n音质').replace('更新','\\n更新').replace('标签','\\n标签'),         \r\npic_url: parseDom(html,'.bookimg&&img&&src'),\r\n});\n\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#playlist&&li');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&Text'),       \r\nurl: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5 ,\ncol_type: 'text_4'\n\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fimagev2.xmcdn.com%2Fgroup82%2FM01%2F45%2F4B%2FwKg5Il7gcnezwUdiAADefvOcinQ440.jpg%21strip%3D1%26quality%3D7%26magick%3Djpg%26op_type%3D5%26upload_type%3Dalbum%26name%3Dmobile_large%26device_type%3Dios&refer=http%3A%2F%2Fimagev2.xmcdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1637387277&t=3e7aa312e0babee1f9b1a5890ce19abe"},{"last_chapter_rule":"","title":"简易分类生成器","author":"香雅情","version":1,"type":"tool","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\n\nitems.push({\n    title: \"取源码\",\n    url: $.toString(() => {\n        function btwaf(netpg, bturl, btua, chars) {\n            //log(netpg);\n            if (netpg.indexOf('检测中') != -1) {\n                let cook = \"\";\n                try {\n                    let bthtml = JSON.parse(fetch(bturl, {\n                        headers: {\n                            'User-Agent': btua\n                        },\n                        withHeaders: true\n                    }));\n                    //log(bthtml);\n                    netpg = bthtml.body;\n                    if (bthtml.search(\"set-cookie\")) {\n                        cook = JSON.parse(bthtml).headers['set-cookie'][0].join(';');\n                    }\n                } catch (e) {\n                    cook = \"\";\n                }\n                log(\"Cookie值：\" + cook);\n                if (cook == \"\") {\n                    ghtml = fetch(bturl + \"/?btwaf\" + netpg.match(/btwaf(.*?)\\\"/)[1], {\n                        headers: {\n                            \"User-Agent\": btua\n                        }\n                    });\n                } else {\n                    ghtml = fetch(bturl + \"/?btwaf\" + netpg.match(/btwaf(.*?)\\\"/)[1], {\n                        headers: {\n                            \"User-Agent\": btua,\n                            \"Cookie\": cook\n                        }\n                    });\n                }\n            }\n        }\n\n        function gethtml(url, ua, chars) {\n            if (ua == \"\") {\n                ua = MOBILE_UA;\n            } else if (ua == \"手机\") {\n                ua = MOBILE_UA;\n            } else if (ua == \"电脑\") {\n                ua = PC_UA;\n            } else {\n                ua = ua.replace(/；；/g, ';');\n            }\n            if (chars == \"\") {\n                ghtml = request(url, {\n                    headers: {\n                        \"User-Agent\": ua\n                    }\n                });\n            } else {\n                ghtml = request(url, {\n                    headers: {\n                        \"Content-Type\": \"text/html; charset=\" + chars,\n                        \"User-Agent\": ua\n                    }\n                });\n            }\n            //log(html);\n            btwaf(ghtml, url, ua, chars);\n            return ghtml;\n        }\n        clearMyVar('rescode');\n        showLoading(\"正在获取网页源码，请稍候...\");\n        var link = input.split(\";\");\n        var html = \"\";\n        if (link.length == 1) {\n            html = gethtml(link[0], \"\", \"\");\n        } else if (link.length == 2) {\n            html = gethtml(link[0], link[1], \"\");\n        } else if (link.length == 3) {\n            html = gethtml(link[0], link[1], link[2]);\n        }\n\n        //log(html);\n        putMyVar('rescode', html);\n        clearMyVar('classlist');\n        clearMyVar('classname');\n        clearMyVar(\"classvalue\");\n        //hideLoading();\n        refreshPage(false);\n        hideLoading();\n        return \"hiker://empty\";\n    }),\n    extra: {\n        type: 'textarea',\n        height: -1,\n        onChange: \"setItem('linktext',input)\",\n        defaultValue: getItem(\"linktext\", \"https://www.23wm.net/vodshow/id/1.html;手机;utf-8\"),\n        titleVisible: true\n    },\n    col_type: 'input'\n});\nif (getMyVar(\"classlist\", \"\") != \"\") {\n    items.push({\n        //title: getMyVar(\"rescode\", \"\"),\n        col_type: \"input\",\n        extra: {\n            height: 3,\n            defaultValue: getMyVar(\"classlist\", \"\"),\n            type: 'textarea',\n            highlight: true\n        }\n\n    });\n} else {\n    items.push({\n        title: '规则格式：列表;标题;链接;切前缀;切后缀',\n        url: \"hiker://empty\",\n        col_type: \"text_1\"\n    });\n}\nvar classText = getItem(\"classtext\", \".leo-select-wrap&&a[href^=/vodshow];a&&Text;a&&href;/id/;.html\");\nitems.push({\n    title: \"生成\",\n    url: $.toString(() => {\n        putMyVar('classname', \"\");\n        putMyVar('classvalue', \"\");\n        putMyVar('classlist', \"\");\n        //showLoading(\"正在生成，请稍候...\");\n\n        function subcont(lin, star, end) {\n            try {\n                if (star == \"\" && end == \"\") {\n                    return decodeURIComponent(lin);\n                } else if (star.length > 0 && end == \"\") {\n                    let nub = lin.indexOf(star);\n                    //log(nub);\n                    let valu = lin.substring(nub + star.length);\n                    //log(valu);\n                    return decodeURIComponent(valu);\n                } else {\n                    var str = star + \"(.*?)\" + end;\n                    let valu = eval(lin.match(str));\n                    return decodeURIComponent(valu[1])\n                }\n            } catch (e) {\n                return decodeURIComponent(lin)\n            }\n        }\n\n\n\n        var spl = getItem(\"classtext\").split(\";\");\n        //log(spl.length);\n        if (getMyVar(\"rescode\", \"\") == \"\") {\n            //refreshPage();\n            //hideLoading();\n            return 'toast://请先获取网页源码。';\n        } else if (spl[0] == \"\") {\n            refreshPage();\n            //hideLoading();\n            return 'toast://规则格式填写错误，不能为空。';\n        } else {\n            var html = getMyVar(\"rescode\", \"\");\n            try {\n                var list = parseDomForArray(html, spl[0] + ':not(:matches(首页|公告|头条|专题|明星|下载|app|APP|类型|分类|资讯|留言|消息|防走|通知|用户))');\n\n                //log('列表：' + list.length);\n\n                for (let i = 0; i < list.length; i++) {\n                    var listt = getMyVar('classlist', '');\n                    if (listt.length < 1) {\n                        var lipt = list[i];\n                    } else {\n                        var lipt = listt + '\\n\\n' + list[i]\n                    }\n                    putMyVar('classlist', lipt);\n\n                    var title = parseDomForHtml(list[i], spl[1]);\n                    var url = parseDomForHtml(list[i], spl[2]);\n                    url = subcont(url, spl[3], spl[4]);\n\n                    var filet = getMyVar('classname', '');\n                    if (filet.length < 1) {\n                        var typt = title;\n                    } else {\n                        var typt = filet + '&' + title\n                    }\n\n                    var file = getMyVar('classvalue', '');\n                    if (file.length < 1) {\n                        var typh = url;\n                    } else {\n                        var typh = file + '&' + url\n                    }\n                    //log(file.length);\n                    putMyVar('classname', typt);\n                    putMyVar('classvalue', typh);\n                }\n                //putMyVar('判断', \"1\");\n            } catch (e) {\n                //putMyVar('判断', \"0\");\n                log(\"生成报错咯\");\n            }\n            refreshPage(false);\n            //hideLoading();\n            return 'hiker://empty';\n        }\n    }),\n    extra: {\n        type: 'textarea',\n        height: -1,\n        onChange: \"setItem('classtext',input)\",\n        defaultValue: classText,\n        titleVisible: true\n    },\n    col_type: 'input'\n});\n\nitems.push({\n    title: '恢复默认',\n    url: $('hiker://empty').lazyRule(() => {\n        clearMyVar('rescode');\n        clearMyVar('classname');\n        clearMyVar(\"classvalue\");\n        clearMyVar('classtext');\n        clearMyVar('linktext');\n        clearMyVar('classlist');\n        clearItem('linktext');\n        clearItem('classtext');\n        refreshPage(false);\n        return 'hiker://empty'\n    }),\n    col_type: \"flex_button\"\n});\n\nitems.push({\n    title: \"复制名称\",\n    //desc: getVar(\"frdtvcode\",\"\"),\n    url: \"confirm://是否需要复制当前内容。.js:\" + $.toString(() => {\n        var jieguo = getMyVar('classname', '');\n        if (jieguo == '') {\n            return 'toast://内容为空,复制失败。';\n        } else if (jieguo.length < 1) {\n            return 'toast://内容长度不够,复制失败。';\n        } else {\n            return 'copy://' + getMyVar('classname')\n        }\n    }),\n    col_type: \"flex_button\"\n});\nitems.push({\n    title: \"复制替换词\",\n    //desc: getVar(\"frdtvcode\",\"\"),\n    url: \"confirm://是否需要复制当前内容。.js:\" + $.toString(() => {\n        var jieguo = getMyVar('classvalue', '');\n        if (jieguo == '') {\n            return 'toast://内容为空,复制失败。';\n        } else if (jieguo.length < 1) {\n            return 'toast://内容长度不够,复制失败。';\n        } else {\n            return 'copy://' + getMyVar('classvalue')\n        }\n    }),\n    col_type: \"flex_button\"\n});\nif (getMyVar('classname', \"\") != \"\"||getMyVar('classvalue', \"\") != \"\") {\n    items.push({\n        //title: getMyVar(\"rescode\", \"\"),\n        col_type: \"input\",\n        extra: {\n            height: 3,\n            defaultValue: \"名称：\\n\" + getMyVar(\"classname\", \"\") + '\\n\\n' + \"替换词：\\n\" + getMyVar(\"classvalue\"),\n            type: 'textarea',\n            highlight: true\n        }\n\n    });\n}\nitems.push({\n    //title: getMyVar(\"rescode\", \"\"),\n    col_type: \"input\",\n    extra: {\n        height: 10,\n        defaultValue: getMyVar(\"rescode\", \"请先获取源码\"),\n        type: 'textarea',\n        highlight: true\n    }\n\n});\nsetHomeResult(items);","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"AI二级模板","author":"道长","version":6,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet ip=getIP();\nlog(ip);\nvar d = [];\nd.push({\n    title: \"走你\",\n    url: $.toString(() => {\n        return \"hiker://page/drparse?u=\" + base64Encode(input)+'#immersiveTheme#'\n    }),\n    col_type: \"input\",\n    desc: \"请输入网页地址\",\n    pic_url: \"\"\n});\n\nurl = \"http://zjdr.vip/Moviedetail/120997.html\";\nd.push({\n    title: \"电影示例：\" + url,\n    url: \"hiker://page/drparse?u=\" + base64Encode(url)+'#immersiveTheme#',\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nurl = \"https://www.appmovie.cc/index.php/vod/detail/id/481877.html\";\nd.push({\n    title: \"剧集示例：\" + url,\n    url: \"hiker://page/drparse?u=\" + base64Encode(url)+'#immersiveTheme#',\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title:'复制测试云口令',\n    url:'copy://https://pasteme.tyrantg.com/xxxxxx/ivcrtfydhwjeh2qz\\n\\n邀您一起看：安娜贝尔',\n    col_type:'text_1'\n});\nd.push({\n   title:'解析云口令',\n   desc:'在任意普通规则二级点击分享页面到云剪切板，然后到这里粘贴解析',\n   col_type:'text_1',\n   url:$('{{clipboard}}','请输入二级界面云口令').input(()=>{\n       input=input.trim();\n       //log(input);\n       if(!input.startsWith('http')){\n           return 'toast://云口令有误'\n       }\n       let url=input.split('\\n')[0];\n       log(url);\n       let text=parsePaste(url);\n       //log(text);\n       if(!/page_detail/.test(text)){\n           return 'toast://无法解析非二级页面分享的云口令！'\n       }\n       let json=base64Decode(text.split('@@')[1]);\n       json=JSON.parse(json);\n       //log(json);\n       let data=JSON.parse(json.data);\n       let detailUrl=data.url;\n       //log(detailUrl);\n       detailUrl=detailUrl.replace('hiker://empty##','').split('#')[0];;\n       log(detailUrl);\n       return \"hiker://page/drparse?u=\" + base64Encode(detailUrl)+'#immersiveTheme#'\n   })\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\").split('#')[0]);\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    return it.match(/蓝光|正片|1080P|720P|TC|HD/)\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,\\n            col_type: \\\"text_3\\\"\\n        });\\n    }\\n}\\n\\n//为线路加分割线\\nlet d2 = [];\\nfor (let i = 0; i < d.length; i++) {\\n    d2.push(d[i]);\\n    if (i < d.length - 1) {\\n        let it = d[i];\\n        let t1 = parseInt(clearText(it.title));\\n        let next = d[i + 1];\\n        let t2 = parseInt(clearText(next.title));\\n        if (t2 - t1 > 1 || t1 - t2 > 1) {\\n            d2.push({\\n                col_type: \\\"big_blank_block\\\"\\n            });\\n            d2.push({\\n                col_type: \\\"line_blank\\\"\\n            });\\n            d2.push({\\n                col_type: \\\"big_blank_block\\\"\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d2);\"},{\"col_type\":\"movie_3\",\"name\":\"dr解析\",\"path\":\"drparse\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\").split('#')[0]);\\nMY_URL='hiker://empty##'+url;\\n//log(MY_URL);\\nrequire(config.自动匹配);\\n嗅探();\\nvar 嗅探缓存=1;\\n自动二级(lazy);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"智能TV推送","author":"道长","version":8,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet ip=getIP();\n//log(ip);\nvar d = [];\nd.push({\n    title:'当前ip:'+ip,\n    img:MY_RULE.icon,\n    col_type:'avatar',\n    url:'toast://道长开发，用于海阔dr模板转码网页后推送到TVBOX'\n});\nd.push({\n    title: \"走你\",\n    url: $.toString(() => {\n        if(!input.trim().startsWith('http')){\n            return 'toast://啥都不填，你想干嘛?'\n        }\n        return \"hiker://page/drparse?u=\" + base64Encode(input)+'#immersiveTheme#'\n    }),\n    col_type: \"input\",\n    desc: \"请输入网页二级详情页地址\",\n    pic_url: \"\"\n});\n\nurl = \"http://zjdr.vip/Moviedetail/120997.html\";\nd.push({\n    title: \"电影示例：\" + url,\n    url: \"hiker://page/drparse?u=\" + base64Encode(url)+'#immersiveTheme#',\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nurl = \"https://yanetflix.com/voddetail/56503.html\";\nd.push({\n    title: \"剧集示例：\" + url,\n    url: \"hiker://page/drparse?u=\" + base64Encode(url)+'#immersiveTheme#',\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title:'复制测试云口令',\n    url:'copy://https://pasteme.tyrantg.com/xxxxxx/ivcrtfydhwjeh2qz\\n\\n邀您一起看：安娜贝尔',\n    col_type:'text_1'\n});\nd.push({\n   title:'解析云口令',\n   desc:'在任意普通规则二级点击分享页面到云剪切板，然后到这里粘贴解析',\n   col_type:'text_1',\n   url:$('{{clipboard}}','请输入二级界面云口令').input(()=>{\n       input=input.trim();\n       //log(input);\n       if(!input.startsWith('http')){\n           return 'toast://云口令有误'\n       }\n       let url=input.split('\\n')[0];\n       log(url);\n       let text=parsePaste(url);\n       //log(text);\n       if(!/page_detail/.test(text)){\n           return 'toast://无法解析非二级页面分享的云口令！'\n       }\n       let json=base64Decode(text.split('@@')[1]);\n       json=JSON.parse(json);\n       //log(json);\n       let data=JSON.parse(json.data);\n       let detailUrl=data.url;\n       //log(detailUrl);\n       detailUrl=detailUrl.replace('hiker://empty##','').split('#')[0];;\n       log(detailUrl);\n       return \"hiker://page/drparse?u=\" + base64Encode(detailUrl)+'#immersiveTheme#'\n   })\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"p\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\").split('#')[0]);\\nlet html = request(url);\\nlet alist = pdfa(html, \\\"body&&a\\\");\\nlet arr = alist.map(it => {\\n    return {\\n        //html: it,\\n        text: pdfh(it, \\\"a&&Text\\\"),\\n        href: pd(it, \\\"a&&href\\\", url)\\n    }\\n});\\n//log(arr);\\nlet debug = false;\\n\\nfunction clearText(it) {\\n    return it.replace(/第|集|章/g, \\\"\\\");\\n}\\n\\nfunction isMovie(it) {\\n    if (it == null || it.text == null) {\\n        return false;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\" || it.length > 8) {\\n        return false;\\n    }\\n    return it.match(/蓝光|正片|1080P|720P|TC|HD/)\\n}\\n\\nfunction isChapter(it, pre, next) {\\n    //判断是不是电影\\n    if (isMovie(it)) {\\n        return true;\\n    }\\n    return isChapter0(it, pre) || isChapter0(it, next);\\n}\\n\\nfunction getChapterNum(it) {\\n    if (it == null || it.text == null) {\\n        return -1;\\n    }\\n    it = it.text || \\\"\\\";\\n    if (it == \\\"\\\") {\\n        return -1;\\n    }\\n    it = clearText(it);\\n    it = parseInt(it);\\n    if (isNaN(it)) {\\n        return -1;\\n    }\\n    return it;\\n}\\n\\nfunction isChapter0(it, brother) {\\n    /*if (debug) {\\n        log({\\n            it: it,\\n            brother: brother\\n        });\\n    }*/\\n    it = getChapterNum(it);\\n    //if (debug) log(it);\\n    if (it < 0) {\\n        return false;\\n    }\\n    brother = getChapterNum(brother);\\n    //if (debug) log(brother);\\n    if (brother < 0) {\\n        return false;\\n    }\\n    return it - brother < 2 && it - brother > -2;\\n}\\n\\nfor (let i = 0; i < arr.length; i++) {\\n    let it = arr[i];\\n    let t = it.text;\\n    if (!it.href || it.href == \\\"\\\") {\\n        continue;\\n    }\\n    let pre = i == 0 ? null : arr[i - 1];\\n    let next = i == (arr.length - 1) ? null : arr[i + 1];\\n    if (isChapter(it, pre, next)) {\\n        d.push({\\n            title: t,\\n            url: \\\"video://\\\" + it.href,\\n            col_type: \\\"text_3\\\"\\n        });\\n    }\\n}\\n\\n//为线路加分割线\\nlet d2 = [];\\nfor (let i = 0; i < d.length; i++) {\\n    d2.push(d[i]);\\n    if (i < d.length - 1) {\\n        let it = d[i];\\n        let t1 = parseInt(clearText(it.title));\\n        let next = d[i + 1];\\n        let t2 = parseInt(clearText(next.title));\\n        if (t2 - t1 > 1 || t1 - t2 > 1) {\\n            d2.push({\\n                col_type: \\\"big_blank_block\\\"\\n            });\\n            d2.push({\\n                col_type: \\\"line_blank\\\"\\n            });\\n            d2.push({\\n                col_type: \\\"big_blank_block\\\"\\n            });\\n        }\\n    }\\n}\\n\\nsetResult(d2);\"},{\"col_type\":\"movie_3\",\"name\":\"dr解析\",\"path\":\"drparse\",\"rule\":\"js:\\nvar d = [];\\nlet url = base64Decode(getParam(\\\"u\\\").split('#')[0]).trim();\\nif(!url.startsWith('http')){\\n    setResult({\\n        title:'调用链接有误',\\n        url:'toast://'+url,\\n        desc:url,\\n        col_type:'text_1'\\n    });\\n}else{\\nMY_URL='hiker://empty##'+url;\\n//log(MY_URL);\\nrequire(config.自动匹配);\\n嗅探();\\nvar 嗅探缓存=1;\\n自动二级(lazy);\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/337.png"},{"last_chapter_rule":"","title":"TVB日志","author":"道长","version":5,"type":"tool","url":"hiker://empty##","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet ip = getIP();\nlet logtail_file = 'hiker://files/rules/dzHouse/html/日志网页.html';\nif(!fileExist(logtail_file)){\n    let logtail_html = JSON.parse(fetch('hiker://page/logtail.html')).rule;\n    writeFile(logtail_file, logtail_html);\n}\nd.push({\n    title:'当前ip:'+ip,\n    img:MY_RULE.icon,\n    col_type:'avatar',\n    url:$('#noLoading#').lazyRule((logtail_file)=>{\n        let logtail_html = JSON.parse(fetch('hiker://page/logtail.html')).rule;\n        writeFile(logtail_file, logtail_html);\n        return 'toast://道长开发，用于海阔查看tvbox的实时日志,已拉取日志html文件'\n    },logtail_file)\n});\nconst {color, small,api} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nfunction 推送组件(d,obj){ // {}\n    obj = obj || {line:'both'}; // top,bottom,none\n    let tv_col = obj.col_type||'icon_small_3';\n    if(obj.line&&/both|top/.test(obj.line)){\n        d.push({\n            col_type:'line'\n        });\n    }\n    d.push({\n        title: '扫描',\n        img: 'https://lanmeiguojiang.com/tubiao/messy/25.svg',\n        url: $(['极速', '全部','手动输入'], 2, '局域网TVBOX扫描模式').select(() => {\n            let sniffer_file = 'hiker://files/rules/dzHouse/tvbox/辅助嗅探.json';\n            if(/极速|全部/.test(input)){ //https://gitcode.net/qq_32394351/dr_py/-/raw/master/txt/json/sniffer.json\n                let single_back = /极速/.test(input);\n                let ip = getIP();\n                if(ip.startsWith('0')){\n                    return 'toast://当前设备未接入局域网,请连接wifi后再试!'\n                }\n                showLoading(`${input}扫描附近TVB,请稍等...`);\n                // log(ip);\n                let ip_base = ip.split('.').slice(0, -1).join('.');\n                let url_list = [];\n                for (let i = 1; i < 256; i++) {\n                    url_list.push(`http://${ip_base}.${i}:9978/`);\n                }\n                // 倒着扫描更快\n                url_list.reverse();\n                // log(url_list);\n                let htmlUrl = [];\n                let task = function (obj) {\n                    return request(obj.url, obj.options);\n                };\n                url_list.forEach(it => {\n                    htmlUrl.push({\n                        url: it,\n                        options: {\n                            headers: {\n                                \"content-type\": \"charset=utf-8\"\n                            },\n                            timeout: 250,\n                            // method:'GET'\n                        }\n                    });\n                });\n                let tasks = htmlUrl.map((it, idex) => {\n                    return {\n                        func: task,\n                        param: it,\n                        // id: it.url\n                        id: '' + idex\n                    }\n                });\n                let bhtml = [];\n                let count = tasks.length;\n                be(tasks, {\n                    func: function (obj, id, error, taskResult) {\n                        // bhtml.push(taskResult);\n                        bhtml.push({html: taskResult, id: id});\n                        count = count - 1;\n                        if (single_back && /推送/.test(taskResult)) {\n                            hideLoading();\n                            return \"break\";\n                        } else if (count > 0) {\n                            showLoading(`${input}扫描中，剩余：${count}`);\n                        } else {\n                            hideLoading();\n                        }\n                    }\n                });\n                // let bhtml = bf(htmlUrl);\n                let tvbs = [];\n                for (let j in bhtml) {\n                    if (/推送/.test(bhtml[j].html)) {\n                        // tvbs.push(url_list[j]);\n                        tvbs.push(url_list[parseInt(bhtml[j].id)]);\n                    }\n                }\n                // log(tvbs);\n                hideLoading();\n                let tvb_info = {\n                    now: tvbs[0],\n                    lists: tvbs,\n                };\n                writeFile('hiker://files/rules/dzHouse/tvbox/推送地址.json', JSON.stringify(tvb_info));\n                return `toast://${input}扫描完毕,发现附近${tvbs.length}个tvbox软件并自动连接第1个设备`\n            }else if(/手动输入/.test(input)){\n                let ip = getIP();\n                let api = 'http://'+ip+':9978/';\n                return $(api,'请手动输入地址').input(()=>{\n                    let cpath = 'hiker://files/rules/dzHouse/tvbox/推送地址.json';\n                    let tvb_info;\n                    try {\n                        tvb_info = JSON.parse(fetch(cpath));\n                    } catch (e) {\n                        tvb_info = {};\n                    }\n                    tvb_info.now = input;\n                    if(Array.isArray(tvb_info.lists)){\n                        if(!tvb_info.lists.includes(input)){\n                            tvb_info.lists.push(input);\n                        }\n                    }else{\n                        tvb_info.lists = [input];\n                    }\n                    writeFile(cpath, JSON.stringify(tvb_info));\n                    // copy(tvb_info.now);\n                    return 'toast://已添加并连接设备:'+input\n                });\n            }\n        }),\n        col_type: tv_col\n    });\n    d.push({\n        title: '连接',\n        img: 'https://lanmeiguojiang.com/tubiao/messy/37.svg',\n        url: $('#noLoading#').lazyRule((color) => {\n            let tvb_info;\n            try {\n                tvb_info = JSON.parse(fetch('hiker://files/rules/dzHouse/tvbox/推送地址.json'));\n            } catch (e) {\n                return '本地未存在历史扫描结果,无法设置,请扫描后再试'\n            }\n            if (!tvb_info.lists || !Array.isArray(tvb_info.lists) || tvb_info.lists.length < 1) {\n                return '本地历史扫描结果有误,请重新扫描'\n            }\n            let tvbs = tvb_info.lists.map(it => it !== tvb_info.now ? it : color(it, '#09c11b'));\n            return $(tvbs, 1, '请选择要推送的TVBOX设备').select((tvb_info) => {\n                if (input.includes('color')) {\n                    copy(tvb_info.now);\n                    return 'hiker://empty'\n                }\n                tvb_info.now = input;\n                writeFile('hiker://files/rules/dzHouse/tvbox/推送地址.json', JSON.stringify(tvb_info));\n                copy(tvb_info.now);\n                return 'toast://已设置推送地址为:' + input\n            }, tvb_info);\n        }, color),\n        col_type: tv_col\n    });\n    d.push({\n        title: '查看日志',\n        img: 'https://lanmeiguojiang.com/tubiao/more/337.png',\n        url: $('#noLoading#').lazyRule((logtail_file) => {\n            let tvb_info;\n            try {\n                tvb_info = JSON.parse(fetch('hiker://files/rules/dzHouse/tvbox/推送地址.json'));\n            } catch (e) {\n                log(e.message);\n                return 'toast://查看日志失败,请扫描并连接设备后再试'\n            }\n            if (!tvb_info.lists || !Array.isArray(tvb_info.lists) || tvb_info.lists.length < 1) {\n                return 'toast://本地历史扫描结果有误,请重新扫描'\n            }\n            let ws_url = tvb_info.now.replace('http:','ws:')+'ws';\n            putVar('WSURL',ws_url);\n            let x5_app=getPath(logtail_file);\n            refreshX5WebView(x5_app);\n            // refreshX5Desc('360&&list');\n            return 'toast://web组件刷新成功\\n'+ws_url\n        },logtail_file),\n        col_type: tv_col\n    });\n    if(obj.line&&/both|bottom/.test(obj.line)){\n        d.push({\n            col_type:'line'\n        });\n    }\n    return d\n}\n推送组件(d);\nlet x5_app=getPath(logtail_file);\nd.push({\n    title:'tvbox日志',\n    url:x5_app,\n    extra:{ua:MOBILE_UA},\n    col_type:'x5_webview_single',\n    desc:'585&&list',\n});\nd.push({\n    col_type:'line'\n});\nd.push({\n    title:'到底了!!!上面是日志区域',\n    col_type:'text_center_1',\n    url:'hiker://empty'\n});\nsetResult(d);","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"日志网页\",\"path\":\"logtail.html\",\"rule\":\"<!DOCTYPE html>\\n<html>\\n<head>\\n  <meta charset=\\\"utf-8\\\">\\n  <link rel=\\\"shortcut icon\\\" href=\\\"/favicon.ico\\\" type=\\\"image/x-icon\\\">\\n  <meta http-equiv=\\\"Cache-Control\\\" content=\\\"no-siteapp;no-transform\\\">\\n  <meta name=\\\"applicable-device\\\" content=\\\"pc,mobile\\\">\\n  <meta name=\\\"viewport\\\" content=\\\"width=device-width, initial-scale=1\\\">\\n  <meta http-equiv=\\\"Content-Type\\\" content=\\\"text/html;charset=utf-8\\\">\\n  <title>tvbox实时日志</title>\\n    <script src=\\\"https://cdn.bootcdn.net/ajax/libs/jquery/3.6.1/jquery.min.js\\\"></script>\\n    <link href=\\\"https://cdn.bootcdn.net/ajax/libs/jquery-confirm/3.3.4/jquery-confirm.min.css\\\" rel=\\\"stylesheet\\\">\\n    <script src=\\\"https://cdn.bootcdn.net/ajax/libs/jquery-confirm/3.3.4/jquery-confirm.min.js\\\"></script>\\n  <style>\\n    .support{\\n      background: #5dc2f1;\\n      color: #FFFFFF;\\n      text-align: center;\\n    }\\n    #title{\\n      background: #000000;\\n      color: #5dc2f1;\\n      padding:3px 1px 3px 1px;\\n    }\\n    #height{\\n      margin-left: 10px;\\n    }\\n    #msg{\\n      /*white-space: pre;*/\\n      text-align: left;\\n      /*word-wrap: break-word;*/\\n      /*word-break: normal;*/\\n    }\\n    #log-container{\\n      overflow-y: scroll;\\n      background: #333;\\n      color: #aaa;\\n      /*上右下左*/\\n      padding:1px 2px 10px 2px;\\n    }\\n    .btn{\\n      background: #f06e57;\\n      color: #FFFFFF;\\n      margin: 0 5px 0 0;\\n      border: 2px solid #aaaaaa;\\n      border-radius: 2px;\\n    }\\n    .input{\\n      width: 70%;\\n      height: 20px;\\n    }\\n\\n    #inputMsg{\\n      background: #333;\\n      padding:5px 1px 5px 1px;\\n    }\\n    #inputMsg span{\\n      color:#5dc2f1 ;\\n    }\\n  </style>\\n</head>\\n<body>\\n<div class=\\\"support\\\"></div>\\n<div id=\\\"title\\\">\\n  <strong>tvbox实时日志 by道长</strong>\\n  <span id=\\\"height\\\"></span>\\n  <button id=\\\"clearLog\\\" class=\\\"btn\\\">清空日志</button>\\n  <button id=\\\"showInput\\\" class=\\\"btn\\\">显示输入框</button>\\n  <button id=\\\"clearInput\\\" class=\\\"btn\\\">清空输入框</button>\\n  <button id=\\\"autoClearInput\\\" class=\\\"btn\\\">自动清空</button>\\n</div>\\n<div id=\\\"inputMsg\\\">\\n  <span>输入</span>\\n  <input type=\\\"text\\\" class=\\\"input\\\">\\n  <button id=\\\"sendMsg\\\" class=\\\"btn\\\">发送</button>\\n</div>\\n<div id=\\\"log-container\\\">\\n  <div id=\\\"msg\\\">\\n  </div>\\n</div>\\n<div class=\\\"support\\\"></div>\\n\\n<script>\\n  fy_bridge_app.log('进入了网页...');\\n  if(typeof(fba)=='undefined'||!fba){\\n    try {\\n      eval(fy_bridge_app.getInternalJs());\\n    }catch (e) {\\n      fy_bridge_app.log('初始化 getInternalJs 错误:'+e.message)\\n    }\\n  }\\n  window.request = window.request00 || window.request;\\n  Date.prototype.Format = function (fmt) { // author: meizz\\n    var o = {\\n      \\\"M+\\\": this.getMonth() + 1, // 月份\\n      \\\"d+\\\": this.getDate(), // 日\\n      \\\"h+\\\": this.getHours(), // 小时\\n      \\\"m+\\\": this.getMinutes(), // 分\\n      \\\"s+\\\": this.getSeconds(), // 秒\\n      \\\"q+\\\": Math.floor((this.getMonth() + 3) / 3), // 季度\\n      \\\"S\\\": this.getMilliseconds() // 毫秒\\n    };\\n    if (/(y+)/.test(fmt))\\n      fmt = fmt.replace(RegExp.$1, (this.getFullYear() + \\\"\\\").substr(4 - RegExp.$1.length));\\n    for (var k in o)\\n      if (new RegExp(\\\"(\\\" + k + \\\")\\\").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : ((\\\"00\\\" + o[k]).substr((\\\"\\\" + o[k]).length)));\\n    return fmt;\\n  }\\n  function getWsUrl() {\\n    let host = location.host;\\n    let hostname = location.hostname;\\n    let protocol = 'ws:';\\n    let port = location.port;\\n    let pathname = '/ws';\\n    let ws_port = parseInt(port)+1;\\n    return protocol+'//'+host+pathname;\\n    // return protocol+'//'+hostname+':'+ws_port+pathname;\\n  }\\n  // const websocketUrl = 'ws://localhost:8080/log';\\n  const websocketUrl = fba.getVar('WSURL')||getWsUrl();\\n  fba.log('网页获取ws服务器地址:'+websocketUrl);\\n  const test_msg = 0;\\n  const test_count = 10;\\n  const reconnect_time = 5000;\\n  var lockReconnect = false;//避免重复连接\\n  var ws = null; //WebSocket的引用\\n  var showInput;\\n  var autoClearInput;\\n  showInput = !!(localStorage.showInput && localStorage.showInput === '1');\\n  autoClearInput = !!(localStorage.autoClearInput && localStorage.autoClearInput === '1');\\n  var btn_showInput = $('#showInput');\\n  var btn_autoClearInput = $('#autoClearInput');\\n  if(!showInput){\\n    $('#inputMsg').hide();\\n    $('#clearInput').hide();\\n    $('#autoClearInput').hide();\\n    btn_showInput.text('显示输入框');\\n    btn_showInput[0].style.borderStyle = 'outset';\\n  }else{\\n    $('#inputMsg').show();\\n    $('#clearInput').show();\\n    $('#autoClearInput').show();\\n    btn_showInput.text('隐藏输入框');\\n    btn_showInput[0].style.borderStyle = 'inset';\\n  }\\n  if(autoClearInput){\\n    btn_autoClearInput.text('自动清空');\\n    btn_autoClearInput[0].style.borderStyle = 'inset';\\n  }else{\\n    btn_autoClearInput.text('手动清空');\\n    btn_autoClearInput[0].style.borderStyle = 'outset';\\n  }\\n  function initHeight(){//动态刷新日志框高度自适应设备\\n    var div_height = window.screen.availHeight;\\n    // var height = Math.ceil(div_height*0.75);\\n    var height = 500;\\n    if(showInput){\\n      height-=35;\\n    }\\n    $('#height').text('日志窗口高度:'+height);\\n    $(\\\"#log-container\\\").height(height);\\n  }\\n  initHeight();\\n  // window.onresize = () =>{\\n  //   //只要窗口高度发生变化，就会进入这里面，在这里就可以写，回到聊天最底部的逻辑\\n  //   initHeight();\\n  // }\\n  function checkLoading(){// loading用,无实际意义\\n    $.confirm({\\n      closeIcon: true,\\n      title: '请稍等',\\n      content: '正在检查websocket连接...',\\n      autoClose: 'ok|2000',\\n      buttons: {\\n        ok: {\\n          text: '确定',\\n          action: function () {\\n            console.log('检查完毕,一切正常');\\n          }\\n        },\\n        cancel: {\\n          text: '取消',\\n          action(){\\n            // $.alert('已取消');\\n          }\\n        }\\n      }\\n    });\\n  }\\n  function checkSupport() {//检查浏览器是否支持websocket\\n    var sp = $(\\\".support\\\");\\n    if (window.WebSocket) {\\n      sp.html('您的浏览器支持多个websocket通信的实例');\\n      return true;\\n    }\\n    else {\\n      sp.html('您的浏览器不支持多个websocket通信的实例,建议使用火狐浏览器或者谷歌浏览器');\\n      return false;\\n    }\\n  }\\n\\n  function createWebSocket(){//创建ws连接并监听ws事件\\n    let can_ws = checkSupport();\\n    // console.log('can_ws:',can_ws);\\n    if(can_ws){\\n      // 指定websocket路径\\n      try {\\n        fba.log('开始连接:'+websocketUrl);\\n        ws = new WebSocket(websocketUrl);\\n        initEventHandle();\\n      }catch (e) {\\n        ws = null;\\n        reconnect();\\n      }\\n    }\\n  }\\n\\n  /**\\n   * 自动重连\\n   */\\n  function reconnect() {\\n    if(!lockReconnect){\\n      lockReconnect = true;\\n      //没连接上会一直重连，设置延迟避免请求过多\\n      setTimeout(function () {\\n        createWebSocket(websocketUrl);\\n        addMsg(\\\"正在重连，当前时间\\\"+new Date().Format(\\\"yyyy-MM-dd hh:mm:ss\\\"));\\n        lockReconnect = false;\\n      }, reconnect_time); //这里设置重连间隔(ms)\\n    }\\n  }\\n  function initEventHandle(){\\n    ws.onopen = function(event) {\\n      addMsg(\\\"websocket连接成功，当前时间\\\"+new Date().Format(\\\"yyyy-MM-dd hh:mm:ss\\\"));\\n    }\\n    ws.onmessage = function(event) {\\n      // 接收服务端的实时日志并添加到HTML页面中\\n      let msg = event.data;\\n      addMsg(msg);\\n    };\\n    ws.onclose = function(event) {\\n      addMsg('websocket连接关闭');\\n      ws = null;\\n      reconnect();\\n    };\\n    ws.onerror = function(event){\\n      //如果出现连接、处理、接收、发送数据失败的时候触发onerror事件\\n      //     let msg = \\\"websocket发生错误:\\\"+event.data;\\n      let msg = \\\"websocket发生错误,连接状态码:\\\"+ws.readyState;\\n      // console.log(event);\\n      console.log(msg);\\n      addMsg(msg);\\n      ws = null;\\n      reconnect();\\n    }\\n  }\\n  createWebSocket();\\n  function addMsg(msg){\\n    // 将Msg添加到日志框里\\n    if(msg&&msg.trim()&&!msg.endsWith('\\\\n')){\\n      msg+='\\\\n';\\n    }\\n    msg = msg.replaceAll('\\\\n','</br>');\\n    $(\\\"#log-container div\\\").append(msg);\\n    // 滚动条滚动到最低部\\n    $(\\\"#log-container\\\").scrollTop($(\\\"#log-container div\\\").height() - $(\\\"#log-container\\\").height());\\n  }\\n  $(document).ready(function() {\\n    checkLoading();\\n    addMsg('websocket初始化中,当前ws服务地址=>  '+websocketUrl);\\n    if(test_msg){\\n      for(let i=0;i<test_count;i++){\\n        addMsg('2022-11-15 10:12:50 - E:\\\\\\\\python\\\\\\\\mypython\\\\\\\\dr_py\\\\\\\\lib\\\\\\\\site-packages\\\\\\\\gevent\\\\\\\\pywsgi.py[line:1226]:INFO:dr.log -- 127.0.0.1 - - [2022-11-15 10:12:50] \\\"GET /static/img/favicon.svg HTTP/1.1\\\" 200 155239 0.001139\\\\n');\\n      }\\n    }\\n\\n    $('#clearLog').click(function () {\\n      $.confirm({\\n        title: '确认',\\n        content: '确认清空日志?',\\n        type: 'green',\\n        icon: 'glyphicon glyphicon-question-sign',\\n        buttons: {\\n          ok: {\\n            text: '确认',\\n            btnClass: 'btn-primary',\\n            action: function() {\\n              $(\\\"#log-container div\\\").text('');\\n            }\\n          },\\n          cancel: {\\n            text: '取消',\\n            btnClass: 'btn-primary'\\n          }\\n        }\\n      });\\n    });\\n\\n    $('#clearInput').click(function (){\\n      $('.input').val('');\\n    });\\n\\n    $('#showInput').click(function (){\\n      // console.log(localStorage.showInput);\\n      if(!showInput){\\n        showInput = true;\\n        localStorage.showInput = '1';\\n        $('#inputMsg').show();\\n        $('#clearInput').show();\\n        $('#autoClearInput').show();\\n        btn_showInput.text('隐藏输入框');\\n        btn_showInput[0].style.borderStyle = 'inset';\\n      }else{\\n        showInput = false;\\n        localStorage.showInput = '0';\\n        $('#inputMsg').hide();\\n        $('#clearInput').hide();\\n        $('#autoClearInput').hide();\\n        btn_showInput.text('显示输入框');\\n        btn_showInput[0].style.borderStyle = 'outset';\\n      }\\n      initHeight();\\n    });\\n\\n    $('#autoClearInput').click(function (){\\n      if(!autoClearInput){\\n        autoClearInput = true;\\n        localStorage.autoClearInput = '1';\\n        btn_autoClearInput.text('自动清空');\\n        btn_autoClearInput[0].style.borderStyle = 'inset';\\n      }else{\\n        autoClearInput = false;\\n        localStorage.autoClearInput = '0';\\n        btn_autoClearInput.text('手动清空');\\n        btn_autoClearInput[0].style.borderStyle = 'outset';\\n      }\\n    });\\n\\n    $('#sendMsg').click(function (){\\n      let text_input = $('.input');\\n      let msg = text_input.val();\\n      if(msg){\\n        if(ws){\\n          addMsg('主动发送文本消息:'+msg);\\n          ws.send(msg);\\n          if(autoClearInput){\\n            text_input.val('');\\n          }\\n        }else{\\n          addMsg('ws未正常连接,待发送消息无效:'+msg);\\n        }\\n      }\\n    });\\n  });\\n</script>\\n</body>\\n</html>\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/337.png"},{"last_chapter_rule":"","title":"云口令工具箱","author":"小棉袄🌞","version":6,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"蓝奏网盘规则云口令\",\n    url: \"https://www.lanzoux.com/\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"生成\",\n    url: $.toString(() => {\n        let u = input.split(\"@\");\n        let rule = u[0];\n        let url = u[1];\n        let h = \"云口令，\" + rule + \"，复制整条口令打开软件即可导入\\n\";\n        let r = base64Encode($.toString(() => {\n            let da = input.match(/(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/)[0]\n            if (da.indexOf(\"com/tp/\") == -1) {\n                da = da.replace(\"com/\", \"com/tp/\");\n            }\n            let u = 'https://developer.lanzoug.com/file/' + request(da).match(/'(\\?.*?)'/)[1]\n            var j = request(u, {\n                redirect: false,\n                withHeaders: true\n            })\n            let k = JSON.parse(j).headers.location[0]\n            return request(k);\n        }));\n        return \"copy://\" + h + url + \"@import=js:eval(base64Decode('\" + r + \"'))\";\n    }),\n    col_type: \"input\",\n    desc: \"请输入规则名@蓝奏云地址\",\n    pic_url: \"\"\n});\n\n\n\nd.push({\n    title: \"坚果云规则云口令\",\n    url: \"https://www.jianguoyun.com\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"生成\",\n    url: $.toString(() => {\n        let u = input.split(\"@\");\n        let rule = u[0];\n        let url = u[1];\n        let h = \"云口令，\" + rule + \"，复制整条口令打开软件即可导入\\n\";\n        let r = $.toString(() => {\n            let k = input.split(\"/p/\")[1];\n            let u = \"https://www.jianguoyun.com/d/ajax/pubPreviewLink?key=\" + k + \"&pdfviewer=true&_=\" + new Date().getTime();\n            let j = request(u);\n            k = \"https://www.jianguoyun.\" + JSON.parse(j).url;\n            return request(k);\n        });\n        return \"copy://\" + h + url + \"@import=js:\" + r;\n    }),\n    col_type: \"input\",\n    desc: \"请输入规则名@坚果云地址\",\n    pic_url: \"\"\n});\n\n\nd.push({\n    title: \"羊驼网盘规则云口令\",\n    url: \"https://www.alpacadisk.com/\",\n    col_type: \"text_center_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"生成\",\n    url: $.toString(() => {\n        let u = input.split(\"@\");\n        let rule = u[0];\n        let url = u[1];\n        let h = \"云口令，\" + rule + \"，复制整条口令打开软件即可导入\\n\";\n        let r = $.toString(() => {\n            let k = input.replace(\"/shared/\", \"/api/files/\") + \"/public\";\n            return request(JSON.parse(request(k)).file_url);\n        });\n        return \"copy://\" + h + url + \"@import=js:\" + r;\n    }),\n    col_type: \"input\",\n    desc: \"请输入规则名@羊驼网盘地址\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"使用说明<br>长按规则名称弹出菜单选择更多分享，点击文件形式分享，将文件上传到对应的网盘，然后把链接分享到这里粘贴使用\",\n    col_type: \"rich_text\",\n});\n\nd.push({\n    title: \"云口令导入配置最佳实践<br>规则用子页面写好导入逻辑，云口令代码中调用子页面<br>\" +\n        \"如云口令：<br>http://xx.cn@import=js:$.require('hiker://page/import?rule=小程序')\" +\n        \"<br>子页面：<br>log(input);<br>'toast://已从云口令新增一个X配置'\",\n    col_type: \"rich_text\",\n});\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"奈菲1985·","author":"发粪涂墙&猫猫&哟","version":5,"type":"tool","url":"hiker://empty##https://www.1985.one/vodshow/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nconst 一级定位 = 'body&&.library-list'\nconst 二级定位 = ''\nconst 统一定位 = 'body&&a:not(:matches(首页|看|专题|APP|剧情|地区|年份|字母|排序))'\n\n\nconst page = MY_PAGE\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\n\n\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', +page+'---.html')\nlog(true_url)\n}\n\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': MOBILE_UA /*PC_UA*/\n    }\n})\n\n\nrequire('hiker://page/dtfl')\nrequire('hiker://page/auto')\nautoPage(html)\nsetResult(d)","searchFind":"js:\nrequire(\"hiker://page/auto\");\nautoPage(getResCode())","search_url":"https://www.1985.one/vodsearch/page/fypage/wd/**.html","group":"工具","detail_col_type":"movie_3","detail_find_rule":"js:\n//var lazy = '';\n\nvar 线路列表 = '';\nvar 线路标签 = '';\nvar 集数列表 = '';\nvar 集数标签 = '';\nvar 定位简介 = '';\n\n\nvar html = fetch(MY_URL, {\n    headers: {\n        'User-Agent': PC_UA//MOBILE_UA\n    }\n})\nrequire(\"hiker://page/auto\");\nrequire(\"hiker://page/lazy\");\nautoPage(html)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"AA.一级stui-vodlist\",\"path\":\"stui-vodlist\",\"rule\":\"var 一级列表 = '.stui-vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级图片 = '.lazyload||a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级.b\",\"path\":\".b\",\"rule\":\"var 线路列表1 = 'body&&.playlist';\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc||.detail-content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索stui-vodlist__media\",\"path\":\"stui-vodlist__media\",\"rule\":\"var 一级列表 = '.stui-vodlist__media&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h3&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级myui-vodlist\",\"path\":\"myui-vodlist\",\"rule\":\"var 一级列表 = '.myui-vodlist&&li'\\nvar 一级标题 = 'h4&&Text'\\nvar 一级描述 = '.pic-tag||.pic-text&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs\",\"path\":\"nav-tabs\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.myui-content__list||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.sketch&&Text';\\n\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索myui-vodlist__media\",\"path\":\"myui-vodlist__media\",\"rule\":\"var 一级列表 = '#searchList&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.pic-text&&Text'\\nvar 一级状态 = '.detail--h4&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist\",\"path\":\"vodlist\",\"rule\":\"var 一级列表 = '.vodlist&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'a&&Text'\\nvar 一级图片 = '.lazyload&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级mo-play-load\",\"path\":\"mo-play-load\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-content&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.sort-item';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.video-info-items,1&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级nav-tabs1\",\"path\":\"nav-tabs1\",\"rule\":\"var 线路列表1 = '.nav-tabs&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist||.b';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc--span&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"BB 二级play_source_tab\",\"path\":\"play_source_tab\",\"rule\":\"var 线路列表1 = '.play_source_tab&&a';\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&#playsx';\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.desc_txt&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级fed-play-item\",\"path\":\"fed-play-item\",\"rule\":\"var 线路列表1 = 'body&&.fed-drop-btns';//arts\\nvar 线路标签1 = 'a&&Text';\\nvar 集数列表1 = 'body&&.fed-play-item';//conts\\nvar 集数标签1 = 'body&&.fed-btns-info';\\nvar 定位简介1 = 'dd&&li,6&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索dl\",\"path\":\"dl\",\"rule\":\"var 一级列表 = 'body&&dl'\\nvar 一级标题 = 'h1&&Text'\\nvar 一级描述 = '.fed-list-remarks&&Text'\\nvar 一级状态 = '.fed-part-esan--span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#Mapping\",\"path\":\"Mapping\",\"rule\":\"js:\\n$.exports = {\\n    \\\"home\\\": [\\n        //\\n\\n        {\\n            keys: [\\\"playfrom\\\"], //2⃣️🆘\\n            url: \\\"playfrom\\\",\\n        },\\n        {\\n            keys: [\\\"index-area\\\"], //1⃣️🆘\\n            url: \\\"index-area\\\",\\n        },\\n        {\\n            keys: [\\\"mo-situ-lazy\\\"], //1⃣️🆘\\n            url: \\\"mo-situ-lazy\\\",\\n        },\\n        {\\n            keys: [\\\"classification-ul\\\"], //1⃣️🆘\\n            url: \\\"classification-ul\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist_thumb\\\"], //1⃣️🆘https://www.qcsvip.com/index.php/vod/play/id/216245/sid/3/nid/1.html\\n            url: \\\"vodlist_thumb\\\",\\n        },\\n        {\\n            keys: [\\\" b \\\"],\\n            url: \\\".b\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\"],\\n            url: \\\"nav-tabs\\\",\\n        },\\n        {\\n            keys: [\\\"myui-content__list\\\"],\\n            url: \\\"myui-content__list\\\",\\n        },\\n        {\\n            keys: [\\\"nav-tabs\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"nav-tabs1\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"h3\\\",\\\"stui-content__playlist\\\"],\\n            url: \\\"h3\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"myui-vodlist \\\"],\\n            url: \\\"myui-vodlist\\\",\\n        },\\n        {\\n            keys: [\\\"mo-movs-item\\\"],\\n            url: \\\"mo-movs-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-tab-item\\\"],\\n            url: \\\"module-tab-item\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"stui-vodlist \\\"],\\n            url: \\\"stui-vodlist\\\",\\n            //     allKey: true,\\n        },\\n        {\\n            keys: [\\\"play_source_tab\\\"],\\n            url: \\\"play_source_tab\\\",\\n        },\\n        {\\n            keys: [\\\"fed-play-item\\\"],\\n            url: \\\"fed-play-item\\\",\\n        },\\n        {\\n            keys: [\\\"module-items\\\"],\\n            url: \\\"module-items\\\",\\n        },\\n        {\\n            keys: [\\\"vodlist \\\",\\\"lazyload\\\"],\\n            url: \\\"vodlist\\\",\\n            allKey: true,\\n        },\\n        {\\n            keys: [\\\"mo-play-load\\\"],\\n            url: \\\"mo-play-load\\\",\\n        },\\n        {\\n            keys: [\\\"fed-list-title\\\"],\\n            url: \\\"fed-list-title\\\",\\n            //allKey: true,\\n        },\\n        {\\n            keys: [\\\"pack-ykpack\\\\\\\"\\\"],\\n            url: \\\"pack-ykpack\\\",\\n        },/*\\n        {\\n            keys: [\\\"item\\\"],\\n            url: \\\"item\\\",\\n        },*/\\n        {\\n            keys: [\\\"data_list\\\"],\\n            url: \\\"data_list\\\",\\n        },\\n    ],\\n    \\\"search\\\": [\\n        // search 里写搜索的子页面映射\\n        {\\n            keys: [\\\"stui-vodlist__media\\\"],\\n            url: \\\"stui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"myui-vodlist__media\\\"],\\n            url: \\\"myui-vodlist__media\\\",\\n        },\\n        {\\n            keys: [\\\"module-search-item\\\"],\\n            url: \\\"module-search-item\\\",\\n        },\\n        {\\n            keys: [\\\"dl \\\"],\\n            url: \\\"dl\\\",\\n            allKey: true,\\n        },\\n    ]\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"#auto\",\"path\":\"auto\",\"rule\":\"js:\\n// 获取该关键字的子页面代码\\nfunction getPageSource(key) {\\n    let src = request(\\\"hiker://page/\\\" + key);\\n    //log(src)\\n    src = JSON.parse(src).rule;\\n    return src;\\n}\\nconst sourceMap = $.require(\\\"hiker://page/Mapping\\\");\\n\\nfunction autoPage(htmlsrc, type) {\\n    let pageRules = [],\\n        htmlSource = htmlsrc,\\n        pageType,\\n        mMapping;\\n    if (type !== undefined) {\\n        pageType = type;\\n    } else {\\n        pageType = MY_TYPE;\\n    }\\n    mMapping = sourceMap[pageType];\\n    if (mMapping === undefined || !Array.isArray(mMapping)) {\\n        throw new Error(\\\"不存在\\\" + pageType + \\\"类型的模板\\\");\\n    }\\n    for (let item of mMapping) {\\n        if (item.allKey) {\\n            if (item.keys.every(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        } else {\\n            if (item.keys.some(key => htmlSource.includes(key))) {\\n                pageRules.push(item);\\n            }\\n        }\\n    }\\n    if (pageRules.length == 0) {\\n        log(\\\"暂无合适模板\\\");\\n        toast('暂无合适模板');\\n    }\\n    for (let pageRule of pageRules) {\\n        log(\\\"正在匹配：\\\" + pageRule.url);\\n        try {\\n            eval.call(null, \\\";(function(){\\\" + getPageSource(pageRule.url) + \\\"})()\\\");\\n            log(\\\"匹配模板成功，正在结束匹配进程\\\");\\n            break;\\n        } catch (e) {\\n            log(\\\"匹配模板错误\\\");\\n            log(e.toString())\\n            log(\\\"正在匹配下一个模板......\\\")\\n            if (pageRule.url == pageRules[pageRules.length - 1].url) {\\n                log(\\\"已匹配到最后一个模板，暂无合适的模板\\\");\\n                toast('全部匹配完成,暂无合适模板');\\n                setResult([]);\\n            }\\n        }\\n    }\\n\\n}\\n$.exports.autoPage = autoPage;\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级pack-ykpack\",\"path\":\"pack-ykpack\",\"rule\":\"var 一级列表 = 'body&&.pack-ykpack'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span,-1&&Text'\\nvar 一级图片 = '.eclazy&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级module-items\",\"path\":\"module-items\",\"rule\":\"var 一级列表 = '.module-items&&.module-item'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = '.module-item-text&&Text'\\nvar 一级图片 = 'img||.lazy&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级module-tab-item\",\"path\":\"module-tab-item\",\"rule\":\"var 线路列表1 = 'body&&.module-tab-item';//arts\\nvar 线路标签1 = 'span&&Text';\\nvar 集数列表1 = 'body&&.scroll-box-y';//conts\\nvar 集数标签1 = 'body&&a';\\nvar 定位简介1 = '.vod_content&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"CC.搜索module-search-item\",\"path\":\"module-search-item\",\"rule\":\"var 一级列表 = 'body&&.module-search-item'\\nvar 一级标题 = 'h3&&Text'\\nvar 一级描述 = '.video-serial&&Text'\\nvar 一级状态 = '.video-info-aux&&Text'\\nvar 一级图片 = 'img&&data-original||data-src'\\nvar 一级链接 = '.video-serial&&href'\\n\\neval(JSON.parse(fetch('hiker://page/SearchFrame', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级item\",\"path\":\"item\",\"rule\":\"var 一级列表 = 'body&&.item'\\nvar 一级标题 = 'img&&alt'\\nvar 一级描述 = 'p&&Text'\\nvar 一级图片 = 'img&&src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级data_list\",\"path\":\"data_list\",\"rule\":\"var 一级列表 = '#data_list&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'em&&Text'\\nvar 一级图片 = 'img&&data-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级h3\",\"path\":\"h3\",\"rule\":\"var 线路列表1 = 'body&&.stui-pannel:has(.stui-content__playlist)';//arts\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.stui-content__playlist';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.detail-sketch||.data,3||#desc&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级fed-list-title\",\"path\":\"fed-list-title\",\"rule\":\"var 一级列表 = '.fed-list-info&&li'\\nvar 一级标题 = '.fed-list-title&&Text'\\nvar 一级描述 = '.fed-text-center&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级myui-content__list\",\"path\":\"myui-content__list\",\"rule\":\"var 线路列表1 = 'body&&.myui-panel-box:has(.myui-content__list)';//arts\\n\\nvar 线路标签1 = 'h3&&Text';\\nvar 集数列表1 = 'body&&.myui-content__list';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.data,4&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#动态分类\",\"path\":\"dtfl\",\"rule\":\"if (MY_PAGE == '1') {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\\n    顺搜(d)\\n}\\nconst empty = \\\"hiker://empty\\\"\\n\\nconst 分类颜色 = '#1a0c45'\\nconst 动态缩小 = ' Shrink '\\nconst 动态扩展 = ' Extend '\\n\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\n\\ntry {\\n    var categories = pdfa(html, 一级定位).concat(pdfa(html, 二级定位))\\n} catch (e) {\\n    var categories = pdfa(html, 一级定位)\\n}\\n\\n//log(html)\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n\\n        title: fold == \\\"1\\\" ? \\\"““””<big><b><font color='#62a6fb'>\\\" + 动态缩小 + \\\"</font></b></big>\\\" : \\\"““””<big><b><font color='#F75D59'>\\\" + 动态扩展 + \\\"</font></b></big>\\\",\\n\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 统一定位);\\n       \\n      if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级mo-movs-item\",\"path\":\"mo-movs-item\",\"rule\":\"var 线路列表1 = 'body&&.mo-movs-btns';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.mo-movs-item';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.mo-tabs-item&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"#一级框架\",\"path\":\"PrimaryTemplate\",\"rule\":\"\\n/*\\nif (MY_PAGE == '1') {\\nclearVar()\\n    d.push({\\n        title: ' search ',\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\" \\\",\\n        col_type: \\\"input\\\"\\n    });\\n    for (var i = 0; i < 2; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        col_type: 'line'\\n    });\\n    for (var i = 0; i < 3; i++) {\\n        d.push({\\n            col_type: \\\"big_blank_block\\\"\\n        })\\n    }\\n}\\n\\n*/\\n\\nlet list = pdfa(html, 一级列表);\\n\\nfor (let j in list) {\\n\\n    var 链接 = pd(list[j], 一级链接)\\n    var 封面 = pd(list[j], 一级图片)\\n    var 标题 = pdfh(list[j], 一级标题)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n    d.push({\\n        title: pdfh(list[j], 一级标题),\\n        desc: pdfh(list[j], 一级描述),\\n        img: pd(list[j], 一级图片) + '@Referer=',\\n        url: pd(list[j], 一级链接), //+'#immersiveTheme#'\\n    });\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级classification-ul🆘\",\"path\":\"classification-ul\",\"rule\":\"var 一级列表 = '.classification-ul&&li'\\nvar 一级标题 = '.videoul-title&&Text'\\nvar 一级描述 = '.videoul-tips1&&Text'\\nvar 一级图片 = '.videoul-img&&lay-src'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级mo-situ-lazy🆘\",\"path\":\"mo-situ-lazy\",\"rule\":\"var 一级列表 = 'body&&li:has(.mo-situ-lazy)'\\nvar 一级标题 = '.mo-situ-name&&Text'\\nvar 一级描述 = '.mo-situ-rema&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级vodlist_thumb🆘\",\"path\":\"vodlist_thumb\",\"rule\":\"var 一级列表 = 'body&&.vodlist_thumb'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'span&&Text'\\nvar 一级图片 = 'a&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"#二级框架\",\"path\":\"SecondaryTemplate\",\"rule\":\"var d = [];\\nvar 标识名称 = ' Web ';\\nvar 标识链接 = MY_URL;\\n\\n\\n\\n/*\\nsetPageTitle('')\\nd.push({\\n        title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Name·</font></big><b></b><small><font color=\\\"#3C3C3C\\\">' + 搜索标签2 + '</font></small></b>',\\n    url: MY_URL,\\n    col_type: 'text_1',\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\n*/\\n\\nif (线路列表 === '') {\\n    var 线路列表2 = 线路列表1\\n} else {\\n    var 线路列表2 = 线路列表\\n}\\nvar arts = pdfa(html, 线路列表2);\\n\\n\\n\\nif (线路标签 === '') {\\n    var 线路标签2 = 线路标签1\\n} else {\\n    var 线路标签2 = 线路标签\\n}\\n\\nvar tabs = [];\\nfor (var i in arts) {\\n\\n    tabs.push(pdfh(arts[i], 线路标签2)\\n\\n        .replace('-官方', '')\\n        .replace('备用资源', '')\\n        .replace('APP专享线路（网站不提供播放）', 'APP专享')\\n        .replace('）', ')')\\n        .replace('（', '(')\\n        .replace('视频', '')\\n        .replace('TV', '')\\n        .replace('线路', '')\\n        .replace('推荐', '')\\n        .replace('-', '')\\n        .replace(' ', '')\\n        .replace(' ', '')\\n        .replace('哔哩哔哩', 'bilibili')\\n        .replace('youku', '优酷')\\n        .replace('qiyi', '爱奇艺')\\n        .replace('qq', '腾讯')\\n        .replace('QQ', '腾讯')\\n        .replace('芒果tv', '芒果')\\n        .replace('mgtv', '芒果')\\n        .replace('pptv', 'PPTV')\\n        .replace('letv', '乐视')\\n        .replace('sohu', '搜狐')\\n        .replace('搜狐TV', '搜狐')\\n        .replace('xigua', '西瓜'))\\n}\\n\\nif (集数列表 === '') {\\n    var 集数列表2 = 集数列表1\\n} else {\\n    var 集数列表2 = 集数列表\\n}\\n\\nif (集数标签 === '') {\\n    var 集数标签2 = 集数标签1\\n} else {\\n    var 集数标签2 = 集数标签\\n}\\n\\nvar conts = parseDomForArray(html, 集数列表2);\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 集数标签2))\\n};\\n\\n\\n\\n/*//这里定位简介\\nfunction 文本取左边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(0, index);\\n    return obj;\\n}\\nfunction 文本取右边(obj, 关键字) {\\n    var index = obj.indexOf(关键字);\\n    obj = obj.substring(index + 1, obj.length);\\n    return obj;\\n}\\nvar desc = parseDomForHtml(html, 定位简介).replace('[收起部分]', '').replace(/\\\\s/g, '');\\nd.push({\\n\\n    title: '剧情简介：',\\n    //定位图片\\n    pic_url: parseDom(html, 定位封面),\\n    //定位标题\\n    desc: '‘‘’’<small><font color=\\\"#ff62a6fb\\\">简介：' + desc.substr(0, 65) + '...</font><small><font color=\\\"#5959AB\\\">查看详情</font></small></small>',\\n    url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n\\n    col_type: 'movie_1_vertical_pic_blur',\\n    extra: {\\n        gradient: true\\n    }\\n});*/\\n\\n\\nvar 搜索标签 = getMyVar(MY_URL)\\nif (搜索标签 === '') {\\n    var 搜索标签2 = '未获取名称'\\n} else {\\n    var 搜索标签2 = 搜索标签\\n}\\n\\nvar title = 搜索标签2\\n\\nd.push({\\n    title: \\\"视界\\\",\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/34.png',\\n    url: 'hiker://search?s=' + title + '&group=①高清',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '云盘汇影',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/79.png',\\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '香情影视',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/68.png',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    col_type: 'icon_small_4',\\n});\\nd.push({\\n    title: '青豆',\\n    pic_url: 'https://lanmeiguojiang.com/tubiao/q/10.png',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    col_type: 'icon_small_4',\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\nd.push({\\n    col_type: 'line'\\n});\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\n\\n\\nvar 定位封面 = getMyVar(MY_URL + '封面')\\nif (定位封面 === '') {\\n    var 定位封面2 = 'https://img1.baidu.com/it/u=3908108656,1474866560&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=888'\\n} else {\\n    var 定位封面2 = 定位封面\\n}\\n\\n\\nd.push({\\n    url: 定位封面2,\\n    desc: '0',\\n    pic_url: 定位封面2,\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\n\\nif (定位简介 === '') {\\n    var 定位简介2 = 定位简介1\\n} else {\\n    var 定位简介2 = 定位简介\\n}\\n\\nvar desc = parseDomForHtml(html, 定位简介2).replace('[收起部分]', '').replace(/\\\\s/g, '');\\n\\nif (desc == '') {\\n    desc = '\\\\nProfile not yet available\\\\n'\\n}\\n\\n\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#1a0c45\\\">Plot·</font></big></b><small><font color=\\\"#3C3C3C\\\">\\\\n\\\\n' + desc.substr(0, 55) + '…</font></small><small><font color=\\\"#5959AB\\\">Details</font></small>',\\n    url: 'hiker://empty#' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    desc: '0',\\n    pic_url: '',\\n    col_type: \\\"card_pic_2\\\",\\n    extra: {\\n        gradient: true\\n    }\\n});\\n\\n\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nd.push({\\n    col_type: 'line'\\n});\\nfor (let i = 0; i < 10; i++) {\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    })\\n}\\nvar obj = {\\n    \\\"腾讯\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/131.svg\\\",\\n    \\\"优酷\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/128.svg\\\",\\n    \\\"奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"爱奇艺\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/130.svg\\\",\\n    \\\"芒果\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/32.svg\\\",\\n    \\\"咪咕\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/134.svg\\\",\\n    \\\"西瓜\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/135.svg\\\",\\n    \\\"搜狐\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/129.svg\\\",\\n    \\\"乐视\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/58.svg\\\",\\n    \\\"风行\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/136.svg\\\",\\n    \\\"PPTV\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/133.svg\\\",\\n    \\\"1905\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/132.svg\\\",\\n    \\\"bilibili\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/20.svg\\\",\\n    \\\"专线\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/141.svg\\\",\\n    \\\"专线2\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/142.svg\\\",\\n};\\n/*\\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\\nvar setup = setupPages(\\\"设置\\\");\\n*/\\n\\nd.push({\\n    title: '‘‘’’<b><big><font color=\\\"#ff6877\\\">' + 标识名称 + '</font></big></b>',\\n    url: 标识链接,\\n    col_type: 'scroll_button'\\n});\\n\\nvar Color2 = \\\"#1a0c45\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color2 + '\\\">' + title + '</front></strong>';\\n}\\n\\n\\nfunction 所有线路(tabs, taburl) {\\n    for (var i in tabs) {\\n        var tabname = tabs[i];\\n        d.push({\\n            //title: tabname,\\n            //img: obj[tabname] || \\\"https://lanmeiguojiang.com/tubiao/movie/137.svg\\\",\\n            //col_type: 'icon_small_3',\\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\\n            col_type: 'scroll_button',\\n            url: $(\\\"#noLoading#\\\").lazyRule((tabname, taburl, i) => {\\n                putMyVar('当前线路名', tabname);\\n                putMyVar(taburl, i)\\n                refreshPage(false);\\n                return 'hiker://empty'\\n            }, tabname, taburl, i)\\n        })\\n    }\\n\\n    d.push({\\n        col_type: 'line_blank'\\n    });\\n}\\n\\nfunction 空() {\\n    for (let i = 0; i < 80; i++) {\\n        d.push({\\n            col_type: \\\"blank_block\\\"\\n        })\\n    }\\n    d.push({\\n        title: \\\"““”” <small><font color='grey'>\\\" + \\\"皆空\\\" + \\\"</font></small>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: 'hiker://empty',\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nfunction 选集列表(lists, index) {\\n    //清除变量\\n    addListener('onClose', $.toString(() => {\\n        clearMyVar('当前线路名');\\n        clearMyVar('分集起');\\n        clearMyVar('分集终');\\n    }))\\n    var list = lists[index];\\n    // 将反序归正\\n    try {\\n        if (pdfh(list[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0] > pdfh(list.slice(-1)[0], \\\"a&&Text\\\").match(/(\\\\d+)/)[0]) list.reverse()\\n    } catch (e) {}\\n    try {\\n        // 线路数大于1，或者集数大于20时，显示正反切换按钮\\n        // if (tabs.length > 1 || list.length > 20) {\\n        if (tabs.length > 0) {\\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\\n            if (getMyVar('选集排序') == '正序') {\\n                var avatar = icon_s + '正序.svg'\\n            } else {\\n                var avatar = icon_s + '反序.svg'\\n            }\\n\\n            d.push({\\n                // title: \\\"<b><font color='#EB9941'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t-- 共 ' + list.length + ' 集' +\\n                //     \\\"</font></small>\\\",\\n                title: \\\"<b><font color='#5959AB'>\\\" + tabs[index] + \\\"</font></b>\\\" + \\\"<small><font color='grey'>\\\" + '\\\\t\\\\t〰️\\\\t\\\\t' + \\\"</font></small>\\\" + \\\"<font color='#5959AB'>\\\" + list.length + '集' + \\\"</font>\\\",\\n                img: obj[tabs[index]] || \\\"https://lanmeiguojiang.com/tubiao/q/4.png\\\",\\n                url: `@lazyRule=.js:if(getMyVar('选集排序')=='正序'){putMyVar('选集排序', '反序');}else{putMyVar('选集排序', '正序')};refreshPage(false);hideLoading();'hiker://empty'`,\\n                col_type: 'avatar'\\n            })\\n\\n            d.push({\\n                col_type: 'line'\\n            });\\n            for (let i = 0; i < 10; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n\\n\\n    function 选集() {\\n        var jm = pdfh(list[i], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\\n        var url = parseDom(list[i], 'a&&href');\\n        if (list.length < 5) {\\n            var col = 'text_2'\\n        } else {\\n            var col = jm.length > 5 ? 'text_2' : 'text_4'\\n        }\\n        d.push({\\n            title: jm,\\n            url: url + lazy,\\n\\n\\n\\n\\n\\n\\n\\n            col_type: col,\\n            extra: {\\n                id: url,\\n                blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4']\\n            }\\n        });\\n    }\\n    try {\\n        // 开始页码分区 选集＞设定集数10个以上才启用选集分页\\n        var 选集数组 = list;\\n        if (选集数组.length > (page_number + 10)) {\\n            //所有集数除以每页集数，有余进整\\n            var total = Math.ceil(选集数组.length / page_number);\\n            var catalogue = []\\n            for (let i = 0; i < total; i++) {\\n                catalogue += i * page_number + ',';\\n                catalogue = catalogue.split(',');\\n            }\\n\\n            for (let i = 0; i < 8; i++) {\\n                d.push({\\n                    col_type: \\\"blank_block\\\"\\n                })\\n            }\\n            //输出分页按钮\\n            var 按钮 = [];\\n            for (var i = 0; i < catalogue.length - 1; i++) {\\n                var total1 = parseInt(catalogue[i]) + 1;\\n                var total2 = parseInt(catalogue[i + 1]);\\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\\n\\n                d.push({\\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((total1, total2) => {\\n                        putMyVar('分集起', total1);\\n                        putMyVar('分集终', total2);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, total1, total2),\\n                    col_type: 'scroll_button'\\n                });\\n                按钮.push(total1 + '-' + total2)\\n            }\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = end - 1; i >= star - 1; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = star - 1; i < end; i++) {\\n                    选集()\\n                }\\n            }\\n            //底部页码                 \\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n\\n            var yema = Math.ceil(end / page_number);\\n            d.push({\\n                title: \\\"““”” <small><small><font color='grey'>\\\" + yema + ' / ' + total + \\\"</font> </small></small>\\\",\\n                col_type: \\\"text_center_1\\\",\\n                url: $(\\\"#noLoading#\\\").lazyRule((按钮) => $(按钮, 3).select(_ => {\\n                    putMyVar('分集起', input.split('-')[0]);\\n                    putMyVar('分集终', input.split('-')[1]);\\n                    refreshPage(false);\\n                    return \\\"toast://载入 \\\" + input + ' 页面 .';\\n                }), 按钮),\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n\\n            //底部操作按钮\\n            if (底部换页 == '开启') {\\n                d.push({\\n                    title: '首页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number) => {\\n                        putMyVar('分集起', '1');\\n                        putMyVar('分集终', page_number);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '上一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) - page_number;\\n                        var e = parseInt(end) - page_number;\\n                        if (end = 选集数组.length) var e = s + page_number - 1;\\n                        if (s < 1) {\\n                            var s = 1;\\n                            var e = page_number;\\n                        }\\n                        if (s > 0) {\\n                            putMyVar('分集起', s);\\n                            putMyVar('分集终', e);\\n                            refreshPage(false);\\n                        }\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '下一页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((star, end, page_number, total, 选集数组) => {\\n                        var s = parseInt(star) + page_number;\\n                        var e = parseInt(end) + page_number;\\n                        if (e > 选集数组.length) {\\n                            var s = (total - 1) * page_number + 1;\\n                            var e = 选集数组.length;\\n                        }\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', e);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, star, end, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n                d.push({\\n                    title: '尾页',\\n                    url: $(\\\"#noLoading#\\\").lazyRule((page_number, total, 选集数组) => {\\n                        var s = (total - 1) * page_number + 1;\\n                        putMyVar('分集起', s);\\n                        putMyVar('分集终', 选集数组.length);\\n                        refreshPage(false);\\n                        return 'hiker://empty'\\n                    }, page_number, total, 选集数组),\\n                    col_type: 'text_4'\\n                });\\n            }\\n        } // 结束选集分页\\n        else {\\n            if (getMyVar('选集排序') == '正序') {\\n                for (var i = list.length - 1; i >= 0; i--) {\\n                    选集()\\n                }\\n            } else {\\n                for (var i = 0; i < list.length; i++) {\\n                    选集()\\n                }\\n            }\\n        }\\n    } catch (e) {\\n        空()\\n    }\\n    // 底部留空\\n    d.push({\\n        title: '\\\\n',\\n        url: 'hiker://empty',\\n        col_type: 'rich_text'\\n    });\\n} //结束选集列表\\n\\n//🤡分页开关设置\\nvar page_number = 50;\\nlet 底部换页 = '开启'; //底部控制按钮\\ntry {\\n    //至少两条线路，或者启用分页才被记录\\n    if (tabs.length > 1 || lists[0].length > (page_number + 10)) {\\n        function 记录足迹(线路, 页面) {\\n            var history = JSON.parse(request('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n            var t = history.findIndex(item => item.小程序 == MY_RULE.title);\\n            if (t == -1) {\\n                t = history.length;\\n                history.push({\\n                    小程序: MY_RULE.title,\\n                    足迹: []\\n                })\\n            }\\n            var y = history[t].足迹.findIndex(item => item.url == MY_URL);\\n            if (y == -1) {\\n                history[t].足迹.push({\\n                    url: MY_URL,\\n                    tab: 线路,\\n                    index: 页面\\n                });\\n            } else {\\n                history[t].足迹[y].tab = 线路;\\n                history[t].足迹[y].index = 页面;\\n            }\\n            if (history[t].足迹.length >= 999) {\\n                history[t].足迹.splice(0, 1);\\n            }\\n            writeFile(\\\"hiker://files//cache/顺_记录线路和页码.json\\\", JSON.stringify(history, null, 2));\\n        }\\n        //读写足迹\\n        var historyA = JSON.parse(fetch('hiker://files//cache/顺_记录线路和页码.json') || '[]');\\n        var historyIT = historyA.find(item => item.小程序 == MY_RULE.title);\\n        if (historyIT) { //判断当前小程序\\n            historyIT = historyIT.足迹.find(it => it.url == MY_URL);\\n            if (historyIT) { //判断当前片子记录\\n                var itemA = historyIT.tab;\\n                var itemP = historyIT.index;\\n                if (getMyVar('分集起') == \\\"\\\") {\\n                    var star = itemP.split('-')[0];\\n                    var end = itemP.split('-')[1];\\n                    if (itemP == 'undefined-undefined' || itemP == '-') {\\n                        star = '1';\\n                        end = page_number;\\n                    }\\n                }\\n                if (getMyVar('当前线路名') == \\\"\\\") {\\n                    var 选中线路 = itemA || '0';\\n                }\\n                if (getMyVar('分集起') != \\\"\\\") {\\n                    var star = getMyVar('分集起');\\n                    var end = getMyVar('分集终');\\n                    var 选中线路 = itemA || '0';\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n                if (getMyVar('当前线路名') != \\\"\\\") {\\n                    var star = getMyVar('分集起', '1');\\n                    var end = getMyVar('分集终', JSON.stringify(page_number));\\n                    var 选中线路 = getMyVar(MY_URL);\\n                    记录足迹(选中线路, star + '-' + end)\\n                }\\n            } else { //如果片子没有记录\\n                var star = 1;\\n                var end = page_number;\\n                var 选中线路 = '0';\\n                记录足迹('0', \\\"1\\\" + '-' + page_number)\\n            }\\n        } else { //如果小程序没有记录\\n            var star = 1;\\n            var end = page_number;\\n            var 选中线路 = '0';\\n            记录足迹('0', \\\"1\\\" + '-' + page_number)\\n        }\\n    } else {\\n        var 选中线路 = '0';\\n    }\\n} catch (e) {\\n    空()\\n}\\n所有线路(tabs, MY_URL);\\n选集列表(lists, 选中线路);\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"D.x5rule嗅探\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(\\\"@@#\\\" +urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"D.通用匹配\",\"path\":\"lazy\",\"rule\":\"putVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    function check(u){\\n        if  (u.match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/) && !u.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)){\\n           // fy_bridge_app.log(urls[i])\\n            return true;\\n        }\\n        return false;\\n    }\\n    for (var i in urls) {\\n        if  (check(urls[i])){\\n           // fy_bridge_app.log(urls[i])\\n            return urls[i]\\n        }\\n        if(urls[i].includes(\\\"url=http\\\")){\\n            let u = urls[i].split(\\\"url=\\\")[1];\\n            if(check(u)){\\n                return u;\\n            }\\n        }\\n    }\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('正在获取站点资源,请稍后...');'x5Rule://'+input+'@' + getVar('_x5')\\\";\"},{\"col_type\":\"movie_3\",\"name\":\"#搜索框架\",\"path\":\"SearchFrame\",\"rule\":\"var d = [];\\nvar list = parseDomForArray(getResCode(), 一级列表);\\nlog('搜索结果')\\nlog(list)\\nif (list.length == 0) throw \\\"搜索为空，可能匹配错误\\\"\\nfor (var j in list) {\\n\\n    var 链接 = parseDom(list[j], 一级链接)\\n    var 标题 = parseDomForHtml(list[j], 一级标题)\\n    var 封面 = parseDom(list[j], 一级图片)\\n\\n    putMyVar(链接, 标题)\\n    putMyVar(链接 + '封面', 封面)\\n\\n  d.push({\\n       title: parseDomForHtml(list[j], 一级标题),\\n       desc: parseDomForHtml(list[j], 一级描述),\\n\\t    content: parseDomForHtml(list[j], 一级状态),\\n       img: parseDom(list[j], 一级图片),\\n       url: parseDom(list[j], 一级链接)\\n  });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"#方法归档\",\"path\":\"archives\",\"rule\":\"js:var d = [];\\n// 一级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,不启用动态分类,手动填写参数·需要用时才过来复制\\nvar 一级列表 = ''\\nvar 一级标题 = ''\\nvar 一级描述 = ''\\nvar 一级图片 = ''\\nvar 一级链接 = 'a&&href'\\n\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nvar html = fetch(MY_URL, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 一级模板,启用动态分类·需要用时才过来复制,部分参数需要调整\\n\\nconst 一级定位 = 'body&&a'\\nconst 二级定位 = ''\\nconst 统一定位 = 'body&&a:not(:matches(首页|APP))'\\n\\nconst page = MY_PAGE\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\n\\nif (getVar(MY_RULE.url)) {\\n    true_url = true_url.replace('.html', '/page/' + page + '.html')\\n    //log(true_url)\\n}\\n\\nvar html = fetch(true_url, {headers: {'User-Agent': MOBILE_UA /*PC_UA*/}})\\n\\n\\nrequire('hiker://page/dtfl')\\nrequire('hiker://page/auto')\\nautoPage(html)\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:var d = [];\\n// 二级模板,需要用时才过来复制\\nrequire('hiker://page/auto')\\nautoPage(getResCode())\\nsetResult(d)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·手动填写参数,需要用时才过来复制\\n//var lazy = '';\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\nrequire(\\\"hiker://page/lazy\\\");\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\\njs:\\n// 二级模板·需要用时才过来复制,如果进入二级发现错误.可直接修改参数\\n// 列·var 定位简介 = 'a&&Text';\\n\\n//var lazy = '';\\n\\nvar 搜索标签 = '';\\nvar 线路列表 = '';\\nvar 线路标签 = '';\\nvar 集数列表 = '';\\nvar 集数标签 = '';\\nvar 定位简介 = '';\\n\\n\\nvar html = fetch(MY_URL, {\\n    headers: {\\n        'User-Agent': PC_UA//MOBILE_UA\\n    }\\n})\\nrequire(\\\"hiker://page/auto\\\");\\nrequire(\\\"hiker://page/lazy\\\");\\n//require(\\\"hiker://page/lazy1\\\");\\nautoPage(html)\\n\\n🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️🎟️\"},{\"col_type\":\"movie_3\",\"name\":\"DD.链接工具\",\"path\":\"hiker://files/rules/js/UrlProcessor.js\",\"rule\":\"/**\\n * 本地网页插件链接 hiker://files/rules/js/UrlProcessor.js\\n * 子页面链接 hiker://page/url-processor\\n * 道长仓库链接 http://hiker.nokia.press/hikerule/rulelist.json?id=2849\\n * 码云 Gitee 链接 https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js\\n */\\nfunction UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: 'vodtype\\\\\\\\/(\\\\\\\\d+)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/vodtype(\\\\/\\\\d+)\\\\.html/, 'vodshow$1-----------.html')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: 'type\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/type(\\\\/\\\\w+)\\\\//, 'show$1-----------/')\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1')\\n            }\\n        },\\n        {\\n            reg: '(vodtype|videot)\\\\\\\\/\\\\\\\\w+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+\\\\.html/, '-' + this.params.page + '.html')\\n                    .replace(/((vodtype|videot)\\\\/\\\\w+)\\\\.html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*(\\\\\\\\.html|\\\\\\\\/)',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/\\\\d*(---\\\\d*(\\\\.html|\\\\/))/, this.params.page + '$1') // 拼接页码\\n            }\\n        },\\n        {\\n            reg: '((\\\\\\\\/vod\\\\\\\\/show)?(\\\\\\\\/area\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/by\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?(\\\\\\\\/id\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/letter\\\\\\\\/[\\\\\\\\w\\\\\\\\d%]+)?)(\\\\\\\\/page\\\\\\\\/\\\\\\\\d+)?(\\\\\\\\/year\\\\\\\\/\\\\\\\\d+)?\\\\\\\\.html',\\n            exec: () => {\\n                let regExp = /((\\\\/vod\\\\/show)?(\\\\/area\\\\/[\\\\w\\\\d%]+)?(\\\\/by\\\\/[\\\\w\\\\d%]+)?(\\\\/id\\\\/\\\\d+)?(\\\\/letter\\\\/[\\\\w\\\\d%]+)?)(\\\\/page\\\\/\\\\d+)?(\\\\/year\\\\/\\\\d+)?\\\\.html/\\n                return this.params.url\\n                    .replace(regExp, '$1' + (\\\"/page/\\\" + this.params.page) + '$8' + \\\".html\\\")\\n            }\\n        }\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    debug() {\\n        this.params.debug = true\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                if (this.params.debug) {\\n                    log(urlExp.toString())\\n                }\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    },\\n    调试模式() {\\n        return this.debug();\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\"},{\"col_type\":\"movie_3\",\"name\":\"AA.一级index-area🆘\",\"path\":\"index-area\",\"rule\":\"var 一级列表 = '.index-area&&li'\\nvar 一级标题 = 'a&&title'\\nvar 一级描述 = 'other&&Text'\\nvar 一级图片 = 'img&&data-original'\\nvar 一级链接 = 'a&&href'\\n\\neval(JSON.parse(fetch('hiker://page/PrimaryTemplate', {})).rule);\"},{\"col_type\":\"movie_3\",\"name\":\"BB.二级playfrom🆘\",\"path\":\"playfrom\",\"rule\":\"var 线路列表1 = 'body&&.playfrom&&li';//arts\\nvar 线路标签1 = 'Text';\\nvar 集数列表1 = 'body&&.videourl';//conts\\nvar 集数标签1 = 'ul&&li';\\nvar 定位简介1 = '.ct&&.ee&&Text';\\n\\neval(JSON.parse(fetch('hiker://page/SecondaryTemplate', {})).rule);\\n\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/133.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&li'\nvar 列表名 = 'ul&&li'\n章节.A()","title":"晓模块","author":"晓","version":2,"type":"tool","url":"hiker://empty\n\n\n\n\n替代海阔变量词\nfyclass    (电影/电视剧/**)   名称值\nfyarea     (内地/香港/**)        地区值\nfyyear     (2022/2021/**)      年代值\nfysort      (热门/时间/**)        排序值\n\nfypage    (翻页码)\n\n方案一（瓜皮TV）   /方式拼接\nhttp://www.dijiaxia.com/index.php/vod/show/area/%E5%86%85%E5%9C%B0/id/2/page/2.html\n套娃\n/fyarea/fysort/id/fyclass/page/fypage/fyyear.html\n\n\n方案二（球球TV）     ------方式拼接\nhttp://www.qqtv.top/vodshow/2-%E5%86%85%E5%9C%B0-hits------2---2021.html\n套娃\nfyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-')","col_type":"movie_3","class_name":"方案一\n\n首页&电视剧&电影&综艺&动漫&自定义\n\n\n方案二\n\n首页&电视剧&电影&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧","class_url":"方案一\n\n&dianshiju&dianying&zongyi&dongman&**\n\n\n方案二\n\n&2&1&3&4&6&7&8&9&10&11&12&13&14&15&16","area_name":"方案一\n\n地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他\n\n\n方案二\n\n地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"方案一（瓜皮TV）\nhttp://www.dijiaxia.com/index.php/vod/show/area/%E5%86%85%E5%9C%B0/id/2/page/2.html\n\n&/area/内地&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他\n\n\n方案二（球球TV）\nhttp://www.qqtv.top/vodshow/1--hits---------2021.html\n\n&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"方案一（/方式拼接）\n\n时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记\n\n\n方案二（---------方式拼接）\n\n时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"方案一（/方式拼接）\n年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早\n\n\n方案二（---------方式拼接）\n年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"方案一（/方式拼接）\n\nby/time&by/hits&by/score&class/纪录&喜剧&class/古装&class/动作&class/爱情&class/科幻&class/动画&class/悬疑&class/惊悚&class/恐怖&class/灾难&class/历史&class/%E4%BC%A6%E7%90%86&class/传记\n\n方案二（---------方式拼接）\n\ntime&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&%E4%BC%A6%E7%90%86&传记","year_url":"方案一（/方式拼接）\n\n&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&更多\n\n方案二（---------方式拼接）\n\n&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更多","find_rule":"js:\neval(fetch(\"hiker://assets/home.js\"));\n\nvar _urgent=false;\nsetResult(HikerHome.load(\"main\",_urgent));\n\n\n/*js:requireCache(config.xiao)\nvar 列表 = 'body&&li'\nvar 标题 = 'body&&Text'\nvar 描述 = 'body&&Text'\nvar 图片 = 'img&&data-original'\nvar 链接 = 'a&&href'\n一级.A()*/","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&li'\nvar 标题 = 'body&&Text'\nvar 描述 = 'body&&Text'\nvar 类型 = 'body&&Text'\nvar 简介 = 'body&&Text'\nvar 图片 = 'img&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"http://www.31kan.com/vodsearch/**----------fypage---.html","group":"工具","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\n\n//var lazy =通免;\n\nvar lazy =`@lazyRule=.js:var player=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=player.url;if (player.encrypt=='1'){var url=unescape(url)}else if(player.encrypt=='2'){var url=unescape(base64Decode(url))};var fr=player.from;var input=url;if(fr=='lekanzyw'){requireCache(config.xiao);ParseS.maoss(\"https://play.ekvod.com/play/?url=\" + url, false, \"OJBKYANGOJBKYANG\")+';{Referer@https://play.ekvod.com}'}else if(fr === 'duoduozy'){` + DD + `}else if(fr === 'renrenmi'){` + RR + `}else if(fr === 'xfyun'){` + xfyun + `}else{url + '#isVideo=true#'}`;\n\nvar 线路列表 = 'body&&a';\nvar 线路标签 = 'Text';\nvar 选集列表 = 'body&&a';\nvar 选集标签 = 'ul&&li';\nvar 类型 = 'body&&Text';\nvar 演员 = 'body&&Text';\nvar 更新 = 'body&&Text';\nvar 导演 = 'body&&Text';\nvar 图片 = 'img&&data-original';\nvar 图片链接 =setUrl;\nvar 简介 = 'body&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'https://gitee.com/xiao-zero/xiao/raw/master/js/xiao.js',\n})","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2020/06/12/8/123_561d0b47080f6459392eee4686530967_con_130x130.png"},{"last_chapter_rule":"","title":"图册","author":"cy","version":15,"type":"tool","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/homePage\")","searchFind":"","search_url":"","group":"工具","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"函数工具箱\",\"path\":\"api\",\"rule\":\"// 一、工具类封装 \\n// 获取当前时间\\n$.exports.getCurrentDate = function (format) {\\n    var now = new Date();\\n    var year = now.getFullYear(); //得到年份\\n    var month = now.getMonth(); //得到月份\\n    var date = now.getDate(); //得到日期\\n    var day = now.getDay(); //得到周几\\n    var hour = now.getHours(); //得到小时\\n    var minu = now.getMinutes(); //得到分钟\\n    var sec = now.getSeconds(); //得到秒\\n    month = month + 1;\\n    if (month < 10) month = \\\"0\\\" + month;\\n    if (date < 10) date = \\\"0\\\" + date;\\n    if (hour < 10) hour = \\\"0\\\" + hour;\\n    if (minu < 10) minu = \\\"0\\\" + minu;\\n    if (sec < 10) sec = \\\"0\\\" + sec;\\n    var time = \\\"\\\";\\n    //精确到天\\n    if (format == 1) {\\n        time = year + \\\"年\\\" + month + \\\"月\\\" + date + \\\"日\\\";\\n    }\\n    //精确到分\\n    else if (format == 2) {\\n        time = year + \\\"-\\\" + month + \\\"-\\\" + date + \\\" \\\" + hour + \\\":\\\" + minu + \\\":\\\" + sec;\\n    }\\n    return time;\\n}\\n// 注册重写Array对象的indexOf和remove方法\\n$.exports.overwriteArray = function () {\\n    Array.prototype.indexOf = function (val) {\\n        for (var i = 0; i < this.length; i++) {\\n            if (this[i].link == val) return i;\\n        }\\n        return -1;\\n    };\\n    Array.prototype.remove = function (val) {\\n        var index = this.indexOf(val);\\n        if (index > -1) {\\n            this.splice(index, 1);\\n        }\\n    };\\n}\\n\\n\\n// 二、功能类函数封装\\n// 预处理\\n$.exports.pretreatment = function () {\\n    if (fileExist('hiker://files/cache/PhotoAlbum_temp.json')) {\\n        saveFile('hiker://files/cache/PhotoAlbum_temp.json', '你想干嘛！');\\n    }\\n    if (!fileExist('hiker://files/rules/cy/PhotoAlbum.json')) {\\n        date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n        PhotoAlbum = {\\n            \\\"相册\\\": {\\n                \\\"gif壁纸\\\": [{\\n                    link: 'https://p0.meituan.net/csc/d797e865aaa4334699479c2fef6cab181597933.gif',\\n                    date: date,\\n                    title: '熊猫吃竹子',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei03.cfp.cn/creative/vcg/nowater800/new/VCG211293929470.gif',\\n                    date: date,\\n                    title: '摇尾狗',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei04.cfp.cn/creative/vcg/nowarter800/new/VCG211178908145.gif',\\n                    date: date,\\n                    title: '荡秋千',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei03.cfp.cn/creative/vcg/nowarter800/new/VCG211229245788.gif',\\n                    date: date,\\n                    title: '夜间动图',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei01.cfp.cn/creative/vcg/nowarter800/new/VCG211223467674.gif',\\n                    date: date,\\n                    title: '夜月',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei04.cfp.cn/creative/vcg/nowarter800/new/VCG211151553894.gif',\\n                    date: date,\\n                    title: '注意力',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei04.cfp.cn/creative/vcg/nowarter800/new/VCG211166346104.gif',\\n                    date: date,\\n                    title: '夜鸦',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei02.cfp.cn/creative/vcg/nowarter800/new/VCG211151545477.gif',\\n                    date: date,\\n                    title: '江河流动',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei02.cfp.cn/creative/vcg/nowarter800/new/VCG211151550604.gif',\\n                    date: date,\\n                    title: '海滩阅读',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei02.cfp.cn/creative/vcg/nowarter800/new/VCG211151555608.gif',\\n                    date: date,\\n                    title: '打水漂',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei05.cfp.cn/creative/vcg/nowarter800/new/VCG211166359866.gif',\\n                    title: \\\"\\\",\\n                    date: date,\\n                    title: '海滩白鹭',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei03.cfp.cn/creative/vcg/nowarter800/new/VCG211166304561.gif',\\n                    title: \\\"\\\",\\n                    date: date,\\n                    title: '招手蝴蝶-动物友谊',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei04.cfp.cn/creative/vcg/nowater800/new/VCG211370485521.gif',\\n                    date: date,\\n                    title: '区块链-科技',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://alifei04.cfp.cn/creative/vcg/nowater800/new/VCG211370483714.gif',\\n                    date: date,\\n                    title: '魔方-科技',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei02.cfp.cn/creative/vcg/nowater800/new/VCG211366094791.gif',\\n                    date: date,\\n                    title: '科技感十足',\\n                    group: 'gif壁纸'\\n                }, {\\n                    link: 'https://tenfei01.cfp.cn/creative/vcg/nowater800/new/VCG211345500353.gif',\\n                    date: date,\\n                    title: '辅导功课',\\n                    group: 'gif壁纸'\\n                }]\\n            },\\n            \\\"回收站\\\": [],\\n            \\\"keyMap\\\": {},\\n            \\\"isSecret\\\": 'yes',\\n            \\\"singleMax\\\": 30,\\n            \\\"showType\\\": 'pic_2',\\n            \\\"user_password\\\": ''\\n        };\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n    }\\n}\\n// 检索\\n$.exports.search = function () {\\n    if (input == '') {\\n        return 'toast://检索关键字不能为空'\\n    } else {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        if (PhotoAlbum.isSecret == 'yes') {\\n            if (PhotoAlbum.user_password == '') {\\n                return $('', '请设置用户密码(请牢记)').input(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    PhotoAlbum.user_password = base64Encode(base64Encode(input));\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                })\\n            } else {\\n                return $('', '请输入密码').input(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    if (input == base64Decode(base64Decode(PhotoAlbum.user_password))) {\\n                        putMyVar('currentPage', 'search_res');\\n                        refreshPage(true);\\n                        return 'hiker://empty';\\n                    } else {\\n                        return 'toast://密码错误！'\\n                    }\\n                })\\n            }\\n        } else {\\n            putMyVar('currentPage', 'search_res');\\n            refreshPage(true);\\n            return 'hiker://empty';\\n        }\\n    }\\n}\\n// 切换分组\\n$.exports.SwitchGroup = function (item) {\\n    // 监听刷新事件没效就手动触发吧\\n    clearMyVar('selectArray');\\n    clearMyVar('selectNum');\\n    clearMyVar('selectGroup');\\n    clearMyVar('currentPage');\\n    clearMyVar('isOpen_🗑️');\\n    clearMyVar('addSwitch');\\n    // 页码处理\\n    clearMyVar('thePageNum');\\n    putMyVar('lastPage', '1');\\n    // clearMyVar('editor_mode');不要清除编辑模式记录\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    for (i in PhotoAlbum.相册) {\\n        clearMyVar('isOpen_' + i);\\n    }\\n    // 直接清除全部最大可能的index\\n    showImg = [];\\n    keyArray = [];\\n    for (i in PhotoAlbum.keyMap) {\\n        keyArray.push(i);\\n    }\\n    for (group in PhotoAlbum.相册) {\\n        if (!keyArray.includes(group)) {\\n            showImg = showImg.concat(PhotoAlbum.相册[group]);\\n        }\\n    }\\n    maxNum = showImg.length;\\n    for (let index = 1; index <= maxNum; index++) {\\n        clearMyVar('isChoose_' + index);\\n    }\\n    // log('清除index的数量:' + maxNum);\\n    putMyVar(\\\"Select_group\\\", item);\\n    refreshPage();\\n    return 'hiker://empty'\\n}\\n// 分组更名\\n$.exports.reGroupName = function (item) {\\n    groupFuns = ['全部', '🗑️', '➕', '➖'];\\n    if (groupFuns.includes(item)) {\\n        return 'toast://不能操作不存在的相册！'\\n    }\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (PhotoAlbum.isSecret == 'yes') {\\n        keyArray = [];\\n        for (i in PhotoAlbum.keyMap) {\\n            keyArray.push(i);\\n        }\\n        if (keyArray.includes(item)) {\\n            return $('', item + '图册|设有密码').input((group) => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                keyMap = PhotoAlbum.keyMap;\\n                password = base64Decode(base64Decode(keyMap[group]));\\n                if (input == password) {\\n                    return $('', '相册重命名').input((group) => {\\n                        groupFuns = ['全部', '🗑️', '➕', '➖'];\\n                        if (groupFuns.includes(input)) {\\n                            return 'toast://相册名不能是关键字！';\\n                        }\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        // 日志备份\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        // 数据转移\\n                        PhotoAlbum.相册[input] = PhotoAlbum.相册[group];\\n                        PhotoAlbum.keyMap[input] = PhotoAlbum.keyMap[group];\\n                        // 删除原相册数据\\n                        delete PhotoAlbum.相册[group];\\n                        delete PhotoAlbum.keyMap[group];\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        clearMyVar('selectNum');\\n                        clearMyVar('selectArray');\\n                        for (var group in PhotoAlbum.相册) {\\n                            clearMyVar('isChoose_' + group);\\n                        }\\n                        putMyVar('Select_group', input);\\n                        refreshPage(true);\\n                        return \\\"toast://该加密相册已改名~\\\";\\n                    }, group)\\n                } else {\\n                    return 'toast://密码错误！'\\n                }\\n            }, item)\\n        } else {\\n            return $('', '相册重命名').input((group) => {\\n                groupFuns = ['全部', '🗑️', '➕', '➖'];\\n                if (groupFuns.includes(input)) {\\n                    return 'toast://相册名不能是关键字！';\\n                }\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                // 日志备份\\n                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                // 数据转移\\n                PhotoAlbum.相册[input] = PhotoAlbum.相册[group];\\n                PhotoAlbum.keyMap[input] = PhotoAlbum.keyMap[group];\\n                // 删除原相册数据\\n                delete PhotoAlbum.相册[group];\\n                delete PhotoAlbum.keyMap[group];\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                clearMyVar('selectNum');\\n                clearMyVar('selectArray');\\n                for (i in PhotoAlbum.相册) {\\n                    clearMyVar('isChoose_' + i);\\n                }\\n                putMyVar('Select_group', input);\\n                refreshPage(true);\\n                return \\\"toast://该相册已改名~\\\";\\n            }, item)\\n        }\\n    } else {\\n        return $('', '相册重命名').input((group) => {\\n            groupFuns = ['全部', '🗑️', '➕', '➖'];\\n            if (groupFuns.includes(input)) {\\n                return 'toast://相册名不能是关键字！';\\n            }\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            // 数据转移\\n            PhotoAlbum.相册[input] = PhotoAlbum.相册[group];\\n            PhotoAlbum.keyMap[input] = PhotoAlbum.keyMap[group];\\n            // 删除原相册数据\\n            delete PhotoAlbum.相册[group];\\n            delete PhotoAlbum.keyMap[group];\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            clearMyVar('selectNum');\\n            clearMyVar('selectArray');\\n            for (i in PhotoAlbum.相册) {\\n                clearMyVar('isChoose_' + i);\\n            }\\n            putMyVar('Select_group', input);\\n            refreshPage(true);\\n            return \\\"toast://该相册已改名~\\\";\\n        }, item)\\n    }\\n}\\n// 删除分组\\n$.exports.deleteGroup = function (item) {\\n    groupFuns = ['全部', '🗑️', '➕', '➖'];\\n    if (groupFuns.includes(item)) {\\n        return 'toast://不能操作不存在的相册！'\\n    }\\n    return $('你确定要删除该相册吗？').confirm((item) => {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        if (PhotoAlbum.isSecret == 'yes') {\\n            keyArray = [];\\n            for (i in PhotoAlbum.keyMap) {\\n                keyArray.push(i);\\n            }\\n            if (keyArray.includes(item)) {\\n                return $('', item + '图册|设有密码').input((group) => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    keyMap = PhotoAlbum.keyMap;\\n                    password = base64Decode(base64Decode(keyMap[group]));\\n                    if (input == password) {\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        // 日志备份\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        delete PhotoAlbum.相册[group];\\n                        // 清除密钥对\\n                        delete PhotoAlbum.keyMap[group];\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        selectNum = getMyVar('selectNum', '0');\\n                        clearMyVar('selectNum');\\n                        clearMyVar('selectArray');\\n                        putMyVar('Select_group', '全部');\\n                        refreshPage(true);\\n                        return \\\"toast://该加密相册已删除~\\\";\\n                    } else {\\n                        return 'toast://密码错误！'\\n                    }\\n                }, item);\\n            } else {\\n                // 日志备份\\n                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                // 放入回收站\\n                date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                PhotoAlbum.相册[item].forEach(item => {\\n                    item.date = date;\\n                });\\n                PhotoAlbum.回收站 = PhotoAlbum.相册[item].concat(PhotoAlbum.回收站);\\n                // 删除相册\\n                delete PhotoAlbum.相册[item];\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                putMyVar('Select_group', '全部');\\n                refreshPage(true);\\n                return \\\"toast://删除成功~\\\";\\n            }\\n        } else {\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            // 放入回收站\\n            date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n            PhotoAlbum.相册[item].forEach(item => {\\n                item.date = date;\\n            });\\n            PhotoAlbum.回收站 = PhotoAlbum.相册[item].concat(PhotoAlbum.回收站);\\n            // 删除相册\\n            delete PhotoAlbum.相册[item];\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            putMyVar('Select_group', '全部');\\n            refreshPage(true);\\n            return \\\"toast://删除成功~\\\";\\n        }\\n    }, item)\\n}\\n// 导出IDM批文件\\n$.exports.toIDM = function (item) {\\n    groupFuns = ['全部', '🗑️', '➕', '➖'];\\n    if (groupFuns.includes(item)) {\\n        return 'toast://不能操作不存在的相册！'\\n    }\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (PhotoAlbum.isSecret == 'yes') {\\n        keyArray = [];\\n        for (i in PhotoAlbum.keyMap) {\\n            keyArray.push(i);\\n        }\\n        if (keyArray.includes(item)) {\\n            return $('', item + '图册|设有密码').input((group) => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                keyMap = PhotoAlbum.keyMap;\\n                password = base64Decode(base64Decode(keyMap[group]));\\n                if (input == password) {\\n                    var linkData = '';\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    PhotoAlbum.相册[group].forEach(item => {\\n                        if (item.link.match(/#isVideo=true#/)) {\\n                            link = item.link.split('#isVideo=true#')[0];\\n                        } else {\\n                            link = item.link;\\n                        }\\n                        linkData = linkData + link + '\\\\n';\\n                    });\\n                    saveFile('hiker://files/cache/PhotoAlbum_' + group + '.txt', linkData);\\n                    return 'share://hiker://files/cache/PhotoAlbum_' + group + '.txt';\\n                } else {\\n                    return 'toast://密码错误！'\\n                }\\n            }, item);\\n        } else {\\n            var linkData = '';\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            PhotoAlbum.相册[item].forEach(item => {\\n                if (item.link.match(/#isVideo=true#/)) {\\n                    link = item.link.split('#isVideo=true#')[0];\\n                } else {\\n                    link = item.link;\\n                }\\n                linkData = linkData + link + '\\\\n';\\n            });\\n            saveFile('hiker://files/cache/PhotoAlbum_' + item + '.txt', linkData);\\n            return 'share://hiker://files/cache/PhotoAlbum_' + item + '.txt';\\n        }\\n    } else {\\n        var linkData = '';\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        PhotoAlbum.相册[item].forEach(item => {\\n            if (item.link.match(/#isVideo=true#/)) {\\n                link = item.link.split('#isVideo=true#')[0];\\n            } else {\\n                link = item.link;\\n            }\\n            linkData = linkData + link + '\\\\n';\\n        });\\n        saveFile('hiker://files/cache/PhotoAlbum_' + item + '.txt', linkData);\\n        return 'share://hiker://files/cache/PhotoAlbum_' + item + '.txt';\\n    }\\n}\\n// 导出自定义批文件\\n$.exports.toSelfFile = function (item) {\\n    groupFuns = ['全部', '🗑️', '➕', '➖'];\\n    if (groupFuns.includes(item)) {\\n        return 'toast://不能操作不存在的相册！'\\n    }\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (PhotoAlbum.isSecret == 'yes') {\\n        keyArray = [];\\n        for (i in PhotoAlbum.keyMap) {\\n            keyArray.push(i);\\n        }\\n        if (keyArray.includes(item)) {\\n            return $('', item + '图册|设有密码').input((group) => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                keyMap = PhotoAlbum.keyMap;\\n                password = base64Decode(base64Decode(keyMap[group]));\\n                if (input == password) {\\n                    var linkData = '';\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    PhotoAlbum.相册[group].forEach(item => {\\n                        if (item.link.match(/#isVideo=true#/)) {\\n                            link = item.link.split('#isVideo=true#')[0];\\n                        } else {\\n                            link = item.link;\\n                        }\\n                        linkData = linkData + item.title + ',' + link + '\\\\n';\\n                    });\\n                    saveFile('hiker://files/cache/PhotoAlbum_' + group + '.txt', linkData);\\n                    return 'share://hiker://files/cache/PhotoAlbum_' + group + '.txt';\\n                } else {\\n                    return 'toast://密码错误！'\\n                }\\n            }, item);\\n        } else {\\n            var linkData = '';\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            PhotoAlbum.相册[item].forEach(item => {\\n                if (item.link.match(/#isVideo=true#/)) {\\n                    link = item.link.split('#isVideo=true#')[0];\\n                } else {\\n                    link = item.link;\\n                }\\n                linkData = linkData + item.title + ',' + link + '\\\\n';\\n            });\\n            saveFile('hiker://files/cache/PhotoAlbum_' + item + '.txt', linkData);\\n            return 'share://hiker://files/cache/PhotoAlbum_' + item + '.txt';\\n        }\\n    } else {\\n        var linkData = '';\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        PhotoAlbum.相册[item].forEach(item => {\\n            if (item.link.match(/#isVideo=true#/)) {\\n                link = item.link.split('#isVideo=true#')[0];\\n            } else {\\n                link = item.link;\\n            }\\n            linkData = linkData + item.title + ',' + link + '\\\\n';\\n        });\\n        saveFile('hiker://files/cache/PhotoAlbum_' + item + '.txt', linkData);\\n        return 'share://hiker://files/cache/PhotoAlbum_' + item + '.txt';\\n    }\\n}\\n// 分组长按事件-隐藏\\n$.exports.groupFun = function (item) {\\n    return [{\\n        title: '更名', js: $.toString((item) => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").reGroupName(item)\\n        }, item)\\n    }, {\\n        title: '删除', js: $.toString((item) => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").deleteGroup(item)\\n        }, item)\\n    }, {\\n        title: 'IDM批文件', js: $.toString((item) => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").toIDM(item)\\n        }, item)\\n    }, {\\n        title: '自定义批文件', js: $.toString((item) => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").toSelfFile(item)\\n        }, item)\\n    }];\\n}\\n// 概览/多选切换\\n$.exports.SwitchMode = function (MY_PAGE_add) {\\n    // 监听刷新事件没效就手动触发吧\\n    clearMyVar('selectArray');\\n    clearMyVar('selectNum');\\n    clearMyVar('selectGroup');\\n    clearMyVar('currentPage');\\n    clearMyVar('isOpen_🗑️');\\n    clearMyVar('addSwitch');\\n    // clearMyVar('editor_mode');不要清除编辑模式记录\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    for (i in PhotoAlbum.相册) {\\n        clearMyVar('isOpen_' + i);\\n    }\\n    // 直接清除全部最大可能的index\\n    showImg = [];\\n    keyArray = [];\\n    for (i in PhotoAlbum.keyMap) {\\n        keyArray.push(i);\\n    }\\n    for (group in PhotoAlbum.相册) {\\n        if (!keyArray.includes(group)) {\\n            showImg = showImg.concat(PhotoAlbum.相册[group]);\\n        }\\n    }\\n    maxNum = showImg.length;\\n    for (let index = 1; index <= maxNum; index++) {\\n        clearMyVar('isChoose_' + index);\\n    }\\n    // log('清除index的数量:' + maxNum);\\n    if (getMyVar('showPage', '🖼︎概览') == '🖼︎概览') {\\n        putMyVar('showPage', '☑️多选');\\n    } else {\\n        putMyVar('showPage', '🖼︎概览');\\n    }\\n    putMyVar('thePageNum', MY_PAGE_add);\\n    putMyVar('lastPage', '1');\\n    refreshPage(false);\\n    return 'toast://切换成功';\\n}\\n// 呈现样式切换\\n$.exports.switchShowType = function () {\\n    return $(['pic_2', 'movie_2', 'pic_1', 'pic_1_full', 'card_pic_1', 'card_pic_2', 'movie_1', 'movie_1_left_pic', 'card_pic_3', 'movie_3', 'movie_3_marquee', 'pic_2_card', 'pic_3', 'pic_3_square', 'icon_2', 'icon_2_round', 'icon_round_4', 'avatar'], 3, '样式列表').select(() => {\\n        if (getMyVar('showPage', '🖼︎概览') == '☑️多选') {\\n            banList = ['icon_round_4', 'pic_1_full', 'card_pic_1', 'pic_2_card', 'pic_3', 'pic_3_square', 'icon_2', 'icon_2_round', 'icon_round_4', 'card_pic_3'];\\n            if (banList.includes(input)) {\\n                return 'toast://☑️多选下严禁切换成该样式~';\\n            }\\n        }\\n        var PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        PhotoAlbum.showType = input;\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        clearMyVar('addSwitch');\\n        refreshPage(true);\\n        return 'toast://切换成功~';\\n    })\\n}\\n// 新增图片\\n$.exports.addNewPic = function () {\\n    if (getMyVar('addSwitch', 'fold') == 'fold') {\\n        newArray = [{\\n            desc: '请输入标题，一行一条',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                type: 'textarea',\\n                height: -1,\\n                highlight: true,\\n                onChange: \\\"putMyVar('titleArray',input)\\\",\\n                cls: 'addMorePhotos'\\n            }\\n        }, {\\n            desc: '请输入链接，一行一条',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                type: 'textarea',\\n                height: -1,\\n                highlight: true,\\n                onChange: \\\"putMyVar('linkArray',input)\\\",\\n                cls: 'addMorePhotos'\\n            }\\n        }, {\\n            title: '当前选中分组：' + getMyVar('selectGroup', '未分组'),\\n            url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                groupArray = [];\\n                for (var group in PhotoAlbum.相册) {\\n                    groupArray.push(group);\\n                }\\n                return $(groupArray, 3, '样式列表').select(() => {\\n                    putMyVar('selectGroup', input)\\n                    updateItem('group_btn', {\\n                        title: '🎨当前选中分组：' + getMyVar('selectGroup', '未分组'),\\n                    });\\n                    return 'toast://切换成功~';\\n                })\\n            }),\\n            col_type: 'text_1',\\n            extra: {\\n                id: 'group_btn',\\n                cls: 'addMorePhotos'\\n            }\\n        }, {\\n            title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">添 加</span></big>',\\n            url: $('#noLoading#').lazyRule(() => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                // 依次是window、Unix/Linux、Mac的换行符（系统换行产生的不可见字符）\\n                titleArray = getMyVar('titleArray', '[]').split(/\\\\r\\\\n|\\\\n|\\\\r/);\\n                linkArray = getMyVar('linkArray', '[]').split(/\\\\r\\\\n|\\\\n|\\\\r/);\\n                group = getMyVar('selectGroup', '未分组');\\n                if (group == '未分组') {\\n                    return 'toast://请先选择分组！'\\n                } else {\\n                    if (PhotoAlbum.isSecret == 'yes') {\\n                        keyArray = [];\\n                        for (i in PhotoAlbum.keyMap) {\\n                            keyArray.push(i);\\n                        }\\n                        if (keyArray.includes(group)) {\\n                            return $('', group + '图册|设有密码').input((group) => {\\n                                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                keyMap = PhotoAlbum.keyMap;\\n                                password = base64Decode(base64Decode(keyMap[group]));\\n                                if (input == password) {\\n                                    // 日志备份\\n                                    saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                    // 依次是window、Unix/Linux、Mac的换行符（系统换行产生的不可见字符）\\n                                    titleArray = getMyVar('titleArray', '[]').split(/\\\\r\\\\n|\\\\n|\\\\r/);\\n                                    linkArray = getMyVar('linkArray', '[]').split(/\\\\r\\\\n|\\\\n|\\\\r/);\\n                                    date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                                    dataLength = titleArray.length > linkArray.length ? titleArray.length : linkArray.length;\\n                                    if (PhotoAlbum.相册[group] == undefined) {\\n                                        PhotoAlbum.相册[group] = [];\\n                                    }\\n                                    for (let i = 0; i < dataLength; i++) {\\n                                        title = i > titleArray.length - 1 ? '未命名' : (titleArray[i] == '' ? '未命名' : titleArray[i]);\\n                                        link = i > linkArray.length - 1 ? '空链接' : (linkArray[i] == '' ? '空链接' : linkArray[i]);\\n                                        PhotoAlbum.相册[group].unshift({\\n                                            link: link,\\n                                            date: date,\\n                                            title: title,\\n                                            group: group\\n                                        });\\n                                    }\\n                                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                    clearMyVar('addSwitch');\\n                                    refreshPage(true);\\n                                    return \\\"toast://图片添加成功~\\\";\\n                                } else {\\n                                    return 'toast://密码错误！'\\n                                }\\n                            }, group)\\n                        } else {\\n                            // 日志备份\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                            dataLength = titleArray.length > linkArray.length ? titleArray.length : linkArray.length;\\n                            if (PhotoAlbum.相册[group] == undefined) {\\n                                PhotoAlbum.相册[group] = [];\\n                            }\\n                            for (let i = 0; i < dataLength; i++) {\\n                                title = i > titleArray.length - 1 ? '未命名' : (titleArray[i] == '' ? '未命名' : titleArray[i]);\\n                                link = i > linkArray.length - 1 ? '空链接' : (linkArray[i] == '' ? '空链接' : linkArray[i]);\\n                                PhotoAlbum.相册[group].unshift({\\n                                    link: link,\\n                                    date: date,\\n                                    title: title,\\n                                    group: group\\n                                });\\n                            }\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            clearMyVar('addSwitch');\\n                            refreshPage(true);\\n                            return \\\"toast://图片添加成功~\\\";\\n                        }\\n                    } else {\\n                        // 日志备份\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                        dataLength = titleArray.length > linkArray.length ? titleArray.length : linkArray.length;\\n                        if (PhotoAlbum.相册[group] == undefined) {\\n                            PhotoAlbum.相册[group] = [];\\n                        }\\n                        for (let i = 0; i < dataLength; i++) {\\n                            title = i > titleArray.length - 1 ? '未命名' : (titleArray[i] == '' ? '未命名' : titleArray[i]);\\n                            link = i > linkArray.length - 1 ? '空链接' : (linkArray[i] == '' ? '空链接' : linkArray[i]);\\n                            PhotoAlbum.相册[group].unshift({\\n                                link: link,\\n                                date: date,\\n                                title: title,\\n                                group: group\\n                            });\\n                        }\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        clearMyVar('addSwitch');\\n                        refreshPage(true);\\n                        return \\\"toast://图片添加成功~\\\";\\n                    }\\n                }\\n            }),\\n            col_type: 'text_center_1',\\n            extra: {\\n                cls: 'addMorePhotos'\\n            }\\n        }];\\n        addItemAfter('addMoreBtn', newArray);\\n        putMyVar('addSwitch', 'open');\\n    } else {\\n        deleteItemByCls('addMorePhotos');\\n        putMyVar('addSwitch', 'fold');\\n    }\\n    return \\\"hiker://empty\\\";\\n}\\n// 新增长按-批量导入\\n$.exports.long_click_addNewPic = function () {\\n    return $('', '请输入链接').input(() => {\\n        var link = input;\\n        return $('', '请输入导入的分组名称').input((link) => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            if (PhotoAlbum.isSecret == 'yes') {\\n                keyArray = [];\\n                for (i in PhotoAlbum.keyMap) {\\n                    keyArray.push(i);\\n                }\\n                if (keyArray.includes(input)) {\\n                    return $('', input + '图册|设有密码').input((group, link) => {\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        keyMap = PhotoAlbum.keyMap;\\n                        password = base64Decode(base64Decode(keyMap[group]));\\n                        if (input == password) {\\n                            // 日志备份\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            data = request(link).split(/\\\\r\\\\n|\\\\n|\\\\r/);\\n                            date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                            if (PhotoAlbum.相册[group] == undefined) {\\n                                PhotoAlbum.相册[group] = [];\\n                            }\\n                            data.forEach(item => {\\n                                if (item == '') {\\n                                    return;\\n                                } else {\\n                                    title = item.split(/,|，/)[0];\\n                                    link = item.split(/,|，/)[1];\\n                                }\\n                                PhotoAlbum.相册[group].unshift({\\n                                    link: link,\\n                                    date: date,\\n                                    title: title,\\n                                    group: group\\n                                });\\n                            });\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            refreshPage(true);\\n                            return \\\"toast://图片导入成功~\\\";\\n                        } else {\\n                            return 'toast://密码错误！'\\n                        }\\n                    }, input, link)\\n                } else {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    // 日志备份\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    data = request(link).split(/\\\\r\\\\n|\\\\n/);\\n                    date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                    if (PhotoAlbum.相册[input] == undefined) {\\n                        PhotoAlbum.相册[input] = [];\\n                    }\\n                    data.forEach(item => {\\n                        if (item == '') {\\n                            return;\\n                        } else {\\n                            title = item.split(/,|，/)[0];\\n                            link = item.split(/,|，/)[1];\\n                        }\\n                        PhotoAlbum.相册[input].unshift({\\n                            link: link,\\n                            date: date,\\n                            title: title,\\n                            group: input\\n                        });\\n                    });\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    refreshPage(true);\\n                    return \\\"toast://图片导入成功~\\\";\\n                }\\n            } else {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                // 日志备份\\n                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                data = request(link).split(/\\\\r\\\\n|\\\\n/);\\n                date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                if (PhotoAlbum.相册[input] == undefined) {\\n                    PhotoAlbum.相册[input] = [];\\n                }\\n                data.forEach(item => {\\n                    if (item == '') {\\n                        return;\\n                    } else {\\n                        title = item.split(/,|，/)[0];\\n                        link = item.split(/,|，/)[1];\\n                    }\\n                    PhotoAlbum.相册[input].unshift({\\n                        link: link,\\n                        date: date,\\n                        title: title,\\n                        group: input\\n                    });\\n                });\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                refreshPage(true);\\n                return \\\"toast://图片导入成功~\\\";\\n            }\\n        }, link)\\n    })\\n}\\n//撤销上一次操作\\n$.exports.revoke = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum_workBack.json'))));\\n    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n    refreshPage(false);\\n    return 'toast://撤销成功';\\n}\\n// 分页按钮长按事件\\n$.exports.long_click_pageBtn = function (MY_PAGE_add) {\\n    if (getMyVar('showPage', '🖼︎概览') == '🖼︎概览') {\\n        title = '进入多选批量模式操作';\\n    } else {\\n        title = '退出批量模式';\\n    }\\n    return [{\\n        title: title, js: $.toString((MY_PAGE_add) => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").SwitchMode(MY_PAGE_add)\\n        }, MY_PAGE_add)\\n    }, {\\n        title: '撤销上一次操作', js: $.toString(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").revoke()\\n        })\\n    }];\\n}\\n// 分页选择弹窗\\n$.exports.refreshPageNum = function () {\\n    // 加载图册配置\\n    var PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    Select_group = getMyVar('Select_group', '全部');\\n    singleMax = PhotoAlbum.singleMax;\\n    // 获取当前的全部showImg\\n    if (getMyVar('currentPage', 'whole') == 'search_res') {\\n        var keyWord = getMyVar('condition');\\n        var reg = new RegExp(keyWord);\\n        var showImg = [];\\n        if (Select_group == '🗑️') {\\n            res_source = '回收站';\\n            PhotoAlbum.回收站.forEach(item => {\\n                if (item.title.match(reg) && item.title != '未命名') {\\n                    showImg.push(item);\\n                }\\n            });\\n        } else {\\n            res_source = '图库';\\n            for (group in PhotoAlbum.相册) {\\n                PhotoAlbum.相册[group].forEach(item => {\\n                    if (item.title.match(reg) && item.title != '未命名') {\\n                        showImg.push(item);\\n                    }\\n                });\\n            }\\n        }\\n    } else if (Select_group == '全部') {\\n        showImg = [];\\n        keyArray = [];\\n        for (i in PhotoAlbum.keyMap) {\\n            keyArray.push(i);\\n        }\\n        for (group in PhotoAlbum.相册) {\\n            if (!keyArray.includes(group)) {\\n                showImg = showImg.concat(PhotoAlbum.相册[group]);\\n            }\\n        }\\n    } else if (Select_group == '🗑️') {\\n        var showImg = PhotoAlbum.回收站;\\n    } else {\\n        var showImg = PhotoAlbum.相册[Select_group];\\n    }\\n    // 开始分页工作\\n    maxNum = showImg.length;\\n    maxPage = Math.ceil(maxNum / singleMax);\\n    thePageNum = getMyVar('thePageNum', 1 + '');\\n    pageList = ['∷'];\\n    if (maxNum <= singleMax) {\\n        pageList.push('““””<font color=\\\"red\\\">1/1</font>');\\n    } else {\\n        for (let page = 1; page <= maxPage; page++) {\\n            start = (page - 1) * singleMax + 1;\\n            if (thePageNum == page) {\\n                pageList.push('““””<font color=\\\"red\\\">' + page + '/' + start + '</font>');\\n            } else {\\n                pageList.push('““””<font color=\\\"gray\\\">' + page + '/' + start + '</font>');\\n            }\\n        }\\n    }\\n    return $(pageList, 3).select((singleMax) => {\\n        if (input == '∷') {\\n            return $(singleMax, '请设置单页最大数量').input(() => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                PhotoAlbum.singleMax = parseInt(input);\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                refreshPage(false);\\n                return 'toast://limit设置生效'\\n            })\\n        }\\n        thePageNum = input.split('/')[0].split('>')[1];\\n        putMyVar('thePageNum', thePageNum);\\n        putMyVar('lastPage', '1');\\n        refreshPage(true);\\n        return 'hiker://empty';\\n    }, singleMax)\\n}\\n\\n// 修改前面图片的数量统计(返回函数方法的可执行字符串)\\n$.exports.refreshPicArrayNum = function () {\\n    return $.toString(() => {\\n        pic_len = showImg.length - videoArray.length;\\n        d[getMyVar('indexOfArray')].title = '<b>图片</b>\\\\t\\\\t\\\\t本页<font color=' + color + '>' + pic_len + '</font>条数据\\\\t\\\\t\\\\tlimit:<font color=' + color + '>' + singleMax + '</font>\\\\t\\\\t\\\\t第<font color=\\\"red\\\">' + MY_PAGE_add + '</font>/<font color=' + color + '>' + maxPage + '</font>页';\\n    })\\n}\\n\\n\\n// 恢复原位\\n$.exports.reinstate = function (group, link) {\\n    if (group&&link) {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        // 日志备份\\n        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        i = PhotoAlbum.回收站.indexOf(link);\\n        // 恢复到原分组\\n        if (PhotoAlbum.相册[group] == undefined) {\\n            PhotoAlbum.相册[group] = [];\\n        }\\n        PhotoAlbum.相册[group].unshift(PhotoAlbum.回收站[i]);\\n        // 从回收站删除\\n        PhotoAlbum.回收站.splice(i, 1);\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        refreshPage(false);\\n        return 'toast://已从回收站恢复';\\n    }else{\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        if (getMyVar('selectNum', '0') == '0') {\\n            return 'toast://请先选择要恢复的图片！'\\n        } else {\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            selectArray = JSON.parse(getMyVar('selectArray'));\\n            selectArray.forEach(item => {\\n                group = item.group;\\n                link = item.link;\\n                // 恢复到原分组\\n                if (PhotoAlbum.相册[group] == undefined) {\\n                    PhotoAlbum.相册[group] = [];\\n                }\\n                PhotoAlbum.相册[group].unshift(item);\\n                // 从回收站删除\\n                // PhotoAlbum.回收站.pop(item);——服气，搞不明这样写为什么会出现各种bug...\\n                i = PhotoAlbum.回收站.indexOf(link);\\n                PhotoAlbum.回收站.splice(i, 1);\\n            });\\n            selectNum = getMyVar('selectNum', '0');\\n            clearMyVar('selectNum');\\n            clearMyVar('selectArray');\\n            // 直接清除全部最大可能的index\\n            showImg = [];\\n            keyArray = [];\\n            for (i in PhotoAlbum.keyMap) {\\n                keyArray.push(i);\\n            }\\n            for (group in PhotoAlbum.相册) {\\n                if (!keyArray.includes(group)) {\\n                    showImg = showImg.concat(PhotoAlbum.相册[group]);\\n                }\\n            }\\n            maxNum = showImg.length;\\n            for (let index = 1; index <= maxNum; index++) {\\n                clearMyVar('isChoose_' + index);\\n            }\\n            // log('清除index的数量:'+maxNum);\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            refreshPage(false);\\n            return \\\"toast://共恢复\\\" + selectNum + '张图片';\\n        }\\n    }\\n}\\n\\n// 删除(移动到回收站)\\n$.exports.removeBin = function (group, link, title) {\\n    if (group&&link&&title) {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        // 日志备份\\n        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        i = PhotoAlbum.相册[group].indexOf(link);\\n        PhotoAlbum.相册[group].splice(i, 1);\\n        // 放入回收站\\n        date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n        PhotoAlbum.回收站.unshift({\\n            link: link,\\n            date: date,\\n            title: title,\\n            group: group\\n        });\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        refreshPage(false);\\n        return \\\"toast://删除成功\\\";\\n    }else{\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        if (getMyVar('selectNum', '0') == '0') {\\n            return 'toast://请先选择要删除的图片！'\\n        } else {\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            selectArray = JSON.parse(getMyVar('selectArray'));\\n            selectArray.forEach(item => {\\n                link = item.link;\\n                title = item.title;\\n                group = item.group;\\n                // i是动态获取的\\n                i = PhotoAlbum.相册[group].indexOf(link);\\n                PhotoAlbum.相册[group].splice(i, 1);\\n                // 放入回收站\\n                date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                PhotoAlbum.回收站.unshift({\\n                    link: link,\\n                    date: date,\\n                    title: title,\\n                    group: group\\n                });\\n            });\\n            selectNum = getMyVar('selectNum', '0');\\n            clearMyVar('selectNum');\\n            clearMyVar('selectArray');\\n            // 直接清除全部最大可能的index\\n            showImg = [];\\n            keyArray = [];\\n            for (i in PhotoAlbum.keyMap) {\\n                keyArray.push(i);\\n            }\\n            for (group in PhotoAlbum.相册) {\\n                if (!keyArray.includes(group)) {\\n                    showImg = showImg.concat(PhotoAlbum.相册[group]);\\n                }\\n            }\\n            maxNum = showImg.length;\\n            for (let index = 1; index <= maxNum; index++) {\\n                clearMyVar('isChoose_' + index);\\n            }\\n            // log('清除index的数量:'+maxNum);\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            refreshPage(false);\\n            return \\\"toast://共删除\\\" + selectNum + '张图片';\\n        }\\n    }\\n}\\n// 彻底删除\\n$.exports.completelyDelete = function (link) {\\n    if (link) {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        // 日志备份\\n        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        i = PhotoAlbum.回收站.indexOf(link);\\n        PhotoAlbum.回收站.splice(i, 1);\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        refreshPage(false);\\n        return 'toast://已彻底删除';\\n    }else{\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        if (getMyVar('selectNum', '0') == '0') {\\n            return 'toast://请先选择要删除的图片！'\\n        } else {\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            selectArray = JSON.parse(getMyVar('selectArray'));\\n            selectArray.forEach(item => {\\n                link = item.link;\\n                i = PhotoAlbum.回收站.indexOf(link);\\n                PhotoAlbum.回收站.splice(i, 1);\\n            });\\n            selectNum = getMyVar('selectNum', '0');\\n            clearMyVar('selectNum');\\n            clearMyVar('selectArray');\\n            // 直接清除全部最大可能的index\\n            showImg = [];\\n            keyArray = [];\\n            for (i in PhotoAlbum.keyMap) {\\n                keyArray.push(i);\\n            }\\n            for (group in PhotoAlbum.相册) {\\n                if (!keyArray.includes(group)) {\\n                    showImg = showImg.concat(PhotoAlbum.相册[group]);\\n                }\\n            }\\n            maxNum = showImg.length;\\n            for (let index = 1; index <= maxNum; index++) {\\n                clearMyVar('isChoose_' + index);\\n            }\\n            // log('清除index的数量:'+maxNum);\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            refreshPage(false);\\n            return \\\"toast://共彻底删除\\\" + selectNum + '张图片';\\n        }\\n    }\\n}\\n// 加入随机\\n$.exports.JoinRandom = function (link) {\\n    if (link) {\\n        if (!fileExist('hiker://files/rules/cy/Theme/pic_list.json')) {\\n            return 'toast://你还没有使用过我的主题哦！'\\n        } else {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n            i = PhotoAlbum.回收站.indexOf(link);\\n            eval('data=' + fetch('hiker://files/rules/cy/Theme/pic_list.json'));\\n            self_way = String(data.self_way);\\n            data.gif_list.unshift(PhotoAlbum.回收站[i].link);\\n            saveFile('hiker://files/rules/cy/Theme/pic_list.json', '{\\\"gif_list\\\":' + JSON.stringify(data.gif_list) + ',\\\"showType\\\":' + JSON.stringify(data.showType) + ',\\\"self_way\\\":' + self_way + '}');\\n            return 'toast://加入成功~'\\n        }\\n    }else{\\n        if (!fileExist('hiker://files/rules/cy/Theme/pic_list.json')) {\\n            return 'toast://你还没有使用过我的主题哦！'\\n        } else {\\n            if (getMyVar('selectNum', '0') == '0') {\\n                return 'toast://请先选择图片！'\\n            } else {\\n                eval('data=' + fetch('hiker://files/rules/cy/Theme/pic_list.json'));\\n                self_way = String(data.self_way);\\n                selectArray = JSON.parse(getMyVar('selectArray'));\\n                selectArray.forEach(item => {\\n                    data.gif_list.unshift(item.link);\\n                });\\n                selectNum = getMyVar('selectNum', '0');\\n                clearMyVar('selectNum');\\n                clearMyVar('selectArray');\\n                // 直接清除全部最大可能的index\\n                showImg = [];\\n                keyArray = [];\\n                for (i in PhotoAlbum.keyMap) {\\n                    keyArray.push(i);\\n                }\\n                for (group in PhotoAlbum.相册) {\\n                    if (!keyArray.includes(group)) {\\n                        showImg = showImg.concat(PhotoAlbum.相册[group]);\\n                    }\\n                }\\n                maxNum = showImg.length;\\n                for (let index = 1; index <= maxNum; index++) {\\n                    clearMyVar('isChoose_' + index);\\n                }\\n                // log('清除index的数量:'+maxNum);\\n                saveFile('hiker://files/rules/cy/Theme/pic_list.json', '{\\\"gif_list\\\":' + JSON.stringify(data.gif_list) + ',\\\"showType\\\":' + JSON.stringify(data.showType) + ',\\\"self_way\\\":' + self_way + '}');\\n                refreshPage(false);\\n                return \\\"toast://共有\\\" + selectNum + '张图片加入了随机图库';\\n            }\\n        }\\n    }\\n}\\n// 重命名\\n$.exports.reName = function (title, link, group) {\\n    return $(title).input((link, group) => {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        // 日志备份\\n        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        i = PhotoAlbum.相册[group].indexOf(link);\\n        PhotoAlbum.相册[group][i].title = input;\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        refreshPage(false);\\n        return 'toast://重命名成功'\\n    }, link, group)\\n}\\n// 改链接\\n$.exports.changeLinke = function (link, group) {\\n    return $(link).input((link, group) => {\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        // 日志备份\\n        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n        i = PhotoAlbum.相册[group].indexOf(link);\\n        PhotoAlbum.相册[group][i].link = input;\\n        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n        refreshPage(false);\\n        return 'toast://修改链接成功'\\n    }, link, group)\\n}\\n// 移动分组\\n$.exports.moveGroup = function (group, link, title) {\\n    if (group&&link&&title) {\\n        return $(group).input((group, link, title) => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            // 日志备份\\n            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n            i = PhotoAlbum.相册[group].indexOf(link);\\n            if (input == '回收站') {\\n                // 移动到回收站\\n                date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                PhotoAlbum.回收站.unshift({\\n                    link: link,\\n                    date: date,\\n                    title: title,\\n                    group: group\\n                });\\n                // 从原分组删除\\n                PhotoAlbum.相册[group].splice(i, 1);\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                refreshPage(false);\\n                return 'toast://已移动到回收站';\\n            } else {\\n                // 修改分组信息\\n                PhotoAlbum.相册[group][i].group = input;\\n                // 移动到新分组\\n                if (PhotoAlbum.相册[input] == undefined) {\\n                    PhotoAlbum.相册[input] = [];\\n                }\\n                PhotoAlbum.相册[input].unshift(PhotoAlbum.相册[group][i]);\\n                // 从原分组删除\\n                PhotoAlbum.相册[group].splice(i, 1);\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                refreshPage(false);\\n                return 'toast://移动成功';\\n            }\\n        }, group, link, title)\\n    }else{\\n        if (getMyVar('selectNum', '0') == '0') {\\n            return 'toast://请先选择要移动的图片！'\\n        } else {\\n            return $('','请输入要移动到的分组').input(() => {\\n                $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                // 日志备份\\n                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                selectArray = JSON.parse(getMyVar('selectArray'));\\n                selectArray.forEach(item => {\\n                    link = item.link;\\n                    title = item.title;\\n                    group = item.group;\\n                    $.require(\\\"hiker://page/api?rule=图册\\\").overwriteArray();\\n                    i = PhotoAlbum.相册[group].indexOf(link);\\n                    if (input == '回收站') {\\n                        // 移动到回收站\\n                        date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                        PhotoAlbum.回收站.unshift({\\n                            link: link,\\n                            date: date,\\n                            title: title,\\n                            group: group\\n                        });\\n                        // 从原分组删除\\n                        PhotoAlbum.相册[group].splice(i, 1);\\n                    } else {\\n                        // 修改分组信息\\n                        PhotoAlbum.相册[group][i].group = input;\\n                        // 移动到新分组\\n                        if (PhotoAlbum.相册[input] == undefined) {\\n                            PhotoAlbum.相册[input] = [];\\n                        }\\n                        PhotoAlbum.相册[input].unshift(PhotoAlbum.相册[group][i]);\\n                        // 从原分组删除\\n                        PhotoAlbum.相册[group].splice(i, 1);\\n                    }\\n                });\\n                selectNum = getMyVar('selectNum', '0');\\n                clearMyVar('selectNum');\\n                clearMyVar('selectArray');\\n                // 直接清除全部最大可能的index\\n                showImg = [];\\n                keyArray = [];\\n                for (i in PhotoAlbum.keyMap) {\\n                    keyArray.push(i);\\n                }\\n                for (group in PhotoAlbum.相册) {\\n                    if (!keyArray.includes(group)) {\\n                        showImg = showImg.concat(PhotoAlbum.相册[group]);\\n                    }\\n                }\\n                maxNum = showImg.length;\\n                for (let index = 1; index <= maxNum; index++) {\\n                    clearMyVar('isChoose_' + index);\\n                }\\n                // log('清除index的数量:'+maxNum);\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                refreshPage(false);\\n                return \\\"toast://共移动\\\" + selectNum + '张图片';\\n            });\\n        }\\n    }\\n}\\n// 预览-多选\\n$.exports.preview = function (item) {\\n    if (item.link.match(/#isVideo=true#/)) {\\n        lazy = $(\\\"\\\").lazyRule(() => {\\n            return $.require('hiker://page/globalParse?rule=道长仓库Pro').lazyParse(input);\\n        });\\n        link = item.link.split('#isVideo=true#')[0]+lazy;\\n    } else {\\n        link = item.link;\\n        if(!link.match(/jpg|jpeg|gif|png|svg|webp|bmp|tif/)){\\n            link=link+'.png';\\n        }\\n    }\\n    return link;\\n}\\n\\n// 图片视频-回收站长按事件\\n$.exports.long_click_binPage = function (group, link,from,item) {\\n    if (from) {\\n        return [{\\n            title: '预览', js: $.toString((item) => {\\n                return $.require('hiker://page/api?rule=图册').preview(item);\\n             },item)\\n        },{\\n            title: '恢复', js: $.toString(() => { \\n                return $.require('hiker://page/api?rule=图册').reinstate();\\n            })\\n        }, {\\n            title: '彻底删除', js: $.toString(() => {\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").completelyDelete();\\n             })\\n        }];\\n    }else{\\n        return [{\\n            title: '恢复原位', js: $.toString((group, link) => {\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").reinstate(group, link);\\n            }, group, link)\\n        }, {\\n            title: '彻底删除', js: $.toString((link) => {\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").completelyDelete(link);\\n            }, link)\\n        }, {\\n            title: '加入随机', js: $.toString((link) => {\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").JoinRandom(link);\\n            }, link)\\n        }];\\n    }\\n}\\n// 图片视频-分组长按事件\\n$.exports.long_click_truePage = function (title, link, group,from,item,type) {\\n    switch (arguments.length) {\\n        case 6:\\n            return [{\\n                title: '预览', js: $.toString((item) => {\\n                    return $.require('hiker://page/api?rule=图册').preview(item);\\n                 },item)\\n            },{\\n                title: '移动', js: $.toString(() => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").moveGroup();\\n                })\\n            }, {\\n                title: '删除', js: $.toString(() => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").removeBin();\\n                })\\n            }]\\n            break;\\n        case 4:\\n            return [{\\n                title: '重命名', js: $.toString((title, link, group) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").reName(title, link, group);\\n                }, title, link, group)\\n            }, {\\n                title: '改链接', js: $.toString((link, group) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").changeLinke(link, group);\\n                }, link, group)\\n            }, {\\n                title: '移动分组', js: $.toString((group, link, title) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").moveGroup(group, link, title);\\n                }, group, link, title)\\n            }, {\\n                title: '删除', js: $.toString((group, link, title) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").removeBin(group, link, title);\\n                }, group, link, title)\\n            }];\\n            break;\\n        case 5:\\n            return [{\\n                title: '预览', js: $.toString((item) => {\\n                    return $.require('hiker://page/api?rule=图册').preview(item);\\n                 },item)\\n            },{\\n                title: '移动', js: $.toString(() => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").moveGroup();\\n                })\\n            }, {\\n                title: '删除', js: $.toString(() => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").removeBin();\\n                })\\n            }, {\\n                title: '加入随机', js: $.toString(() => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").JoinRandom();\\n                })\\n            }]\\n            break;\\n        case 3:\\n            return [{\\n                title: '重命名', js: $.toString((title, link, group) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").reName(title, link, group);\\n                }, title, link, group)\\n            }, {\\n                title: '改链接', js: $.toString((link, group) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").changeLinke(link, group);\\n                }, link, group)\\n            }, {\\n                title: '移动分组', js: $.toString((group, link, title) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").moveGroup(group, link, title);\\n                }, group, link, title)\\n            }, {\\n                title: '删除', js: $.toString((group, link, title) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").removeBin(group, link, title);\\n                }, group, link, title)\\n            }, {\\n                title: '加入随机', js: $.toString((link) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").JoinRandom(link);\\n                }, link)\\n            }];\\n            break;\\n    }\\n}\\n// 分组权限验证\\n$.exports.Authentication = function (Select_group) {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (Select_group == '🗑️') {\\n        password = base64Decode(base64Decode(PhotoAlbum.user_password))\\n    } else {\\n        keyMap = PhotoAlbum.keyMap;\\n        password = base64Decode(base64Decode(keyMap[Select_group]));\\n    }\\n    if (password != getMyVar('password')) {\\n        return \\\"toast://密码错误！\\\"\\n    } else {\\n        putMyVar('isOpen_' + Select_group, 'y')\\n        refreshPage(true);\\n        return \\\"toast://秘钥正确~\\\";\\n    }\\n}\\n// 多选相册（删除）\\n$.exports.selectGroupToDel = function (group) {\\n    selectArray = JSON.parse(getMyVar('selectArray', '[]'));\\n    if (selectArray.includes(group)) {\\n        selectNum = Number(getMyVar('selectNum', '0')) - 1;\\n        selectArray = selectArray.filter(item => item != group);\\n        putMyVar('selectArray', selectArray);\\n        putMyVar('selectNum', selectNum);\\n    } else {\\n        selectNum = Number(getMyVar('selectNum', '0')) + 1;\\n        selectArray.push(group);\\n        putMyVar('selectArray', selectArray);\\n        putMyVar('selectNum', selectNum);\\n    }\\n    // refreshPage(true);\\n    updateItem('del_select_' + group, {\\n        title: JSON.parse(getMyVar('selectArray', '[]')).includes(group) ? '““””<font color=red>' + group + '</font>' : group,\\n    });\\n    return 'hiker://empty'\\n}\\n// 删除多选相册\\n$.exports.DelselectGroup = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (getMyVar('selectNum', '0') == '0') {\\n        return 'toast://请先选择要删除的相册！'\\n    } else {\\n        keyArray = [];\\n        for (var item in PhotoAlbum.keyMap) {\\n            keyArray.push(item);\\n        }\\n        selectArray = JSON.parse(getMyVar('selectArray'));\\n        for (var group in PhotoAlbum.相册) {\\n            if (selectArray.includes(group)) {\\n                if (keyArray.includes(group) && selectArray.length != 1) {\\n                    return 'toast://选中分组中有相册设有秘钥，请单独进行删除！'\\n                } else if (keyArray.includes(group) && selectArray.length == 1) {\\n                    if (PhotoAlbum.isSecret == 'yes') {\\n                        return $('', group + '图册|设有密码').input((group) => {\\n                            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                            keyMap = PhotoAlbum.keyMap;\\n                            password = base64Decode(base64Decode(keyMap[group]));\\n                            if (input == password) {\\n                                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                // 日志备份\\n                                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                delete PhotoAlbum.相册[group];\\n                                // 清除密钥对\\n                                delete PhotoAlbum.keyMap[group];\\n                                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                selectNum = getMyVar('selectNum', '0');\\n                                clearMyVar('selectNum');\\n                                clearMyVar('selectArray');\\n                                refreshPage(true);\\n                                return \\\"toast://该加密相册已删除~\\\";\\n                            } else {\\n                                return 'toast://密码错误！'\\n                            }\\n                        }, group)\\n                    } else {\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        // 日志备份\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        delete PhotoAlbum.相册[group];\\n                        // 清除密钥对\\n                        delete PhotoAlbum.keyMap[group];\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        selectNum = getMyVar('selectNum', '0');\\n                        clearMyVar('selectNum');\\n                        clearMyVar('selectArray');\\n                        refreshPage(true);\\n                        return \\\"toast://该加密相册已删除~\\\";\\n                    }\\n                } else {\\n                    // 日志备份\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    // 放入回收站\\n                    date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                    PhotoAlbum.相册[group].forEach(item => {\\n                        item.date = date;\\n                    });\\n                    PhotoAlbum.回收站 = PhotoAlbum.相册[group].concat(PhotoAlbum.回收站);\\n                    // 删除相册\\n                    delete PhotoAlbum.相册[group];\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                }\\n            }\\n        };\\n        // 对于多选来说，要在循环外返回结果\\n        selectNum = getMyVar('selectNum', '0');\\n        clearMyVar('selectNum');\\n        clearMyVar('selectArray');\\n        refreshPage(true);\\n        return \\\"toast://共删除\\\" + selectNum + '个相册';\\n    }\\n}\\n// 创建相册\\n$.exports.creatGroup = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    PhotoAlbum_Name = getMyVar('PhotoAlbum_Name', '未命名');\\n    groupFuns = ['全部', '🗑️', '➕', '➖'];\\n    if (groupFuns.includes(PhotoAlbum_Name)) {\\n        return 'toast://相册名不能是关键字！';\\n    }\\n    for (group in PhotoAlbum.相册) {\\n        if (PhotoAlbum_Name == group) {\\n            return 'toast://已存在同名相册！'\\n        }\\n    };\\n    PhotoAlbum.相册[PhotoAlbum_Name] = [];\\n    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n    refreshPage(true);\\n    return \\\"toast://相册创建成功~\\\";\\n}\\n// 勾选相册（多选模式）\\n$.exports.CheckGroup = function (index, item, showType) {\\n    selectArray = JSON.parse(getMyVar('selectArray', '[]'));\\n    if (getMyVar('isChoose_' + index, 'no') == 'yes') {\\n        selectNum = Number(getMyVar('selectNum', '0')) - 1;\\n        selectArray.pop(item);\\n        putMyVar('selectArray', selectArray);\\n        putMyVar('selectNum', selectNum);\\n        putMyVar('isChoose_' + index, 'no');\\n    } else {\\n        selectNum = Number(getMyVar('selectNum', '0')) + 1;\\n        selectArray.push(item);\\n        putMyVar('selectArray', selectArray);\\n        putMyVar('selectNum', selectNum);\\n        putMyVar('isChoose_' + index, 'yes');\\n    }\\n    updateItem('selfMap' + index, {\\n        desc: getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : index + ''))),\\n    });\\n    return 'hiker://empty'\\n}\\n// 高级root权限\\n$.exports.rootFun = function () {\\n    return $('', '你没有权限哦').input(() => {\\n        if (input == 'root') {\\n            // 加载图册配置\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            isSecret = PhotoAlbum.isSecret;\\n            addItemAfter('root', [{\\n                title: '导出解码文件',\\n                url: $('#noLoading#').lazyRule(() => {\\n                    saveFile('hiker://files/cache/PhotoAlbum_temp.json', base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    return 'share://hiker://files/cache/PhotoAlbum_temp.json';\\n                }),\\n                col_type: 'text_1'\\n            }, {\\n                title: '导入解码文件（覆盖）',\\n                url: $('#noLoading#').lazyRule(() => {\\n                    return $('', '填写文件所在路径|支持文件直链').input(() => {\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        // 日志备份\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                        PhotoAlbum = request(input);\\n                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(PhotoAlbum)));\\n                        return \\\"toast://导入成功~\\\";\\n                    })\\n                }),\\n                col_type: 'text_1'\\n            }, {\\n                title: '清空秘钥',\\n                desc: '清除所有用户秘钥和相册秘钥',\\n                url: $('#noLoading#').lazyRule(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    // 日志备份\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    PhotoAlbum.keyMap = {};\\n                    PhotoAlbum.user_password = '';\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(PhotoAlbum)));\\n                    return \\\"toast://清除成功~\\\";\\n                }),\\n                col_type: 'text_1'\\n            }, {\\n                title: '<b>裸奔模式</b>',\\n                img: (isSecret == 'yes' ? 'https://lanmeiguojiang.com/tubiao/messy/63.svg' : 'https://lanmeiguojiang.com/tubiao/messy/55.svg') + '@Referer=',\\n                url: $('#noLoading#').lazyRule(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    if (PhotoAlbum.isSecret == 'yes') {\\n                        PhotoAlbum.isSecret = 'no';\\n                    } else {\\n                        PhotoAlbum.isSecret = 'yes';\\n                    }\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    refreshPage(true);\\n                    return \\\"toast://用户密码设置成功~\\\";\\n                }),\\n                col_type: 'text_icon'\\n            }, {\\n                title: '无需设置密码，开放搜索等功能。若设置了密码还请关闭该选项',\\n                col_type: 'rich_text',\\n                extra: { \\\"textSize\\\": \\\"12\\\" }\\n            }]);\\n        } else {\\n            return 'toast://你是谁？你想干嘛！'\\n        }\\n    })\\n}\\n// 上锁\\n$.exports.lockUp = function () {\\n    return $('hiker://empty').rule(() => {\\n        var d = [];\\n        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n        keyMap = PhotoAlbum.keyMap;\\n        if (JSON.stringify(keyMap) == '{}') {\\n            d.push({\\n                title: '暂无上锁的相册',\\n                url: 'hiker://empty',\\n                col_type: 'text_1'\\n            })\\n        } else {\\n            for (var item in keyMap) {\\n                d.push({\\n                    title: '🔒' + item,\\n                    url: $(['更改密码', '清除密码'], 2, '请选择操作').select((group) => {\\n                        if (input == '更改密码') {\\n                            return $('', '请输入原密码').input((group) => {\\n                                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                keyMap = PhotoAlbum.keyMap;\\n                                password = base64Decode(base64Decode(keyMap[group]));\\n                                if (input == password) {\\n                                    return $('', '请输入新密码').input((group) => {\\n                                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                        keyMap = PhotoAlbum.keyMap;\\n                                        keyMap[group] = base64Encode(base64Encode(input));\\n                                        saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                        refreshPage(true);\\n                                        return \\\"toast://相册秘钥更改成功~\\\";\\n                                    }, group);\\n                                } else {\\n                                    return 'toast://密码错误！'\\n                                }\\n                            }, group)\\n                        } else {\\n                            return $('', '请输入原密码').input((group) => {\\n                                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                keyMap = PhotoAlbum.keyMap;\\n                                password = base64Decode(base64Decode(keyMap[group]));\\n                                if (input == password) {\\n                                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                                    delete PhotoAlbum.keyMap[group];\\n                                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                    refreshPage(true);\\n                                    return \\\"toast://相册秘钥已清除~\\\";\\n                                } else {\\n                                    return 'toast://密码错误！'\\n                                }\\n                            }, group)\\n                        }\\n                    }, item),\\n                    col_type: 'text_1'\\n                })\\n            }\\n        }\\n        d.push({\\n            title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">添 加🔒</span></big>',\\n            url: 'hiker://empty',\\n            col_type: 'text_1'\\n        }, {\\n            title: '🎨当前选中分组：' + getMyVar('selectGroup', '未选择'),\\n            url: $('hiker://empty#noLoading#').lazyRule(() => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                groupArray = [];\\n                keyArray = [];\\n                for (var item in PhotoAlbum.keyMap) {\\n                    keyArray.push(item);\\n                }\\n                for (var group in PhotoAlbum.相册) {\\n                    if (!keyArray.includes(group)) {\\n                        groupArray.push(group);\\n                    }\\n                }\\n                return $(groupArray, 3, '未上锁分组').select(() => {\\n                    putMyVar('selectGroup', input)\\n                    updateItem('group_btn', {\\n                        title: '🎨当前选中分组：' + getMyVar('selectGroup', '未选择'),\\n                    });\\n                    return 'hiker://empty';\\n                })\\n            }),\\n            col_type: 'text_1',\\n            extra: {\\n                id: 'group_btn'\\n            }\\n        }, {\\n            desc: '请输入密码',\\n            col_type: 'input',\\n            extra: {\\n                titleVisible: false,\\n                type: 'textarea',\\n                height: 1,\\n                highlight: true,\\n                onChange: \\\"putMyVar('password',input)\\\",\\n            }\\n        }, {\\n            title: '确认添加',\\n            url: $('#noLoading#').lazyRule(() => {\\n                PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                keyMap = PhotoAlbum.keyMap;\\n                selectGroup = getMyVar('selectGroup', '未选择');\\n                password = getMyVar('password');\\n                if (selectGroup == '未选择') {\\n                    return \\\"toast://请先选择要上锁的相册\\\"\\n                } else if (password == '') {\\n                    return \\\"toast://密码不能为空！\\\"\\n                } else {\\n                    if (PhotoAlbum.user_password == '') {\\n                        return $('', '请设置用户密码(请牢记)').input(() => {\\n                            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                            PhotoAlbum.user_password = base64Encode(base64Encode(input));\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            return \\\"toast://用户密码设置成功~\\\";\\n                        })\\n                    } else {\\n                        return $('', '请输入密码').input(() => {\\n                            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                            keyMap = PhotoAlbum.keyMap;\\n                            selectGroup = getMyVar('selectGroup', '未选择');\\n                            password = getMyVar('password');\\n                            if (input == base64Decode(base64Decode(PhotoAlbum.user_password))) {\\n                                keyMap[selectGroup] = base64Encode(base64Encode(password));\\n                                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                                refreshPage(true);\\n                                return \\\"toast://相册秘钥添加成功~\\\";\\n                            } else {\\n                                return 'toast://密码错误！'\\n                            }\\n                        })\\n                    }\\n                }\\n            }),\\n            col_type: 'text_center_1'\\n        });\\n        setResult(d);\\n    });\\n}\\n// 设置或修改密码\\n$.exports.setPassword = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (PhotoAlbum.user_password == '') {\\n        return $('', '请设置用户密码(请牢记)').input(() => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            PhotoAlbum.user_password = base64Encode(base64Encode(input));\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            return \\\"toast://用户密码设置成功~\\\";\\n        })\\n    } else {\\n        return $('', '请输入原密码').input(() => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            if (input == base64Decode(base64Decode(PhotoAlbum.user_password))) {\\n                return $('', '请输入新密码').input(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    PhotoAlbum.user_password = base64Encode(base64Encode(input));\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    return \\\"toast://用户密码更改成功~\\\";\\n                });\\n            } else {\\n                return 'toast://密码错误！'\\n            }\\n        })\\n    }\\n}\\n// 清空回收站\\n$.exports.clearBin = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    if (PhotoAlbum.user_password == '') {\\n        return $('', '请设置用户密码(请牢记)').input(() => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            PhotoAlbum.user_password = base64Encode(base64Encode(input));\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n            return \\\"toast://用户密码设置成功~\\\";\\n        })\\n    } else {\\n        return $('', '请输入密码').input(() => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            if (input == base64Decode(base64Decode(PhotoAlbum.user_password))) {\\n                return $(\\\"慎重考虑~\\\").confirm(() => {\\n                    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                    PhotoAlbum.回收站 = [];\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    return \\\"toast://回收站已清空！\\\";\\n                });\\n            } else {\\n                return 'toast://密码错误！'\\n            }\\n        })\\n    }\\n}\\n// 去重\\n$.exports.dedup = function () {\\n    PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n    // 获取全部数据\\n    allData = []\\n    for (group in PhotoAlbum.相册) {\\n        allData = allData.concat(PhotoAlbum.相册[group]);\\n    }\\n    allData = allData.concat(PhotoAlbum.回收站);\\n    // 链接去重数组定义为全局\\n    var newArr = [];\\n    var repetNum = 0;\\n    for (group in PhotoAlbum.相册) {\\n        tempArray = [];\\n        PhotoAlbum.相册[group].forEach(item => {\\n            if (!newArr.includes(item.link)) {\\n                // 将链接存入去重数组\\n                newArr.push(item.link);\\n                // 存储到临时数组倒手\\n                tempArray.push(item);\\n            } else {\\n                repetNum++;\\n            };\\n\\n        });\\n        // 倒手存入\\n        PhotoAlbum.相册[group] = tempArray;\\n    }\\n    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n    return \\\"toast://本次去重\\\" + repetNum + '条数据';\\n}\\n// 外部接口1-加入随机图\\n$.exports.addToRandomPool = function (linkArray) {\\n    if (!fileExist('hiker://files/rules/cy/Theme/pic_list.json') || !fileExist('hiker://files/rules/cy/PhotoAlbum.json')) {\\n        return 'toast://朋友，你还没有使用过我的主题或者说你没有图册哦！'\\n    } else {\\n        eval('data=' + fetch('hiker://files/rules/cy/Theme/pic_list.json'));\\n        self_way = String(data.self_way);\\n        data.gif_list = linkArray.concat(data.gif_list);\\n        saveFile('hiker://files/rules/cy/Theme/pic_list.json', '{\\\"gif_list\\\":' + JSON.stringify(data.gif_list) + ',\\\"showType\\\":' + JSON.stringify(data.showType) + ',\\\"self_way\\\":' + self_way + '}');\\n        return 'toast://加入成功~'\\n    }\\n}\\n// 外部接口2-加入图册分组,参数为JSON数组:[{title:'',link:''}]\\n$.exports.addToPhotoAlbum = function (data) {\\n    if (!fileExist('hiker://files/rules/cy/Theme/pic_list.json') || !fileExist('hiker://files/rules/cy/PhotoAlbum.json')) {\\n        return 'toast://朋友，你还没有使用过我的主题或者说你没有图册哦！'\\n    } else {\\n        return $('', '请输入相册分组名称').input((data) => {\\n            PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n            if (PhotoAlbum.isSecret == 'yes') {\\n                keyArray = [];\\n                for (i in PhotoAlbum.keyMap) {\\n                    keyArray.push(i);\\n                }\\n                if (keyArray.includes(input)) {\\n                    return $('', input + '图册|设有密码').input((group, data) => {\\n                        PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\n                        keyMap = PhotoAlbum.keyMap;\\n                        password = base64Decode(base64Decode(keyMap[group]));\\n                        if (input == password) {\\n                            // 日志备份\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                            if (PhotoAlbum.相册[group] == undefined) {\\n                                PhotoAlbum.相册[group] = [];\\n                            }\\n                            data.forEach(item => {\\n                                PhotoAlbum.相册[group].unshift({\\n                                    link: item.link,\\n                                    date: date,\\n                                    title: item.title,\\n                                    group: group\\n                                });\\n                            });\\n                            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                            return \\\"toast://图片添加成功~\\\";\\n                        } else {\\n                            return 'toast://密码错误！'\\n                        }\\n                    }, input, data)\\n                } else {\\n                    // 日志备份\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                    if (PhotoAlbum.相册[input] == undefined) {\\n                        PhotoAlbum.相册[input] = [];\\n                    }\\n                    data.forEach(item => {\\n                        PhotoAlbum.相册[input].unshift({\\n                            link: item.link,\\n                            date: date,\\n                            title: item.title,\\n                            group: input\\n                        });\\n                    });\\n                    saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                    return \\\"toast://图片添加成功~\\\";\\n                }\\n            } else {\\n                // 日志备份\\n                saveFile('hiker://files/rules/cy/PhotoAlbum_workBack.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                date = $.require(\\\"hiker://page/api?rule=图册\\\").getCurrentDate(1);\\n                if (PhotoAlbum.相册[input] == undefined) {\\n                    PhotoAlbum.相册[input] = [];\\n                }\\n                data.forEach(item => {\\n                    PhotoAlbum.相册[input].unshift({\\n                        link: item.link,\\n                        date: date,\\n                        title: item.title,\\n                        group: input\\n                    });\\n                });\\n                saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\n                return \\\"toast://图片添加成功~\\\";\\n            }\\n        }, data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"家\",\"path\":\"homePage\",\"rule\":\"js:\\r\\n// 静默备份\\r\\ntry {\\r\\n    var d = [];\\r\\n    // 预处理\\r\\n    $.require(\\\"hiker://page/api?rule=图册\\\").pretreatment();\\r\\n    // 加载图册配置和初始化页面、页码\\r\\n    var PhotoAlbum = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum.json'))));\\r\\n    Select_group = getMyVar('Select_group', '全部');\\r\\n    showType = PhotoAlbum.showType;\\r\\n    keyMap = PhotoAlbum.keyMap;\\r\\n    singleMax = PhotoAlbum.singleMax;\\r\\n    isSecret = PhotoAlbum.isSecret;\\r\\n    color = \\\"#19B89D\\\";\\r\\n    // 页码差距\\r\\n    margin = MY_PAGE - getMyVar('lastPage', '1');\\r\\n    // 使用MY_PAGE_add承接页码\\r\\n    MY_PAGE_add = parseInt(getMyVar('thePageNum', '1')) + margin;\\r\\n    log('页码:' + MY_PAGE_add);\\r\\n    putMyVar('lastPage', MY_PAGE);\\r\\n    // 倒手变量记录最新的MY_PAGE_add\\r\\n    putMyVar('thePageNum', MY_PAGE_add);\\r\\n    // 第一页展示功能区\\r\\n    if (MY_PAGE == 1) {\\r\\n        // 检索\\r\\n        d.unshift({\\r\\n            title: \\\"检索\\\",\\r\\n            desc: '请输入检索关键字~',\\r\\n            col_type: \\\"input\\\",\\r\\n            url: $.toString(() => {\\r\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").search()\\r\\n            }),\\r\\n            extra: {\\r\\n                type: 'textarea',\\r\\n                defaultValue: getMyVar('condition', ''),\\r\\n                height: 1,\\r\\n                onChange: \\\"putMyVar('condition',input)\\\",\\r\\n            }\\r\\n        })\\r\\n        groupItems = ['全部'];\\r\\n        groupFuns = ['🗑️', '➕', '➖'];\\r\\n        for (i in PhotoAlbum.相册) {\\r\\n            groupItems.push(i);\\r\\n        }\\r\\n        groupItems.push.apply(groupItems, groupFuns);\\r\\n        groupItems.forEach(item => {\\r\\n            groupFuns = ['全部', '🗑️', '➕', '➖'];\\r\\n            if (groupFuns.includes(item)) {\\r\\n                d.push({\\r\\n                    title: getMyVar('Select_group', '全部') == item ? ('““””<b> <font color=' + color + '>' + item + ' </font></b>') : item,\\r\\n                    col_type: 'scroll_button',\\r\\n                    url: $('hiker://empty#noLoading#').lazyRule((item) => {\\r\\n                        return $.require(\\\"hiker://page/api?rule=图册\\\").SwitchGroup(item)\\r\\n                    }, item)\\r\\n                })\\r\\n            } else {\\r\\n                d.push({\\r\\n                    title: getMyVar('Select_group', '全部') == item ? ('““””<b> <font color=' + color + '>' + item + ' </font></b>') : item,\\r\\n                    col_type: 'scroll_button',\\r\\n                    url: $('hiker://empty#noLoading#').lazyRule((item) => {\\r\\n                        return $.require(\\\"hiker://page/api?rule=图册\\\").SwitchGroup(item)\\r\\n                    }, item),\\r\\n                    extra: {\\r\\n                        longClick: $.require(\\\"hiker://page/api?rule=图册\\\").groupFun(item)\\r\\n                    }\\r\\n                })\\r\\n            }\\r\\n        });\\r\\n        d.push({\\r\\n            col_type: 'blank_block'\\r\\n        })\\r\\n        // 添加更多按钮\\r\\n        d.push({\\r\\n            title: getMyVar('showPage', '🖼︎概览') == '🖼︎概览' ? '🖼︎概览' : '☑️多选',\\r\\n            url: $('#noLoading#').lazyRule((MY_PAGE_add) => {\\r\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").SwitchMode(MY_PAGE_add)\\r\\n            }, MY_PAGE_add),\\r\\n            col_type: 'scroll_button'\\r\\n        }, {\\r\\n            title: '🎨' + showType,\\r\\n            url: $('#noLoading#').lazyRule(() => {\\r\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").switchShowType()\\r\\n            }),\\r\\n            col_type: 'scroll_button',\\r\\n            extra: {\\r\\n                id: 'showType_btn'\\r\\n            }\\r\\n        }, {\\r\\n            title: '⚙️设置',\\r\\n            url: $('#noLoading##noHistory#').lazyRule(() => {\\r\\n                return $('hiker://empty##fypage#fullTheme#').rule(() => {\\r\\n                    require(\\\"hiker://page/setting?rule=图册\\\");\\r\\n                })\\r\\n            }),\\r\\n            col_type: 'scroll_button'\\r\\n        }, {\\r\\n            title: '➕',\\r\\n            url: $('#noLoading#').lazyRule(() => {\\r\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").addNewPic()\\r\\n            }),\\r\\n            col_type: 'scroll_button',\\r\\n            extra: {\\r\\n                id: 'addMoreBtn',\\r\\n                longClick: [{\\r\\n                    title: '批量导入，支持本地直链、云链', js: $.toString(() => {\\r\\n                        return $.require(\\\"hiker://page/api?rule=图册\\\").long_click_addNewPic()\\r\\n                    })\\r\\n                }]\\r\\n            }\\r\\n        });\\r\\n    }\\r\\n    d.push({\\r\\n        url: 'hiker://empty',\\r\\n        col_type: 'line_blank'\\r\\n    },);\\r\\n    // 数据匹配\\r\\n    keyArray = [];\\r\\n    for (i in PhotoAlbum.keyMap) {\\r\\n        keyArray.push(i);\\r\\n    }\\r\\n    if ((keyArray.includes(Select_group) || (Select_group == '🗑️') && PhotoAlbum.user_password != '') && getMyVar('currentPage', 'whole') != 'search_res' && getMyVar('isOpen_' + Select_group, 'n') == 'n' && isSecret == 'yes') {\\r\\n        d.push({\\r\\n            desc: '请输入密码',\\r\\n            col_type: 'input',\\r\\n            extra: {\\r\\n                titleVisible: false,\\r\\n                type: 'textarea',\\r\\n                height: 1,\\r\\n                highlight: true,\\r\\n                onChange: \\\"putMyVar('password',input)\\\",\\r\\n            }\\r\\n        }, {\\r\\n            title: '确认',\\r\\n            url: $('#noLoading#').lazyRule((Select_group) => {\\r\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").Authentication(Select_group);\\r\\n            }, Select_group),\\r\\n            col_type: 'text_center_1'\\r\\n        });\\r\\n    } else {\\r\\n        if (getMyVar('currentPage', 'whole') == 'search_res') {\\r\\n            var keyWord = getMyVar('condition');\\r\\n            var reg = new RegExp(keyWord);\\r\\n            var showImg = [];\\r\\n            if (Select_group == '🗑️') {\\r\\n                res_source = '回收站';\\r\\n                PhotoAlbum.回收站.forEach(item => {\\r\\n                    if (item.title.match(reg) && item.title != '未命名') {\\r\\n                        showImg.push(item);\\r\\n                    }\\r\\n                });\\r\\n            } else {\\r\\n                res_source = '图库';\\r\\n                for (group in PhotoAlbum.相册) {\\r\\n                    PhotoAlbum.相册[group].forEach(item => {\\r\\n                        if (item.title.match(reg) && item.title != '未命名') {\\r\\n                            showImg.push(item);\\r\\n                        }\\r\\n                    });\\r\\n                }\\r\\n            }\\r\\n        } else if (Select_group == '全部') {\\r\\n            showImg = [];\\r\\n            for (var group in PhotoAlbum.相册) {\\r\\n                if (!keyArray.includes(group)) {\\r\\n                    showImg = showImg.concat(PhotoAlbum.相册[group]);\\r\\n                }\\r\\n            }\\r\\n        } else if (Select_group == '🗑️') {\\r\\n            var showImg = PhotoAlbum.回收站;\\r\\n        } else {\\r\\n            var showImg = PhotoAlbum.相册[Select_group];\\r\\n        }\\r\\n        // 获取分页data\\r\\n        try {\\r\\n            maxPage = Math.ceil(showImg.length / singleMax);\\r\\n            startPage = (MY_PAGE_add - 1) * singleMax + 1;\\r\\n            endPage = singleMax * MY_PAGE_add;\\r\\n            showImg = showImg.slice(startPage - 1, endPage);\\r\\n        } catch (e) {\\r\\n            log('在对相册进行操作~');\\r\\n            showImg = ['temp'];\\r\\n            maxPage = Math.ceil(showImg.length / singleMax);\\r\\n            startPage = (MY_PAGE_add - 1) * singleMax + 1;\\r\\n            endPage = singleMax * MY_PAGE_add;\\r\\n            showImg = showImg.slice(startPage - 1, endPage);\\r\\n        }\\r\\n        // 首页数据展示\\r\\n        if (MY_PAGE_add > maxPage) {\\r\\n            d.push({\\r\\n                title: \\\"““””<small><font color='gray'>—到底了哦—</font></small>\\\",\\r\\n                url: 'hiker://empty',\\r\\n                col_type: 'text_center_1'\\r\\n            });\\r\\n        } else {\\r\\n            if (Select_group == '➕') {\\r\\n                d.push({\\r\\n                    title: '请输入相册名字',\\r\\n                    url: 'hiker://empty',\\r\\n                    col_type: 'text_1'\\r\\n                }, {\\r\\n                    desc: '没啥要求,但是你也不要乱来~',\\r\\n                    col_type: 'input',\\r\\n                    extra: {\\r\\n                        titleVisible: false,\\r\\n                        type: 'textarea',\\r\\n                        height: -1,\\r\\n                        highlight: true,\\r\\n                        onChange: \\\"putMyVar('PhotoAlbum_Name',input)\\\",\\r\\n                    }\\r\\n                }, {\\r\\n                    title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">创 建</span></big>',\\r\\n                    url: $('#noLoading#').lazyRule(() => {\\r\\n                        return $.require(\\\"hiker://page/api?rule=图册\\\").creatGroup();\\r\\n                    }),\\r\\n                    col_type: 'text_center_1'\\r\\n                });\\r\\n            } else if (Select_group == '➖') {\\r\\n                d.push({\\r\\n                    title: '请选中你要删除的相册',\\r\\n                    url: 'hiker://empty',\\r\\n                    col_type: 'text_1'\\r\\n                });\\r\\n                for (var group in PhotoAlbum.相册) {\\r\\n                    d.push({\\r\\n                        title: JSON.parse(getMyVar('selectArray', '[]')).includes(group) ? '““””<font color=red>' + group + '</font>' : group,\\r\\n                        col_type: 'scroll_button',\\r\\n                        url: $('hiker://empty#noLoading#').lazyRule((group) => {\\r\\n                            return $.require(\\\"hiker://page/api?rule=图册\\\").selectGroupToDel(group);\\r\\n                        }, group),\\r\\n                        extra: {\\r\\n                            id: 'del_select_' + group\\r\\n                        }\\r\\n                    })\\r\\n                }\\r\\n                d.push({\\r\\n                    title: '‘‘’’<big><span style=\\\"color:#6EB897\\\">删 除</span></big>',\\r\\n                    url: $('hiker://empty#noLoading#').lazyRule(() => {\\r\\n                        return $.require(\\\"hiker://page/api?rule=图册\\\").DelselectGroup();\\r\\n                    }),\\r\\n                    col_type: 'text_center_1'\\r\\n                });\\r\\n            }else{\\r\\n                if (getMyVar('showPage', '🖼︎概览') == '🖼︎概览') {\\r\\n                    eval(JSON.parse(request('hiker://page/overview?rule=图册')).rule);\\r\\n                } else {\\r\\n                    eval(JSON.parse(request('hiker://page/editor?rule=图册')).rule);\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n    // 备份\\r\\n    saveFile('hiker://files/rules/cy/PhotoAlbum_back.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum))));\\r\\n} catch (e) {\\r\\n    log(e.message);\\r\\n    showLoading('异常！！！');\\r\\n    d.push({\\r\\n        title: '恢复备份',\\r\\n        desc: '数据发生了损坏或许发生了未知错误，可以尝试恢复~',\\r\\n        url: $('#noLoading#').lazyRule(() => {\\r\\n            PhotoAlbum_back = JSON.parse(base64Decode(base64Decode(request('hiker://files/rules/cy/PhotoAlbum_back.json'))));\\r\\n            saveFile('hiker://files/rules/cy/PhotoAlbum.json', base64Encode(base64Encode(JSON.stringify(PhotoAlbum_back))));\\r\\n            refreshPage(true);\\r\\n            return \\\"toast://恢复成功\\\";\\r\\n        }),\\r\\n        col_type: 'text_center_1'\\r\\n    });\\r\\n    setResult(d);\\r\\n}\\r\\nsetResult(d);\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"多选模式\",\"path\":\"editor\",\"rule\":\"// 判断多选样式\\nbanList = ['icon_round_4', 'pic_1_full', 'card_pic_1', 'pic_2_card', 'pic_3', 'pic_3_square', 'icon_2', 'icon_2_round', 'icon_round_4', 'card_pic_3'];\\nif (banList.includes(showType)) {\\n    showType = 'movie_3_marquee';\\n}\\nd.push({\\n    col_type: 'blank_block'\\n});\\nif (Select_group == '🗑️') {\\n    videoArray = [];\\n    // 图片序号\\n    show_Index = (MY_PAGE_add - 1) * singleMax + 1;\\n    d.push({\\n        title: '<b>图片</b>',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/more/39.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            id: 'picArray_show',\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    putMyVar('indexOfArray', d.length - 1);\\n    showImg.forEach(item => {\\n        if (item.link.match(/#isVideo=true#/)) {\\n            videoArray.push(item);\\n        } else {\\n            link = item.link;\\n            group = item.group;\\n            shwoUrl = \\\"pics://\\\" + link;\\n            if (link.match(/http/)) {\\n                showPic=link + '@Referer=';\\n            }else{\\n                showPic=link\\n            }\\n            d.push({\\n                title: item.title,\\n                desc: getMyVar('isChoose_' + show_Index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + '')),\\n                url: $('#noLoading#').lazyRule((index, item, showType) => {\\n                    selectArray = JSON.parse(getMyVar('selectArray', '[]'));\\n                    if (getMyVar('isChoose_' + index, 'no') == 'yes') {\\n                        selectNum = Number(getMyVar('selectNum', '0')) - 1;\\n                        selectArray.pop(item);\\n                        putMyVar('selectArray', selectArray);\\n                        putMyVar('selectNum', selectNum);\\n                        putMyVar('isChoose_' + index, 'no');\\n                    } else {\\n                        selectNum = Number(getMyVar('selectNum', '0')) + 1;\\n                        selectArray.push(item);\\n                        putMyVar('selectArray', selectArray);\\n                        putMyVar('selectNum', selectNum);\\n                        putMyVar('isChoose_' + index, 'yes');\\n                    }\\n                    updateItem('selfMap' + index, {\\n                        desc: getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : index + ''))),\\n                    });\\n                    return 'hiker://empty'\\n                }, show_Index, item, showType),\\n                img: showPic,\\n                col_type: showType,\\n                extra: {\\n                    id: 'selfMap' + show_Index,\\n                    longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_binPage(group, link,'select',item)\\n                }\\n            });\\n            show_Index++;\\n        }\\n    })\\n    d.push({\\n        url: 'hiker://empty',\\n        col_type: 'line'\\n    }, {\\n        title: '<b>视频</b>\\\\t\\\\t\\\\t本页<font color=' + color + '>' + videoArray.length + '</font>条数据\\\\t\\\\t\\\\tlimit:<font color=' + color + '>' + singleMax + '</font>\\\\t\\\\t\\\\t第<font color=\\\"red\\\">' + MY_PAGE_add + '</font>/<font color=' + color + '>' + maxPage + '</font>页',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/q/49.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    // 修改前面图片的数量统计\\n    eval($.require(\\\"hiker://page/api?rule=图册\\\").refreshPicArrayNum());\\n    videoArray.forEach(item => {\\n        lazy = $(\\\"\\\").lazyRule(() => {\\n            return $.require('hiker://page/globalParse?rule=道长仓库Pro').lazyParse(input);\\n        });\\n        link = item.link;\\n        group = item.group;\\n        shwoUrl = item.link.split('#isVideo=true#')[0] + lazy;\\n        showPic = item.link.split('#isVideo=true#')[1] + '@Referer=';\\n        d.push({\\n            title: item.title,\\n            desc: getMyVar('isChoose_' + show_Index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + '')),\\n            url: $('#noLoading#').lazyRule((index, item, showType) => {\\n                selectArray = JSON.parse(getMyVar('selectArray', '[]'));\\n                if (getMyVar('isChoose_' + index, 'no') == 'yes') {\\n                    selectNum = Number(getMyVar('selectNum', '0')) - 1;\\n                    selectArray.pop(item);\\n                    putMyVar('selectArray', selectArray);\\n                    putMyVar('selectNum', selectNum);\\n                    putMyVar('isChoose_' + index, 'no');\\n                } else {\\n                    selectNum = Number(getMyVar('selectNum', '0')) + 1;\\n                    selectArray.push(item);\\n                    putMyVar('selectArray', selectArray);\\n                    putMyVar('selectNum', selectNum);\\n                    putMyVar('isChoose_' + index, 'yes');\\n                }\\n                updateItem('selfMap' + index, {\\n                    desc: getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (getMyVar('isChoose_' + index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : index + ''))),\\n                });\\n                return 'hiker://empty'\\n            }, (pic_len + show_Index), item, showType),\\n            img: showPic,\\n            col_type: showType,\\n            extra: {\\n                id: 'selfMap' + (pic_len + show_Index),\\n                longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_binPage(group, link,'select',item)\\n            }\\n        });\\n        show_Index++;\\n    })\\n    if (MY_PAGE_add <= maxPage) {\\n        d.push({\\n            title: \\\"““””<small><font color='gray'>—\\\" + MY_PAGE_add + \\\"—</font></small>\\\",\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n} else {\\n    videoArray = [];\\n    // 图片序号\\n    show_Index = (MY_PAGE_add - 1) * singleMax + 1;\\n    d.push({\\n        title: '<b>图片</b>',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/more/39.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            id: 'picArray_show',\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    putMyVar('indexOfArray', d.length - 1);\\n    showImg.forEach(item => {\\n        if (item.link.match(/#isVideo=true#/)) {\\n            videoArray.push(item);\\n        } else {\\n            link = item.link;\\n            group = item.group;\\n            title = item.title;\\n            shwoUrl = \\\"pics://\\\" + item.link;\\n            if (link.match(/http/)) {\\n                showPic=link + '@Referer=';\\n            }else{\\n                showPic=link\\n            }\\n            d.push({\\n                title: item.title,\\n                desc: getMyVar('isChoose_' + show_Index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + '')),\\n                url: $('#noLoading#').lazyRule((index, item, showType) => {\\n                    return $.require(\\\"hiker://page/api?rule=图册\\\").CheckGroup(index, item, showType)\\n                }, show_Index, item, showType),\\n                img: showPic,\\n                col_type: showType,\\n                extra: {\\n                    id: 'selfMap' + show_Index,\\n                    longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_truePage(title, link, group,'select',item)\\n                }\\n            });\\n            show_Index++;\\n        }\\n    })\\n    d.push({\\n        url: 'hiker://empty',\\n        col_type: 'line'\\n    }, {\\n        title: '<b>视频</b>\\\\t\\\\t\\\\t本页<font color=' + color + '>' + videoArray.length + '</font>条数据\\\\t\\\\t\\\\tlimit:<font color=' + color + '>' + singleMax + '</font>\\\\t\\\\t\\\\t第<font color=\\\"red\\\">' + MY_PAGE_add + '</font>/<font color=' + color + '>' + maxPage + '</font>页',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/q/49.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    // 修改前面图片的数量统计\\n    eval($.require(\\\"hiker://page/api?rule=图册\\\").refreshPicArrayNum());\\n    videoArray.forEach(item => {\\n        lazy = $(\\\"\\\").lazyRule(() => {\\n            return $.require('hiker://page/globalParse?rule=道长仓库Pro').lazyParse(input);\\n        });\\n        link = item.link;\\n        group = item.group;\\n        title = item.title;\\n        shwoUrl = item.link.split('#isVideo=true#')[0] + lazy;\\n        showPic = item.link.split('#isVideo=true#')[1] + '@Referer=';\\n        d.push({\\n            title: item.title,\\n            desc: getMyVar('isChoose_' + show_Index, 'no') == 'yes' ? '✅' : (showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + '')),\\n            url: $('#noLoading#').lazyRule((index, item, showType) => {\\n                return $.require(\\\"hiker://page/api?rule=图册\\\").CheckGroup(index, item, showType)\\n            }, (pic_len + show_Index), item, showType),\\n            img: showPic,\\n            col_type: showType,\\n            extra: {\\n                id: 'selfMap' + (pic_len + show_Index),\\n                longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_truePage(title, link, group,'select',item,'video')\\n            }\\n        });\\n        show_Index++;\\n    })\\n    if (MY_PAGE_add <= maxPage) {\\n        d.push({\\n            title: \\\"““””<small><font color='gray'>—\\\" + MY_PAGE_add + \\\"—</font></small>\\\",\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"设置页面\",\"path\":\"setting\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: '<font color=#20b2aa> 侠名：你好呀，朋友...</font>',\\n    img: 'https://lanmeiguojiang.com/tubiao/messy/19.svg@Referer=',\\n    url: $('#noLoading#').lazyRule(() => {\\n        return $.require(\\\"hiker://page/api?rule=图册\\\").rootFun()\\n    }),\\n    col_type: 'avatar',\\n    extra: {\\n        id: 'root'\\n    }\\n}, {\\n    title: '上锁',\\n    desc: '给指定相册添加密码锁',\\n    url: $('#noLoading#').lazyRule(() => {\\n        return $.require(\\\"hiker://page/api?rule=图册\\\").lockUp()\\n    }),\\n    col_type: 'text_1'\\n}, {\\n    title: '设置或修改密码',\\n    desc: '设置用户密码以开启条件检索、相册加密等功能',\\n    url: $('#noLoading#').lazyRule(() => {\\n        return $.require(\\\"hiker://page/api?rule=图册\\\").setPassword()\\n    }),\\n    col_type: 'text_1'\\n}, {\\n    title: '清空回收站',\\n    desc: '定期清理，谨慎操作',\\n    url: $('#noLoading#').lazyRule(() => {\\n        return $.require(\\\"hiker://page/api?rule=图册\\\").clearBin()\\n    }),\\n    col_type: 'text_1'\\n}, {\\n    title: '图册去重',\\n    desc: ' 定期去重，良好习惯（回收站不参与去重）',\\n    url: $('#noLoading#').lazyRule(() => {\\n        return $.require(\\\"hiker://page/api?rule=图册\\\").dedup()\\n    }),\\n    col_type: 'text_1'\\n}, {\\n    title: '返回主页并刷新',\\n    url: $('#noLoading#').lazyRule(() => {\\n        // 留意一下刷新还需要那些操作\\n        back(true);\\n        return \\\"toast://主页刷新成功~\\\";\\n    }),\\n    col_type: 'text_center_1'\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"概览\",\"path\":\"overview\",\"rule\":\"if (Select_group == '🗑️') {\\n    videoArray = [];\\n    // 图片序号\\n    show_Index = (MY_PAGE_add - 1) * singleMax + 1;\\n    d.push({\\n        title: '<b>图片</b>',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/more/39.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            id: 'picArray_show',\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    putMyVar('indexOfArray', d.length - 1);\\n    showImg.forEach(item => {\\n        if (item.link.match(/#isVideo=true#/)) {\\n            videoArray.push(item);\\n        } else {\\n            link = item.link;\\n            group = item.group;\\n            shwoUrl = \\\"pics://\\\" + link;\\n            if (link.match(/http/)) {\\n                showPic=link + '@Referer=';\\n            }else{\\n                showPic=link\\n            }\\n            d.push({\\n                title: item.title,\\n                desc: showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + ''),\\n                url: shwoUrl,\\n                img: showPic,\\n                col_type: showType,\\n                extra: {\\n                    id: 'selfMap' + show_Index,\\n                    longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_binPage(group, link)\\n                }\\n            });\\n            show_Index++;\\n        }\\n    })\\n    d.push({\\n        url: 'hiker://empty',\\n        col_type: 'line'\\n    }, {\\n        title: '<b>视频</b>\\\\t\\\\t\\\\t本页<font color=' + color + '>' + videoArray.length + '</font>条数据\\\\t\\\\t\\\\tlimit:<font color=' + color + '>' + singleMax + '</font>\\\\t\\\\t\\\\t第<font color=\\\"red\\\">' + MY_PAGE_add + '</font>/<font color=' + color + '>' + maxPage + '</font>页',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/q/49.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    // 修改前面图片的数量统计\\n    eval($.require(\\\"hiker://page/api?rule=图册\\\").refreshPicArrayNum());\\n    videoArray.forEach(item => {\\n        lazy = $(\\\"\\\").lazyRule(() => {\\n            return $.require('hiker://page/globalParse?rule=道长仓库Pro').lazyParse(input);\\n        });\\n        link = item.link;\\n        group = item.group;\\n        shwoUrl = item.link.split('#isVideo=true#')[0] + lazy;\\n        showPic = item.link.split('#isVideo=true#')[1] + '@Referer=';\\n        d.push({\\n            title: item.title,\\n            desc: showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + ''),\\n            url: shwoUrl,\\n            img: showPic,\\n            col_type: showType,\\n            extra: {\\n                id: 'selfMap' + (pic_len + show_Index),\\n                longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_truePage(title, link, group, 'select')\\n            }\\n        });\\n        show_Index++;\\n    })\\n    if (MY_PAGE_add <= maxPage) {\\n        d.push({\\n            title: \\\"““””<small><font color='gray'>—\\\" + MY_PAGE_add + \\\"—</font></small>\\\",\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n} else {\\n    videoArray = [];\\n    // 图片序号\\n    show_Index = (MY_PAGE_add - 1) * singleMax + 1;\\n    d.push({\\n        title: '<b>图片</b>',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/more/39.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            id: 'picArray_show',\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    putMyVar('indexOfArray', d.length - 1);\\n    showImg.forEach(item => {\\n        if (item.link.match(/#isVideo=true#/)) {\\n            videoArray.push(item);\\n        } else {\\n            link = item.link;\\n            group = item.group;\\n            title = item.title;\\n            shwoUrl = \\\"pics://\\\" + item.link;\\n            if (link.match(/http/)) {\\n                showPic=link + '@Referer=';\\n            }else{\\n                showPic=link\\n            }\\n            d.push({\\n                title: item.title,\\n                desc: showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + ''),\\n                url: shwoUrl,\\n                img: showPic,\\n                col_type: showType,\\n                extra: {\\n                    id: 'selfMap' + show_Index,\\n                    longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_truePage(title, link, group)\\n                }\\n            });\\n            show_Index++;\\n        }\\n    })\\n    d.push({\\n        url: 'hiker://empty',\\n        col_type: 'line'\\n    }, {\\n        title: '<b>视频</b>\\\\t\\\\t\\\\t本页<font color=' + color + '>' + videoArray.length + '</font>条数据\\\\t\\\\t\\\\tlimit:<font color=' + color + '>' + singleMax + '</font>\\\\t\\\\t\\\\t第<font color=\\\"red\\\">' + MY_PAGE_add + '</font>/<font color=' + color + '>' + maxPage + '</font>页',\\n        url: $('#noLoading#').lazyRule(() => {\\n            return $.require(\\\"hiker://page/api?rule=图册\\\").refreshPageNum();\\n        }),\\n        img: 'https://lanmeiguojiang.com/tubiao/q/49.png@Referer=',\\n        col_type: 'avatar',\\n        extra: {\\n            longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_pageBtn(MY_PAGE_add)\\n        }\\n    });\\n    // 修改前面图片的数量统计\\n    eval($.require(\\\"hiker://page/api?rule=图册\\\").refreshPicArrayNum());\\n    videoArray.forEach(item => {\\n        lazy = $(\\\"\\\").lazyRule(() => {\\n            return $.require('hiker://page/globalParse?rule=道长仓库Pro').lazyParse(input);\\n        });\\n        link = item.link;\\n        group = item.group;\\n        title = item.title;\\n        shwoUrl = item.link.split('#isVideo=true#')[0] + lazy;\\n        showPic = item.link.split('#isVideo=true#')[1] + '@Referer=';\\n        d.push({\\n            title: item.title,\\n            desc: showType.match(/card/) ? 0 + '' : (showType == 'pic_1' || showType.match(/movie_1/) ? '#' + item.group + '\\\\t\\\\t' + item.date : show_Index + ''),\\n            url: shwoUrl,\\n            img: showPic,\\n            col_type: showType,\\n            extra: {\\n                id: 'selfMap' + (pic_len + show_Index),\\n                longClick: $.require(\\\"hiker://page/api?rule=图册\\\").long_click_truePage(title, link, group,'video')\\n            }\\n        });\\n        show_Index++;\\n    })\\n    if (MY_PAGE_add <= maxPage) {\\n        d.push({\\n            title: \\\"““””<small><font color='gray'>—\\\" + MY_PAGE_add + \\\"—</font></small>\\\",\\n            url: 'hiker://empty',\\n            col_type: 'text_center_1'\\n        });\\n    }\\n}\\n\"}]","proxy":"","icon":"https://s1.xptou.com/1970/01/04/00042291ca8fa.png"},{"last_chapter_rule":"","title":"主题急救","author":"cy","version":0,"type":"tool","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:eval(fetch('hiker://assets/home.js',{}));HikerHome.load('setuppage')","searchFind":"","search_url":"","group":"工具🛠️","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"test2","author":"松子","version":0,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\n\n\n/*\nputVar(\"_x5\", $.toString(() => {\n    return fy_bridge_app.playVideos(JSON.stringify([{\n        \"title\": \"测试\",\n        \"url\": \"https://img.hei17.com/storage/uploads/media_space/movie/video/2022-12-10/1670676613787/8ce89428f245792655eebb8be38ee1c4.m3u8\",\n        \"use\": true\n    }]));\n}))\nvar lazy = `@lazyRule=.js:showLoading('动态解析中，请稍候...');'x5Rule://'+input+'@'+getVar(\"_x5\")`;\n*/\nd.push({\n    title: '解放黑奴',\n    col_type: 'text_center_1',\n    url: $().lazyRule(() => {\n        return $().x5Lazy(() => {\n            if (!window.a) {\n                fy_bridge_app.playVideos(JSON.stringify([{\n                    \"title\": \"测试\",\n                    \"url\": \"https://img.hei17.com/storage/uploads/media_space/movie/video/2022-12-10/1670676613787/8ce89428f245792655eebb8be38ee1c4.m3u8\",\n                    \"use\": true\n                }]));\n                window.a = 1\n            }\n            return;\n        });\n    }),\n});\nd.push({\n    col_type:\"line_blank\"\n});\nd.push({\n    title: '解放黑奴',\n    col_type: 'text_center_1',\n    url: $().lazyRule(() => {\n        return $().x5Lazy(() => {\n            return JSON.stringify({\n                urls: ['https://img.hei17.com/storage/uploads/media_space/movie/video/2022-12-10/1670676613787/8ce89428f245792655eebb8be38ee1c4.m3u8'],\n                names: ['测试']\n            });\n        });\n    }),\n});\n\n\n\n\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"开发中心","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"春秋","author":"大雨","version":107,"type":"other","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"春秋战国","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://files.catbox.moe/1w5viq.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/messy/45.svg"},{"last_chapter_rule":"","title":"墨渣兔D♔","author":"蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##https://www.mozhatu.com/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".vod_list&&li;.name&&Text;img&&lay-src;.state&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(\\d+)\\.html/)[1];\n//true_url = 获取正确链接();\nif(!/page/.test(true_url)){\n    true_url = true_url.replace(/\\.html/,'/page/'+page+'.html')\n}\nelse{\ntrue_url = true_url.replace('/page\\/(\\d+)\\.html/','page/'+page+'.html')\n}\n\nlog(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.list',\n        子分类: 'body&&a:not(:matches(直播|记录))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".vod_list&&li;.name&&Text;.pic&&img&&lay-src;.state&&Text;a&&href;.actor&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.mozhatu.com/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p,2&&Text;p,5&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.pic&&img&&lay-src',//图片\n url:'.pic&&img&&lay-src',//可以是影片链接，或者图片也行\n desc:'.text,1&&Text ',//一般主演，地区，影片评分等描述\n tabs:'.zu-box&&ul&&li',\n lists:'.ji-box&&ul,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/41.png"},{"last_chapter_rule":"","title":"爱看影视D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://iwantmv.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://iwantmv.com/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.sqjj_a&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/107.svg"},{"last_chapter_rule":"","title":"悟空D♔","author":"蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##http://www.cqybjs.com/list/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/--------(.*?)---.html/)[1];\ntrue_url = 获取正确链接();\nlog(true_url);\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言|电视直播|APP下载))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html').replace(/\\/news\\/(.*?)\\.html/,'/list/$1--------1---.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    },{\n    一级分类: '.nav',\n子分类: 'ul&&li:has(a[href]):not(:matches(^$))', \n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"","search_url":"","group":"未发布","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text;p.data,2&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新|最新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/162.png"},{"last_chapter_rule":"","title":"巴巴影视D♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##http://www.jinyusuo.com/vodshow/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-caption&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播|理片|音乐))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://www.jinyusuo.com/vodsearch/wd/**/page/fypage.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.sqjj_a&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/149.png"},{"last_chapter_rule":"","title":"大圣D♔","author":"蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##http://www.80dytv.com/ds_type/aa-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言|电视直播|APP下载))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__min',\n    子分类: 'body&&a',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail--h3&&Text\";\n一级(parStr,true); ","search_url":"http://www.80dytv.com/ds_search/**----------fypage---.html","group":"未发布","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/97.png"},{"last_chapter_rule":"","title":"GRD♔","author":"蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##https://www.grqq.com/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(8)',\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".myui-vodlist__media&&li;a&&title;a&&data-original;a&&Text;a&&href.js:input+'#immersiveTheme#';p.hidden-xs&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.grqq.com/vodsearch/**----------fypage---.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'p.data,5&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/99.png"},{"last_chapter_rule":"","title":"南府影视♔","author":"蓝莓果酱UX","version":2,"type":"other","url":"http://app.nfuxs.club/dnmb.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙","sort_name":"规则说明：线路众多不能播放就切换其它线路","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"规则说明：线路众多不能播放就切换其它线路","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.nfuxs.club/dnmb.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.nfuxs.club/dnmb.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://app.nfuxs.club/nfuxsapp.php/v1.vod?page=fypage&limit=10&wd=**","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=568259&key=adeiknouxzEGKNYZ06&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else if(url.match(/laodi/)){request('https://zy.laodi.xyz/S55978.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_content,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title='www'+html.data.vod_play_list;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊'+tabs[i].from+'””':tabs[i].from,\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选 集</span>'+'<span style=\"color:#668c90\">'+'\\n点击切换排序',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/南府影视.png"},{"last_chapter_rule":"","title":"零刻影视D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://ys.ling00.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".vodlist&&li;a&&title;.lazyload&&data-original;.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n        一级分类: '.top_nav',\n        子分类: 'body&&li:not(:matches(首页|特约栏目|小说|资讯))',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(\"/type/\", \"/show/\")\n            }\n        }\n    },{\n        一级分类: 'body&&.screen_list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\nvar 一级处理={\n    沉浸:true\n};\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,-1&&Text\";\n一级(parStr,true);","search_url":"https://ys.ling00.cn/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.data,2&&Text;.content_detail,1&&.data&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.full_text&&Text',\n tabs:'.list_scroll&&a',\n lists:'body&&.content_playlist,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://ys.ling00.cn/upload/site/20211221-1/4ce2f8166b41c33d38613945dbd23698.png"},{"last_chapter_rule":"","title":"康耀影视♔","author":"蓝莓果酱UX","version":0,"type":"other","url":"http://app.ybyyds.cn/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.ybyyds.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://app.ybyyds.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://app.ybyyds.cn/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar Color = \"#f13b66a\";\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=568259&key=adeiknouxzEGKNYZ06&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else if(url.match(/wuduyun/)){request('https://vip.1080p.icu:6677/analysis/json/svip.php?uid=5&my=chijmnruwJMPR02378&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else{url}`;\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar html = JSON.parse(getResCode()).data;\nd.push({\n            title:'地区：'+html.vod_area+'    年代：'+html.vod_year+'\\n主演：'+html.vod_actor.substring(0, 10)+'\\n导演：'+html.vod_director.substring(0,10),\n          img:html.vod_pic.replace('mac','https'),\n          desc:'简介：'+html.vod_blurb,\n          url: //\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n'http://ljr666.com/'+html.vod_pic,\n     col_type:'movie_1_vertical_pic_blur'\n        });\n\n//分割线\nd.push({\n    col_type: 'line'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n\n//分割线\nd.push({\n    col_type: 'line'\n})\n\n//分割线\nd.push({\n    col_type: 'big_blank_block'\n})\nvar tabs = [];\nvar conts = html.vod_play_list;\nvar lists = [];\nfor (var i in conts) {\n    tabs.push(conts[i].player_info.show)\n    lists.push(conts[i].urls)\n}\n\nfunction setTabs(tabs, vari) {\n\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    for (var j in list) {\n        d.push({\n            title: list[j].name.replace(/第|集|话|期/g, ''),\n            url: list[j].url+lazy,\n            col_type: list.length > 4 ? 'text_5' : 'text_2'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"http://app.ybyyds.cn/upload/site/20220126-1/8ff802114ff9d0e2b7b74edef7b88e14.png"},{"last_chapter_rule":"","title":"LOL影视♔","author":"蓝莓果酱UX","version":0,"type":"video","url":"https://l0l.tv/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://l0l.tv/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://l0l.tv/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://l0l.tv/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=568259&key=adeiknouxzEGKNYZ06&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else if(url.match(/laodi/)){request('https://zy.laodi.xyz/S55978.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://l0l.tv/upload/dycms/20211113-1/3780cff45dc867db6ab287bd5f1de691.png"},{"last_chapter_rule":"","title":"白夜影视D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.baiyeys.com/vodtype/20-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(5)',\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.baiyeys.com/index.php/verify/index.html?');;\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.baiyeys.com/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nparStr=\".myui-vodlist__media#searchList&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,3&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.baiyeys.com/vodsearch/**----------fypage---.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.sketch&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://www.baiyeys.com/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/63.png"},{"last_chapter_rule":"","title":"念念剧场D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://997.yuanmajs.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播|4K))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://997.yuanmajs.cn/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-info-item,5&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://pic.imgdb.cn/item/61ca165f2ab3f51d916f7c4c.png"},{"last_chapter_rule":"","title":"白熊影视♔","author":"蓝莓果酱UX","version":4,"type":"other","url":"https://yy.bx.sb/xgapp.php/v2/video?pg=fypage&tid=fyclass&class=fyarea&area=fyyear&lang=&year=fysort&token=;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"movie_3","class_name":"蓝光电影&蓝光剧集&蓝光动漫&蓝光综艺&官方电影&官方剧集&官方动漫&官方综艺","class_url":"20&21&22&23&24&25&26&27","area_name":"全部&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&经典&古装&枪战&历史","area_url":"&喜剧&爱情&恐怖&动作&科幻&冒险&奇幻&犯罪&动画&惊悚&悬疑&警匪&战争&武侠&经典&古装&枪战&历史","sort_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_name":"全部&大陆&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其它","sort_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","year_url":"&大陆&韩国&美国&日本&法国&英国&德国&台湾&泰国&印度&其它","find_rule":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.data.length; i++) {\n    var r = {};\n    var j = json.data[i];\n    r.title = j.vod_name;\n    r.img = j.vod_pic+\"@Referer=\";\n    r.desc = j.vod_remarks;\n    r.url = 'https://yy.bx.sb/xgapp.php/v2/video_detail?id='+j.vod_id+'&token='+'#immersiveTheme#';\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","searchFind":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.data.length; i++) {\n    var r = {};\n    var j = json.data[i];\n    r.title = j.vod_name;\n    r.img = j.vod_pic;\n    r.desc = j.vod_time_add;\n    r.url = 'https://yy.bx.sb/xgapp.php/v2/video_detail?id='+j.vod_id+'&token='+'#immersiveTheme#';\n    r.content = j.vod_remarks;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\n    d.push({\n    col_type: 'movie_3'\n})\nres.data = d;\nsetSearchResult(res);","search_url":"https://yy.bx.sb/xgapp.php/v2/search?pg=1&text=**&token=;get;utf-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=602659&key=dnuzADEGMNOPTUVW36&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_info.vod_area+'    \\n年代：'+html.data.vod_info.vod_year+'\\n状态：'+html.data.vod_info.vod_remarks,\n          pic_url:html.data.vod_info.vod_pic, \ndesc:html.data.vod_info.vod_content,\nurl:html.data.vod_info.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n//线路与选集代码开始\nvar tabs = html.data.vod_info.vod_url_with_player;\nvar title = 'www' + html.data.vod_info.vod_name;\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '🙊' +tabs[i].name + '””' : tabs[i].name,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选 集</span>'+'<span style=\"color:#668c90\">'+'\\n点击切换排序',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1'\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/62.png"},{"last_chapter_rule":"","title":"MX动漫D♔","author":"蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##http://www.mxdm.cc/show/riman--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img||.lazy&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(\\d+)---\\.html/)[1];\n//log(page);\ntrue_url = 获取正确链接();\n/*\nvar true_url = getMyVar('header.url', MY_URL);\ntrue_url=true_url.replace(/(\\d+)---\\.html/,'---.html');\ntrue_url=true_url.replace('---.html',page+'---.html');\n*/\nlog(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://www.mxdm.cc/search/**----------fypage---.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-text&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\n    \n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/67.png"},{"last_chapter_rule":"","title":"六把刀♔","author":"蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.6bd.net/show/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 =''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace('---.html',page+ '---.html/').replace(/(---\\d+.html)/,page+'$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = parseDomForArray(html, '.module-items&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'h3&&Text'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://www.6bd.net/search/**----------fypage---.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else \n    if (/renrenmi|ltnb|naifeimi/.test(from)) {\n       eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    var video = ParseS.maoss(\"https://www.haokanys.top/?url=\" + jsurl, false, \"A42EAC0C2B408472\")\n       } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/84.png"},{"last_chapter_rule":"","title":"六把刀D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.6bd.net/show/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img||.lazy&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(\\d+)---\\.html/)[1];\n//log(page);\ntrue_url = 获取正确链接();\n/*\nvar true_url = getMyVar('header.url', MY_URL);\ntrue_url=true_url.replace(/(\\d+)---\\.html/,'---.html');\ntrue_url=true_url.replace('---.html',page+'---.html');\n*/\nlog(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://www.6bd.net/search/**----------fypage---.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-text&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/84.png"},{"last_chapter_rule":"","title":"森之屋D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##https://www.senfun.net/show/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-caption&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播|合金))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://www.senfun.net/search.html?wd=**","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.sqjj_a&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/96.png"},{"firstHeader":"class","last_chapter_rule":"","title":"酷扑TVD♔","author":"道长&蓝莓果酱UX","version":4,"type":"video","url":"hiker://empty##https://www.kutv.cc/xuan/4Kzhuanqu--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".module-list&&.module-item;a&&title;.lazy&&data-src;.module-item-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/\\/(.*)--------(.*?)---.html/)[2];\ntrue_url = 获取正确链接();\nlog(true_url)\nlet cates=打造动态分类([{\n        一级分类: '#main&&.scroll-content',\n        子分类: 'body&&a:not(:matches(^$))',\n        \n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".module-items&&.module-search-item;h3&&Text;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-items,-1&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.kutv.cc/sou/**----------fypage---.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.video-info-item,4&&Text;.video-info-items,1&&Text;.tag-link,2&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-src',//图片\n url:'.lazyload&&data-src',//可以是影片链接，或者图片也行\n desc:'.video-info-content&&Text ',//一般主演，地区，影片评分等描述\n tabs:'.module-tab-content&&.module-tab-item',\n lists:'body&&.sort-item,#id&&a',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/155.png"},{"last_chapter_rule":"","title":"09影视D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"https://09tv.top/index.php/vod/show/id/1/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?)/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://09tv.top/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.vod_content&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/more/117.png"},{"last_chapter_rule":"","title":"09影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://09tv.top/index.php/vod/show/by/fysort/fyarea/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&2&3&4","area_name":"全部&内地&香港&台湾&美国","area_url":"&/area/内地&/area/香港&/area/台湾&/area/美国","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018","find_rule":"js:\nvar d = [];\n\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.module-items&&.module-item');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n//定位描述\n            desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyloaded&&data-src') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);\n","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://09tv.top/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\n\n\n//默认播放地址(需修改)\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.rmvb|pt=m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n});\n\n//地区年份分类主演导演图片\nd.push({\n\ttitle: '分类：'+parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g,'')+'  '+parseDomForHtml(html, '.tag-link,2&&Text')+'  '+parseDomForHtml(html, '.tag-link,3&&Text').substring(0, 20)+ '\\n' + parseDomForHtml(html,'.video-info-items,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25)+'\\n'+parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25),\tdesc:  '简介:  '+parseDomForHtml(html,'.vod_content&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&.module-tab-item');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\n\n\nd.push({\n    col_type: 'line'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '热舞',\n    url: 'https://t.xxgeek.com/tools/mmvod/m.php',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/more/117.png"},{"last_chapter_rule":"","title":"剧大神D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##http://judashen.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img||.lazy&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(\\d+)---\\.html/)[1];\n//log(page);\ntrue_url = 获取正确链接();\n/*\nvar true_url = getMyVar('header.url', MY_URL);\ntrue_url=true_url.replace(/(\\d+)---\\.html/,'---.html');\ntrue_url=true_url.replace('---.html',page+'---.html');\n*/\nlog(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://judashen.com/vodsearch/**----------fypage---.html","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-text&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\n    \n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/94.png"},{"last_chapter_rule":"","title":"云城D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##https://ayyf.cn/index.php/vod/show/id/29/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true); ","search_url":"https://ayyf.cn/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-info-item,5&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/104.png"},{"last_chapter_rule":"","title":"瓜瓜影视D♔","author":"道长&蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##https://www.web2.cc/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".vod_list&&li;.name&&Text;img&&lay-src;.state&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".vod_list&&li;.name&&Text;.pic&&img&&lay-src;.state&&Text;a&&href;.actor&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.web2.cc/vodsearch/**----------fypage---/","group":"未发布","detail_col_type":"text_3","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p,2&&Text;p,5&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.pic&&img&&lay-src',//图片\n url:'.pic&&img&&lay-src',//可以是影片链接，或者图片也行\n desc:'.text&&Text ',//一般主演，地区，影片评分等描述\n tabs:'.zu-box&&ul&&li',\n lists:'.ji-box&&ul,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/46.png"},{"last_chapter_rule":"","title":"大头影视♔","author":"蓝莓果酱UX","version":0,"type":"video","url":"http://dy.idsao.com/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3","class_name":"连续剧&综艺片&动漫剧&动画片","class_url":"2&3&4&23","area_name":"电影片&日韩剧&欧美剧&B站","area_url":"1&20&21&22","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://dy.idsao.com/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-text&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\n   \n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/108.png"},{"firstHeader":"class","last_chapter_rule":"","title":"美美D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.558wk.com/movie/index_fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/_(\\d+)\\.html/)[1];\n//log(page);\n//true_url = 获取正确链接();\n//log(true_url);\ntrue_url=true_url.replace(/_(\\d+)\\.html/,'_'+page+'.html');\n//log(true_url);\nlet cates=打造动态分类([{\n        一级分类: 'body&&.nav-list',\n        子分类: 'ul&&li:not(:matches(首页))',\n        分类链接: {\n            二次处理(url) {\n                if(!/index_(\\d+)\\.html/.test(url)){\n                    url+='index_1.html'\n                }\n                return url\n            }\n        }\n    },{\n        一级分类: '.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(电影|连续剧|综艺|动漫)):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js: \nvar res = {};\nvar d = [];\nvar ss = MY_URL.split('#')[0] + JSON.parse(fetch('https://www.558wk.com/e/search/index.php',{headers:{'content-type':'application/x-www-form-urlencoded'},body:MY_URL.split('#')[1],method:'POST',redirect:false, withHeaders:true})).headers.location[0].split('=')[1];\nvar list = parseDomForArray(fetch(ss,{}), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       pic_url: parseDom(list[j], '&&data-original'),\n       content: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://www.558wk.com/e/search/result/index.php?page=fypage@-1@&searchid=#keyboard=**&submit=+&show=title&tempid=1","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,7&&Text;p.data,1&&Text;p.data,0&&Text;p.data,5&&Text;p.data,6&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.sketch&&Text',\n tabs:'.nav-tabs&&li',\n lists:'body&&.myui-content__list,#id&&li',\n tab_id:'',\n};\n\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/131.png"},{"last_chapter_rule":"","title":"益辉D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.yihuimy.com/vodshow/6--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: 'body&&.nav',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail&&Text\";\n一级(parStr,true);","search_url":"https://www.yihuimy.com/vodsearch/**----------fypage---.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'.nav-tabs&&ul&&li',//线路\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/130.png"},{"last_chapter_rule":"","title":"VIP影院D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##http://360yy.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\nlet parStr=\".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(\\d+)\\.html/)[1];\n//true_url = 获取正确链接();\nif(!/page/.test(true_url)){\n    true_url = true_url.replace(/\\.html/,'/page/'+page+'.html')\n}\nelse{\ntrue_url = true_url.replace('/page\\/(\\d+)\\.html/','page/'+page+'.html')\n}\n\nlog(true_url);\nlet cates=打造动态分类([{\n        一级分类: 'body&&.fed-casc-info&&dl',\n        子分类: 'dl&&a:not(:matches(首页|留言|明星|专题|导航|聊天室|漫画|美漫|美图|文库|動漫資訊|女频 有声小说|次元阁|直播))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\"body&&.fed-deta-info;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-part-esan&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://360yy.cn/index.php/vod/search/page/fypage/wd/**.html","group":"未发布","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.fed-deta-content&&li,5&&Text;.fed-deta-content&&li,2&&Text;.fed-deta-content&&li,4&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.fed-list-pics&&data-original',//图片\n url:'.fed-list-pics&&data-original',//可以是影片链接，或者图片也行\n desc:'.fed-deta-content&&li,-1&&Text',//一般主演，地区，影片评分等描述\n tabs:'.fed-drop-tops&&a ',//线路\n lists:'body&&.fed-play-item,#id&&li:not(:matches(播放集数|视频排序：正序))',//列表\n tab_id:'',//线路id，可不填,\n \n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/43.png"},{"last_chapter_rule":"","title":"系统迷","author":"","version":0,"type":"other","url":"https://www.xitmi.com/fyAll/page/fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)}","col_type":"movie_1","class_name":"首页&Windows&科技问答&技术教程&绿软分享&激活工具&福丽资讯","class_url":"&windows&ask&help&soft&tools&news","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.excerpt;h2&&Text;img&&data-src;p&&Text;a&&href","searchFind":"body&&.excerpt;h2&&Text;a&&href;p&&Text;;img&&data-src","search_url":"https://www.xitmi.com/page/fypage?s=**","titleColor":"#ff673ab7","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"诺讯♠.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.nunxun.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/index.php/vod/detail/id/','/new.html/hot.html/index.html/app.nunxun.com/');\n//一级书签('/index.php/vod/detail/id/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.211006.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/96.0.4664.104 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3fyAs.png"},{"last_chapter_rule":"","title":"ascii解码","author":"小棉袄🌞","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar code = getVar(\"ascii-code\", \"\");\n\nsetResult([{\n    title: \"解密\",\n    desc: \"请输入密文，形如104*116\",\n    url: $.toString(() => {\n        var s = input.split(\"*\").map(item => String.fromCharCode(item)).join(\"\");\n        putVar(\"ascii-code\", s);\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"input\"\n}, {\n    title: code,\n    col_type: \"long_text\"\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试依赖代理","author":"小棉袄🌞","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nrequire(\"hiker://page/n\");\nd.push({\n    title: \"依赖返回结果：\" + a(),\n    url: \"\",\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"原依赖\",\"path\":\"n\",\"rule\":\"function a(){\\n    return \\\"原依赖\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"代理\",\"path\":\"p\",\"rule\":\"function a(){\\n    return \\\"代理\\\";\\n}\"}]","icon":""},{"last_chapter_rule":"","title":"测试storage0","author":"小棉袄🌞","version":0,"type":"other","url":"hiker://empty##","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"myvar:\" + storage0.getMyVar(\"a0\", {\n        a: 1\n    }).a,\n    url: $().lazyRule(() => {\n        storage0.putMyVar(\"a0\", {\n            a: storage0.getMyVar(\"a0\", {\n                a: 1\n            }).a + 1\n        });\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"var:\" + storage0.getVar(\"a1\", {\n        a: 1\n    }).a,\n    url: $().lazyRule(() => {\n        storage0.putVar(\"a1\", {\n            a: storage0.getVar(\"a1\", {\n                a: 1\n            }).a + 2\n        });\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nd.push({\n    title: \"item:\" + storage0.getItem(\"a0\", {\n        a: 1\n    }).a,\n    url: $().lazyRule(() => {\n        storage0.setItem(\"a0\", {\n            a: storage0.getItem(\"a0\", {\n                a: 1\n            }).a + 3\n        });\n        refreshPage();\n        return \"hiker://empty\"\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试动态元素","author":"小棉袄🌞","version":8,"type":"other","url":"hiker://empty#noRefresh#","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"测试更新\",\n    url: $(\"#noLoading#\").lazyRule((id) => {\n        updateItem({\n            extra: {\n                id: id\n            },\n            title: \"正在加载中，请稍候\"\n        });\n        fetch(\"http://www.baidu.com\");\n        fetch(\"http://www.baidu.com\");\n        fetch(\"http://www.baidu.com\");\n        updateItem({\n            extra: {\n                id: id\n            },\n            title: \"更新完成\"\n        });\n        return \"hiker://empty\"\n    }, MY_RULE + \"_id\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        id: MY_RULE + \"_id\"\n    }\n});\n\nd.push({\n    title: \"测试删除\",\n    url: $(\"#noLoading#\").lazyRule((id) => {\n        deleteItem(id);\n        return \"hiker://empty\"\n    }, MY_RULE + \"_id1\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        id: MY_RULE + \"_id1\"\n    }\n});\n\nd.push({\n    title: \"测试新增到我后面\",\n    url: $(\"#noLoading#\").lazyRule((id) => {\n        addItemAfter(id, {\n            extra: {\n                id: id + \"_2\"\n            },\n            title: \"我是新增出来的\",\n            col_type: \"text_1\"\n        });\n        return \"hiker://empty\"\n    }, MY_RULE + \"_id2\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        id: MY_RULE + \"_id2\"\n    }\n});\n\nd.push({\n    title: \"测试新增到我前面\",\n    url: $(\"#noLoading#\").lazyRule((id) => {\n        addItemBefore(id, {\n            extra: {\n                id: id + \"_2\"\n            },\n            title: \"我是新增出来的\",\n            col_type: \"text_1\"\n        });\n        return \"hiker://empty\"\n    }, MY_RULE + \"_id3\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        id: MY_RULE + \"_id3\"\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试一级传参","author":"","version":1,"type":"other","url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    title: \"点我跳转二级\",\n    url: \"hiker://empty#fypage\",\n    extra: {\n        a: \"我\",\n        b: \"c\"\n    }\n}])","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nd.push({\n    title: \"页面参数：\" + JSON.stringify(MY_PARAMS),\n    url: \"\",\n    col_type: \"long_text\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试rc4","author":"小棉袄🌞","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlet c = \"abcde\";\nlet a = rc4.encode(c, 'bbb', 'UTF-8');\nlet b = rc4.decode(a, 'bbb', 'UTF-8');\nlog(a);\nlog(b);\nd.push({\n    title: \"原文：\" + c,\n    col_type: \"rich_text\",\n    extra: {\n        textSize: 18,\n        click: true\n    }\n});\nd.push({\n    title: \"加密后：\" + a,\n    col_type: \"rich_text\",\n    extra: {\n        textSize: 18,\n        click: true\n    }\n});\nd.push({\n    title: \"还原：\" + b,\n    col_type: \"rich_text\",\n    extra: {\n        textSize: 18,\n        click: true\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试share","author":"小棉袄🌞","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"点我分享文件\",\n    url: $().lazyRule(() => {\n        if (getAppVersion() < 2656) {\n            return \"toast://当前软件版本太低，不支持此功能\"\n        }\n        return \"share://hiker://files/jiexi.txt\"\n    }),\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试update","author":"小棉袄🌞","version":2,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"点我开始测试\",\n    url: $(\"#noLoading#\").lazyRule((id) => {\n        updateItem({\n            extra: {\n                id: id\n            },\n            title: \"正在加载中，请稍候\"\n        });\n        fetch(\"http://www.baidu.com\");\n        updateItem({\n            extra: {\n                id: id\n            },\n            title: \"加载完成\"\n        });\n        return \"hiker://empty\"\n    }, MY_RULE + \"_id\"),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\",\n    extra: {\n        id: MY_RULE + \"_id\"\n    }\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试字体变色","author":"小棉袄🌞","version":6,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    url:\"'toast://嗨嗨嗨'\",\n    title:\"““刷新””，‘‘切换’’\",\n    col_type:\"text_1\"\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试私有存储","author":"小棉袄🌞","version":3,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nd.push({\n    title: getItem(\"kk\", \"000\"),\n    col_type: \"text_1\",\n    url: $().lazyRule(() => {\n        setItem(\"kk\", \"6666\")\n        refreshPage()\n        return \"toast://看看另外一个规则能不能读取到吧\"\n    })\n})\nd.push({\n    title: '你试试调用私有2的子页面？',\n    col_type: \"text_1\",\n    url: $().lazyRule(() => {\n        clearItem('kk')\n        return \"hiker://page/outer-page-in?rule=测试私有存储2\"\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"测试别的规则调用子页面\",\"path\":\"outer-page-in\",\"rule\":\"js:\\nvar d = []\\nd.push({\\n    title: getItem(\\\"kk\\\",\\\"000\\\"),\\n    col_type: \\\"text_1\\\",\\n})\\nsetResult(d)\"}]","icon":""},{"last_chapter_rule":"","title":"测试输入框","author":"","version":5,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d=[]\nd.push({\n    url:\"'hiker://search?rule=香情影视&s='+input\",\n    desc:\"小棉袄是真的帅啊，快输入是\",\n    col_type:\"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\nd.push({\n    title:\"我在监听 点我查看监听到的内容\",\n    url: $().lazyRule(()=>{\n        let key=getVar(\"my-search\");\n        return \"toast://\"+key;\n    }),\n    col_type: \"text_1\"\n})\nd.push({\n    url:\"'toast://嗨嗨嗨，你输入的是'+input\",\n    col_type:\"input\",\n    extra:{\n        type:\"number\"\n    }\n})\nd.push({\n    url:\"'toast://嗨嗨嗨，你输入的是'+input\",\n    col_type:\"input\",\n    desc: \"我隐藏了右侧按钮，且我是密码\",\n    extra: {\n        onChange: \"putVar('my-search2',input)\",\n        titleVisible: false,\n        type:\"password\"\n    }\n})\nd.push({\n    title:\"我在监听上面的输入框 点我查看监听到的内容\",\n    url: $().lazyRule(()=>{\n        let key=getVar(\"my-search2\");\n        return \"toast://\"+key;\n    }),\n    col_type: \"text_1\"\n})\nd.push({\n    url:\"'toast://嗨嗨嗨，你输入的是'+input\",\n    col_type:\"input\",\n    desc: \"我是textarea\",\n    extra: {\n        type: \"textarea\",\n        titleVisible: false\n    }\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试copy","author":"","version":1,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d=[]\nd.push({\n    title:\"点我复制内容到剪贴板\",\n    url:\"copy://走走停停，世界才会如此美丽\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试confirm","author":"","version":1,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d=[]\nd.push({\n    title:\"点我弹出确认框\",\n    url:\"confirm://走走停停，世界才会如此美丽.js:'toast://你点击了确认'\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试input","author":"","version":4,"type":"other","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\",$.toString(()=>{\n    clearVar(\"test-1\")\n}))\nconst d=[];\nvar text=getVar(\"test-1\",\"{{clipboard}}\");\nd.push({\n    title:\"点我弹出输入框，当前内容：\"+text,\n    url:\"input://\"+text+\"////走走停停，世界才会如此美丽，别的不说，小棉袄是真的帅.js:putVar('test-1',input);refreshPage();input\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试scroll","author":"5555","version":1,"type":"other","url":"hiker://empty","col_type":"scroll_button","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d = [];\n\n\naddListener(\"onClose\",$.toString(()=>{\n    putVar(\"sel\",\"电影\");\n    putVar(\"sel2\",\"小棉袄最帅\");\n}));\n\n\nconst sel = getVar(\"sel\",\"电影\");\nconst sel2 = getVar(\"sel2\",\"小棉袄最帅\");\n\nconst data = [\"电影\",\"电视剧\",\"动漫\",\"综艺\"]\nfor(let a of data){\nd.push({\n    title: a==sel? \"““\"+a+\"””\":a,\n    url: $(\"#noLoading#\").lazyRule((a)=>{\n        putVar(\"sel\",a);\n        refreshPage(false);\n        return \"hiker://empty\"\n    }, a)\n});\n}\nd.push({\n    col_type:\"blank_block\"\n});\n\n\nconst data2 = [\"小棉袄最帅\",\"电影\",\"电视剧\",\"动漫\",\"综艺\",\"动画片\",\"喜羊羊与灰太狼\",\"小棉袄\"]\nfor(let b of data2){\nd.push({\n    title: b==sel2? \"““\"+b+\"””\":b,\n    url: $(\"#noLoading#\").lazyRule((a)=>{\n        putVar(\"sel2\",a);\n        refreshPage(false);\n        return \"hiker://empty\"\n    }, b)\n});\n}\nd.push({\n    col_type:\"blank_block\"\n});\nd.push({\n    title: \"1当前选择的是\"+sel,\n    col_type:\"text_1\"\n});\n\nd.push({\n    title: \"2当前选择的是\"+sel2,\n    col_type:\"text_1\"\n});\nsetResult(d);","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试flex","author":"5555","version":2,"type":"other","url":"hiker://empty","col_type":"flex_button","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d = [];\nconst sel = getVar(\"sel\",\"电影\");\nconst data = [\"电影\",\"电视剧\",\"动漫\",\"综艺\"]\nfor(let a of data){\nd.push({\n    title: a==sel? \"““\"+a+\"””\":a,\n    url: $(\"#noLoading#\").lazyRule((a)=>{\n        putVar(\"sel\",a);\n        refreshPage(false);\n        return \"hiker://empty\"\n    }, a)\n});\n}\nd.push({\n    col_type:\"line\"\n});\nd.push({\n    title: \"1当前选择的是\"+sel,\n    col_type:\"text_1\"\n});\n\n\n\nconst sel2 = getVar(\"sel2\",\"小棉袄最帅\");\nconst data2 = [\"电影\",\"电视剧\",\"动漫\",\"综艺\",\"动画片\",\"喜羊羊与灰太狼\",\"小棉袄\",\"小棉袄最帅\"]\nfor(let b of data2){\nd.push({\n    title: b==sel2? \"““\"+b+\"””\":b,\n    url: $(\"#noLoading#\").lazyRule((a)=>{\n        putVar(\"sel2\",a);\n        refreshPage(false);\n        return \"hiker://empty\"\n    }, b)\n});\n}\nd.push({\n    col_type:\"line\"\n});\nd.push({\n    title: \"2当前选择的是\"+sel2,\n    col_type:\"text_1\"\n});\nsetResult(d);","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试select2","author":"","version":11,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nd.push({\n    title: '‘‘’’<span style=\"color:#098AC1\">选择性别\t<span style=\"float:right\">‘‘’’<font color=\"#0aa344\">' + getVar(\"sel\", \"未知\") + '</font>',\n    col_type: \"text_1\",\n    url: \"select://\" + JSON.stringify({\n        title:\"测试\",\n        options: [\"男\", \"女\", \"未知\"],\n        col: 2,\n        js: $.toString(() => {\n            putVar(\"sel\", input)\n            refreshPage()\n            return \"toast://你选择的是\" + input\n        })\n    })\n});\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"sel\")\n}))\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试配置管理","author":"小棉袄🌞","version":1,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"配置版本：\" + config.v,\n    url: $().lazyRule(() => {\n        return \"toast://地址：\" + config.url\n    }),\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"initConfig({\n    v: \"v1.1\",\n    url: \"https://netcut.cn/p/76f55f1a81eb6337\"\n});","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"测试新窗口","author":"","version":5,"url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//log(MY_RULE)\nsetResult([{\n    title: \"点我打开新窗口\",\n    url: \"hiker://page/test?t=1222333\",\n    extra:{\n        newWindow: true\n    }\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"测试\",\"path\":\"test\",\"rule\":\"js:\\nsetResult([{\\n    title: \\\"点我隐藏到后台\\\",\\n    url: \\\"func://background\\\"\\n}])\"}]","icon":""},{"last_chapter_rule":"","title":"测试单窗口轻合集","author":"小棉袄🌞&永远の明日","version":62,"url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nputVar('myCollection', MY_RULE.title)\naddListener('onClose', 'clearVar(\"myCollection\")')\nlet el = [{\n    title: '清除缓存，立即更新（基于远程仓库，不要频繁点击）',\n    url: $().lazyRule(() => {\n        clearItem('updatetime')\n        refreshPage(true)\n        return 'toast://已更新'\n    }),\n    img: 'hiker://images/icon2',\n    col_type: 'avatar'\n}]\nel.push({\n    url: '\"hiker://search?s=\"+input+\"&rule=' + getVar('myCollection') + '\"',\n    desc: '搜你想要的...',\n    title: '搜索',\n    col_type: 'input'\n})\nconst data = $.require('hiker://page/dataLoad?rule=' + getVar('myCollection'))\nsetResult(el.concat(data.map((v) => {\n    return {\n        title: v.title,\n        url: 'hiker://page/indexLoad?page=fypage&#noHistory#',\n        extra: {\n            RULE: v,\n            newWindow: true\n        }\n    }\n})))","searchFind":"js:\nlet myCollection_el = [],\n    searchMode = getVar('myCollection-searchMode'),\n    [_, pageNum, keyword] = MY_URL.split('##')\npageNum = parseInt(pageNum)\n\nMY_PARAMS.RULE = $.require('hiker://page/dataLoad?rule=' + getVar('myCollection')).filter((v) => v.search_url)\nif (!searchMode && pageNum > MY_PARAMS.RULE.length) setResult([])\nlet searchCount = { title: '⬆ 已搜索了' + pageNum + '个小程序 ⬆\\n⬇ 下面还有' + (MY_PARAMS.RULE.length - pageNum) + '个小程序 ⬇' }\nMY_PARAMS.RULE = searchMode ? MY_PARAMS.RULE.find((v) => v.title == searchMode) : MY_PARAMS.RULE[pageNum - 1]\n// 处理MY_URL和MY_RULE\nwith(MY_PARAMS.RULE) {\n    MY_URL = search_url.replace(search_url.includes('%%') ? /%%/g : /\\*\\*/g, encodeStr(keyword, search_url.split(';')[2]))\n\n    MY_RULE.version = version\n    MY_RULE.group = group\n    MY_RULE.title = title\n    MY_RULE.url = MY_URL\n    MY_RULE.ua = ua\n    MY_RULE.col_type = col_type\n    MY_RULE.detail_col_type = sdetail_col_type\n    MY_RULE.find_rule = searchFind\n    MY_RULE.detail_find_rule = ['', '*'].includes(sdetail_find_rule) ? detail_find_rule : sdetail_find_rule\n    MY_RULE.pageList = JSON.parse(pages)\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\n    MY_RULE.params = {}\n    if (pageNum == 1) eval(preRule)\n}\n// 正文解析\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getVar('myCollection'))\nlet indexHtml = urlParse(MY_URL, searchMode ? pageNum : 1)\nif (MY_RULE.find_rule.startsWith('js:')) {\n    function getResCode() {\n        return indexHtml\n    }\n\n    function setResult(el, param1, param2, param3) {\n        param1 = CALLBACK_KEY\n        param2 = MY_RULE\n        param3 = MY_TYPE\n        if (Array.isArray(el.data)) el = el.data\n\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\n            let RULE = Object.assign({}, MY_RULE)\n\n            if (!v.url) {\n                return v\n            } else if (v.url.includes('@rule=')) {\n                let [input, code] = url.split('@rule=')\n                RULE.detail_find_rule = code.replace(/^js:/, 'js:var input=\"' + input + '\";')\n                RULE.detail_col_type = MY_RULE.col_type\n            } else if (v.url.startsWith('hiker://page/')) {\n                let path = v.url.match(/^hiker:\\/\\/page\\/(.+?)(?:\\?.*)?$/)[1],\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\n                RULE.detail_find_rule = subPage.rule\n                RULE.detail_col_type = subPage.col_type\n                RULE.params = v.extra || {}\n            } else if (!MY_RULE.detail_find_rule) { return v }\n            v.extra = { url: v.url, RULE: RULE }\n            v.url = 'hiker://page/detailLoad?rule=' + getVar('myCollection')\n            return v\n        }))\n        if (!searchMode) myCollection_el.push(searchCount)\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\n    }\n\n    function setHomeResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    function setSearchResult(a, param1, param2, param3) {\n        setResult(a, param1, param2, param3)\n    }\n\n    eval(MY_RULE.find_rule.slice(3))\n} else {\n    let findRule = MY_RULE.find_rule.split(';')\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\n        let [title, url, desc, content, img] = findRule.map((v, i) => {\n            if (v == '*') return ''\n            else v = (i == 1 || i == 4) ?\n                parseDom(data, v) :\n                parseDomForHtml(data, v)\n            if (i != 1) v = runCode(v)\n            return v\n        }),\n            res = {\n                title: title,\n                url: url,\n                desc: desc,\n                content: content,\n                img: img\n            }\n        if (res.url) {\n            if (res.url.includes('@lazyRule=')) {\n                res.url = res.url.replace('.js:', '.js:\\nObject.assign(MY_RULE,' + $.stringify(MY_RULE) + ');')\n            } else if (MY_RULE.detail_find_rule) {\n                res.url = 'hiker://page/detailLoad?rule=' + getVar('myCollection')\n                res.extra = { url: url, RULE: MY_RULE }\n            }\n        }\n        myCollection_el.push(res)\n        if (!searchMode) myCollection_el.push(searchCount)\n    })\n    setResult(myCollection_el)\n}\n","search_url":"hiker://empty##fypage##**","titleColor":"#ff13b66a","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"function ClassTab(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + MY_RULE.title + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = getVar('fold_' + this.sign, '')\\n        if (this.fold) el.push({\\n            title: '““””<span style=\\\"color:#049eff\\\">' + (folded ? '▶' : '▼'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n                selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: (selected == now ? '““””<span style=\\\"color:' + this.color + '\\\"><b>' : '') + name,\\n                    url: $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        putVar(sign, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&')\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    getLastClick() {\\n        return JSON.parse(getVar(this.sign, '{}'))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n$.exports = ClassTab\\n\"},{\"col_type\":\"movie_3\",\"name\":\"首页\",\"path\":\"indexLoad\",\"rule\":\"js:\\nputVar('myCollection-searchMode', MY_PARAMS.RULE.title)\\naddListener('onClose', 'clearVar(\\\"myCollection-searchMode\\\")')\\nlet myCollection_el = [],\\n    pageNum = parseInt(getParam('page')),\\n    fyAll = MY_PARAMS.RULE.url.includes('fyAll')\\n// 加载ClassTab组件\\nconst ClassTab = $.require('hiker://page/ClassTab?rule=' + getVar('myCollection'))\\nlet tabHeader = []\\nwith(MY_PARAMS.RULE) {\\n    if (class_name) tabHeader.push({\\n        id: fyAll ? 'fyAll' : 'fyclass',\\n        class_name: class_name,\\n        class_url: class_url\\n    })\\n    if (area_name) tabHeader.push({\\n        id: fyAll ? 'fyAll' : 'fyarea',\\n        class_name: area_name,\\n        class_url: area_url\\n    })\\n    if (year_name) tabHeader.push({\\n        id: fyAll ? 'fyAll' : 'fyyear',\\n        class_name: year_name,\\n        class_url: year_url\\n    })\\n    if (sort_name) tabHeader.push({\\n        id: fyAll ? 'fyAll' : 'fysort',\\n        class_name: sort_name,\\n        class_url: sort_url\\n    })\\n}\\ntabHeader = new ClassTab(tabHeader)\\nif (pageNum == 1) tabHeader.load(myCollection_el)\\n// 处理MY_URL和MY_RULE\\nwith(MY_PARAMS.RULE) {\\n    MY_URL = fyAll ? url.replace(/fyAll/g, '$${fyAll}') :\\n        url.replace(/fy(class|area|year|sort)/g, '$${fy$1}')\\n    MY_URL = tabHeader.setUrl(MY_URL)\\n\\n    MY_RULE.version = version\\n    MY_RULE.group = group\\n    MY_RULE.title = title\\n    MY_RULE.url = MY_URL\\n    MY_RULE.ua = ua\\n    MY_RULE.col_type = col_type\\n    MY_RULE.detail_col_type = detail_col_type\\n    MY_RULE.find_rule = find_rule\\n    MY_RULE.detail_find_rule = detail_find_rule\\n    MY_RULE.pageList = JSON.parse(pages)\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n}\\nif (pageNum == 1) {\\n    eval(MY_PARAMS.RULE.preRule)\\n    if(MY_PARAMS.RULE.search_url) myCollection_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"搜你想要的...\\\",\\n        url: \\\"'hiker://search?s='+input+'&rule='+getVar('myCollection')\\\",\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nconst { runCode, urlParse } = $.require('hiker://page/utility?rule=' + getVar('myCollection'))\\nlet indexHtml = urlParse(MY_URL, pageNum)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function getResCode() {\\n        return indexHtml\\n    }\\n\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [input, code] = url.split('@rule=')\\n                RULE.detail_find_rule = code.replace(/^js:/, 'js:var input=\\\"' + input + '\\\";')\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                let path = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else if (!MY_RULE.detail_find_rule) { return v }\\n            v.extra = { url: v.url, RULE: RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getVar('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n            if (v == '*') return ''\\n            else v = (i == 1 || i == 3) ?\\n                parseDom(data, v) :\\n                parseDomForHtml(data, v)\\n            if (i != 3) v = runCode(v)\\n            return v\\n        }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                res.url = res.url.replace('.js:', '.js:\\\\nObject.assign(MY_RULE,' + $.stringify(MY_RULE) + ');')\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.url = 'hiker://page/detailLoad?rule=' + getVar('myCollection')\\n                res.extra = { url: url, RULE: MY_RULE }\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"详情\",\"path\":\"detailLoad\",\"rule\":\"js:\\nlet myCollection_el = []\\n// 处理MY_URL和MY_RULE\\nwith(MY_PARAMS.RULE) {\\n    MY_RULE.version = version\\n    MY_RULE.group = group\\n    MY_RULE.title = title\\n    MY_RULE.ua = ua\\n    MY_RULE.col_type = detail_col_type\\n    MY_RULE.find_rule = detail_find_rule\\n    MY_RULE.pageList = pageList\\n    MY_RULE.pages = pages\\n    MY_RULE.params = params\\n}\\nMY_PARAMS = MY_RULE.params\\n// 解析正文\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    function setResult(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let RULE = Object.assign({}, MY_RULE)\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [input, code] = url.split('@rule=')\\n                RULE.detail_find_rule = code.replace(/^js:/, 'js:var input=\\\"' + input + '\\\";')\\n                RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                let path = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(?:\\\\?.*)?$/)[1],\\n                    subPage = MY_RULE.pageList.find(v => v.path == path)\\n                RULE.detail_find_rule = subPage.rule\\n                RULE.detail_col_type = subPage.col_type\\n                RULE.params = v.extra || {}\\n            } else { return v }\\n            v.extra = { url: v.url, RULE: RULE }\\n            v.url = 'hiker://page/detailLoad?rule=' + getVar('myCollection')\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n\\n    function setHomeResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    function setSearchResult(a, param1, param2, param3) {\\n        setResult(a, param1, param2, param3)\\n    }\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let findRule = MY_RULE.find_rule.split(';')\\n    parseDomForArray(indexHtml, findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                if (v == '*') return ''\\n                else v = (i == 1 || i == 3) ?\\n                    parseDom(data, v) :\\n                    parseDomForHtml(data, v)\\n                if (i != 3) v = runCode(v)\\n                return v\\n            }),\\n            res = {\\n                title: title,\\n                url: url,\\n                desc: desc,\\n                img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url && res.url.includes('@lazyRule='))\\n            res.url = res.url.replace('.js:', '.js:\\\\nObject.assign(MY_RULE,' + $.stringify(MY_RULE) + ');')\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"//真正获取数据的逻辑\\nfunction load() {\\n    let d = JSON.parse(JSON.parse(fetch('hiker://page/localData')).rule)\\n    return d.filter((v) => { return v.title != MY_RULE.title && v.author!=\\\"轻合集生成器\\\" })\\n}\\n//检查间隔，默认一天\\nlet min = 60 * 24 * 1\\n\\n\\nlet data = []\\nlet time = getItem(\\\"updatetime\\\", \\\"0\\\")\\ntime = parseInt(time)\\nlet now = new Date().getTime()\\nif (now - time > 1000 * 60 * min) {\\n    log(\\\"更新了数据\\\")\\n    setItem(\\\"updatetime\\\", \\\"\\\" + now)\\n    data = load()\\n    saveFile(\\\"data.json\\\", JSON.stringify(data))\\n} else {\\n    log(\\\"没有更新数据\\\")\\n    data = JSON.parse(readFile(\\\"data.json\\\"))\\n}\\n$.exports = data\\n\"},{\"col_type\":\"movie_3\",\"name\":\"本地数据\",\"path\":\"localData\",\"rule\":\"[{\\n    \\\"last_chapter_rule\\\": \\\"\\\",\\n    \\\"title\\\": \\\"07影视\\\",\\n    \\\"author\\\": \\\"离别\\\",\\n    \\\"url\\\": \\\"http://07ys.cn/index.php/vod/show/area/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html\\\",\\n    \\\"version\\\": 0,\\n    \\\"col_type\\\": \\\"movie_3\\\",\\n    \\\"class_name\\\": \\\"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧\\\",\\n    \\\"class_url\\\": \\\"1&2&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16\\\",\\n    \\\"area_name\\\": \\\"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他\\\",\\n    \\\"area_url\\\": \\\"0&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他\\\",\\n    \\\"sort_name\\\": \\\"时间&热门&评分&推荐\\\",\\n    \\\"year_name\\\": \\\"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早\\\",\\n    \\\"sort_url\\\": \\\"time&hits&score&commend\\\",\\n    \\\"year_url\\\": \\\"&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004\\\",\\n    \\\"find_rule\\\": \\\"js:\\\\nvar d = [];\\\\ntry {\\\\n    //定位列表\\\\n    var list = parseDomForArray(getResCode(), 'body&&.fed-list-info&&li');\\\\n    for (var j in list) {\\\\n        d.push({\\\\n            //定位标题\\\\n            title: parseDomForHtml(list[j], '.fed-list-title&&Text'),\\\\n            //定位描述\\\\n            desc: parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\\\\n            //定位图片\\\\n            pic_url: parseDom(list[j], '.fed-list-pics&&data-original') + \\\\\\\"@Referer=\\\\\\\",\\\\n            //定位链接\\\\n            url: parseDom(list[j], 'a&&href') + \\\\\\\"#immersiveTheme#\\\\\\\"\\\\n        });\\\\n    }\\\\n} catch (e) {}\\\\nsetResult(d);\\\",\\n    \\\"search_url\\\": \\\"http://07ys.cn/index.php/vod/search/page/fypage/wd/**.html\\\",\\n    \\\"titleColor\\\": \\\"#ff228be6\\\",\\n    \\\"group\\\": \\\"③免嗅探\\\",\\n    \\\"searchFind\\\": \\\"js:\\\\nvar res = {};\\\\nvar d = [];\\\\n\\\\n//定位列表\\\\nvar list = parseDomForArray(getResCode(), '.fed-main-info&&dl');\\\\nfor (var j in list) {\\\\n    d.push({\\\\n        //定位标题\\\\n        title: parseDomForHtml(list[j], 'h1&&Text'),\\\\n        //定位描述\\\\n        desc: parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\\\\n        //定位筒介\\\\n        content: parseDomForHtml(list[j], '.fed-part-esan&&Text'),\\\\n        //定位图片\\\\n        img: parseDom(list[j], '.fed-list-pics&&data-original') + \\\\\\\"@Referer=\\\\\\\",\\\\n        //定位链接\\\\n        url: parseDom(list[j], 'h1&&a&&href') + \\\\\\\"#immersiveTheme#\\\\\\\"\\\\n    });\\\\n}\\\\nres.data = d;\\\\nsetSearchResult(res);\\\",\\n    \\\"detail_col_type\\\": \\\"text_3\\\",\\n    \\\"detail_find_rule\\\": \\\"js:\\\\nvar d = [];\\\\nvar html = getResCode();\\\\n\\\\n//断念插件/免嗅\\\\nd.push({\\\\n    desc: '100%&&float',\\\\n    col_type: 'x5_webview_single'\\\\n});\\\\n\\\\n\\\\nvar _x5 = $.toString(() => {\\\\n    fba.log(fba.getUrls())\\\\n    var urls = _getUrls()\\\\n    for (var i in urls) {\\\\n        if (urls[i].match(/\\\\\\\\.mp3|\\\\\\\\.mp4|\\\\\\\\.m3u8/)) {\\\\n            fy_bridge_app.log(urls[i])\\\\n            return urls[i];\\\\n        }\\\\n    }\\\\n});\\\\n\\\\nvar arts = parseDomForArray(html,'body&&.fed-drop-tops&&ul&&li');\\\\nvar tabs = [];\\\\nfor (var i in arts) {\\\\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\\\\n}\\\\n\\\\nvar conts = parseDomForArray(html, 'body&&.fed-drop-btms&&.fed-play-item');\\\\nvar lists =[];\\\\nfor (var i in conts) {\\\\n    lists.push(parseDomForArray(conts[i], 'ul:not(.fed-drop-head)&&li'))\\\\n}\\\\n\\\\n\\\\n//以下头框\\\\nd.push({\\\\n    //定位标题\\\\n    title: parseDomForHtml(html, '.fed-col-xs12&&li,0&&Text').substring(0, 15) + '\\\\\\\\n' + parseDomForHtml(html, '.fed-col-xs12&&li,1&&Text').substring(0, 15) + '\\\\\\\\n' + parseDomForHtml(html, '.fed-col-xs12&&li,2&&Text').substring(0, 15),\\\\n    //定位描述\\\\n    desc:parseDomForHtml(html, '.fed-part-esan&&Text').replace(' 　　','').substring(0, 20)+'\\\\\\\\n'+parseDomForHtml(html, '.fed-part-esan&&Text').replace(' 　　','').substring(20, 35)+'…',\\\\n    //定位图片\\\\n    pic_url: parseDom(html, '.fed-list-pics&&data-original') + '@Referer=',\\\\n    url: MY_URL,\\\\n    col_type: 'movie_1_vertical_pic_blur'\\\\n});\\\\n\\\\n\\\\n/*   😜  这里是线路和选集，可以不用修改！！！*/\\\\n\\\\nd.push({\\\\n    col_type: 'line_blank'\\\\n});\\\\nd.push({\\\\n    col_type: 'big_blank_block'\\\\n});\\\\nd.push({\\\\n    col_type: 'big_blank_block'\\\\n});\\\\nd.push({\\\\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\\\\\\\"color: #FF0000\\\\\\\">逆序</span></b>' : '““””<b><span style=\\\\\\\"color: #1aad19\\\\\\\">正序</span></b>',\\\\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\\\\n    col_type: 'scroll_button'\\\\n})\\\\n\\\\nfunction setTabs(tabs, vari) {\\\\n    for (var i in tabs) {\\\\n        var url = \\\\\\\"#noLoading#@lazyRule=.js:putVar('\\\\\\\" + vari + \\\\\\\"', '\\\\\\\" + i + \\\\\\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\\\\\";\\\\n        d.push({\\\\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\\\\n            url: url,\\\\n            col_type: 'scroll_button'\\\\n        })\\\\n    }\\\\n}\\\\n\\\\nfunction setLists(lists, index) {\\\\n    var list = lists[index];\\\\n    d.push({\\\\n        col_type: 'line_blank'\\\\n    });\\\\n    d.push({\\\\n        col_type: 'big_blank_block'\\\\n    });\\\\n    d.push({\\\\n        col_type: 'big_blank_block'\\\\n    });\\\\n    if (getVar('shsort') == '1') {\\\\n        for (var j = list.length - 1; j >= 0; j--) {\\\\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g,'');\\\\n            d.push({\\\\n                title: jm,\\\\n                url: \\\\\\\"x5Rule://\\\\\\\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\\\\n                col_type: jm.length > 5 ? 'text_2' : 'text_4'\\\\n            });\\\\n        }\\\\n    } else {\\\\n        for (var j = 0; j < list.length; j++) {\\\\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g,'');\\\\n            d.push({\\\\n                title: jm,\\\\n                url: \\\\\\\"x5Rule://\\\\\\\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\\\\n                col_type: jm.length > 5 ? 'text_2' : 'text_4'\\\\n            });\\\\n        }\\\\n    }\\\\n}\\\\nsetTabs(tabs, MY_URL);\\\\nsetLists(lists, getVar(MY_URL, '0'));\\\\nd.push({\\\\n    title: '<br>',\\\\n    col_type: 'rich_text'\\\\n});\\\\nsetResult(d);\\\",\\n    \\\"sdetail_col_type\\\": \\\"movie_1\\\",\\n    \\\"sdetail_find_rule\\\": \\\"*\\\",\\n    \\\"ua\\\": \\\"auto\\\",\\n    \\\"preRule\\\": \\\"\\\",\\n    \\\"pages\\\": \\\"[]\\\"\\n}]\"},{\"col_type\":\"movie_3\",\"name\":\"工具集\",\"path\":\"utility\",\"rule\":\"$.exports = {\\n    runCode: function(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    },\\n    urlParse: function(url, pageNum) {\\n        url = url.split(';').map((v) => v.replace(/；；/g, ';'))\\n        url[0] = url[0].replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n        url[0] = /^(.*?)(?:\\\\[firstPage=(.*?)\\\\])?$/.exec(url[0])\\n        url[0] = runCode(url[0][2] && pageNum == 1 ? url[0][2] : url[0][1])\\n        let options = { headers: { 'Content-Type': 'text/plain; charst=UTF-8' }, method: url[1] }\\n        // post方法时转换参数\\n        if (/^post$/i.test(options['method'])) {\\n            let [oriUrl, body] = url[0].split('?')\\n            url[0] = oriUrl.replace(/？？/g, '?')\\n            if (body.startsWith('JsonBody=')) body = body.slice(9)\\n            options['body'] = body\\n        }\\n        if (url[2]) options.headers['Content-Type'] = options.headers['Content-Type'].slice(0, 19) + url[2]\\n        if (url[3]) url[3].match(/{(.*)}/)[1].split('&&').forEach((v) => {\\n            let [key, value] = v.split('@')\\n            options.headers[key] = runCode(value)\\n        })\\n        // 添加全局UA\\n        if (!options.headers['User-Agent']) {\\n            if (MY_RULE.ua == 'pc')\\n                options.headers['User-Agent'] = PC_UA\\n            else if (MY_RULE.ua == 'mobile')\\n                options.headers['User-Agent'] = MOBILE_UA\\n        }\\n        return fetch(url[0], options)\\n    }\\n}\\n\"}]","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"测试云剪贴板","author":"小棉袄🌞","version":7,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d = []\nd.push({\n    title:\"提交\",\n    url: $.toString(() => {\n        let it = getVar('my-search')\n        let url = sharePaste(it)\n        copy(url)\n        return \"hiker://empty\"\n    }),\n    desc: \"输入要提交到云剪贴板的内容\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\nd.push({\n    title:\"提交\",\n    url: $.toString(() => {\n        let it = getVar('my-search')\n        let url = sharePaste(it,\"云剪贴板4\")\n        copy(url)\n        return \"hiker://empty\"\n    }),\n    desc: \"输入要提交到云剪贴板4的内容\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\nd.push({\n    title:\"提交\",\n    url: $.toString(() => {\n        let it = getVar('my-search')\n        let url = sharePaste(it,\"云剪贴板5\")\n        copy(url)\n        return \"hiker://empty\"\n    }),\n    desc: \"输入要提交到云剪贴板5的内容\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search',input)\",\n    }\n})\nd.push({\n    title:\"解析\",\n    url: $.toString(() => {\n        let it = getVar('my-search-url')\n        let c = parsePaste(it)\n        return \"toast://\" + c\n    }),\n    desc: \"输入云剪贴板地址\",\n    col_type: \"input\",\n    extra: {\n        onChange: \"putVar('my-search-url',input)\",\n    }\n})\nfor (let it of getPastes()) {\n    d.push({\n        title: it,\n        url: \"\",\n        col_type: \"flex_button\",\n        desc: \"\",\n        pic_url: \"\"\n    });\n}\n\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试input2","author":"","version":3,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    clearVar(\"test-1\")\n}))\nconst d = [];\nvar text = getVar(\"test-1\", \"{{clipboard}}\");\nd.push({\n    title: \"点我弹出输入框，当前内容：\" + text,\n    url: \"input://\" + JSON.stringify({\n        value: text,\n        hint: \"走走停停，世界才会如此美丽，别的不说，小棉袄是真的帅\",\n        js: \"putVar('test-1',input);refreshPage();input\"\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试私有文件","author":"","version":9,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nd.push({\n    title: fileExist(\"test.json\")?readFile(\"test.json\"):\"点我生成文件吧\",\n    col_type: \"text_1\",\n    url: $().lazyRule(()=>{\n        saveFile(\"test.json\",\"{[\\\"666666\\\"]}\")\n        refreshPage()\n        return \"toast://看看文件夹下的文件吧\"\n    })\n})\nd.push({\n    title: \"fetch读：\"+fetch(\"hiker://files/rules/files/\"+MY_RULE.title+\"/test.json\"),\n    col_type: \"text_1\",\n    url: $().lazyRule((rule)=>{\n       return \"是否存在：\" +fileExist(\"hiker://files/rules/files/\"+rule+\"/test.json\")\n    },MY_RULE.title)\n})\nd.push({\n    title: fileExist(\"test1.json\")?readFile(\"test1.json\"):\"点我动态生成文件吧\",\n    col_type: \"text_1\",\n    url: \"confirm://动态生成文件.js:\"+$.toString(()=>{\n        saveFile(\"test1.json\",\"{[\\\"666666\\\"]}\")\n        refreshPage()\n        return \"toast://看看文件夹下的文件吧\"\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试子页面","author":"","version":20,"url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nwriteFile(\"hiker://files/cache/test.html\",\n\"<html><body><script>function ck(){fy_bridge_app.toDetailPage('a','hiker://page/test2?rule=测试子页面','','','','');}</script><a href='javascript:void(0);' onclick='ck()'>来自网页</a></body></html>\");\nsetResult([{\n    title:\"点我跳转子页面\",\n    url:\"hiker://page/test?t=1222333\"\n},{\n    title:\"extra示例\",\n    url:\"hiker://page/test2?url1=http://www.baidu.com\",\n    extra: {\n        a: \"我\",\n        b: \"c\"\n    }\n},{\n    url:\"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/test.html\",\n    col_type: \"x5_webview_single\",\n    desc: \"200\"\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"测试\",\"path\":\"test\",\"rule\":\"js:\\nsetResult([{\\n    title:\\\"点我吧\\\",\\n    url:$().lazyRule((t,a)=>{\\n        return \\\"toast://小棉袄最帅，页面参数t=\\\"+t+\\\"&a=\\\"+a\\n    },getParam(\\\"t\\\"),getParam(\\\"a\\\",\\\"null\\\"))\\n}])\"},{\"col_type\":\"movie_3\",\"name\":\"测试2\",\"path\":\"test2\",\"rule\":\"js:\\nsetResult([{\\n    title:\\\"点我吧\\\",\\n    url:$().lazyRule((p)=>{\\n        return \\\"toast://参数为\\\"+JSON.stringify(p)\\n    }, MY_PARAMS)\\n}])\\n\"}]","icon":""},{"last_chapter_rule":"","title":"测试version","author":"","version":0,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n\nsetResult([{\n    title: \"v\"+getAppVersion()\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试log","author":"","version":0,"url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlog(\"我执行了\");\nlog({key:\"aaaaaaa\",kkkkkk:{time:new Date().getTime()}});\nsetResult([{\n    title:\"点我生成日志\",\n    url:$().lazyRule(()=>{\n        log(\"我点击了\");\n        return \"toast://已记录\"\n    })\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":""},{"last_chapter_rule":"","title":"测试loading","author":"","version":4,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\",$.toString(()=>{\n    clearVar(\"test-1\")\n}))\nconst d=[];\nvar text=getVar(\"test-1\",\"https://juejin.cn/post/6999781802923524132\");\nd.push({\n    title:\"点我弹出输入框，当前内容：\"+text,\n    url:\"input://\"+text+\"////请输入链接，点击确定后我会请求多次.js:putVar('test-1',input);showLoading('请求中');fetch(input);fetch(input);fetch(input);hideLoading();input\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试私有存储2","author":"","version":3,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nd.push({\n    title: getItem(\"kk\",\"000\"),\n    col_type: \"text_1\",\n    url: $().lazyRule(()=>{\n        setItem(\"kk\",\"233\")\n        refreshPage()\n        return \"toast://看看另外一个规则能不能读取到吧\"\n    })\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试x5-list","author":"小棉袄🌞","version":0,"url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{\n    col_type: \"x5_webview_single\"\n},{\n    col_type: \"text_1\",\n    title: \"刷新\",\n    url: $().lazyRule(()=>{\n        refreshX5Desc(\"200\")\n        refreshX5WebView(\"http://www.baidu.com\")\n         return \"hiker://empty\"\n    })\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"title":"测试html","author":"小棉袄🌞","version":0,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nitems.push({\n    url: \n\"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/canvasmy.html\",\n    col_type: 'x5_webview_single',\n    desc: 'auto'\n});\nsetResult(items);","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var html = request(\"https://gitee.com/qingchengjishi/hksj/raw/master/canvas%E7%BB%98%E7%94%BB.html\");\nwriteFile(\"hiker://files/cache/canvasmy.html\",html)","icon":""},{"last_chapter_rule":"","title":"测试confirm()","author":"","version":5,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconfirm({\n    title: \"小棉袄提示\",\n    content: \"魔镜啊魔镜，小棉袄是不是最帅！点击确定告诉我好吗？\",\n    confirm: \"'toast://没错，小棉袄就是帅！'\",\n    cancel: \"'toast://你这说得不对啊！'\"\n})\nvar d = []\nd.push({\n    title: \"我们的口号：小棉袄最帅\",\n    col_type: \"text_1\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"测试子页面2","author":"","version":0,"url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n//log(MY_RULE)\nsetResult([{\n    title: \"点我跳转子页面\",\n    url: \"hiker://page/test?t=1222333\"\n}, {\n    title: \"点我跳转子页面2\",\n    url: \"hiker://page/test3\"\n}])","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"测试\",\"path\":\"test\",\"rule\":\"js:\\neval(JSON.parse(fetch(\\\"hiker://page/common\\\")).rule)\\nsetResult([{\\n    title: \\\"点我查看页面参数\\\",\\n    url: $().lazyRule((t, a) => {\\n        return \\\"toast://小棉袄最帅，页面参数t=\\\" + t + \\\"&a=\\\" + a\\n    }, getParam(\\\"t\\\"), getParam(\\\"a\\\", \\\"null\\\"))\\n}, {\\n    title: \\\"test2子页面代码：\\\\n\\\" + request(\\\"hiker://page/test2\\\"),\\n    col_type: \\\"long_text\\\"\\n}, {\\n    title: \\\"test2子页面rule：\\\\n\\\" + JSON.parse(request(\\\"hiker://page/test2\\\")).rule,\\n    col_type: \\\"long_text\\\"\\n}])\"},{\"col_type\":\"movie_3\",\"name\":\"测试2\",\"path\":\"test2\",\"rule\":\"js:\\nsetResult([{\\n    title:\\\"点我吧\\\",\\n    url:$().lazyRule((url)=>{\\n        return \\\"toast://页面链接为\\\"+url\\n    }, MY_URL)\\n}])\"},{\"col_type\":\"text_2\",\"name\":\"测试3\",\"path\":\"test3\",\"rule\":\"js:\\nsetResult([{\\n    title:\\\"点我跳转子页面\\\",\\n    url:\\\"hiker://page/test?t=1222333\\\"\\n},{\\n    title:\\\"点我跳转子页面2\\\",\\n    url:\\\"hiker://page/test2?url=http://www.baidu.com\\\"\\n}])\"},{\"col_type\":\"movie_3\",\"name\":\"公共代码\",\"path\":\"common\",\"rule\":\"log(\\\"我来自子页面\\\")\"}]","icon":""},{"last_chapter_rule":"","title":"测试xpa选择器","author":"道长","version":0,"type":"other","url":"https://www.soshuwu.com/shuku/0_0_0_1.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36}","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet html = getResCode();\nlet list = pdfa(html, '.grid,1&&tr');\nlog(list[1]);\nlet href = xpa(list[1], '/tr/td[1]//text()');\nlog(href);\n\nsetResult([{\n    title: href.join(\" \")\n}]);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"测试全局ua","author":"小棉袄🌞","version":0,"type":"other","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nlog(config.ua);\nfetch(\"hiker://files/jiexi.txt\", {\n    headers: {\n        \"User-Agent\": config.ua\n    }\n});\nsetResult(d);","searchFind":"","search_url":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"initConfig({\n    ua: MY_RULE.ua == \"mobile\" ? MOBILE_UA : PC_UA\n});","pages":"[]","icon":""},{"last_chapter_rule":"","title":"X5Rule通用","author":"墙佬模板&Senap","version":11,"type":"other","url":"https://zy.renrenmi.cc/vodshow/fyAll--------fypage---/","col_type":"movie_3","class_name":"影视&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://zy.renrenmi.cc/vodsearch/**----------2---/","titleColor":"#ff13b66a","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"#ff13b66a"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = parseDomForArray(html, '#playlist&&ul&&li');\nvar title = parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult('最新：'+title);","title":"听小说X5Rule","author":"Namo","version":19,"url":"https://www.tingchina.com/yousheng/lei_fyAll_fypage.htm;GET;gb2312","col_type":"movie_1_vertical_pic","class_name":"玄幻奇幻&恐怖惊悚&网络热门&都市言情&历史军事&经典纪实","class_url":"135&129&146&125&130&127","area_name":"官场商战&通俗文学&刑侦推理&科幻有声&武侠小说&人物传记","area_url":"126&132&134&128&133&131","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//列表\nvar list = parseDomForArray(html, '.zimulist&&dl');\n\nfor (var i = 0; i < list.length; i++) {\n\n    d.push({\n\n        title: parseDomForHtml(list[i], 'dd&&Text'),\n        pic_url: parseDom(list[i], 'img&&src'),\n        url: parseDom(list[i], 'a&&href')\n\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":".singerlist1&&li;a&&Text;a&&href;","search_url":"https://www.tingchina.com/search1.asp?mainlei=0&lei=0&keyword=**;GET;gb2312","titleColor":"#ff228be6","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\n//获取简介\nvar des_desc = '简介：' + parseDomForHtml(html, '.book02&&Text').replace(/.*?介绍:/, '');\n\nd.push({\n\n    //作者、类型等\n    title: parseDomForHtml(html, '.book01&&li,5&&Text') + '\\n' + parseDomForHtml(html, '.book01&&li,4&&Text').replace(/ /g, '') + '\\n' + parseDomForHtml(html, '.book01&&li,-1&&Text'),\n\n    //描述\n    desc: parseDomForHtml(html, '.book02&&Text'),\n\n    //图片地址\n    pic_url: parseDom(html, '.book01&&img&&src'),\n    url: getUrl(),\n    col_type: 'movie_1_vertical_pic'\n});\n\n//限制简介长度\nif (des_desc.length > 110) {\n    des_desc = des_desc.replace(des_desc, des_desc.substring(0, 110) + \"……\");\n}\n\n//输出简介\nd.push({\n    title: des_desc,\n    col_type: 'long_text'\n});\n\nd.push({\n    col_type: 'line'\n});\n\n//选集列表\nvar list = parseDomForArray(html, '.list&&ul&&li:has(a)');\n\n//线路名称\nd.push({\n    title: '播放列表(共' + list.length + '集)',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_center_1'\n});\n\n//选集名称\nfor (var i in list) {\n\n    var title = parseDomForHtml(list[i], 'a&&Text');\n\n    if (title.length > 16) {\n        title = title.substring(0, 16);\n    }\n\n    d.push({\n        title: title,\n        url: 'x5Rule://' + parseDom(list[i], 'a&&href') + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for(var i in urls){\n                if(urls[i].indexOf(\".mp3\")>0){\n                    fy_bridge_app.log(urls[i])\n                }\n            }\n          \n            let div = document.querySelector(\"#playdiv audio\");\n            if (div != null) {\n                return div.getAttribute(\"src\")\n            }\n        }),\n        col_type: parseDomForHtml(list[0], 'a&&Text').length > 3 ? 'text_2' : 'text_3'\n    });\n}\n\nfor (var b = 0; b < 5; b++) {\n    d.push({\n        col_type: 'big_blank_block'\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"#ff228be6"},{"title":"测试editFile","author":"","version":0,"url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst d=[]\nd.push({\n    title:\"点我编辑主题配置文件\",\n    url:\"editFile://hiker://files/NewPlanConfigFile.json\"\n})\nsetResult(d)","searchFind":"","search_url":"","titleColor":"","group":"测试","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","icon":""},{"firstHeader":"class","last_chapter_rule":"js:\nrequire(config.模板);\n准最新('body&&.tab-play;;body&&.content_playlist,#id&&li');","title":"视觉影院♔","author":"蓝莓果酱UX","version":10,"type":"video","url":"https://shijueyy.com/show/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&动漫&综艺&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&4&3&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';li--h4&&Text\";\n一级(parStr,true); ","search_url":"https://shijueyy.com/v/search/**----------fypage---.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.data&&Text;.data,2&&Text ',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/147.png"},{"last_chapter_rule":"","title":"视觉影视D♔","author":"蓝莓果酱UX","version":14,"type":"other","url":"hiker://empty##https://shijueyy.com/vod/type/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(\\d+)\\.html/)[1];\n//true_url = 获取正确链接();\nif(!/page/.test(true_url)){\n    true_url = true_url.replace(/\\.html/,'/page/'+page+'.html')\n}\nelse{\ntrue_url = true_url.replace('/page\\/(\\d+)\\.html/','page/'+page+'.html')\n}\n\nlog(true_url);\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(10):not(:matches(首页|明星|资讯|敏感|专题))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: '#screenbox&&ul',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';li--h4&&Text\";\n一级(parStr,true); ","search_url":"https://shijueyy.com/v/search/**----------fypage---.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.data&&Text;.data,2&&Text ',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/147.png"},{"last_chapter_rule":"","title":"奇粹D♔","author":"道长&蓝莓果酱UX","version":4,"type":"other","url":"hiker://empty##http://www.ikuwoo.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://www.ikuwoo.cn/index.php/vod/search/page/fypage/wd/**.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-info-items,6&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n\nreChange:function(u){\n     if(/duoduozy/.test(u)){\n         let html = request(\"https://player.duoduozy.com/ddplay/?url=\" + u.split('&')[0], {headers:{\"User-Agent\":\"Mozilla/5.0\",'Referer':'https://www.tgys.tv/'}});\r\n        return html.match(/urls = \"(.*?)\"/)[1]+';{User-Agent@Mozilla/5.0}';\n     }else{\n         return u.split('&')[0]\n     }\n    }\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/2.png"},{"last_chapter_rule":"","title":"影视工厂D♔","author":"道长&蓝莓果酱UX","version":9,"type":"other","url":"hiker://empty##https://www.ysgc.cc/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.nav-list',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|直播))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'https://www.ysgc.cc' + list[i].pic,\nurl:'https://www.ysgc.cc/voddetail/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\nsetResult(d);","search_url":"https://www.ysgc.cc/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,0&&Text;p.data,2&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'span.data&&Text',//一般主演，地区，影片评分等描述\n tabs:'.nav-tabs&&li',//线路\n lists:'.sort-list,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n reChange:function(u){\n     if(/duoduozy/.test(u)){\n         let html = request(\"https://player.duoduozy.com/ddplay/?url=\" + u,\r\n            {headers:{\"User-Agent\":\"Mozilla/5.0\",'Referer':'https://www.tgys.tv/'}});\r\n        return html.match(/urls = \"(.*?)\"/)[1]+';{User-Agent@Mozilla/5.0}';\n     }\n     return u\n }\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/167.png"},{"last_chapter_rule":"","title":"麒麟D♔","author":"道长&蓝莓果酱UX","version":3,"type":"other","url":"hiker://empty##https://www.viplanguang.com/index.php/vod/show/id/20/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\"body&&.module-item;.lazyloaded&&alt;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"https://www.viplanguang.com/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"text_3","detail_find_rule":"js:\r\nrc(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.sqjj_a&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\r\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"极品D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##https://www.jpysvip.net/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(5)',\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.jpysvip.net/index.php/verify/index.html?');;\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.jpysvip.net/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nparStr=\".myui-vodlist__media#searchList&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,3&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.jpysvip.net/vodsearch/-------------.html?wd=**&submit=","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'span.sketch.content&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.jpysvip.net/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/74.png"},{"last_chapter_rule":"","title":"瓜瓜影视♔","author":"蓝莓果酱UX","version":4,"type":"video","url":"https://www.web2.cc/vodshow/fyclass-fyarea-------fypage---fyyear/","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"","year_name":"年代&2022&2021&2020&2019&2018","sort_url":"","year_url":"&2022&2021&2020&2019&2018","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://www.web2.cc/vodsearch/**----------fypage---/","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n   var urls = _getUrls()\n   for (var i in urls) {\n       if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n          fy_bridge_app.log(urls[i])\n          return urls[i]+';{User-Agent@Mozilla/5.0 (Windows NT 10.0)}'\n       }\n   }\n}))\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var url=xx.url;var from=xx.from;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){showLoading('正在嗅探中，请稍候...');'x5Rule://'+input+'@'+getVar('_x5')}else if(from=='renrenmi'|from=='ltnb'){showLoading('正在嗅探中，请稍候...');'x5Rule://'+input+'@'+getVar('_x5')}else{url}`;\n\n//地区年份分类主演导演图片\n\nd.push({\n\ttitle: '分类：'+parseDomForHtml(html, '.tag-link,1&&Text').replace(/\\//g,'')+'  '+parseDomForHtml(html, '.tag-link,2&&Text')+'  '+parseDomForHtml(html, '.tag-link,3&&Text').substring(0, 20)+ '\\n' + parseDomForHtml(html,'.video-info-items,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25)+'\\n'+parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 25),\tdesc:  '简介:  '+parseDomForHtml(html,'.video-info-content&&Text').replace('[收起部分]','').replace('　',''),\n\tpic_url: parseDom(html, '.lazyload&&data-src'),\n  \ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'.module-tab-content&&.module-tab-item');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'div&&a'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))//有可能改Text\n\n}\n//折叠需要用到的\nfunction setTabs(tabs, vari) {\n\nd.push({\n        col_type: 'line'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\nd.push({\n        col_type: 'big_blank_block'\n    });\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n\n\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '断插', \n  url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/46.png"},{"last_chapter_rule":"","title":"喝茶D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##http://www.et116.com/hc_type/aa-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言|电视直播|APP下载))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: 'body&&.nav',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail--h3&&Text\";\n一级(parStr,true); ","search_url":"http://www.et116.com/hc_search/**----------fypage---.html","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.data&&Text;.data,2&&Text ',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/54.png"},{"last_chapter_rule":"","title":"雨果D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##http://www.yhys63.com/vodtype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n        一级分类: 'ul.type-slide',\n        子分类: 'body&&li:not(:matches(首页|资讯|专题|APP))',\n分类链接: {\n            \n        }\n    },{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n        一级分类: '.nav',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href;.detail&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://www.yhys63.com/vodsearch/**----------fypage---.html ","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data&&Text;p.data,2&&Text;p.data,1&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|剧情简介|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新|最新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/94.png"},{"last_chapter_rule":"","title":"小小影视D♔","author":"道长&蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##http://www.xiaoysw1.com/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".fed-list-info&&li;a,1&&Text;a&&data-original.js:input+'@Referer=';.fed-list-remarks&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.fed-pops-list',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|直播|专题))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.fed-casc-list&&dl',\n    子分类: 'dl&&a:not(:matches(^$))',\n},{\n    一级分类: '.fed-list-head',\n    子分类: 'body&&a:not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\n//log('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\n//log(\"源码:\"+html);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('http://www.xiaoysw1.com/verify/index.html?');\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('http://www.xiaoysw1.com/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    log(\"验证后结果:\"+ret);\n   // html=ret;\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(true_url);\n    }else{\n        log('验证未通过:'+ret)\n    }\n    \n}\nlet parStr=\"body&&.fed-deta-info;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-part-esan&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.xiaoysw.com/vodsearch/----------fypage---/?wd=**","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.fed-deta-content&&li,5&&Text;.fed-deta-content&&li,2&&Text;.fed-deta-content&&li,4&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.fed-list-pics&&data-original',//图片\n url:'.fed-list-pics&&data-original',//可以是影片链接，或者图片也行\n desc:'.fed-deta-content&&li,-1&&Text',//一般主演，地区，影片评分等描述\n tabs:'.fed-drop-tops&&a ',//线路\n lists:'body&&.fed-play-item,#id&&li:not(:matches(播放集数|视频排序：正序))',//列表\n tab_id:'',//线路id，可不填,\n \n};\nvar 动态最新章节=true;\nvar 倒序=false;\nvar 二级处理={\n    图片点击:function(u){\n        return u+'#.png'\n    }\n};\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='http://www.xiaoysw1.com/verify/index.html?';\nrequire('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/83.png"},{"last_chapter_rule":"","title":"小白菜♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"http://www.xbcdy.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"dianying&guochanju&zongyi&dongman","area_name":"全部&大陆&香港&台湾&美国&法国","area_url":"&大陆&香港&台湾&美国&法国","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('http://www.xbcdy.com/verify/index.html');\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('http://www.xbcdy.com/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret)\n    }\n}\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail--h3&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://www.xbcdy.com/vodsearch/**----------fypage---.html","group":"测试","detail_col_type":"text_3","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'.nav-tabs&&ul&&li',//线路\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"var 验证码='http://www.xbcdy.com/verify/index.html';\nrequire('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/88.png"},{"firstHeader":"class","last_chapter_rule":"","title":"TV酷♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://www.tvkuys.com/vodshow/fyclass--fyarea-fyyear--/by/fysort/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&动画电影&记录片&国产剧&港台剧&日韩剧&欧美剧&海外剧","class_url":"1&2&3&4&6&7&8&9&10&11&12&32&39&13&14&15&16&30","area_name":"地区&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&大陆&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"时间&人气&评分","year_name":"年代&2022&2021&2020&2019&2018&2017&2016","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.movie-list-body&&.movie-list-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.movie-title&&Text'),\r\n       desc: parseDomForHtml(list[j], '.movie-rating&&Text'),\r\n       pic_url: parseDom(list[j], '.movie-post-lazyload&&data-original')+ '@Referer=',\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.detail;.movie-title&&Text;.movie-post-lazyload&&data-original;.movie-rating&&Text;a&&href.js:input+'#immersiveTheme#';.meta&&Text\";\n一级(parStr,true);","search_url":"https://www.tvkuys.com/vodsearch/**----------fypage---.html","titleColor":"#808080","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.starLink&&Text;.scroll-content&&Text',\n img:'img,4&&src',\n url:'img,4&&src',\n desc:'.summary&&Text',\n tabs:'.play_source_tab&&a',\n lists:'.content_playlist,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/74.png"},{"last_chapter_rule":"","title":"看看D♔","author":"道长&蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##https://www.kkju.cc/type/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: '.nav-head',\n    子分类: 'ul&&li:not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.kkju.cc/verify/index.html');\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.kkju.cc/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret)\n    }\n}\nparStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';li&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.kkju.cc/search/**----------fypage---.html","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,2&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&.dropdown-menu:not(:matches(猜你喜欢|剧情简介|日韩剧周榜单|日韩剧月榜单|国产剧月榜单|国产剧周榜单|榜单))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.kkju.cc/verify/index.html';\nrequire('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/70.png"},{"last_chapter_rule":"","title":"星辰动漫D♔","author":"道长&&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.xxcdm.com/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\"body&&.stui-vodlist__box;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'body&&li:gt(0):lt(6)',\n},{\n    一级分类: '#screenbox&&ul',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';p&&Text\";\n一级(parStr,true); ","search_url":"https://www.xxcdm.com/s/----------fypage---/wd/**.html","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;body&&p,0&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.detail&&Text',\n tabs:'body&&h3:gt(0):lt(5)',\n lists:'body&&.stui-content__playlist,#id&&ul&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/109.png"},{"last_chapter_rule":"","title":"零零漆D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.007ts.cc/channel/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言|电视直播|APP下载))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: '#screenbox&&ul',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';p&&Text\";\n一级(parStr,true); ","search_url":"https://www.007ts.cc/search/**----------fypage---.html","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,4&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'.nav&&li',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/73.png"},{"firstHeader":"class","last_chapter_rule":"","title":"DY888D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.dy888.tv/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".vodlist&&li;a&&title;.lazyload&&data-original;.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n//var true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n        一级分类: '.top_nav',\n        子分类: 'body&&li:not(:matches(首页|特约栏目|小说))',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(\"/type/\", \"/show/\")\n            }\n        }\n    },{\n        一级分类: 'body&&.screen_list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,-1&&Text\";\n一级(parStr,true);","search_url":"https://www.dy888.tv/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.data,2&&Text;.content_detail,1&&.data&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.full_text&&Text',\n tabs:'.list_scroll&&a',\n lists:'body&&.content_playlist,#id&&li',\n tab_id:'',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/135.png"},{"last_chapter_rule":"","title":"久久影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://www.40mdd.com/type/fyclass/fysort/fypage.html;get;utf-8;{User-Agent@.js:PC_UA}","col_type":"movie_3","class_name":"📺剧集&📽电影&🎞综艺&🎨动漫&🎧音乐","class_url":"2&1&3&4&6","area_name":"","area_url":"","sort_name":"🕒时间&💖人气&🔮评分","year_name":"","sort_url":"&hits&score","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.col-md-1-5');//列表\n\r\n    for (var i = 0; i < list.length; i++) {\r\n        var title = parseDomForHtml(list[i], 'a&&title');//标题\n        var img = parseDom(list[i], 'img&&src');//图片\r\n        var url = parseDom(list[i], 'a&&href')+ \"#immersiveTheme#\"; //链接\n        var desc = parseDomForHtml(list[i], '.hdtag&&Html');//描述\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);\n","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), 'body&&.col-md-1-5');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'a&&title'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.hdtag&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], '.meta&&Text') + '\\n' + parseDomForHtml(list[j], '') + '\\n' + parseDomForHtml(list[j], ''),\n        //定位图片\n        img: parseDom(list[j], 'img&&src') + \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.40mdd.com/s/**/fypage.html;get;utf-8;{User-Agent@.js:PC_UA}","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n/*免嗅地址*/\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n/*线路↓*/\nvar arts = parseDomForArray(html, 'body&&.panel-heading');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').split('-')[1].split('路')[0].replace(' ', ''))\n}\n/*线路*/\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.dslist-group');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n/*选集*/\n\n\n//以下头框\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, 'h1&&Text').substring(0, 20) + '\\n' + parseDomForHtml(html, '.col-md-8&&Text').substring(0, 80) + '\\n' + parseDomForHtml(html, '').substring(41, 60),\n    //定位描述\n    desc: ' 更新于：' + parseDomForHtml(html, 'em&&Text').substring(0, 15),\n    //定位图片\n    pic_url: parseDom(html, '.img-thumbnail&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar desc = parseDomForHtml(html, 'body&&.summary&&Text').replace('[收起部分]','').replace('　',''); \nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + desc.substr(0, 40) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + desc + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\n/*   😜  这里是线路和选集，可以不用修改！！！*/\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #5599FF\">正在使用逆序</span></b>' : '““””<b><span style=\"color: #9955FF\">正在使用正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n})\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/7.png"},{"last_chapter_rule":"","title":"泥鳅影视♔","author":"离别&蓝莓果酱UX","version":1,"type":"video","url":"http://www.xniqiu.com/index.php/vod/show/area/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&||&国产剧&港台剧&日韩剧&欧美剧","class_url":"1&2&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分&更新&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&up&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');\nfor (var i in list) {\n    try {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),\n            pic_url: parseDom(list[i], '.lazyload&&data-original'),\n            url: parseDom(list[i], 'a&&href')+ \"#immersiveTheme#\",\n            col_type: 'movie_3'\n        });\n    } catch (e) {}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.myui-vodlist__media&&li');\n\n    for (var i in list) {\n        var title = parseDomForHtml(list[i], 'a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-original');\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.pic-text&&Text');\n        var con = parseDomForHtml(list[i], 'p,2&&Text')+ '\\n' + parseDomForHtml(list[i], 'p,1&&Text')+ '\\n' + parseDomForHtml(list[i], 'p,3&&Text');\n        items.push({\n            title: title,\n            img: img,\n            url: url+\"#immersiveTheme#\",\n            desc: desc,\n            content: con\n        });\n    }\n\nres.data = items;\nsetSearchResult(res);","search_url":"http://www.xniqiu.com/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//免嗅\n\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url = player_aaaa.url;var fr =player_aaaa.from;if(url.match(/qq|iqiyi|youku|mgtv|bilibili|sohu|ixigua|pptv|migu|le|1905|fun|vip|yaokan|douban|huanxi|cctv/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else{url}`;\n\n//线路\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ', ''))\n}\n\n//选集\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace('年代', '类型').substring(0, 20) + parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(3, 20) + parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').substring(3, 20),\n    //定位描述\n    desc: parseDomForHtml(html, '.myui-content__detail&&p,4&&Text'),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: parseDom(html, '.lazyload&&data-original'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//分割线\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '断插',\n    url: 'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=优1080P',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\nfunction setTabs(tabs, vari) {\n        d.push({\n         title: '‘‘线路 :’’',\n            col_type: 'scroll_button',}) \n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]+'↓') : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>';}\n\nfunction setLists(lists, index) {\n    d.push({\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/115.png"},{"last_chapter_rule":"","title":"西瓜影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://www.osqqq.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.osqqq.com/vodsearch/**----------fypage---.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = `@lazyRule=.js:var js = request(input);var url = base64Decode(parseDomForHtml(js, '.fed-play-iframe&&data-play').slice(3));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){var rr=request('https://jiexi.moeamv.com/analysis.php?v='+url).match(/urls = \"(.*?)\"/)[1];cacheM3u8(rr)}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&ul&&li:not(:contains(永久导航：www.osqq.net(网址发布页))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,0&&Text');\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,1&&Text');\nvar 地区 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,3&&Text');\nvar 年份 = parseDomForHtml(html, '.fed-deta-content&&ul&&li,4&&Text');\nvar 图片 = parseDom(html, '.fed-deta-images&&.fed-list-pics&&data-original');\nvar 简介 = parseDomForHtml(html, '.fed-part-esan&&Text').replace('短评: ','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    \n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    var list = lists[index];\n\n\n\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_3' : 'text_5'\n            });\n        }\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '断插',\n    url: 'hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/38.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/135.svg"},{"last_chapter_rule":"","title":"天狼影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"https://www.tlysw.net/s/fyclass/by/fysort/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&动作片","class_url":"dianying&guochanju&zongyi&dongman&dongzuopian","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&year/2021&year/2020&year/2019&year/2018","find_rule":"js:var res = {};var d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'a&&title'),\ndesc:parseDomForHtml(list[i],'.pic-text&&Text'),\npic_url:parseDom(list[i],'.lazyload&&data-original'),\nurl:parseDom(list[i],'a&&href')+\"#immersiveTheme#\",\n});\n  }catch(e){}\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\r\nvar list = parseDomForArray(getResCode(), '#searchList&&li');\nif (list.length == 0) throw \"搜索为空，请更换搜索词\"\r\nfor (var j in list) {\r\n    d.push({\r\n        title: parseDomForHtml(list[j], 'a&&title'),\r\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n        pic_url: parseDom(list[j], 'a&&data-original'),\r\n        content: parseDomForHtml(list[j], '.detail--h4&&Text'),\r\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\r\n    })\r\n}\r\nsetResult(d)","search_url":"https://www.tlysw.net/vodsearch/**----------fypage---.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            //fy_bridge_app.log(urls[i])\n            return urls[i]+ '#isVideo=true#'\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候...');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n//线路\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ', ''))\n}\n\n//选集\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nd.push({\n    //定位标题\n    title: parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace('年代', '类型').substring(0, 20) + parseDomForHtml(html, '.myui-content__detail&&p&&Text').substring(3, 20) + parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').substring(3, 20),\n    //定位描述\n    desc: parseDomForHtml(html, '.myui-content__detail&&p,4&&Text'),\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: parseDom(html, '.lazyload&&data-original'),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '采集',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.xyq',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/3.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\nfunction setTabs(tabs, vari) {\n        d.push({\n         title: '‘‘线路 :’’',\n            col_type: 'scroll_button',}) \n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]+'↓') : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#0aa344\">↓</font></small>'+'<small><font color=\"#ff4c00\">↑</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\">排序</font></small>'+'<small><font color=\"#ff4c00\">↓</font></small>'+'<small><font color=\"#0aa344\">↑</font></small>';}\n\nfunction setLists(lists, index) {\n    d.push({\n        title:  '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集页面！',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/144.png"},{"last_chapter_rule":"","title":"万能影视D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##https://wap.wnvod.net/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(5)',\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".myui-vodlist__media#searchList&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,3&&Text\";\n一级(parStr,true);","search_url":"https://wap.wnvod.net/vodsearch/-------------.html?wd=**&submit=","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'span.sketch.content&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/129.png"},{"last_chapter_rule":"","title":"九州影视D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##http://www.unss.net/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","search_url":"http://www.unss.net/vodsearch/**----------fypage---.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'.nav-tabs&&ul&&li',//线路\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/q/128.png"},{"last_chapter_rule":"","title":"大象影视D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://www.daxiangtv.net/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".myui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(6)',\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".myui-vodlist__media#searchList&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#';p,3&&Text\";\n一级(parStr,true);","search_url":"https://www.daxiangtv.net/vodsearch/-------------.html?wd=**&submit=","group":"测试","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'span.sketch.content&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/9.png"},{"last_chapter_rule":"","title":"阿里云D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##http://www.aliyuntt.com/index.php/vod/show/id/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\"body&&.module-item;.lazyloaded&&alt;.lazyloaded&&data-src.js:input+'@Referer=';.module-item-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true);","search_url":"http://www.aliyuntt.com/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.sqjj_a&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\r\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/171.png"},{"last_chapter_rule":"","title":"肥牛D♔","author":"道长&蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##https://m.feiniukan.com/channel/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: 'body&&.nav',\n    子分类: 'ul&&li:not(:matches(^$))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","search_url":"https://m.feiniukan.com/search/**-------------.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情简介|日韩剧周榜单|日韩剧月榜单|国产剧月榜单|国产剧周榜单|榜单))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/more/265.png"},{"last_chapter_rule":"","title":"嗯哩D♔","author":"道长&蓝莓果酱UX","version":0,"type":"other","url":"hiker://empty##https://enlienli.com/index.php/vod/show/id/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('4ZFai6WdmDyH6oz/nhtVROAIx1c0dRGZtfmf6PyWCr6dHnPVIOLddKI4gXInyEoixmC+cyqM8V/plDjccHPKYdMRRu3DLjeWtkw/W5GbPWQVKdbbEohqdTqYxEM0KWdh');\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true); ","search_url":"https://enlienli.com/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"text_3","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-info-item,4&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js'); ","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/134.png"},{"last_chapter_rule":"","title":"会员影视♔","author":"蓝莓果酱UX","version":0,"type":"video","url":"https://vipyingyuan.com/index.php/vod/show/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫","class_url":"1&13&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&year/2021&year/2020&year/2019&year/2018","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.lazyload||a&&data-original')+'@Referer=',\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'a&&title'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.pic-text&&Text'),\n            content: parseDomForHtml(L, 'p&&Text'),\n            img: parseDom(L, 'a&&data-original'),\n        });\r\n    }\nsetResult(d)","search_url":"https://vipyingyuan.com/index.php/vod/search/page/fypage/wd/**.html","group":"测试","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n});\n\nvar arts = parseDomForArray(html,'.nav-tabs&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.tab-pane');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nd.push({\n title: parseDomForHtml(getResCode(), 'p,1&&Text').replace('类型：','').replace('地区：',' ').replace('年份：','').replace('语言：','')+ '\\n\\n'+parseDomForHtml(getResCode(), 'p,4&&Text').substring(0, 30),\n    desc:parseDomForHtml(getResCode(), '.desc&&Text'),\n pic_url: parseDom(html, '.lazyload&&data-original'),\n url: fm,\n col_type: 'movie_1_vertical_pic_blur'\n});\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第', '').replace('期', ''),\n            url: \"x5Rule://\"+parseDom(list[j], 'a&&href')  + '@' + _x5,\n            col_type: list.length > 3 ? 'text_5' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/166.png"},{"last_chapter_rule":"","title":"测试多线路UA","author":"香雅情","version":1,"url":"hiker://empty","col_type":"text_center_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar items = [];\nitems.push({\n    title: '测试',\n    pic_url: '',\n    url: $('').lazyRule(() => {\n        var mult = [],\n            danmu = [],\n            hean = [];\n        var play = 'https://221.229.163.81/c1/2021/11/11_0/EB60B71E7C0B0A624889D1FE57ADF852_20211111_1_1_243_mp4/3652BD04C1439BD5FE06397B2863B23F.m3u8?arange=0&pm=S9CDdS7IfsBvJXyq8uL5ky8owNJF9dCqCpGwV44KYWTrXFrk~IWBw_Bxe~6RlZ5sbSxrCKkmn1MWkJR1KzDApJCowsjo8K6GfpENkd~aqj6mg2mmK1KojOIou3aBuSZOJ_1~tksS1yZbHF0_DW3_9Z7cjIonN1alBHn9vFHOvOfFnHR3VaK5SmdBUombchk9M0lB~dTXm6LpfnefZY_gGgelqo9nSbVIQ~h2rBDrtNlWbuD999GyMuirVAMTiIPzBe~v2QKi15x~2gHiqeMpo_5sw8nu6A4quQOjiXZYc~oaC8M~~8g3kN5gBaYQRtH2QVjpPGyjASxAgRPyt6NqDTEqgaV53ldSHV2Aiq6szG4KJKmIb8d8_F14mJsLK6rwz54vOe6R5QhQpnGk_OqIs8HWGApG99SvIQNSYj6miPM-&mr=O0pX5IhKtNfigZLAgaZ~2jLnc2Ag~ig7_SU3uslpRsNSBXe8z_vY7bOQkpuGa4UTgvxE~yhQ1GdaryZvsuSz613voBBLHT_j~avgEyLRhpl3D7PA~n~zHM3LxHVcbslbLop5mJs2mdznMwdBdC7lYJLpqVBYUBXLS369Rlgu2IT1rvr8Ra6w1fj675hqRXzUEORCCx7xPJ~ZmQVwHhBYRTjHpoZkNnJ1PJYIaw--&vcdn=0&scid=177&cpno=6j07ml&ruid=d5f6f4403c43479e';\n        if (/titan\\.mgtv/.test(play) && /\\.flv|\\.mp4/.test(play)) {\n            var head = {\n                'User-Agent': 'Mozilla/5.0',\n                'Referer': 'https://www.mgtv.com'\n            };\n        } else {\n            var head = {\n                'User-Agent': MOBILE_UA\n            };\n        };\n        if (/\\.m3u8/.test(play)) {\n            let u = cacheM3u8(play,{headers: head}).split(\"##\")[0]\n            writeFile('hiker://files/cache/' + 'cache' + '.m3u8', fetch(u));\n            play = 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/' + 'cache' + '.m3u8##' + play;\n        };\n        //hean.push(head);\n        //mult.push(play+'#isVideo=true#');\n        head['User-Agent'] = head['User-Agent'].replace(/;/g, \"；；\")\n        hean.push(head);\n        mult.push(play + '#isVideo=true#');\n        return JSON.stringify({\n            urls: mult,\n            headers: hean\n        });\n    }),\n    desc: ''\n});\n\n\nsetHomeResult({\n    data: items\n});","searchFind":"","search_url":"","group":"测试2","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"片多影视♔","author":"蓝莓果酱UX","version":0,"type":"other","url":"http://221.236.18.12:665/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://221.236.18.12:665/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://221.236.18.12:665/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://221.236.18.12:665/api.php/v1.vod?page=fypage&limit=10&wd=**","group":"测试的","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('https://ltjx.jeeves.vip/home/api?type=ys&uid=568259&key=adeiknouxzEGKNYZ06&url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#immersiveTheme#\"}else if(url.match(/laodi/)){request('https://zy.laodi.xyz/S55978.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/162.png"},{"firstHeader":"class","last_chapter_rule":"","title":"怀旧游戏机","author":"道长","version":1,"type":"video","url":"hiker://empty##https://wifi.1022reba.top/d/1.html#pt_1673791948347","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"游戏合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=怀旧游戏机"},{"last_chapter_rule":"","title":"小姐姐10086","author":"1","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nsetResult([{url:\"http://xjj.qcasmr04.com/index.html\",desc:\"float&&100%\",col_type:\"x5_webview_single\",extra:{canBack:true}}])","searchFind":"","search_url":"","group":"电影","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z8lz9K.png"},{"last_chapter_rule":"","title":"电视直播[简单版]","author":"京梦","version":1,"type":"live","url":"hiker://empty###fyAll","col_type":"icon_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar data = [];\ndata.push({\n    title: \"🔎\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜索频道\",\n    col_type: \"input\"\n})\ndata.push({\n    title: '',\n    col_type: 'card_pic_1',\n    desc: \"0\",\n    pic_url: 'https://www.hlapi.cn/api/mm2'+ '#' + new Date().getTime(),\n    url: \"toast://点我干嘛！\"\n})\n\nlet flag = MY_URL.split(\"##\")[1].split('#')[1];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|flv|ts|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效，更换其它频道观看\"\n        }\n    })\n}\nlet path = \"http://wp.anxwl.cn/down.php/0c2f6f155bb55232337aef7010f7550f.txt\";\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, null, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    groups.forEach((group) => {\n        if (group) {\n            data.push({\n                title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                url: $('#noLoading#').lazyRule((group) => {\n                    putMyVar('selectGroup', group);\n                    refreshPage();\n                    return 'hiker://empty'\n                }, group),\n                col_type: 'scroll_button',\n                extra: {\n                    lineVisible: false\n                }\n            })\n        }\n    })\n    for (let title in items[selectGroup]) {\n        let us = items[selectGroup][title];        \n        data.push({\n            title: title.split(\"###\")[0],\n            url: us.length < 2 ? us[0]: JSON.stringify({\n                urls: us\n            }),\n//col_type: 'icon_2_round',\n            img: \"\"\n        })\n    }\n}\n          catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\n for (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n    if (!it.col_type && it.url) {\n        it.img = \"https://lanmeiguojiang.com/tubiao/more/221.png\";\n    }\n}\n\nsetResult(data);","searchFind":"js:\nvar data = [];\nlet lazyRule = u => {\n    if (u.startsWith(\"{\")) {\n        return u;\n    }\n    if (/(rtmp|ts|tx2p|mkv|flv|m3u8|mp4)/.test(u)) {\n        return u + '#isVideo=true#'\n    } else if (/(huya.com)/.test(u)) {\n        return u\n    }\n    return $(u).lazyRule(() => {\n        try {\n            return JSON.parse(fetch(input, {\n                headers: {\n                    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)'\n                },\n                redirect: false,\n                withHeaders: true\n            })).headers.location[0] + '#isVideo=true#'\n        } catch (e) {\n            log(e.toString())\n            return \"toast://频道源以失效\"\n        }\n    })\n}\nvar keyword = MY_URL.split('##')[1].toLowerCase();\nlet path = \"http://wp.anxwl.cn/down.php/0c2f6f155bb55232337aef7010f7550f.txt\";\nconst {\n    renderLiveData\n} = $.require(\"hiker://page/tool\");\ntry {\n    let items = renderLiveData(path, keyword, false);\n    //log(items);\n    let groups = Object.keys(items);\n    groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n    let selectGroup = getMyVar('selectGroup', groups[0]);\n    if (selectGroup == \"\") selectGroup = groups[0];\n    for (let it of Object.keys(items)) {\n        for (let title in items[it]) {\n            let us = items[it][title];\n            data.push({\n                title: title.split(\"###\")[0],\n                url: us.length < 2 ? us[0] : JSON.stringify({\n                    urls: us\n                }),\n                //col_type: 'icon_2_round',\n                //img: \"https://lanmeiguojiang.com/tubiao/more/228.png\"\n            })\n        }\n    }\n} catch (e) {\n    data.push({\n        title: \"数据加载失败\",\n        desc: JSON.stringify(e),\n        col_type: \"text_1\"\n    })\n}\nfor (let it of data) {\n    if (!it.col_type && it.url && !it.url.startsWith(\"{\")) {\n        it.url = lazyRule(it.url);\n    }\n}\nsetResult({\n    data: data\n});","search_url":"hiker://empty##**","group":"直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"text_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"工具\",\"path\":\"tool\",\"rule\":\"function getReferer(url) {\\n    if (url.indexOf(\\\"gitee\\\") > 0) {\\n        return \\\"https://\\\" + url.split(\\\"://\\\")[1].split(\\\"/\\\")[0];\\n    } else {\\n        return null\\n    }\\n}\\n\\n\\nfunction renderLiveData(url, filter, isText) {\\n    let net = fetchCache(url, {\\n        headers: {\\n            Referer: getReferer(url)\\n        }\\n    });\\n    const m3u = net,\\n        mode = m3u.indexOf('#EXTM3U') == 0,\\n        re = mode ? /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g : /()(.*),(#genre#|(?:http|rtmp)[^#\\\\s]*)/g;\\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (/group-title=\\\"(.*?)\\\"/.exec(i[1]) || [null, ''])[1];\\n        } else if (i[3] == '#genre#') {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].trim();\\n        if (url.indexOf(\\\".php\\\") > 0 || url.includes(\\\"@lazyRule\\\") || url.includes(\\\";\\\")) {\\n            title = title + \\\"###\\\" + new Date().getTime() + md5(url);\\n            //log(j);\\n        } else {\\n            //url = url + \\\"#isVideo=true#\\\";\\n        }\\n        if (filter != null && !title.includes(filter)) {\\n            continue\\n        }\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title] = items[group][title].concat([url]);\\n            } else {\\n                items[group][title] = [url];\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = [url];\\n        };\\n    }\\n    return items;\\n}\\n$.exports = {\\n    renderLiveData: renderLiveData,\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/87.png"},{"last_chapter_rule":"","title":"电视直播多样","author":"🏅京梦修改[小棉袄🌞&Joker]","version":8,"type":"live","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request(\"hiker://page/JingMeng\")).rule); //getJingMeng\n\nlet data = [],\n    JingMeng = getJingMeng();\nJingMeng.data = JingMeng.data.filter(v => !v.inVisible);\nif (JingMeng.data.length <= 0) {\n    data = $.require('hiker://page/renderSetting').renderSetting();\n} else {\n    let select = getItem(\"live-select\", JingMeng.data[0].name),\n        has = JingMeng.data.map(i => i.name).includes(select);\n    if (!has) {\n        select = JingMeng.data[0].name;\n    }\n    data.push({\n        title: \"\",\n        col_type: 'card_pic_1',\n        desc: \"0\",\n        pic_url: \"https://apis.jxcxin.cn/api/dmimg\" + '#' + new Date().getTime(),\n        url: $(\"hiker://empty#noLoading#\").rule(() => {\n            addListener('onClose', 'refreshPage()')\n            setResult($.require('hiker://page/renderSetting').renderSetting())\n        })\n    })\n    data.push({\n        col_type: \"line\",\n    })\n    data.push({\n        title: '搜索',\n        desc: '请输入搜索关键词',\n        extra: {\n            defaultValue: getVar('search_key', ''),\n            onChange: 'putVar(\"search_key\",input)'\n        },\n        col_type: 'input',\n        url: $.toString(() => {\n            return 'hiker://search?rule=' + getMyVar('title') + '&s=' + getVar('search_key', '')\n        })\n    })\n\n    for (source of JingMeng.data) {\n        data.push({\n            title: source.name == select ? \"““””<span style='color: #19B89D'>\" + select + \"</span>\" : source.name,\n            col_type: \"scroll_button\",\n            url: $('#noLoading#').lazyRule((a) => {\n                setItem(\"live-select\", a);\n                setItem('selectGroup', '');\n                refreshPage();\n                return \"hiker://empty\"\n            }, source.name)\n        })\n    }\n\n    data.push({\n        col_type: 'blank_block'\n    })\n\n    for (source of JingMeng.data) {\n        if (source.name == select) {\n            try {\n                let items = $.require('hiker://page/renderData').renderLiveData(source.url);\n                let groups = Object.keys(items);\n                //groups.push(groups.splice(groups.indexOf(0), 1)[0]);\n                let selectGroup = getItem('selectGroup', groups[0]);\n                if (selectGroup == \"\" || !groups.includes(selectGroup)) selectGroup = groups[0];\n                groups.forEach((group) => {\n                    if (group) {\n                        data.push({\n                            title: group == selectGroup ? \"““””<span style='color: #19B89D'>\" + group + \"</span>\" : group,\n                            url: $('#noLoading#').lazyRule((group) => {\n                                setItem('selectGroup', group);\n                                refreshPage();\n                                return 'hiker://empty'\n                            }, group),\n                            col_type: 'scroll_button',\n                            extra: {\n                                lineVisible: false\n                            }\n                        })\n                    }\n                })\n                for (let title in items[selectGroup]) {\n                    data.push({\n                        title: title,\n                        url: JSON.stringify({\n                            urls: items[selectGroup][title].url,\n                            headers: items[selectGroup][title].headers\n                        }),\n                        //col_type: 'text_4',\n                        img: \"https://lanmeiguojiang.com/tubiao/more/221.png\"\n                    })\n                }\n            } catch (e) {\n                data.push({\n                    title: \"数据加载失败\\n\" + JSON.stringify(e),\n                    col_type: \"long_text\"\n                })\n            }\n            break;\n        }\n    }\n\n\n}\nsetResult(data);","searchFind":"js:\neval(JSON.parse(request(\"hiker://page/JingMeng\")).rule);\nlet JingMeng = getJingMeng();\nlet rules = JingMeng.data.map((source) => {\n    return {\n        title: source.name,\n        search_url: 'hiker://empty?key=**',\n        searchFind: 'js:' + $.toString((url, rule_title) => {\n            let d = [],\n                key = getParam('key');\n            let items = $.require('hiker://page/renderData?rule=' + rule_title).renderLiveData(url);\n            for (let group in items) {\n                for (let title in items[group]) {\n                    if (title.indexOf(key) >= 0 || title.toLowerCase().indexOf(key) >= 0) {\n                        d.push({\n                            title: title,\n                            url: JSON.stringify({\n                                urls: items[group][title].url,\n                                headers: items[group][title].headers\n                            })\n                        })\n                    }\n                }\n            }\n            setResult(d);\n        }, source.url, getMyVar('title'))\n    };\n})\nsetResult([{\n    title: \"点我开始聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"key\"),\n    extra: {\n        rules: $.toString((rules) => {\n            return JSON.stringify(rules)\n        }, rules)\n    }\n}])","search_url":"hiker://empty?key=**","group":"直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('title',MY_RULE.title);","pages":"[{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"batchIm\",\"rule\":\"function batchImport(input, rule) {\\n    input = input.trim();\\n    if (input.length < 3 || input[0] != \\\"{\\\") {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let im = JSON.parse(input);\\n    if (im.data == null || im.data.length < 1) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    eval(JSON.parse(request(\\\"hiker://page/JingMeng?rule=\\\" + rule)).rule);\\n    let JingMeng = getJingMeng();\\n    let count = 0;\\n    let all = JingMeng.data.map(it => it.url + \\\"&&&\\\").join();\\n    for (let i of im.data) {\\n        if (all.indexOf(i.url + \\\"&&&\\\") >= 0) {\\n            //重复的不要\\n            continue;\\n        }\\n        count++;\\n        JingMeng.data.push(i)\\n    }\\n    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n    refreshPage();\\n    return \\\"toast://已导入\\\" + count + \\\"条订阅源\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"直播数据\",\"path\":\"renderData\",\"rule\":\"function renderLiveData(url) {\\n    let m3u = \\\"\\\";\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        m3u = fetch(url);\\n    } else {\\n        let interval = Number(getItem('interval', '6')),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try {\\n            remoteData = fetchCache(url, interval, {\\n                timeout: 50000\\n            });\\n        } catch (e) {}\\n        if (!remoteData.includes('http') || remoteData.includes('<body>')) { \\n            log('更新失败');\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData);\\n            m3u = oldData;\\n        } else {\\n            m3u = remoteData;\\n        }\\n    }\\n\\n    let mode =  m3u.indexOf('#EXTM3U') == 0 , re;\\n    if(mode){\\n        re = /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g;\\n    }else{\\n        re = /()(?:\\\\B\\\\$c_start|\\\\B#{1,2})?(.*?),?(##|头#|\\\\$c_end|,#genre#|(?:http|rtmp)[^\\\\s]*)/g;\\n    }\\n        \\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (i[1].match(/group-title=\\\"(.*?)\\\"/) || [null, group])[1];\\n        } else if ([',#genre#','##','头#','$c_end'].includes(i[3])) {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].includes('#') ? i[3].split('#') : [i[3]],\\n            headers = [];\\n        if(!url[url.length-1]) url.pop();\\n        url.forEach((v,index,array)=>{\\n            if(/;\\\\{(.*)\\\\}/.test(v)){\\n                let obj = {},\\n                     con = v.match(/;\\\\{(.*)\\\\}/)[1],\\n                     arr = con.split('&&');\\n                arr.forEach((i)=>{\\n                    let [key,value] = i.split('@');\\n                    obj[key] = value.replace(/;/g,'；；');\\n                })\\n                array[index] = v.match(/^([^;]*);\\\\{/)[1]\\n                headers.push(obj);\\n            }else{\\n                headers.push({'User-Agent' : MOBILE_UA.replace(/;/g,'；；')});\\n            }\\n            array[index] = array[index].replace(/;/g,'；；')+'#isVideo=true#';\\n        });\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title].url = items[group][title].url.concat(url);\\n                items[group][title].headers = items[group][title].headers.concat(headers);\\n            } else {\\n                items[group][title] = {url:url,headers:headers};\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = {url:url,headers:headers};\\n        };\\n    }\\n    return items;\\n}\\n\\n$.exports = {\\n    renderLiveData: renderLiveData\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"设置页\",\"path\":\"renderSetting\",\"rule\":\"function renderSetting() {\\n    function getColoredText(text) {\\n        return '““””<span style=\\\"color: #19B89D\\\">' + text + '</span>';\\n    }\\n    const d = [];\\n    d.push({\\n        title: \\\"\\\",\\n        col_type: 'card_pic_1',\\n        desc: \\\"0\\\",\\n        pic_url: \\\"https://api.ixiaowai.cn/api/api.php\\\" + '#' + new Date().getTime(),\\n        url: \\\"hiker://empty\\\",\\n    })\\n    d.push({\\n        col_type: \\\"line\\\"\\n    })\\n    d.push({\\n        title: \\\"‘‘’’<span style='color:#0aa344'>注意备份!</span>\\\",\\n        desc: \\\"‘‘’’<span style='color:#f05654'>导入会覆盖原有的文件</span>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\",\\n    })\\n    d.push({\\n        title: \\\"使用提示\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/1.png\\\",\\n        url: \\\"toast://首次使用:1. 点击在线订阅，刷新即用。2. 附带本地订阅示例，点击导入本地即可使用本地数据源。3. 在线订阅随作者更新而更新，推荐使用。\\\",\\n    })\\n    d.push({\\n        title: \\\"在线订阅\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/21.png\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/live/JingMeng.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5851&auth=61e85494-799d-5598-9832-48620de40ea7\\\",\\n    })\\n    d.push({\\n        title: \\\"导入本地\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/59.png\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/live/live.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5852&auth=76ffd244-61b2-54a7-8518-c8bc4c81b995\\\",\\n    })\\n    d.push({\\n        title: \\\"导入聚影\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/64.png\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/Src/Juying/liveconfig.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5861&auth=e1b533a0-d48d-548f-b7b9-5d49b8e9a354\\\",\\n    })\\n    d.push({\\n        title: \\\"\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"line\\\",\\n        url: \\\"'\\\",\\n    })\\n\\n    let interval = getItem('interval', '6');\\n    d.push({\\n        title: interval == -1 ? '已禁止自动更新'.fontcolor(\\\"#19B89D\\\").bold() : ('更新间隔:' + interval + '小时').fontcolor(\\\"#19B89D\\\").bold(),\\n        url: $(interval, '输入n为正整数时，每隔n小时自动更新\\\\n为0时，每次打开都会更新\\\\n为-1时，禁止自动更新').input(() => {\\n            if (parseInt(input) >= -1) {\\n                setItem('interval', input);\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/more/87.png',\\n        col_type: \\\"avatar\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"big_blank_block\\\"\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"导入订阅\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        desc: \\\"请输入直播源订阅地址\\\",\\n        url: $('', '请输入订阅地址').input((rule) => {\\n            if (input == \\\"\\\") {\\n                return \\\"toast://不能为空\\\"\\n            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                return \\\"toast://链接格式有误\\\"\\n            } else {\\n                return $('', \\\"请输入订阅标题\\\").input((url, rule) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng?rule=\\\" + rule)).rule);\\n                    let JingMeng = getJingMeng();\\n                    JingMeng.data.push({\\n                        name: input,\\n                        url: url\\n                    });\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage();\\n                    return \\\"toast://已保存\\\";\\n                }, input, rule)\\n            }\\n        }, getMyVar('title'))\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"批量导入\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $('', '支持原始数据和云剪贴板分享链接').input((rule) => {\\n            eval(JSON.parse(request(\\\"hiker://page/batchIm?rule=\\\" + rule)).rule);\\n            if (input.startsWith('电视直播分享##')) {\\n                input = parsePaste(input.split('##\\\\n')[1]);\\n            }\\n            return batchImport(input, rule);\\n        }, getMyVar('title'))\\n    });\\n    d.push({\\n        title: getColoredText(\\\"导出全部\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $([\\\"原始数据\\\", \\\"云剪贴板\\\"], 1).select(() => {\\n            return $('确定导出？\\\\n(禁用订阅不会导出)').confirm((type) => {\\n                eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                JingMeng = getJingMeng();\\n                JingMeng.data = JingMeng.data.filter(v => !v.inVisible);\\n                if (type == \\\"云剪贴板\\\") {\\n                    var data = '电视直播分享##\\\\n' + sharePaste(JSON.stringify(JingMeng));\\n                } else {\\n                    var data = JSON.stringify(JingMeng);\\n                }\\n                return \\\"copy://\\\" + data;\\n            }, input)\\n        })\\n    });\\n    d.push({\\n        title: getColoredText(\\\"编辑全部\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"editFile://hiker://files/rules/live/JingMeng.json\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n    JingMeng = getJingMeng();\\n    let editMode = getMyVar('editMode', '启用禁用');\\n    ['启用禁用', '删除订阅', '重新排序', '编辑订阅', '清除缓存'].forEach((v) => {\\n        d.push({\\n            title: v == editMode ? '““””' + v.bold().fontcolor('#19B89D') : v,\\n            url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n                putMyVar('editMode', v)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v),\\n            col_type: 'scroll_button'\\n        })\\n    });\\n    JingMeng.data.forEach((v, i) => {\\n        let el = {\\n            title: v.name,\\n            col_type: \\\"text_3\\\"\\n        }\\n        switch (editMode) {\\n            case '启用禁用':\\n                el.title = (v.inVisible ? '🔴 ' : '🟢 ') + el.title\\n                el.url = $('#noLoading#').lazyRule((i) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                    JingMeng = getJingMeng();\\n                    JingMeng.data[i].inVisible = !JingMeng.data[i].inVisible;\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage(false);\\n                    return 'hiker://empty'\\n                }, i)\\n                break\\n            case '删除订阅':\\n                el.url = \\\"confirm://确认删除“\\\" + v.name + \\\"”订阅？.js:\\\" + $.toString((name) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                    JingMeng = getJingMeng();\\n                    JingMeng.data = JingMeng.data.filter(i => i.name != name);\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage(false);\\n                    return \\\"toast://已删除\\\";\\n                }, v.name)\\n                break\\n            case '重新排序':\\n                let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n                el.title = (sortFlag == i ? '🔃  ' : '') + el.title\\n                if (sortFlag == -1)\\n                    el.url = $('#noLoading#').lazyRule((i) => {\\n                        putMyVar('sortFlag', i.toString())\\n                        refreshPage(false)\\n                        return 'toast://选择要移动到的位置'\\n                    }, i)\\n                else\\n                    el.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                        eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                        JingMeng = getJingMeng();\\n                        JingMeng.data.splice(newIndex, 0, JingMeng.data.splice(oldIndex, 1)[0])\\n                        writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                        putMyVar('sortFlag', '-1')\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, sortFlag, i)\\n                break\\n            case '编辑订阅':\\n                let arr = ['编辑名称', '编辑地址', '编辑内容'];\\n                el.url = $(arr, 3).select((v, i) => {\\n                    if (input == '编辑名称') {\\n                        return $(v.name, '输入新名称').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                            JingMeng = getJingMeng();\\n                            if (input) {\\n                                JingMeng.data[i].name = input\\n                                writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            } else {\\n                                return 'toast://不能为空'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑地址') {\\n                        return $(v.url, '输入新地址').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                            JingMeng = getJingMeng();\\n                            if (input == \\\"\\\") {\\n                                return \\\"toast://不能为空\\\"\\n                            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                                return \\\"toast://链接格式有误\\\"\\n                            } else {\\n                                JingMeng.data[i].url = input\\n                                writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑内容') {\\n                        if (v.url.startsWith('file://') || v.url.startsWith('hiker://files')) {\\n                            return 'editFile://' + v.url;\\n                        }\\n                        return 'editFile://hiker://files/libs/' + md5(v.url) + '.js'\\n                    }\\n                }, v, i);\\n                break;\\n            case '清除缓存':\\n                el.url = $('确定清除“' + v.name + '”订阅缓存？\\\\n(可立即更新)').confirm((url) => {\\n                    deleteCache(url);\\n                    return 'toast://清除成功'\\n                }, v.url)\\n                break;\\n        }\\n        d.push(el)\\n    });\\n    return d;\\n}\\n\\n$.exports = {\\n    renderSetting: renderSetting\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"加载数据\",\"path\":\"JingMeng\",\"rule\":\"function getJingMeng() {\\n    try {\\n        let JingMeng = fetch(\\\"hiker://files/rules/live/JingMeng.json\\\");\\n        if (!JingMeng || JingMeng == \\\"\\\") {\\n            return {\\n                data: [],\\n                version: 0\\n            }\\n        } else {\\n            return JSON.parse(JingMeng)\\n        }\\n    } catch (e) {\\n        try {\\n            toast(\\\"配置文件格式有误\\\")\\n        } catch (e) {}\\n        return {\\n            data: [],\\n            version: 0\\n        }\\n    }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/87.png"},{"last_chapter_rule":"","title":"电视直播","author":"舞动的风","version":0,"type":"live","url":"file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/直播1004/直播fyAll.txt","col_type":"long_text","class_name":"央视频道&卫视频道&地方频道&港台频道&综合娱乐&轮播电影&NewTv&嗨曲&4K","class_url":"1&2&3&4&5&6&7&8&9","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\r\nvar d = [];\nvar html = getResCode().split('\\n\\n')[0];\nvar txts = html.split('\\n');\n\nfor (var i = 1; i < txts.length; i++) {\n       var list = txts[i].split('#');\n       var line = txts[i].split(',')[0];\r\n   d.push({\n      title: '‘‘'+line+'’’',\n      col_type: 'text_1'\n    });\n   for (var j = 0; j < list.length; j++) {\n      d.push({\n          title: '线路'+(j+1),\n          url: list[j].replace(line,'').replace(/,/g,'')+'#.mp4',\n          col_type: 'text_4'\n       });\r\n    }\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"var 直播 = fetch(base64Decode('aHR0cHM6Ly9yYXcuZmFzdGdpdC5vcmcvMTc3MTI0NTg0Ny8xNzcxMjQ1ODQ3LmdpdGh1Yi5pby9tYXN0ZXIvYm8udHh0'),{}).split('$c_end');\n\nfor (var i = 1; i < 直播.length; i++) {\n      writeFile('hiker://files/直播1004/直播' + i + '.txt', 直播[i]);\n}\n\n\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"批量导入\",\"path\":\"batchIm\",\"rule\":\"function batchImport(input, rule) {\\n    input = input.trim();\\n    if (input.length < 3 || input[0] != \\\"{\\\") {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    let im = JSON.parse(input);\\n    if (im.data == null || im.data.length < 1) {\\n        return \\\"toast://请输入正确的格式\\\"\\n    }\\n    eval(JSON.parse(request(\\\"hiker://page/JingMeng?rule=\\\" + rule)).rule);\\n    let JingMeng = getJingMeng();\\n    let count = 0;\\n    let all = JingMeng.data.map(it => it.url + \\\"&&&\\\").join();\\n    for (let i of im.data) {\\n        if (all.indexOf(i.url + \\\"&&&\\\") >= 0) {\\n            //重复的不要\\n            continue;\\n        }\\n        count++;\\n        JingMeng.data.push(i)\\n    }\\n    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n    refreshPage();\\n    return \\\"toast://已导入\\\" + count + \\\"条订阅源\\\";\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"直播数据\",\"path\":\"renderData\",\"rule\":\"function renderLiveData(url) {\\n    let m3u = \\\"\\\";\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        m3u = fetch(url);\\n    } else {\\n        let interval = Number(getItem('interval', '6')),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = '';\\n        try {\\n            remoteData = fetchCache(url, interval, {\\n                timeout: 50000\\n            });\\n        } catch (e) {}\\n        if (!remoteData.includes('http') || remoteData.includes('<body>')) { \\n            log('更新失败');\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData);\\n            m3u = oldData;\\n        } else {\\n            m3u = remoteData;\\n        }\\n    }\\n\\n    let mode =  m3u.indexOf('#EXTM3U') == 0 , re;\\n    if(mode){\\n        re = /(.*),(.*)\\\\s*?((?:http|rtmp)[^#\\\\s]*)/g;\\n    }else{\\n        re = /()(?:\\\\B\\\\$c_start|\\\\B#{1,2})?(.*?),?(##|头#|\\\\$c_end|,#genre#|(?:http|rtmp)[^\\\\s]*)/g;\\n    }\\n        \\n    let items = {},\\n        group = '未分组';\\n    for (let i = re.exec(m3u); i != null; i = re.exec(m3u)) {\\n        if (mode) {\\n            group = (i[1].match(/group-title=\\\"(.*?)\\\"/) || [null, group])[1];\\n        } else if ([',#genre#','##','头#','$c_end'].includes(i[3])) {\\n            group = i[2];\\n            continue;\\n        }\\n        let title = i[2],\\n            url = i[3].includes('#') ? i[3].split('#') : [i[3]],\\n            headers = [];\\n        if(!url[url.length-1]) url.pop();\\n        url.forEach((v,index,array)=>{\\n            if(/;\\\\{(.*)\\\\}/.test(v)){\\n                let obj = {},\\n                     con = v.match(/;\\\\{(.*)\\\\}/)[1],\\n                     arr = con.split('&&');\\n                arr.forEach((i)=>{\\n                    let [key,value] = i.split('@');\\n                    obj[key] = value.replace(/;/g,'；；');\\n                })\\n                array[index] = v.match(/^([^;]*);\\\\{/)[1]\\n                headers.push(obj);\\n            }else{\\n                headers.push({'User-Agent' : MOBILE_UA.replace(/;/g,'；；')});\\n            }\\n            array[index] = array[index].replace(/;/g,'；；')+'#isVideo=true#';\\n        });\\n        if (items[group]) {\\n            if (items[group][title]) {\\n                items[group][title].url = items[group][title].url.concat(url);\\n                items[group][title].headers = items[group][title].headers.concat(headers);\\n            } else {\\n                items[group][title] = {url:url,headers:headers};\\n            }\\n        } else {\\n            items[group] = {};\\n            items[group][title] = {url:url,headers:headers};\\n        };\\n    }\\n    return items;\\n}\\n\\n$.exports = {\\n    renderLiveData: renderLiveData\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"设置页\",\"path\":\"renderSetting\",\"rule\":\"function renderSetting() {\\n    function getColoredText(text) {\\n        return '““””<span style=\\\"color: #19B89D\\\">' + text + '</span>';\\n    }\\n    const d = [];\\n    d.push({\\n        title: \\\"\\\",\\n        col_type: 'card_pic_1',\\n        desc: \\\"0\\\",\\n        pic_url: \\\"https://api.ixiaowai.cn/api/api.php\\\" + '#' + new Date().getTime(),\\n        url: \\\"hiker://empty\\\",\\n    })\\n    d.push({\\n        col_type: \\\"line\\\"\\n    })\\n    d.push({\\n        title: \\\"‘‘’’<span style='color:#0aa344'>注意备份!</span>\\\",\\n        desc: \\\"‘‘’’<span style='color:#f05654'>导入会覆盖原有的文件</span>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\",\\n    })\\n    d.push({\\n        title: \\\"使用提示\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/1.png\\\",\\n        url: \\\"toast://首次使用:1. 点击在线订阅，刷新即用。2. 附带本地订阅示例，点击导入本地即可使用本地数据源。3. 在线订阅随作者更新而更新，推荐使用。\\\",\\n    })\\n    d.push({\\n        title: \\\"在线订阅\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/21.png\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/live/JingMeng.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5851&auth=61e85494-799d-5598-9832-48620de40ea7\\\",\\n    })\\n    d.push({\\n        title: \\\"导入本地\\\",\\n        desc: \\\"\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/59.png\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/live/live.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5852&auth=76ffd244-61b2-54a7-8518-c8bc4c81b995\\\",\\n    })\\n    d.push({\\n        title: \\\"导入聚影\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"icon_round_4\\\",\\n        pic_url: \\\"https://lanmeiguojiang.com/tubiao/more/64.png\\\",\\n        url: \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/Src/Juying/liveconfig.json@http://hiker.nokia.press/hikerule/rulelist.json?id=5861&auth=e1b533a0-d48d-548f-b7b9-5d49b8e9a354\\\",\\n    })\\n    d.push({\\n        title: \\\"\\\",\\n        desc: \\\"\\\",\\n        col_type: \\\"line\\\",\\n        url: \\\"'\\\",\\n    })\\n\\n    let interval = getItem('interval', '6');\\n    d.push({\\n        title: interval == -1 ? '已禁止自动更新'.fontcolor(\\\"#19B89D\\\").bold() : ('更新间隔:' + interval + '小时').fontcolor(\\\"#19B89D\\\").bold(),\\n        url: $(interval, '输入n为正整数时，每隔n小时自动更新\\\\n为0时，每次打开都会更新\\\\n为-1时，禁止自动更新').input(() => {\\n            if (parseInt(input) >= -1) {\\n                setItem('interval', input);\\n            }\\n            refreshPage();\\n            return 'hiker://empty'\\n        }),\\n        pic_url: 'https://lanmeiguojiang.com/tubiao/more/87.png',\\n        col_type: \\\"avatar\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"big_blank_block\\\"\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"导入订阅\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        desc: \\\"请输入直播源订阅地址\\\",\\n        url: $('', '请输入订阅地址').input((rule) => {\\n            if (input == \\\"\\\") {\\n                return \\\"toast://不能为空\\\"\\n            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                return \\\"toast://链接格式有误\\\"\\n            } else {\\n                return $('', \\\"请输入订阅标题\\\").input((url, rule) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng?rule=\\\" + rule)).rule);\\n                    let JingMeng = getJingMeng();\\n                    JingMeng.data.push({\\n                        name: input,\\n                        url: url\\n                    });\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage();\\n                    return \\\"toast://已保存\\\";\\n                }, input, rule)\\n            }\\n        }, getMyVar('title'))\\n    });\\n\\n    d.push({\\n        title: getColoredText(\\\"批量导入\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $('', '支持原始数据和云剪贴板分享链接').input((rule) => {\\n            eval(JSON.parse(request(\\\"hiker://page/batchIm?rule=\\\" + rule)).rule);\\n            if (input.startsWith('电视直播分享##')) {\\n                input = parsePaste(input.split('##\\\\n')[1]);\\n            }\\n            return batchImport(input, rule);\\n        }, getMyVar('title'))\\n    });\\n    d.push({\\n        title: getColoredText(\\\"导出全部\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: $([\\\"原始数据\\\", \\\"云剪贴板\\\"], 1).select(() => {\\n            return $('确定导出？\\\\n(禁用订阅不会导出)').confirm((type) => {\\n                eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                JingMeng = getJingMeng();\\n                JingMeng.data = JingMeng.data.filter(v => !v.inVisible);\\n                if (type == \\\"云剪贴板\\\") {\\n                    var data = '电视直播分享##\\\\n' + sharePaste(JSON.stringify(JingMeng));\\n                } else {\\n                    var data = JSON.stringify(JingMeng);\\n                }\\n                return \\\"copy://\\\" + data;\\n            }, input)\\n        })\\n    });\\n    d.push({\\n        title: getColoredText(\\\"编辑全部\\\"),\\n        col_type: \\\"scroll_button\\\",\\n        url: \\\"editFile://hiker://files/rules/live/JingMeng.json\\\"\\n    });\\n\\n    d.push({\\n        col_type: \\\"blank_block\\\"\\n    });\\n\\n    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n    JingMeng = getJingMeng();\\n    let editMode = getMyVar('editMode', '启用禁用');\\n    ['启用禁用', '删除订阅', '重新排序', '编辑订阅', '清除缓存'].forEach((v) => {\\n        d.push({\\n            title: v == editMode ? '““””' + v.bold().fontcolor('#19B89D') : v,\\n            url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n                putMyVar('editMode', v)\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v),\\n            col_type: 'scroll_button'\\n        })\\n    });\\n    JingMeng.data.forEach((v, i) => {\\n        let el = {\\n            title: v.name,\\n            col_type: \\\"text_3\\\"\\n        }\\n        switch (editMode) {\\n            case '启用禁用':\\n                el.title = (v.inVisible ? '🔴 ' : '🟢 ') + el.title\\n                el.url = $('#noLoading#').lazyRule((i) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                    JingMeng = getJingMeng();\\n                    JingMeng.data[i].inVisible = !JingMeng.data[i].inVisible;\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage(false);\\n                    return 'hiker://empty'\\n                }, i)\\n                break\\n            case '删除订阅':\\n                el.url = \\\"confirm://确认删除“\\\" + v.name + \\\"”订阅？.js:\\\" + $.toString((name) => {\\n                    eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                    JingMeng = getJingMeng();\\n                    JingMeng.data = JingMeng.data.filter(i => i.name != name);\\n                    writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                    refreshPage(false);\\n                    return \\\"toast://已删除\\\";\\n                }, v.name)\\n                break\\n            case '重新排序':\\n                let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n                el.title = (sortFlag == i ? '🔃  ' : '') + el.title\\n                if (sortFlag == -1)\\n                    el.url = $('#noLoading#').lazyRule((i) => {\\n                        putMyVar('sortFlag', i.toString())\\n                        refreshPage(false)\\n                        return 'toast://选择要移动到的位置'\\n                    }, i)\\n                else\\n                    el.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                        eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                        JingMeng = getJingMeng();\\n                        JingMeng.data.splice(newIndex, 0, JingMeng.data.splice(oldIndex, 1)[0])\\n                        writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                        putMyVar('sortFlag', '-1')\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, sortFlag, i)\\n                break\\n            case '编辑订阅':\\n                let arr = ['编辑名称', '编辑地址', '编辑内容'];\\n                el.url = $(arr, 3).select((v, i) => {\\n                    if (input == '编辑名称') {\\n                        return $(v.name, '输入新名称').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                            JingMeng = getJingMeng();\\n                            if (input) {\\n                                JingMeng.data[i].name = input\\n                                writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            } else {\\n                                return 'toast://不能为空'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑地址') {\\n                        return $(v.url, '输入新地址').input((i) => {\\n                            eval(JSON.parse(request(\\\"hiker://page/JingMeng\\\")).rule);\\n                            JingMeng = getJingMeng();\\n                            if (input == \\\"\\\") {\\n                                return \\\"toast://不能为空\\\"\\n                            } else if (input.indexOf(\\\"http\\\") != 0 && input.indexOf(\\\"file\\\") != 0 && input.indexOf(\\\"hiker\\\") != 0) {\\n                                return \\\"toast://链接格式有误\\\"\\n                            } else {\\n                                JingMeng.data[i].url = input\\n                                writeFile(\\\"hiker://files/rules/live/JingMeng.json\\\", JSON.stringify(JingMeng));\\n                                refreshPage(false)\\n                                return 'toast://修改成功'\\n                            }\\n                        }, i);\\n                    } else if (input == '编辑内容') {\\n                        if (v.url.startsWith('file://') || v.url.startsWith('hiker://files')) {\\n                            return 'editFile://' + v.url;\\n                        }\\n                        return 'editFile://hiker://files/libs/' + md5(v.url) + '.js'\\n                    }\\n                }, v, i);\\n                break;\\n            case '清除缓存':\\n                el.url = $('确定清除“' + v.name + '”订阅缓存？\\\\n(可立即更新)').confirm((url) => {\\n                    deleteCache(url);\\n                    return 'toast://清除成功'\\n                }, v.url)\\n                break;\\n        }\\n        d.push(el)\\n    });\\n    return d;\\n}\\n\\n$.exports = {\\n    renderSetting: renderSetting\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"加载数据\",\"path\":\"JingMeng\",\"rule\":\"function getJingMeng() {\\n    try {\\n        let JingMeng = fetch(\\\"hiker://files/rules/live/JingMeng.json\\\");\\n        if (!JingMeng || JingMeng == \\\"\\\") {\\n            return {\\n                data: [],\\n                version: 0\\n            }\\n        } else {\\n            return JSON.parse(JingMeng)\\n        }\\n    } catch (e) {\\n        try {\\n            toast(\\\"配置文件格式有误\\\")\\n        } catch (e) {}\\n        return {\\n            data: [],\\n            version: 0\\n        }\\n    }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/more/87.png"},{"last_chapter_rule":"","title":"😍秋名山直播","author":"","version":0,"type":"other","url":"http://api.hclyz.com:81/mf/json.txt","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar json=JSON.parse(getResCode());\nvar res={};\nvar d=[];\nfor(var i=0;i<json.pingtai.length;i++){\nvar j = json.pingtai[i];\nvar r = {};\n    r.pic_url =j.xinimg;\n    r.title =j.title;\n    r.desc =j.Number+'名';\n     r.url =  'http://api.hclyz.com:81/mf/'+j.address;\n    d.push(r);\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"直播","detail_col_type":"movie_3","detail_find_rule":"js:\nvar json=JSON.parse(getResCode());\nvar res={};\nvar d=[];\nfor(var i=0;i<json.zhubo.length;i++){\nvar j = json.zhubo[i];\nvar r = {};\n    r.pic_url = j.img;\n    r.title = j.title;\n    r.url =j.address;\n    d.push(r);\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"全球联合网络电视直播","author":"情","version":0,"type":"live","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://www.nettvpro.live/m/map.html\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"直播","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://pic.baike.soso.com/ugc/baikepic2/4568/ori-20191109100149-1428164865_png_817_814_1466148.jpg/0"},{"title":"分享短视频","author":"发粪涂墙","version":0,"url":"http://www.sharenice.net/fyAll?page=fypage[firstPage=http://www.sharenice.net/fyAll]","col_type":"movie_3","class_name":"首页&抖音&快手&微视&火山&场库&体育","class_url":"&douyin&kuaishou&weishi&huoshan&changku&tags/t-5L2T6IKy.html","area_name":"美拍&秒拍&全民&梨&好兔&美女&正能量","area_url":"meipai&miaopai&quanmin&lishipin&haotu&tags/t-576O5aWz.html&tags/t-5q2j6IO96YeP.html","sort_name":"生活&音乐&美食&明星&动漫&影视&时尚","year_name":"搞笑&社会&游戏&娱乐&旅游&萌系","sort_url":"tags/t-55Sf5rS7.html&tags/t-6Z+z5LmQ.html&tags/t-576O6aOf.html&tags/t-5piO5pif.html&tags/t-5Yqo5ryr.html&tags/t-5b2x6KeG.html&tags/t-5pe25bCa.html","year_url":"tags/t-5pCe56yR.html&tags/t-56S+5Lya.html&tags/t-5ri45oiP.html&tags/t-5aix5LmQ.html&tags/t-5peF5ri4.html&tags/t-6JCM57O7.html","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.cover');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       pic_url: parseDom(list[j], 'img&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+ `@lazyRule=.video-play-box&&video&&src.js:input.indexOf('mp4')!=-1?input:(JSON.parse(fetch(input,{redirect:false, withHeaders:true})).headers.location[0]);`\r\n  });\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"直播-短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":""},{"firstHeader":"class","title":"卫视高清","author":"镇弟","version":0,"url":"hiker://home","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n'视界眼福@@hiker://home@视界眼福@@http://tva2.sinaimg.cn/mw690/6b6e567cgy1g5gphnwi31g20b4069b29.gif',\n'热舞嗨歌@@hiker://home@热舞嗨歌@@https://p6-tt-ipv6.byteimg.com/origin/pgc-image/0c28129fbb1347519506d3a177d136b1',\n'YY电影@@hiker://home@YY直播电影@@https://tva2.sinaimg.cn/mw690/6b6e567cgy1g5gphox4h2g20b4069kjl.gif',\n'视界HD@@hiker://home@视界HD@@https://static.dongtu.com/netpic/20170425163911LCMAE0ZGGH6Q9X2P.gif',\n'电视新分类@@hiker://home@电视新分类@@https://p6-tt-ipv6.byteimg.com/origin/pgc-image/8e58ee95f86345c08162ed3910c6b0c1',\n'电视分类@@hiker://home@电视分类@@https://p6-tt-ipv6.byteimg.com/origin/pgc-image/2dee71a5b39743a68a22619ba620682d',\n\n'凤凰电影@@http://hdtv.haust.edu.cn/hls/fhdy.m3u8@@http://www.tvyan.com/uploads/dianshi/fhdyt.jpg',\n'中央综合@@http://39.134.115.163:8080/PLTV/88888910/224/3221225618/index.m3u8@@http://tv.sason.xyz/logo/cctv1.png',\n'广东卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225742/index.m3u8@@http://tv.sason.xyz/logo/gdws.png',\n'金牌综艺@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225920/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvzongyi.jpg',\n'星空@@https://www.fanmingming.cn/hls/startv.m3u8@@http://tv.sason.xyz/logo/xkws.png',\n'中央财经@@http://39.134.115.163:8080/PLTV/88888910/224/3221225619/index.m3u8@@http://www.cietv.com/img/cctv2.jpg',\n'湖南卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225745/index.m3u8@@http://tv.sason.xyz/logo/hnws.png',\n'炫舞末来@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221226248/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'香港HKS@@http://zhibo.hkstv.tv/livestream/mutfysrq.flv@@http://tv.sason.xyz/logo/hks.png',\n'中央综艺@@http://39.134.115.163:8080/PLTV/88888910/224/3221225647/index.m3u8@@http://tv.sason.xyz/logo/cctv3.png'\n,'浙江卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225744/index.m3u8@@http://tb.91kds.cn/tb/zjws.jpg',\n'惊悚悬疑@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225921/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjingsong.jpg',\n'大爱 I@@https://pulltv1.wanfudaluye.com/live/tv1.m3u8@@http://tv.sason.xyz/logo/da1.png',\n'中央国际@@http://39.134.115.163:8080/PLTV/88888910/224/3221225621/index.m3u8@@http://www.cietv.com/img/cctv4.jpg',\n'深圳卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225741/index.m3u8@@http://www.tvyan.com/uploads/dianshi/shenzhentv.jpg',\n'明星大片@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225929/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvdapian.jpg',\n'有线娱乐@@http://live-hwcdn.utvlive.top/live/d4e03afe056a4f2da070d5f789f3ac9e/a5ed7598a90246199df373924de367d4.m3u8@@http://www.tvyan.com/uploads/dianshi/cabletv301.jpg',\n'中央体育@@http://39.134.115.163:8080/PLTV/88888910/224/3221225633/index.m3u8@@http://www.cietv.com/img/cctv5.jpg',\n'湖北卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225740/index.m3u8@@http://www.tvyan.com/uploads/dianshi/hubeitv.jpg',\n'家庭剧场@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225918/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjiating.jpg',\n'有线财经@@http://live-hwcdn.utvlive.top/live/add598ff3f90428da3fbebb644ba135b/2bbaa83758ba412bbdd8d08626c56eb4.m3u8@@http://www.tvyan.com/uploads/dianshi/cabletv108.jpg',\n'体育赛事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225649/index.m3u8@@http://tv.sason.xyz/logo/cctv5p.png',\n'北京卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225673/index.m3u8@@http://tv.sason.xyz/logo/bjws.png',\n'精品大剧@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225925/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvdaju.jpg',\n'凤凰中文@@http://221.179.217.9/otttv.bj.chinamobile.com/PLTV/88888888/224/3221225948/1.m3u8@@http://tv.sason.xyz/logo/fhzw.png',\n'中央电影@@http://39.134.115.163:8080/PLTV/88888910/224/3221225650/index.m3u8@@http://www.cietv.com/img/cctv6.jpg',\n'青海卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225727/index.m3u8@@http://www.tvyan.com/uploads/dianshi/qinghaitv.jpg',\n'古装剧场@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225916/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'耀才财经@@http://202.69.67.66:443/webcast/bshdlive-mobile/playlist.m3u8@@http://www.tvyan.com/uploads/dianshi/bschannel.jpg',\n'中央军事@@http://39.134.115.163:8080/PLTV/88888910/224/3221225624/index.m3u8@@http://tv.sason.xyz/logo/cctv7.png',\n'东南卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225657/index.m3u8@@http://tv.sason.xyz/logo/dnws.png',\n'爱情喜剧@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225913/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvxiju.jpg',\n'亚旅卫视@@http://hls.jingchangkan.tv/jingchangkan/156722438_0HaM/index.m3u8@@http://www.cietv.com/img/atv.jpg',\n'8电视剧@@http://39.134.115.163:8080/PLTV/88888910/224/3221225635/index.m3u8@@http://tv.sason.xyz/logo/cctv8.png',\n'天津卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225739/index.m3u8@@http://tv.sason.xyz/logo/tjws.png',\n'军旅剧场@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225923/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjunlv.jpg',\n'凤凰资讯@@http://tv_qt.kksyw.top/tv_qt888/gat/ifeng.php?id=1@@http://tv.sason.xyz/logo/fhzx.png',\n'中央纪录@@http://39.134.115.163:8080/PLTV/88888910/224/3221225626/index.m3u8@@http://www.cietv.com/img/cctv9.jpg',\n'江苏卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225743/index.m3u8@@http://tv.sason.xyz/logo/jsws.png',\n'军事评论@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225926/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjspl.jpg',\n'大爱 II@@https://pulltv2.wanfudaluye.com/live/tv2.m3u8@@http://tv.sason.xyz/logo/da2.png',\n'中央科教@@http://39.134.115.163:8080/PLTV/88888910/224/3221225627/index.m3u8@@http://www.tvyan.com/uploads/dianshi/cctv10.jpg',\n'东方卫视@@http://hdtv.haust.edu.cn/hls/dfhd.m3u8@@http://tv.sason.xyz/logo/dfws.png',\n'动作电影@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225915/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'大爱海外@@https://pulltv3.wanfudaluye.com/live/tv3.m3u8@@http://tv.sason.xyz/logo/dagj.png',\n'中央戏曲@@http://39.134.115.163:8080/PLTV/88888910/224/3221225628/index.m3u8@@http://www.cietv.com/img/cctv11.jpg',\n'辽宁卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225735/index.m3u8@@http://tv.sason.xyz/logo/lnws.png',\n'精品体育@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221226287/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjpty.jpg',\n'凤凰香港@@http://223.110.245.136/PLTV/3/224/3221226975/index.m3u8@@http://tv.sason.xyz/logo/fhxg.png',\n'社会与法@@http://39.134.115.163:8080/PLTV/88888910/224/3221225629/index.m3u8@@http://www.cietv.com/img/cctv12.jpg',\n'江西卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225746/index.m3u8@@http://tv.sason.xyz/logo/jxws.png',\n'精品记录@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221226293/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjilu.jpg',\n'翡翠台@@http://116.199.5.52:8114/00000000/index.m3u8?&Fsv_ctype=LIVES&Fsv_otype=1&FvSeid=5abd1660af1babb4&Fsv_filetype=1&Fsv_ctype=LIVES&Fsv_cid=0&Fsv_chan_hls_se_idx=188&Fsv_rate_id=1&Fsv_SV_PARAM1=0&Fsv_ShiftEnable=0&Fsv_ShiftTsp=0&Provider_id=&Pcontent_id=&Fsv_CMSID=&Fsv_otype=1@@http://www.cietv.com/img/tvb.jpg',\n'中央新闻@@http://39.134.115.163:8080/PLTV/88888910/224/3221225638/index.m3u8@@http://tv.sason.xyz/logo/cctv13.png',\n'黑龙江卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225736/index.m3u8@@http://tv.sason.xyz/logo/hljws.png',\n'黑莓电影@@http://121.31.30.91:8081/ysten-business/live/jdianying/1.m3u8@@http://tb.91kds.cn/tb/yst.jpg',\n'V音乐@@http://hdtv.haust.edu.cn/hls/channelv.m3u8@@http://www.tvyan.com/uploads/dianshi/channelv.jpg',\n'中央少儿@@http://39.134.115.163:8080/PLTV/88888910/224/3221225639/index.m3u8@@http://www.cietv.com/img/cctv14.jpg',\n'重庆卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225734/index.m3u8@@http://tv.sason.xyz/logo/cqws.png',\n'超级电影@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221226133/1.m3u8#.@@http://www.tvyan.com/uploads/dianshi/newtvdianying.jpg',\n'明珠台@@http://116.199.5.51:8114/00000000/2e368e04c76446bc9d30ca7a9f934dae/index.m3u8?Fsv_cid=1034&Fsv_chan_hls_se_idx=12&Fsv_ctype=LIVES&version=9&Fsv_rate_id=1&Fsv_otype=1&FvSeid=5abd1660af1babb4&Pcontent_id=7f88be5fb6fd426494f6aa240f1dc7a9&Provider_id=00000000&Fsv_filetype=1&Fsv_ShiftEnable=0&Fsv_SV_PARAM1=0&Fsv_ShiftTsp=240&Fsv_CMSID=00000000&AuthInfo=P2ZSH2gNMZ8aiVfV%2BjCYczoGsAYoDo4KY5I3eHfJhGTKdSzgLwCHoSet9it9fXrMLwehJxh9gmO%2F%0AOFrWyxI%2BtteLTJnZKT7Lg8BRYQNXMQU%3D%0A@@http://tv.sason.xyz/logo/tvbmz.png',\n'中央音乐@@http://39.134.115.163:8080/PLTV/88888910/224/3221225641/index.m3u8@@http://tv.sason.xyz/logo/cctv15.png',\n'山东卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225738/index.m3u8@@http://tv.sason.xyz/logo/sdws.png',\n'农业致富@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225930/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvnongye.jpg',\n'点掌财经@@http://202.69.69.180:443/webcast/bshdlive-mobile/playlist.m3u8@@http://www.tvyan.com/uploads/allimg/1701/1-1F129133S80-L.jpg',\n'奥运@@http://ott-live.olympicchannel.com/out/u/OC1_1.m3u8@@https://ims-cdn0.sm.cn/ims?kt=MD5&at=smk&key=2CEC208E24A1D6472E5656633C3B5A78&tv=0_0&x.jpg',\n'河北卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225732/index.m3u8@@http://tv.sason.xyz/logo/hebws.png',\n'怡伴健康@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225919/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvjiankang.jpg',\n'澳门卫视@@http://61.244.22.4/ch3/ch3.live/index.m3u8@@http://www.tvyan.com/uploads/dianshi/aomen-macau.jpg',\n'中央农业@@http://39.134.115.163:8080/PLTV/88888910/224/3221225908/index.m3u8@@http://tv.sason.xyz/logo/cctv17.png',\n'夏门卫视@@http://ivi.bupt.edu.cn/hls/xmtv.m3u8@@http://tb.91kds.cn/tb/xmws.jpg',\n'中国功夫@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225951/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvgongfu.jpg',\n'国家地理@@http://hdtv.haust.edu.cn/hls/natlgeo.m3u8@@http://www.tvyan.com/uploads/dianshi/geographic.jpg',\n'中国气象@@http://hls.weathertv.cn/tslslive/qCFIfHB/hls/live_sd.m3u8@@http://www.tvyan.com/uploads/dianshi/tianqiyubao.jpg',\n'安徽卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225737/index.m3u8@@http://tv.sason.xyz/logo/ahws.png',\n'武搏@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221226171/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvboji.jpg',\n'CH台湾@@http://pull.hwgscm.com/live/playlist.m3u8@@http://c.hiphotos.baidu.com/forum/w%3D340%3Bq%3D100%3Bg%3D0/sign=345960d060600c33f079d8cc2a772032/0a00ad64034f78f0a80c393772310a55b1191cd8.jpg?&src=http%3A%2F%2Fimgsrc.baidu.com%2Fforum%2Fpic%2Fitem%2F0a00ad64034f78f0a80c393772310a55b1191cd8.jpg',\n'老故事@@http://39.135.9.77/gz.ucdn.10086.cn/PLTV/88888888/224/3221225677/1/index.m3u8?fmt=ts2hls@@http://www.tvyan.com/uploads/dianshi/cctvlgs.jpg',\n'吉林卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225680/index.m3u8@@http://tb.91kds.cn/tb/jlws.jpg',\n'潮妈辣婆@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225957/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvlama.jpg',\n'澳门葡语@@http://61.244.22.4/ch2/ch2.live/playelist.m3u8@@http://www.tvyan.com/uploads/dianshi/aoshi.jpg',\n'国际欧洲@@https://cctvtxyh5ca.liveplay.myqcloud.com/live/cctveurope_2/index.m3u8@@https://p2.img.cctvpic.com/photoAlbum/page/performance/img/2019/6/10/1560153162411_887.png',\n'四川卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225733/index.m3u8@@http://tv.sason.xyz/logo/scws.png',\n'海外剧场@@http://221.179.217.9//otttv.bj.chinamobile.com/PLTV/88888888/224/3221225917/1.m3u8@@http://www.tvyan.com/uploads/dianshi/newtvhaiwai.jpg',\n'澳门澳视@@http://61.244.22.4/ch1/ch1.live/playelist.m3u8@@http://www.tvyan.com/uploads/dianshi/tdmaomen.jpg',\n'国际美洲@@https://cctvcnch5ca.v.wscdns.com/live/cctvamerica_2/index.m3u8@@https://p5.img.cctvpic.com/photoAlbum/page/performance/img/2019/6/10/1560153192667_279.png',\n'贵州卫视@@http://39.134.115.163:8080/PLTV/88888910/224/3221225728/index.m3u8@@http://tv.sason.xyz/logo/gzws.png',\n'怀旧剧场@@http://39.135.9.77/gz.ucdn.10086.cn/PLTV/88888888/224/3221225765/1/index.m3u8?fmt=ts2hls@@http://www.tvyan.com/uploads/dianshi/cctvhjjc.jpg',\n\n'UTV优视影院@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-youshiyy/index.m3u8?IAS',\n'UTV家庭影院@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-jiatingjc/index.m3u8?IAS',\n'UTV影视精选@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-dongzuody/index.m3u8?IAS',\n'UTV时尚音乐@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-shishangmusic/index.m3u8?IAS',\n'UTV热播剧场@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-rebojuc/index.m3u8?IAS',\n'UTV电影天地@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-dianyingtd/index.m3u8?IAS',\n'UTV第一剧场@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-diyijc/index.m3u8?IAS',\n'UTV第一电影@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-diyidy/index.m3u8?IAS',\n'UTV纪实天下@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-jishitianxia/index.m3u8?IAS',\n'UTV经典剧场@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-jingdianjuc/index.m3u8?IAS',\n'UTV经典影视@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-jingdianys/index.m3u8?IAS',\n'UTV舞蹈视界@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-youshizy/index.m3u8?IAS',\n'UTV都市剧场@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-doushijuc/index.m3u8?IAS',\n'UTV金色童年@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-jinsetongnian/index.m3u8?IAS',\n'UTV钓鱼生活@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-xijutiandi/index.m3u8?IAS',\n'UTV风云体育@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-fengyuntiyu/index.m3u8?IAS',\n'UTV优视教育@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-youshijy/index.m3u8?IAS',\n'UTV卡通动画@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-katondonghua/index.m3u8?IAS',\n'UTV文化教育,@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-meiliqingchun/index.m3u8?IAS',\n'UTV炫酷动漫@@http://39.134.198.8:6610/yst.live.scmobile.com/otvzte.scmcc.com.cNF:8080/ysten-business/live/SD-1500k-576P-xuankudm/index.m3u8?IAS',\n];\n\nvar t=titles;\nvar res={};\nvar d=[];\nvar hitokoto={};\neval(\"hitokoto=\"+getResCode());\n\n\nfor (var i = 0; i < t.length && i < 6; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'movie_3_marquee';\n d.push(r);\n}\n\nd.push({\r\n title: '‘‘港澳台___中央____卫视___NewTV',\r\n url: \"\",\r\n col_type: 'text_center_1'\r\n});\nfor (var i = 6; i < t.length && i < 94; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'icon_4';\n d.push(r);\n}\n\nd.push({\r\n title: '高清影视',\r\n url: \"\",\r\n col_type: 'text_center_1'\r\n});\nfor (var i = 94; i < t.length && i <120; i++) {\n var k = t[i].split(/\\s*@@\\s*/);\n var r = {};\n r.title = k[0];\n r.url = k[1];\n r.pic_url = k[2];\n r.col_type = 'text_2';\n d.push(r);\n}\n\n\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff228be6","group":"直播-短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":""},{"firstHeader":"class","title":"美拍","author":"","version":0,"url":"https://www.meipai.com/squares/new_timeline?page=fypage&count=24&tid=fyAll&maxid=6727480796298115471","col_type":"movie_3","class_name":"全部&逛拍&涨知识&女神","class_url":"1&3&5&19","area_name":"赞不绝口&美拍&美妆","area_url":"22&58&55","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];var res = {};var h = getResCode();\neval('json='+h);\nfor(var k in json.medias){\n  d.push({\n  title:json.medias[k].caption,\n  pic_url:json.medias[k].cover_pic,\n  url:json.medias[k].cover_pic.replace('mvimg10','mvvideo10').replace('jpg','mp4')\n})\n}\nres.data = d; setHomeResult(res)","searchFind":"","search_url":"","titleColor":"#ff13b66a","group":"直播-短视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"PC","preRule":""},{"last_chapter_rule":"","title":"随机小姐姐","author":"SuperTian","version":1,"type":"video","url":"hiker://empty#fyAll","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar res={};\nvar d=[];\n\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #6699FF\">'+'小姐姐虽好，可不要贪杯哦！'+'</span></b>',\n    col_type: 'text_center_1'\n});\nd.push({\n    url: 'hiker://search',\n    desc: '搜你想要的...',\n    title: '请输入关键词搜索',\n    col_type: 'icon_1_search'\n});\nd.push({\n    title: \"随机小姐姐1\",\n    url: \"https://v.nrzj.vip/\",\ndesc: '0',\n  col_type: 'card_pic_1',\npic_url: \"https://si1.go2yd.com/get-image/0tW7hoD8VgK\"\n});\nd.push({\n    title: \"随机小姐姐2\",\n    url: \"http://shishuiliunian.top/xjj/\",\n  col_type: 'card_pic_2_2_left',\npic_url: \"http://t14.baidu.com/it/u=2771484152,1736643494&fm=224&app=112&f=JPEG?w=500&h=500\"\n});\nd.push({\n  title: \"随机小姐姐3\",\n  desc: '', url: 'https://xjiejie.vip/', \n      col_type: \"card_pic_2_2\", \n       pic_url: \"https://img0.baidu.com/it/u=1718821081,3862550060&fm=26&fmt=auto\"\n});\nd.push({\n  title: \"随机小姐姐4\",\n  desc: '', url: 'https://tvv.tw/xjj/kuaishou/',                        col_type: \"card_pic_2_2\", \n    pic_url: \"https://img2.baidu.com/it/u=2522372638,4180609482&fm=26&fmt=auto\"\n});\nd.push({\n    title: \"随机小姐姐5\",\n    url: \"https://www.xlzyw.com/xjj/ks/\",\ndesc: '0',\n  col_type: 'card_pic_2_2_left',\npic_url: \"https://img0.baidu.com/it/u=473473086,670514120&fm=15&fmt=auto\"\n});\nd.push({\n    title: \"随机小姐姐6\",\n    url: \"https://www.nihaowua.com/v/\",\ndesc: '0',\n  col_type: 'card_pic_2_2_left',\npic_url: \"https://img1.baidu.com/it/u=299272059,2640616913&fm=253&fmt=auto&app=138&f=JPEG?w=800&h=500\"\n});\nd.push({\n    title: \"随机小姐姐7\",\n    url: \"http://www.kuaidoushe.com/\",\ndesc: '0',\n  col_type: 'card_pic_2',\npic_url: \"https://img2.baidu.com/it/u=202105348,1603865392&fm=224&fmt=auto&gp=0.jpg\"\n});\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"直播平台","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"BT天堂🧲","author":"缘分","version":0,"type":"video","url":"https://www.hibttiantang.com/fyAll/fypage.html[firstPage=https://www.hibttiantang.com/fyAll.html]","col_type":"text_center_1","class_name":"爱情片&喜剧片&科幻片&恐怖片&","class_url":"sb/爱情&sb/喜剧&sb/科幻&sb/恐怖&","area_name":"动作片&战争片&","area_url":"sb/动作&sb/战争&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '#post_list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'h2&&Text'),\n       desc:parseDomForHtml(list[j], '.entry_post&&Text').match(/导演.*/)[0],\n       url: parseDom(list[j], 'a&&href')\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '#post_list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'h2&&Text'),\n       desc:parseDomForHtml(list[j], '.entry_post&&Text').match(/导演.*/)[0],\n       url: parseDom(list[j], 'a&&href')\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.hibttiantang.com/e/search/new.php?keyboard=**;post","group":"磁力","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {}));\nd.push({\n    title: hitokoto.content,\n    desc: '类别：' + hitokoto.category +\n        '\\n作者：' + hitokoto.author + '《' + hitokoto.origin + '》',\n    col_type: 'pic_1_card',\n    url: MY_URL,\n    pic_url: 'http://api.btstu.cn/sjbz/api.php?lx=fengjing&format=images&_tt='+new Date().getTime()\n});\n\nvar conts = pdfa(getResCode(), '#download&&.dlist&&li');\n\nd.push({\n       title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">排序👆共有' + conts.length + '条线路</span></b>' : '““””<b><span style=\"color: #1aad19\">排序👇共有' + conts.length + '条线路</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'text_center_1'\n    })\n       \n if (getVar('shsort') == '1') {\n    for (var j = conts.length - 1; j >= 0; j--) {\n        d.push({\n            title: pdfh(conts[j], 'a,1&&Text').split('.').splice(-4).join('.'),\n            url: pd(conts[j], 'a,1&&href'),\n            col_type:  'text_1'\n        });\n     } \n  }else {\n     for (var j = 0; j < conts.length; j++){\n        d.push({\n            title: pdfh(conts[j], 'a,1&&Text').split('.').splice(-4).join('.'),\n            url: pd(conts[j], 'a,1&&href'),\n            col_type:  'text_1'\n        });\n     }\n  }\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://js.imgcdnx.com/bttt/images/logo.png"},{"last_chapter_rule":"","title":"lonto18","author":"文墨&幼稚鬼","version":0,"type":"other","url":"http://lonto18.com/tim-phim-sec/fyclass/fypage","col_type":"movie_2","class_name":"网红&美女&双非&露脸&头请&国产&空姐&明星&偷牌&丝袜&主播&露脸&模特&學生&中国女明星&高中&女神&极品美女&高顏值&清純&美少女","class_url":"网红&美女&双非&露脸&头请&国产&空姐&明星&偷牌&丝袜&主播&露脸&模特&學生&中国女明星&高中&女神&极品美女&高顏值&清純&美少女","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\nvar  list  =  parseDomForArray(getResCode(), '#ibody&&#item');\nfor (var j in list) {\n    d.push({       \n            title:  parseDomForHtml(list[j],  'a&&title'),\n               desc: parseDomForHtml(list[j],  '.right&&Text'),\n               pic_url:  parseDom(list[j],  'img&&src'),\n               url:  'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n          \n    });\n}\nres.data  =  d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '#ibody&&.adexo');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),\ndesc: parseDomForHtml(list[j], '.adexo&&Text'),\r\npic_url: parseDom(list[j],'img&&src'),       \r\nurl: parseDom(list[j], 'a&&href'),\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"http://lonto18.com/tim-phim-sec/**/fypage","group":"福利","detail_col_type":"text_center_1","detail_find_rule":"","sdetail_col_type":"text_center_1","sdetail_find_rule":"js:\nvar  res  =   {};\nvar  d  =   [];\nvar  html  =  getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/.mp3|.mp4|.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i]\n        }\n    }\n});\n    d.push({       \n             title:'立即播放',\n               url:   'x5Rule://' + MY_URL+ '@' + _x5,\n          \n    });\n\nres.data  =  d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"搬家","author":"发粪涂墙","version":0,"type":"other","url":"http://www.byj3.me/#fyAll#fypage","col_type":"icon_2_round","class_name":"热门专题&更多专题&最新视频&女⁡优大全&国产女⁡优&日本女⁡优","class_url":"&community/&videos/&model/&modelzh/&modeljp/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar M = MY_URL.split('#');\nvar html = request(MY_URL.replace(/#/g,''));\nif(M[2]=='1'){html = request(M[0]+M[1])}\nif(M[1]=='videos/'||M[2]=='1'){\nvar list = parseDomForArray(html, 'body&&.cell');\nfor (var j in list) {\nvar url = parseDom(list[j],'a&&href');\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: M[1]=='videos/'?url + `@lazyRule=#video&&source,-1&&src`:url+'/fypage/[firstPage='+url+']',\n      col_type:M[1]=='videos/'?'movie_3_marquee':'icon_2_round'\n  });\n}\n}\nsetResult(d)","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.video-duration&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: parseDom(list[j],'a&&href')+`@lazyRule=#video&&source,-1&&src`\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.banyinjia3.com/search/video/?s=**&page=fypage","group":"福利","detail_col_type":"movie_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.video-duration&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: parseDom(list[j],'a&&href')+`@lazyRule=#video&&source,-1&&src`\n\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ffff6877"},{"last_chapter_rule":"","title":"寶寶直播","author":"发粪涂墙","version":0,"type":"other","url":"http://l.lzpeng.com/api/public/?service=Home.getHot","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar json = JSON.parse(getResCode());\nvar list = json.data.info[0].list;\nvar items = list.map(data => ({\n title: data.user_nicename,\n img: data.thumb,\n desc: data.city,\n url: data.pull\n}));\nsetResult(items);","searchFind":"","search_url":"","group":"福利","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"全国凤楼✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://wa66.xyz/?u=vm48Bvo69JTX","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=全国凤楼"},{"firstHeader":"class","last_chapter_rule":"","title":"TOKYOMOTION.DR✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.tokyomotion.net/?qingse.one","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=TOKYOMOTION"},{"last_chapter_rule":"","title":"正妹AV✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##http://goodav17.com/?qingse.one","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"成人VR影片✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.pornvr.me/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=成人VR影片"},{"firstHeader":"class","last_chapter_rule":"","title":"EPORNER✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.eporner.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=EPORNER"},{"firstHeader":"class","last_chapter_rule":"","title":"寻她千百度✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://vcvc7.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"VRPorn✈️.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://vrporn.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=VRPorn✈️"},{"firstHeader":"class","last_chapter_rule":"","title":"VR✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://virtualporn.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=VR"},{"firstHeader":"class","last_chapter_rule":"","title":"rechub✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.rechub.tv/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=rechub"},{"firstHeader":"class","last_chapter_rule":"","title":"jav-vr✈️.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://jav-vr.net/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=jav-vr✈️"},{"firstHeader":"class","last_chapter_rule":"","title":"成人深度换脸✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##https://adultdeepfakes.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=成人深度换脸"},{"firstHeader":"class","last_chapter_rule":"","title":"卫华吃瓜网","author":"卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华卫华","version":1,"type":"video","url":"hiker://empty##https://htpcz2.51cg3.info/archives/10482/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卫华吃瓜网"},{"firstHeader":"class","last_chapter_rule":"","title":"免费成人直播","author":"道长","version":1,"type":"other","url":"hiker://empty##https://zh.live.nudevista.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"福利合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=免费成人直播"},{"last_chapter_rule":"","title":"环亚","author":"道长","version":1,"type":"video","url":"hiker://empty##http://wmcj8.com/inc/sapi.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"私人","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=环亚"},{"last_chapter_rule":"","title":"搬家修改版","author":"老司机俱乐部","version":1,"type":"video","url":"https://www.byj28.me/#fyAll#fypage","col_type":"movie_2","class_name":"热门专题&更多专题&最新视频&女⁡优大全&国产女⁡优&日本女⁡优","class_url":"hottopic/&community/&videos/&model/&modelzh/&modeljp/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar M = MY_URL.split('#');\nvar html = request(MY_URL.replace(/#/g,''));\nif(M[2]=='1'){html = request(M[0]+M[1])}\nif(M[1]=='videos/'||M[2]=='1'){\nvar list = parseDomForArray(html, 'body&&.cell');\nfor (var j in list) {\nvar url = parseDom(list[j],'a&&href');\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: M[1]=='videos/'?url + `@lazyRule=#video&&source,-1&&src`:url+'/fypage/[firstPage='+url+']',\n      col_type:M[1]=='videos/'?'movie_2':'movie_2'\n  });\n}\n}\nsetResult(d)","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.video-duration&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-src'),\n      url: parseDom(list[j],'a&&href')+`@lazyRule=#video&&source,-1&&src`\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.byj28.me/search/video/?s=**&page=fypage","group":"老司机俱乐部","detail_col_type":"movie_2","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),\ndesc: parseDomForHtml(list[j], '.video-duration&&Text'),\r\npic_url: parseDom(list[j],'img&&data-src'),     \r\nurl:'https://storage.banyinjia8.com'+parseDomForHtml(list[j],'img&&data-src').substring(0,parseDomForHtml(list[j],'img&&data-src').length-5).replace(\"tmb\",\"hls\")+'playlist.m3u8'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.byj11.me/images/icon.ico"},{"last_chapter_rule":"","title":"小姐姐合集","author":"Hood(小🔥星收集)","version":28,"type":"all","url":"hiker://fyAll","col_type":"text_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: \nvar titles=\n[\n'小姐姐0@@https://tvv.tw/xjj/get/',\n'小姐姐1@@https://mm.diskgirl.com/pc.html',\n'小姐姐2@@https://v.nrzj.vip/',\n'小姐姐3@@https://xjj.349457.xyz/',\n'小姐姐4@@http://dou.plus/index.html',\n'小姐姐5@@http://xjj.nbtd.vip/index.html',\n'小姐姐6@@https://xjiejie.vip',\n\n'小姐姐7@@https://www.nihaowua.com/v/',\n'小姐姐8@@http://v.nrzj.vip/video.php',\n'小姐姐9@@https://t.xxgeek.com/tools/mmvod/m.php',\n\n\n\n];\n\nvar t=titles;\nvar res={};\nvar d=[];\n\nd.push({\n    title:\"““””<b>\"+'<span style=\"color: #6699FF\">'+'小姐姐随机资源：'+'</span></b>',\n    url: 'toast://点什么点 (｡•ˇ‸ˇ•｡)',\n    col_type: 'text_1'\n});\n\nfor(var i=0;i<t.length;i++)\n{\n   var k=t[i].split(/\\s*@@\\s*/);\n   if(k.length<2)continue;\n   var r={};\n   r.title=k[0];\n   r.url=k[1];\n   r.col_type='text_3';\n   d.push(r);\n}\n\nfor(var b=0;b<3;b++)\n{\n   d.push({\n    col_type: 'big_blank_block'});\n}\n\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#fff20c00","group":"聚合","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/30.svg"},{"last_chapter_rule":"","title":"轻合集.缘分","author":"缘分","version":106,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"聚合","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://gitee.com/liuzaoyue80/my/raw/master/share-home-rules.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages || '[]') }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 24 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"https://img2.woyaogexing.com/2022/04/19/dc6b18070df64185a80f6dcb3cbfc207!400x400.jpeg"},{"last_chapter_rule":"","title":"🏢图书馆","author":"小棉袄🌞&永远の明日","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"聚合","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=5484&auth=01c62ea0-a189-5a18-9e91-654017e40468')\n// \n/*\n@joker\nselect、input、confirm适配assignLazyRule\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"这是轻合集的搜索哦~~\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    if(!RULE.pages) RULE.pages = '[]'\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages) }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 156 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=图书馆"},{"last_chapter_rule":"","title":"📰知天下","author":"小棉袄🌞&永远の明日","version":105,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', 'find:'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow.startsWith('find:')) {\n                    let filterKey = typeShow.slice(5)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow.startsWith('find:')) {\n    let filterKey = typeShow.slice(5)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow.startsWith('find:') ? {\n    title: '““””' + ('全部' + (typeShow[5] ? '[' + typeShow.slice(5) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', 'find:' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', 'find:')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (!typeShow.startsWith('find:')) rules = rulesType[typeShow]\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^(https?:\\/\\/.+?)(?:#|\\?|\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', 'find:')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow.startsWith('find:')) {\n                let filterKey = typeShow.slice(5)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"聚合","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=5486&auth=050c66ad-d1f3-58e0-8e46-a86841fdb0b2')\n// \n/*\n@joker\nselect、input、confirm适配assignLazyRule\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if(Number.isNaN(input)) input = 1\\n        else if(input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif(editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i)=>{\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'))(true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    // 加载ClassTab组件\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    if (MY_PAGE == 1) {\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"这是轻合集的搜索哦~~\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) {\\n    let loaded = getMyVar(MY_RULE.title + \\\"@pre\\\")\\n    if (!loaded || isIndex) {\\n        eval(thisRULE.preRule)\\n        putMyVar(MY_RULE.title + \\\"@pre\\\", \\\"1\\\")\\n    }\\n}\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title, url) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    if(!RULE.pages) RULE.pages = '[]'\\n    return { title:title, url: url, pages: RULE.pages, pageList: JSON.parse(RULE.pages) }\\n}, QING_TITLE, MY_RULE.title, MY_RULE.url)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            if(!v.extra) v.extra = {}\\n            v.col_type = v.col_type || MY_RULE.col_type\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra })\\n\\n            if (typeof v.url != 'string' || ['rule', 'pics', 'toast', 'input', 'confirm', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || v.extra.rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = Object.assign({}, v.extra, {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            })\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = []\\n        if(interval == 0) interval = -1\\n        try { remoteData = JSON.parse(fetchCache(url, 156 * interval, {timeout:50000})) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\"}]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=知天下"},{"last_chapter_rule":"","title":"西瓜视频","author":"老子胸口有纹身","version":0,"type":"video","url":"hiker://empty##https://gfzycj.hnmj.vip/api.php/provide/vod/from/xigua#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"自用","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://huichuan-mc.sm.cn/42982284/2201202f9de8cba82ca0679f57d90432ab3d30.jpg"},{"last_chapter_rule":"","title":"快云影音","author":"道长&老子胸口有纹身","version":0,"type":"video","url":"hiker://empty##https://www.kuaiyunyy.com/api.php/app/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"自用","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","icon":"https://gitee.com/hjdhnx/hiker/raw/master/AppIcon/快云影音.png"},{"last_chapter_rule":"","title":"4KAN影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.4kan.cc/vodshow/1--------fypage---/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__box;.text-overflow&&Text;.lazyload&&data-original.js:input+'@Referer=';span,2&&.pic-tag&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.stui-header__menu',\n        子分类: 'ul&&li:not(:matches(首页|下载|求片))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:gt(0):has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.4kan.cc/index.php/verify/index.html?');\n    let ret=提交验证码('https://www.4kan.cc/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n        html=获取源码(MY_URL);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nlet parStr=\".stui-vodlist__media&&li;h3&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,1&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.4kan.cc/vodsearch/**----------fypage---/","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.stui-content__detail&&h1&&Text;.stui-content__detail&&p,2&&Text;.stui-content__detail&&p,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p,3&&Text;.stui-content__detail&&p,0&&Text',\n    content: '.stui-content__detail&&p,4&&Text',\n    tabs: 'body&&.nav-tabs&&li',\n    lists: 'body&&.stui-content__playlist,#id&&a',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.libvio.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/22.svg"},{"last_chapter_rule":"","title":"南府D","author":"爱是用心","version":0,"type":"video","url":"http://www.nfuxs.club/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst Color = getRangeColors()\n\nconst a = MY_URL.replace('hiker://empty##', '');\nlet true_url = getVar(\"MY_URL.url\", a)\nconst page = MY_PAGE;\n\n//setError(page);\n\n\n//翻页 需要根据实际替换\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nconst html = fetch(true_url)\nconst empty = \"hiker://empty\"\n//获取列表 \nconst categories = parseDomForArray(html, 'body&&.scroll-content')\n\n//setError(true_url);\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\n// 取缓存\nconst fold = getVar(\"MY_URL.fold\", \"0\")\nconst cate_temp_json = getVar(\"MY_URL.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #c93756\">: (</span></b>' : '““””<b><span style=\"color: ' + Color + '\">: )</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"MY_URL.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'div&&a');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text').replace('片库', '')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"MY_URL.category\", JSON.stringify(new_cate))\n                        putVar(\"MY_URL.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text');\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\"color:' + Color + '\">' + title + '</span>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"MY_URL.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"MY_URL.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\n//一级页面\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, 'body&&.module-list&&.module-search-item');\n\nfor (var i = 0; i < list.length; i++) {\n    var L = list[i];\n    d.push({\n        title: pdfh(list[i], 'img&&alt'),\n        url: pd(list[i], 'a,1&&href')+'#immersiveTheme#',\n        desc: pdfh(list[i], '.video-info&&a&&Text'),\n        content: pdfh(list[i], '.video-info-main&&.video-info-item,2&&Text'),\n        img: pd(list[i], 'img&&data-src'),\n    });\n}\nsetResult(d)","search_url":"http://www.nfuxs.club/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-items,5&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n//调用断插\nvar config = fetch('hiker://files/cache/MyParseSet.json');\n\nif(config == '' || !fetch(JSON.parse(config).cj)){\n\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n\n}else{\n\n    var jsUrl = JSON.parse(config).cj;\n\n} eval(fetch(jsUrl));\n\n//断插免嗅探\nvar lazy3 = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//嗅探\nvar lazy1 = $('').lazyRule((v) => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    //var playurl = decodeURIComponent(base64Decode(html.url));\n    var playurl = html.url;\n    log(\"输入链接:\" + playurl);\n\n    if (/\\.m3u8|\\.mp4/.test(playurl) && /cat\\.wkfile/.test(playurl)) {\n        let url = playurl + \";{Referer@https://fantuan.tv}\";\n        return url\n    } else if (/\\.m3u8|\\.mp4/.test(playurl)) {\n        return cacheM3u8(playurl)\n    } else if (/id_/.test(playurl)) {\n        return maoss(\"https://api.xkvideo.design/m3u8.php?url=\" + playurl, false, \"zsdrf880203ghurd\")\n\n    } else if (/LT-/.test(playurl)) {\n        try {\n            let play = JSON.parse(request('http://app.nfuxs.com/lt/json.php?url=' + playurl)).url;\n            let jiexi_key = JSON.parse(request(\"http://iapp.nfuxs.club/application/api/controller/v1/mogai_ad.php\")).data.jiexi_key;\n            let deurl = rc4.decode(play, jiexi_key);\n            return deurl + \"#isVideo=true#\"\n        } catch (e) {\n            let play = JSON.parse(request('https://app.nfuxs.com/jx/json.php?url=' + playurl)).url;\n            let jiexi_key = JSON.parse(request(\"http://iapp.nfuxs.club/application/api/controller/v1/mogai_ad.php\")).data.jiexi_key;\n            let deurl = rc4.decode(play, jiexi_key);\n            return deurl + \"#isVideo=true#\"\n        }\n    } else if (/xfy-/.test(playurl) || /fen\\.laodi/.test(playurl)) {\n\n        let play = JSON.parse(request('http://app.nfuxs.com/lt/json.php?url=' + playurl)).url;\n        let jiexi_key = JSON.parse(request(\"http://iapp.nfuxs.club/application/api/controller/v1/mogai_ad.php\")).data.jiexi_key;\n        let deurl = rc4.decode(play, jiexi_key);\n        return deurl + \"#isVideo=true#\"\n    } else {\n        try {\n            let play = JSON.parse(request('https://app.nfuxs.com/jx/json.php?url=' + playurl)).url;\n            let jiexi_key = JSON.parse(request(\"http://iapp.nfuxs.club/application/api/controller/v1/mogai_ad.php\")).data.jiexi_key;\n            let deurl = rc4.decode(play, jiexi_key);\n            return deurl + \"#isVideo=true#\"\n        } catch (e) {\n            //web\n            //var jiexi = jiek + urll;\n            showLoading(\"正在进行日志检索，请稍候...\");\n            var video = 'webRule://' + playurl + '@' + $.toString(() => {\n                //fba.log(fba.getUrls());\n                var urls = _getUrls();\n                if (urls.length > 0) {\n                    for (var i in urls) {\n                        if (urls[i].match(/\\.m3u8|\\.mp4|obj\\/tos|\\.flv/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http/)) {\n                            //fy_bridge_app.log(urls[i])\n                            if (urls[i].indexOf('bilivideo') != -1) {\n                                return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                            } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                                return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                            } else {\n                                return urls[i]\n                            }\n                        }\n                    }\n                } else {\n                    fba.hideLoading();\n                    return 'toast://嗅探失败，可能链接无法访问。'\n                }\n            });\n            return video\n        }\n    }\n\n    function maoss(jxurl, ref, key) {\n        eval(getCryptoJS());\n        try {\n            var getVideoInfo = function(text) {\n                return CryptoJS.AES.decrypt(text, key, {\n                    iv: iv,\n                    padding: CryptoJS.pad.Pkcs7\n                }).toString(CryptoJS.enc.Utf8);\n            };\n            var token_key = key == undefined ? 'dvyYRQlnPRCMdQSe' : key;\n            if (ref) {\n                var html = request(jxurl, {\n                    headers: {\n                        'Referer': ref\n                    }\n                });\n            } else {\n                var html = request(jxurl);\n            }\n            if (html.indexOf('&btwaf=') != -1) {\n                html = request(jxurl + '&btwaf' + html.match(/&btwaf(.*?)\"/)[1], {\n                    headers: {\n                        'Referer': ref\n                    }\n                })\n            }\n            var token_iv = html.split('_token = \"')[1].split('\"')[0];\n            var key = CryptoJS.enc.Utf8.parse(token_key);\n            var iv = CryptoJS.enc.Utf8.parse(token_iv);\n            // log(\"iv:\"+iv);\n            //  log(html);\n            eval(html.match(/var config = {[\\s\\S]*?}/)[0] + '');\n            if (config.url.slice(0, 4) != 'http') {\n                //config.url = decodeURIComponent(AES(config.url, key, iv));\n                config.url = CryptoJS.AES.decrypt(config.url, key, {\n                    iv: iv,\n                    padding: CryptoJS.pad.Pkcs7\n                }).toString(CryptoJS.enc.Utf8)\n            }\n            return config.url + \"#isVideo=true#\";\n        } catch (e) {\n            return '';\n        }\n    }\n二级嗅探by香雅情\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','断插','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else if(getItem('dn.test_mode','通免')==='断插'){\n    var lazy=lazy3\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        jsurl = unescape(base64Decode(jsurl));\\n    }\\n    var from = player.from;\\n    eval(request(pd(fetch(input, ), '.embed-responsive||.player-wrapper&&script,1&&src')));\\n    var jx = MacPlayerConfig.player_list[from].parse;\\n    if (jx == '') {\\n        jx = \\\"https://api.xkvideo.design/m3u8.php?url=\\\";\\n    };\\n    log('\\\\n线路：' + from + '\\\\n' + '解析接口：' + jx);\\n    var parse = jx + jsurl;\\n    //log(parse);\\n\\n    var jhtml = request(parse);\\n    eval(getCryptoJS());\\n    key = \\\"zsdrf880203ghurd\\\";\\n    var le_token = jhtml.match(/_token = \\\\\\\"(.*?)\\\\\\\"/)[1];\\n    var _token_key = CryptoJS.enc.Utf8.parse(key);\\n    var _token_iv = CryptoJS.enc.Utf8.parse(le_token);\\n    var VideoInfo = jhtml.match(/getVideoInfo\\\\(\\\\\\\"(.*?)\\\\\\\"/)[1];\\n\\n    function v_decrypt(data, token_key, token_iv) {\\n        return CryptoJS.AES.decrypt(data, token_key, {\\n            iv: token_iv\\n        }).toString(CryptoJS.enc.Utf8);\\n    };\\n    var video = v_decrypt(VideoInfo, _token_key, _token_iv);\\n    if (/mgtv|sohu/.test(jsurl)) {\\n        return video + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n    } else if (/bili/.test(jsurl)) {\\n        return video + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n    } else {\\n        return cacheM3u8(video);\\n    }\\n});\"}]","icon":"https://inmemory.coding.net/p/InMemory/d/MBrowser/git/raw/master/AppFile/AppIcon/南府影视.png"},{"last_chapter_rule":"","title":"长空影视D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.changkongys.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: '.nav-list',\n        子分类: 'ul&&li:gt(0):lt(5)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.col-lg-6');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        content: parseDomForHtml(list[j], '.detail&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original'),\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.changkongys.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,5&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/56.svg"},{"last_chapter_rule":"","title":"亿视影院D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.14yy.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(直播片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .开始打造分类();\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.14yy.cc/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.sqjj_a&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/6.svg"},{"last_chapter_rule":"","title":"疾风影视D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://jftv.me/vodshow/dianying--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE;\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], '.lazy&&data-src') + '@Referer=',\n        url: pd(list[j],'a&&href')\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.module-items&&.module-search-item');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.video-info&&a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-src');\r\n        var url = parseDom(list[i], '.video-info&&a&&href');\n        var desc = parseDomForHtml(list[i], '.video-serial&&Text');\n        var con = parseDomForHtml(list[i], '.video-info-items,-1&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://jftv.me/vodsearch/**----------fypage---/","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nvar tabs = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar conts = parseDomForArray(html, 'body&&.module-player-list:has(.module-blocklist)');\nvar listlen = parseDomForArray(conts[0], 'body&&.scroll-content&&a');\n\nvar thumb = parseDom(html, \".module-item-pic&&img&&data-src\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".video-info-content&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfunction dpsh(list) {\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], \"a&&Text\"),\n            url: parseDom(list[j], \"a&&href\") + lazy,\n            extra: {\n                id: parseDom(list[j], \"a&&href\")\n            },\n            col_type: 'text_3'\n        });\n    }\n};\n\nif (tabs.length > 1 && listlen.length > 12) {\n    var title = 'xkys' + parseDomForHtml(html, '.video-info-header&&h1&&Text');\n    //处理线路显示\n    for (var i in conts) {\n        d.push({\n            title: (getMyVar(title, '0') == i ? '👇🏻' : '') + parseDomForHtml(tabs[i], 'body&&Text'),\n            url: `hiker://empty@lazyRule=.js:putMyVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n            col_type: 'flex_button'\n        });\n    };\n    //分割线\n    d.push({\n        col_type: 'line_blank'\n    });\n\n  \n    var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&.scroll-content&&a');\n    dpsh(list);\n} else {\n    for (var i in conts) {\n        var list = parseDomForArray(conts[i], 'body&&.scroll-content&&a');\n        if (list != null) {\n            d.push({\n                title: parseDomForHtml(tabs[i], \"body&&Text\"),\n                col_type: 'text_1'\n            });\n            dpsh(list);\n        }\n    }\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/54.svg"},{"last_chapter_rule":"","title":"琅琊影视D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.u23c.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)  \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: '.category-block',\n        子分类: 'body&&a:gt(0):lt(6)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.filter-panel',\n        子分类: 'body&&a:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.movie-list-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.movie-title&&Text'),\n        desc: pdfh(list[j], '.movie-rating&&Text'),\n        img: pd(list[j], '.movie-post-lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.vod-search-list');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.movie-title&&title'),\n        desc: parseDomForHtml(list[j], '.movie-rating&&Text'),\n        img: parseDom(list[j], '.movie-post-lazyload&&data-original'),\n        content: parseDomForHtml(list[j], '.txtHide&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.u23c.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.swiper-slide');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.movie-info&&Text');\n\nvar 导演 = parseDomForHtml(html, '').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.starLink&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.title-block&&p,0&&Text');\n\nvar 状态 = parseDomForHtml(html, '.scroll-content&&Text');\n\nvar 图片 = parseDom(html, '.poster&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.detailsTxt&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',})","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/58.svg"},{"last_chapter_rule":"","title":"片吧D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.pianba.tv/class/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace('---.html',page+ '---.html/').replace(/(---\\d+.html)/,page+'$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: '.type',\n        子分类: 'ul&&li:gt(2):lt(7)',\n    })\n    .添加分类定位({\n        一级分类: '.item#screenbox&&.clearfix',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = parseDomForArray(html, 'body&&.stui-vodlist__box');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original'),\n        content: parseDomForHtml(list[j], ''),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.pianba.tv/so/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/m3u8,.*/,'m3u8').replace(/\\/.*html,/,'')\n        }\n    }\n});\n\nvar arts = parseDomForArray(html, 'body&&.pull-right1');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p.data,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p.desc&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p.data&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-content&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/84.svg"},{"last_chapter_rule":"","title":"月亮电影D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.13tv.top/vodshow/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.filter_line'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)\n\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.pack-ykpack');\nfor (var j in list) {\n    d.push({\n      \n        title: pdfh(list[j], '.pack-title&&Text'),       \n        desc: pdfh(list[j], '.pack-prb&&Text'),\n        img: pd(list[j], '.eclazy&&data-original') + '@Referer=',       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.padd');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.ecitem-name&&Text'),\n        desc: parseDomForHtml(list[j], '.ec_indezb&&Text'),\n        img: parseDom(list[j], '.eclazy&&data-original'),\n        content: parseDomForHtml(list[j], '.ecitem-desc&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"http://www.13tv.top/vodsearch/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, '.swiper-wrapper&&.channelname');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.title-left&&Text');\n\nvar 导演 = parseDomForHtml(html, '.item-wrap&&p,5&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.item-wrap&&p,6&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.item-wrap&&p,7&&Text');\n\nvar 状态 = parseDomForHtml(html, '.item-wrap&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.g-playicon&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '#cText&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/61.svg"},{"last_chapter_rule":"","title":"奇萃影视D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##http://www.ikuwoo.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".module-items&&a;.module-poster-item-title&&Text;.lazyload&&data-original.js:input+'@Referer=';.module-item-note&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.navbar-items',\n        子分类: 'ul&&li:gt(2):lt(7)',\n分类链接: {\n            二次处理(url) {\n                return url.replace('/type/', '/show/')\n            }\n        }\n},{\n        一级分类: 'body&&.module-class-item',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.module-card-item;.module-card-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href;.module-info-item-content&&Text\";\n一级(parStr,true);","search_url":"http://www.ikuwoo.cn/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.module-info-item,1&&Text;.module-info-item,3&&Text',\n    img: '.s-cover-img&&src',\n    url: '.s-cover-img&&src',\n    desc: '.module-info-item,5&&Text;.module-info-item,6&&Text',\n    content: '.module-info-introduction-content&&Text',\n    tabs: 'body&&.module-tab-item',\n    lists: '.module-play-list-content,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/64.svg"},{"last_chapter_rule":"","title":"9亿看影视D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##https://www.9ekk.net/vodshow/dianying--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__box;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:gt(0):lt(5)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist__media&&li;.title&&Text;.lazyload&&data-original;.detail&&p,2&&Text;a&&href;.detail&&p,1&&Text\";\n一级(parStr,true);","search_url":"https://www.9ekk.net/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.stui-content__detail&&p,2&&Text;.stui-content__detail&&p,1&&Text',\n    img: '.s-cover-img&&img&&src',\n    url: '.s-cover-img&&img&&src',\n    desc: '.stui-content__detail&&p,3&&Text;.stui-content__detail&&p,0&&Text',\n    content: '.detail-sketch&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.stui-content__playlist,#id&&li',\n    //tab_id:'a&&href:has(alt)'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/62.svg"},{"last_chapter_rule":"","title":"刷剧吧D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://shuaju8.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(直播片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://shuaju8.com/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/5.svg"},{"last_chapter_rule":"","title":"奈落影院D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://newfii.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1] //获取页码\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://newfii.com/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else \n    if (/renrenmi|ltnb|naifeimi/.test(from)) {\n       eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    var video = ParseS.maoss(\"https://www.haokanys.top/?url=\" + jsurl, false, \"A42EAC0C2B408472\")\n       } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.sqjj_a&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/7.svg"},{"last_chapter_rule":"","title":"大象影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.daxiangtv.net/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.nav-list',\n        子分类: 'ul&&li:not(:matches(首页|4K|明星|专题))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.daxiangtv.net/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/9.svg"},{"last_chapter_rule":"","title":"OmoFun动漫D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://omofun.tv/index.php/vod/show/id/20/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(钛合金专区片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://omofun.tv/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/12.svg"},{"last_chapter_rule":"","title":"动漫星球D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.dmxq.fun/vodshow/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(下载专栏片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.dmxq.fun/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/13.svg"},{"last_chapter_rule":"","title":"森之屋D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.senfun.net/show/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(钛合金专区片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1] \n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.senfun.net/search/wd/**/page/fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/14.svg"},{"last_chapter_rule":"","title":"站帮影视D","author":"爱是用心","version":1,"type":"video","url":"hiker://empty##http://www.vipz8.cn/index.php/vod/show/id/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.filter_line'\nconst 小类定位 = 'body&&a:not(:matches(短片mv|体育比赛))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)  \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.pack-ykpack');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span,-1&&Text'),\n        img: pd(list[j], '.eclazy&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.ec-search&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.ecitem-name&&Text'),\n        content: parseDomForHtml(list[j], '.ec-item&&Text'),\n        img: parseDom(list[j], '.eclazy&&data-original'),\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"http://www.vipz8.cn/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else \n    if (/renrenmi|ltnb|naifeimi/.test(from)) {\n       eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));\n    eval(fetch(config.cj));\n    var video = ParseS.maoss(\"https://www.haokanys.top/?url=\" + jsurl, false, \"A42EAC0C2B408472\")\n       } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8|video/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i]\n               }\n            }\n        })\n    }\n    return video\n});\n\nvar arts = parseDomForArray(html, 'body&&.play_source_tab&&a');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&title');\n\nvar 导演 = parseDomForHtml(html, '.item-wrap&&p,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.item-type&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.remarks&&Text');\n\nvar 状态 = parseDomForHtml(html, '.item-wrap&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.s-cover&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.item-desc&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/16.svg"},{"last_chapter_rule":"","title":"九州影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.unss.net/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'body&&a:not(:matches(首页|资讯|专题))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"http://www.unss.net/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-content__detail&&p,4&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/17.svg"},{"last_chapter_rule":"","title":"浮生半日D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://movie.fush8.com/vodshow/SCCCCS--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|福利|纪录片|歌曲MV))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://movie.fush8.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.zkjj_a&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/20.svg"},{"last_chapter_rule":"","title":"南瓜电影D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.nangua55.net/l/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/(.*)\\/(.*?)\\./)[2]\ntrue_url = true_url.replace('.html' + page + '.html') //拼接页码\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.fed-menu-info',\n        子分类: 'body--a&&a:not(:matches(首页|资讯|留言|导航))',\n    })\n    .添加分类定位({\n        一级分类: '.fed-casc-list&&dl',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.fed-list-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.fed-list-title&&Text'),\n        desc: pdfh(list[j], '.fed-list-remarks&&Text'),\n        img: pd(list[j], '.fed-lazy&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.fed-list-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.fed-list-title&&Text'),\n        desc: parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n        img: parseDom(list[j], '.fed-lazy&&data-original'),\n        content: parseDomForHtml(list[j], '.fed-list-desc&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.nangua55.net/search.php?page=fypage&searchword=**&searchtype=","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/m3u8,.*/,'m3u8').replace(/\\/.*html,/,'')\n        }\n    }\n});\n\nvar arts = parseDomForArray(html, 'body&&.fed-list-head:has(.fed-part-tips)');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.fed-col-xs12&&li,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.fed-col-xs12&&li&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.fed-col-xs12&&span,-1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.fed-col-xs12&&li,5&&Text');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-esan&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/21.svg"},{"last_chapter_rule":"","title":"荔枝电影D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://zjys.vip/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)  \n\n    .开始打造分类();\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img||.lazy&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.module-items&&.module-search-item');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.video-info&&a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-src');\r\n        var url = parseDom(list[i], '.video-info&&a&&href');\n        var desc = parseDomForHtml(list[i], '.video-serial&&Text');\n        var con = parseDomForHtml(list[i], '.video-info-items,-1&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"http://zjys.vip/vodsearch/page/fypage/wd/**","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.scroll-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, '.page-title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,3&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-item&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://gitee.com/fly1397/hiker-icy/raw/master/aliyun.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://codeberg.org/lzk23559/PublicRule/raw/branch/master/appmov.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/24.svg"},{"last_chapter_rule":"","title":"07影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://07ys.cn/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.fed-casc-list&&dl'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态) \n\n    .开始打造分类();\n// 列表\nvar list = pdfa(html, '.fed-list-info&&li');\nfor (var j in list) {\n    d.push({\n      \n        title: pdfh(list[j], '.fed-list-title&&Text'),\n       \n        desc: pdfh(list[j], '.fed-text-center&&Text'),\n       \n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&dl');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h1&&Text'),\n       desc: parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n\t    content: parseDomForHtml(list[j], '.fed-part-esan--span&&Text'),\n       img: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j], 'a&&href')\n  });\n}\nsetResult(d)","search_url":"http://07ys.cn/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'dd&&li,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'dd&&li,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'dd&&li,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'dd&&li,3&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, '.fed-lazy&&data-original'),\n\turl: parseDom(html, '.fed-lazy&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\n\n\nvar arts = parseDomForArray(html,'.fed-tabs-item&&.fed-drop-btns');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\n\n\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/25.svg"},{"last_chapter_rule":"","title":"天空影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.tkys.tv/vodtype/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1] \n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.nav-list',\n        子分类: 'ul&&li:not(:matches(首页|下载|求片))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\n\nvar list = pdfa(html, '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n       \n        title: pdfh(list[j], 'a&&title'),\n       \n        desc: pdfh(list[j], '.pic-text&&Text'),\n       \n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n      \n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.title&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.myui-vodlist__thumb&&data-original'),\n        content: parseDomForHtml(list[j], '.hidden-xs&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.tkys.tv/vodsearch/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.col-pd&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/26.svg"},{"last_chapter_rule":"","title":"独孤宇影院D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.duguyu.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态) \n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span,-1&&Text'),\n        img: pd(list[j], '.lazy&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'.module-items&&.module-search-item');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.video-info&&a&&title');\n        var img = parseDom(list[i], '.lazyload&&data-src');\r\n        var url = parseDom(list[i], '.video-info&&a&&href');\n        var desc = parseDomForHtml(list[i], '.video-serial&&Text');\n        var con = parseDomForHtml(list[i], '.video-info-items,-1&&Text');\r\n        items.push({\r\n            title: title,\n            img: img,\r\n            url: url,\n            desc: desc,\n            content: con\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetSearchResult(res);","search_url":"https://www.duguyu.cc/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nvar tabs = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar conts = parseDomForArray(html, 'body&&.module-player-list:has(.module-blocklist)');\nvar listlen = parseDomForArray(conts[0], 'body&&.scroll-content&&a');\n\nvar thumb = parseDom(html, \".module-item-pic&&img&&data-src\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".video-info-content&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfunction dpsh(list) {\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], \"a&&Text\"),\n            url: parseDom(list[j], \"a&&href\") + lazy,\n            extra: {\n                id: parseDom(list[j], \"a&&href\")\n            },\n            col_type: 'text_3'\n        });\n    }\n};\n\nif (tabs.length > 1 && listlen.length > 12) {\n    var title = 'xkys' + parseDomForHtml(html, '.video-info-header&&h1&&Text');\n    //处理线路显示\n    for (var i in conts) {\n        d.push({\n            title: (getMyVar(title, '0') == i ? '👇🏻' : '') + parseDomForHtml(tabs[i], 'body&&Text'),\n            url: `hiker://empty@lazyRule=.js:putMyVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n            col_type: 'flex_button'\n        });\n    };\n    //分割线\n    d.push({\n        col_type: 'line_blank'\n    });\n\n  \n    var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&.scroll-content&&a');\n    dpsh(list);\n} else {\n    for (var i in conts) {\n        var list = parseDomForArray(conts[i], 'body&&.scroll-content&&a');\n        if (list != null) {\n            d.push({\n                title: parseDomForHtml(tabs[i], \"body&&Text\"),\n                col_type: 'text_1'\n            });\n            dpsh(list);\n        }\n    }\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/27.svg"},{"last_chapter_rule":"","title":"真不卡D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.zhenbuka3.com/vodtype/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'ul&&li[class~=hidden-xs]:gt(0):lt(5)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"","search_url":"","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.bottom-line');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, 'h1&&title');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/36.svg"},{"last_chapter_rule":"","title":"真不卡影院D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.zhenbuka5.com/vodtype/1-fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('-.html', page + '.html').replace(/(-\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)  \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'body&&li[class~=hidden-xs]:gt(0):lt(5)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.stui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"http://d1ys.cc/index.php/vod/search/page/fypage/wd/**","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:matches(国产剧热播排行榜|为你推荐)');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, '.h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/32.svg"},{"last_chapter_rule":"","title":"1080看世界D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.1080kan.cc/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n       \n        title: pdfh(list[j], '.lazyloaded&&alt'),\n      \n        desc: pdfh(list[j], '.module-item-text&&Text'),\n       \n        img: pd(list[j], 'img||.lazy&&data-src') + '@Referer=',\n       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, '.page-title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&div,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&div,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&div,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&div,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&span&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/33.svg"},{"last_chapter_rule":"","title":"嗯哩嗯哩D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.enlienli.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html') \n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n    d.push({\n       \n        title: pdfh(list[j], '.lazyloaded&&alt'),\n      \n        desc: pdfh(list[j], '.module-item-text&&Text'),\n       \n        img: pd(list[j], 'img||.lazy&&data-src') + '@Referer=',\n       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.enlienli.com/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, '.page-title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-main&&div,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-main&&div,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-main&&div,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-main&&div,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&span&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/35.svg"},{"last_chapter_rule":"","title":"小泥鳅影院D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.xniqiu.com/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.nav-list',\n        子分类: 'ul&&li:not(:matches(首页|VIP视频|直播|MV音乐))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'body--a&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-tag&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.title&&Text'),\n        desc: parseDomForHtml(list[j], '.detail&&p,0&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail&&p,3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"http://www.xniqiu.com/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, '.btn-default&&title');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/31.svg"},{"last_chapter_rule":"","title":"三一看影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.31kan.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() // 必须\n    .折叠(当前折叠状态)  // 必须\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.nav-list',\n        子分类: 'body&&a:not(:matches(首页|资讯|明星))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'body--a&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = []; \nvar list = parseDomForArray(getResCode(), '#searchList&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\" \nfor (var j in list) { \n    d.push({ \n        title: parseDomForHtml(list[j], 'a&&title'), \n        desc: parseDomForHtml(list[j], '.pic-text&&Text'), \n        pic_url: parseDom(list[j], 'a&&data-original'), \n        content: parseDomForHtml(list[j], '.detail--h4&&Text'), \n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#' \n    }) \n} \nsetResult(d)","search_url":"https://www.31kan.vip/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\n\nvar title = parseDomForHtml(html, '.data&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/29.svg"},{"last_chapter_rule":"","title":"莫扎兔D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.mozhatu.com/index.php/vod/type/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.channel&&li'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .开始打造分类();\nvar list = pdfa(html, '.vod_list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.name&&Text'),\n        desc: pdfh(list[j], '.pic&&Text'),\n        img: pd(list[j], '.pic&&img&&lay-src') + '@Referer=',\n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.mozhatu.com/index.php/verify/index.html?');\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.mozhatu.com/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        //log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\n//log(html);\nlet parStr=\".vod_list&&li;.name&&Text;.pic&&img&&lay-src;.state&&Text;a&&href;.actor&&Text\";\nvar 一级处理={\n    沉浸:false\n}\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.mozhatu.com/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h3&&Text;.info&&p,1&&Text;.info&&p,2&&Text',\n    img: '.pic&&img&&lay-src',\n    url: '.pic&&img&&lay-src',\n    desc: '.info&&p,0&&Text;.info&&p,3&&Text',\n    content: '.layui-container&&.text&&Text',\n    tabs: '.zu-box&&li',\n    lists: '.ji-box&&ul,#id&&li',\n    tab_id: '',\n};\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://www.libvio.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');\ninitConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/34.svg"},{"last_chapter_rule":"","title":"1090影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://1090ys8.com/whole/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst 分类颜色 = '#098AC1'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.type-slide',\n        子分类: 'body&&a:not(:matches(首页|更新|会员))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'li&&a:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.stui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\njs:var d=[];\n\nvar list=JSON.parse(getResCode()).list;//列表\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'http://1090ys8.com/' + list[i].pic,\nurl:'http://1090ys8.com/show/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);\n一级(parStr,true,null,null,html);","search_url":"http://1090ys8.com/ajax/suggest?mid=1&wd=**&limit=50","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:matches(猜你喜欢|影片评论|本周热门|最近更新))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, '.stui-content__detail&&title');\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/23.png"},{"last_chapter_rule":"","title":"4K鸭D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://netflix.mom/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst 分类颜色 = '#098AC1'\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(下载专栏片库))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1] //获取页码\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://netflix.mom/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/15.svg"},{"last_chapter_rule":"","title":"鸭奈飞D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://netflix.mom/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst 分类颜色 = '#098AC1'\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|福利|纪录片|歌曲MV))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1] \ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazyloaded&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://netflix.mom/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/18.svg"},{"last_chapter_rule":"","title":"神马电影网D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.smdyy.cc/show/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst 分类颜色 = '#098AC1'\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1]\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\njs:var d=[];\n\nvar list=JSON.parse(getResCode()).list;//列表\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'https://www.smdyy.cc' + list[i].pic,\nurl:'https://www.smdyy.cc/kan/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);\n一级(parStr,true,null,null,html);","search_url":"https://www.smdyy.cc/index.php/ajax/suggest?mid=1&wd=**&limit=50","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.module-player-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/11.svg"},{"last_chapter_rule":"","title":"看片狂人D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.kpkuang.cc/vodshow/1--------fypage-----.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nconst 分类颜色 = '#098AC1'\nconst 大类定位 = '.fed-casc-list&&dl'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE;\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1');\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)\n\n    .开始打造分类();\n\nvar list = pdfa(html, '.fed-list-info&&.fed-list-item');\nfor (var j in list) {\n    d.push({\n      \n        title: pdfh(list[j], 'h4&&Text'),       \n        desc: pdfh(list[j], '.fed-list-remarks&&Text'),\n        img: pd(list[j], '.fed-lazy&&data-original') + '@Referer=',       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.uk-text-center');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.uk-card-title&&Text'),\n       desc: parseDomForHtml(list[j], '.uk-light&&p&&Text').split(':')[1],\n       img: parseDom(list[j], '.fed-list-pics&&data-original')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')\n  });\n}\nsetResult(d);","search_url":"https://www.kpkuang.cc/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//通免\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/m3u8,.*/,'m3u8').replace(/\\/.*html,/,'')\n        }\n    }\n});\n\nvar arts = parseDomForArray(html, '.yunlist&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.fed-btns-info'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.uk-list&&li,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.uk-list&&li,0&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.uk-list&&li,5&&Text');\n\nvar 状态 = parseDomForHtml(html, '.uk-list&&li,6&&Text');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.uk-list&&.fed-show-md-block&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',})","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/79.svg"},{"last_chapter_rule":"","title":"饭团影院D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://fantuan.tv/vodshow/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getMyVar('header.url', MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace('.html','/page/'+ page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.myui-header__menu',\n        子分类: 'body&&li[class~=hidden-xs]:gt(0):lt(5)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.myui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.myui-vodlist__thumb&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-panel_bd&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.myui-vodlist__thumb&&data-original'),\n        content: parseDomForHtml(list[j], '.hidden-xs&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://fantuan.tv/vodsearch/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\nvar title = parseDomForHtml(html, '.myui-content__detail&&Text');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.myui-vodlist__thumb&&img&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.hidden-xs&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/1.svg"},{"last_chapter_rule":"","title":"COKEMV&D","author":"道长&爱是用心","version":2,"type":"video","url":"hiker://empty##https://cokemv.me/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.module-items&&a;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.navbar-items',\n        子分类: 'ul&&li:gt(1):lt(7)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.module-class-items',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://cokemv.me/index.php/verify/index.html?');\n    let ret=提交验证码('https://cokemv.me/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n        html=获取源码(MY_URL);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nlet parStr=\"body&&.module-card-item;.module-card-item-title&&a&&Text;.lazyload&&data-original;.module-item-note&&Text&&Text;a&&href;.module-info-item-content&&Text&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://cokemv.me/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.module-info-items&&.module-info-item,1&&Text;.module-info-items&&.module-info-item,3&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.module-info-items&&.module-info-item,4&&Text;.module-info-items&&.module-info-item,5&&Text',\n    content: '.module-info-introduction-content&&Text',\n    tabs: 'body&&.module-tab-item',\n    lists: '.module-play-list-content,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://cokemv.me/index.php/verify/index.html';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/8.svg"},{"last_chapter_rule":"","title":"小强迷D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.xqmi.top/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__item;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/(.*)\\/(.*?).html/)[2];\ntrue_url = 获取正确链接();\n//log(true_url);\nlet data=[{\n        一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:gt(0):lt(5)',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(\"/type/\", \"/show/\")\n            }\n        }\n    }];\n{\n    data.push({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    });\n}\nlet cates=打造动态分类(data);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.stui-vodlist__item;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.text-muted&&Text\";\n一级(parStr,true);","search_url":"https://www.xqmi.top/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h3&&Text;.stui-content__detail&&p.data,3&&Text;.stui-content__detail&&p.data,2&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'.stui-content__detail&&p.data,1&&Text;.stui-content__detail&&p.data,0&&Text',\n content:\".stui-content__desc&&Text\",\n tabs:'.t-ul&&li',\n lists:'.stui-content__playlist,#id&&li',\n tab_id:'',\n};\nvar 二级处理={\n    重定向:function(url,html){\n    url=pd(html,'.playbtn&&a&&href');    \n  log('选集列表重定向:'+url);          \n  html= 获取源码(url,PC_UA,url);\n  return html;\n}\n\n}\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,false,true);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/82.svg"},{"last_chapter_rule":"","title":"火火影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.huohuo99.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.hl-list-item;.hl-item-title&&Text;.hl-lazy&&data-original;.hl-pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.hl-navswiper',\n        子分类: 'ul&&li:has(a[href]):not(:matches(首页|资讯|最新|排行))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.hl-item-div;.hl-item-title&&Text;.hl-lazy&&data-original;.hl-pic-text&&Text;a&&href;.hl-item-sub,2&&Text\";\n一级(parStr,true);","search_url":"https://www.huohuo99.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h2&&Text;.hl-col-xs-12,4&&Text;.hl-col-xs-12,3&&Text',\n    img: '.hl-lazy&&data-original',\n    url: '.hl-lazy&&data-original',\n    desc: '.hl-col-xs-12,11&&Text;.hl-col-xs-12,5&&Text',\n    content: '.hl-col-xs-12,12&&Text',\n    tabs: 'body&&.hl-tabs-btn',\n    lists: '.hl-plays-list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/81.svg"},{"last_chapter_rule":"","title":"电视盒子D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##http://m1.tv9box.com/list-select-id-1-type--area--year--star--state--order-addtime-p-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-xs-4;h2&&Text;.img-responsive&&data-original;.continu&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.dl-horizontal&&.text-nowrap',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.col-xs-4;h2&&Text;.img-responsive&&data-original;.text-nowrap&&Text;a&&href\";\n一级(parStr,true);","search_url":"http://m1.tv9box.com/vod-search-wd-**-p-fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.ff-text&&Text;.dl-horizontal&&dd,1&&Text;.dl-horizontal&&dd,0&&Text',\n    img: '.img-thumbnail&&data-original',\n    url: '.img-thumbnail&&data-original',\n    desc: 'h2&&small&&Text;.dl-horizontal&&dd,2&&Text',\n    content: '.vod-nav-content&&Text',\n    tabs: '.vod-nav-play&&.page-header',\n    lists: 'body&&.ff-playurl-line,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/79.svg"},{"last_chapter_rule":"","title":"七零美剧社D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##https://www.170yc.com/vodshow/dy--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.module-item;.module-item-titlebox&&Text;.lazyloaded&&data-src;.module-item-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-box',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.module-search-item;h3&&Text;.lazyload&&data-src;.video-info-aux&&Text;a&&href;.video-info-main&&.video-info-items,2&&Text\";\n一级(parStr,true);","search_url":"https://www.170yc.com/vsearch**/page/fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.video-info-items,0&&Text;.video-info-items,1&&Text',\n    img: '.lazyload&&data-src',\n    url: '.lazyload&&data-src',\n    desc: '.video-info-items,2&&Text;.video-info-items,3&&Text',\n    content: '.video-info-content&&Text',\n    tabs: 'body&&.module-tab-item',\n    lists: '.sort-item,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/37.svg"},{"last_chapter_rule":"","title":"速播影视D","author":"道长&爱是用心","version":2,"type":"video","url":"hiker://empty##http://subolg.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.module-item;.module-item-title&&Text;.lazyloaded&&data-src;.module-item-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-box',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.module-search-item;h3&&Text;.lazyload&&data-src;.video-info-aux&&Text;a&&href;.video-info-item&&Text\";\n一级(parStr,true);","search_url":"http://subolg.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.video-info-items,0&&Text;.video-info-items,1&&TextText',\n    img: '.y-lazy&&data-original',\n    url: '.y-lazy&&data-original',\n    desc: '.video-info-items,3&&Text;.y-part-rows&&li,5&&Text;.y-part-rows&&li,4&&Text',\n    content: '.vod_content&&Text',\n    tabs: 'body&&.module-tab-item',\n    lists: 'body&&.sort-item,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/45.svg"},{"last_chapter_rule":"","title":"番剧鸭D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.fanjuya.com/dianying_fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.module-item;.module-item-titlebox&&Text;.lazyloaded&&data-original.js:input+'@Referer=';.module-item-caption&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/_(.*?).html/)[1];\ntrue_url = true_url.replace(/([a-zA-Z0-9]+)(_(.*?))*\\.html/, '$1' + '_' + page + '.html');\nlog(true_url);\nvar html=获取源码(true_url,MOBILE_UA);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.module-search-item;h3&&Text;.lazyloaded&&data-original.js:input+'@Referer=';.video-info-aux&&Text;a&&href;.video-info-items,2&&Text\";\n一级(parStr,true);","search_url":"https://www.fanjuya.com/search_fypage.html?search=**","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.video-info-items,0&&Text;.video-info-items,1&&Text',\n    img: '.lazyload&&data-src',\n    url: '.lazyload&&data-src',\n    desc: '.video-info-items,2&&Text;.video-info-items,3&&Text',\n    content: '.video-info-content&&Text',\n    tabs: 'body&&.module-tab-item',\n    lists: '.sort-item,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/78.svg"},{"last_chapter_rule":"","title":"极品影视D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##https://www.jpys.me/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-lg-8;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.myui-header__menu',\n        子分类: 'ul&&li[class~=hidden-xs]:gt(0):lt(5)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nvar d=[];\n\nvar list=JSON.parse(getResCode()).list;//列表\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'https://www.jpys.me' + list[i].pic,\nurl:'https://www.jpys.me/voddetail/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\n\nsetResult(d);\n一级(parStr,true,null,null,html);","search_url":"https://www.jpys.me/index.php/ajax/suggest?mid=1&wd=**&limit=50","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1.title&&Text;.myui-content__detail&&p,4&&Text;.myui-content__detail&&p,3&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p,2&&Text;.myui-content__detail&&p,1&&Text',\n    content: '.sketch&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: 'body&&.myui-content__list,#id&&li',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.libvio.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/50.svg"},{"last_chapter_rule":"","title":"新视觉影院","author":"爱是用心","version":0,"type":"video","url":"https://www.t6q.cn/index.php/vod/show/id/fyAll/page/fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) ","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&剧情片","class_url":"1&2&3&4&43","area_name":"犯罪片&记录片&动画片&惊悚片&冒险片&悬疑片&奇幻片&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"32&33&44&60&61&62&63&6&7&8&9&10&11&12","sort_name":"","year_name":"泰国剧&海外剧&国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"20&26&13&14&15&16","find_rule":"body&&.vodlist_item;a&&title;.lazyload&&data-original;.pic_text&&Text;a&&href","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.searchlist_item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&Text'),\n        desc: parseDomForHtml(list[j], '.pic_text&&Text'),\n        content: parseDomForHtml(list[j], '.vodlist_sub&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.t6q.cn/index.php/vod/search/page/fypage/wd/**.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.play_source_tab&&a');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content_desc&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/41.svg"},{"last_chapter_rule":"","title":"皮皮泡D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.pipipao.com/vodshow/id/dongzuopian/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-md-6;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = true_url.replace(/type\\/(\\w+)\\.html/, 'vodshow/id/$1.html').replace(/\\.html/, '/page/' + page + '.html').replace(/\\/\\//g, '/');\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:gt(0):lt(5)',\n   分类链接: {\n            二次处理(url) {\n             return url.replace(/type\\/(\\d+)\\.html/, 'vodshow/id/$1.html')   \n            }\n        }\n},{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.stui-vodlist__media&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;p,-2&&Text\";\n一级(parStr,true);","search_url":"http://www.pipipao.com/vodsearch**/page/fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.stui-content__detail&&p.data,2&&Text;.stui-content__detail&&p.data,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p.data,0&&Text;.pic-text&&Text',\n    content: 'body&&.stui-pannel_bd:not(.clearfix)&&Text',\n    tabs: 'body&&.stui-pannel__head:has(.more)',\n    lists: 'body&&.stui-content__playlist,#id&&li',\n    tab_id:'body&&h3'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/74.svg"},{"last_chapter_rule":"","title":"蓝光影院采集","author":"爱是用心","version":0,"type":"video","url":"http://1api.4kdytv.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://1api.4kdytv.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://1api.4kdytv.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://1api.4kdytv.com/api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/73.svg"},{"last_chapter_rule":"","title":"天成采集","author":"爱是用心","version":0,"type":"video","url":"http://tcspvip.cn/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://tcspvip.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://tcspvip.cn/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://tcspvip.cn/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/70.svg"},{"last_chapter_rule":"","title":"益达影院","author":"爱是用心","version":0,"type":"video","url":"http://luobu.yss6080.com/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://luobu.yss6080.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://luobu.yss6080.com/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://luobu.yss6080.com/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/68.svg"},{"last_chapter_rule":"","title":"绿箭影视","author":"","version":0,"type":"video","url":"http://www.69ty.cc/mogai_api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://www.69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://www.69ty.cc/mogai_api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://www.69ty.cc/mogai_api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/67.svg"},{"last_chapter_rule":"","title":"橘子采集","author":"","version":2,"type":"video","url":"http://jz.juzidy.vip/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://jz.juzidy.vip/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'http://jz.juzidy.vip/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"http://jz.juzidy.vip/api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/66.svg"},{"last_chapter_rule":"","title":"电影牛D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.dianyingn.com/vodshow/dianying--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.fed-list-item;.fed-list-title&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.fed-casc-list&&dl',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.fed-deta-info;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-col-xs12&&Text\";\n一级(parStr,true);","search_url":"https://www.dianyingn.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.fed-col-xs12&&li,1&&Text;.fed-col-xs12&&li,0&&Text',\n    img: '.fed-lazy&&data-original',\n    url: '.fed-lazy&&data-original',\n    desc: '.fed-col-xs6&&li,2&&Text;.fed-col-xs6&&li,1&&Text',\n    content: '.fed-part-esan&&Text',\n    tabs: 'body&&.fed-drop-btns',\n    lists: '.fed-play-item,#id&&a:not(:matches(视频排序：正序))',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/65.svg"},{"last_chapter_rule":"","title":"剧白白D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.jubaibai.cc/type/dianying-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__box;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.type',\n        子分类: 'ul&&li:gt(0):lt(6)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: '#screenbox&&.clearfix',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.stui-vodlist__box;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.text-muted&&Text\";\n一级(parStr,true);","search_url":"https://www.jubaibai.cc/vodsearch**/page/fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.stui-content__detail&&p.data,5&&Text;.stui-content__detail&&p.data,6&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p.data,7&&Text;.stui-content__detail&&p.data&&Text',\n    content: '.detail-content&&Text',\n    tabs: 'body&&h3:not(:matches(猜你喜欢))',\n    lists: 'body&&.stui-content__playlist,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/63.svg"},{"last_chapter_rule":"","title":"影视大全D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.ekvod.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".movie-list-body&&.movie-list-item;.movie-title&&Text;.Lazy&&data-original;.movie-rating&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.category-block',\n        子分类: 'body&&a',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.filter-panel',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.vod-search-list;.movie-title&&Text;.movie-post-lazyload&&data-original;.detail&&.meta,0&&Text;a&&href;.detail&&.meta,1&&Text\";\n一级(parStr,true);","search_url":"https://www.ekvod.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.movie-title&&Text;.starLink&&Text',\n    img: '.poster&&img&&src',\n    url: '.poster&&img&&src',\n    desc: '.title-block&&p,0&&Text;.scroll-content&&Text',\n    content: '.summary&&Text',\n    tabs: '.swiper-wrapper&&a',\n    lists: '.content_playlist,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/61.svg"},{"last_chapter_rule":"","title":"长空影视","author":"爱是用心","version":0,"type":"video","url":"https://www.changkongys.com/vodshow/fyAll--------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro)","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&体育赛事","class_url":"1&2&3&4&34","area_name":"全部&动作&喜剧&爱情&科幻&恐怖&剧情&战争&犯罪&纪录&动画&悬疑&冒险&惊悚&奇幻&电影解说","area_url":"&6&7&8&9&10&11&12&31&32&33&38&39&40&41&42","sort_name":"","year_name":"全部&国产剧&港台剧&日韩剧&欧美剧&海外剧&泰剧","sort_url":"","year_url":"&13&14&15&16&20&21","find_rule":"body&&.col-lg-6;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        content: parseDomForHtml(list[j], '.detail&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original'),\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.changkongys.com/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, '.title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,0&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/57.svg"},{"last_chapter_rule":"","title":"360影院D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.360ys.org/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__box;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:not(:matches(首页))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.item#screenbox&&ul',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.col-md-6;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.text-muted&&Text\";\n一级(parStr,true);","search_url":"https://www.360ys.org/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.stui-content__detail&&p,2&&Text;.stui-content__detail&&p,3&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p,1&&Text;.stui-content__detail&&p,0&&Text',\n    content: '.stui-content__detail&&p,6&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.stui-content__playlist,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/30.svg"},{"last_chapter_rule":"","title":"茶杯狐D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.qdlzmgjx.com/list/dianying______fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-md-6;.name&&Text;.lazyload&&data-original;.vtitle&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\n\n\nlet cates=打造动态分类([{\n  一级分类: '.header-menu',\n        子分类: 'ul&&li:not(:matches(茶杯狐|热播榜|演员|剧情|明星))',\n   分类链接: {            \n二次处理(url) {\n                return url.replace(/type/, 'list')\n            }\n        }\n},{\n        一级分类: 'body&&.col-xs-wide-1',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.img-list&&li;h2&&Text;.lazyload&&data-original;.vtitle&&Text;a&&href;.vod-txt&&Text\";\n一级(parStr,true);","search_url":"https://www.qdlzmgjx.com/search/**-fypage.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.img-list&&li,4&&Text;.img-list&&li,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.img-list&&li,2&&Text;.img-list&&li,5&&Text',\n    content: '.txt-hid&&Text',\n    tabs: '.details-play-nav&&li',\n    lists: 'body&&.play-list,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/55.svg"},{"last_chapter_rule":"","title":"万能影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://wnvod.net/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.myui-vodlist__box;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.myui-header__menu',\n        子分类: 'ul&&li:not(:matches(首页|专题|资讯|短视频))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist__media#searchList&&li;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,3&&Text\";\n一级(parStr,true);","search_url":"https://wnvod.net/vodsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.myui-content__detail&&h1&&Text;.myui-content__detail&&p,3&&Text;.myui-content__detail&&p,4&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p,1&&Text;.myui-content__detail&&p,2&&Text',\n    content: '.text-collapse&&.data&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/51.svg"},{"last_chapter_rule":"","title":"25电影网D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.shenyangjie.cn/plvod/dianying-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__item;.stui-vodlist__title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:not(:matches(首页))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href\";\n一级(parStr,true);","search_url":"https://www.shenyangjie.cn/plsearch/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.title&&Text;.stui-content__detail&&p,1&&Text;.stui-content__detail&&p,2&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p,0&&Text',\n    content: '.stui-content__desc&&Text',\n    tabs: 'body&&.stui-pannel__head:has(.text-muted)',\n    lists: '.stui-content__playlist,#id&&li',\n    \n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/49.svg"},{"last_chapter_rule":"","title":"BUFF电影网D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.buffdy.com/list-1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.y-list-item;.y-list-title&&Text;.y-lazy&&data-original;.y-list-remarks&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: 'body&&.y-casc-list&&dl:gt(0)',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.y-list-deta;h3&&Text;.y-lazy&&data-original;.y-list-remarks&&Text;a&&href;.y-part-eone&&Text\";\n一级(parStr,true);","search_url":"https://www.buffdy.com/search/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.y-deta-content&&h3&&Text;.y-part-rows&&li,0&&Text;.y-part-rows&&li,1&&Text',\n    img: '.y-lazy&&data-original',\n    url: '.y-lazy&&data-original',\n    desc: '.y-part-rows&&li,2&&Text;.y-part-rows&&li,3&&Text;.y-part-rows&&li,4&&Text',\n    content: '.my-dt&&dd,14&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.episodes-list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/48.svg"},{"last_chapter_rule":"","title":"58影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.58kdy.cc/list-1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".y-list-info&&li;.y-font-xiv&&Text;.y-lazy&&data-original;.y-text-white&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\nif(!/-(\\d+)/.test(true_url)&&page>1){\n    true_url = true_url.replace(/---\\.html$/,page+'---.html')\n}\nlet cates=打造动态分类([{\n  一级分类: '.y-casc-list&&dl:has(a[href])',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.y-list-deta;h3&&Text;.y-lazy&&data-original;.y-text-white&&Text;a&&href;.y-part-eone&&Text\";\n一级(parStr,true);","search_url":"https://www.58kdy.cc/search/**----------fypage---.html","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h3&&Text;.y-part-rows&&li,1&&Text;.y-part-rows&&li,0&&TextText',\n    img: '.y-lazy&&data-original',\n    url: '.y-lazy&&data-original',\n    desc: '.y-part-rows&&li,2&&Text;.y-part-rows&&li,3&&Text;.y-part-rows&&li,4&&Text',\n    content: '.my-dt&&dd,15&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.episodes-list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/46.svg"},{"last_chapter_rule":"","title":"放肆看D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.fun4k.com/vod/dianying--------fypage---/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\"body&&.pack-ykpack;a&&title;.eclazy&&data-original;.pack-prb&&Text;a&&href\";\nvar page = MY_PAGE;\n//log(page);\ntrue_url = 获取正确链接();\n/*\nvar true_url = getMyVar('header.url', MY_URL);\ntrue_url=true_url.replace(/(\\d+)---\\.html/,'---.html');\ntrue_url=true_url.replace('---.html',page+'---.html');\n*/\n//log(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.filter_line',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.myui-vodlist__media&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&Text\";\n一级(parStr,true);","search_url":"搜索是图片验证小道士无能为力，有请道长出手！！","group":"自用影视","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.item-wrap&&p.item,4&&Text;.item-wrap&&p.item,5&&Text',\n    img: '.s-cover-img&&src',\n    url: '.s-cover-img&&src',\n    desc: '.item-wrap&&p.item,3&&Text;.item-wrap&&p.item,0&&Text;.item-wrap&&p.item,1&&Text',\n    content: '.desc_txt&&span&&Text',\n    tabs: 'body&&.play_source_tab&&a',\n    lists: '.content_playlist,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/45.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"网易公版影像","author":"家娃","version":0,"type":"video","url":"https://active.163.com/service/form/v1/9347/view/1618.jsonp?param_entry_kinds=fyAll&page=fypage&pageSize=20","col_type":"movie_3","class_name":"电影&纪录片&动画片&珍贵史料","class_url":"movie&doc&ani&his","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n\tvar playJsonUrl =\"https://so.v.163.com/mobile/getBatchOnlineVideo.do?vidstr=\";\n\tvar reqUrl = playJsonUrl+input;\n\tvar reqJson = JSON.parse(request(reqUrl)).data.video_list[0];\n\t//log(reqJson.mp4SdUrl);\n    return reqJson.mp4SdUrl;\n});\n\ntry {\n    var jsonStr = getResCode();\n   //log(jsonStr.substring(10,jsonStr.length-2));\n    var json = JSON.parse(jsonStr.substring(10,jsonStr.length-2));\n\t\n    for (var i = 0; i < json.list.length; i++) {\n        var j = json.list[i];\n        d.push({\n            title: j.title,\n            pic_url: j.cover_pic,\n            desc: j.meida_type,\n            url: j.vid+lazy,\n        });\n    } \n} \ncatch (e) {\n\t\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\n\nvar lazy = $(\"\").lazyRule(() => {\n    var playJsonUrl = \"https://so.v.163.com/mobile/getBatchOnlineVideo.do?vidstr=\";\n    var reqUrl = playJsonUrl + input;\n    var reqJson = JSON.parse(request(reqUrl)).data.video_list[0];\n    log(reqJson.mp4SdUrl);\n    return reqJson.mp4SdUrl;\n});\n\ntry {\n    var jsonStr = getResCode();\n    //log(jsonStr.substring(10,jsonStr.length-2));\n    var json = JSON.parse(jsonStr.substring(10, jsonStr.length - 2));\n    for (var i = 0; i < json.list.length; i++) {\n        var j = json.list[i];\n        d.push({\n            title: j.title,\n            pic_url: j.cover_pic,\n            content: j.desc,\n            desc: j.meida_type,\n            url: j.vid + lazy,\n        });\n\n    }\n} catch (e) {\n\n}\nsetResult(d);","search_url":"https://active.163.com/service/form/v1/9347/view/1619.jsonp?_charset=UTF-8&_decode=UTF-8&param_title=**&page=fypage&pageSize=6","group":"视频","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"金曼TV","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://jinmantv.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首|A|追|今|热|文|留|解|专|看|明))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL).replace('type','show')\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('.html', '/page/' + page + '.html')\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\nconst list = pdfa(html, 'body&&.module-item')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + '@Referer=',\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d)","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"酷6网","author":"家娃","version":0,"type":"video","url":"https://www.ku6.com/video/feed?subjectId=fyAll&pageNo=fypage@-1@ ","col_type":"movie_3","class_name":"资讯&娱乐&搞笑&少儿&自制节目&影视&音乐&原创&生活&游戏&健康&汽车&时事","class_url":"69&70&76&73&71&72&74&75&80&93&81&47&149","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n\tif(input.indexOf('detail.html') != -1){\n\t\tvar vid = input.split('~')[1];\n\t\t//log(vid);\n\t\tvar reqUrl =\"https://news-stream.lsttnews.com/topic/recommend/vinfo?vid=\"+vid;\n\t\tvar playUrl = JSON.parse(request(reqUrl)).data.video.src;\n\t\t//log(playUrl);\n\t\treturn playUrl;\n\t}else{\n\t\treturn input+'#isVideo=true#'\n\t}\n});\n\n\n\nlog(MY_URL);\n\ntry {\n    var jsonStr = getResCode();\n    var json = JSON.parse(jsonStr);\n    for (var i = 0; i < json.data.length; i++) {\n        var j = json.data[i];\n        d.push({\n            title: j.title,\n            pic_url: j.picPath,\n            desc: j.publisher,\n            url: j.playUrl+lazy,\n        });\n    } \n} \ncatch (e) {\n\t\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"视频","detail_col_type":"text_3","detail_find_rule":"","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"蓝光影院.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.lgyy.cc/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.navbar-items',\n    子分类: 'body&&.navbar-item:gt(0):lt(6)',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------')\n            }\n        }\n},{\n    一级分类: 'body&&.scroll-content',\n    子分类: 'body&&a',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索|找到|部影片');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=蓝光影院"},{"last_chapter_rule":"","title":"思乐影视","author":"","version":1,"type":"video","url":"http://www.4ltv.com/show/fyAll------fypage.html","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".module-items&&div;.video-name&&Text;.lazyloaded&&data-src;.module-item-text&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.4ltv.com/search/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"野荷塘.D🐺","author":"家娃","version":20221125,"type":"video","url":"hiker://empty##https://www.yehetang.cc/show/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.xxx_type_li_container'\nconst 拼接分类 = 'body&&.filter-list'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|写真|APP|热榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.mdui-row-xs-3&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.vod_remarks&&Text'),\n        pic_url: pd(list[j], '.lazy&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.mdui-row-xs-3&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], 'img&&alt&&Text'),\n       content: parseDomForHtml(list[j], '.vod_remarks&&Text'),\n       img: parseDom(list[j], '.lazy&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.yehetang.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        function toUrl(playUrl) {\n            if (/mgtv|sohu/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n            } else if (/bili/.test(playUrl)) {\n                return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n            } else if (/ixigua/.test(playUrl)) {\n                return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n            } else {\n                return playUrl;\n            }\n        }\n\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n        var jxUrl = 'https://player.6080kan.cc/player/play.php?url=' + playUrl;\n        var jxHtml = request(jxUrl, {\n            headers: {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\",\n                \"Referer\": \"https://www.yehetang.cc/\"\n            },\n            method: \"GET\"\n        });\n        eval(jxHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n        var apiUrl = 'https://player.6080kan.cc/player/xinapi.php';\n        var apiHtml = request(apiUrl, {\n            headers: {\n                \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n            },\n            body: \"url=\" + config.url + \"&vkey=\" + config.vkey + \"&token=\" + config.token + \"&sign=smdyycc\",\n            method: \"POST\"\n        });\n        var json = JSON.parse(apiHtml);\n        if (json.code == 200) {\n            require(\"https://disdk.oss-cn-shenzhen.aliyuncs.com/play/js/decode.js\");\n            playUrl = getVideoInfo(json.url);\n            return toUrl(playUrl);\n        } else {\n            return 'toast://' + json.msg;\n        }\n\n    } catch (e) {\n        showLoading(\"正在进行检索，请稍候...\");\n        var video = 'x5Rule://' + input + '@' + $.toString(() => {\n            //fba.log(fba.getUrls())\n            var urls = _getUrls()\n            var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n            var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n            for (var i in urls) {\n                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                    // fy_bridge_app.log(urls[i])\n                    if (/mgtv|sohu/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                    } else if (/bili/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                    } else if (/ixigua/.test(urls[i])) {\n                        return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                    } else {\n                        return urls[i]\n                    }\n                }\n            }\n        });\n        return video;\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mdui-panel-item-header');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], '.mdui-panel-item-title&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mdui-panel-item-body');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.inline_item:contains(导演：)&&Text');\n\n    var 主演 = parseDomForHtml(html, '.inline_item:contains(主演：)&&Text');\n\n    var 更新 = parseDomForHtml(html, '.inline_item:contains(备注：)&&Text');\n\n    var 状态 = parseDomForHtml(html, '.inline_item:contains(类别：)&&Text');\n\n    var 图片 = parseDom(html, '.picture&&img&&src');\n\n    var 简介 = parseDomForHtml(html, '.myui-info_text&&p,-1&&Text');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://www.yehetang.cc/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"奈菲影院.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://www.1985.one/vodshow/id/fyclass.html","col_type":"movie_3_marquee","class_name":"电影&电视&综艺&动漫&B站&","class_url":"1&2&3&4&51&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=奈菲影院"},{"last_chapter_rule":"","title":"SongTaste🎶","author":"缘分","version":2,"type":"video","url":"http://www.songtaste.co/fyclassfypage","col_type":"text_1","class_name":"歌单&推荐好歌&混淆合集&华语合集&日韩合集&欧美合集&DJ电子&翻唱合集&纯音FM&怀旧摇滚&Rap嘻哈&伴奏插曲&影漫游戏&小语种集&","class_url":"song/gid-&dance/index?type=index＆＆p=&song/id-1-&song/id-2-&song/id-3-&song/id-4-&song/id-6-&song/id-7-&song/id-12-&song/id-14-&song/id-17-&song/id-18-&song/id-19-&song/id-22-&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var url = pdfh(request(input), 'source&&src')\n    var lrc = request(input).match(/lrc = `([\\s\\S]*?)`/)[1]\n    try {\n        return JSON.stringify({\n            urls: [url + '#isMusic=true#'],\n            lyric: lrc,\n        })\n    } catch (e) {\n        return url + '#isMusic=true#'\n    }\n})\nif (/gid-1/.test(MY_URL)) {\n    d.push({\n        title: '原生播放',       \n        url: 'hiker://page/zy?url=http://www.songtaste.co/song/gid-fypage',\n        col_type: 'flex_button'\n    });\n}\n\ntry {\n    var list = parseDomForArray(getResCode(), '.mlistbook||.toplist&&li');\n\n    for (var j in list) {\n        d.push({\n            title: MY_URL.indexOf('song/gid-')>-1?parseDomForHtml(list[j] , '.tr&&Text').replace(/好歌.*/,'').replace(/ .*? /,' ').replace(/ (.*?) (\\d+首)/,' $2 $1'):parseDomForHtml(list[j] , '.td3||.fl&&a&&title'),\n            desc: '‘‘' + parseDomForHtml(list[j], 'h3||.td6&&Text'),\n            pic_url: parseDom(list[j], 'img&&src'),  \n            url: MY_URL.indexOf('song/gid-') > -1 ? parseDom(list[j], '.td3||.fl&&a&&href').replace(/(.*)-1/,'$1-fypage')+ \"#noLoading##gameTheme##noRefresh##background#\" : parseDom(list[j], '.td3||.fl&&a&&href') + lazy,\n            col_type: MY_URL.indexOf('song/gid-')>-1?'card_pic_3':'avatar',\n  extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            },\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var url = pdfh(request(input), 'source&&src')\n    var lrc = request(input).match(/lrc = `([\\s\\S]*?)`/)[1]\n    try {\n        return JSON.stringify({\n            urls: [url + '#isMusic=true#'],\n            lyric: lrc,\n        })\n    } catch (e) {\n        return url + '#isMusic=true#'\n    }\n})\ntry {\n    var list = parseDomForArray(getResCode(), '.mlist&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.td3||.fl&&a&&title'),\n            desc: parseDomForHtml(list[j], 'h3&&Text'),\n            pic_url: parseDom(list[j], 'img&&src'),  \n            url: MY_URL.indexOf('song/gid-') > -1 ? parseDom(list[j], '.td3||.fl&&a&&href') : parseDom(list[j], '.td3||.fl&&a&&href') + lazy,\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.songtaste.co/dance/search?key=**&page=fypage","group":"视频","detail_col_type":"avatar","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var url = pdfh(request(input), 'source&&src'); \n        return url + '#isMusic=true#'   \n})\n/*\nif(MY_PAGE==1){\n        d.push({          \n            pic_url: parseDom(getResCode(), '.left&&img&&src'),  \n            title: parseDomForHtml(getResCode(), '.upd&&Text').replace(/次数/g,''),\n            desc: parseDomForHtml(getResCode(), '.left&&h4&&Text').replace('收藏该歌单','')+'\\n'+parseDomForHtml(getResCode(), '.conts&&Text'), \n           url: parseDom(getResCode(), '.left&&img&&src'),\n           col_type: 'pic_1',extra: {gradient: true}\n        });\n}*/\nlet 传输列表 = []\nvar list = parseDomForArray(getResCode(), '.mlist&&li');\n\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let title = pdfh(list[j], '.td3||.fl&&a&&title');\n    let first = pdfh(list[0], '.td3||.fl&&a&&title');\n    let desc = pdfh(list[j], 'h3&&Text');\n    let url = pd(list[j], '.td3||.fl&&a&&href') + lazy;\n    let img = parseDom(getResCode(), '.left&&img&&src').replace('picdata','attachment');\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"zy\",\"path\":\"zy\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\ntry {\\n    var list = parseDomForArray(getResCode(), '.mlistbook||.toplist&&li');\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j] , '.tr&&Text').replace(/好歌.*/,'').replace(/ .*? /,' ').replace(/ (.*?) (\\\\d+首)/,' $2 $1'),\\n            desc: '‘‘' + parseDomForHtml(list[j], 'h3||.td6&&Text'),\\n            pic_url: parseDom(list[j], 'img&&src'),  \\n            url: parseDom(list[j], '.td3||.fl&&a&&href').replace(/(.*)-1/,'$1-fypage')+\\\"#gameTheme#\\\"+$('').rule(()=>{\\nrequire('hiker://page/er')\\n}),\\n            col_type: 'card_pic_3',\\n        });\\n    }\\n} catch (e) {}\\nres.data = d;\\nsetHomeResult(res);\"},{\"col_type\":\"avatar\",\"name\":\"二级\",\"path\":\"er\",\"rule\":\"js:\\nvar res = {};\\nvar d = [];\\nvar html = getResCode()\\nvar lazy = $(\\\"\\\").lazyRule(() => {\\n    var url = pdfh(request(input), 'source&&src'); \\n        return url + '#isMusic=true#'   \\n})\\ntry {\\nif(MY_PAGE==1){\\n        d.push({          \\n            pic_url: parseDom(html, '.left&&img&&src'),  \\n            title: parseDomForHtml(html, '.upd&&Text').replace(/次数/g,''),\\n            desc: parseDomForHtml(html, '.left&&h4&&Text').replace('收藏该歌单','')+'\\\\n'+parseDomForHtml(getResCode(), '.conts&&Text'), \\n           url: parseDom(html, '.left&&img&&src'),\\n           col_type: 'pic_1',extra: {gradient: true}\\n        });\\n}} catch (e) {}\\n\\nvar list = parseDomForArray(html, '.mlist&&li');\\nfor (var j in list) {\\n    var title = pdfh(list[j], '.td3||.fl&&a&&title');\\n    var desc = pdfh(list[j], 'h3&&Text');\\n    var url = pd(list[j], '.td3||.fl&&a&&href') + lazy;\\n    var img = parseDom(html, '.left&&img&&src').replace('picdata','attachment');\\n    d.push({\\n        title: title,\\n        desc: desc,\\n        img: img,\\n        url: url,\\ncol_type: 'icon_2'\\n    })\\n}\\nres.data = d;\\nsetHomeResult(res);\"}]","proxy":"","icon":"http://www.songtaste.co/favicon.ico"},{"last_chapter_rule":"","title":"晨光影视D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##https://www.cgdyw.net/s/dianying/page/fypage?_t=0.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.fed-list-item;.fed-list-title&&Text;.fed-lazy&&data-original.js:input+'@Referer=';.fed-list-remarks&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.fed-casc-list&&dl',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.fed-deta-info;h1&&Text;.fed-lazy&&data-original;.fed-list-remarks&&Text;a&&href;.fed-part-esan&&Text\";\n一级(parStr,true);","search_url":"https://www.cgdyw.net/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.fed-col-xs12.fed-col-md6,1&&Text;.fed-col-xs12.fed-col-md6&&Text',\n    img: '.fed-lazy&&data-original',\n    url: '.fed-lazy&&data-original',\n    desc: '.fed-list-remarks&&Text;.fed-col-xs6.fed-col-md3&&Text',\n    content: '.fed-col-xs12.fed-hide&&Text',\n    tabs: 'body&&.fed-drop-btns',\n    lists: 'body&&.fed-play-item:has(.fed-part-rows),#id&&a:not(:matches(视频排序：正序))',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/84.svg"},{"last_chapter_rule":"","title":"霹雳影视.D🐺","author":"家娃","version":20220929,"type":"video","url":"hiker://empty##http://www.plyingshi.com/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|写真|APP|热榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note||.module-item-text&&Text'),\n        pic_url: pd(list[j], '.lazyloaded&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = JSON.parse(getResCode()).list;\n//log(list.length)\nif (list != null && list.length > 0) {\n    for (var i = 0; i < list.length; i++) {\n        d.push({\n            title: list[i].name,\n            img: list[i].pic + '@Referer=',\n            url: 'https://www.plyingshi.com/voddetail/' + list[i].id + '.html#immersiveTheme#'\n        });\n    }\n}\n\nsetResult(d)","search_url":"https://www.plyingshi.com/index.php/ajax/suggest?mid=fypage&wd=**&limit=100","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return playUrl;\n        }\n    }\n\n    function Sniffing(playUrl) {\n        showLoading(\"正在进行检索，请稍候...\");\n        var video = 'x5Rule://' + playUrl + '@' + $.toString(() => {\n            //fba.log(fba.getUrls())\n            var urls = _getUrls()\n            var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css|\\.jpg|\\.jpeg|\\.png|\\.gif/;\n            var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n            for (var i in urls) {\n                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                    fba.hideLoading();\n                    fy_bridge_app.log(urls[i])\n                    if (/mgtv|sohu/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                    } else if (/bili/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                    } else if (/ixigua/.test(urls[i])) {\n                        return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                    } else {\n                        return urls[i]\n                    }\n                }\n            }\n        });\n        return video;\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        eval(pdfh(html, '.player-wrapper&&script&&Html'))\n\n        var fro = player_aaaa.from;\n        var next = player_aaaa.link_next;\n        var tittle = pdfh(html, \"title&&Text\").split(\"-\")[0];\n        playUrl = player_aaaa.url;\n\n        if (player_aaaa.encrypt == '1') {\n            playUrl = unescape(player_aaaa.url);\n        } else if (player_aaaa.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_aaaa.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css|\\.jpg|\\.jpeg|\\.png|\\.gif/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n        //获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \"body&&.player-wrapper&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        }\n        // log(jiek)\n        if (jiek != '') {\n            var jiexi = jiek + playUrl;\n            //log(\"jiexi-->\" + jiexi);\n            var playerHtml = request(jiexi, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA\n                }\n            });\n            //log(playerHtml);\n            if (playerHtml.indexOf('iframe') > 0) {\n                return Sniffing(jiexi);\n            } else {\n                eval(playerHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n                if (fro == 'Good') {\n                    var apiUrl = jiexi.split('?')[0] + 'API.php';\n                    var jsonStr = request(apiUrl, {\n                        headers: {\n                            \"User-Agent\": MOBILE_UA\n                        },\n                        body: \"url=\" + config.url + \"&time=\" + config.time + \"&key=\" + config.key,\n                        method: \"POST\"\n                    });\n                    if (jsonStr.indexOf('解析失败') > 0) {\n                        return 'toast://解析失败，请重试或切换线路~'\n                    }\n                    var json = JSON.parse(jsonStr);\n                    if (json.code == 200) {\n\t\t\t\t\t\treturn toUrl(json.url);\n                    } else {\n                        return 'toast://解析失败。'\n                    }\n                } else {\n                    playUrl = config.url;\n                    if (playUrl != '') {\n                        return toUrl(playUrl);\n                    } else {\n                        return 'toast://解析失败。'\n                    }\n                }\n\n            }\n\n        } else {\n            return Sniffing(input);\n        }\n    } catch (e) {\n       // setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items:contains(导演：)&&Text').replace(/\\//g,' ');\n\n    var 主演 = parseDomForHtml(html, '.video-info-items:contains(主演：)&&Text').replace(/\\//g,' ');\n\n    var 更新 = parseDomForHtml(html, '.video-info-items:matches(上映：|更新：)&&Text');\n\n    var 状态 = parseDomForHtml(html, '.video-info-items:matches(集数：|备注：)&&Text');\n\n    var 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\n    var 简介 = parseDomForHtml(html, '.video-info-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2',\n                    extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n}\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2',\n                     extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n}\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"http://www.plyingshi.com/upload/mxcms/20220810-1/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"唯爱电影.DR","author":"道长&Btea","version":1,"type":"video","url":"hiker://empty##https://v.weiaidy.com/movieshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.fed-casc-list&&dl',\n    子分类: 'body&&dd',\n/*\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/movietype\\/(\\d+)/, 'movieshow/$1-----------')\n            }\n        }*/\n},{\n    一级分类: '.fed-list-head',\n    子分类: 'body&&a'}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索到与|相关的|条结果');","search_url":"hiker://empty##/moviesearch/----------fypage---.html?wd=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"evalPrivateJS(\\\"6rySfIeN3hsCAqUc3KkURJbJIXdwuJFz/adduvbmQ2GlRAeWEXjJVmusSD7CRq89ywNINct/rTrMN+AWJ0qO7sJusjpBLCViup37BHna4BcmjUsaZK/S/MeHD3Y4XQ91PdVL8KzBGK4GXDXucqiNb/VbNhnIgPEduqoKs4cLYAm716qG9X5sJyG3AFIqAU9R7VN6CpgaxdAvSFGPEPZitVUkKRD1Lc3UtrPvGGORDtTLK8tI1lZz+wif+9ZIAdT2FpGkI6RSWQevyMDtw2edWylYxEmyCPI0/3j38dVLxgAdkJC4rUxbMDe3lDVm5YU5h6+RABVDomOEB5xuKRaycvI89vrprWvonjQ4njIE3p48iFHZz1Bucou7Mpt7pYkPoI662JTPV1NBbTq4VzGhmQuN/ArXmTJp+SVlj9VhYe5NIguM3kyWy4vjCS2Sv8QOpo8I8mRv81zdut88yOHLngxvx3btvbqwqj6mRvvu4yhl8glU4nYStdeQox8cmMFpmEQ1yJTYjHkSKX6i4UGIUydvwaAVVOVvvCgtHcLq+IJLDO4hCriVAcJDoBcUO/upEBU1ZGaKsFHBwmZjnyb0vhJgni6/B8kbehTq0E/D3OYnhOX82Iso1AMPmns54kDvmVPENFLKSQEauvq4pJ4qcyNeO10cOkDJJatU1rm2gRtZAS+wDCCwfHIQ2x+YQEmLjFocgvR4VMXY0Sk6SWeXwd1cFHxglJSI7Plynh2EEa8V95oNDojK0cpYSpEdm048aVqn6GRxNF2NgZYXFBlv1Zqbmp34p6CSQRI4byRBB6nOlDL7DvzzsOQnK+/bCc4n4cLI22eIkBXimddGXblXoBNcw6Tv/ETfHg0e7iYC0UZO0So3nHo0R9YCUa5a+4A+asr+/SznbZClRQYQgJKhcxPXsrEIZOFiUTEJzmmmSkEvr6BkgLPZyYB/KgT5XXDDUL47DzTdyldJCR/MFWK44xu7i9Fky3gpQtbZBCNc6E0qzVkXD/VS903fB2lDun0pkiQUA++Nky38wkoXSoxXyMXnpS/pIQuB1HoSuWUCQmk+8YyAcrksWcGo2ZC0/eYy5AbytsAIAZNePwQI/KyS8i8FrTT7A2w3x7v7GI5V8N52E3Be6y/AKbvnolYhdV4sIQ+YjhRkIc2cxbR/emyJcEn7uUWyHJyxBt8nqlCDfmQcQ9o7CsIwnMpJjQfx7B3uyyvLSNZWc/sIn/vWSAHU9hvae4EDPkHseoXNM75xNnJKs4mSrAKBA+QnrzDHv5KDmwePe41HTI6MhJlAVd+F1cvhyluaIGcb4n18/auSSPS5/1QT3ZrInNHK7cFSOYQOEnThUUNTzSul2WJfONx8Wy1FtoBzDKYyCOarv3Bx31IaIzKcIEzDzj3RpL7Tlzs7Hv1PeuONmg80lIn9jjRzX8vSIGva4rPMefKtE7MyotTNLWzjL4qzgxugY/UiY94QCowlteTRUlGCuyzwrgAG3iR5cmmyZOP5ShEdtfhp2bd3XDAtX81pZrDLSw9Lo8NR++pxSjIuogx/fqDvaHDLl8/NCPGPO5V9UJMG5WZ2toIU76ONvC42f+VVG8phmDtvHLlw6J+LTEmqJzccxV6GCISxnMo8BMQ5JbFcbmZIQjv8SeyYUzkGFyw7gb8P2TAXlxOCcvHjBRgLiSBjL6uNKuMy24NvTW7Prw0H2+M0p+sMaN9+M3q20IeRR4g+ubtTOtoThmm/xH7rOSNdd4acT/vFBDrVLL2hZYw0MQi5szTDAUdq3qFLGAp9YIMHhmRtKtUFwwrUbNFuy3nozYEHfZtMVgFxKEGZ7nZ7fwSs0A0nLhdT5jMSRGXbn81q+mms9MabqP2O4S21a0ADnnvFfrqyjBT87w4+fukGdIRR9GwYtRbKzf0B3qyYFC6xsZGwfY2OCQCgVAM2wfWzaiPkL/SJbZ1vn8AGhq8rScpey38NKvi6LhCyMhAS4p5ZbAzzaCKYqgdYsB3kB6LfNhXX/sY2Jl7NHJSpXwbu2JDw8IHQOcWzGscnb5rrFVP498pjQtCK/rDqwk2o6JfP9uZH7dlqPX5FNTF9LfvzND30Mym4zUn7ge7XJ6eEUSuqkSWsGeaU6Icp4zRw8t5Fu91kRpsHj3uNR0yOjISZQFXfhdWldak1mZjRTJU2I6scTSguNoIXzmZyiIpbkhG1Ur/1JTQZ46pO8gE180vBZwKKrtdPUEqHWJN4CM/nKj7KsGd8bnYBvkos6Nk89kvzdnSrfPIAcvh28q/81qaqkDQFuE/NGMDxsM5VefsTxUf0ITQRfIcPxF4PX8EPOesPFkZjHh6MhLnxtLGkRZZ0+FFI6KlsbY0FRS+G0ryNV/j0m9rJrIIfQRMPLoo9vo9l4mIwkzVdv/nh/KIp1NscGHYZVWTjk8M/2rLsUkvl1NcS6gGDIBizMxYi3rjZkjZc8ReEJEngoZDqn7BWLYqWukJu9qnRFelQvTYBTbU82xflqHNR/hJOmZ35/OlFoEodCgeEVJX2HYox5XjeNepSWAlSeefWTYwpstRs0CZitv1LmNoIVaJilyh9dkeSVYqCKL/HlbsaViYTZ18Hf7crD6oIdtiJ00ILGUeaGXrI/rojezlwIRMqeqGRWtf9dp6r+HH2saMcUEzxGHpN/JiBOrqt5+PSjwQXOGRdN8kncctDrLLgUIf/c1rkjPGGIWT3Ia+UZw4HHsQUFragTwCwDqdEpfauFyUwAwd+2SpN/7LxVun3IfPg++uFAH4/hy4uLGb+7Z7X0YSNtdt0RbBQuY1tnyBBFpHwgrDdcyol8nwOqR4vsfLejdshvHm7MRrx/Z/C2OJcuCQF6oLF+pB5tn5DgQ4d4KJHFNfkvYi/RF7H7xy+0QAtru7ZFr7st/6LpTcnfB10Kf2brxPjD1zvhmhrgLl+68hs502OnfsTjUgXtyXDa3BLgFEdttKKv/J8+xLNKVCMnSFP7hzksdoqeLG7t1h6irxWNfQjuzaMxHoT8Es9Hxs6DSz957ocitShflHmqzo0WImHcO3x6OeSuL2gutlsvEscIiH7HD20WRZmqtJIY6fsnBpz7BJZLh7IEnsinEYTP0rCxPgSehv++50MAewBd6HylxWcA/LY3j/gwi+iK8WGSg4rfH9NCxBP77zWMhymGGyKDkwjj+vLyfrt85f6vSiu/QqTaQSoYH1e2Y4PDTLt8pC+FQMA/LV1HtBu+nv/tYFaGJ8mHoj4nPEx6iTSrugZRtwp4b5b4jovYUXFNkK09nGzIttiloInQMJPLrTDcWW/DVhkbmNChYt72i9YQQrW28TPWqMzo5BIZfUMOxOTfHygEGmrUTEg6GkvHvtmoOhjiEaZCaSNnFeuyUdXKsBcv0SJ1nIP2KlssvYoFiS2CUlpr5Nntqb8KA8L0Oavdjv6/rVX3LYAMmesTNM+L0OhIRxJ4OZLSprDIN7MAGaM2L04UmpBsHDuM3m92NpNzUdchUzfr7lwgcop8clnn0kvQQdzc45F1iC3sjJb5BtfwMVBTihr8M10O0o4or1xpQ2Pk2aNT2YPqIV3/IdNUWfDwBhwI5FKToLm7o14QNBMPwMHUk9PiZquC64nPpob1VAJjSMJ8CaHuemhEWu16arGRckSLAB0aExliNL8/R0fuTNJqFPZn4NsWmhkcT5ZFYFqr6xnQI4zBmwoAElFb/Xswn6d1lNXMPzjyvOFGA/Zfb6xjqWkUDZwMkwu7QpMehYy+Z6jDq6js1UF7m/2+K8NBZ37yaJ4IHSpQ10ekDxSd1UvengzejEipuVsJjKkZP+FN7B9AFTLKcInFw/u4m94vCN0D0FQ7BDHE4lAmDBBG5NBQAaQmIWORIenZ49QXEpVwtsLVUC7x+bUcnZr+qGfX6woyb4sMBVnbkSLSMWzOdEaA+CzUWv7I9acjkizub276RuUBdYGxzCYwsEayo8wbpMejkBDyhbkRjlTZimyqvQC21mozdJa7UcO0WkdwuHaSP24u/+1hychHD1hq2HH2qsMvEB8V/U96O2ZwCKrK6Oa82u0ppzAy5TQKRiiDn/KSDQJlw4wveSaYwmtVzm1w82KIjd1nzQdtwSliGP8E3HHFhQBitg9KsSaHIwL6Vj5bzNVrmQdNjPtJva4oxqGpQLhON+qj5X17Zdx0AVR1OstOSF4ixX52yI2/27WAONEEPId/e4MPU8s3N6BlfuVpuiDpPF1HA0GTTNRhvMccjaD3HHpexYiTju2Slj+sVp/cGMQMWkiey4r8HgfKuQljbzArqhkVP2WJs3S9sT4Zie3LNR5NwklBphzMgXOydOYC38jxk9tm7vjLmK4+cDYZEnItWgl2LeCb1Wg0m/EFMdSHbBc2b4fsAGkae7kGVBFSLirccaCQ6ih9zNwKbmXPq8cql0X+kSAvlnrxM3ElKIl8M4c3WVPwOt3eE3QBsGr8kU9mRB1IYoTLIVDTmry2hZRZZ+eLGqicXACVl9oYoXnjFgqHv/WelJvbCSK09KDq+SII1Umr0rUYECeh6fl5mEQUbAW2w6Ab81Ofxhx/U7Y4PijesssxU4yNIW7RrrWDiV6AQxftliQ3bhCh8Mu5jn62vhPtSMMw4wSHiCpje6ZGrF45O+chQPcy9rjQxuFyA/EO96lnB6oEE1vLHt1Opebgowqyb0uzI2Ef7klHRvMmLC8YsdEMZYlTsDZ/VoNdQx7GoFH9HrwoDfyCBiHsIGk1awaagvMpfPOFUJcIMIHYo48HA6B+0xWlamJtJdyZNr3BOWiXnjXh0/uyPK8DuLTCWI36QPHpcoFbpCY/hZlyi5Dzxwh59Vx3E+RgB6LHiS65DLynCe+O87pDbPb28kdLpPofEUlEROpBCoxzeev6r2k8CbHLDyznxs8uLyStpug0w6Wtep1p1PdFSGW2AWmk5olTabqvuQEwebexriTbhabfm0fmYwCC7wYBghYQyPsikNCfLlEzFQOVRIrTV4SmN4dQ/KxAgIh3DNzDVmue4JPcPoTLr5F+9if/09wgiGs2CqCZeteo10PPoZZr2AylWD4qBL8g4n+NuaPYbu82a/jA0t7mqwnoCy9QMAmnclXLeFVWl6b6gXPwWixtgyiaB5HmNke0ivywD0k2MPLHKtvOChI7t4t+W2lAO6QNJSJwijZm/CV2mLnTJd1Xkj28rqBMc3KKhOKav6doFnRYgtbX1w1Q9zIvOFb3yrxaS6IfixueK3a+5mUrGxQuipBN84J7zH98/3V9cFzApZ0x+97cQc+BlF9Zk6wK71rprfQLV9H9utH4yulteWYOTMsA5Qvu3N1G2nIlUB+OFkMjopmsOSdhk1IspvwDdOcYG3ctDvOkbfezAITXMOk7/xE3x4NHu4mAtFG4uIN3vPmE2aax+YN3582eqSSppN8sw7SWtNjyoXSo+uVX22/pK9ckPEv5m2ARUGNN2sIOn675UjpY31GRyLF1IaLIFEaUT9UwncE4OcSH0vnvcXtwC0ov2jF1PlzjzxtTen3dRqPqYr0Xf4Zslw5VijWNBAhZC9KglDAapTuThh3eJUGcy6P6fm7ZE64UvF/3to1xuDdxrmK3fDVgfkZNG++12tL2CR3gMjXPA5mm58r0qkSlRWPYgPePVjnBNchV1YUYr+NATlqroAjMe43XPmubBYIQNpm56W2gOjBqhSNWm6a/baH7a3Pwn3QySrQHwHOgJym8VabKk3ouwOFDMegXXR1ScZO/CotuFXUpTHOyFI5saQZKx7wOSfy3gLfvY72GLM4fHdDG6ZIYC1JKQd6hK6doAU42pecptR48bQFnjUBTZj9N6XJi1idelcuNkjLsol5Isja0zm9v51+kSDjZEt4XZXJMwfhx9z8r4rTmglD8A+3sTZo2W/TPNbrW2vEzJekxC/Zc107Ca516aVCzGIwfh+4oLAVFHJqdjRy/ztTjPQo0dcynAmzOkH/Ten3dRqPqYr0Xf4Zslw5VnfpZUZSufuKlbz7kBstbtSB/TuFAjGbi2B5O/dZ5Wk9vY72GLM4fHdDG6ZIYC1JKf1bMD4byqSlxcVWlokIEsZODF0jDdt7T8VhX53R/V2Y0Y2ASK2AUZw+v89/WvMbjMiM3Ss7vgy9egaKJwYsri8otmoJNHookCj6eS86CDwSV6Ik9/1ZvuontWLlBVDIUsxkk/DT1d8l9woHZX0dv6uc4tpPaECadJB0nJmYODoRzswnuBgZxCCF6qtCnkDxbl9nx5xhB8S7QsqE4qDidhez/2TCTC5/1Pl/Ci6Kxa2RYlVdXRTMctk6xKlP3lMuJbeVtkDdPTO/A9XsLJqlIWvEyYGFvJcVlQG8ae4c2FHX7awBC7TSaeKGY9+tpmce3qdOR0YJXUaMU/HG7jPem9Y6K0UzLc5OWEYfecGnS3QCejE6ssx/olduMJdZVwyBIXzZI4EV48xqBvNS7pv4znn6ADUh/Ts7woMv0akDfobjW6+iya0Q2YL8ejrM4904pSMZYni7psEr5K8j/efsnbfSjZvxK/RedNF9PhZV5UIa8fFRA4CjFeeu7M5ci18Eqg+j1N6Rou8CCI+fryViXzQ2VmxjiVTqjJq9+A7hma8CKSgO2IJzPw6ZZGTs9XTd3DKkZP+FN7B9AFTLKcInFw/OmZ32DGSC4ZULaEwCBpMPZil/C1fmN903DSNlzNo7/w==\\\")\"},{\"col_type\":\"movie_3\",\"name\":\"滑动验证\",\"path\":\"yz\",\"rule\":\"//滑动验证(来自墙佬)\\nfunction stringtoHex(acSTR) {\\n    var val = \\\"\\\";\\n    for (var i = 0; i <= acSTR.length - 1; i++) {\\n        var str = acSTR.charAt(i);\\n        var code = str.charCodeAt();\\n        val += parseInt(code) + 1\\n    };\\n    return val\\n};\\n\\nfunction md5encode(word) {\\n    eval(getCryptoJS());\\n    return CryptoJS.MD5(word).toString()\\n};\\n\\nfunction bypass(html) {\\n    if (html.indexOf('滑动验证') > -1) {\\n        let jsp = parseDom(html, 'script&&src');\\n        let jsf = request(jsp);\\n        eval(jsf.match(/key=\\\"[^\\\\\\\"]+\\\",value=\\\"[^\\\\\\\"]+\\\"/)[0]);\\n        eval(\\\"let url='https://v.weiaidy.com'+\\\" + jsf.match(/\\\"complete\\\",function\\\\(\\\\)\\\\{c\\\\.get\\\\(([^,]+),/)[1]);\\n        putMyVar('wa$cookie', JSON.parse(fetchCookie(url, {\\n            headers: {\\n                'User-Agent': PC_UA\\n            }\\n        })).join(';'));\\n        return true;\\n    }\\n    return false;\\n\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"宝塔验证\",\"path\":\"btyz\",\"rule\":\"if (/人机验证/.test(html)) {\\nshowLoading(\\\"验证码识别中，请稍等\\\");\\n    var codeurl = 'https://v.weiaidy.com' + pdfh(html, 'script&&src');\\n    //log(codeurl)\\n    let codehtml = request(codeurl, {\\n        headers: {\\n            'User-Agent': PC_UA,\\n            'Referer': 'https://v.weiaidy.com',\\n        },\\n        method: 'GET'\\n    });\\n    //log(codehtml)\\n    function stringtoHex(acSTR) {\\n        var val = \\\"\\\";\\n        for (var i = 0; i <= acSTR.length - 1; i++) {\\n            var str = acSTR.charAt(i);\\n            var code = str.charCodeAt();\\n            val += code\\n        };\\n        return val\\n    };\\n\\n    function md5encode(word) {\\n        return md5(word).toString()\\n    };\\n    //md5encode(stringtoHex(value))\\n    var key = codehtml.match(/var key=\\\"(.*?)\\\"/)[1];\\n    //log(key)\\n    var value = codehtml.match(/value=\\\"(.*?)\\\"/)[1];\\n    //log(value)\\n    //var phpurl = codehtml.match(/c\\\\.get\\\\(\\\"(.*?)\\\\+\\\"\\\",/)[1];\\n    var phpurl = 'https://v.weiaidy.com' + codehtml.match(/c\\\\.get\\\\(\\\"(.*?)\\\"/)[1] + key + '&value=' + md5encode(stringtoHex(value)) + '';\\n    //log(phpurl)\\n    /*\\n    let ckhtml = request(phpurl, {\\n        headers: {\\n            'User-Agent': PC_UA,\\n            'Referer': 'https://v.weiaidy.com',\\n        },\\n        method: 'GET',\\n        withHeaders: true\\n    });\\n    var Cookie = JSON.parse(ckhtml).headers[\\\"set-cookie\\\"].join(';') + 'myannoun=1';       \\n    */\\n    let ckhtml = fetchCookie(phpurl, {\\n        headers: {\\n            'User-Agent': PC_UA,\\n            'Referer': 'https://v.weiaidy.com',\\n        },\\n        method: 'GET',\\n        withHeaders: true\\n    });\\n    //log(ckhtml) \\n    var Cookie = JSON.parse(ckhtml).join(';');\\n    if (Cookie != getMyVar('wa$cookie', '')) {\\n        putMyVar('wa$cookie', Cookie);\\n        log('Cookie已更新: ' + Cookie);\\n        refreshPage()\\n    }\\n    \\n}\"}]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=唯爱电影"},{"firstHeader":"class","last_chapter_rule":"","title":"Auete.Dr","author":"道长&Killer","version":2,"type":"video","url":"hiker://empty##https://auete.com/Movie/indexfypage.html[firstPage=hiker://empty##https://auete.com/Movie/index.html]","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet ui = ()=>{\nlet parStr=\".threadlist&&li;h2&&Text;img&&src;.hdtag&&Text;.pic&&href\";\npage = MY_PAGE;\ntrue_url = getMyVar('header.url', MY_URL);\n//true_url = 获取正确链接();\nif(page>1){\n    true_url=true_url.replace('index.html',\n    'index'+page+'.html');\n}\n//log(true_url);\nlet cates=打造动态分类([{\n    一级分类:'body&&.navbar-nav:lt(1)',\n    子分类:'ul&&li:not(:matches(首页|影讯))',\n},{\n    一级分类:'body&&.nav_tag_list',\n    子分类:'body&&li:has(a[href])'\n}]);\n设置(cates);\n一级(parStr,true,cates);\n}\n混合(ui,\"https://auete\\\\.com/(.*?)/(.*?)/(.*?)/\",\"gbook\");","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.list-unstyled;.text-danger&&Text;;.text-grey&&Text;a&&href;\";\n一级(parStr,true);","search_url":"hiker://empty##/search.php?searchword=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n\"title\":\".media-body&&Text\",\n\"img\":\".cover&&img&&src\",\n\"url\":\".cover&&img&&src\",\n\"desc\":\".w-100&&Text\",\n\"content\":\".message&&Text\",\n\"tabs\":\"#player_list&&h2\",\n\"tab_text\":\"body--span&&Text\",\n\"lists\":\"body&&#player_list,#id&&li\",\n\"tab_id\":\"\",\n线路处理:function(u){\n    return u.split('』')[1]\n}\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n香免();\n二级(parse,lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=Auete"},{"last_chapter_rule":"","title":"八号D♔","author":"蓝莓果酱UX","version":4,"type":"video","url":"hiker://empty##http://www.8hyyw.com/frim/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?)\\.html/)[1];\n//log('page:'+page);\ntrue_url=getMyVar('header.url',MY_URL);\n//true_url = 获取正确链接();\n//log(true_url);\nif(parseInt(page)>1){\n    true_url=true_url.replace(/\\/(.*?)-(.*?)\\.html/,'/$2.html').replace(/\\/(.*?)\\.html/,'/$1-'+page+'.html')\n}\n//log(true_url);\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言|电视直播|APP下载))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: '.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.detail&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://www.8hyyw.com/search.php?page=fypage&searchword=**&searchtype=","group":"视频","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data&&Text;p.data,2&&Text;p.data,1&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.detail-sketch&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情介绍|剧情简介|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新|最新))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/143.png"},{"last_chapter_rule":"js:requireCache('https://pastebin.com/raw/D2iimVHk');\nvar 集数总列表 = '.bd&&ul'\nvar 集数列表 = 'body&&a'\n章节.A()","title":"飘虫影院","author":"缘分&ssl","version":0,"type":"video","url":"hiker://empty##https://www.pcmp4.com/vt/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.menu_bottom&&.over-auto'\nconst 拼接分类 = '.list-box&&dl'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vt(\\/\\d+)\\.html/, 'ms$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\n//一级页面\nvar list = pdfa(html, '.pic-list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span&&Text'),\n        img: pd(list[j], 'img&&src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\ntry{\nvar list = parseDomForArray(html, '.sr_lists&&dl||li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'a,1&&Text'),\n       desc:parseDomForHtml(list[j], '.ss1&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.pcmp4.com/vs/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.py-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, '.bd&&ul');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\n\nd.push({\n    title: pdfh(html, '.text-overflow&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'.main-ui-meta&&div,1&&Text').substring(0, 18),\n    desc: pdfh(html, '.main-ui-meta&&div,7&&Text'),\n    img: pd(html, \n'.img&&img&&src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\nextra: {\n        gradient: true\n    }\n});\n\nvar lazy = $('').lazyRule(() => {\ntry {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\n        return lazyParse(input);\n    }}catch (e) {\n        log('报错跳转');\n        requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\n        return lazyParse(input);\n    }\n});\n\n      var listt = pdfa(html, '#url&&li:has(p)');\n    for (var j in listt) {\n        d.push({\n            title: '‘‘' +pdfh(listt[j], 'a&&title'),\n            url: pd(listt[j], 'a&&href'),\n            col_type:  'text_1'\n        });\n    }\n\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href')+lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar('header.group', \\\"0\\\")\\nconst cate_temp_json = getMyVar('header.title', JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar('header.group', fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar('header.title', JSON.stringify(new_cate))\\n                        putMyVar('header.url', input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar('header.title', JSON.stringify(params.cate_temp))\\n                        putMyVar('header.url', input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://www.pcmp4.com/static/images/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar title = pdfh(html, '.fed-list-remarks&&Text');\nsetResult(title);","title":"韩剧网🤡","author":"缘分","version":0,"type":"video","url":"http://www.hanju5.com/vodtype/fyclass-fypage/","col_type":"movie_3","class_name":"韩剧&韩影&韩综&韩漫","class_url":"hanguodianshiju&hanguodianying&hanguozongyi&hanguodongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.fed-list-info&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a,1&&Text'),\n        desc: parseDomForHtml(list[j], 'a&&Text'),\n        pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\nvar list = pdfa(html, '.fed-part-layout&&.fed-list-deta');\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h3&&Text'),\n        desc: pdfh(list[j], '.fed-part-eone,1&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        content: pdfh(list[j], ''),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"http://www.hanju5.com/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar 列表 = \".fed-part-layout\";\nvar 信息 = \"li&&Text\";\nvar 信息1 = \"li,1&&Text\";\nvar 信息2 = \"\";\nvar 信息3 = \"li,3&&Text\";\nvar 信息4 = \"li,4&&Text\";\nvar 封面 = \"a&&data-original\";\nvar 简介 = \"\";\nvar 路线列表 = \".fed-tabs-foot&&.fed-part-rows&&li\";\nvar 路线列表正则 = \"\";\nvar 路线名 = \"Text\";\nvar 集数总列表 = \".fed-tabs-boxs,1&&.fed-tabs-foot&&ul\";\nvar 集数列表 = \"body&&a\";\nvar 集数名 = \"a&&Text\";\nvar 集数地址 = \"a&&href\";\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\nvar 免嗅解析 = lazy;\nif (列表 != \"\") {\n    if (列表.indexOf(\"&&Html\") == -1) {\n        列表 = 列表 + \"&&Html\";\n    }\n    var code = parseDomForHtml(html, 列表);\n} else {\n    var code = html;\n}\n信息 = parseDomForHtml(code, 信息);\n信息1 = parseDomForHtml(code, 信息1);\n信息2 = parseDomForHtml(code, 信息2);\n信息3 = parseDomForHtml(code, 信息3);\n信息4 = parseDomForHtml(code, 信息4);\n封面 = parseDom(code, 封面);\nif (信息.length > 20) {\n    信息 = 信息.replace(信息, 信息.substring(0, 20) + \"...\");\n}\nif (信息1.length > 17) {\n    信息1 = 信息1.replace(信息1, 信息1.substring(0, 17) + \"...\");\n}\nif (信息3.length > 20) {\n    信息3 = 信息3.replace(信息3, 信息3.substring(0, 20) + \"...\");\n}\nvar 标题 = 信息 + \"\\n\" + 信息1 + \"\\n\" + 信息2;\nvar 副标题 = 信息3 + \"\\n\" + 信息4;\nd.push({\n    title: 标题.replace(/  /g, \" \"),\n    desc: 副标题,\n    pic_url: 封面,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\nvar 探嗅设置名 = MY_URL + \"探嗅设置\";\nvar 探嗅设置 = getVar(探嗅设置名);\n\nif (免嗅解析 == `@lazyRule=.js:`) {\n    d.push({\n        title: '📺探嗅解析',\n        url: `toast://不要点击了，没有其它选项`,\n        col_type: 'flex_button'\n    });\n} else {\n    if (探嗅设置 == \"\" || 探嗅设置 == \"免嗅\") {\n        var 图标1 = '📺';\n        var 图标2 = '❎';\n    } else {\n        var 图标2 = '📺';\n        var 图标1 = '❎';\n    }\n    var 切换免嗅 = `@lazyRule=.js:putVar({key:'` + 探嗅设置名 + `', value:'免嗅'});refreshPage(false);'toast://切换免嗅解析成功...'`;\n    var 切换探嗅 = `@lazyRule=.js:putVar({key:'` + 探嗅设置名 + `', value:'探嗅'});refreshPage(false);'toast://切换探嗅解析成功...'`;\n    d.push({\n        title: 图标1 + '免嗅解析',\n        url: 切换免嗅,\n        col_type: 'flex_button'\n    });\n    d.push({\n        title: 图标2 + '探嗅解析',\n        url: 切换探嗅,\n        col_type: 'flex_button'\n    });\n}\nd.push({\n    col_type: 'blank_block'\n});\nvar 路线名设置名 = MY_URL + \"路线名设置\";\nvar 路线名设置 = getVar(路线名设置名);\n\n集数总列表 = parseDomForArray(html, 集数总列表);\nif (路线列表正则 == \"\") {\n    路线列表 = parseDomForArray(html, 路线列表);\n} else {\n    路线列表 = html.match(\"/\" + 路线列表 + \"/g\");\n}\nif (路线名设置 == \"\") {\n    var 临时名 = parseDomForHtml(路线列表[0], 路线名);\n    putVar({\n        key: 路线名设置名,\n        value: 临时名\n    });\n    路线名设置 = getVar(路线名设置名);\n}\nfor (var i = 0; i < 集数总列表.length; i++) {\n    var 临时名 = parseDomForHtml(路线列表[i], 路线名);\n    if (临时名 == getVar(路线名设置名)) {\n        集数列表 = parseDomForArray(集数总列表[i], 集数列表);\n        临时名 = \"““\" + 临时名 + \"””\";\n    }\n    var 切换路线 = `@lazyRule=.js:putVar({key:'` + 路线名设置名 + `', value:'` + 临时名.replace(\"““\", \"\").replace(\"””\", \"\") + `'});refreshPage(false);'toast://切换路线成功...'`;\n    d.push({\n        title: 临时名,\n        url: 切换路线,\n        col_type: 'scroll_button'\n    });\n}\nd.push({\n    title: '',\n    col_type: 'line_blank'\n});\nvar 路线名排序名 = MY_URL + getVar(路线名设置名) + \"排序\";\nvar 路线名排序 = getVar(路线名排序名);\nif (路线名排序 == \"\") {\n    putVar({\n        key: 路线名排序名,\n        value: '正序'\n    });\n    路线名排序 = getVar(路线名排序名);\n}\nif (路线名排序 == \"倒序\") {\n    var 倒序显示 = `‘‘` + getVar(路线名设置名) + `’’<small><small><font color='#5bb7fe'> •倒序•</font></small></small>`;\n    var 切换到正序 = `@lazyRule=.js:putVar({key:'` + 路线名排序名 + `', value:'正序'});refreshPage(false);'toast://切换正序成功...'`;\n    d.push({\n        title: 倒序显示,\n        url: 切换到正序,\n        col_type: 'text_center_1'\n    })\n} else {\n    var 正序显示 = `‘‘` + getVar(路线名设置名) + `’’<small><small><font color='#5bb7fe'> •正序•</font></small></small>`;\n    var 切换到倒序 = `@lazyRule=.js:putVar({key:'` + 路线名排序名 + `', value:'倒序'});refreshPage(false);'toast://切换倒序成功...'`;\n    d.push({\n        title: 正序显示,\n        url: 切换到倒序,\n        col_type: 'text_center_1'\n    })\n}\nif (路线名排序 == \"倒序\") {\n    var 暂时集数列表 = [];\n    for (var a = 集数列表.length; a--;) {\n        暂时集数列表.push(集数列表[a])\n    }\n    集数列表 = 暂时集数列表;\n}\nfor (var i = 0; i < 集数列表.length; i++) {\n    var 二级解析 = \"\";\n    if (免嗅解析 == `@lazyRule=.js:`) {\n        二级解析 = 'x5Rule://' + parseDom(集数列表[i], 集数地址) + '@' + _x5;\n    } else {\n        if (探嗅设置 == \"\" || 探嗅设置 == \"免嗅\") {\n            二级解析 = parseDom(集数列表[i], 集数地址) + 免嗅解析;\n        } else {\n            二级解析 = 'x5Rule://' + parseDom(集数列表[i], 集数地址) + '@' + _x5;\n        }\n    }\n    d.push({\n        title: parseDomForHtml(集数列表[i], 集数名),\n        url: 二级解析,\n        col_type: 集数列表.length > 3 ? 'text_3' : 'text_2'\n    });\n}\nd.push({\n    title: '\\n',\n    col_type: 'long_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1_vertical_pic_blur","sdetail_find_rule":"*","ua":"mobile","preRule":"if (!getVar('hanju5$cookie')) {\n    var html = fetchCookie('http://www.hanju5.com/index.php/verify/index.html?', {\n        headers: {\n            \"User-Agent\": PC_UA\n        }\n    })\n    let cookie = JSON.parse(html);\n    putVar('hanju5$cookie', cookie.join(';'));\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    try {\\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n        var url = html.url\\n        if (html.encrypt == '1') {\\n            url = unescape(url);\\n        } else if (html.encrypt == '2') {\\n            url = unescape(base64Decode(url));\\n        }\\n        if (/m3u8|mp4/.test(url)) {\\n            return url\\n        } else {\\n            requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n            return x5rule(input, input);\\n        }\\n    } catch (e) {\\n        log('报错跳转');\\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n        return x5rule(input, input);\\n    }\\n})\"}]","proxy":"","icon":"http://www.hanju5.com/template/90sdyy_dc/asset/img/logo_golden.png"},{"last_chapter_rule":"","title":"啦啦DJ🎶","author":"缘分","version":1,"type":"video","url":"http://www.laladj.com/fyAll-fypage","col_type":"avatar","class_name":"车载视频&串烧舞曲&慢歌连版&中文舞曲&英文舞曲&","class_url":"video_list/0-0-0&list/1-0-0-0&list/2-0-0-0&list/3-0-0-0&list/4-0-0-0&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\ntry{\neval(request(input).match(/videoObject =[\\s\\S]*?;/)[0])\n    return videoObject.video+';{Referer@'+MY_URL+'}'\n}catch(e){\n\nvar ID = input.replace('http://www.laladj.com/play/','')\nlog(ID);\ninput=input.replace(input,'http://m.laladj.com/mobile/index/get_cookie')\nvar json = JSON.parse(request(input,{headers:{'Cookie':'PHPSESSID=9gvch2irde57rmej6fn6cnif15; song_list=think:[{\"id\":'+ID+'}]'}})).data\nvar url = json[0].path\nreturn url+';{Referer@'+MY_URL+'}'+'#isMusic=true#'\n  }\n\n});\ntry{\nvar list = parseDomForArray(getResCode(), '.list_musiclist&&tr,1:');\n//log(list);\nfor (var j in list) {\n  d.push({\n        title:  parseDomForHtml(list[j],              'a,1&&Text'),\n       desc:parseDomForHtml(list[j], '.t2&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+lazy,\ncol_type: MY_URL.indexOf('video_list/0-0-0')>-1?'card_pic_3':'avatar'\n  });\n\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\ntry{\neval(request(input).match(/videoObject =[\\s\\S]*?;/)[0])\n    return videoObject.video+';{Referer@'+MY_URL+'}'\n}catch(e){\n\nvar ID = input.replace('http://www.laladj.com/play/','')\nlog(ID);\ninput=input.replace(input,'http://m.laladj.com/mobile/index/get_cookie')\nvar json = JSON.parse(request(input,{headers:{'Cookie':'PHPSESSID=9gvch2irde57rmej6fn6cnif15; song_list=think:[{\"id\":'+ID+'}]'}})).data\nvar url = json[0].path\nreturn url+';{Referer@'+MY_URL+'}'+'#isMusic=true#'\n  }\n\n});\ntry{\nvar list = parseDomForArray(getResCode(), '.list_musiclist&&tr,1:');\n//log(list);\nfor (var j in list) {\n  d.push({\n        title: parseDomForHtml(list[j],              'a,1&&Text'),\n       desc:parseDomForHtml(list[j], '.t2&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+lazy\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.laladj.com/search?search=**&page=fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"http://www.laladj.com/favicon.ico"},{"last_chapter_rule":"","title":"蛋蛋魔法","author":"妄炁","version":0,"type":"video","url":"https://ddmf.net/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function()\n { \n      d.push({\n        title: \"🐮搜索\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"╭∩╮（￣▽￣）╭∩╮\",\n        col_type: \"input\"\n    });\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-list'\nconst 拼接分类 = 'scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首|福利|直播))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://ddmf.net/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":"https://ddmf.net/template/mxone/mxstatic/picture/favicon.png"},{"last_chapter_rule":"","title":"纽约影院","author":"妄炁","version":0,"type":"video","url":"https://www.nycvod.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function()\n { \n      d.push({\n        title: \"🐮搜索\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"╭∩╮（￣▽￣）╭∩╮\",\n        col_type: \"input\"\n    });\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-list'\nconst 拼接分类 = 'scroll-content'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);\n","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.nycvod.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n            var url = html.url\n            if (html.encrypt == '1') {\n                url = unescape(url);\n            } else if (html.encrypt == '2') {\n                url = unescape(base64Decode(url));\n            }\n            if (/m3u8|mp4/.test(url)) {\n                return url\n            } else {\n                return 'video://' + input\n            }\n    } catch (e) {\n        return 'video://' + input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if (request('hiker://home@模板·Q') == 'null') {\n    confirm({\n        title: '依赖检测',\n        content: '检测到缺少模板依赖,请导入!',\n        confirm: () => {\n            return \"海阔视界首页频道规则【模板·Q】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=3055\"\n        }\n    })\n}","pages":"[]","proxy":"","icon":"https://www.nycvod.com/upload/mxcms/20221123-1/a06ad49e98cc6d4bd35f6410f7b76a21.png"},{"last_chapter_rule":"","title":"139影视🐯","author":"逐风者20211001","version":6,"type":"video","url":"https://www.139ys.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.139ys.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data,4&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.data,3&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.139ys.com/template/mytheme/statics/img/logo.png"},{"last_chapter_rule":"","title":"F7好看剧","author":"狗浩啊","version":0,"type":"video","url":"https://www.f7hkj.cc/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"body&&.module-item;.module-card-item-title&&Text;a&&href;.module-item-note&&Text;.module-info-item-content&&Text;img&&data-original","search_url":"https://www.f7hkj.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.module-info-item,1&&Text;.module-info-item,2&&Text;.module-info-item,3&&Text',\n    content: '.module-player-list&&Text',\n    tabs: 'body&&.module-tab-item',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.module-play-list-content,#id&&a',\n    tab_id: '',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"卧龙","author":"道长","version":1,"type":"video","url":"hiker://empty##https://collect.wolongzyw.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卧龙"},{"last_chapter_rule":"","title":"追剧吧PRO●Q","author":"狗浩啊","version":0,"type":"video","url":"https://zjuba.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://zjuba.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"野菊花影院🐯","author":"浅殇&逐风者&20211113","version":5,"type":"video","url":"https://m.yejudy.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&src'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://m.yejudy.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,1&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.text-right&&Text');\\nvar 状态 = parseDomForHtml(html, '.data,3&&Text');\\nvar 图片 = parseDom(html, 'img,2&&src');\\nvar 简介 = parseDomForHtml(html, '.detail_content&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.yejudy.com/static/images/logo.png"},{"last_chapter_rule":"","title":"海螺视频Q","author":"狗浩啊","version":0,"type":"video","url":"https://qianmoys.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&连续剧&动漫","class_url":"1&2&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://qianmoys.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"看片.dr","author":"道长&ssl","version":1,"type":"video","url":"https://www.kanpian.co/leibiao/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    //log(true_url);\n    let cates = 打造动态分类([{\n       一级分类:'body&&.library-box',\n       子分类:'body&&a',\n    }]);\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n混合(ui,\"voddetail\",\"label/app\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.kanpian.co/sou/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.kanpian.co/template/dianyingim/img/logo.png"},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&li');\n        chp.push(list.length);\n    }     \n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"8号影院🐯","author":"逐风者","version":22100915,"type":"video","url":"http://www.8hysw.com/frim/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.text-left&&Text')+' '+parseDomForHtml(list[j], '.text-right&&Text')+' '+parseDomForHtml(list[j], '.score&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.text-right&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.8hysw.com/search.php?page=fypage&searchword=**&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\n//嗅探\nlazy = $('').lazyRule(() => {\n    return $.require('hiker://page/dmLazy.js?rule=dm盒子').dmLazy();\n})\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚影√',\n    url: 'hiker://search?s=' + title + '&rule=聚影√',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详细','').replace('\\\\>','');\"}]","proxy":"","icon":"http://www.8hysw.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"三九","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"https://www.sanjiuyy.com/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&日本&韩国&美国&英国&法国&泰国&德国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&li:has(.mo-situ-lazy)');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.mo-situ-name&&Text'),\r\n       desc: parseDomForHtml(list[j], '.mo-situ-rema&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&li:has(.mo-situ-lazy)');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.mo-situ-name&&Text'),\r\n       desc: parseDomForHtml(list[j], '.mo-situ-rema&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.sanjiuyy.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:var js = request(input);var jsurl = base64Decode(parseDomForHtml(js, '.mo-play-load&&data-play').slice(3));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl+\"#isVideo=true#\"}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.mo-movs-btns');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.mo-cols-lays&&li&&Text');\n\nvar 导演 = parseDomForHtml(html, '.mo-cols-lays&&li,1&&Text');\n\nvar 地区 = parseDomForHtml(html, '.mo-cols-lays&&li,3&&Text');\n\nvar 年份 = parseDomForHtml(html, '.mo-cols-lays&&li,4&&Text');\n\nvar 图片 = parseDom(html, '.mo-situ-pics&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.mo-lhxl-24px&&Text').replace('短评: ','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"爱看影视🐯","author":"逐风者","version":22100117,"type":"video","url":"https://ikan6.vip/vodtype/fyAll-fypage/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.col-lg-8');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text')+' '+parseDomForHtml(list[j], '.pic-tag&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original') +'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚影√',\n    url: 'hiker://search?s=' + title + '&rule=聚影√',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面\\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.data,-1&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"APP影视🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##https://app.movie/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequireCache(config.依赖, config.更新间隔);\n大类定位 = '.foornav'\n拼接分类 = 'body&&.stui-screen__list'\n小类定位 = 'body&&a:not(:matches(首页))'\n分类标题 = 'a&&Text'\n分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/type\\/id\\/(\\d+)/, 'show/id/$1.html').replace('.html','/page/' +page + '.html');\n    \n}\n//log(true_url)\nvar html = request(true_url)\n列表 = '.stui-vodlist&&li'\n标题 = 'a&&title'\n描述 = '.pic-text&&Text'\n图片 = '.lazyload&&data-original'\n链接 = 'a&&href'\n一级1.A()","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://app.movie/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    return html.url\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:matches(猜你喜欢|剧情介绍))');\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace('类型：', '');\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').substring(0, 15);\nvar 分类 = parseDomForHtml(html, '.data&&Text');\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\nvar 图片 = parseDom(html, '.lazyload&&data-original');\nvar 简介 = parseDomForHtml(html, '.stui-content__desc&&Text').replace('简介：', '');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\ntry {\nd.push({\n    title: 主演 + '\\n' + 导演,\n    desc: 分类 + '\\n' + 状态,\n    pic_url: 图片,\n    url: 图片,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});} catch (e) {}\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#0aa344\">正序↑</font></small>' + '<small><font color=\"#ff4c00\">反序↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#ff4c00\">正序↑</font></small>' + '<small><font color=\"#0aa344\">反序↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: 'https://pastebin.com/raw/D2iimVHk',\n    更新间隔: 48\n});","pages":"[]","proxy":"","icon":"https://cdn.wyteam.net/webapps/maccms/template/blueghost/img/play.png"},{"last_chapter_rule":"","title":"麻雀视频","author":"缘分","version":3,"type":"video","url":"https://mqtv.cc/libs/VodList.api.php?type=fyclass&rank=fysort&cat=&year=fyyear&area=fyarea&page=fypage","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&","class_url":"movie&tv&va&ct&","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"最近热映&最近上映&最受好评","year_name":"全部\n&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&更早","sort_url":"rankhot&ranklatest&rankpoint","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&other","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = JSON.parse(html).data;\nfor (var j in list) {\n    d.push({\n        title: list[j].title,\n        pic_url: 'http://'+list[j].img + '@Referer=',\n        url: list[j].url.replace(/http.*\\/(\\w+)/, 'https://mqtv.cc/libs/VodInfo.api.php?'+list[j].type+'id=$1')+\"#immersiveTheme#\"\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nd.push({\ntitle: JSON.parse(html).data.vod_yun[0].name,\n})\nvar list = JSON.parse(html).data.vod_yun[0].show;\nfor (var j in list) {\n    d.push({\n        title: list[j].title,\n        pic_url: list[j].img + '@Referer=',\n        url: list[j].url.replace(/http.*\\/(\\w+)/, 'https://mqtv.cc/libs/VodInfo.api.php?'+list[j].type+'id=$1')+\"#immersiveTheme#\"\n    });\n}\nd.push({\ntitle: JSON.parse(html).data.vod_all[0].name,\n})\nvar list = JSON.parse(html).data.vod_all[0].show;\nfor (var j in list) {\n    d.push({\n        title: list[j].title,\n        pic_url: list[j].img + '@Referer=',\n        url: list[j].url.replace(/http.*play\\/(\\w+)\\/(\\w+)/, 'https://mqtv.cc/libs/VodInfo.api.php?$1id=$2')+\"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"https://mqtv.cc/libs/VodList.api.php?search=**","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar arts = JSON.parse(html).data.playinfo;\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(arts[i].cnsite)\n}\n\nvar conts = JSON.parse(html).data.playinfo;\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(conts[i].player)\n}\nd.push({\n    title: JSON.parse(html).data.actor,\n    desc: JSON.parse(html).data.year,\n    img: JSON.parse(html).data.img +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\nvar id = JSON.parse(html).data.id\n    for (var j in list) {\n        d.push({\n            title: list[j].no\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: 'https://www.mgtv.com.leeleo.cn/nmm/player/?url='+list[j].url +'&dmid=m_'+id+'_1&json=jingyu'+lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    eval(request(input).match(/var config = {[\\\\s\\\\S]*?}/)[0]);\\n        return config.url\\n}, MY_HOME)\"}]","proxy":"","icon":"https://mqtv.cc/asset/img/favicon.png"},{"firstHeader":"class","last_chapter_rule":"","title":"VOFLIX.Dr","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://www.voflix.com/show/fyclass--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视&综艺&动漫&","class_url":"1&2&3&4&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    //page = MY_PAGE;\n    //true_url = getMyVar('header.url', MY_URL);\n    //if(page>1){true_url=true_url.replace(/(\\d+)\\.html/,'$1-'+page+'.html')}\n    true_url = 获取正确链接();\n    //log(true_url);\n    /*\n    可能用到: 一级分类 子分类 分类标题\n    分类链接:{\n        二次处理(u){\n        return u.replace(/type/,'show')}\n    }\n    */\n    let cates = 打造动态分类([{\n    一级分类:'',\n    子分类:'',\n    }]);\n    设置(cates);\n    自动一级(null,cates);\n}\n混合(ui,\"/detail/\",\"/gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=VOFLIX"},{"firstHeader":"class","last_chapter_rule":"","title":"789.Dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.789kpw.com/list/2-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    log(true_url);\n    let cates = 打造动态分类([{\n        一级分类:'body&&.stui-header__menu',\n        子分类:'body&&li:has(a[href]):matches(电影|电视剧|综艺|动漫)',\n        分类链接:{\n            二次处理(u){\n                return u.replace(/list\\/(\\d+)\\.html/,'show/$1-----------.html')\n            }\n        }\n    },{\n        一级分类:'body&&.nav-tabs',\n        子分类:'body&&li'\n    },{\n        一级分类:'body&&.stui-screen__list',\n        子分类:'body&&li:has(a[href])'\n    }]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"/vod/\",\"gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/斗----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=789"},{"last_chapter_rule":"","title":"FOX","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.foxzyapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=FOX"},{"last_chapter_rule":"body&&.video-info-main&&.video-info-item,3&&Text","title":"奈菲影院🐯","author":"逐风者","version":22100916,"type":"video","url":"https://www.1985.one/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&B站&4K","class_url":"1&2&3&4&51&52","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.module-search-item');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a,1&&title'),//【标题】\n            pic_url: parseDom(list[i], 'img&&data-src'),//【图片】\n            desc: parseDomForHtml(list[i], '.video-serial&&Text'),//【描述】\n            content: parseDomForHtml(list[i], '.video-info-item,-1&&Text'),//【详情】\n            url: parseDom(list[i], 'a,1&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.1985.one/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nlazy = $('').lazyRule(() => {\n    return $.require('hiker://page/dmLazy.js?rule=dm盒子').dmLazy();\n})\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚影√',\n    url: 'hiker://search?s=' + title + '&rule=聚影√',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-src');\\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/简介：/,'').replace('收起','').replace('展开全部','');\\n\"}]","proxy":"","icon":"https://tp.mgtv.co/upload/mxcms/20211203-1/6b807493ef744155d1fa98c746c354a2.png"},{"last_chapter_rule":"","title":"U酷资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.ukuapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"优质资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=U酷资源"},{"last_chapter_rule":"","title":"回响影视🐯","author":"逐风者","version":22090717,"type":"video","url":"https://hxys.tv/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&纪录片","class_url":"dianying&juji&zongyi&dongman&jilu","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.list-width');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.list-remarks&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\r\n       pic_url: parseDom(list[j], '.lazy&&data-original') +'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.search-list');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h2&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], ''),//【描述】\n       content: parseDomForHtml(list[j], 'a,1&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazy&&data-original')+ '@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')\n  });//【链接】\n}\nsetResult(d)","search_url":"https://hxys.tv/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息module-tab-item\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.play-source-tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.content-playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h2,1&&Text');\\nvar 导演 = parseDomForHtml(html, '.dt-info-box&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.play-score&&Text');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, '.lazy&&data-original');\\nvar 简介 = parseDomForHtml(html, '.m-box&&Text').replace(/简介：/,'').replace('详情：','').replace('展开全部','');\"}]","proxy":"","icon":"http://dd-static.jd.com/ddimg/jfs/t1/135606/27/23832/16687/62bc0157E652c7b1c/b37d858f3771677e.png"},{"last_chapter_rule":"","title":"天天","author":"道长","version":1,"type":"video","url":"hiker://empty##http://app.qianju.cc/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=天天"},{"last_chapter_rule":"","title":"FF9资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.ff9.top/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=FF9资源"},{"last_chapter_rule":"","title":"TOM资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.tomcaiji.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=TOM资源"},{"last_chapter_rule":"","title":"300看世界🤡","author":"缘分","version":0,"type":"video","url":"https://www.300kan.top/vodshow/38--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-box'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|下载))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace('---.html',  page + '---.html').replace(/(---\\d+\\.html)/, page+'$1')\n}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.module-items&&.module-search-item');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'h3&&Text'),\n            desc: pdfh(list[j], '.video-info-header&&Text'),\n            content: pdfh(list[j], '.video-info-main&&Text'),\n            pic_url: pd(list[j], '.lazyload&&data-src') + '@Referer=',\n            url: pd(list[j], '.video-info&&a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.300kan.top/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.module-tab-content&&span');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.sort-item');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.video-info-items,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'.video-info-items&&Text').substring(0, 18),\n    desc: pdfh(html, '.video-info-items,2&&Text'),\n    img: pd(html, \n'.lazyload&&data-src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.lazyload&&data-src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    try {\\nvar html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n    var jx = MacPlayerConfig.player_list[html.from].parse;\\n    if (jx == '') {\\n        jx = MacPlayerConfig.parse\\n    }\\n    var urls = request(jx + url, {\\n        headers: {\\n            'Referer': MY_URL\\n        }\\n    })\\n    //log(urls)\\n    try {\\n        var url = urls.match(/let player[\\\\s\\\\S]*?url.*?\\\"(.*?)\\\"/)[1]\\n        return url\\n    } catch (e) {\\n        var url = urls.match(/urls = \\\"(.*?)\\\"/)[1];\\n        return url + '#isVideo=true#'\\n    }  } catch (e) {\\n   return $.require('hiker://page/dmLazy.js?rule=dm盒子').dmLazy();\\n}\\n}, MY_HOME)\"}]","proxy":"","icon":"https://www.300kan.top/mxstatic/picture/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"酷绘2.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://m.kuhuiv.com/filter/fyclass--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&动漫&综艺&纪录片","class_url":"movie&tv&cartoon&variety&documentary","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/so/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=酷绘2"},{"last_chapter_rule":"","title":"555电影.D🐰","author":"家娃","version":20220923,"type":"video","url":"hiker://empty##https://www.555dy1.com/label/netflix/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-item-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|追剧周表|今日更新|专题|排行|APP|留言|回家))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n //log(MY_URL)\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\n //log(page);\nif (getVar(MY_RULE.url)) {\n\tif(true_url.indexOf('label') == -1){\n\t\ttrue_url = true_url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\t}else{\n\t\ttrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\t}\n    \n    //log(true_url)\n}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = parseDomForArray(html, 'body&&.module-items&&.module-item'); //列表\nfor (var j in list) {\n    var img = pd(list[j], '.lazyload&&data-original')\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.module-item-note&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=', //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = JSON.parse(getResCode()).list;\n //log(list.length)\nif(list != null && list.length > 0){\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n        title: list[i].name,\n        img: list[i].pic + '@Referer=',\n        url: 'https://www.555dy1.com/voddetail/' + list[i].id + '.html#immersiveTheme#'\n    });\n}\n}\n\nsetResult(d)","search_url":"https://www.555dy1.com/index.php/ajax/suggest?mid=fypage&wd=**&limit=100","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy2')).rule);\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-items&&.module-info-item:contains(导演)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.module-info-items&&.module-info-item:contains(主演)&&Text').replace(/\\//g, ' ');\n\nvar 更新 =  parseDomForHtml(html, '.module-info-items&&.module-info-item:contains(更新)&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.module-info-items&&.module-info-item:contains(备注)&&Text').replace(/\\//g, ' ');\n\nvar 图片 =  parseDom(html, '.lazyload&&data-original') + '@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace(/\\//g, ' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title:  '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    function toUrl(playUrl) {\\n        if (/mgtv|sohu/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n        } else if (/bili/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n        } else if (/ixigua/.test(playUrl)) {\\n            return playUrl + \\\"#isVideo=true#\\\" + \\\"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n        } else {\\n            return playUrl;\\n        }\\n    }\\n\\n    var playUrl = \\\"\\\";\\n    try {\\n        var html = request(input, {});\\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\\n        var fro = player_data.from;\\n        var jump = player_data.link_next;\\n        playUrl = player_data.url;\\n\\n        if (player_data.encrypt == '1') {\\n            playUrl = unescape(player_data.url);\\n        } else if (player_data.encrypt == '2') {\\n            playUrl = unescape(base64Decode(player_data.url));\\n        };\\n\\n        //获取下网站配置文件的解析接口\\n        var jvs = parseDom(html, \\\"body&&.player-box-main&&script,1&&src\\\");\\n        eval(request(jvs, {}));\\n        var jiek = '';\\n\\n        if (MacPlayerConfig.player_list[fro].ps == \\\"1\\\") {\\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\\n        } else {\\n            var jxkJSPath = \\\"https://www.555dy1.com/static/player/\\\" + fro + \\\".js\\\";\\n            var jiekHtml = request(jxkJSPath, {});\\n            jiek = jiekHtml.match(/src=\\\"(.*?)'/)[1];\\n        }\\n        if (jiek != '') {\\n            if (jiek.substring(0, 4) == 'http') {\\n                jiek = jiek;\\n            } else if (jiek.substring(0, 2) == '\\\\/\\\\/') {\\n                jiek = 'https:' + jiek;\\n            } else {\\n                jiek = \\\"https://www.555dy1.com\\\" + jiek\\n            }\\n        }\\n        var jiexi = jiek + playUrl + \\\"&jump=\\\" + jump;\\n        //log(\\\"jiexi-->\\\" + jiexi);\\n        var playerHtml = request(jiexi, {\\n            headers: {\\n                \\\"User-Agent\\\": MOBILE_UA,\\n                \\\"Referer\\\": \\\"https://www.555dy1.com/\\\"\\n            }\\n        });\\n        eval(playerHtml.match(/var config = {[\\\\s\\\\S]*?}/)[0] + \\\"\\\");\\n        var rootUrl = jiexi.split('?')[0];\\n        var jxDecodeUrl = rootUrl + 'js/decode.js';\\n        var reqMed = 'POST';\\n        var reqBody;\\n        var apiUrl;\\n        var sign;\\n        var jsonStr\\n            /*\\n        if (fro == 'duoduozy' || fro == 'ddzy') {\\n            showLoading(\\\"正在进行检索，请稍候...\\\");\\n            var video = 'x5Rule://' + input + '@' + $.toString(() => {\\n                //fba.log(fba.getUrls())\\n                var urls = _getUrls()\\n                var exclude = /playm3u8|m3u8\\\\.tv|min\\\\.css|404\\\\.m3u8|\\\\.css/;\\n                var contain = /\\\\.mp4|\\\\.m3u8|\\\\.flv|\\\\.avi|\\\\.mpeg|\\\\.wmv|\\\\.mov|\\\\.rmvb|\\\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\\n                for (var i in urls) {\\n                    if (!exclude.test(urls[i]) && contain.test(urls[i])) {\\n                        //fy_bridge_app.log(urls[i])\\n                        if (/mgtv|sohu/.test(urls[i])) {\\n                            return urls[i] + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n                        } else if (/bili/.test(urls[i])) {\\n                            return urls[i] + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n                        } else {\\n                            return urls[i]\\n                        }\\n                    }\\n                }\\n            });\\n            return video;\\n\\t\\t\\t\\n        }\\n\\t\\t*/\\n        if (fro == 'duoduozy' || fro == 'ddzy' || fro == 'kbm3u8' || fro == 'wjm3u8' || fro == 'tkm3u8' || fro == 'fsm3u8' || fro == 'sdm3u8' || fro == 'dbm3u8') {          \\n            apiUrl = rootUrl + '555tZ4pvzHE3BpiO838.php?tm=' + new Date().getTime() + \\\"&url=\\\" + config.url + '&vkey=' + config.vkey + '&token=' + config.token + '&sign=F4penExTGogdt6U8';\\n            reqMed = 'GET';\\n        } else {\\n            apiUrl = rootUrl + '5348837768203767939.php';\\n            reqBody = \\\"url=\\\" + config.url;\\n\\t\\t\\treqMed = 'POST';\\n        }\\n        jsonStr = request(apiUrl, {\\n            headers: {\\n                \\\"User-Agent\\\": MOBILE_UA\\n            },\\n            body: reqBody,\\n            method: reqMed\\n        });\\n        if (jsonStr.indexOf('解析失败') > 0) {\\n            return 'toast://解析失败，请重试或切换线路~'\\n        }\\n        var json = JSON.parse(jsonStr);\\n        //log(\\\"json-->\\\" + json);\\n        if (json.code == 200) {\\n            //第一种方式调用网站自己的decode文件\\n            require(jxDecodeUrl);\\n            playUrl = getVideoInfo(json.url);\\n            //log('json.url:' + json.url)\\n            return toUrl(playUrl);\\n        } else {\\n            return 'toast://解析失败。'\\n        }\\n    } catch (e) {\\n        setError(e);\\n        return 'toast://嗅探异常，可能链接无法访问。'\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"lazy2\",\"path\":\"lazy2\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n\\t\\t    try {\\n\\t\\t        showLoading(\\\"正在进行检索，请稍候...\\\");\\n\\t\\t        var video = 'x5Rule://' + input + '@' + $.toString(() => {\\n\\t\\t            //fba.log(fba.getUrls())\\n\\t\\t            var urls = _getUrls()\\n\\t\\t            var exclude = /playm3u8|m3u8\\\\.tv|min\\\\.css|404\\\\.m3u8|\\\\.css|\\\\.jpg|\\\\.jpeg|\\\\.png|\\\\.gif/;\\n\\t\\t            var contain = /\\\\.mp4|\\\\.m3u8|\\\\.flv|\\\\.avi|\\\\.mpeg|\\\\.wmv|\\\\.mov|\\\\.rmvb|\\\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\\n\\t\\t            for (var i in urls) {\\n\\t\\t                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\\n\\t\\t                    // fy_bridge_app.log(urls[i])\\n\\t\\t                    if (/mgtv|sohu/.test(urls[i])) {\\n\\t\\t                        return urls[i] + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n\\t\\t                    } else if (/bili/.test(urls[i])) {\\n\\t\\t                        return urls[i] + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n\\t\\t                    } else if (/ixigua/.test(urls[i])) {\\n\\t\\t                        return urls[i] + \\\"#isVideo=true#\\\" + \\\"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n\\t\\t                    } else {\\n\\t\\t                        return urls[i]\\n\\t\\t                    }\\n\\t\\t                }\\n\\t\\t            }\\n\\t\\t        });\\n\\t\\t        return video;\\n\\t\\t    } catch (e) {\\n\\t\\t        setError(e);\\n\\t\\t        return 'toast://嗅探异常，可能链接无法访问。'\\n\\t\\t    }\\n\\n\\t\\t});\"}]","proxy":"","icon":"https://edu-30130.sz.gfp.tencent-cloud.com/ide/074c5400926f1ef81fc0cda77dd5f154.ico"},{"last_chapter_rule":"","title":"新浪","author":"道长","version":1,"type":"video","url":"hiker://empty##http://api.xinlangapi.com/xinlangapi.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=新浪"},{"last_chapter_rule":"","title":"卧龙资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://collect.wolongzyw.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=卧龙资源"},{"last_chapter_rule":"","title":"袋鼠影视","author":"道长&Happy小翼","version":1,"type":"video","url":"hiker://empty##http://app.daishu.one/qingdoujiekou.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=秒播"},{"last_chapter_rule":"","title":"月亮电影.dr","author":"狗浩啊","version":0,"type":"video","url":"hiker://empty##https://www.zqzdzj.com/vodshow/2/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([\n{一级分类:'body&&.show-zhankai',\n子分类:'body&&a',\n       分类链接:{\n        二次处理(u){\n        return u.replace(/type\\/(.*?)\\.html/, 'vodshow/$1-----------.html')}\n    }},\n{  一级分类:'body&&.swiper-wrapper',\n   子分类:'body&&a',\n},\n{\n一级分类:'body&&.title-a',\n   子分类:'body&&a:not(:matches(重置))',\n    }]);\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n混合(ui,\"voddetail\",\"gbook\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"https://www.zqzdzj.com/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.hidden&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: '.data&&Text;.data,1&&Text;.data,3&&Text;.data,4&&Text',\n    content: '.ecshow--span&&Text',\n    tabs: '.play_source_tab&&.swiper-slide',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.content_playlist,#id&&a',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule(() => {\n        return 'video://'+input\n})\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"月亮电影.dr(魔断)","author":"狗浩啊","version":0,"type":"video","url":"hiker://empty##https://www.zqzdzj.com/vodshow/2/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([\n{一级分类:'body&&.show-zhankai',\n子分类:'body&&a',\n       分类链接:{\n        二次处理(u){\n        return u.replace(/type\\/(.*?)\\.html/, 'vodshow/$1-----------.html')}\n    }},\n{  一级分类:'body&&.swiper-wrapper',\n   子分类:'body&&a',\n},\n{\n一级分类:'body&&.title-a',\n   子分类:'body&&a:not(:matches(重置))',\n    }]);\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n混合(ui,\"voddetail\",\"gbook\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"https://www.zqzdzj.com/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.hidden&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: '.data&&Text;.data,1&&Text;.data,3&&Text;.data,4&&Text',\n    content: '.ecshow--span&&Text',\n    tabs: '.play_source_tab&&.swiper-slide',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.content_playlist,#id&&a',\n    tab_id: '',\n};\n//以下代码来自cy大佬二级简封.js提取\nvar lazy = $('').lazyRule(() => {\n        try {\n            eval(fetch(JSON.parse(fetch('hiker://files/cache/MyParseSet.json')).cj));\n            let ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\n            if (!input.match(ts)) {\n                let From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\n                let 加密 = From.encrypt;\n                // let 来自 = From.from;\n                原链 = From.url;\n                //log(From)\n                if (加密 == '1') {\n                    原链 = unescape(原链);\n                } else if (加密 == '2') {\n                    原链 = unescape(base64Decode(原链));\n                }\n                if (/\\.mp4|\\.m3u8|\\.flv/.test(原链)) {\n                    return 原链\n                } else if (ts.test(原链)) {\n                    return aytmParse(原链); //爱优腾等地址\n                } else {\n                    return playParse.playerS(input); //盗版站地址\n                }\n            } else {\n                return aytmParse(input)\n            }\n        } catch (e) {\n        return 'video://'+input\n        }\n    })\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"乐动视频","author":"狗浩啊","version":0,"type":"video","url":"https://www.ledongtv.com/lds/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"ldMovie&ldTv&ldVariety&ldCartoon","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"body&&.module-item;strong&&Text;a&&href;.module-item-note&&Text;.module-info-item-content&&Text;img&&data-original","search_url":"https://www.ledongtv.com/ldso/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.module-info-item,2&&Text;.module-info-item,4&&Text;.module-info-item,5&&Text',\n    content: '',\n    tabs: 'body&&.tab-item',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.module-play-list-content,#id&&a',\n    tab_id: '',\n};\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"半次元追番","author":"狗浩啊","version":0,"type":"video","url":"https://www.bcyzf.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.stui-vodlist__box;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist__media&&li;h3&&Text;a&&href;.pic-text&&Text;;.lazyload&&data-original","search_url":"https://www.bcyzf.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: 'img&&data-original',\n    url: 'img&&data-original',\n    desc: '.data,0&&Text;.data,1&&Text',\n    content: '',\n    tabs: 'body&&h3:not(:matches(剧情简介|QA问答|猜你喜欢|周榜单|月榜单))',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.stui-content__playlist,#id&&a',\n    tab_id: '',\n};\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"看一看影视","author":"狗浩啊","version":0,"type":"video","url":"https://www.kyikan.cc/index.php?m=vod-list-id-fyclass-pg-fypage-order--by--class--year--letter--area--lang-.html","col_type":"movie_3","class_name":"全部电影&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&惊悚片&悬疑片&国产剧&港台剧&日韩剧&欧美剧&泰剧&海外剧&TV动漫&动漫电影&动漫剧场&国语动漫&TV综艺&音乐MV&4K电影","class_url":"1&5&6&7&8&9&10&11&16&18&20&21&12&13&14&15&19&32&23&24&25&36&26&31&40","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.p1;.name&&Text;img&&data-original;i&&Text;a&&href","searchFind":"body&&.p1;.name&&Text;a&&href;i&&Text;.actor&&Text;img&&data-original","search_url":"https://www.kyikan.cc/index.php?m=vod-search-pg-fypage-wd-**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'a,85&&Text',\n    img: '.lazy&&data-original',\n    url: '.lazy&&data-original',\n    desc: 'dt,2&&Text;dt,3&&Text;dd,0&&Text;dd,1&&Text',\n    content: '.js&&Text',\n    tabs: 'body&&.playfrom',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.videourl,#id&&a',\n    tab_id: '',\n};\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"可视影院","author":"","version":0,"type":"video","url":"https://www.ketv.cc/show/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&午夜场&纪录&||&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&微电影&||&国产剧&香港剧&韩国剧&欧美剧&日本剧&台湾剧&海外剧","class_url":"1&2&3&4&36&22&||&6&7&8&9&10&11&12&23&||&13&14&15&16&20&24&21","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大","sort_name":"最新&最热&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":".vodlist&&li;a&&title;.lazyload&&data-original;.pic_text&&Text;a&&href","searchFind":".vodlist&&li;a&&title;a&&href;.pic_text&&Text;p,-1&&Text;.lazyload&&data-original","search_url":"https://www.ketv.cc/search/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\njs:\nvar d = [];\nvar html = getResCode();\n\nvar arts = parseDomForArray(html,'.play_source_tab&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('',''))\n}\n\nvar conts = parseDomForArray(html, '.play_source&&.content_playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\n\ttitle: parseDomForHtml(html, '.data&&Text').replace('年份|','').replace('地区：','').replace('类型：',' ').substring(0, 18)+ '\\n' + parseDomForHtml(html,'.data,1&&Text').substring(0, 15)+'\\n'+parseDomForHtml(html, '.data,3&&Text').substring(0, 15),\n\tdesc:parseDomForHtml(html,'.data,2&&Text').substring(0, 16),\n\tpic_url: parseDom(html, '.lazyload&&data-original'),\n\turl: MY_URL,\n\tcol_type: 'movie_1_vertical_pic'\n});\n\n\nvar lazy= `@lazyRule=.js:decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url))`\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路：’’',\n            col_type: 'scroll_button',\n            url:'toast://点击名称切换线路'\n        })\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““'+tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\nfunction setLists(lists, index) {\n    d.push({\n\ntitle: '‘‘’’<font color=\"#003472\">选集</font></small>'+'‘‘’’<font color=\"#0aa344\"></font></small>',\n        \n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == ' - 逆序') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href')+ lazy,\n                col_type: 'flex_button'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({ title: '<br>', col_type: 'rich_text' });\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"在线电影吧","author":"狗浩啊","version":0,"type":"video","url":"https://www.zaixiandianying8.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"蓝光&电影&电视剧&综艺&动漫&动作片&喜剧片&爱情片&魔幻片","class_url":"37&1&2&3&4&6&7&8&22","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.myui-vodlist__box;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":".myui-vodlist__media&&li;.title&&Text;a&&href;.pic-text&&Text;.detail&&Text;.lazyload&&data-original","search_url":"https://www.zaixiandianying8.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.title&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.data&&Text',\n    content: '.sketch.content&&Text',\n    tabs: '.nav-tabs&&li',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.myui-content__list,#id&&li',\n    tab_id: '',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"90影院","author":"狗浩啊","version":0,"type":"video","url":"https://www.90r.cc/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&jiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.mo-paxs-5px.mo-cols-lg2;.mo-situ-name&&Text;.mo-situ-pics&&data-original;.mo-situ-rema&&Text;a&&href","searchFind":"body&&.mo-deta-info.mo-cols-rows;.mo-wrap-arow&&Text;a&&href;.mo-situ-rema&&Text;.mo-comd-block.mo-text-muted&&Text;.mo-situ-pics&&data-original","search_url":"https://www.90r.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: '.mo-situ-pics&&data-original',\n    url: '.mo-situ-pics&&data-original',\n    desc: '.mo-comd-block.mo-text-muted&&Text',\n    content: '',\n    tabs: 'body&&.mo-movs-btns ',\n    //tab_text:'h2&&Text',\n    lists: '.mo-pamd-5px,#id&&li',\n    tab_id: '',\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"酷爱影视Q","author":"狗浩啊","version":0,"type":"video","url":"https://100fzw.cn/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item')\nfor (var j in list) {\n    var img = pd(list[j], '.lazyloaded&&data-src') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.video-class&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://100fzw.cn/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"蚂蚁影视.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.4kvcd.com/fyclass/index_fypage_______.html","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺&经典片","class_url":"tv&mov&cartoon&fun&jingdianpian","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();\n","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php?s=vod-search-wd-**-p-fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=蚂蚁影视"},{"last_chapter_rule":"","title":"23影视.dr(魔断)","author":"狗浩啊","version":0,"type":"video","url":"https://222.186.150.32/vodshow/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&纪录片","class_url":"1&2&4&3&20","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".eclist&&.pack-ykpack;.pack-title&&Text;.eclazy&&data-original;span&&Text;a&&href","searchFind":"body&&.padd;.ecitem-name&&Text;a&&href;.ec-item&&Text;.ecitem-desc&&Text;.eclazy&&data-original","search_url":"https://222.186.150.32/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: 'img,3&&src',\n    url: 'img,3&&src',\n    desc: '.item-wrap&&Text',\n    content: '.desc_txt,0&&span,0&&Text',\n    tabs: 'body&&.channelname.swiper-slide',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.content_playlist,#id&&a',\n    tab_id: '',\n};\n以下来自cy大佬二级简封.js提取\nvar lazy = $('').lazyRule(() => {\n        try {\n            eval(fetch(JSON.parse(fetch('hiker://files/cache/MyParseSet.json')).cj));\n            let ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\n            if (!input.match(ts)) {\n                let From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\n                let 加密 = From.encrypt;\n                // let 来自 = From.from;\n                原链 = From.url;\n                //log(From)\n                if (加密 == '1') {\n                    原链 = unescape(原链);\n                } else if (加密 == '2') {\n                    原链 = unescape(base64Decode(原链));\n                }\n                if (/\\.mp4|\\.m3u8|\\.flv/.test(原链)) {\n                    return 原链\n                } else if (ts.test(原链)) {\n                    return aytmParse(原链); //爱优腾等地址\n                } else {\n                    return playParse.playerS(input); //盗版站地址\n                }\n            } else {\n                return aytmParse(input)\n            }\n        } catch (e) {\n             return 'video://'+input\n        }\n    })\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"落攻阁影视Q","author":"狗浩啊","version":0,"type":"video","url":"https://www.mfxs0.cn/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.mfxs0.cn/index.php/vod/search/page/fypage/wd/**.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"23影视","author":"狗浩啊","version":0,"type":"video","url":"https://222.186.150.32/vodshow/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&纪录片","class_url":"1&2&4&3&20","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".eclist&&.pack-ykpack;.pack-title&&Text;.eclazy&&data-original;span&&Text;a&&href","searchFind":"body&&.padd;.ecitem-name&&Text;a&&href;.ec-item&&Text;.ecitem-desc&&Text;.eclazy&&data-original","search_url":"https://222.186.150.32/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text',\n    img: 'img,3&&src',\n    url: 'img,3&&src',\n    desc: '.item-wrap&&Text',\n    content: '.desc_txt,0&&span,0&&Text',\n    tabs: 'body&&.channelname.swiper-slide',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.content_playlist,#id&&a',\n    tab_id: '',\n};\n\nvar lazy = $('').lazyRule(() => {\n        return 'video://'+input\n})\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"辉夜影视.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"http://a.huiye.icu/vodshow/fyclass--------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 12；； M2004J7AC Build/SP1A.210812.016；； wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/99.0.4844.88 Mobile Safari/537.36&&Cookie@__51uvsct__Jlj8skJ64yOrg2aA=1；； __51vcke__Jlj8skJ64yOrg2aA=91441845-051c-5d9b-90b8-31409c0649d3；； __51vuft__Jlj8skJ64yOrg2aA=1663831669625；； mx_style=white；； showBtn=true；； PHPSESSID=5k6222n63gmr12m91mfnqpvvgm；； __vtins__Jlj8skJ64yOrg2aA=%7B%22sid%22%3A%20%22861cb58f-41ca-5fd7-9562-3011c97c6428%22%2C%20%22vd%22%3A%2035%2C%20%22stt%22%3A%201316547%2C%20%22dr%22%3A%2067454%2C%20%22expires%22%3A%201663834786146%2C%20%22ct%22%3A%201663832986146%7D}","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"20&34&41&46","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"body&&.module-item;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=辉夜影视"},{"firstHeader":"class","last_chapter_rule":"","title":"小脸通红电影.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"http://www.3p3g.com/show/fyclass/page/fypage/.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"movie&tv&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".hl-vod-list&&li;.hl-item-title&&Text;a&&data-original;.remarks&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小脸通红电影"},{"firstHeader":"class","last_chapter_rule":"","title":"去看吧动漫.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.k6dm.com/index.php/vod/type/id/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"高清原碟&日漫&劇場&女频&美漫","class_url":"33&21&24&50&22","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".fed-list-info&&li;.fed-list-title&&Text;a&&data-original;.fed-list-remarks&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=去看吧动漫"},{"firstHeader":"class","last_chapter_rule":"","title":"NT动漫.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"http://www.ntyou.cc/type/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"日本&国产&欧美","class_url":"riben&zhongguo&omei","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".blockcontent1&&div;.cell_imform_name&&Text;img&&src;.newname&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=NT动漫"},{"firstHeader":"class","last_chapter_rule":"","title":"桜舞动漫❀.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.maigo.cc/vodshow/fyAll--------fypage---/","col_type":"movie_3_marquee","class_name":"日漫&国漫","class_url":"46&47","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".vodlist_wi&&li;center&&Text;a&&data-original;.pic_text&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=桜舞动漫❀"},{"last_chapter_rule":"","title":"我爱电影网Q","author":"","version":0,"type":"video","url":"http://www.5imv.cc/vodtype/fyAll-fypage/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&b站","class_url":"movie&tv&variety&comic&bili","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&div;.text-overflow&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.5imv.cc/vodsearch/page/fypage/wd/**/","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"樱花影视Q","author":"","version":0,"type":"video","url":"https://buosn.com/vodshow/fyclass--------fypage---/","col_type":"movie_3","class_name":"动作&喜剧&爱情&科幻&恐怖&国产动漫","class_url":"6&7&8&9&10&30","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://buosn.com/vodsearch/**----------fypage---/","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"核桃DR","author":"道长&狗浩啊","version":1,"type":"video","url":"http://kkkk.plus/vodshow/fyAll--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".module-page&&a;.module-poster-item-title&&Text;.lazyload&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/so/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=核桃"},{"firstHeader":"class","last_chapter_rule":"","title":"第一导航DR","author":"道长&狗浩啊","version":1,"type":"video","url":"hiker://empty##https://www.kanjux.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/neirong/','true');\n//一级书签('/neirong/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search.php?page=fypage&searchword=**&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=第一导航"},{"firstHeader":"class","last_chapter_rule":"","title":"传递影视DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.chuandi.cc/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".vodlist&&li;.vodlist_title&&Text;a&&data-original;.pic_text&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=传递影视"},{"firstHeader":"class","last_chapter_rule":"","title":"番茄影视DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.tjomet.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视","class_url":"1&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".hl-list-wrap&&li;.hl-item-title&&Text;a&&data-original;.hl-text-conch&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=番茄影视"},{"firstHeader":"class","last_chapter_rule":"","title":"小喵咪视频DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.320m.com/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&35","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".module-items&&a;.module-poster-item-title&&Text;img&&data-original;.module-item-douban&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.320m.com/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小喵咪视频"},{"last_chapter_rule":"","title":"双十影院","author":"","version":0,"type":"video","url":"https://www.1010dy1.com/type/fyclass-fypage/","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.1010dy1.com/search/page/fypage/wd/**/","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"米来影院DR","author":"道长&狗浩啊","version":1,"type":"video","url":"hiker://empty##https://www.qdytv.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/detail/','true');\n//一级书签('/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=米来影院"},{"firstHeader":"class","last_chapter_rule":"","title":"KOK影院DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.kokyy.com/koks/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺&纪录片","class_url":"kokdy&kokds&kokdm&kokzy&kokjl","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".hl-list-wrap&&li;.hl-item-title&&Text;a&&data-original;.hl-text-conch&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/kokso/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=KOK影院"},{"last_chapter_rule":"","title":"趣享影视Q","author":"狗浩啊","version":1,"type":"video","url":"https://www.quxw.net/vod/show/id/fyclass/page/fypage/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"20&21&22&23","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".module-items&&a;.module-poster-item-title&&Text;img&&data-original;.module-item-note&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.quxw.net/vod/search/page/fypage/wd/**/","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Gimy小鴨影音","author":"","version":0,"type":"video","url":"https://gimy.cc/filter/fyAll---/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"movie&drama&variety&anime","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-vodlist&&li;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://gimy.cc/search/page/fypage/wd/**.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"导航盘","author":"","version":0,"type":"video","url":"http://www.daohangpan.com/play/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".stui-pannel_bd&&div;.text-overflow&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.daohangpan.com/qvod/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"美女图片","author":"京梦","version":2,"type":"video","url":"hiker://empty","col_type":"movie_3","class_name":"向上滑动即可播放","class_url":"资源加载可能比较慢","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"http://xjj.6qmn.com/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true\n    }\n}])","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/08/72.png"},{"firstHeader":"class","last_chapter_rule":"","title":"AnFuns.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.anfuns.cc/type/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"新旧番剧&蓝光无修&动漫剧场&欧美动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".hl-vod-list&&li;.hl-item-title&&Text;a&&data-original;.remarks&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=AnFuns"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"酷客影院🤡","author":"缘分","version":0,"type":"video","url":"http://www.2kuke.com/list/fyclass_fypage.html?order=fysort","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&","class_url":"1&2&3&4&","area_name":"","area_url":"","sort_name":"按时间&按人气&","year_name":"","sort_url":"time&hit&","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.stui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pic-text&&Text'),\n            pic_url: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.stui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pic-text&&Text'),\n            pic_url: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.2kuke.com/search.php?searchword=**;post","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.stui-content__playlist');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.stui-content__detail&&p,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'').substring(0, 18),\n    desc: pdfh(html, '.stui-content__detail&&p,3&&Text'),\n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var url = pdfh(request(input),'iframe&&src')\\ntry {\\ntry {\\n    var url = pdfh(request(url,{}),'body&&script,1&&Html').match(/else[\\\\s\\\\S]*?src=\\\"(.*?)\\\"/)[1]\\nif (/m3u8|mp4/.test(url)) {\\n        return url\\n}} catch (e) {\\nvar url = pdfh(request(url),'iframe&&src')\\nvar url = request(url,{headers: {\\n                'Referer': MY_URL\\n            }}).match(/Source\\\\(\\\"(.*?)\\\"/)[1]\\n        return url\\n}} catch (e) {\\nvar url = pdfh(request(input),'iframe&&src')\\nvar url = request(url,{headers: {\\n                'Referer': MY_URL\\n            }}).match(/Source\\\\(\\\"(.*?)\\\"/)[1]\\n        return url\\nlog(url)\\n}\\n}, MY_HOME)\"}]","proxy":"","icon":"http://www.2kuke.com/static/favicon.ico"},{"last_chapter_rule":"","title":"云音乐(词)","author":"缘分","version":7,"type":"video","url":"http://121.4.78.106:4001/mv/all?offset=fypage@-1@*3@0#noRefresh#","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\npage = getUrl().split(\"=\")[1].split(\"#\")[0]\nlog(page)\nif (page == 00) {\n    let tabs = {\n        \"MV\": \"https://lanmeiguojiang.com/tubiao/q/169.png\",\n        \"歌单\": \"https://lanmeiguojiang.com/tubiao/q/167.png\",\n        \"排行榜\": \"https://lanmeiguojiang.com/tubiao/q/168.png\"\n    }\n    let yy = Object.entries(tabs)[0][0];\n\n    Object.entries(tabs).forEach(item => {\n        putMyVar('选中颜色', '#3CE68E');\n        xy = '<b><font color=' + getMyVar('选中颜色') + '>' + item[0] + '</font></b>';\n        d.push({\n            title: item[0] == getMyVar('mode', 'MV') && page == 00 ? xy : item[0],\n            img: item[1],\n            url: $().lazyRule((ta) => {\n                putMyVar(\"mode\", ta)\n                refreshPage()\n                return \"hiker://empty\"\n            }, item[0]),\n            col_type: \"icon_small_3\"\n        })\n    })\n}\nlet mode = getMyVar(\"mode\", \"MV\")\nif (mode == \"MV\") {\n    var html = getResCode();\n    var list = JSON.parse(html).data;\nlog(list)\n    for (var j in list) {\n        d.push({\n            title: list[j].name,\n            pic_url: list[j].cover + '@Referer=',\n            url: 'http://121.4.78.106:4001/mv/url?id=' + list[j].id + $('').lazyRule(() => {\n                var url = JSON.parse(request(input)).data.url\n                return url;\n            }),\n            col_type: 'movie_2',\n        });\n    }\n} else if (mode == \"歌单\") {\n    var html = request('http://121.4.78.106:4001/personalized');\n    var list = JSON.parse(html).result;\n    for (var j in list) {\n        let title = list[j].name;\n        d.push({\n            title: title,\n            pic_url: list[j].picUrl,\n            url: 'http://121.4.78.106:4001/playlist/detail?id=' + list[j].id + '#gameTheme#' + $('').rule(() => {\n                eval(JSON.parse(fetch('hiker://page/gd')).rule);\n            }),\n\n        });\n    }\n} else if (mode == \"排行榜\") {\n    var html = request('http://121.4.78.106:4001/toplist');\n    var list = JSON.parse(html).list;\n    for (var j in list) {\n        let title = list[j].name;\n       var url = 'http://121.4.78.106:4001/playlist/detail?id=' + list[j].id;\n        d.push({\n            title: title,\n            pic_url: list[j].coverImgUrl,\n            url: 'http://121.4.78.106:4001/playlist/detail?id=' + list[j].id + $('').rule(()=> {\n                eval(JSON.parse(fetch('hiker://page/phxq')).rule);\n            },url),\n\n        });\n    }\n}\ntry {\nlet myVersion = MY_RULE.version;\nlet newVersion = JSON.parse(fetchPC(\"http://hiker.nokia.press/hikerule/rulelist.json?id=5702\", {\n    timeout: 1000\n})).version;\nif (newVersion > myVersion&&mode == \"MV\"&&page == 00) {\n    confirm({\n        title: '更新提示',\n        content: '检测到你的规则版本小于服务器版本，是否立即更新？',\n        confirm: () => {\n            return \"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ5LqR6Z+z5LmQKOivjSnjgJHvv6Vob21lX3J1bGVfdXJs77+laHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NTcwMg==\"\n        }, cancel:()=>{}\n    })\n}\n} catch (e) {}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = JSON.parse(html).result.songs;\nfor (var j in list) {\nvar play = 'http://music.163.com/api/song/detail/?id=' + list[j].id + '&ids=%5B' + list[j].id + '%5D';\n    var pic = request(play).match(/blurPicUrl\":\"(http.*?jpg)/)[1]\n    d.push({\n        title: list[j].name,\n        desc: list[j].ar[0].name,\n        img: pic,\n        url: 'http://121.4.78.106:4001/song/url?id='+list[j].id+$('').lazyRule(() => {\nvar url = JSON.parse(request(input)).data[0].url\ninput = input.replace('song/url','lyric')\nvar lrc = JSON.parse(request(input)).lrc.lyric\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n                })\n}),\n    });\nsetResult(d)","search_url":"http://121.4.78.106:4001/search?keywords=**","group":"视频","detail_col_type":"card_pic_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_icon\",\"name\":\"歌单二级\",\"path\":\"gd\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\nvar pic = JSON.parse(html).playlist.coverImgUrl;\\nd.push({      \\n        img: pic,\\n        url: pic,\\ncol_type: 'pic_1_full'\\n})\\nvar list = JSON.parse(html).playlist.tracks;\\nfor (var j in list) {\\n    d.push({\\n        title: list[j].name,\\n        desc: list[j].ar[0].name,\\n        img: list[j].al.picUrl,\\n        url: 'http://121.4.78.106:4001/song/url?id='+list[j].id+$('').lazyRule(() => {\\nvar url = JSON.parse(request(input)).data[0].url\\ninput = input.replace('song/url','lyric')\\nvar lrc = JSON.parse(request(input)).lrc.lyric\\n\\nreturn JSON.stringify({\\n                    urls: [url+'#isMusic=true#'],\\n                    lyric: lrc\\n                })\\n}),\\ncol_type: 'icon_2'\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"text_icon\",\"name\":\"排行二级\",\"path\":\"phxq\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\nvar list = JSON.parse(html).playlist.tracks;\\nfor (var j in list) {\\n    d.push({\\n        title: list[j].name,\\n        desc: list[j].ar[0].name,\\n        img: list[j].al.picUrl+ '@Referer=',\\n        url: 'http://121.4.78.106:4001/song/url?id='+list[j].id+$('').lazyRule(() => {\\nlog(input)\\nvar url = JSON.parse(request(input)).data[0].url\\ninput = input.replace('song/url','lyric')\\nvar lrc = JSON.parse(request(input)).lrc.lyric\\n\\nreturn JSON.stringify({\\n                    urls: [url+'#isMusic=true#'],\\n                    lyric: lrc\\n                })\\n}),\\ncol_type: 'icon_2',\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"更新\",\"path\":\"newVersion\",\"rule\":\"js:\\nif (page == 00) {\\nvar hitokoto = JSON.parse(fetch('https://v1.jinrishici.com/all.json', {}));\\nd.push({\\n    title: hitokoto.content,\\n    desc: '类别：' + hitokoto.category +\\n        '\\\\n作者：' + hitokoto.author + '《' + hitokoto.origin + '》',\\n    col_type: 'pic_1_card',\\n    url: \\\"http://m.yugaopian.cn/\\\",\\n    pic_url: 'http://api.btstu.cn/sjbz/api.php?lx=fengjing&format=images&_tt='+new Date().getTime()\\n});\\n}\\nfor (var b = 0; b < 5; b++) {\\nd.push({\\n    col_type: 'big_blank_block'\\n})\\n}\\nlet newVersion;\\n    let myVersion = MY_RULE.version;\\n    try {\\n        newVersion = JSON.parse(fetchPC(\\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5702\\\", {\\n            timeout: 1000\\n        })).version;\\n        log('版本号:' +myVersion);\\n    } catch (e) {\\n        toast(\\\"道长仓库抽风了，本次未检测到新版信息\\\");\\n        newVersion = myVersion;\\n    }\\n    let isUpdate = Number(newVersion) > Number(myVersion);\\n    let isVer = Number(newVersion) === Number(myVersion);\\n    if (isUpdate) {\\n        log('有新版本:' + newVersion + ',当前:' + myVersion);\\n    }\\n    d.push({\\n        title: isUpdate ? \\\"🆙新版本\\\" : \\\"已是最新版\\\",\\n        url: \\\"rule://5rW36ZiU6KeG55WM6aaW6aG16aKR6YGT6KeE5YiZ44CQ5LqR6Z+z5LmQKOivjSnjgJHvv6Vob21lX3J1bGVfdXJs77+laHR0cDovL2hpa2VyLm5va2lhLnByZXNzL2hpa2VydWxlL3J1bGVsaXN0Lmpzb24/aWQ9NTcwMg==\\\",\\n        col_type: \\\"text_2\\\"\\n    });\\nfor (var b = 0; b < 10; b++) {\\nd.push({\\n    col_type: 'big_blank_block'\\n})\\n}\\n    d.push({\\n        title: '有新版本:' + newVersion + ',当前:' + myVersion,\\n         col_type: \\\"text_center_1\\\"\\n})\\nsetResult(d)\"}]","proxy":"","icon":"http://pp.myapp.com/ma_icon/0/icon_1168851_1660565782/256"},{"firstHeader":"class","last_chapter_rule":"","title":"动漫蛋.DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.dm0.cc/type/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"日本&国产&动漫电影&欧美","class_url":"ribendongman&guochandongman&dongmandianying&omeidongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".stui-vodlist&&li;.text-overflow&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n//自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=动漫蛋"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.hl-tabs-box')[0];\nvar list = pdfa(conts, 'body&&a:not(:matches(全部))');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"0855影视🤡","author":"缘分","version":0,"type":"video","url":"https://www.085512.com/vod/show/id/vod/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.hl-nav'\nconst 拼接分类 = 'body&&.hl-filter-list,1:||.hl-rb-title'\nconst 小类定位 = 'body&&a:not(:matches(首页|伦|留))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace('f', 'vod/show/id').replace(/id\\/(\\w+)\\.html/, 'id/$1/') + 'page/' + page + '.html'\n    true_url = true_url.replace(/htmlpage.*/, '').replace(/(year\\/\\d+\\.)/, 'page/' + page + '/$1html')\n}\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.hl-vod-list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.hl-lc-1&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: true_url.indexOf('/mt/') > -1 ? pd(list[j], 'a&&href') + $('').lazyRule(() => {\n            let html = request(input);\n            let arr = pdfa(html, \".hl-plays-list&&li\");\n            return \"pics://\" + arr.map(it => {\n                var url = pd(it, \"a&&href\");\n                var pic = pd(request(url), '.tupic&&img&&src') + '@Referer=';\n                return pic;\n            }).join(\"&&\")\n        }) : pd(list[j], 'a&&href') + '#immersiveTheme#',\n   });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.hl-one-list&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], 'a&&Text'),\n            pic_url: pd(list[j], 'a&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.085512.com/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, 'body&&.hl-tabs-btn');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.hl-tabs-box');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a:not(:matches(全部))'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.hl-col-xs-12,7&&Text').substring(0, 15) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'.hl-col-xs-12,4&&Text').substring(0, 18),\n    desc: pdfh(html, '.hl-col-xs-12,2&&Text'),\n    img: pd(html, \n'.hl-lazy&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.hl-lazy&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n        return url\\n}, MY_HOME)\"}]","proxy":"","icon":"https://www.085512.com/template/0855/asset/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.module-play-list-content')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"麻雀视频🤡","author":"缘分","version":0,"type":"video","url":"https://v.mqtv.cc/w/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|下载|盘|热|新))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/t\\/(\\d+)/, 'w/$1.html').replace('.html', /page/ + page + '.html')\n}\nlog(true_url)\nvar html = fetch(true_url)\n\n\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nconst list = parseDomForArray(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img&&data-original')+'@Referer=',\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://v.mqtv.cc/s**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:matches(首页|更新|榜|APP))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n        return url\\n}, MY_HOME)\"}]","proxy":"","icon":"https://v.mqtv.cc/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"有声听书网","author":"缘分","version":0,"type":"video","url":"https://www.ysts5.com/book/fyAll/lastupdate/fypage.html","col_type":"movie_1_left_pic","class_name":"玄幻有声&灵异有声&都市有声&军事有声&百家讲坛&网游竞技&长篇评书&","class_url":"xuanhuan&lingyi&dushi&junshi&bjjt&jingji&pingshu&","area_name":"相声小品&综艺娱乐&儿童故事&职场有声&其他有声&","area_url":"xiangsheng&yule&ertong&tongren&qita&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.list-works&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.list-book-cs&&a&&Text'),\n            pic_url: pd(list[j], 'img&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href')+'pfypage.html' + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\ntry {\n    if (MY_PAGE == 1) {\n        d.push({\n            title: pdfh(html, '.book-info&&dd,3&&Text'),\n            desc: pdfh(html, '.book-info&&dd,4&&Text'),\n            pic_url: pd(html, '.lazy&&data-original') + '@Referer=',\n            url: pd(html, '.lazy&&data-original'),\n            col_type: 'movie_1_vertical_pic_blur',\n            extra: {\n                gradient: true\n            }\n        });\n    }\n} catch (e) {}\n\ntry {\n    var list = pdfa(html, '.playlist&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text') .replace(/.*?(\\d+).*/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + $('').lazyRule(() => {\n                var url = pd(request(input), 'iframe&&src');\n                var url = request(url, {\n                    headers: {\n                        'Referer': input,\n                    }\n                })\n                var url = url.match(/mp3:'(.*?)'/)[1]\nlog(url)\n                if (/\\.m4a|\\.mp3/.test(url)) {\n                    return url\n                } else {\n                    return 'video://' + input + '#isMusic=true#'\n                }\n            })\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://m.ysts5.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.scroll-box-y')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nvar title = pdfh(list[list.length,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title);","title":"爱看影视🤡","author":"缘分","version":2,"type":"video","url":"https://ikan6.vip/vodshow/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequireCache('https://pastebin.com/raw/D2iimVHk');\n大类定位 = 'body&&.nav-list'\n拼接分类 = 'body&&.myui-screen__list'\n小类定位 = 'body&&a:not(:matches(首页|APP|热榜|专题|周表|番剧|放映厅|国创))'\n分类标题 = 'a&&Text'\n分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/vodtype\\/(\\d+)\\//, 'vodshow/$1-----------/').replace(/---\\//, page+'---/' ).replace(/(---\\d+\\/)/, page + '$1')\n}\nvar html = request(true_url)\nvar 列表 = '.myui-vodlist&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.pic-text&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n一级1.A()","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html=getResCode();\neval(JSON.parse(fetch('hiker://page/yzm')).rule);\ntry {\n    var list = pdfa(html, '.myui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pic-text&&Text'),\n            pic_url: pd(list[j], 'a&&data-original') + '@Referer=',\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://ikan6.vip/vodsearch/**----------fypage---/","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('（优先推荐）', '').replace('资源广告请无视。', '').split('解析')[0])\n}\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\ntry {\nvar 分类 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace('类型：', '');\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text').substring(0, 15);\nvar 导演 = parseDomForHtml(html, '');\nvar 状态 = parseDomForHtml(html,'.myui-content__detail&&p,2&&Text');\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n//var 简介 = parseDomForHtml(html, '').replace('简介：', '');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n})} catch (e) {}\n\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var title = pdfh(request(input), 'Text').split(\\\"-\\\")[0];\\n    var url = html.url;\\n    url = unescape(base64Decode(url))\\n    url = url.substring(8, url.length - 8);\\n    eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n    var jx = MacPlayerConfig.parse;\\n    url = jx + url + '&next=&tittle=' + title;\\n    url = request(url, {}).match(/getrandom\\\\('(.*?)'/)[1];\\n    url = unescape(base64Decode(url)).match(/http.*/)[0];\\n    url = url.substring(0, url.length - 8);\\n    return url\\n}, MY_HOME)\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"if (html.indexOf('系统安全验证') > -1) {\\n\\n    let headers = {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n        \\\"Referer\\\": MY_URL\\n    };\\n    eval(JSON.parse(request('hiker://page/jxhs?rule=模板·Q')).rule);\\n    evalPrivateJS(ssyz);\\n\\n    let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n    fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n        headers: headers,\\n        method: 'POST'\\n    })\\n    var yz = !/search/.test(MY_URL) ? true_url : MY_URL\\n    html = fetch(yz, {\\n        headers: headers\\n    });\\n}\"}]","proxy":"","icon":"https://sf3-ttcdn-tos.pstatp.com/obj/web.business.image/202111275d0d163482774cba40aabd5e"},{"last_chapter_rule":"","title":"好恐怖🤡","author":"缘分","version":1,"type":"video","url":"https://wap.haokongbu1.com/fyAll/top_fypage.html[firstPage=https://wap.haokongbu1.com/fyAll/top.html]","col_type":"movie_3","class_name":"动作片&喜剧片&科幻片&恐怖片&战争片&微电影&纪录片","class_url":"dongzuopian&xijupian&kehuanpian&kongbupian&zhanzhengpian&weidianying&m_jlp","area_name":"国产&香港&台湾&日本&韩国&欧美&泰国&海外","area_url":"guochanju&gangju&taiwanju&riju&hanju&oumeiju&taiguoju&haiwaiju","sort_name":"","year_name":"高清&动漫&","sort_url":"","year_url":"gaoqing&donghuapian&","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.clearfix&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   '.name&&Text'),\n       desc:parseDomForHtml(list[j], '.typeset&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\n//拼接翻页\nvar ss = MY_URL.split('#')[0] + JSON.parse(fetch('https://ms.haokongbu1.com/e/search/',{headers:{'content-type':'application/x-www-form-urlencoded'},body:MY_URL.split('#')[1],method:'POST',redirect:false, withHeaders:true})).headers.location[0].split('=')[1];\ntry{\nvar list = parseDomForArray(fetch(ss,{}), '.clearfix&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   '.name&&Text'),\n       desc:parseDomForHtml(list[j], '.typeset&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://ms.haokongbu1.com/e/search/result/?searchid=#show=title,ftitle,actor&keyboard=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\ntry{\nvar playhtml = request('https://wap.haokongbu1.com' + pdfh(html, '.online&&a&&href'));\n\n//线路名列表的定位\nvar arts = parseDomForArray(playhtml, '.source_item&&span');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('超清不卡，推荐NO.1','').replace('资源广告请无视。','').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(playhtml, 'body&&.tabc');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n}catch(e){}\nvar 主演 = parseDomForHtml(html, 'dt,1&&Text').substring(0,25);\n\nvar 导演 = parseDomForHtml(html, '');\n\nvar 分类 = parseDomForHtml(html, '');\n\nvar 状态 = parseDomForHtml(html, '.bz&&Text');\n\nvar 图片 = parseDom(html, '.ct-l&&.lazy&&src')+ '@Referer=https://wap.haokongbu1.com';\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 主演 + '\\n' + 导演,\n    desc: 分类 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n\nif (getMyVar('yn', 'no') == 'no') {\n    var kg = '‘‘’’<font color=\"#33cccc\">展开磁力列表 ▴</font>';\n} else {\n    var kg = '‘‘’’<font color=\"#33cccc\">关闭磁力列表 ▾</font>';\n}\n\nd.push({\n    title: kg,\n    url: $('#noLoading#').lazyRule(() => {\n        if (getMyVar('yn', 'no') == 'yes') {\n            putMyVar('yn', 'no');\n        } else {\n            putMyVar('yn', 'yes');\n        }\n        refreshPage(true);\n        return '#noHistory#hiker://empty'\n    }),\n    col_type: 'text_1'\n})\n\nif (getMyVar('yn', 'no') == 'no') {\n    d.push({\n        title: '',\n        url: '',\n        col_type: 'big_blank_block'\n    });\n} else {\nvar lista = parseDomForArray(html, '.fbaidu&&a:not(:matches(网盘|在线观看))');\n    for (var i in lista) {\n        d.push({\n            title: parseDomForHtml(lista[i], 'Text'),\n            pic_url: 'http://pic.pdowncc.com/skin/img/6.jpg',\n            url: parseDom(lista[i], 'a&&href'),\n           col_type:  'avatar'\n        })\n    }};\n\nfor (var b = 0; b < 4; b++) {\nd.push({\n    col_type: 'big_blank_block'\n})\n}//空格\ntry{\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});}catch(e){}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var url = decodeURIComponent(request(input).match(/ponent\\\\('(.*?)'/)[1]);\\n    var urls = url.replace('https://img.mandudu.com/player/?url=', '')\\n    if (/.m3u8|.mp4/.test(urls)) {\\n        return urls\\n    } else {\\n        var url = request(url).match(/ urls = \\\"(.*?)\\\"/)[1];\\n        return url\\n    }\\n    /*  showLoading(\\\"动态解析规则中,请稍后\\\");\\n       var video = 'x5Rule://' + url  + '@' + $.toString(() => {\\n           var urls = _getUrls();\\n           var exclude = /playm3u8|m3u8\\\\.tv|min\\\\.css|404\\\\.m3u8/;\\n           var contain = /\\\\.mp4|\\\\.m3u8|\\\\.flv|\\\\.avi|\\\\.mpeg|\\\\.wmv|\\\\.mov|\\\\.rmvb|\\\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\\n           for (var i in urls) {\\n               if (!exclude.test(urls[i]) && contain.test(urls[i])) {\\n                   //fy_bridge_app.log(urls[i])\\n                   if (/mgtv|sohu/.test(urls[i])) {\\n                       return urls[i] + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n                   } else if (/bili/.test(urls[i])) {\\n                       return urls[i] + \\\";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\\\";\\n                   } else {\\n                       return urls[i]\\n                   }\\n               }\\n           }\\n       }) //video\\n       return video*/\\n});\"}]","proxy":"","icon":"https://wap.haokongbu1.com/favicon.ico"},{"last_chapter_rule":"","title":"百乐米.h5","author":"缘分","version":20220919,"type":"video","url":"https://bailemi.com/fyclassfypage","col_type":"card_pic_3","class_name":"歌单&歌手&歌曲&","class_url":"dance/songsheet/search?=＆＆page=&index.php/singer/search?=＆＆page=&song/id_1_&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    input = input.replace(/http.*p(\\d+)\\.html/, 'https://bailemi.com/dance/Playsong/data?id=$1')\n    var url = request(input, {\n        headers: {\n            'Referer': MY_URL\n        }\n    }).match(/url\":\"(.*?)\"/)[1]\n    var url = url.replace(/\\\\/g, '')\n\n    //log(url);\n    return url\n})\ntry {\n    var list = pdfa(getResCode(), '.s_list_songs||.sq_track_slider||#artists_search_result&&.list-recommended||.track||.artist_list');\n    for (var j in list) {\n        let title = pdfh(list[j], 'a&&title')\n        d.push({\n            title: title,\n            desc: pdfh(list[j], 'a,1&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: MY_URL.indexOf('dance') > -1 ? pd(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\" : MY_URL.indexOf('search') > -1 ? pd(list[j], 'a&&href').replace('show', 'music/id') + '/fypage' + \"#noLoading##gameTheme##noRefresh##background#\" : pd(list[j], 'a&&href') + lazy,\n            extra: {\n                newWindow: true,\n                windowId: title\n            }\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy=$('').lazyRule(() => {\ninput=input.replace(/http.*p(\\d+)\\.html/,'https://bailemi.com/dance/Playsong/data?id=$1')\nvar url=request(input,{headers: {\n                'Referer': 'https://bailemi.com/'\n            }}).match(/url\":\"(.*?)\"/)[1]\nvar url=url.replace(/\\\\/g,'')\nlog(url);\nreturn url\n})\ntry {\n    var list = pdfa(getResCode(), '.s_list_songs&&.s_lsongs_child');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], 'a,1&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: pd(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://bailemi.com/dance/search?key=**&page=fypage","group":"视频","detail_col_type":"icon_2","detail_find_rule":"js:\nvar d = [];\n\nvar lazy = $('').lazyRule(() => {\n    input = input.replace(/http.*p(\\d+)\\.html/, 'https://bailemi.com/dance/Playsong/data?id=$1')\n    var url = request(input, {\n        headers: {\n            'Referer': MY_URL\n        }\n    }).match(/url\":\"(.*?)\"/)[1]\n    //log(url);\n    return url\n})\nlet 传输列表 = []\nvar list = pdfa(getResCode(), '#topic_list||.s_list_songs&&tr:not(:matches(全选))||.s_lsongs_child');\n\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let title = pdfh(list[j], 'a&&title');\n    let first = pdfh(list[0], 'a&&title');\n    let desc = pdfh(list[j], '.lazyload&&Text');\n    let url = pd(list[j], 'a&&href') + lazy;\n    let img = pd(getResCode(), '.al_art_img||.play-img&&style||src');\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'text_1'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bailemi.com/favicon.ico"},{"last_chapter_rule":"","title":"爱音人.h5","author":"缘分","version":20220919,"type":"video","url":"http://www.iyinren.com/list/fyAll/fypage/","col_type":"text_1","class_name":"专 辑&歌 手&好 歌&新 歌&","class_url":"2&1&13&5&","area_name":"古典乐&电子乐&钢琴曲&影视原声&乡村民谣&胎教音乐&天籁之声&手机铃声&新世纪&催眠曲&","area_url":"14&15&16&17&18&19&20&21&22&23&","sort_name":"","year_name":"人气排行&推荐排行&好评排行&收藏排行&下载排行&免费排行","sort_url":"","year_url":"6&7&8&10&11&12","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.musicList||.pubList&&li');\n    for (var j in list) {\n   let title = pdfh(list[j], 'strong&&Text');\n        d.push({\n            title: title,\n            desc: pdfh(list[j], 'em&&Text'),   \n            pic_url: pd(list[j], 'img&&src'),\n            url: MY_URL.indexOf('list/1/') > -1 ? pd(list[j], 'a&&href')+\"#noLoading##gameTheme##noRefresh##background#\":MY_URL.indexOf('list/2/') > -1 ? pd(list[j], 'a&&href')+\"#noLoading##gameTheme##noRefresh##background#\":pd(list[j], '.t-n&&Text').split(\"|\")[4]+'.mp3'+'@lazyRule=.js:input',\nextra: {\n                newWindow: true,\n                windowId: title\n            },\ncol_type: MY_URL.indexOf('list/1/') > -1 ? 'icon_round_4':MY_URL.indexOf('list/2/') > -1 ? 'movie_1_left_pic':'',\n\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\nvar list = pdfa(getResCode(), '.musicList&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            desc: pdfh(list[j], 'em&&Text'),          \n            url: pd(list[j], '.t-n&&Text').split(\"|\")[4]+'.mp3'\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.iyinren.com/search.php?action=keyword&key=**&pages=fypage","group":"视频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = []; \nlet 传输列表 = []\n let list = pdfa(getResCode(), '.musicList&&li');  \n\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let first = pdfh(list[0], 'a&&Text');\n    let title = pdfh(list[j], 'a&&Text');   \n    let desc = pdfh(list[j], 'em&&Text');\n    let img = pd(getResCode(), '#singerPic&&src');\n    let url = pd(list[j], '.t-n&&Text').split(\"|\")[4]+'.mp3';\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.iyinren.com/favicon.ico"},{"last_chapter_rule":"","title":"农民影视🤡","author":"缘分","version":0,"type":"video","url":"https://v.emsdn.cn/vod-list-id-fyclass-pg-fypage-order--by-fysort-class-0-year-fyyear-letter--area--lang-.html;{User-Agent@Mozilla/5.0 (Linux；； Android 11；； Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36}","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"全部\n&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&1983&1982&1981&1980","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&1999&1998&1997&1996&1995&1994&1993&1992&1991&1990&1989&1988&1987&1986&1985&1984&1983&1982&1981&1980","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.resize_list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'a&&title'),\n       desc:parseDomForHtml(list[j], '.sBottom&&Text'),\n       pic_url: parseDom(list[j], 'img&&data-echo')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '#data_list&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   '.sTit&&Text'),\n       desc:parseDomForHtml(list[j], '.sStyle&&Text'),\n       content: parseDomForHtml(list[j],\n'.sDes&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://v.emsdn.cn/index.php?m=vod-search&wd=**","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n   var urls = _getUrls()\n   for (var i in urls) {\n       if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n          fy_bridge_app.log(urls[i])\n          return urls[i]\n       }\n   }\n}))\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n//线路名列表的定位(列表规则)\nvar arts = parseDomForArray(html, '#leftTabBox&&.hd&&li');\n\n//线路名列表名称的定位(节点规则)\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位(列表规则)\nvar conts = parseDomForArray(html, 'body&&.numList');//从第二个开始定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))//第一集定位(节点规则)\n}\n\nvar 主演 = parseDomForHtml(html, '.page-bd&&.desc_item,1&&Text');\n\nvar 类型 = parseDomForHtml(html, '.page-bd&&.desc_item,2&&Text');\n\nvar 更新 = parseDomForHtml(html, '.page-bd&&.desc_item,3&&Text');\n\nvar 导演 = parseDomForHtml(html, '.page-bd&&.desc_item,4&&Text');\n\nvar 图片 = parseDom(html, 'img&&src');\n\nvar 简介 = parseDomForHtml(html, '.detail-con&&p&&Text').replace('简 介：','');\n\nvar 图片链接 = getUrl();\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 类型,\n    desc: 更新 + '\\n' + 导演,\n    pic_url: 图片,\n    url: 图片链接,\n    col_type: ''\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\nif(getVar(\"ms\")==\"1\"){\nvar Color =\"red\";\n}else{\nvar Color=\"#098AC1\"\n}\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n   title:(getVar(\"ms\")==\"1\"?getHead(\"♥️探嗅\"):getHead(\"💎免嗅\")),\n url:\"hiker://empty\"+`@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n  col_type: 'scroll_button',\n\n})\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#0aa344\">正序↑</font></small>' + '<small><font color=\"#ff4c00\">反序↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">列表:</font></small>' + '<small><font color=\"#ff4c00\">正序↑</font></small>' + '<small><font color=\"#0aa344\">反序↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy1 = $('').lazyRule(() => {\\nfunction x5rule(jiexurl, srcurl) {\\n\\n    showLoading(\\\"链接检索中，请稍候...\\\");\\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\\n        //fba.log(fba.getUrls());\\n        var urls = _getUrls();\\n        if (window.count == null || window.count == undefined) {\\n            window.count = 0\\n        }\\n        if (window.count >= 23) {\\n            return srcurl\\n        }\\n        window.count = window.count + 1;\\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\\n                if (!srcurl) {\\n                \\tfba.log('尝试跳防盗验证一');\\n                    location.href = location.href;\\n                } else {\\n                \\tfba.log('尝试跳防盗验证二');\\n                    location.href = srcurl\\n                }\\n            };\\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\\n            if (urls.length < 1) {\\n                fba.hideLoading();\\n                return 'toast://检索失败，可能链接无法访问。';\\n            } else if (urls.length == 1) {\\n                fba.log('尝试直链与JSON解析');\\n                if (urls[0].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[0].match(/\\\\.html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    //fy_bridge_app.log(urls[0])\\n                    if (urls[0].indexOf('bilivideo') != -1) {\\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                    } else {\\n                        return urls[0]\\n                    };\\n                } else if (location.href.match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !location.href.match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                    return location.href;\\n                } else {\\n                    var html = fba.fetch(location.href, {});\\n                    if (!/\\\\<meta/.test(html)&&!/\\\\<html/.test(html)) {\\n                    return JSON.parse(html).url;\\n                    }else{\\n                    return location.href}\\n                };\\n            } else {\\n                fba.log('日志检索第' + window.count + '次');\\n                for (var i in urls) {\\n                    if (urls[i].match(/dycdn\\\\-tos\\\\.pstatp|\\\\.m3u8|\\\\.mp4|\\\\.flv|netease\\\\.com|video_mp4|type\\\\=m3u8|pt\\\\=m3u8/) && !urls[i].match(/html|m3u8\\\\.tv|\\\\&next|ac\\\\=dm|\\\\=http|https\\\\:\\\\/\\\\/[\\\\d]\\\\.m3u8|\\\\?url\\\\=\\\\/m3u8/)) {\\n                        //fy_bridge_app.log(\\\"@@#\\\" +urls[i])\\n                        if (urls[i].indexOf('bilivideo') != -1) {\\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\\n                        } else if (urls[i].indexOf('ojbk') != -1) {\\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\\n                        } else if (urls[i].indexOf('wkfile') != -1) {\\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\\n                        } else {\\n                            return urls[i] + '#isVideo=true#'\\n                        }\\n                    }\\n                } //end for i\\n            }\\n        }\\n    }, srcurl);\\n    return video\\n}\\n//结束x5rule强力嗅探\\n    return x5rule(input, input);\\n});\\nvar lazy2= \\\"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\nvar lazy = (getVar(\\\"ms\\\") == \\\"1\\\" ? lazy2 : lazy1)\"}]","proxy":"","icon":"http://api.wpbom.com/api/ico/get.php?url=https://v.emsdn.cn"},{"last_chapter_rule":"","title":"小视频","author":"xyz2006","version":2,"type":"video","url":"hiker://empty$$$fyclass","col_type":"icon_4","class_name":"丝瓜&草莓&向日葵","class_url":"https://api.sgbe2.xyz&https://api.cmbe2.xyz/&https://api.xrkapi004.xyz","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nputVar('host', MY_URL.split('$$$')[1]);\nvar res = {};\nvar imgs = ['qTJ4XR.png','qTJIn1.png','qTJhc9.png','qTJf1J.png','qTJWp4.png',\n'qTJo0x.png','qTJT76.png','qTJHAK.png','qTJbtO.png','qTJqhD.png','qTJO9e.png'];\nvar list = JSON.parse(fetch(getVar('host')+'/api/videosort/')).rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: getVar('host')+'/api/videosort/'+data.id+'?orderby=new&page=fypage',\n    pic_url: 'https://s1.ax1x.com/2022/04/03/' + imgs[Math.floor(Math.random()*imgs.length)],\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar html = fetch(getVar('host')+'/api/videosort/0?page=fypage&serach='+MY_URL.split('$$$')[1]+'&uuid=674d0eb77a5ff867&device=0');\nvar list = JSON.parse(html).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: '时长：'+data.playtimes+'\\n\\n更新：'+data.updated_at,\n    col_type: 'movie_1_vertical_pic'\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"hiker://empty$$$**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar list = JSON.parse(getResCode()).rescont.data;\nvar items = list.map(data => ({\n    title: data.title,\n    url: getVar('host')+'/api/videoplay/'+data.id+'?uuid=724b9c9fdd5e7b6f@lazyRule=.js:JSON.parse(fetch(input)).rescont.videopath',\n    desc: '时长：'+data.playtimes+'\\n\\n更新：'+data.updated_at,\n    col_type: 'movie_1_vertical_pic'\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/30.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"lol影院DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.l0l.tv/index.php/vod/show/id/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺&b站","class_url":"1&2&3&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".list-a&&li;.title&&Text;.lazy&&data-original;.list-tag&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n//自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=lol影院"},{"firstHeader":"class","last_chapter_rule":"","title":"剧白白.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.jubaibai.me/type/fyclass-fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫&纪录片&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&动画片&国产剧&港台剧&日韩剧&欧美剧&泰国剧","class_url":"dianying&dianshiju&zongyi&dongman&jilupian&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&donghuapian&guochanju&gangtaiju&rihanju&oumeiju&taiguoju","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.jubaibai.me/vodsearch.html?wd=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=剧白白"},{"firstHeader":"class","last_chapter_rule":"","title":"HANABI影院.dr","author":"道长&ssl","version":1,"type":"video","url":"https://www.hanabi.tv/vodshow/2/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首|表|更|榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\.html/,'vodshow/$1.html').replace('.html', '/page/'+page + '.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.hanabi.tv/vodsearch**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.hanabi.tv/upload/mxprocms/20220731-1/45e594710cfd45a58ebe79636dec727d.png"},{"last_chapter_rule":"","title":"voflix.D🐺","author":"家娃","version":0,"type":"video","url":"hiker://empty##https://www.voflix.com/show/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|写真|APP|热榜))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note||.module-item-text&&Text'),\n        pic_url: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-items&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(主演：)&&Text'),\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items:contains(剧情：)&&Text'),\n       img: parseDom(list[j], '.lazyload&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'h3&&a&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://klyingshi.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n\t\t    try {\n\t\t        showLoading(\"正在进行检索，请稍候...\");\n\t\t        var video = 'x5Rule://' + input + '@' + $.toString(() => {\n\t\t            //fba.log(fba.getUrls())\n\t\t            var urls = _getUrls()\n\t\t            var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n\t\t            var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n\t\t            for (var i in urls) {\n\t\t                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n\t\t                    // fy_bridge_app.log(urls[i])\n\t\t                    if (/mgtv|sohu/.test(urls[i])) {\n\t\t                        return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n\t\t                    } else if (/bili/.test(urls[i])) {\n\t\t                        return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n\t\t                    } else if (/ixigua/.test(urls[i])) {\n\t\t                        return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n\t\t                    } else {\n\t\t                        return urls[i]\n\t\t                    }\n\t\t                }\n\t\t            }\n\t\t        });\n\t\t        return video;\n\t\t    } catch (e) {\n\t\t        //setError(e);\n\t\t        return 'toast://嗅探异常，可能链接无法访问。'\n\t\t    }\n\n\t\t});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\nvar lists = [];\nfor (var i in conts) {\n    var temp = parseDomForArray(conts[i], 'body&&a:not(:contains(排序))')\n    lists.push(temp)\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\n    var 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\n    var 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\n    var 状态 = parseDomForHtml(html, '.module-info-item:matches(集数：|备注：)&&Text');\n\n    var 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\n    var 简介 = parseDomForHtml(html, '.module-info-introduction-content||.video-info-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://gmu-download.oss-cn-beijing.aliyuncs.com/MTY1OTQ5MDQ1OTA4MiM3MDkjcG5n.png"},{"last_chapter_rule":"","title":"石榴电影.D🐺","author":"家娃","version":20221114,"type":"video","url":"hiker://empty##https://hei19.com/catalog?column=1&type=&area=&year=&sort=&per_page=72&page=fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {\n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);\n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.filter-list'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    if (true_url.indexOf('sort=') == -1) {\n        true_url = true_url + '&sort=';\n    }\n    if (true_url.indexOf('page=') == -1) {\n        true_url = true_url + '&page=' + page;\n    }\n}\n\nvar html = request(true_url)\n\nif (html.indexOf('暂无数据') == -1) {\n    eval(JSON.parse(request('hiker://page/dt')).rule)\n    var jsonStr = pdfh(html, '#__NEXT_DATA__&&Html');\n    var json = JSON.parse(jsonStr).props.pageProps.mediaData.data;\n    for (var j in json) {\n        var item = json[j];\n        d.push({\n            title: item.name,\n            desc: item.tag,\n            pic_url: item.cover + '@Referer=',\n            url: 'https://hei19.com/detail/' + item.id + \"#immersiveTheme#\"\n        });\n    }\n    setResult(d);\n}","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar jsonStr = pdfh(html, '#__NEXT_DATA__&&Html');\nvar json = JSON.parse(jsonStr).props.pageProps.searchMovieList.data;\nfor (var j in json) {\n    var item = json[j];\n    d.push({\n        title: item.name,\n        desc: item.present,\n        content: item.introduction,\n        img: item.pic + '@Referer=',\n        url: 'https://hei19.com/detail/' + item.id + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","search_url":"https://hei19.com/search?type=1&keywords=**&page=fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar jsonStr = pdfh(html, '#__NEXT_DATA__&&Html');\nvar json = JSON.parse(jsonStr).props.pageProps.videoDetail.videoepisode.data;\nvar videoinfo = JSON.parse(jsonStr).props.pageProps.videoDetail.videoinfo;\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        return input;\n    } catch (e) {\n        setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\nvar tabs = [];\ntabs.push('播放列表');\nvar lists = [];\nvar urls = [];\nfor (var i in json) {\n    urls.push('<a href=\"' + json[i].url + '\">' + json[i].episode + '</a>');\n}\nlists.push(urls)\n\nvar 导演 = parseDomForHtml(html, '.video-desc-director&&Text');\n\nvar 主演 = ''; // parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\nvar 状态 = videoinfo.resolution;\n\nvar 更新 = videoinfo.area + '   ' + videoinfo.type;\n\nvar 图片 = videoinfo.pic + '@Referer=';\n\nvar 简介 = videoinfo.introduction;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://www.hei17.com/favicon.ico"},{"last_chapter_rule":"","title":"磁力熊.dr","author":"道长&&Taoist","version":1,"type":"video","url":"https://www.cilixiong.com/fyAll/index_fypage.html[firstPage=https://www.cilixiong.com/fyAll]","col_type":"movie_3_marquee","class_name":"电影&电视剧","class_url":"movie&drama","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"磁力","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr='body&&.masonry__item;h2&&Text;img&&src;.tag-sm&&Text;a&&href';\nlet cates=[];\n设置(cates);\n一级(parStr,true,cates);","searchFind":"js:\nrequire(config.模板);\nlet parStr='body&&.masonry__item;img&&alt;img&&src;.tag-sm&&Text;a&&href;h2&&Text';\n一级(parStr,true);","search_url":"/e/search/index.php?classid=1,2&show=title&tempid=1&keyboard=**&Submit=立即搜索;POST;utf8","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\ntitle:'.info-title&&h1&&Text;.tiny-title&&Text',\nimg:'.col-md-4&&img&&src',\nurl:'.col-md-4&&img&&src',\ndesc:'.tiny-title,2&&Text;.tiny-title,-1&&Text',\ncontent:'.information-text&&Text',\ntabs:'body&&.picture-container',\ntab_text:'.picture-title&&Text',\nlists:'.picture-container,#id&&.container',\nlist_text:'body--a&&Text',\n//tab_id:'',\n\n线路处理:function(u){\n    return u.replace('磁力下载地址','').trim()\n}\n};\nvar 动态最新章节=true;\nvar 倒序=false;\n//香免();\n//var lazy=';get';\n//二级(parse,lazy);\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');\ninitConfig({\n    按钮样式:'text_1'\n});","pages":"[]","proxy":"","icon":"https://www.cilixiong.com/favicon.ico"},{"last_chapter_rule":"","title":"小米视频·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://m.video.9ddm.com/api/a3/filter?app_coop=mi&category=fyclass&key=sort%3Ahot-entity&page=fypage@-1@&","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&纪录片","class_url":"movie&tv&cartoon&variety&documentary","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar conts = JSON.parse(getResCode()).card_list[0].row_list;\nfor (var i in conts) {\n    var list = conts[i].item_list;\n    for (var j in list) {\n        d.push({\n            title: list[j].title,\n            desc: list[j].hint_bottom,\n            img: list[j].image_url+'@Referer='+list[j].image_url,\n            url: 'https://m.video.9ddm.com/api/a3/entity_md/' + list[j].id + '?_devid=9e0314fe4206d1c035e610ca9262e205'+'#immersiveTheme#'//=后面随便改一改数\n        });\n    }\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar conts = JSON.parse(getResCode()).card_list;\nfor (var i in conts) {\n    var list = conts[i].row_list[0].item_list;\n\n    for (var j in list) {\n        if (list[j].meta) {\n            d.push({\n                title: list[j].title,\n                desc: (list[j].hint_bottom || list[j].sub_title_1), // + '\\t' + list[j].sub_title,\n                content: list[j].desc,\n                img: list[j].image_url+'@Referer='+list[j].image_url,\n                url:'https://m.video.9ddm.com/api/a3/entity_md/' + list[j].id + '?_devid=9e0314fe4206d1c035e610ca9262e205&global_video_kw='+MY_URL.match(/key=(.*?)&page/)[1]+'#immersiveTheme#'//=后面随便改一个数\n            });\n        }\n    }\n}\nsetResult(d)","search_url":"https://m.video.9ddm.com/api/a3/search2?key=**&page=fypage@-1@&_appver=2021123090&_miui=V125","titleColor":"#fff20c00","group":"视频","detail_col_type":"movie_2","detail_find_rule":"js:\nvar d = [];\nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js')\nvar lazy = `@lazyRule=.js:var input = JSON.parse(request(input)).play_info[0].h5_url;if(input.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le/)){require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');aytmParse(input)}else{input}`;\n\nvar json = JSON.parse(getResCode()).meta;\ntry{\n  var title =  '评分：' + json.score + '\\t\\t\\t\\t' + json.ranking.label + '\\n' + json.unit_ext_data.title + '\\t\\t\\t\\t\\t\\t\\t\\t\\t' + json.unit_ext_data.play_count + '\\n' + json.episode_count_title + '\\t\\t\\t\\t' + json.episode_update_title;\n  }catch(e){title = '没错!你就是主角!!'}\nd.push({\n    title: title,\n    desc: json.desc,\n    img: json.image_url+'@Referer='+json.image_url,\n    url: setupPages(\"设置\"),\n    col_type: 'movie_1_vertical_pic_blur'\n})\nvar list = JSON.parse(getResCode()).meta.episode_list;\nfor (var j in list) {\n    d.push({\n        title: '第' + list[j].episode + '集',\n        desc: list[j].phrase || list[j].name,\n        img: list[j].himage_url + '@Referer=' + list[j].himage_url,\n        url: 'https://m.video.9ddm.com/api/a3/play?id=' + list[j].id + '&_android=b4f7bc7da2cbbcb1&global_video_kw='+list[j].name + lazy//_android=后面随便改一个数\n    })\n}\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://pic.2265.com/upload/2017-2/20172281147256443.png"},{"last_chapter_rule":"","title":"动漫花园同步站","author":"@LoyDgIk","version":5,"type":"video","url":"hiker://empty#noRefresh#","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet layout = [];\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\nlayout.push({\n    col_type:\"big_blank_block\"\n});\n\nlayout.push({\n    title: '<h1 style=\"text-align: center;\"><big><font color=\"#FEBD6F\">動漫花園同步站</font></big><br><small><font color=\"#FB6C73\">動漫愛好者的资源平台</font></small></h1>',\n    col_type: \"rich_text\"\n});\nlayout.push({\n    col_type: \"icon_1_search\",\n    url: \"hiker://page/搜索#noRecordHistory##noHistory#\",\n    pic_url:\"hiker://images/search\",\n    title: \"搜索\"\n});\n\nconst id = Date.now() + MY_RULE.title;\nlayout.push({\n    title: \"👻大家都在搜\",\n    url: $(\"#noLoading#\").lazyRule((id)=>{\n        let data = storage0.getMyVar(\"data\",{});\n        if(!data.keywords) return \"toast://未获取列表\";\n        $.require(\"推荐\").recommendWord(id, data.keywords);\n        return \"hiker://empty\";\n    }, id),\n    col_type: \"text_2\",\n    extra:{\n        id: id + \"Text1\"\n    }\n});\nlayout.push({\n    title: \"📆动漫日历\",\n    url: $(\"#noLoading#\").lazyRule((id)=>{\n        let data = storage0.getMyVar(\"data\",{});\n        if(!data.dayData) return \"toast://未获取列表\";\n        $.require(\"推荐\").recommendCalendar(id, data.dayData);\n        return \"hiker://empty\";\n    },id),\n    col_type: \"text_2\",\n    extra:{\n        id: id + \"Text2\"\n    }\n});\nlayout.push({\n    title:\"⏳正在加载 ҉\",\n    url: \"hiker://empty\",\n    col_type: \"text_center_1\",\n    extra: {\n        id: id + \"lb\",\n        lineVisible: false\n    }\n});\n\nsetResult(layout);\n\ntry {\n    let data = JSON.parse(request(\"https://dongmanhuayuan.myheartsite.com/api/acg/index\"));\n    if(data.msg!==\"success\"){\n        throw new Error(data.msg);\n    }\n    storage0.putMyVar(\"data\", data.data);\n    updateItem(id + \"lb\", {\n        col_type: \"line_blank\"\n    });\n    $.require(\"推荐\").recommendWord(id, data.data.keywords);\n}catch(e){\n    log(e.toString());\n    updateItem(id + \"lb\", {\n        title: \"加载失败\",\n        url:$(\"#noLoading#\").lazyRule(()=>{\n            refreshPage();\n            return \"hiker://empty\";\n        })\n    });\n}\n\n","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"推荐\",\"path\":\"推荐\",\"rule\":\"js:\\n$.exports.recommendWord = function(id, data) {\\n    deleteItemByCls(\\\"lb\\\");\\n    let keyList = [];\\n    keyList.push({\\n        title: \\\"<strong>🎈近期热门关键词：</strong>\\\",\\n        col_type: \\\"rich_text\\\",\\n        extra: {\\n            cls: \\\"lb\\\"\\n        }\\n    });\\n    data.forEach(key => {\\n        keyList.push({\\n            title: key,\\n            col_type: \\\"flex_button\\\",\\n            url: \\\"hiker://page/搜索结果#noRecordHistory##noHistory#?page=fypage&keyword=\\\" + encodeURIComponent(key),\\n            extra: {\\n                cls: \\\"lb\\\"\\n            }\\n        });\\n    });\\n    addItemAfter(id + \\\"lb\\\", keyList);\\n}\\n$.exports.recommendCalendar = function(id, data) {\\n    deleteItemByCls(\\\"lb\\\");\\n    //let week = (new Date().getDay() || 7) - 1;\\n    let week = new Array(\\\"一\\\", \\\"二\\\", \\\"三\\\", \\\"四\\\", \\\"五\\\", \\\"六\\\", \\\"日\\\");\\n    //data.unshift(data.splice(week, 1));\\n    let keyList = [];\\n    let count = 0;\\n    for (let weeks of data) {\\n        keyList.push({\\n            title: \\\"<strong>🎈星期\\\"+week[count]+\\\"</strong>\\\",\\n            col_type: \\\"rich_text\\\",\\n            extra: {\\n                cls: \\\"lb\\\"\\n            }\\n        });\\n        count++;\\n        weeks.forEach(day => {\\n            keyList.push({\\n                title: day.name,\\n                col_type: \\\"flex_button\\\",\\n                url: \\\"hiker://page/搜索结果#noRecordHistory##noHistory#?page=fypage&keyword=\\\" + encodeURIComponent(decodeURIComponent(day.searchName.replace(\\\"encodeURIComponent(\\\",\\\"\\\").replace(/\\\\)$/,\\\"\\\"))),\\n                extra: {\\n                    cls: \\\"lb\\\"\\n                }\\n            });\\n        });\\n    }\\n\\n\\n    addItemAfter(id + \\\"lb\\\", keyList);\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"搜索\",\"rule\":\"js:\\n//keyword=&page=1&searchType=0&serverType=server1\\nlet layout = [];\\nlet searchTypeList = $.require(\\\"searchType\\\"),\\n    serverTypeList = $.require(\\\"serverType\\\");\\nlet keyword = getMyVar(\\\"keyword\\\", \\\"\\\"),\\n    searchType = getMyVar(\\\"searchType\\\") || searchTypeList[0].value,\\n    serverType = getMyVar(\\\"serverType\\\") || serverTypeList[0].value;\\nlet id = Date.now() + MY_RULE.title;\\naddListener(\\\"onClose\\\", () => {\\n    clearMyVar(\\\"keyword\\\");\\n    clearMyVar(\\\"serverType\\\");\\n    clearMyVar(\\\"searchType\\\");\\n});\\nlayout.push({\\n    title: \\\"？\\\",\\n    url: $.toString(() => {\\n        confirm({\\n            title: '高级搜索',\\n            content: `高级搜索使用了正则表达式的形式，花园原站也使用的是这种方式。\\n符号包括：(空格、竖线|、左括号(、右括号))。\\n空格代表后面匹配0-N个字符,|代表匹配选择匹配，左右括号代表分组和我们数学中的括号同理。\\n例子:\\n1. (巨人 (第一季|第二季)) 等同于 (巨人 第一季) 和 (巨人 第二季)\\n2. (巨人 简体) 将会展示 巨人XXXX简体XXXX 的匹配结果\\n3. (火影|巨人) 等同于 (火影) 和 (巨人) 将会展示内容中包括 火影 和 巨人 的所有匹配结果`,\\n            confirm: \\\"\\\",\\n            cancel: \\\"\\\"\\n        });\\n    }),\\n    col_type: \\\"input\\\",\\n    desc: \\\"关键词\\\",\\n    extra: {\\n        id: id + \\\"ss\\\",\\n        defaultValue: keyword,\\n        //titleVisible: false,\\n        onChange: $.toString(() => {\\n            putMyVar(\\\"keyword\\\", input);\\n        })\\n    }\\n});\\nlayout.push({\\n    title: \\\"搜索:\\\" + searchTypeList.find(v => v.value === searchType).key,\\n    url: $(searchTypeList.map(v => v.key), 2, \\\"搜索类型\\\").select((id) => {\\n        let searchTypeList = $.require(\\\"searchType\\\");\\n        let value = searchTypeList.find(v => v.key === input).value;\\n        putMyVar(\\\"searchType\\\", value);\\n        updateItem(id + \\\"Text1\\\", {\\n            title: \\\"搜索:\\\" + input\\n        });\\n    }, id),\\n    col_type: \\\"text_2\\\",\\n    extra: {\\n        id: id + \\\"Text1\\\"\\n    }\\n});\\nlayout.push({\\n    title: \\\"服务器:\\\" + serverTypeList.find(v => v.value === serverType).key,\\n    url: $(serverTypeList.map(v => v.key), 1, \\\"服务器类型\\\").select((id) => {\\n        let serverTypeList = $.require(\\\"serverType\\\");\\n        let value = serverTypeList.find(v => v.key === input).value;\\n        putMyVar(\\\"serverType\\\", value);\\n        updateItem(id + \\\"Text2\\\", {\\n            title: \\\"服务器:\\\" + input\\n        });\\n    }, id),\\n    col_type: \\\"text_2\\\",\\n    extra: {\\n        id: id + \\\"Text2\\\"\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlayout.push({\\n    col_type: \\\"blank_block\\\"\\n});\\nlayout.push({\\n    title: \\\"<strong>‘‘搜索’’</strong>\\\",\\n    url: $(\\\"#noLoading#\\\").lazyRule((searchType0, serverType0) => {\\n        let keyword = encodeURIComponent(getMyVar(\\\"keyword\\\").trim()),\\n            searchType = getMyVar(\\\"searchType\\\") || searchType0,\\n            serverType = getMyVar(\\\"serverType\\\") || serverType0;\\n        if (!keyword) return \\\"toast://关键词不能为空\\\";\\n        return buildUrl(\\\"hiker://page/搜索结果#noRecordHistory##noHistory#\\\", {\\n            keyword: keyword,\\n            page: \\\"fypage\\\",\\n            searchType: searchType,\\n            serverType: serverType\\n        });\\n    }, searchType, serverType),\\n    col_type: \\\"text_center_1\\\",\\n    extra: {\\n        lineVisible: false,\\n        isRefresh: true\\n    }\\n});\\n\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nlayout.push({\\n    title: \\\"<strong><big>📋历史记录</big></strong> \\\" + \\\"清除全部\\\".link($(\\\"#noLoading#\\\").b64(\\\"'\\\").lazyRule((id) => {\\n        return $(\\\"确定清除全部搜索记录？\\\").confirm((id) => {\\n            $.require(\\\"搜索记录\\\").clearHistory();\\n            deleteItemByCls(id + \\\":key\\\");\\n        }, id);\\n    }, id)),\\n    col_type: \\\"rich_text\\\"\\n});\\nlet history = $.require(\\\"搜索记录\\\").getHistory().reverse();\\nfor (let key of history) {\\n    layout.push({\\n        title: key,\\n        url: $(\\\"#noLoading#\\\").lazyRule((id, key) => {\\n            let extra = findItem(id + \\\"ss\\\").extra;\\n            extra.defaultValue = key;\\n            updateItem({\\n                extra: extra\\n            });\\n            return \\\"hiker://empty\\\";\\n        }, id, key),\\n        col_type: \\\"flex_button\\\",\\n        extra: {\\n            id: id + \\\":key:\\\" + key,\\n            cls: id + \\\":key\\\",\\n            longClick: [{\\n                title: \\\"删除关键词:\\\" + key,\\n                js: $.toString((id, key) => {\\n                    $.require(\\\"搜索记录\\\").deleteHistory(key);\\n                    deleteItem(id + \\\":key:\\\" + key);\\n                    //toast();\\n                }, id, key)\\n            }]\\n        }\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索类型\",\"path\":\"searchType\",\"rule\":\"let searchTypeList = [{\\n        \\\"key\\\": \\\"全部\\\",\\n        \\\"value\\\": \\\"0\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"動畫\\\",\\n        \\\"value\\\": \\\"2\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"季度全集\\\",\\n        \\\"value\\\": \\\"31\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"漫畫\\\",\\n        \\\"value\\\": \\\"3\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"港台原版\\\",\\n        \\\"value\\\": \\\"41\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"日文原版\\\",\\n        \\\"value\\\": \\\"42\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"音樂\\\",\\n        \\\"value\\\": \\\"4\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"動漫音樂\\\",\\n        \\\"value\\\": \\\"43\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"同人音樂\\\",\\n        \\\"value\\\": \\\"44\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"流行音樂\\\",\\n        \\\"value\\\": \\\"15\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"日劇\\\",\\n        \\\"value\\\": \\\"6\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"ＲＡＷ\\\",\\n        \\\"value\\\": \\\"7\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"遊戲\\\",\\n        \\\"value\\\": \\\"9\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"電腦遊戲\\\",\\n        \\\"value\\\": \\\"17\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"電視遊戲\\\",\\n        \\\"value\\\": \\\"18\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"掌機遊戲\\\",\\n        \\\"value\\\": \\\"19\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"網絡遊戲\\\",\\n        \\\"value\\\": \\\"20\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"遊戲周邊\\\",\\n        \\\"value\\\": \\\"21\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"特攝\\\",\\n        \\\"value\\\": \\\"12\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"其他\\\",\\n        \\\"value\\\": \\\"1\\\"\\n    }\\n];\\n$.exports = searchTypeList;\\n\"},{\"col_type\":\"movie_3\",\"name\":\"服务器类型\",\"path\":\"serverType\",\"rule\":\"js:\\n$.exports = [\\n    {\\n        \\\"key\\\": \\\"主服务器(延迟10分钟)\\\",\\n        \\\"value\\\": \\\"server1\\\"\\n    },\\n    {\\n        \\\"key\\\": \\\"原服务器(实时抓去|速度慢)\\\",\\n        \\\"value\\\": \\\"server2\\\"\\n    }\\n];\"},{\"col_type\":\"movie_3\",\"name\":\"搜索记录\",\"path\":\"搜索记录\",\"rule\":\"js:\\nlet history;\\ntry {\\n    history = JSON.parse(readFile(\\\"WordHistory.json\\\", 0) || \\\"[]\\\");\\n} catch (e) {\\n    history = [];\\n}\\n\\nfunction setHistory(title) {\\n    if (history.length >= 20) {\\n        history.splice(0, 1);\\n    }\\n    let index = history.indexOf(title);\\n\\n    if (index > -1) {\\n        history.splice(index, 1);\\n    }\\n    history.push(title);\\n    saveFile(\\\"WordHistory.json\\\", JSON.stringify(history), 0);\\n}\\n\\nfunction deleteHistory(title) {\\n    let index = history.indexOf(title);\\n    if (index > -1) {\\n        history.splice(index, 1);\\n        saveFile(\\\"WordHistory.json\\\", JSON.stringify(history), 0);\\n    }\\n}\\n\\nfunction getHistory() {\\n    return history;\\n}\\nfunction clearHistory() {\\n    saveFile(\\\"WordHistory.json\\\", \\\"[]\\\", 0);\\n}\\n$.exports = {\\n    setHistory: setHistory,\\n    getHistory: getHistory,\\n    clearHistory: clearHistory,\\n    deleteHistory: deleteHistory\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"搜索结果\",\"path\":\"搜索结果\",\"rule\":\"js:\\nlet layout = [];\\nlet searchTypeList = $.require(\\\"searchType\\\"),\\n    serverTypeList = $.require(\\\"serverType\\\");\\n\\nlet keyword = decodeURIComponent(getParam(\\\"keyword\\\")),\\n    searchType = getParam(\\\"searchType\\\") || searchTypeList[0].value,\\n    serverType = getParam(\\\"serverType\\\") || serverTypeList[0].value;\\nlet page = Number(getMyVar(\\\"page\\\", \\\"0\\\")) + MY_PAGE;\\n$.require(\\\"搜索记录\\\").setHistory(keyword);\\nif (MY_PARAMS.isRefresh) {\\n    addListener(\\\"onClose\\\", () => {\\n        refreshPage();\\n    });\\n}\\naddListener(\\\"onClose\\\",()=>{\\n    clearMyVar(\\\"page\\\");\\n});\\nfunction load() {\\n    let data = JSON.parse(post(\\\"https://dongmanhuayuan.myheartsite.com/api/acg/search\\\", {\\n        body: buildUrl(\\\"\\\", {\\n            keyword: keyword,\\n            page: page,\\n            searchType: searchType,\\n            serverType: serverType\\n        }),\\n        timeout:8000\\n    }));\\n    let list = data.data.searchData;\\n    if (MY_PAGE === 1) {\\n        layout.push({\\n            col_type: \\\"text_2\\\",\\n            url: \\\"hiker://empty\\\",\\n            title: \\\"总计\\\" + data.data.totalNum,\\n            extra: {\\n                lineVisible: false\\n            }\\n        });\\n        let pageNum = Math.ceil(data.data.totalNum / 80);\\n        layout.push({\\n            col_type: \\\"text_2\\\",\\n            url: $(\\\"\\\", \\\"最大:\\\" + pageNum).input((m) => {\\n                let n = Number(input);\\n                if (Number.isNaN(n)) {\\n                    return \\\"toast://请输入数字\\\";\\n                }\\n                if (n > m || n < 1) {\\n                    return \\\"toast://数字不对哦\\\";\\n                }\\n                putMyVar(\\\"page\\\", (n - 1) + \\\"\\\");\\n                refreshPage();\\n                return \\\"hiker://empty\\\";\\n            }, pageNum),\\n            title: \\\"共\\\" + pageNum + \\\"页\\\",\\n        });\\n\\n    }\\n    for (let item of list) {\\n        layout.push({\\n            title: \\\"‘‘\\\" + (item.group || \\\"\\\") + \\\"’’\\\\t\\\" + item.title,\\n            desc: \\\"““””<strong>时间：</strong>\\\" + item.date + \\\"\\\\n<strong>类型：</strong>\\\" + item.type + \\\"\\\\t\\\\t<strong>大小：</strong>\\\" + item.size,\\n            col_type: \\\"text_1\\\",\\n            url: \\\"hiker://page/详细\\\",\\n            extra: {\\n                body: \\\"link=\\\" + item.link + \\\"&id=\\\" + (item.id || \\\"\\\"),\\n                pageTitle: item.title,\\n            }\\n        });\\n    }\\n    if (list.length === 0) {\\n        layout.push({\\n            title: \\\"““””<font color='gray'>没有了哦<font>\\\",\\n            col_type: \\\"text_center_1\\\",\\n            url: \\\"hiker://empty\\\",\\n        });\\n    }else{\\n        setPageTitle(\\\"「\\\" + keyword + \\\"」#\\\" + page);\\n    }\\n}\\ntry {\\n    if(MY_PAGE===1){\\n        showLoading(\\\"正在检索服务器...\\\");\\n        setPageTitle(\\\"正在检索:\\\" + keyword);\\n    }\\n    load();\\n        \\n    hideLoading();\\n} catch (e) {\\n    hideLoading();\\n    log(e.toString());\\n    layout.push({\\n        title: \\\"““””<font color='gray'>没有了哦<font>\\\",\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\",\\n    });\\n}\\n\\nsetResult(layout);\"},{\"col_type\":\"movie_3\",\"name\":\"详细\",\"path\":\"详细\",\"rule\":\"js:\\nlet data = JSON.parse(post(\\\"https://dongmanhuayuan.myheartsite.com/api/acg/detail\\\", {\\n    body: MY_PARAMS.body\\n})).data;\\nsetPageTitle(data.title);\\nlet layout = [];\\n\\nlayout.push({\\n    title: data.title,\\n    col_type: \\\"text_center_1\\\"\\n});\\nlayout.push({\\n    title: \\\"““””<small><small><font color='gray'>↓长按更多选项↓<font></small></small>\\\",\\n    col_type: \\\"text_center_1\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra:{\\n        lineVisible:false\\n    }\\n});\\nlet torrent = \\\"https://dongmanhuayuan.myheartsite.com/api/acg/download?date=\\\" + data.fileDate + \\\"&hash=\\\" + data.fileHash;\\nlayout.push({\\n    title: \\\"torrent\\\",\\n    url: torrent + \\\"#.torrent\\\",\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        longClick: [{\\n            title: \\\"下载\\\",\\n            js: JSON.stringify(\\\"download://\\\" + torrent),\\n        }, {\\n            title: \\\"复制链接\\\",\\n            js: JSON.stringify(\\\"copy://\\\" + torrent),\\n        }, {\\n            title: \\\"其他应用打开\\\",\\n            js: JSON.stringify(\\\"magnet://\\\" + torrent),\\n        }]\\n    }\\n});\\nlayout.push({\\n    title: \\\"magnet1\\\",\\n    url: data.magnetLink1,\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        longClick: [{\\n            title: \\\"复制磁力\\\",\\n            js: JSON.stringify(\\\"copy://\\\" + data.magnetLink1),\\n        }, {\\n            title: \\\"其他应用打开\\\",\\n            js: JSON.stringify(\\\"magnet://\\\" + data.magnetLink1),\\n        }]\\n    }\\n});\\nlayout.push({\\n    title: \\\"magnet2\\\",\\n    url: data.magnetLink2,\\n    col_type: \\\"text_3\\\",\\n    extra: {\\n        longClick: [{\\n            title: \\\"复制磁力\\\",\\n            js: JSON.stringify(\\\"copy://\\\" + data.magnetLink2),\\n        }, {\\n            title: \\\"其他应用打开\\\",\\n            js: JSON.stringify(\\\"magnet://\\\" + data.magnetLink2),\\n        }]\\n    }\\n});\\n\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\nlayout.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"⚡文件列表⚡\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\ndata.fileList.forEach(v => {\\n    layout.push({\\n        title: v,\\n        url: \\\"hiker://empty\\\",\\n        col_type: \\\"text_1\\\"\\n    });\\n});\\n\\n\\nlayout.push({\\n    col_type: \\\"line_blank\\\"\\n});\\n\\nlayout.push({\\n    col_type: \\\"text_center_1\\\",\\n    title: \\\"⚡主题⚡\\\",\\n    url: \\\"hiker://empty\\\",\\n    extra: {\\n        lineVisible: false\\n    }\\n});\\nlayout.push({\\n    col_type: \\\"line\\\"\\n});\\nlet rtext = \\\"\\\";\\ndata.detailTopic.forEach(v => {\\n    rtext += v + \\\"<br>\\\";\\n});\\nlayout.push({\\n    title: rtext,\\n    col_type: \\\"rich_text\\\"\\n});\\nsetResult(layout);\"}]","proxy":"","icon":"https://share.dmhy.org/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"真不卡","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.zbkk.net/zbktype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n    一级分类: 'body&&.dropdown',\n    子分类: 'ul&&li:has(a[href]):not(:matches(首页|专题|资讯))',\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'body&&a',\n}],{分类颜色:取随机颜色()});\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"detail\",\"gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('结果');","search_url":"hiker://empty##https://www.zbkk.net/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/52.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"快云.DR","author":"幻梦月光贝","version":1,"type":"video","url":"hiker://empty##https://www.kuaiyunyy.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/detail/','true');\n//一级书签('/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=快云"},{"last_chapter_rule":"","title":"Alist仓库","author":"Joe","version":0,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"设置\",\n    url: \"hiker://page/settings\"\n})\nif (!fileExist(\"hiker://files/Joe/rules.json\")) {\n    d.push({\n        title: \"将alist当做你的小程序仓库\",\n        url: \"toast://快去提交一个试试\"\n    })\n} else {\n    let list = JSON.parse(readFile(\"hiker://files/Joe/rules.json\", 0))\n    list.forEach(item => {\n        d.push({\n            title: item.name,\n            url: \"海阔视界首页频道规则【\" + item.name + \"】￥home_rule_url￥\" + item.rule,\n            desc: \"链接：\" + item.rule\n        })\n    })\n}\nsetResult(d);","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"hiker://page/api\",\"path\":\"api\",\"rule\":\"let baseurl = \\\"链接\\\"\\nlet path = \\\"路径\\\"\\nlet title = MY_RULE.title || MY_RULE[0].group\\nlet res = request(baseurl + \\\"/dav/\\\" + path + \\\"/\\\" + title + \\\".json\\\", {\\n    headers: {\\n        \\\"Authorization\\\": \\\"Basic \\\" + base64Encode(MY_ACCOUNT + \\\":\\\" + MY_PASSWORD)\\n    },\\n    body: JSON.stringify(MY_RULE),\\n    method: \\\"PUT\\\"\\n})\\nif (res == \\\"Created\\\") {\\n    if (fileExist(\\\"hiker://files/Joe/rules.json\\\")) {\\n        list = JSON.parse(readFile(\\\"hiker://files/Joe/rules.json\\\", 0))\\n    } else {\\n        list = []\\n    }\\n    list.push({\\n        name: title,\\n        rule: baseurl + \\\"/d/\\\" + path + \\\"/\\\" + title + \\\".json\\\"\\n    })\\n    saveFile(\\\"hiker://files/Joe/rules.json\\\", JSON.stringify(list), 0)\\n    \\\"提交成功\\\"\\n} else {\\n    log(res)\\n    \\\"提交失败\\\"\\n}\"},{\"col_type\":\"text_2\",\"name\":\"hiker://page/settings\",\"path\":\"settings\",\"rule\":\"js:\\nvar d = [];\\nd.push({\\n    title: \\\"点我导入提交规则\\\",\\n    url: $().lazyRule(() => {\\n        let code = JSON.parse(fetch(\\\"hiker://page/api\\\")).rule.replace(\\\"链接\\\", getItem(\\\"baseurl\\\", \\\"\\\")).replace(\\\"路径\\\", getItem(\\\"path\\\", \\\"/\\\"))\\n        return '海阔视界规则分享，当前分享的是：提交云仓库规则￥publish￥' + base64Encode(code)\\n    })\\n})\\nd.push({\\n    title: \\\"点我设置账户密码\\\",\\n    url: \\\"rule://77+lcHVibGlzaF9hY2NvdW5077+ldXNlckBwYXNzd2Q=\\\"\\n})\\nd.push({\\n    title: \\\"链接:\\\" + getItem(\\\"baseurl\\\", \\\"\\\"),\\n    url: $(getItem(\\\"baseurl\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"baseurl\\\", input)\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    })\\n})\\nd.push({\\n    title: \\\"路径:\\\" + getItem(\\\"path\\\", \\\"/\\\"),\\n    url: $(getItem(\\\"path\\\", \\\"\\\")).input(() => {\\n        setItem(\\\"path\\\", input)\\n        refreshPage()\\n        return \\\"hiker://empty\\\"\\n    })\\n})\\nsetResult(d);\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视工场.D🐰","author":"家娃","version":20220802,"type":"video","url":"hiker://empty##https://www.ysgc.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.nav-slide'\nconst 小类定位 = 'body&&a:not(:matches(首页|APP下载|剧情|地区|年份|语言|字母|排序|资讯|明星|直播))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = true_url.replace(/---(\\d*)\\.html/, +page + '---$1.html');\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.text-right&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar items = [];\nvar html = getResCode();\nif (html.indexOf('验证码') > 0) {\n    items.push({\n        title: '本次搜索需要输入验证码验证成功后返回下拉刷新',\n        url: $('hiker://empty').rule(() => {\n            var items = [];\n            //var cok = fetch('hiker://files/cache/JW_ysgcCookie.txt', {});\n            var cok = JSON.parse(fetchCookie('https://www.ysgc.cc/index.php/verify/index.html?r=' + Math.random(), {\n                headers: {\n                    'X-Requested-With': 'XMLHttpRequest',\n                    'User-Agent': MOBILE_UA\n                },\n                method: 'GET',\n                withHeaders: true\n            })).join(';');\n            //log(cok);\n            var img = 'https://www.ysgc.cc/index.php/verify/index.html?r=' + Math.random() + '@User-Agent=' + MOBILE_UA + '@Cookie=' + cok;\n            items.push({\n                pic_url: img,\n                url: $('').lazyRule(() => {\n                    return refreshPage();\n                }),\n                desc: '0',\n                col_type: 'pic_1_full'\n            });\n\n            items.push({\n                title: '',\n                url: \"'toast://你输入的是' + input\",\n                extra: {\n                    onChange: \"putVar('ysgcc验证码',input)\",\n                    titleVisible: false\n                },\n                col_type: 'input'\n            });\n\n            items.push({\n                title: '发送',\n                url: $('').lazyRule((cok) => {\n                    var cod = getVar('ysgcc验证码');\n                    var json = JSON.parse(fetch('https://www.ysgc.cc/index.php/ajax/verify_check?type=search&verify=' + cod, {\n                        headers: {\n                            'X-Requested-With': 'XMLHttpRequest',\n                            'User-Agent': MOBILE_UA,\n                            'Cookie': cok\n                        },\n                        body: '',\n                        method: 'POST'\n                    }));\n                    if (json.code == 1) {\n                        writeFile('hiker://files/cache/JW_ysgcCookie.txt', cok);\n                        back(true);\n                        return \"toast://验证成功。\"\n                    } else {\n                        //refreshPage();\n                        return \"toast://验证失败，请重试！\"\n                    }\n\n                }, cok),\n                col_type: 'text_2'\n            });\n            setHomeResult({\n                data: items\n            });\n        }),\n        col_type: 'text_1'\n    });\n} else {\t\n\tvar list = parseDomForArray(html, 'body&&#searchList&&li');\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        var title = parseDomForHtml(L, 'h4&&Text');\n        var img = parseDom(L, '.lazyload&&data-original') + '@Referer=';\n        var url = parseDom(L, 'a&&href') + \"#immersiveTheme#\";\n        var desc = parseDomForHtml(L, '.detail&&p,1&&Text').replace(/\\//g, ' ');\n        var cont = parseDomForHtml(L, '.detail&&p,3&&Text').replace(/详情 >/g, ' ').replace(/简介：/g, ' ');\n        items.push({\n            title: title,\n            img: img,\n            url: url,\n            desc: desc,\n            content: cont\n        });\n    }\n}\nsetSearchResult({\n    data: items\n});","search_url":"https://www.ysgc.cc/vodsearch/**----------fypage---.html;get;utf-8;{User-Agent@.js:MOBILE_UA&&Cookie@.js:fetch('hiker://files/cache/JW_ysgcCookie.txt', {})}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return playUrl;\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n\n        var fro = player_data.from;\n        var thumb = player_data.vod_pic_thumb;\n        var title = player_data.vod_title + '+' + player_data.vod_title_name;\n        var id = player_data.id;\n        var nid = player_data.nid;\n\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n\n        //获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \"body&&.embed-responsive&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            var jxkJSPath = \"https://www.ysgc.cc/static/player/\" + fro + \".js\";\n            var jiekHtml = request(jxkJSPath, {});\n            jiek = jiekHtml.match(/src=\"(.*?)'/)[1];\n        }\n        if (jiek != '') {\n            if (jiek.substring(0, 4) == 'http') {\n                jiek = jiek;\n            } else if (jiek.substring(0, 2) == '\\/\\/') {\n                jiek = 'https:' + jiek;\n            } else {\n                jiek = \"https://www.ysgc.cc\" + jiek\n            }\n        }\n        var jiexi = jiek + playUrl + \"&jump=\" + input + \"&title=\" + title + \"&thumb=\" + thumb;\n        //log(\"jiexi-->\" + jiexi);\n        if (fro == 'duoduozy') {\n            jiexi = jiexi + \"&id=\" + id + \"&nid=\" + nid;\n            var playerHtml = request(jiexi, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA,\n                    \"Referer\": input\n                }\n            });\n            require(\"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js\");\n            playUrl = getVideoInfo(playerHtml.match(/var urls = \\'(.*?)\\'/)[1]);\n            return toUrl(playUrl);\n        } else if (jiek.indexOf(\"ysgc.tjomet.com\") > 0) {\n            var playerHtml = request(jiexi, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA,\n                    \"Referer\": \"https://www.ysgc.cc/\"\n                }\n            });\n            eval(playerHtml.match(/var config = {[\\s\\S]*?}/)[0] + \"\");\n            var tempTime = (Math.floor(new Date().getTime() / 1000) * 1).toString();\n            var rootUrl = jiexi.split('?')[0];\n            var setUrl = rootUrl + 'js/setting.js?t=0443';\n            var setHtml = require(setUrl);\n            //log(__Oxe69f6[4]+'-----'+__Oxe69f6[8]);\n            var apiUrl = rootUrl + __Oxe69f6[4];\n            var sign = __Oxe69f6[8];\n            var jsonStr = request(apiUrl, {\n                headers: {\n                    \"User-Agent\": MOBILE_UA\n                },\n                body: \"url=\" + config.url + \"&vkey=\" + config.vkey + \"&token=\" + config.token + \"&sign=\" + sign,\n                method: \"POST\"\n            });\n            // log(jsonStr)\n            if (jsonStr.indexOf('验证失败') > 0) {\n                return 'toast://验证失败！'\n            }\n            if (jsonStr == '') {\n                return 'toast://解析失败，请更换线路重试！'\n            }\n            var json = JSON.parse(jsonStr);\n            //log(\"json-->\" + json);\n            if (json.code == 200) {\n                //第一种方式调用网站自己的decode文件\n                require(\"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js\");\n                playUrl = getVideoInfo(json.url);\n                //log('json.url:' + json.url)\n\n                //第二种方式\n                //playUrl = base64Decode(json.url.substring(8, json.url.length));\n                //playUrl = playUrl.substring(8, playUrl.length - 8);\n                //log(playUrl);\n                return toUrl(playUrl);\n            } else {\n                return 'toast://解析失败。'\n            }\n        } else {\n            return 'toast://网站已更换了解析接口，请联系作者更新。'\n        }\n    } catch (e) {\n        showLoading(\"嗅探失败，通免检索中请稍候...\");\n        var video = 'x5Rule://' + input + '@' + $.toString(() => {\n            //fba.log(fba.getUrls());\n            var urls = _getUrls();\n            if (urls.length > 0) {\n                var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n                var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                for (var i in urls) {\n                    if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                        //fy_bridge_app.log(urls[i])\n                        if (/mgtv|sohu/.test(urls[i])) {\n                            return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                        } else if (/bili/.test(urls[i])) {\n                            return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                        } else {\n                            return urls[i]\n                        }\n                    }\n                }\n            } else {\n                fba.hideLoading();\n                return 'toast://嗅探失败，可能链接无法访问。'\n            }\n        });\n        return video;\n        //setError(e);\n        //return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    var item = parseDomForHtml(arts[i], 'a&&Text');\n    tabs.push(item);\n\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(导演)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(主演)&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(更新)&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original') + '@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&Text').replace(/详情/g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/52f969bf-a8e0-4b5c-b14c-2f379814348c.ico"},{"last_chapter_rule":"","title":"全民影视","author":"道长&爱是用心","version":0,"type":"other","url":"hiker://empty##https://www.90r.cc/vodshow/dianying--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.mo-cols-lg2;.mo-situ-name&&Text;.mo-situ-lazy&&data-original;.mo-situ-rema&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.mo-scre-info',\n        子分类: 'body&&a:not(:matches(明星|资讯))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.mo-deta-info.mo-cols-rows;h1&&Text;.mo-situ-lazy&&data-original;.mo-situ-rema&&Text;a&&href;.mo-cols-info.mo-text-muted&&Text\";\n一级(parStr,true);","search_url":"https://www.90r.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.mo-wrap-arow.mo-cols-xs12,1&&Text;.mo-wrap-arow.mo-cols-xs12,0&&Text',\n    img: '.lazyload&&data-src',\n    url: '.lazyload&&data-src',\n    desc: '.mo-situ-rema&&Text;.mo-wrap-arow.mo-coxs-none&&Text',\n    content: '.mo-paxs-5px.mo-ptxs-0px&&Text',\n    tabs: 'body&&.mo-movs-btns',\n    lists: '.mo-movs-item,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/76.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"Nike影视.dr","author":"道长&ssl","version":1,"type":"video","url":"https://www.ajeee.com/show/Movie/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板)\n依赖检测();\nlet p = '.module-items&&.module-item;a&&title;img||.lazy&&data-src||data-original;.module-item-text||.module-item-note&&Text;a&&href';\ntrue_url = 获取正确链接();\nlet cates = 打造动态分类([{\n一级分类:'body&&.navbar-items',\n子分类:'body&&li:not(:matches(首|APP|美|追|^$|今|热))',分类链接:{\n            二次处理(u){\n                return u.replace('vodtype', 'show')\n            }\n        }\n},{\n    一级分类:'.module-main&&.module-item-box',\n子分类:'body&&a',\n}]);\n设置(cates,true);\n一级(p,true,cates,null)","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.ajeee.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.ajeee.com/mxtheme/images/favicon.png"},{"firstHeader":"class","last_chapter_rule":"","title":"天空影视.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##http://tkznp.com/vodshow/id/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"剧集&电影&综艺&动漫&欧美剧&日韩剧","class_url":"2&1&3&1&16&15","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('影片');","search_url":"hiker://empty##http://tkznp.com/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://tkznp.com/template/uzhanw1/statics/image/20211128/1587106a2.ico"},{"last_chapter_rule":"","title":"bilibili","author":"Joe","version":11,"type":"video","url":"hiker://empty?p=fypage","col_type":"movie_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:$.require(\"hiker://page/homepage\")","searchFind":"js:\nvar d = [];\nsetResult([{\n    title: \"搜索视频\",\n    url: \"hiker://page/search?p=fypage&type=video&kw=\" + getParam(\"kw\")\n}, {\n    title: \"搜索用户\",\n    url: \"hiker://page/search?p=fypage&type=bili_user&kw=\" + getParam(\"kw\")\n}, {\n    title: \"搜索番剧\",\n    url: \"hiker://page/search?p=fypage&type=media_bangumi&kw=\" + getParam(\"kw\")\n}, {\n    title: \"搜索电影\",\n    url: \"hiker://page/search?p=fypage&type=media_ft&kw=\" + getParam(\"kw\")\n}])\nsetResult(d);","search_url":"hiker://empty?kw=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"api\",\"path\":\"api\",\"rule\":\"$.exports.getFeed = function() {\\n    let u = \\\"https://api.bilibili.com/x/web-interface/index/top/feed/rcmd\\\"\\n    let res = JSON.parse(request(u, {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    }))\\n    return res.data.item\\n}\\n$.exports.getUserInfo = function() {\\n    let u = \\\"https://api.bilibili.com/x/web-interface/nav\\\"\\n    let res = request(u, {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(res).data\\n}\\n$.exports.getUrl = function(avid, cid, qn) {\\n    let u = request(buildUrl(\\\"http://api.bilibili.com/x/player/playurl\\\", {\\n        \\\"avid\\\": avid,\\n        \\\"cid\\\": cid,\\n        \\\"qn\\\": qn,\\n        \\\"fourk\\\": 1\\n    }), {\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(u).data\\n}\\n$.exports.getHistory = function(page) {\\n    let u = buildUrl(\\\"http://api.bilibili.com/x/v2/history\\\", {\\n        \\\"pn\\\": page,\\n        \\\"ps\\\": 20\\n    })\\n    let res = request(u, {\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(res).data\\n}\\n$.exports.reportProcess = function(avid, cid) {\\n    let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n    let res = post(\\\"http://api.bilibili.com/x/v2/history/report\\\", {\\n        body: {\\n            \\\"aid\\\": avid,\\n            \\\"cid\\\": cid,\\n            \\\"csrf\\\": csrf,\\n            \\\"progress\\\": 0\\n        },\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n}\\n$.exports.getComments = function(id, sortby, page) {\\n    let u = buildUrl(\\\"http://api.bilibili.com/x/v2/reply\\\", {\\n        \\\"type\\\": 1,\\n        \\\"oid\\\": id,\\n        \\\"pn\\\": page,\\n        \\\"sort\\\": sortby == \\\"热度\\\" ? 1 : 0\\n    })\\n    let res = request(u, {\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(res).data.replies\\n}\\n$.exports.upVideos = function(mid, page) {\\n    let videos = request(\\\"https://api.bilibili.com/x/space/arc/search?mid=\\\" + mid + \\\"&pn=\\\" + page, {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(videos)\\n}\\n$.exports.getslist = function() {\\n    return JSON.parse(request(\\\"https://api.bilibili.com/x/relation/tags?jsonp=jsonp\\\", {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data\\n}\\n$.exports.getSubsribes = function(id, page) {\\n    let u = \\\"https://api.bilibili.com/x/relation/tag?pn=\\\" + page + \\\"&ps=20&jsonp=jsonp&tagid=\\\" + id\\n    let res = request(u, {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(res).data\\n}\\n$.exports.getfavteam = function() {\\n    return JSON.parse(request(\\\"https://api.bilibili.com/x/v3/fav/folder/list4navigate\\\", {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data\\n}\\n$.exports.getFavour = function(id, page) {\\n    let u = \\\"https://api.bilibili.com/x/v3/fav/resource/list?media_id=\\\" + id + \\\"&pn=\\\" + page + \\\"&ps=20&order=mtime&type=0&tid=0\\\"\\n    let res = request(u, {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })\\n    return JSON.parse(res).data\\n}\\n$.exports.getMovies = function(type, before, after) {\\n    let u = buildUrl(\\\"http://api.bilibili.com/pgc/web/timeline\\\", {\\n        \\\"types\\\": type,\\n        \\\"before\\\": before,\\n        \\\"after\\\": after\\n    })\\n    let res = JSON.parse(request(u, {\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    }))\\n    return res.result\\n}\\n$.exports.lazy = function(id, cid, qn) {\\n    let d = $.require(\\\"hiker://page/api\\\").getUrl(id, cid, qn)\\n    $.require(\\\"hiker://page/api\\\").reportProcess(id, cid)\\n    let u = JSON.stringify({\\n        \\\"urls\\\": [d.durl[0].url + \\\"#isVideo=true#\\\"],\\n        \\\"headers\\\": [{\\n            \\\"Referer\\\": \\\"https://www.bilibili.com\\\",\\n            \\\"User-Agent\\\": PC_UA\\n        }],\\n        \\\"danmu\\\": `https://comment.bilibili.com/${cid}.xml`,\\n        \\\"extra\\\": {\\n            \\\"id\\\": cid\\n        }\\n    })\\n    return u\\n}\"},{\"col_type\":\"movie_1_vertical_pic_blur\",\"name\":\"视频详情\",\"path\":\"detail\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    var id = MY_PARAMS.id + \\\"\\\"\\n    var cid = MY_PARAMS.cid + \\\"\\\"\\n    var bvid = MY_PARAMS.bvid\\n    //视频信息\\n    var r = request(buildUrl(\\\"http://api.bilibili.com/x/web-interface/view\\\", {\\n        \\\"aid\\\": id\\n    }))\\n    let l = JSON.parse(r).data\\n    d.push({\\n        title: l.title,\\n        img: l.pic,\\n        desc: l.desc,\\n        url: $().rule((info) => {\\n            let stat = info.stat\\n            let infos = `av号：${info.aid}\\\\nbv号：${info.bvid}\\\\n播放量：${stat.view}\\\\n点赞：${stat.like}\\\\n投币：${stat.coin}\\\\n收藏：${stat.favorite}\\\\n\\\\n${info.desc}`\\n            setResult([{\\n                title: infos,\\n                col_type: \\\"long_text\\\"\\n            }])\\n        }, l),\\n        extra: {\\n            gradient: true\\n        }\\n    }, {\\n        title: l.owner.name,\\n        img: l.owner.face,\\n        url: \\\"hiker://page/ups?mid=\\\" + l.owner.mid + \\\"&p=fypage#immersiveTheme#\\\",\\n        col_type: \\\"avatar\\\"\\n    }, {\\n        col_type: \\\"line_blank\\\"\\n    })\\n    //视频操作\\n    function color(text, color) {\\n        text += \\\"\\\";\\n        if (text.indexOf(\\\"““””\\\") === 0) {\\n            text.replace(\\\"““””\\\", \\\"\\\");\\n        }\\n        return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n    }\\n    let stat = l.stat\\n    let like = stat.like\\n    let coin = stat.coin\\n    let favourite = stat.favorite\\n    let hasLike = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/web-interface/archive/has/like\\\", {\\n        \\\"aid\\\": id\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data == 1\\n    let hasCoin = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/web-interface/archive/coins\\\", {\\n        \\\"aid\\\": id\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data.multiply != 0\\n    let hasFavour = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/v2/fav/video/favoured\\\", {\\n        \\\"aid\\\": id\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data.favoured\\n    d.push({\\n        title: (hasLike ? color(like, \\\"#FA7298\\\") : like),\\n        img: \\\"https://ghproxy.com/https://raw.githubusercontent.com/SocialSisterYi/bilibili-API-collect/master/imgs/like.svg\\\",\\n        col_type: \\\"icon_small_4\\\",\\n        url: $().lazyRule((id, hasLike) => {\\n            let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n            let res = post(\\\"http://api.bilibili.com/x/web-interface/archive/like\\\", {\\n                body: {\\n                    \\\"aid\\\": id,\\n                    \\\"like\\\": (hasLike ? 2 : 1),\\n                    \\\"csrf\\\": csrf\\n                },\\n                headers: {\\n                    \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n                }\\n            })\\n            refreshPage()\\n            return \\\"toast://\\\" + (hasLike ? \\\"取消点赞\\\" : \\\"点赞成功\\\")\\n        }, id, hasLike)\\n    }, {\\n        title: (hasCoin ? color(coin, \\\"#FA7298\\\") : coin),\\n        img: \\\"https://ghproxy.com/https://raw.githubusercontent.com/SocialSisterYi/bilibili-API-collect/master/imgs/coin.svg\\\",\\n        col_type: \\\"icon_small_4\\\",\\n        url: $([\\\"1\\\", \\\"2\\\"], 2, \\\"投币数量\\\").select((id) => {\\n            let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n            let res = post(\\\"http://api.bilibili.com/x/web-interface/coin/add\\\", {\\n                body: {\\n                    \\\"aid\\\": id,\\n                    \\\"multiply\\\": input,\\n                    \\\"csrf\\\": csrf\\n                },\\n                headers: {\\n                    \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n                }\\n            })\\n            refreshPage()\\n            return \\\"toast://投了\\\" + input + \\\"个币\\\"\\n        }, id)\\n    }, {\\n        title: (hasFavour ? color(favourite, \\\"#FA7298\\\") : favourite),\\n        img: \\\"https://ghproxy.com/https://raw.githubusercontent.com/SocialSisterYi/bilibili-API-collect/master/imgs/fav.svg\\\",\\n        col_type: \\\"icon_small_4\\\",\\n        url: $().lazyRule((id, hasFavour) => {\\n            let body = hasFavour ? {\\n                \\\"rid\\\": id,\\n                \\\"type\\\": 2,\\n                \\\"del_media_ids\\\": 0,\\n                \\\"csrf\\\": csrf\\n            } : {\\n                \\\"rid\\\": id,\\n                \\\"type\\\": 2,\\n                \\\"add_media_ids\\\": 0,\\n                \\\"csrf\\\": csrf\\n            }\\n            let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n            let res = post(\\\"http://api.bilibili.com/medialist/gateway/coll/resource/deal\\\", {\\n                body: body,\\n                headers: {\\n                    \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\"),\\n                    \\\"Referer\\\": \\\"https://www.bilibili.com\\\"\\n                }\\n            })\\n            refreshPage()\\n            return \\\"toast://\\\" + (hasFavour ? \\\"取消收藏\\\" : \\\"收藏成功\\\")\\n        }, id, hasFavour)\\n    }, {\\n        title: \\\"评论\\\",\\n        url: \\\"hiker://page/Comments?p=fypage\\\",\\n        img: \\\"https://lanmeiguojiang.com/tubiao/more/41.png\\\",\\n        col_type: \\\"icon_small_4\\\",\\n        extra: {\\n            \\\"id\\\": id\\n        }\\n    })\\n    //获取视频分P信息\\n    var p = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/player/pagelist\\\", {\\n        \\\"aid\\\": id\\n    }))).data\\n    if (p.length == 1) {\\n        //视频链接\\n        let a = $.require(\\\"hiker://page/api\\\").getUrl(id, cid, 120)\\n        d.push({\\n            title: \\\"智能播放\\\",\\n            col_type: \\\"text_center_1\\\",\\n            url: $().lazyRule((id, cid) => {\\n                return $.require(\\\"hiker://page/api\\\").lazy(id, cid, 120).replace(/;/g, \\\"；；\\\")\\n            }, id, cid),\\n            extra: {\\n                \\\"longClick\\\": [{\\n                    title: \\\"推送\\\",\\n                    js: $.toString((id, cid) => {\\n                        require(\\\"https://hikerfans.com/Joe/TVbox.js\\\")\\n                        return 推送tvbox({\\n                            name: \\\"推送 by Joe\\\",\\n                            vod: [{\\n                                name: \\\"bilibili\\\",\\n                                urls: JSON.parse($.require(\\\"hiker://page/api\\\").lazy(id, cid, 120).replace(/;/g, \\\"；；\\\")).url\\n                            }],\\n                            headers: {\\n                                \\\"Referer\\\": \\\"https://www.bilibili.com\\\"\\n                            }\\n                        })\\n                    }, id, cid)\\n                }],\\n                \\\"id\\\": \\\"qn\\\"\\n            }\\n        })\\n        a.support_formats.forEach(item => {\\n            d.push({\\n                title: item.new_description,\\n                url: $().lazyRule((id, cid, qn) => {\\n                    return $.require(\\\"hiker://page/api\\\").lazy(id, cid, qn).replace(/;/g, \\\"；；\\\")\\n                }, id + \\\"\\\", cid + \\\"\\\", item.quality + \\\"\\\"),\\n                col_type: \\\"text_2\\\"\\n            })\\n        })\\n    } else {\\n        p.forEach(item => {\\n            d.push({\\n                title: item.part,\\n                url: $().lazyRule((id, cid) => {\\n                    return $.require(\\\"hiker://page/api\\\").lazy(id, cid, 120).replace(/;/g, \\\"；；\\\")\\n                }, id, item.cid + \\\"\\\"),\\n                col_type: \\\"text_2\\\",\\n                extra: {\\n                    \\\"cid\\\": item.cid,\\n                    \\\"id\\\": id,\\n                    \\\"bvid\\\": bvid\\n                }\\n            })\\n        })\\n    }\\n} catch (e) {\\n    log(e.message)\\n    toast(\\\"程序出现问题，请打开日志查看\\\")\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"主页\",\"path\":\"homepage\",\"rule\":\"var d = [];\\ntry {\\n    const {\\n        getFeed,\\n        getUserInfo\\n    } = $.require(\\\"hiker://page/api\\\")\\n    if (fileExist(\\\"Cookie.txt\\\")) {\\n        if (MY_PAGE == 1) {\\n            let i = getUserInfo()\\n            d.unshift({\\n                title: i.uname,\\n                img: i.face,\\n                col_type: \\\"avatar\\\",\\n                url: \\\"hiker://page/userInfo\\\",\\n                extra: {\\n                    \\\"data\\\": i\\n                }\\n            })\\n\\n            function color(text, color) {\\n                text += \\\"\\\";\\n                if (text.indexOf(\\\"““””\\\") === 0) {\\n                    text.replace(\\\"““””\\\", \\\"\\\");\\n                }\\n                return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n            }\\n            let tabs = {\\n                \\\"推荐\\\": \\\"hiker://images/collection\\\",\\n                \\\"分类\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/69.svg\\\",\\n                \\\"新番\\\": \\\"https://lanmeiguojiang.com/tubiao/movie/84.svg\\\",\\n                \\\"我的\\\": \\\"hiker://images/icon3\\\"\\n            }\\n            Object.entries(tabs).forEach(item => {\\n                d.push({\\n                    title: item[0],\\n                    img: item[1],\\n                    url: $().lazyRule((tab) => {\\n                        putMyVar(\\\"mode\\\", tab)\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }, item[0]),\\n                    col_type: \\\"icon_round_small_4\\\"\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n        }\\n        let mode = getMyVar(\\\"mode\\\", \\\"推荐\\\")\\n        if (mode == \\\"推荐\\\") {\\n            getFeed().forEach(item => {\\n                let data = JSON.stringify(item)\\n                d.push({\\n                    title: item.title,\\n                    img: item.pic,\\n                    desc: item.stat.view + \\\"播放※\\\" + item.stat.like + \\\"点赞\\\",\\n                    url: \\\"hiker://page/detail#gameTheme#\\\",\\n                    extra: {\\n                        \\\"id\\\": item.id,\\n                        \\\"bvid\\\": item.bvid,\\n                        \\\"cid\\\": item.cid\\n                    }\\n                })\\n            })\\n        } else if (mode == \\\"我的\\\") {\\n            if (MY_PAGE == 1) {\\n                d.push({\\n                    title: getMyVar(\\\"wd\\\", \\\"history\\\") == \\\"history\\\" ? color(\\\"观看历史\\\", \\\"red\\\") : \\\"观看历史\\\",\\n                    url: $().lazyRule(() => {\\n                        putMyVar(\\\"wd\\\", \\\"history\\\")\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }),\\n                    col_type: \\\"text_3\\\"\\n                }, {\\n                    title: getMyVar(\\\"wd\\\", \\\"history\\\") == \\\"fav\\\" ? color(\\\"收藏\\\", \\\"red\\\") : \\\"收藏\\\",\\n                    url: $().lazyRule(() => {\\n                        putMyVar(\\\"wd\\\", \\\"fav\\\")\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }),\\n                    col_type: \\\"text_3\\\"\\n                }, {\\n                    title: getMyVar(\\\"wd\\\", \\\"history\\\") == \\\"sub\\\" ? color(\\\"关注\\\", \\\"red\\\") : \\\"关注\\\",\\n                    url: $().lazyRule(() => {\\n                        putMyVar(\\\"wd\\\", \\\"sub\\\")\\n                        refreshPage()\\n                        return \\\"hiker://empty\\\"\\n                    }),\\n                    col_type: \\\"text_3\\\"\\n                })\\n            }\\n            if (getMyVar(\\\"wd\\\", \\\"history\\\") == \\\"history\\\") {\\n                const {\\n                    getHistory\\n                } = $.require(\\\"hiker://page/api\\\")\\n                getHistory(MY_PAGE).forEach(item => {\\n                    d.push({\\n                        title: item.title,\\n                        img: item.pic,\\n                        url: \\\"hiker://page/detail#immersiveTheme#\\\",\\n                        extra: {\\n                            \\\"id\\\": item.aid,\\n                            \\\"bvid\\\": item.bvid,\\n                            \\\"cid\\\": item.cid\\n                        }\\n                    })\\n                })\\n            } else if (getMyVar(\\\"wd\\\", \\\"history\\\") == \\\"fav\\\") {\\n                var teams = $.require(\\\"hiker://page/api\\\").getfavteam()[0].mediaListResponse.list\\n                if (MY_PAGE == 1) {\\n                    teams.forEach(item => {\\n                        d.push({\\n                            title: (getMyVar(\\\"favo\\\", teams[0].id + \\\"\\\") == item.id ? color(item.title, \\\"red\\\") : item.title),\\n                            col_type: \\\"scroll_button\\\",\\n                            url: $().lazyRule((id) => {\\n                                putMyVar(\\\"favo\\\", id + \\\"\\\")\\n                                refreshPage()\\n                                return \\\"hiker://empty\\\"\\n                            }, item.id)\\n                        })\\n                    })\\n                }\\n                $.require(\\\"hiker://page/api\\\").getFavour(getMyVar(\\\"favo\\\", teams[0].id + \\\"\\\"), MY_PAGE).medias.forEach(item => {\\n                    d.push({\\n                        title: item.title,\\n                        img: item.cover,\\n                        url: \\\"hiker://page/detail#gameTheme#\\\",\\n                        extra: {\\n                            \\\"id\\\": item.id,\\n                            \\\"cid\\\": item.ugc.first_cid,\\n                            \\\"bvid\\\": item.bvid\\n                        }\\n                    })\\n                })\\n            } else {\\n                if (MY_PAGE == 1) {\\n                    $.require(\\\"hiker://page/api\\\").getslist().forEach(item => {\\n                        d.push({\\n                            title: (getMyVar(\\\"sub\\\", \\\"0\\\") == item.tagid ? color(item.name, \\\"red\\\") : item.name),\\n                            url: $().lazyRule((id) => {\\n                                putMyVar(\\\"sub\\\", id)\\n                                refreshPage()\\n                                return \\\"hiker://empty\\\"\\n                            }, item.tagid),\\n                            col_type: \\\"scroll_button\\\"\\n                        })\\n                    })\\n                }\\n                $.require(\\\"hiker://page/api\\\").getSubsribes(getMyVar(\\\"sub\\\", \\\"0\\\"), MY_PAGE).forEach(item => {\\n                    d.push({\\n                        title: item.uname,\\n                        img: item.face,\\n                        url: \\\"hiker://page/ups?mid=\\\" + item.mid + \\\"&p=fypage#immersiveTheme#\\\",\\n                        col_type: \\\"avatar\\\"\\n                    })\\n                })\\n            }\\n        } else if (mode == \\\"新番\\\") {\\n            var tabs = {\\n                \\\"番剧\\\": 1,\\n                \\\"电影\\\": 3,\\n                \\\"国创\\\": 4\\n            }\\n            if (MY_PAGE == 1) {\\n                Object.keys(tabs).forEach(item => {\\n                    d.push({\\n                        title: (getMyVar(\\\"juji\\\", \\\"番剧\\\") == item ? color(item, \\\"red\\\") : item),\\n                        url: $().lazyRule((a) => {\\n                            putMyVar(\\\"juji\\\", a)\\n                            refreshPage()\\n                            return \\\"toast://切换成功\\\"\\n                        }, item),\\n                        col_type: \\\"scroll_button\\\"\\n                    })\\n                })\\n                d.push({\\n                    col_type: \\\"line\\\"\\n                })\\n                let days = 7\\n                for (let i = 1; i < days + 1; i++) {\\n                    d.push({\\n                        title: (getMyVar(\\\"from\\\", \\\"1\\\") == i + \\\"\\\" ? color(i + \\\"天前\\\", \\\"red\\\") : i + \\\"天前\\\"),\\n                        url: $().lazyRule((i) => {\\n                            putMyVar(\\\"from\\\", i + \\\"\\\")\\n                            refreshPage()\\n                            return \\\"hiker://empty\\\"\\n                        }, i),\\n                        col_type: \\\"scroll_button\\\"\\n                    })\\n                }\\n                d.push({\\n                    col_type: \\\"line\\\"\\n                })\\n                for (let i = 1; i < days; i++) {\\n                    d.push({\\n                        title: (getMyVar(\\\"to\\\", \\\"1\\\") == i + \\\"\\\" ? color(i + \\\"天后\\\", \\\"red\\\") : i + \\\"天后\\\"),\\n                        url: $().lazyRule((i) => {\\n                            putMyVar(\\\"to\\\", i + \\\"\\\")\\n                            refreshPage()\\n                            return \\\"hiker://empty\\\"\\n                        }, i),\\n                        col_type: \\\"scroll_button\\\"\\n                    })\\n                }\\n\\n                $.require(\\\"hiker://page/api\\\").getMovies(tabs[getMyVar(\\\"juji\\\", \\\"番剧\\\")], getMyVar(\\\"from\\\", \\\"1\\\"), getMyVar(\\\"to\\\", \\\"1\\\")).forEach(item => {\\n                    d.push({\\n                        title: item.date + \\\" 周\\\" + item.day_of_week,\\n                        col_type: \\\"text_1\\\",\\n                        url: \\\"hiker://empty\\\"\\n                    })\\n                    item.episodes.forEach(i => {\\n                        d.push({\\n                            title: i.title,\\n                            img: i.cover,\\n                            url: \\\"hiker://page/detaila#gameTheme#\\\",\\n                            extra: {\\n                                \\\"ssid\\\": i.season_id,\\n                                \\\"epid\\\": i.episode_id\\n                            }\\n                        })\\n                    })\\n                })\\n            }\\n        } else if (mode = \\\"分类\\\") {\\n            eval(JSON.parse(fetch(\\\"hiker://page/cat\\\")).rule)\\n        }\\n    } else {\\n        if (getItem(\\\"fs\\\", \\\"0\\\") == \\\"0\\\") {\\n            let a = []\\n            let time = 10\\n            a.push({\\n                title: `                     使用前须知\\n本规则调用https://github.com/SocialSisterYi/bilibili-API-collect的api，所有代码全部开源，并且不存在上传用户信息的行为\\n本规则为学习目的，请于导入24小时内删除！！！                        \\n开始使用本规则即代表遵守规则                       \\n            `,\\n                \\\"col_type\\\": \\\"long_text\\\",\\n                extra: {\\n                    id: \\\"text\\\"\\n                }\\n            }, {\\n                title: time + \\\"秒后继续\\\",\\n                col_type: \\\"text_1\\\",\\n                extra: {\\n                    id: \\\"timer\\\"\\n                }\\n            })\\n            setResult(a)\\n            while (time != 0) {\\n                java.lang.Thread.sleep(1000)\\n                time -= 1\\n                updateItem(\\\"timer\\\", {\\n                    title: time + \\\"秒后继续\\\"\\n                })\\n            }\\n            updateItem(\\\"timer\\\", {\\n                title: \\\"我已知晓\\\",\\n                url: $().lazyRule(() => {\\n                    setItem(\\\"fs\\\", \\\"1\\\")\\n                    refreshPage()\\n                    return \\\"toast://你已确认\\\"\\n                })\\n            })\\n        } else {\\n            $.require(\\\"hiker://page/login\\\")\\n        }\\n    }\\n} catch (e) {\\n    log(e.message)\\n    d.push({\\n        title: '““””<center><small><span style=\\\"color: #999999\\\">～～～我是有底线的～～～</span></small></center>',\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"icon_2_round\",\"name\":\"用户详情\",\"path\":\"userInfo\",\"rule\":\"js:\\nvar d = [];\\nlet info = MY_PARAMS.data\\nd.push({\\n    title: info.uname,\\n    img: info.face,\\n    url: \\\"hiker://empty\\\"\\n}, {\\n    title: \\\"注销\\\",\\n    url: $(\\\"确认注销登陆？\\\").confirm(() => {\\n        deleteFile(\\\"Cookie.txt\\\")\\n        back()\\n        return \\\"hiker://empty\\\"\\n    }),\\n    img: \\\"hiker://images/开关\\\"\\n})\\nif (info.isLogin != false) {\\n    let level = info.level_info\\n    d.push({\\n        title: `当前${level.current_level}级，经验${level.current_exp}\\\\n距离${level.current_level+1}级，还差${level.next_exp-level.current_exp}\\\\n硬币：${info.money}个`,\\n        col_type: \\\"long_text\\\"\\n    })\\n}\\nsetResult(d);\"},{\"col_type\":\"text_2\",\"name\":\"登陆\",\"path\":\"login\",\"rule\":\"let d = []\\nlet k = JSON.parse(request(\\\"http://passport.bilibili.com/x/passport-login/web/qrcode/generate\\\")).data\\nlet key = k.qrcode_key\\nd.push({\\n    title: \\\"点我登陆\\\",\\n    url: k.url,\\n    col_type: \\\"text_2\\\"\\n}, {\\n    title: \\\"输入Cookie登陆\\\",\\n    url: $(\\\"\\\", \\\"输入抓取到的Cookie\\\").input(() => {\\n        if (input.includes(\\\"SESSDATA\\\") && input.includes(\\\"bili_jct\\\")) {\\n            saveFile(\\\"Cookie.txt\\\", input)\\n            refreshPage()\\n        } else {\\n            toast(\\\"请输入正确cookie！\\\")\\n        }\\n    }),\\n    col_type: \\\"text_2\\\"\\n})\\nsetResult(d)\\nlet noLogin = true\\nvar Cookie = \\\"\\\"\\nwhile (noLogin) {\\n    let sta = fetchCookie(buildUrl(\\\"http://passport.bilibili.com/x/passport-login/web/qrcode/poll\\\", {\\n        \\\"qrcode_key\\\": key\\n    }))\\n    if (sta.length > 0) {\\n        JSON.parse(sta).forEach(item => {\\n            Cookie += item.split(\\\";\\\")[0] + \\\";\\\"\\n        })\\n        saveFile(\\\"Cookie.txt\\\", Cookie)\\n        toast(\\\"登陆成功，返回刷新即可\\\")\\n        refreshPage()\\n        break\\n    }\\n    java.lang.Thread.sleep(3000)\\n}\"},{\"col_type\":\"text_1\",\"name\":\"评论\",\"path\":\"Comments\",\"rule\":\"js:\\nvar d = [];\\nlet id = MY_PARAMS.id\\nif (MY_PAGE == 1) {\\n    d.unshift({\\n        title: \\\"发条评论吧\\\",\\n        col_type: \\\"input\\\",\\n        url: $.toString((id) => {\\n            let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n            post(\\\"http://api.bilibili.com/x/v2/reply/add\\\", {\\n                body: {\\n                    \\\"type\\\": 1,\\n                    \\\"oid\\\": id,\\n                    \\\"csrf\\\": csrf,\\n                    \\\"message\\\": input\\n                },\\n                headers: {\\n                    \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n                }\\n            })\\n            refreshPage()\\n        }, id)\\n    })\\n}\\nvar tabs = [\\\"热度\\\", \\\"时间\\\"]\\ntabs.forEach(item => {\\n    d.push({\\n        title: item,\\n        url: $().lazyRule((i) => {\\n            putMyVar(\\\"sortby\\\", i)\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, item),\\n        col_type: \\\"scroll_button\\\"\\n    })\\n})\\nlet data = $.require(\\\"hiker://page/api\\\").getComments(id, getMyVar(\\\"sortby\\\", \\\"热度\\\"), MY_PAGE)\\ndata.forEach(item => {\\n    d.push({\\n        title: item.member.uname,\\n        img: item.member.avatar,\\n        url: \\\"hiker://page/ups?mid=\\\" + item.member.mid + \\\"#immersiveTheme#\\\",\\n        col_type: \\\"avatar\\\"\\n    })\\n    d.push({\\n        title: item.content.message,\\n        desc: item.reply_control.location + \\\" \\\" + item.reply_control.time_desc,\\n        url: $().rule((text, oid, rpid) => {\\n            let d = [{\\n                title: text,\\n                col_type: \\\"long_text\\\"\\n            }]\\n            let reply = request(buildUrl(\\\"http://api.bilibili.com/x/v2/reply/reply\\\", {\\n                \\\"type\\\": 1,\\n                \\\"oid\\\": oid,\\n                \\\"root\\\": rpid\\n            }), {\\n                headers: {\\n                    \\\"Cookie\\\": readFile(\\\"Cookie.txt\\\")\\n                }\\n            })\\n            d.push({\\n                col_type: \\\"line\\\"\\n            })\\n            try {\\n                JSON.parse(reply).data.replies.forEach(item => {\\n\\n                    d.push({\\n                        title: item.member.uname,\\n                        img: item.member.avatar,\\n                        url: \\\"hiker://page/ups?mid=\\\" + item.member.mid + \\\"#immersiveTheme#\\\",\\n                        col_type: \\\"avatar\\\"\\n                    }, {\\n                        title: item.content.message,\\n                        desc: item.reply_control.location + \\\" \\\" + item.reply_control.time_desc,\\n                        col_type: \\\"text_1\\\"\\n                    })\\n                })\\n            } catch (e) {}\\n            setResult(d)\\n        }, item.content.message, id, item.rpid + \\\"\\\")\\n    })\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_2\",\"name\":\"UP主页\",\"path\":\"ups\",\"rule\":\"js:\\nvar d = [];\\nvar mid = getParam(\\\"mid\\\")\\nif (MY_PAGE == 1) {\\n    var info = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/space/acc/info\\\", {\\n        \\\"mid\\\": mid\\n    }), {\\n        headers: {\\n            Cookie: readFile(\\\"Cookie.txt\\\")\\n        }\\n    })).data\\n    d.push({\\n        title: info.name,\\n        img: info.face,\\n        desc: info.sign,\\n        url: $().rule((info) => {\\n            setResult([{\\n                title: info,\\n                col_type: \\\"long_text\\\"\\n            }])\\n        }, info.sign),\\n        col_type: \\\"movie_1_vertical_pic_blur\\\"\\n    }, {\\n        title: (info.is_followed ? \\\"取消关注\\\" : \\\"关注\\\"),\\n        col_type: \\\"text_center_1\\\",\\n        url: $().lazyRule((is_followed, mid) => {\\n            let csrf = readFile(\\\"Cookie.txt\\\").match(/bili_jct=(.*?);/)[1]\\n            post(\\\"https://api.bilibili.com/x/relation/modify\\\", {\\n                body: {\\n                    \\\"fid\\\": mid,\\n                    \\\"act\\\": is_followed ? 2 : 1,\\n                    \\\"csrf\\\": csrf\\n                },\\n                headers: {\\n                    Cookie: readFile(\\\"Cookie.txt\\\")\\n                }\\n            })\\n            refreshPage()\\n            return \\\"hiker://empty\\\"\\n        }, info.is_followed, mid)\\n    })\\n}\\n$.require(\\\"hiker://page/api\\\").upVideos(mid, MY_PAGE).data.list.vlist.forEach(item => {\\n    let id = item.aid + \\\"\\\"\\n    let bvid = item.bvid\\n    let p = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/player/pagelist\\\", {\\n        \\\"aid\\\": id\\n    }))).data\\n    d.push({\\n        url: \\\"hiker://page/detail#gameTheme#\\\",\\n        title: item.title,\\n        img: item.pic,\\n        extra: {\\n            \\\"id\\\": id,\\n            \\\"cid\\\": p[0].cid,\\n            \\\"bvid\\\": bvid\\n        }\\n    })\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_2\",\"name\":\"搜索\",\"path\":\"search\",\"rule\":\"js:\\ntry {\\n    var d = [];\\n    var kw = getParam(\\\"kw\\\")\\n    var type = getParam(\\\"type\\\")\\n    var cookie = JSON.parse(fetchCookie(\\\"https://bilibili.com\\\")).join(\\\";\\\")\\n    let res = JSON.parse(request(\\\"http://api.bilibili.com/x/web-interface/search/type?search_type=\\\" + type + \\\"&keyword=\\\" + kw + \\\"&page=\\\" + MY_PAGE, {\\n        headers: {\\n            \\\"Cookie\\\": cookie\\n        }\\n    })).data.result\\n    if (type == \\\"bili_user\\\") {\\n        res.forEach(item => {\\n            d.push({\\n                title: item.uname,\\n                img: \\\"https:\\\" + item.upic,\\n                url: \\\"hiker://page/ups?mid=\\\" + item.mid + \\\"#gameTheme#\\\",\\n                col_type: \\\"avatar\\\"\\n            })\\n        })\\n    } else {\\n        res.forEach(item => {\\n            if (item.is_avid != false) {\\n                var p = JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/player/pagelist\\\", {\\n                    \\\"aid\\\": item.aid\\n                }))).data\\n                d.push({\\n                    title: item.title.replace(/<[^>]*>|<\\\\/[^>]*>/gm, \\\"\\\"),\\n                    img: \\\"https:\\\" + item.pic,\\n                    url: \\\"hiker://page/detail#gameTheme#\\\",\\n                    extra: {\\n                        \\\"id\\\": item.aid,\\n                        \\\"bvid\\\": item.bvid,\\n                        \\\"cid\\\": p[0].cid\\n                    }\\n                })\\n            } else {\\n                d.push({\\n                    title: item.title.replace(/<[^>]*>|<\\\\/[^>]*>/gm, \\\"\\\"),\\n                    img: item.cover,\\n                    url: \\\"hiker://page/detaila#gameTheme#\\\",\\n                    extra: {\\n                        \\\"ssid\\\": item.season_id\\n                    }\\n                })\\n            }\\n        })\\n    }\\n} catch (e) {\\n    log(e.message)\\n    setResult([{\\n        title: '““””<center><small><span style=\\\"color: #999999\\\">～～～我是有底线的～～～</span></small></center>',\\n        col_type: \\\"text_center_1\\\",\\n        url: \\\"hiker://empty\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    }])\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_2\",\"name\":\"剧集详情\",\"path\":\"detaila\",\"rule\":\"js:\\nvar d = [];\\nvar season_id = MY_PARAMS.ssid + \\\"\\\"\\nvar episode_id = MY_PARAMS.epid + \\\"\\\"\\nlet info = JSON.parse(request(\\\"http://api.bilibili.com/pgc/view/web/season?season_id=\\\" + season_id)).result\\nd.push({\\n    title: info.season_title,\\n    img: info.cover,\\n    desc: info.evaluate,\\n    url: $().rule((text) => {\\n        setResult([{\\n            title: text,\\n            col_type: \\\"long_text\\\"\\n        }])\\n    }, info.evaluate),\\n    col_type: \\\"movie_1_vertical_pic_blur\\\"\\n})\\ninfo.episodes.forEach(item => {\\n    d.push({\\n        title: item.long_title ? item.long_title : item.title,\\n        img: item.cover,\\n        url: \\\"hiker://page/detail#gameTheme#\\\",\\n        extra: {\\n            \\\"id\\\": item.aid,\\n            \\\"cid\\\": item.cid,\\n            \\\"bvid\\\": item.bvid\\n        }\\n    })\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"categories-header\",\"rule\":\"js:\\n/**\\n * 使用说明：\\n * 1.提前建立好 分类所属类型和分类列表 的对应关系，即 get 函数中的 categories\\n * 2.设置子分类数据的 key，调用 setSubCategoriesItemKey(titleKey, urlKey)\\n * 3.然后调用 CategoriesHeader.get(layout, categories, page)\\n *\\n * 支持链式调用，一句话即可调用生成分类，即：\\n * CategoriesHeader\\n *    .setSubCategoriesItemKey(titleKey, urlKey)\\n *    .get(layout, categories, page)\\n *\\n * @type {{setSubCategoriesItemKey: CategoriesHeader.setSubCategoriesItemKey, get: CategoriesHeader.get, categoriesKey: {title: string, url: string}}}\\n */\\nlet CategoriesHeader = {\\n    categoriesKey: {\\n        sub_categories: '',\\n        title: '',\\n        url: '',\\n    },\\n    /**\\n     * 1.设置从分类列表中拿的子分类的数据 key，\\n     *   根据 key 拿到数据后，\\n     *   会自动赋值给 scroll_button 的 { title: item[titleKey], url: item[urlKey] }\\n     *\\n     * @param title_key title 的 key\\n     * @param url_key url 的 key\\n     */\\n    setSubCategoriesItemKey : (title_key, url_key) => {\\n        CategoriesHeader.categoriesKey.title = title_key\\n        CategoriesHeader.categoriesKey.url = url_key\\n        return CategoriesHeader;\\n    },\\n    setSubCategoriesKey: (sub_categories_key) => {\\n        CategoriesHeader.categoriesKey.sub_categories = sub_categories_key\\n        return CategoriesHeader;\\n    },\\n    /**\\n     * 2.获取分类头部\\n     *\\n     * @param layout 当前界面，即常用的 d.push 的 d\\n     * @param categories 分类所属类型和分类列表的对应关系表，\\n     *        如：\\n     *        {\\n     *           \\\"年份\\\": [{ \\\"name\\\": \\\"2021\\\", \\\"value\\\": \\\"2021\\\" }, { \\\"name\\\": \\\"2020\\\", \\\"value\\\": \\\"2020\\\" }...],\\n     *           \\\"排序\\\": [{ \\\"name\\\": \\\"热度\\\", \\\"value\\\": \\\"hot\\\" }, { \\\"name\\\": \\\"时间\\\", \\\"value\\\": \\\"time\\\" }...],\\n     *        }\\n     * @param page 页码\\n     * @param urlListener 额外处理 button 的 url，需要 return\\n     */\\n    get: (layout, categories, page, urlListener) => {\\n        // log(categories)\\n        // 分类所属类型的列表，如：[ \\\"年份\\\", \\\"排序\\\" ]\\n        let category_names = Object.keys(categories)\\n        let types = []\\n        // 根据对应关系表拿分类列表\\n        category_names.map(category_name => {\\n            // 这里会拿到 年份 排序... 其中一个\\n            types.push(categories[category_name]);\\n            // 这里下面对 types 的值进行处理\\n        })\\n        categories = types;\\n        let init_cate = []\\n\\n        for (let i = 0; i < 20; i++) {\\n            init_cate.push(\\\"0\\\")\\n        }\\n\\n        const cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\n        const cate_temp = JSON.parse(cate_temp_json)\\n\\n        if (parseInt(page) === 1) {\\n            /**\\n             * 遍历第 index 层分类\\n             */\\n            categories.forEach((category, index) => {\\n                let sub_category_name = category_names[index]\\n                let sub_categories_key = CategoriesHeader.categoriesKey.sub_categories\\n                let sub_categories = sub_categories_key ? category[sub_categories_key] : category;\\n                // log(category)\\n                /**\\n                 * 在第 index 层分类中遍历该层所有子分类\\n                 */\\n                sub_categories.forEach((item, key) => {\\n                    let title = item[CategoriesHeader.categoriesKey.title]\\n                    let url = escape(item[CategoriesHeader.categoriesKey.url])\\n                    if (urlListener) url = urlListener.onDeal(item, sub_category_name, url)\\n                    layout.push({\\n                        title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: #FA7298\\\">' + title + '</span></b>' : title,\\n                        url: $(url).lazyRule((params) => {\\n                            params.cate_temp[params.index] = params.key.toString()\\n\\n                            putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                            putVar(MY_RULE.url + \\\"#\\\" + params.sub_category_name, input)\\n                            refreshPage(true)\\n                            return \\\"hiker://empty\\\"\\n                        }, {\\n                            cate_temp: cate_temp,\\n                            index: index,\\n                            key: key,\\n                            page: page,\\n                            sub_category_name: sub_category_name\\n                        }),\\n                        col_type: 'scroll_button',\\n                    })\\n                })\\n                layout.push({\\n                    col_type: \\\"blank_block\\\"\\n                });\\n            })\\n        }\\n    }\\n}\\n$.exports.CategoriesHeader=CategoriesHeader\"},{\"col_type\":\"movie_3\",\"name\":\"分类 By Rx\",\"path\":\"cat\",\"rule\":\"const {\\n    CategoriesHeader\\n} = $.require(\\\"hiker://page/categories-header\\\")\\nlet mCategories = {}\\nlet catUrl = 'https://www.bilibili.com/anime/index/'\\nlet catSrc = request(catUrl)\\n// log(catSrc)\\nlet catRegex = /window\\\\.__INITIAL_STATE__=(.*?);\\\\(function\\\\(\\\\)\\\\{/\\nif (catRegex.test(catSrc)) {\\n    // log(RegExp.$1)\\n    let category = JSON.parse(RegExp.$1)\\n    let mFilters = category.filters;\\n    // log(mFilters)\\n    mFilters.map(filter => mCategories[filter.key] = filter.list)\\n    let orders = category.orders\\n    let mOrders = []\\n    orders.map(order => {\\n        let mOrder = {}\\n        mOrder.name = order.title\\n        mOrder.value = order.key\\n        mOrders.push(mOrder)\\n    })\\n    // log(mOrders)\\n    mCategories['order'] = mOrders\\n}\\nputVar(MY_RULE.url + \\\"#categories\\\", JSON.stringify(mCategories))\\n\\nlet keys = Object.keys(mCategories)\\n// log(mCategories)\\n// log(keys)\\n/**\\n * 组合当前分类链接\\n */\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\ntrue_url = 'https://api.bilibili.com/pgc/season/index/result?'\\nfor (let it of keys) {\\n    let cat_url = getVar(MY_RULE.url + \\\"#\\\" + it, it === 'orders' ? '3' : '-1')\\n    true_url += (cat_url ? '&' + it + '=' + cat_url : '')\\n}\\n// let page = 1\\nconst page = MY_PAGE\\ntrue_url = true_url +\\n    '&st=1&sort=0&season_type=1&pagesize=20&type=1' +\\n    '&page=' + page\\n// log(true_url)\\n\\nconst empty = \\\"hiker://empty\\\"\\n\\nCategoriesHeader\\n    .setSubCategoriesItemKey('name', 'value')\\n    .get(d, mCategories, page)\\n/**\\n * 获取当前分类页面源码\\n */\\ntry {\\n    var sylist = JSON.parse(request(true_url, {})).data.list;\\n\\n    /**\\n     * 列表数据源\\n     */\\n    for (let data of sylist) {\\n        d.push({\\n            title: data.title /*+ '/' + data.index_show*/ ,\\n            desc: data.order,\\n            img: data.cover,\\n            url: 'hiker://page/detaila#gameTheme#',\\n            col_type: 'movie_3',\\n            extra: {\\n                \\\"media_id\\\": data.media_id,\\n                \\\"ssid\\\": data.season_id\\n            }\\n        });\\n    }\\n} catch (e) {\\n    log(e.message)\\n}\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3qQPg.png"},{"last_chapter_rule":"","title":"438影院🐯","author":"逐风者&20220204","version":4,"type":"video","url":"http://www.438kp.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&li:not(:matches(首页|留言|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/-(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '-' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\npdfa(html, '.stui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, ''),\n       img: pd(list, '.lazyload&&data-original')+\"@Referer=\",\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+\"@Referer=\",//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.438kp.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head:has(.more)\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1--span&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.stui-content__thumb&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\"}]","proxy":"","icon":"http://www.438kp.com/statics/img/logo.png"},{"last_chapter_rule":".info-box&&ul&&li&&Text","title":"美剧天堂","author":"永远の明日","version":7,"type":"video","url":"https://www.meijutt.tv/fypage_fyclass__.js:input+encodeStr('fyarea_fyyear___fysort.html','GB2312');GET;GB2312","col_type":"movie_3_marquee","class_name":"剧情:&魔幻/科幻&灵异/惊悚&都市/情感&犯罪/历史&选秀/综艺&动漫/卡通","class_url":"&1&2&3&4&5&6","area_name":"地区:&美国&英国&加拿大&澳大利亚&西班牙&法国&德国&巴西&意大利&墨西哥&俄罗斯&土耳其&其它","area_url":"&美国&英国&加拿大&澳大利亚&西班牙&法国&德国&巴西&意大利&墨西哥&俄罗斯&土耳其&其它","sort_name":"最新更新&评分排行&总排行&月排行&周排行&首字母&推荐等级&顶排行","year_name":"状态:&连载中&本季终&全剧完结&预告","sort_url":"time&score&hit&monthhit&weekhit&letter&commend&digg","year_url":"&连载中&本季终&全剧完结&预告","find_rule":".list3_cn_box&&.cn_box2;li,0&&Text;img&&src;li,1&&Text;a&&href.js:input+'#immersiveTheme#'","searchFind":"js:\r\nsetResult(parseDomForArray(getResCode(), '.list3_cn_box&&.cn_box2').map((v) => {\r\n  let info = parseDomForArray(v, 'ul&&li')\r\n  return {\r\n    title: parseDomForHtml(info[0], 'Text'),\r\n    desc: parseDomForHtml(info[6], 'Text').slice(4) + ' • ' + parseDomForHtml(v, 'em&&Text') + '分',\r\n    content: parseDomForHtml(info[1], 'Text') + '\\n' + parseDomForHtml(info[5], 'Text'),\r\n    url: parseDom(v, 'a&&href') + '#immersiveTheme#',\r\n    img: parseDom(v, 'img&&src'),\r\n  }\r\n}))","search_url":"/search/index.asp?searchword=**;GET;GB2312","titleColor":"#13b66a","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nlet d = [{ desc: \"0\", col_type: \"x5_webview_single\" }],\n  html = getResCode(), tabMode = getVar('meijutt-tabMode', '0')\n\n//简介\nlet title = parseDomForArray(html, '.info-box&&ul&&li')\n  .map((v) => parseDomForHtml(v, 'li&&Text'))\n  .filter((v, i) => i == 0 || v.indexOf('首播') == 0).join('\\n'),\n  desc = parseDomForHtml(html, '.des_box&&Text'),\n  img = parseDom(html, '.info-box&&img&&src')\n//选集\nlet tabs = [[], [], []]\nArray.prototype.concat.apply([],\n  parseDomForArray(html, '.o_cn_r_box&&.from-tabs')\n  .map((v) => parseDomForArray(v, 'div&&label'))\n).forEach((v, i) => {\n  let tabClass = /class=\"(.*?)[ \"]/.exec(v)[1]\n  if (/downcili-ico|down-ico/.exec(tabClass)) tabs[0][i] = parseDomForHtml(v, 'Text')\n  else if (/playIco_yunbo/.exec(tabClass)) tabs[1][i] = parseDomForHtml(v, 'Text')\n  else if (/playIco_(dupan|xunlei)/.exec(tabClass)) tabs[2][i] = parseDomForHtml(v, 'Text')\n})\n//列表\nlet lists = parseDomForArray(html, '.o_cn_r_box&&div>ul')\n\nd.push({\n  title: title,\n  desc: desc,\n  url: MY_URL,\n  img: img,\n  col_type: 'movie_1_vertical_pic_blur'\n}, {\n  title: ['✅', '', ''][tabMode] + ' 磁链[' + Object.keys(tabs[0]).length + ']',\n  url: $('#noHistory#').lazyRule(() => (putVar('meijutt-tabMode', '0'), refreshPage(), 'toast://已切换')),\n}, {\n  title: ['', '✅', ''][tabMode] + ' 云播[' + Object.keys(tabs[1]).length + ']',\n  url: $('#noHistory#').lazyRule(() => (putVar('meijutt-tabMode', '1'), refreshPage(), 'toast://已切换')),\n}, {\n  title: ['', '', '✅'][tabMode] + ' 云盘[' + Object.keys(tabs[2]).length + ']',\n  url: $('#noHistory#').lazyRule(() => (putVar('meijutt-tabMode', '2'), refreshPage(), 'toast://已切换')),\n})\n\ntabs[tabMode].forEach((v, i, self) => {\n  let list = parseDomForArray(lists[i], 'ul&&li')\n  i = Object.keys(self).indexOf(i.toString())\n  if (list.length) {\n    d.push({ col_type: 'line_blank' }, {\n      title: '““””<b><span style=\"color:#13b66a\">' + v + '</span></b>',\n      url: 'hiker://empty',\n      col_type: 'text_center_1'\n    })\n    list.forEach((vv, ii) => {\n      let url = parseDom(vv, 'a&&href'),\n        title = parseDomForHtml(vv, 'a&&Text'),\n        item = [{\n          title: title,\n          url: url + '#ignoreVideo=true#',\n          col_type: 'text_' + [title.length > 5 ? 1 : 3, 4, 2][tabMode]\n        }]\n      if (tabMode == 1) {\n        item[0].url = $(url).lazyRule((i, ii) => {\n          eval(fetch(parseDom(fetch(input), '.ptitle&&script&&src')).split(',urlinfo=')[0])\n          return VideoListJson[i][1][ii][1].replace(/\\.[0-9](.*?)$/, '.$1')\n        }, i, ii)\n      } else if (tabMode == 2) {\n\t\tlog(vv)\n        let word = parseDomForHtml(vv, 'span&&Text').slice(3)\n        item[0].title = parseDomForHtml(vv, 'strong&&Text') + '  提取码: ' + word\n        item[0].url = $('').x5Rule((url, word) => {\n          let text = document.createElement('textarea')\n          document.body.appendChild(text)\n          text.value = word\n          text.select()\n          document.execCommand('Copy')\n          document.body.removeChild(text)\n          window.location.href = url\n          alert('提取码已复制，自行粘贴至输入框')\n        }, url, word)\n        item.push({\n          title: '复制盘口令',\n          url: 'copy://' + url + ' 提取码: ' + word,\n          col_type: 'text_3'\n        })\n      }\n      Array.prototype.push.apply(d, item)\n    })\n  }\n})\nsetResult(d)","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.meijutt.tv/template/meijutt/images/logo.png"},{"last_chapter_rule":"","title":"300看世界🐯","author":"逐风者&20220703","version":0,"type":"video","url":"http://300kan.top/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"38&39&40&41","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&data-src') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.module-search-item');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a,1&&title'),//【标题】\n            pic_url: parseDom(list[i], 'img&&data-src'),//【图片】\n            desc: parseDomForHtml(list[i], '.video-serial&&Text'),//【描述】\n            content: parseDomForHtml(list[i], '.video-info-item,-1&&Text'),//【详情】\n            url: parseDom(list[i], 'a,1&&href'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-src');\\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/简介：/,'').replace('收起','').replace('展开全部','');\\n\"}]","proxy":"","icon":"http://300kan.top/mxstatic/image/logo.png"},{"last_chapter_rule":"","title":"水煮鱼影视🐯","author":"逐风者&20220602","version":0,"type":"video","url":"https://www.shuizhuyuyingshi.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist_item');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic_text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href').replace('voddetail','vodplay').replace('.html','-1-1.html')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.searchlist_item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'pic_text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-1&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href').replace('voddetail','vodplay').replace('.html','-1-1.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.shuizhuyuyingshi.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.play_source_tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h3&&Text');\\nvar 导演 = parseDomForHtml(html, '').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, '.lazy||.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '').replace(/简介：/,'').replace('收起','').replace('详情：','').replace('展开','');\"},{\"col_type\":\"movie_3\",\"name\":\"二级\",\"path\":\"erji\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\nputVar(\\\"_x5\\\", $.toString(() => {\\n    var urls = _getUrls()\\n    var newUrls = urls.filter(url => {\\n        return !url.includes(\\\"url=\\\") &&\\n            url.match(/\\\\.mp4|\\\\.m3u8|\\\\.flv/)\\n    });\\n    return newUrls[0]\\n}))\\nvar lazy = \\\"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\\\";\\n\\n\\neval(JSON.parse(request('hiker://page/xnxi')).rule)\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:parseDom(list[j], 'a&&href') + lazy,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:parseDom(list[j], 'a&&href') + lazy,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '香情',\\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"}]","proxy":"","icon":"https://www.shuizhuyuyingshi.com/upload/site/20220214-1/1e8b2de6989d716ae90613db159ae6c4.jpg"},{"firstHeader":"class","last_chapter_rule":"","title":"最爱片源","author":"永远の明日","version":3,"type":"other","url":"https://www.z2py.com/page/fypage?area=fyarea&year=fyyear&type=fysort&fyclass","col_type":"movie_3_marquee","class_name":"电影&剧集&||&最近更新&评分排行&||&按资源:&蓝光原盘&Remux&BluRay-3D&BluRay-1080P&BluRay-720P&4K&WEB-1080P&WEB-720P&HDTV/HDRip/DVDRip&TS/CAM/HC/DVDScr&|| 使用须知","class_url":"mv&tv&fytip&order=update&order=score&fytip&quality=&quality=蓝光原盘&quality=Remux&quality=BluRay-3D&quality=BluRay-1080P&quality=BluRay-720P&quality=4K&quality=WEB-1080P&quality=WEB-720P&quality=HDTV/HDRip/DVDRip&quality=TS/CAM/HC/DVDScr&fytip","area_name":"地区:&大陆&香港&美国&英国&日本&韩国&法国&印度&德国&西班牙&意大利&澳大利亚&比利时&瑞典&荷兰&丹麦&加拿大&俄罗斯","area_url":"&大陆&香港&美国&英国&日本&韩国&法国&印度&德国&西班牙&意大利&澳大利亚&比利时&瑞典&荷兰&丹麦&加拿大&俄罗斯","sort_name":"剧情:&动作&科幻&喜剧&爱情&剧情&惊悚&恐怖&犯罪&悬疑&冒险&纪录片&家庭&动画&奇幻&历史&传记&歌舞&西部&战争","year_name":"年代:&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"&动作&科幻&喜剧&爱情&剧情&惊悚&恐怖&犯罪&悬疑&冒险&纪录片&家庭&动画&奇幻&历史&传记&歌舞&西部&战争","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\r\nlet data = [], [, fyother, fyclass] = /^https:\\/\\/www.z2py.com\\/(.*)&(.*?)$/.exec(MY_URL),\r\n  act = getVar('z2py-act', 'mv'), order = getVar('z2py-order', 'order=update')\r\nif (fyclass.indexOf('=') > 0) order = fyclass\r\nelse if (fyclass != 'fytip') act = fyclass\r\nif (fyclass == 'fytip') {\r\n  data.push({\r\n    title: '当前类型: ' + act + ', ' + order,\r\n    col_type: 'text_1'\r\n  }, {\r\n    title: `<li><p>本规则在第一行分类关键词中加入了缓存功能，例如：</p>\\\r\n<p>先选择【剧集】，再选择【最近更新】（或【蓝光原盘】），【剧集】会被保存下来；</p>\\\r\n<p>此时相当于同时选择了【剧集】和【最近更新】（或【蓝光原盘】），反之亦然。</p>\\\r\n</li><li>\\\r\n<p>搜索时会按照缓存选择【搜影视】或【搜资源】，分别对应【最近更新】分类和【按资源】分类；</p>\\\r\n<p>或者可以强制指定，例如：以【act:】开头进行【搜影视】；以【res:】开头进行【搜资源】。</p></li>`,\r\n    col_type: 'rich_text'\r\n  })\r\n} else if (order.indexOf('quality=') == 0) {\r\n  let html = fetch('https://www.z2py.com/' + fyother + '&' + order + '&cat=' + act, {})\r\n  parseDomForArray(html, 'tbody&&tr').forEach((v) => {\r\n    let info = v.match(/<td.*?>[\\s\\S]*?<\\/td>/g).map((vv) => parseDomForHtml(vv, 'Text'))\r\n    data.push({\r\n      title: info[1] + ' | ' + /《(.*?)》/.exec(info[0])[1],\r\n      url: parseDom(v, 'a,1&&href') + '@lazyRule=#tabContent1&&a,1&&href',\r\n      col_type: 'text_1'\r\n    })\r\n  })\r\n} else {\r\n  let html = fetch('https://www.z2py.com/' + act + '/' + fyother + '&' + order)\r\n  parseDomForArray(html, '.cards&&.card').forEach((v) => data.push({\r\n    title: parseDomForHtml(v, 'p&&Text'),\r\n    url: parseDom(v, 'a&&href'),\r\n    desc: parseDomForHtml(v, 'span&&Text') + ' | ' + parseDomForHtml(v, 'p,1&&Text'),\r\n    pic_url: parseDom(v, 'img&&src')\r\n  }))\r\n}\r\nsetResult(data)\r\nputVar('z2py-act', act)\r\nputVar('z2py-order', order)","searchFind":"js:\r\nlet data = [], html = getResCode(), mode = /^(res:|act:)(.*)[01]$/.exec(MY_URL.slice(28))\r\nif (mode) {\r\n  MY_URL = 'https://www.z2py.com/search/' + mode[2] + (mode[1] == 'res:' ? '1' : '0')\r\n  html = fetch(MY_URL, {})\r\n}\r\nif (MY_URL.charAt(MY_URL.length - 1) == '1') {\r\n  parseDomForArray(html, 'tbody&&tr').forEach((v) => {\r\n    let info = v.match(/<td.*?>[\\s\\S]*?<\\/td>/g).map((vv) => parseDomForHtml(vv, 'Text'))\r\n    data.push({\r\n      title: info[0],\r\n      url: parseDom(v, 'a&&href') + '@lazyRule=#tabContent1&&a,1&&href',\r\n      content: info[1],\r\n      desc: info[2]\r\n    })\r\n  })\r\n} else {\r\n  parseDomForArray(html, '.search-result&&.movie-detail').forEach((v) => {\r\n    let detail = parseDomForArray(v, 'ul&&li').slice(1, -1).map((vv) => parseDomForHtml(vv, 'Text'))\r\n    data.push({\r\n      title: parseDomForHtml(v, 'h2&&Text'),\r\n      url: parseDom(v, 'a&&href'),\r\n      content: detail.slice(2).join('\\n'),\r\n      desc: detail.slice(0, 2).join(' | '),\r\n      pic_url: parseDom(v, 'img&&src')\r\n    })\r\n  })\r\n}\r\nsetResult(data)","search_url":"https://www.z2py.com/search/**?p=fypage&type=.js:input+getVar('z2py-order','order=').indexOf('order=')==0?'0':'1'","titleColor":"#13b66a","group":"视频","detail_col_type":"text_1","detail_find_rule":"js:\r\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\r\nlet data = [], html = getResCode();\r\n//简介\r\nlet desc = parseDomForArray(html, '.movie-detail&&ul&&li:lt(3)').map((v) => parseDomForHtml(v, 'Text')).join('\\n')\r\n//图片\r\nlet img = parseDom(html, '.movie-detail&&img&&src')\r\n//标签\r\nlet tags = parseDomForHtml(html, '.movie-top&&span&&Text')\r\n//选集\r\nlet tabs = parseDomForArray(html, '.resource-list&&.nav-tabs')\r\n//列表\r\nlet lists = parseDomForArray(html, '.resource-list&&.tab-content')\r\n\r\ndata.push({\r\n  title: tags,\r\n  desc: desc,\r\n  url: MY_URL,\r\n  pic_url: img,\r\n  col_type: 'movie_1_vertical_pic'\r\n})\r\ntabs.forEach((v, i) => {\r\n  let list = parseDomForArray(lists[i], 'tbody&&tr')\r\n  if (list.length) {\r\n    data.push({\r\n      title: '““””<span style=\"color:#13b66a\"><b>' + parseDomForHtml(v, 'Text') + '</b></span>',\r\n      col_type: 'text_center_1'\r\n    })\r\n    list.forEach((v) => {\r\n      let info = v.match(/<td.*?>[\\s\\S]*?<\\/td>/g).map((vv) => parseDomForHtml(vv, 'Text'))\r\n      data.push({\r\n        title: info[2] + ' | ' + info[0],\r\n        url: parseDom(v, 'a&&href') + '@lazyRule=#tabContent1&&a,1&&href'\r\n      })\r\n    })\r\n    data.push({ col_type: 'line_blank' })\r\n  }\r\n})\r\nif (data.length > 4) data.pop()\r\nsetResult(data)","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"#13b66a"},{"last_chapter_rule":"","title":"夜一电影网🐯","author":"逐风者20211231","version":1,"type":"video","url":"https://m.yeyidy.com/vt/fyAll/index_fypage.html[firstPage=https://m.yeyidy.com/vt/fyAll/]","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&蓝光资源","class_url":"1&2&3&4&64","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&动漫电影","area_url":"6&7&8&9&10&11&12&20&21&23","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&泰国剧&海外剧","sort_url":"","year_url":"13&14&15&16&27&26","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text')+' '+parseDomForHtml(list[j], '.pic-tag&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'a&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://m.yeyidy.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//调用断插\nvar config = fetch('hiker://files/cache/MyParseSet.json');\n\nif(config == '' || !fetch(JSON.parse(config).cj)){\n\n    var jsUrl = 'https://code.aliyun.com/AI957/Hiker/raw/master/v/CloudParse-V2_Dn.js';\n\n}else{\n\n    var jsUrl = JSON.parse(config).cj;\n\n} eval(fetch(jsUrl));\n\n//断插免嗅探\nvar lazy = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.myui-content__detail&&p,5&&Text').replace(/详情/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://m.yeyidy.com/template/mytheme/statics/image/20200718/bd813a26e.png"},{"last_chapter_rule":"","title":"炫猫影视🐯","author":"离别&墙佬&逐风者20211230","version":4,"type":"video","url":"hiker://empty##https://www.xuanmao520.com/vod/type/id/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n  //这里是随机颜色代码\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.myui-nav__tabbar'\n//这里是四大金刚的定位,现在看看是否正常显示。\n\nconst 拼接分类 = 'body&&.myui-screen__list'\n//这里是定位年代什么的\n\nconst 小类定位 = 'body&&a:not(:matches(专题|明星))'\n//因为前面多了一排不需要的所以用--排除第一个a\n\nconst 分类标题 = 'a&&Text'\n//这里几乎不需要动\nconst 分类链接 = 'a&&href'\n//这里也是\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n//这一块，你们不会正则的，其实嫖了这么多动态分类的。咋们直接用链接去搜，我操作一遍给你们看看，套娃就是复制粘贴\n\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\n\npdfa(html, '.myui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-text&&Text'),\n       img: pd(list, '.lazyload&&data-original'),\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.xuanmao520.com/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else if(jsurl.match(/renrenmi/)){x=request('https://jx.178du.com/ku/analysis.php?v='+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8',fetch(x, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+x}else if(jsurl.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/rules/DuanNian/MyParse.json\"));eval(request(config.settings.cj));ParseS.maoss(\"https://jx.tutou.work/?url=\" + jsurl, false, \"A42EAC0C2B408472\")}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.xuanmao520.com/template/mytheme/statics/img/logo.png"},{"last_chapter_rule":"","title":"周六影院🐯","author":"逐风者20220103&帅才大佬&格格大佬&鸠魁大佬","version":3,"type":"video","url":"http://m.zlyk1.com/index.php?s=vod-ajaxshow-id-fyclass-p-fypage.html&pagesize=18&status=1","col_type":"movie_3","class_name":"推荐&电视剧&电影&动漫 ","class_url":"1&7&2&8","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\n  /*\nvar list = parseDomForArray(getResCode(), 'body&&.hot-tv&&li');//列表\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'img&&title'),//标题\n       desc: parseDomForHtml(list[j], '.jiji&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\n       pic_url: parseDom(list[j], 'img&&src'),//图片\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\n  });\n}*/\nvar list=JSON.parse(getResCode()).data;\nfor(var i in list){\nd.push({\ntitle: list[i].vod_name,\ndesc: list[i].vod_continu,\npic_url: 'http://m.zlyk1.com'+list[i].vod_thumb+\"@Referer=\",\nurl: 'http://m.zlyk1.com'+list[i].url+'#immersiveTheme#',\ncol_type:'movie_3'\n});\n}\n\n}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.search-tv');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'span&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p&&Text')+'\\n'+parseDomForHtml(list[j], 'p,1&&Text')+'\\n'+parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&src'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://m.zlyk1.com/search/**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*u=/,'').replace(/https.*u=/,'')\n        }\n    }\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.ji-to&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.v_l_p1');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.v_l_p1&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.info-msg&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.info-msg&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.info-msg&&p&&Text');\n\nvar 状态 = parseDomForHtml(html, '.info-msg&&p,-1&&Text');\n\nvar 图片 = parseDom(html, '.info-img&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.info-c01,1&&Text').replace(/详细 >/,'');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"q\",\"path\":\"q\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, 'body&&p,3&&Text');\\n\\nvar 状态 = parseDomForHtml(html, 'body&&p,0&&Text');\\n\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\n\\nvar 简介 = parseDomForHtml(html, 'body&&p,4&&Text').replace(/详细 >/,'');\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"}]","proxy":"","icon":"http://m.zlyk1.com/statics/zl_v3/images/logo.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = pdfa(html, 'body&&.scroll-box-y')[0];\n//选集列表的定位\nvar list = pdfa(conts, 'body&&a');\nvar title = pdfh(list[list.length - 1], 'span&&Text');\nsetResult(\"更新至: \" + title);","title":"F7·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://www.f7hkj.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首|表|更|榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype(\\/\\d+).*/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nconst list = pdfa(html, 'body&&.module-item')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\nreturn JSON.parse(request('https://www.f7hkj.cc/bfq/API.php', {\n    body: 'url=' + url,\n    method: 'POST'\n})).url\n});\n\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.f7hkj.cc/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"星辰影院🐯","author":"逐风者","version":22082222,"type":"video","url":"http://www.40yb.com/fyAll/indexfypage.html[firstPage=http://www.40yb.com/fyAll/index.html]","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&dianshiju&dongman&zongyi","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'),//【图片】\n            desc: parseDomForHtml(list[i], '.pic-text&&Text'),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.40yb.com/search.php?page=fypage&searchword=**=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n    return x5rule(input, input);\n});\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详细','').replace('\\\\>','');\"}]","proxy":"","icon":"http://www.40yb.com/favicon.ico"},{"last_chapter_rule":"","title":"VIP电影院🐯","author":"逐风者&20211115","version":2,"type":"video","url":"http://www.ceroti.cn/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"国产剧&港台剧&日韩剧&欧美剧","area_url":"13&14&15&16","sort_name":"动画片&纪录片","year_name":"动作片&喜剧片&爱情片&科幻片&恐惧片&剧情片&战争片","sort_url":"29&19","year_url":"6&7&8&9&10&11&12","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.hidden-mi&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.ceroti.cn/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1--span&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, '.stui-content__thumb&&.pic-text&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, 'body&&.stui-pannel_bd:not(.clearfix)&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"http://www.ceroti.cn/favicon.ico"},{"last_chapter_rule":"","title":"cho酷吧电影院🐯","author":"逐风者&20210927","version":8,"type":"video","url":"https://www.chok8.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&直播","class_url":"dianying&lianxuju&zongyi&dongman&zhibo","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&犯罪片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&fanzuipian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju","find_rule":"body&&.col-md-7;.text-overflow&&Text;.lazyload&&data-original;.text-right&&Text;a&&href","searchFind":".stui-pannel_bd&&li;.title&&Text;a&&href;.lazyload&&Text;.margin-0&&Text;.lazyload&&data-original+'@Referer='","search_url":"https://www.chok8.com/vodsearch/-------------.html?wd=**","group":"视频","detail_col_type":"movie_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1--span&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, '.stui-content__thumb&&.pic-text&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, 'body&&.stui-pannel_bd:not(.clearfix)&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/6.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"西瓜影视🐯","author":"逐风者&20211024","version":5,"type":"video","url":"https://syjytv.net/xiaoshou/list-fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧","area_url":"6&7&8&9&10&11&12&13&14&15&16","sort_name":"动画电影&国产动漫&日本动漫&欧美动漫","year_name":"大陆综艺&港台综艺&日韩综艺&欧美综艺","sort_url":"27&20&21&22","year_url":"23&24&25&26","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h4&&Text'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-tag&&Text')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&style')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://syjytv.net' + j.pic;\n    r.url = 'https://syjytv.net/hd-' + j.id + '/' + \"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://syjytv.net/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp=1635051904354","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.text-right&&Text');\\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://syjytv.net/favicon.ico"},{"last_chapter_rule":"","title":"尘落电影网🐯","author":"浮生短&逐风者&20210928","version":6,"type":"video","url":"http://v.90s.wang/whole/fyclass_fyarea__fyyear___0_fysort_fypage.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)&&Cookie@.js:getVar('cookie')}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺&国产剧&港台剧&日韩剧&欧美剧&其他剧&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&动漫片&音乐片&犯罪片&悬疑片&冒险片&奇幻片&惊悚片&青春片&灾难片&古装片","class_url":"2~1&1&4&3&13&14&15&16&20&6&7&8&9&10&11&12&21&22&23&26&33&34&35&36&37&38&41&42","area_name":"地区&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","area_url":"&内地&韩国&香港&台湾&日本&美国&泰国&英国&新加坡&其他","sort_name":"最新&最热&评分","year_name":"时间&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","sort_url":"time&hit&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.pic');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], 'img&&alt');\n        var img = parseDom(list[i], 'img&&src')+'@Referer=';\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.sBottom||.pic-tag&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:var res = {};var d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.picTxt&&li');\n\nfor(var i in list){\ntry{\nd.push({\ntitle:parseDomForHtml(list[i],'.sTit&&Text'),\ndesc:parseDomForHtml(list[i],'.sDes&&Text'),\ncontent:parseDomForHtml(list[i],'.txt&&Text'),\npic_url:parseDom(list[i],'img&&src'),\nurl:parseDom(list[i],'a&&href')\n});\n  }catch(e){}\n}\n//道佬•模板\nres.data = d;\nsetSearchResult(res);","search_url":"http://v.90s.wang/?c=search&wd=**&sort=addtime&order=desc&page=fypage;get;UTF-8;{User-Agent@Mozilla/5.0 (Linux；； Android 10)&&Cookie@.js:getVar('cookie')}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//感谢：①大总管提供一级规则。②墙佬指导。","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息sec_subTab&&p\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&#sec_subTab&&p');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(/\\\\d+\\\\./,''))\\n}\\nvar conts = parseDomForArray(html, 'body&&#sec_subTab&&ul');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.sSource&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.sDes&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.sDes,1&&Text');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, 'img&&src');\\nvar 简介 = parseDomForHtml(html, '.pIntroTxt&&Text').replace(/详细 >/,'');\"}]","proxy":"","icon":"http://v.90s.wang/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-list')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至：\"+title);","title":"高分电影网🐯","author":"逐风者&20210801","version":3,"type":"video","url":"https://www.gaofen1.com/s.php?key=fyclass_fyarea_fyyear_&p=fypage","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"全部&剧情&喜剧&爱情&动作&犯罪&惊悚&悬疑&动画&科幻&恐怖&家庭奇幻&青春&冒险&搞笑&战争&古装&历史&真人秀","area_url":"&剧情&喜剧&爱情&动作&犯罪&惊悚&悬疑&动画&科幻&恐怖&家庭奇幻&青春&冒险&搞笑&战争&古装&历史&真人秀","sort_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&00年代&90年代&80年代&70年代&其他","year_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&俄罗斯&其他","sort_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2000&90&80&70&其他","year_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&俄罗斯&其他","find_rule":"js:\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\r\ntry {\r\n    var list = parseDomForArray(getResCode(), '#url&&li'); //列表\r\n    for (var j in list) {\r\n        d.push({\r\n            title: parseDomForHtml(list[j], 'a&&Text'), //标题\r\n            desc: parseDomForHtml(list[j], 'i&&Text') + ' ' + parseDomForHtml(list[j], 'span&&Text'), //双重描述\r\n            pic_url: 'https:'+base64Decode(parseDomForHtml(list[j], 'li&&p'))+'@Referer=',\r\n            url: parseDom(list[j], 'a&&href') //链接\r\n        });\r\n    }\r\n} catch (e) {}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&#url&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], 'i&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'span&&Text'),//【详情】\n       pic_url: 'https:'+base64Decode(parseDomForHtml(list[j], 'li&&p'))+'@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.gaofen1.com/s.php?key=**&p=fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"playlist\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.playlist&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.linkbox');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.infodetail&&p&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.infodetail&&p,1&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.infodetail&&p,3&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p,2&&Text');\\nvar 图片 = 'https:'+base64Decode(parseDomForHtml(html, '.t-img&&img&&p'))+'@Referer=';\\nvar 简介 = parseDomForHtml(html, '.jianjie&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"},{\"col_type\":\"movie_3\",\"name\":\"1\",\"path\":\"1\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//通用免嗅\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n\\n\\n//线路列表名称\\nvar arts = parseDomForArray(html,'body&&.playlist&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'li&&Text'))\\n}\\n\\n//选集列表\\nvar conts = parseDomForArray(html, 'body&&.linkbox');\\nvar lists =[];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\n//地区年份分类主演导演图片\\nd.push({\\n\\ttitle: parseDomForHtml(html, '.infodetail&&p,2&&Text').replace(/\\\\//g,'')+ '\\\\n' + parseDomForHtml(html,'.infodetail&&p,0&&Text').replace(/\\\\//g,' ').replace('  ','').substring(0, 15)+'\\\\n'+parseDomForHtml(html, '.infodetail&&p,1&&Text').replace(/\\\\//g,' ').replace('  ','').substring(0, 15),\\tdesc: parseDomForHtml(html,'.jianjie&&Text').replace('[收起部分]','').replace('　',''),\\n\\tpic_url: 'https:'+base64Decode(parseDomForHtml(html, '.t-img&&img&&p')),\\n\\turl: 'https:'+base64Decode(parseDomForHtml(html, '.t-img&&img&&p')),\\n\\ncol_type: 'movie_1_vertical_pic_blur'\\n});\\n\\n//线路切换\\nfunction setTabs(tabs, vari) {\\n     d.push({\\n         title: '‘‘线路:’’',\\n            col_type: 'scroll_button',}) \\n  for (var i = 0; i < tabs.length; i++) {\\n    d.push({\\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \\\"', '\\\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\\n\\t\\t      col_type: 'scroll_button',\\n        })\\n    }\\n    \\n\\n//正反序         \\n    d.push({        col_type: 'line_blank'    })}\\n\\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\\\"#228be6\\\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\\\"#0aa344\\\"> (正序)</font></small>';}\\n    function setLists(lists, index) {\\n        d.push({\\n           // title: '‘‘选集’’',\\n            title: '‘‘选集’’' +''+ sx,\\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n            col_type: 'text_center_1'\\n        })\\n\\nif(lists.length != '')  {\\n        var list = lists[index];\\nif (getVar('shsort') == '1') {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\\n                });\\n            }\\n        } else {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\\n                });\\n            }\\n        }\\n        \\n        }\\n      d.push({title:'<br>',col_type:'rich_text' });      \\n    }\\n\\n// 调用函数\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"}]","proxy":"","icon":"https://www.gaofen1.com/favicon.ico"},{"last_chapter_rule":"","title":"九妹影视🐯","author":"逐风者&20211019","version":10,"type":"video","url":"https://www.9mdyy.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.stui-vodlist__media&&li;a&&title;a&&href;pic-text&&Text;.hidden-mi&&Text;a&&data-original","search_url":"https://www.9mdyy.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息bottom-line\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.bottom-line');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.stui-vodlist__thumb&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p,3&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://js.2030max.com/cm.ico"},{"last_chapter_rule":"","title":"剧迷影音🐯","author":"逐风者","version":22082222,"type":"video","url":"https://gimytv.com/genre/fyclass--fyyear-fypage/by/fysort.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"movies&tvseries&tv_show&anime","area_name":"","area_url":"","sort_name":"排序&按更新&周人气&月人气","year_name":"年份&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"&time&hits_week&hits_month","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,1&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://gimytv.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息myui-panel__head:has(.sort-button)\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.myui-panel__head:has(.sort-button)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p,3&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p,4&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.text-collapse&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://gimytv.com/images/favicon.png"},{"last_chapter_rule":"","title":"B站影视🐯","author":"逐风者&20220116","version":4,"type":"video","url":"https://www.bzhanyy.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.category-block'\nconst 拼接分类 = 'body&&.filter-panel'\nconst 小类定位 = 'body&&a:not(:matches(明星|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\npdfa(html, 'body&&.movie-list-item').forEach(list => {\n  d.push({\n       title: pdfh(list, '.movie-title&&Text'),\n       desc: pdfh(list, '.movie-rating&&Text')+'  '+pdfh(list, ''),\n       img: pd(list, '.lazy&&data-original')+'@Referer=',\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.vod-search-list');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.movie-title&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], '.movie-rating&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.meta&&Text'),//【详情】\n       pic_url: parseDom(list[j], '.lazy&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)+ '#isVideo=true#'}else{jsurl+ '#isVideo=true#'}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息play_source_tab\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.play_source_tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&title');\\nvar 导演 = parseDomForHtml(html, '').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '');\\nvar 状态 = parseDomForHtml(html, '');\\nvar 图片 = parseDom(html, '');\\nvar 简介 = parseDomForHtml(html, '.summary&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.bzhanyy.com/upload/site/20211115-1/d9384c8ada71d377994113bca1f8ecc1.png"},{"last_chapter_rule":"","title":"老电影🐯","author":"20220206&逐风者","version":2,"type":"video","url":"https://www.laodyw.com/tv/index_fypage_______.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\nlet true_url = getVar(MY_URL+\"url\", MY_URL)\nconst page = MY_URL.match(/_(.*?)_______\\.html/)[1]\n true_url = true_url.replace('_______.html', +page+'_______.html')    \nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\n\n\nconst categories = pdfa(html, 'body&&.stui-header__menu').concat(pdfa(html, '#screenbox&&.clearfix'));\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_URL+\"fold\", \"0\")\nconst cate_temp_json = getVar(MY_URL+\"category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(MY_URL+\"fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body&&a:not(:contains(首页)):not(:contains(bilibili)):not(:contains(音乐)):not(:contains(首页)):not(:contains(新片))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(MY_URL+\"category\", JSON.stringify(new_cate))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(MY_URL+\"category\", JSON.stringify(params.cate_temp))\n                        putVar(MY_URL+\"url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, '.lazyload&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href')+ '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], '.title&&Text'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], ''),//【详情】\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.laodyw.com/index.php?s=vod-search-wd-**-p-fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-vodlist__head\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.stui-vodlist__head:has(ul)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,4&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,3&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p,1&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/剧情：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.laodyw.com/favicon.ico"},{"last_chapter_rule":"","title":"花猫TV🐯","author":"逐风者&20220408","version":3,"type":"video","url":"http://www.huamaotv.com/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], ''),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.huamaotv.com/search-pg-fypage-wd-**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h3&&Text');\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详细','').replace('\\>','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"http://www.huamaotv.com/template/huamaotv/img/logo_min.png"},{"last_chapter_rule":"","title":"万能影视🐯","author":"逐风者20211210","version":4,"type":"video","url":"https://wap.wnvod.net/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\nlet true_url = getVar(\"555.url\", MY_URL)\nconst page = MY_URL.match(/-(.*?)\\.html/)[1]\ntrue_url = true_url.replace('---.html', page + '---.html')\nconst html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\nconst empty = \"hiker://empty\"\n\nconst categories = parseDomForArray(html, 'body&&.myui-header__menu').concat(parseDomForArray(html, 'body&&.myui-screen__list:not(:contains(APP))'));\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(\"555.fold\", \"0\")\nconst cate_temp_json = getVar(\"555.category\", JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\n\n\nif (parseInt(page) === 1) {\n    d.push({\n        title: fold === '1' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\n        url: $(empty).lazyRule((fold) => {\n            putVar(\"555.fold\", fold === '1' ? '0' : '1');\n            refreshPage(false);\n            return \"hiker://empty\"\n        }, fold),\n        col_type: 'scroll_button',\n    })\n\n\n    categories.forEach((category, index) => {\n        let sub_categories = parseDomForArray(category, 'body--a&&a:not(:matches(资讯|专题))');\n        if (index === 0) {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        let new_cate = []\n                        params.cate_temp.forEach((cate, index) => {\n                            new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                        })\n                        putVar(\"555.category\", JSON.stringify(new_cate))\n                        putVar(\"555.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        } else if (fold === '1') {\n            sub_categories.forEach((item, key) => {\n                let title = parseDomForHtml(item, 'a&&Text')\n                d.push({\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color: #098AC1\">' + title + '</span></b>' : title,\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                        params.cate_temp[params.index] = params.key.toString()\n\n                        putVar(\"555.category\", JSON.stringify(params.cate_temp))\n                        putVar(\"555.url\", input)\n                        refreshPage(true)\n                        return \"hiker://empty\"\n                    }, {\n                        cate_temp: cate_temp,\n                        index: index,\n                        key: key,\n                        page: page,\n                    }),\n                    col_type: 'scroll_button',\n                })\n            })\n            d.push({\n                col_type: \"blank_block\"\n            });\n        }\n    })\n}\nconst list = parseDomForArray(html, '.myui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: parseDomForHtml(video, 'a&&title'),\n        desc: parseDomForHtml(video, '.pic-text&&Text'),\n        pic_url: parseDom(video, 'a&&data-original') + \"@Referer=\",\n        url: parseDom(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html, 'body&&#searchList&&li');\n\nfor (var i = 0; i < list.length; i++) {\n    var L = list[i];\n    d.push({\n        title: pdfh(list[i], 'a&&title'),\n        url: pd(list[i], 'a&&href')+'#immersiveTheme#',\n        desc: pdfh(list[i], '.pic-text&&Text'),\n        content: pdfh(list[i], 'p,3&&Text'),\n        img: pd(list[i], 'a&&data-original'),\n    });\n}\nsetResult(d)","search_url":"https://wap.wnvod.net/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n    categoryGiteeLib: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',\n})","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text');\\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.text-collapse&&span,1&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://wnvod.net/template/mytheme/statics/img/logo.png"},{"last_chapter_rule":"","title":"西瓜影视②🐯","author":"逐风者","version":22082117,"type":"video","url":"https://www.kanjuck.com/vodshow/fyAll/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.dx-list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.vod_remarks&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.dx-list&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.vod_remarks&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.info&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.kanjuck.com/vodsearch**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"LSP不要着急，要有点耐心。\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.player_info');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h2&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.play_li');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, '.detail-objs&&img&&alt');\\nvar 导演 = parseDomForHtml(html, '.info-items&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.info-items,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.info-items,2&&Text');\\nvar 状态 = parseDomForHtml(html, '.info-items,3Text');\\nvar 图片 = parseDom(html, '.detail-objs&&img&&src');\\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.kanjuck.com/upload/site/20210606-1/ee05024a8de0eddb6fe88e73627e1fd2.png"},{"last_chapter_rule":"","title":"奇优影院🐯","author":"逐风者&20211101&营养快线6","version":5,"type":"video","url":"http://www.shudx.com/list/fyAll_fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], 'pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-pannel_bd&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], 'pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.shudx.com/search.php?searchword=**;post;utf-8","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.stui-content__thumb&&a&&Text');\\nvar 状态 = parseDomForHtml(html, 'body&&p,3&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"http://puep.qpic.cn/coral/Q3auHgzwzM4fgQ41VTF2rBhFNtbIPzo2uuDc8mlpicqGs2icxyanVribw/0"},{"last_chapter_rule":"","title":"世纪云TV🐯","author":"逐风者","version":20220814,"type":"video","url":"https://v.yiio.club/index.php/vod/type/id/fyAll.html","col_type":"movie_3","class_name":"電影&電視劇&動漫&綜藝","class_url":"1&2&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/yiji1')).rule)","searchFind":"js:\neval(JSON.parse(request('hiker://page/sbso1')).rule)","search_url":"https://v.yiio.club/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\neval(JSON.parse(request('hiker://page/erji3')).rule)\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级.vodlist_item\",\"path\":\"yiji\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\ntry{\\nvar list = parseDomForArray(getResCode(), 'body&&.vodlist_item');//列表\\r\\nfor (var j in list) {\\r\\n  d.push({\\r\\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\\r\\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic_text&&Text'),//双重描述\\r\\n       pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',//图片\\r\\n       url: parseDom(list[j],'a&&href')+\\\"#immersiveTheme#\\\"//链接\\r\\n  });\\r\\n}}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.searchlist_item\",\"path\":\"sbso\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.searchlist_item');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\\n       desc: parseDomForHtml(list[j], '.pic_text&&Text'),//【描述】\\n       content: parseDomForHtml(list[j], 'p,-1&&Text'),//【详情】\\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"220522一级.module-item\",\"path\":\"yiji1\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\ntry{\\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');//列表\\r\\nfor (var j in list) {\\r\\n  d.push({\\r\\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\\r\\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text')+' '+parseDomForHtml(list[j], '.module-item-caption&&Text'),//双重描述\\r\\n       pic_url: parseDom(list[j], 'img&&data-src') + '@Referer=',//图片\\r\\n       url: parseDom(list[j],'a&&href')+\\\"#immersiveTheme#\\\"//链接\\r\\n  });\\r\\n}}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"erji3\",\"rule\":\"//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\n//标题\\nvar title = parseDomForHtml(html, 'h1&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\\n\\nvar 图片 = parseDom(html, '.lazyload&&data-src');\\n\\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/简介：/,'').replace('收起','').replace('展开全部','');\\n\"},{\"col_type\":\"movie_3\",\"name\":\"220522搜索.module-search-item\",\"path\":\"sbso1\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a,1&&title'),//【标题】\\n       desc: parseDomForHtml(list[j], 'a,1&&Text'),//【描述】\\n       content: parseDomForHtml(list[j], '.video-info-item,-1&&Text'),//【详情】\\n       pic_url: parseDom(list[j], '.lazyload&&data-src'),//【图片】\\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"}]","proxy":"","icon":"https://tc.cvccn.com/LightPicture/2022/08/9f13bf3a17c28c5a.gif"},{"last_chapter_rule":"","title":"格意影院🐯","author":"逐风者","version":22082610,"type":"video","url":"https://geyiad.com/sort/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n  //这里是随机颜色代码\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.myui-header__menu'\n//这里是四大金刚的定位,现在看看是否正常显示。\n\nconst 拼接分类 = 'body&&.myui-screen__list'\n//这里是定位年代什么的\n\nconst 小类定位 = 'body--li&&li:not(.col-lg-5):not(:matches(明星|专题|资讯))'\n//因为前面多了一排不需要的所以用--排除第一个a\n\nconst 分类标题 = 'a&&Text'\n//这里几乎不需要动\nconst 分类链接 = 'a&&href'\n//这里也是\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/-(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '-' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n//这一块，你们不会正则的，其实嫖了这么多动态分类的。咋们直接用链接去搜，我操作一遍给你们看看，套娃就是复制粘贴\n\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\n\npdfa(html, '.myui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, '.pic-tag&&Text'),\n       img: pd(list, '.lazyload&&data-original')+'@Referer=',\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://geyiad.com/search.php?page=fypage&searchword=**&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '聚影√',\n    url: 'hiker://search?s=' + title + '&rule=聚影√',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav&myui-content__list\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.myui-panel&&p,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.myui-panel&&p,4&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.myui-panel&&p,5&&Text');\\nvar 状态 = parseDomForHtml(html, '.myui-panel&&p,6&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.myui-panel&&p,7&&Text').replace(/简介：/,'');\"}]","proxy":"","icon":"https://geyiad.com/statics/logo/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"影视大全测试.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.bdpcc.com/bdpcctype/fyclass-fypage.html[firstPage=https://www.bdpcc.com/bdpcctype/fyclass.html]","col_type":"movie_3_marquee","class_name":"电影🎦&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&电视剧📺&国产&港台&日韩&欧美&泰国&综艺🎼&动漫🐶","class_url":"dianying&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&lianxuju&guochanju&gangtaiju&rihanju&oumeiju&taiguoju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.bdpcc.com/bdpccsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=影视大全测试"},{"firstHeader":"class","last_chapter_rule":"","title":"影视工厂.Dr","author":"道长","version":3,"type":"video","url":"hiker://empty##https://www.ysgc.tv/vodtype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n    一级分类:'body&&.dropdown-box',\n    子分类:'body&&li:has(a[href]):not(:matches(首页|APP下载|会员中心|我的收藏|播放记录|退出))',\n    },{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'body&&li:not(:matches(评分|人气|时间|排序))',\n   }]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"/voddetail/\",\"\\\\?ysgc\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索结果');","search_url":"hiker://empty##https://www.ysgc.tv/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=影视工厂"},{"last_chapter_rule":".data,1&&Text","title":"大鱼dm","author":"","version":0,"type":"other","url":"http://187687.com/index.php/vod/show/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫&||&动作&喜剧&爱情&科幻&恐怖&剧情&战争&||&国产剧&港台剧&韩国剧&欧美剧","class_url":"1&2&3&4&||&6&7&8&9&10&11&12&||&13&14&15&16","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&area/大陆/&area/香港/&area/台湾/&area/美国/&area/法国/&area/英国/&area/日本/&area/韩国/&area/德国/&area/泰国/&area/印度/&area/意大利/&area/西班牙/&area/加拿大/&area/其他","sort_name":"时间&人气&评分","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":".vodlist&&li;a&&title;.lazyload&&data-original;.pic_text&&Text;a&&href;","searchFind":".vodlist&&li;\na&&title;\na&&href;\n.pic_text&&Text;\n.searchlist_titbox--h4&&Text;\n.lazyload&&data-original;","search_url":"http://187687.com/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar html=getResCode();\nd.push({\ndesc:\"258&&float\",\ncol_type:\"x5_webview_single\"});\n\nlazy = $('').lazyRule(() => {\r\n    return $.require('hiker://page/dmLazyV.js?rule=dm盒子').dmLazy();\r\n})\n\nvar arts = parseDomForArray(html,'body&&.play_source_tab&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: parseDomForHtml(html, '.content_desc&&Text'),\n    pic_url: parseDom(html, 'body&&.lazyload&&data-original') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic'\n});\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'flex_button'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'flex_button'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: 'flex_button'\n                });\n            }\n        }\n    }\nvar title = parseDomForHtml(html, 'h2&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香资',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.xyq',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '香情影视',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gimg3.baidu.com/search/src=http%3A%2F%2Fgdown.baidu.com%2Fimg%2F0%2F512_512%2F7970f582660bc6158468a43caf8ffd19.png&refer=http%3A%2F%2Fwww.baidu.com&app=2021&size=w150&n=0&g=0n&er=404&q=100&fmt=auto&maxorilen2heic=2000000\",\n    col_type: 'icon_small_4'\n})\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"悠影网","author":"","version":0,"type":"other","url":"https://www.uy07.com/vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&动画电影","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&weidianying&dongmandianying","sort_name":"ckm3u8的资源失效，请更换mahua线路观看，谢谢","year_name":"国产剧&香港剧&台湾剧&韩国剧&日本剧&欧美剧&海外剧&泰国剧","sort_url":"","year_url":"guochanju&gangtaiju&taiwanju&rihanju&ribenju&oumeiju&haiwaiju&taiguoju","find_rule":".vodlist&&li;.vodlist_title&&Text;.lazyload&&data-original;.pic_text&&Text;a&&href","searchFind":".vodlist&&li;h4&&Text;a&&href;.pic_text&&Text;.searchlist_titbox&&Text;.lazyload&&data-original","search_url":"https://www.uy07.com/vodsearch/-------------.html?wd=**&submit=","titleColor":"#fff20c00","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.player_video&&script&&Html.js:eval(input);var url = player_aaaa.url;if(url.indexOf('html')>-1){JSON.parse(request('http://parse.tyun77.cn/973jiexi/api/api.php?pltfrom=1100&url='+url,{})).url}else{url}`;\n\nvar title = parseDomForHtml(html, 'body&&h2&&Text');\nd.push({\n    title: '视界',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100283/4321985.jpg',\n    url: 'hiker://search?s=' + title + '&group=①影视',\n    col_type: 'icon_small_3',\n});\nd.push({\n    title: '豆瓣',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20201124/100287/4322096.jpg',\n    url: 'hiker://search?s=' + title + '&rule=豆娃R',\n    col_type: 'icon_small_3',\n});\nd.push({\n    title: '五号站',\n    pic_url: 'https://i.52112.com/icon/jpg/256/20200831/90128/3898775.jpg',\n    url: 'http://so.baike567.com/s/o?s=' + title + `@rule=js:var d=[];var html=getResCode();d.push({title:parseDom(html,'.s-box&&Html'),col_type: 'rich_text'});setResult(d);`,\n    col_type: 'icon_small_3',\n});\nd.push({col_type: 'line_blank'});\nvar arts = parseDomForArray(html,'.play_source_tab&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt'))\n}\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\nd.push({\n    title: '共' + conts.length + '条线路\\n\\n点击查看详情',\n    desc: parseDomForHtml(html, 'body&&.desc&&Text'),\n    pic_url: parseDom(html, 'body&&.lazyload&&data-original') + '@Referer=',\n    url: MY_URL + `@rule=js:let d=[];let html=getResCode();let otherInfo=parseDomForArray(html,'body&&.content_min&&li');for(let i=0;i<otherInfo.length;i++){d.push({title:parseDomForHtml(otherInfo[i],'Text'),col_type:'long_text'})};setResult(d);`,\n    col_type: 'movie_1_vertical_pic'\n});\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: '‘‘线路’’',\n        url: `#noLoading#@lazyRule=.js:let conf=getVar('折叠');if(conf=='关'){putVar({key:'折叠',value:'开'})}else{putVar({key:'折叠',value:'关'})};refreshPage(false);'toast://切换成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    });\n    if (getVar('折叠') == '开' || getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"hiker://empty@lazyRule=.js:putVar('\" + vari + \"','\" + i + \"');refreshPage();'toast://切换成功！'\";\n            d.push({\n                title: (getVar(vari, '0') == i ? '✔': '') + tabs[i],\n                url: url,\n                col_type: tabs.length > 2 ? 'text_3': 'text_2'\n            })\n        }\n    }\n};\nsetTabs(tabs, MY_URL);\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘选集’’',\n        url: `#noLoading#@lazyRule=.js:let conf=getVar('shsort');if(conf=='1'){putVar({key:'shsort',value:'0'})}else{putVar({key:'shsort',value:'1'})};refreshPage();'toast://切换成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    });\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3': 'text_2'\n            })\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: list.length > 3 ? 'text_3': 'text_2'\n            })\n        }\n    }\n};\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({title: '<br>',col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#fff20c00"},{"last_chapter_rule":"","title":"稀饭影视","author":"妄炁","version":0,"type":"video","url":"https://www.xifanys.com/yingpianshow/fypage-----------.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.xifanys.com/yingpiansearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.xifanys.com/upload/mxcms/20220515-1/7a48976a0302fc29e1f3db46371ea785.png"},{"last_chapter_rule":"","title":"电影先生","author":"妄炁","version":0,"type":"video","url":"https://dianyi.ng/pianku-fypage-----------.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://dianyi.ng/search-**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"电影教父","author":"妄炁","version":0,"type":"video","url":"https://www.dianyingdon.com/show/fypage_______-___.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"https://www.dianyingdon.com/search/**_________-fypage___.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.dianyingdon.com/template/mx/static/picture/logo.png"},{"last_chapter_rule":"","title":"蓝光影视","author":"祥子","version":0,"type":"other","url":"https://lgyy.tv/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影库&电视剧库&动漫库","class_url":"1&2&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://lgyy.tv/vodsearch/**-------------.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"武德影院🐯","author":"逐风者&20220204","version":4,"type":"video","url":"http://www.wudeyy.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"搜你想要...\",\n    col_type: \"input\"\n});\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&li:not(:matches(首页|留言|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/-(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '-' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\npdfa(html, '.stui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, ''),\n       img: pd(list, '.lazyload&&data-original')+\"@Referer=\",\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,-2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+\"@Referer=\",//【图片】\n       url: parseDom(list[j],'a,1&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.438kp.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1--span&&Text');\n\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.stui-content__thumb&&Text');\n\nvar 状态 = parseDomForHtml(html, 'body&&p&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"http://www.wudeyy.com/statics/img/logo.png"},{"last_chapter_rule":"","title":"如梦影视🐯","author":"逐风者20211214","version":4,"type":"video","url":"https://www.rumengys.com/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&体育&直播","class_url":"1&2&3&4&43&59","area_name":"动作片&喜剧片&犯罪片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&微电影&动画电影&电影解说&热舞美女&影视短片","area_url":"6&7&48&8&9&10&11&12&20&21&22&24&25&60","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&海外剧&泰国剧","sort_url":"","year_url":"13&14&15&16&26&27","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text')+' '+parseDomForHtml(list[j], '.pic-tag&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,3&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.rumengys.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.data,-1&&Text').replace(/简介：/,'');\"}]","proxy":"","icon":"https://www.rumengys.com/template/mytheme1/statics/img/logo.png"},{"last_chapter_rule":"","title":"5个G影院🐯","author":"逐风者&20211118","version":7,"type":"video","url":"http://www.gggggyy.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n  //这里是随机颜色代码\n\nconst 分类颜色 = getRangeColors()\n\nconst 大类定位 = 'body&&.stui-header__menu'\n//这里是四大金刚的定位,现在看看是否正常显示。\n\nconst 拼接分类 = 'body&&.stui-screen__list'\n//这里是定位年代什么的\n\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|留言))'\n//因为前面多了一排不需要的所以用--排除第一个a\n\nconst 分类标题 = 'a&&Text'\n//这里几乎不需要动\nconst 分类链接 = 'a&&href'\n//这里也是\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/-(.*)\\./)[1]\ntrue_url = true_url.replace(/list(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n//这一块，你们不会正则的，其实嫖了这么多动态分类的。咋们直接用链接去搜，我操作一遍给你们看看，套娃就是复制粘贴\n\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\n\npdfa(html, '.stui-vodlist&&li').forEach(list => {\n  d.push({\n       title: pdfh(list, 'h4&&Text'),\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, '.pic-tag&&Text'),\n       img: pd(list, '.lazyload&&data-original')+'@Referer=',\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.gggggyy.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息stui-pannel__head\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:has(.more)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1--span&&Text');\\nvar 导演 = parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, 'body&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, 'body&&p&&Text');\\nvar 状态 = parseDomForHtml(html, '.stui-content__thumb&&.pic-text&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, 'body&&.stui-pannel_bd:not(.clearfix)&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","icon":"http://www.gggggyy.com/statics/img/logo.png"},{"last_chapter_rule":"","title":"猪蜜蜜热影库🐯","author":"逐风者&20211006","version":7,"type":"video","url":"http://m.reyingku.com/?m=vod-type-id-fyAll-pg-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&20&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/yiji')).rule)","searchFind":"js:\neval(JSON.parse(request('hiker://page/sbso')).rule)","search_url":"http://m.reyingku.com/index.php?m=vod-search-pg-fypage-wd-**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级.figures_list&&li\",\"path\":\"yiji\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\ntry{\\nvar list = parseDomForArray(getResCode(), 'body&&.figures_list&&li');//列表\\r\\nfor (var j in list) {\\r\\n  d.push({\\r\\n       title: parseDomForHtml(list[j], 'a,1&&title'),//标题\\r\\n       desc: parseDomForHtml(list[j], '.mask_txt&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\\r\\n       pic_url: parseDom(list[j], 'a&&style') + '@Referer=',//图片\\r\\n       url: parseDom(list[j],'a&&href')+\\\"#immersiveTheme#\\\"//链接\\r\\n  });\\r\\n}}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"二级通免.play_list_num\",\"path\":\"erji\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.play_list_num');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h1&&Text').replace(' ',''))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.play_list_num');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\n//标题\\nvar title = parseDomForHtml(html, '.data&&p&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.data&&p,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.data&&p,2&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.data&&p,3&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.data&&p,4&&Text');\\n\\nvar 图片 = parseDom(html, '.d_img&&style');\\n\\nvar 简介 = parseDomForHtml(html, '.data_intro&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.figures_list\",\"path\":\"sbso\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.figures_list&&li');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'a,1&&title'),//【标题】\\n       desc: parseDomForHtml(list[j], '.mask_txt&&Text'),//【描述】\\n       content: parseDomForHtml(list[j], ''),//【详情】\\n       pic_url: parseDom(list[j], 'a&&style')+'@Referer=',//【图片】\\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"二级道免.play_list_num\",\"path\":\"erji1\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar lazy =  ``;\\nlazy=$(\\\"\\\").lazyRule(()=>{\\n    const {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\\n   return lazyParse(input);\\n});\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.nav&&li');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'body&&a').replace(' ',''))\\n}\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.play_list_num');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h1&&Text').replace('    ',''))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.play_list_num');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\n//标题\\nvar title = parseDomForHtml(html, '.data&&p&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.data&&p,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.data&&p,2&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.data&&p,3&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.data&&p,4&&Text');\\n\\nvar 图片 = parseDom(html, '.d_img&&style');\\n\\nvar 简介 = parseDomForHtml(html, '.data_intro&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:parseDom(list[j], 'a&&href') + lazy,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:parseDom(list[j], 'a&&href') + lazy,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"二级页面信息play_list_num\",\"path\":\"xnxi\",\"rule\":\"//二级页面信息\\nvar arts = parseDomForArray(html, 'body&&.play_list_num');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h1&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.play_list_num');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, '.data&&p&&Text');\\nvar 导演 = parseDomForHtml(html, '.data&&p,1&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data&&p,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data&&p,3&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&p,4&&Text');\\nvar 图片 = parseDom(html, '.d_img&&style');\\nvar 简介 = parseDomForHtml(html, '.data_intro&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\"}]","proxy":"","icon":"https://tvax4.sinaimg.cn/large/006agRDGgy1h1oq5bbvkgg306o06oqat.gif"},{"last_chapter_rule":"","title":"2345电影🐯","author":"入戏太深&逐风者","version":22082117,"type":"video","url":"https://www.245bt.com/frim/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"27&2&3&4","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&剧情片&记录片&动画片&网络电影","area_url":"5&6&7&8&9&10&11&12&13&14","sort_name":"猎奇","year_name":"国产剧&网络剧&港剧&台剧&日剧&韩剧&美剧&英剧&泰剧&海外剧","sort_url":"26","year_url":"16&17&18&19&20&21&22&23&24&25","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.list&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.')+' '+parseDomForHtml(list[j], ''),//双重描述\r\n       pic_url: parseDom(list[j], 'img&&src') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\n\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), 'body&&.list&&li');//       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'),//【标题】\n            pic_url: parseDom(list[i], 'img&&src')+'@Referer=',//【图片】\n            desc: parseDomForHtml(list[i], ''),//【描述】\n            url: parseDom(list[i], 'a&&href').replace(/\\/d\\//g,'/p/').replace('.html','-1-1.html'),//【链接】\n        })\n    }\n} catch(e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.245bt.com/search.php?page=fypage&searchword=**&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $(\"\").lazyRule(() => {\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n    return x5rule(input, input);\n});\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.box:has(h5)');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'h5&&Text').replace('最新','❌').replace('剧情介绍','❌'))\\n}\\nvar conts = parseDomForArray(html, 'body&&.playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.intro&&div,2&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.intro&&div,3&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.intro&&div,1&&Text');\\nvar 状态 = parseDomForHtml(html, '.intro&&div,6&&Text');\\nvar 图片 = parseDom(html, 'img,1&&src');\\nvar 简介 = parseDomForHtml(html, '.description&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"https://www.245bt.com/favicon.ico"},{"last_chapter_rule":"","title":"QC影视🐯","author":"逐风者","version":22082221,"type":"video","url":"https://www.qcsvip.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//调用顺搜_v2022.3.8\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4091');\n顺搜(d)\n\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-list'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|直播|资讯|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\npdfa(html, 'body&&.module-item-cover').forEach(list => {\n  d.push({\n       title: pdfh(list, 'a&&title'),\n       desc: pdfh(list, 'span&&Text')+'  '+pdfh(list, ''),\n       img: pd(list, 'img&&data-src')+'@Referer=',\n       url: pd(list,'a&&href')+'#immersiveTheme#'\n  });\n})\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'img&&alt'),//【标题】\n       desc: parseDomForHtml(list[j], 'a,1&&Text'),//【描述】\n       content: parseDomForHtml(list[j], '.video-info-item,-1&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'img&&data-src'),//【图片】\n       url: parseDom(list[j],'a,1&&href')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.qcsvip.com/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"断插备份\",\"path\":\"1\",\"rule\":\"var lazy1 = `@lazyRule=.js:var jsurl = unescape(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));eval(fetch(config.cj));aytmParse(jsurl)+ '#isVideo=true#'}else{jsurl+ '#isVideo=true#'}`;\\n\"},{\"col_type\":\"movie_3\",\"name\":\"二级页面信息module-tab-content&&.module-tab-item\",\"path\":\"xnxi\",\"rule\":\"//二级信息页面\\nvar arts = parseDomForArray(html, 'body&&.module-tab-content&&.module-tab-item');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.module-blocklist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.video-info-main&&.video-info-items&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.video-info-main&&.video-info-items,1&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.video-info-main&&.video-info-items,3&&Text');\\nvar 状态 = parseDomForHtml(html, '.video-info-main&&.video-info-items,2&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-src');\\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/简介：/,'').replace('收起','').replace('展开全部','');\\n\"}]","proxy":"","icon":"http://www.qcsvip.com/favicon.ico"},{"last_chapter_rule":"var chp = [];\ntry {\n    var html = JSON.parse(getResCode());\n    var conts = html.data.vod_play_url.split('$$$');\n    for (var i = 0; i < conts.length; i++) {\n        var list = conts[i].split(\"#\");\n        chp.push(list.length);\n    }\n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(Math, chp)));","title":"ChiAPP","author":"chineni","version":2,"type":"video","url":"hiker://empty/movies/getTypeMovies?type=fyclass&page=fypage&count=30&year=&area=","col_type":"movie_3","class_name":"推荐&电视剧&电影&综艺&动漫&设置","class_url":"推荐&2&1&3&4&设置","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar items = [];\n\nfunction listshow() {\n    for (var j = 0; j < list.length; j++) {\n        var title = list[j].vod_name;\n        var img = list[j].vod_pic.replace('mac:', 'https:');\n        var url = list[j].vod_id;\n        var desc = list[j].vod_remarks;\n        items.push({\n            title: title,\n            pic_url: img + '@Referer=',\n            url: getItem('linkmode') + '/movies/getMovies?id=' + url,\n            desc: desc\n        });\n    }\n};\nif (MY_URL.indexOf('设置') != -1 && MY_URL.indexOf('page=1&') != -1) {    \n    items.push({\n        title: '点击切换链接模式',\n        url: $('').lazyRule(() => {\n            if (getItem('linkmode').indexOf('chineni') != -1) {\n                setItem('linkmode', 'https://movie.spzyw.top');\n                refreshPage();\n                return 'toast://已切换成代理模式。'\n            } else {\n                setItem('linkmode', 'https://api.chineni.com');\n                refreshPage();\n                return 'toast://已切换成直链模式。'\n            }\n        }),\n        desc: /chineni/.test(getItem('linkmode')) ? '当前直连模式(移动网络推荐)' : '当前代理模式(联通电信网络推荐)',\n        col_type: 'text_center_1'\n    })\n} else if (MY_URL.indexOf('推荐') != -1) {\n    try {\n        var pinh = getItem('linkmode') + '/movies/index';\n        var html = JSON.parse(fetch(pinh, {}));\n        var conts = Object.keys(html.data);\n\n        for (var i = 0; i < conts.length; i++) {\n            var list = html.data[conts[i]];\n            var tabt = conts[i];\n            if (tabt == 'dy') {\n                tabt = '热播电影';\n            } else if (tabt == 'dm') {\n                tabt = '热播动漫';\n            } else if (tabt == 'dsj') {\n                tabt = '热播电视剧';\n            } else if (tabt == 'gtj') {\n                tabt = '热播港台剧';\n            } else if (tabt == 'mj') {\n                tabt = '热播美剧';\n            } else if (tabt == 'rhj') {\n                tabt = '热播日韩剧';\n            } else if (tabt == 'zy') {\n                tabt = '热播综艺';\n            }\n            items.push({\n                title: tabt,\n                url: 'hiker://empty',\n                col_type: 'text_1'\n            });\n            listshow();\n        }\n    } catch (e) {}\n} else {\n    try {\n        var pinh = getItem('linkmode') + MY_URL.replace('hiker://empty', '');\n        var html = JSON.parse(fetch(pinh, {}));\n        var list = html.data;\n        listshow();\n    } catch (e) {}\n}\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar items = [];\nvar pinh = getItem('linkmode') + MY_URL.replace('hiker://empty', '');\nvar html = JSON.parse(fetch(pinh, {}));\nvar list = html.data;\n\nfor (var i = 0; i < list.length; i++) {\n    var title = list[i].vod_name;\n    var img = list[i].vod_pic.replace('mac:', 'https:');\n    var url = list[i].vod_id;\n    var desc = list[i].vod_remarks;\n    var cont = list[i].vod_actor;\n    items.push({\n        title: title,\n        pic_url: img + '@Referer=',\n        url: getItem('linkmode') + '/movies/getMovies?id=' + url,\n        content: cont,\n        desc: desc\n    });\n}\n\nres.data = items;\nsetSearchResult(res);","search_url":"hiker://empty/movies/so?word=**&page=fypage&count=30","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\nvar html = JSON.parse(getResCode());\n\nvar tabs = html.data.vod_play_from.split('$$$');\nvar conts = html.data.vod_play_url.split('$$$');\n\nvar thumb = html.data.vod_pic.replace('mac:', 'https:');\nd.push({\n    title: '剧情简介：',\n    desc: html.data.vod_content,\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n    var list = conts[i].split('#');\n    d.push({\n        title: tabs[i],\n        col_type: 'text_1'\n    });\n\n    for (var j = 0; j < list.length; j++) {\n        var ctit = list[j].split('$')[0].replace(/第|集/g, '');\n        if (list.length <= 4) {\n            var clt = 'text_2';\n        } else {\n            var clt = isNaN(ctit) ? 'text_3' : 'text_5'\n        }\n        d.push({\n            title: ctit,\n            url: $(list[j].split('$')[1]).lazyRule(() => {\n                var urll = input,\n                    danmu = [];\n                //parwix弹幕接口代码\n                try {\n                    var json = JSON.parse(request(\"https://jx.parwix.com:4433/dmku/?ac=dm&id=\" + md5(urll).slice(12) + ' P', {}));\n                    for (let i = 0; i < json.danmuku.length; i++) {\n                        danmu.push({\n                            text: json.danmuku[i][4],\n                            time: json.danmuku[i][0]\n                        });\n                    };\n                } catch (e) {}\n                writeFile(\"hiker://files/cache/danmu.json\", JSON.stringify(danmu));\n                //弹幕代码结束\n                if (/.html|.bilibili/.test(urll)) {\n                    var jiek = [{\n                        'url': 'http://139.9.144.55:3002/jiexiLine?url=' + urll + '&line=a',\n                        'tabs': '线路A'\n                    }, {\n                        'url': 'http://139.9.144.55:3002/jiexiLine?url=' + urll + '&line=b',\n                        'tabs': '线路B'\n                    }, {\n                        'url': 'http://139.9.144.55:3002/jiexiLine?url=' + urll + '&line=c',\n                        'tabs': '线路C'\n                    }, {\n                        'url': 'http://139.9.144.55:3002/jiexi?url=' + urll,\n                        'tabs': '默认'\n                    }, {\n                        'url': 'https://json.pangujiexi.com:12345/json.php?url=' + urll,\n                        'tabs': '盘古'\n                    }];\n                    //var bfjson = batchFetch(jiek);\n                    //log(bfjson);\n                    var mult = [],\n                        hean = [],\n                        tabs = [];\n                    for (var i = 0; i < jiek.length; i++) {\n                        //var html = bfjson[i];\n                        try {\n                            var html = fetch(jiek[i].url, {\n                                timeout: 2000\n                            });\n                        } catch (e) {\n                            html = \"\";\n                        }\n                        if (/http/.test(html)) {\n                            if (/pangujiexi/.test(jiek[i].url)) {\n                                var play = JSON.parse(html).url;\n                            } else {\n                                var play = JSON.parse(html).data;\n                            };\n                            if (/titan\\.mgtv/.test(play)) {\n                                var head = {\n                                    'User-Agent': 'Mozilla/5.0',\n                                    'Referer': 'www.mgtv.com'\n                                };\n                            } else if (/bilivideo/.test(play)) {\n                                var head = {\n                                    'User-Agent': 'Mozilla/5.0',\n                                    'Referer': 'https://www.bilibili.com'\n                                };\n                            } else {\n                                var head = {\n                                    'User-Agent': 'Lavf/58.12.100',\n                                    'Icy-MetaData': '1'\n                                };\n                            }\n                            play = cacheM3u8(play, {\n                                headers: head\n                            }, 'video' + [i] + '.m3u8');\n                            mult.push(play);\n                            //mult.push({'url':play,'options':{headers:head}});\n                            hean.push(head);\n                            tabs.push(jiek[i].tabs);\n                        }\n                    };\n                    //log(mult);\n\n                    if (mult.length > 0) {\n                        //var bcmplay = batchCacheM3u8(mult);\n                        return JSON.stringify({\n                            urls: mult,\n                            //urls: bcmplay,\n                            names: tabs,\n                            danmu: \"hiker://files/cache/danmu.json\",\n                            headers: hean\n                        });\n                    } else {\n                        return urll\n                    }\n\n                } else {\n                    return JSON.stringify({\n                        urls: [urll],\n                        danmu: \"hiker://files/cache/danmu.json\"\n                    });\n                }\n            }),\n            col_type: clt\n        });\n    }\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"//代理https://movie.spzyw.top\n//直链https://api.chineni.com\nif (!getItem('linkmode', '')) {\n    setItem('linkmode', 'https://api.chineni.com');\n}","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"墨墨♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"http://www.shliangjie1.com/vs/fyclass--fysort------fypage---fyyear/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#';.stui-vodlist__item&&Text\";\n一级(parStr,true); ","search_url":"http://www.shliangjie.com/vsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data&&Text;p.data,2&&Text;p.data,1&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.stui-content__desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&.stui-pannel__head:not(:matches(剧情|猜你))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n 线路处理:function(u){\n     return u.replace('在线播放,无需安装播放器','').trim()\n },\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitlab.com/hjdhnx/hiker/-/raw/main/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/q/111.png"},{"last_chapter_rule":"","title":"没名影视♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"http://www.lanmeiys.com/fyclass/list.html?country=fyarea&year=fyyear&page=fypage","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫","class_url":"m&t&var&a","area_name":"全部&中国&香港&台湾&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","area_url":"&中国&香港&台湾&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","sort_name":"","year_name":"2021&||&2020&|||&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","sort_url":"","year_url":"2021&&2020&short&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","find_rule":".projects-holder&&.project-item;h2&&Text;img&&src;span&&Text;a&&href","searchFind":"body&&.service-item;h4&&Text;a&&href;*;.service-content--h4&&Text;img&&src","search_url":"http://www.lanmeiys.com/movie/search?keyword=**;post;utf-8","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar html=getResCode();\n/*针对播放线路*/\nvar lazy=`@lazyRule=.js:var get =fetch(input,{});var js = parseDomForHtml(get,\".container&&iframe&&src\");if(js.indexOf('url=')!=-1){var urll=decodeURIComponent(js.split('url=')[1]);if(urll.indexOf('html')!=-1){var jiek=\"https://1717.ntryjd.net/0526/?url=\"+urll;var fileUrl=\"https://cdn.jsdelivr.net/gh/lzk23559/Public_folder/parse.js\";eval(fetch(fileUrl,{}));var url=yqjx.toUrl(jiek);url!=\"\"?url:getUrl(jiek);}else{urll};}else{var urll=parseDomForHtml(fetch(js,{headers:{\"Referer\":\"http://www.lanmeiys.com/\"}}),'body&&iframe&&src');if(urll.indexOf(\"share\")!=-1){var link=urll.split(\"/share\")[0];var fc=fetch(urll,{}).replace(\"var purl\",\"var main\");if(fc.indexOf(\"main\")!=-1){var mat=fc.match(/var main.*?;/)[0];eval(mat);main.indexOf(\"http\")!=-1?main:link+main;}else{var main=fc.match(/url:.*?[\\'\\\"](.*?)[\\'\\\"]/)[1];main.indexOf(\"http\")!=-1?main:link+main};}else{urll}}`;\n/*针对下载线路*/\nvar dnlazy=`@rule=js:var res={};var d=[];var html=getResCode();var cont=parseDomForHtml(html,'.box-content&&Html');var link=parseDomForHtml(cont, \"textarea&&Text\");if(link.indexOf('aHR0')!=-1){var mac=link.match(/\\\\/(aHR0.*?)\\\\//)[1];link=decodeURIComponent(base64Decode(mac));}else{link=link}d.push({\ttitle:link,desc:parseDomForHtml(cont, \".panel-body&&Text\"),url:link,\tcol_type: 'text_1'\t});res.data=d;setHomeResult(res)`;\n/*直接解析*/\nvar zjlazy=`@lazyRule=.js:var urll=input;var jiek=\"https://1717.ntryjd.net/0526/?url=\"+urll;var fileUrl=\"https://cdn.jsdelivr.net/gh/lzk23559/Public_folder/parse.js\";eval(fetch(fileUrl,{}));var url=yqjx.toUrl(jiek);url!=\"\"?url:getUrl(jiek)`;\n\nvar tabs=parseDomForArray(html,'body&&.panel-heading');\nvar conts=parseDomForArray(html,'body&&.list-group');\n//setError(conts.length);\n\nvar thumb = parseDom(html, \".blog-image&&img&&src\");\nd.push({\n\t\t\ttitle: '线路预览:'+'  共'+conts.length+'条线路',\n    desc:parseDomForHtml(html, \".table-dateil&&tr,-1&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'text_center_1'\n});\n\nfor(var i = 0;i<conts.length;i++){\n  var list=parseDomForArray(conts[i],'body&&a');\n  if(list!=null){\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n//setError(list[0]);\n\n   for(var j=list.length-1;j>=0;j--){\n   var url=parseDomForHtml(list[j], \"a&&href\");\nif(url.substring(0,4)=='http'){url=url+zjlazy;}else if(url.indexOf('play')!=-1){url='http://www.lanmeiys.com'+url+lazy;}else{url='http://www.lanmeiys.com'+url+dnlazy}\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:url,\n      col_type: 'text_5'\n\t\t\t});\n   }\n\n  }\n}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/100.png"},{"firstHeader":"class","last_chapter_rule":"","title":"YY影院","author":"妄炁","version":0,"type":"video","url":"https://www.yyzone.net/vodshow/fyclass--------fypage---.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":".stui-pannel_bd&&li;a&&title;a&&href;.pic-text&&Text;;.a&&data-original","search_url":"https://www.yyzone.net/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'.stui-content__detail&&h1&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.img&&data-original',//图片\n url:'.img&&data-original',//可以是影片链接，或者图片也行\n desc:'.stui-content__detail&&.data&&Text',//一般主演，地区，影片评分等描述\n content:'.stui-content__detail&&.desc&&Text',//内容简介，详情\n tabs:'body&&.bottom-line',//线路\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'a&&href',//线路id，可不填\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#1aad19',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505'});","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:\nvar html = getResCode();\n// 播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list')[0];\n// 选集列表的定位\nvar list=parseDomForArray(conts, 'ul&&li');\nvar title=\"\";\n// 过滤掉含番外和特别等字眼为最后一集的选集，避免有更新的选集无法被感知\nfor(let i = 1; i < list.length; i++) {\n    let index = list.length-i;\n    title = parseDomForHtml(list[index],'a&&Text');\n    if(title.search(/番外|特别/) == -1) break;\n}\n// 获取更新时间，确保有更新时能正常提示\nvar time = parseDomForHtml(html, \".myui-content__detail&&p,1&&Text\").replace(\"更新：\", \"\");\nsetResult(\"更新至: \" + title + \" | \" + time);","title":"玉杰影视S","author":"Senap&晓佬模板&感谢M佬指点&蓝莓图标","version":0,"type":"other","url":"http://net.zyjsyy.cn:2080/index.php/vod/show/fyarea/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动漫电影&国产剧&香港剧&日本剧&欧美剧&台湾剧&韩国剧&海外剧","class_url":"1&2&3&4&6&7&8&9&10&11&12&21&36&13&14&15&16&22&23&24","area_name":"全部&大陆&香港&台湾&美国&韩国&日本&泰国&新加坡&马来西亚&印度&英国&法国&加拿大&西班牙&俄罗斯&其他","area_url":"&area/大陆&area/香港&area/台湾&area/美国&area/韩国&area/日本&area/泰国&area/新加坡&area/马来西亚&area/印度&area/英国&area/法国&area/加拿大&area/西班牙&area/俄罗斯&area/其他","sort_name":"时间&人气&评分&喜剧&爱情&恐怖&动作&科幻&剧情&战争&微电影&动漫电影&其他","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"by/time&by/hits&by/score&class/喜剧&class/爱情&class/恐怖&class/动作&class/科幻&class/剧情&class/战争&class/微电影&class/动漫电影&class/其他","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:\nvar d = [];\ntry {\n    //定位列表\n    var list = parseDomForArray(getResCode(), '.vodlist&&.vodlist_item');\n    for (var j in list) {\n        d.push({\n            //定位标题\n            title: parseDomForHtml(list[j], 'a&&title'),\n            //定位描述\n            desc: parseDomForHtml(list[j], '.pic_text&&Text'),\n            //定位图片\n            pic_url: parseDom(list[j], '.lazyload&&data-original') + \"@Referer=\",\n            //定位链接\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\n\n//定位列表\nvar list = parseDomForArray(getResCode(), '.vodlist&&.searchlist_item');\nfor (var j in list) {\n    d.push({\n        //定位标题\n        title: parseDomForHtml(list[j], 'a&&title'),\n        //定位描述\n        desc: parseDomForHtml(list[j], '.pic_text&&Text'),\n        //定位筒介\n        content: parseDomForHtml(list[j], '.vodlist_sub&&Text') + '\\n' + parseDomForHtml(list[j], '.vodlist_sub,1&&Text') + '\\n' + parseDomForHtml(list[j], '.vodlist_sub,2&&Text'),\n        //定位图片\n        img: parseDom(list[j], '.lazyload&&data-original') + \"@Referer=\",\n        //定位链接\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nres.data = d;\nsetSearchResult(res);","search_url":"http://net.zyjsyy.cn:2080/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//免嗅\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var url = player_aaaa.url;if(player_aaaa.from=='fanqie'){request('https://jiexi.8b5q.cn/player/jx.php?url='+url).match(/\"url\": \"(.*?)\"/)[1]}else if(player_aaaa.from=='ukyun'){url.split('/share')[0]+fetch(url,{}).match(/main = \"(.*?)\"/)[1]}else{url}`\n\n/*线路↓*/\nvar arts = parseDomForArray(html, '#NumTab&&a');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&alt').replace(' ', ''))\n}\n/*线路↑*/\n\n/*↓选集*/\nvar conts = parseDomForArray(html, 'body&&.content_playlist:not(.list_scroll)');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n/*选集↑*/\n\n//以下头框\nd.push({\n    //定位图片右侧标题:导演，主演，更新日期\n    title: parseDomForHtml(html, '.data&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.data,1&&Text').substring(0, 15) + '\\n' + parseDomForHtml(html, '.data,2&&Text').substring(0, 15),\n    //定位简介\n    desc: ' 简 介：' + parseDomForHtml(html, '.content_desc&&Text').substring(0, 30) + '…',\n\n    //定位图片\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n   //定位影视标题，用于快捷搜索\nvar title = parseDomForHtml(html, 'h2&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=②精品',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=豆娃R',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'text_3'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        // title: '‘‘选集’’',\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + '‘‘选集’’' + '' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_3'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/63.svg"},{"last_chapter_rule":"","title":"Chok吧S","author":"Senap","version":0,"url":"https://www.chok8.com/vodshow/fyclass-fyarea-------fypage---fyyear.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","col_type":"movie_3","class_name":"全部&追剧&电影&综艺&动漫&动作片&喜剧&爱情&科幻&恐怖&剧情&战争&记录&犯罪&国产&港台&日韩&欧美","class_url":"&lianxuju&dianying&zongyi&dongman&dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&jilupian&fanzuipian&guochanju&gangtaiju&rihanju&oumeiju","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006","sort_url":"","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], '.lazyload&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.chok8.com/vodsearch/**----------fypage---.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0)}","titleColor":"#ff13b66a","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:var d = [];var html=getResCode();\nd.push({\n    desc: '100%&&float',\n    col_type: 'x5_webview_single'\n});\n\nvar lazy = $(\"\").lazyRule(() => {\n    const {\n        lazyParse\n    } = $.require('hiker://page/globalParse?rule=道长仓库Pro');\n    return lazyParse(input)\n});\n\n//视频标题的定位\ntry{\nvar des_title = parseDomForHtml(html, 'h1&&Text');\n\n}catch(e){\nvar des_title ='没有正确获取到影片名称哟！';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html,'.desc&&Text');\n\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介哟！';\n}\n\n//视频封面的定位\ntry{\nvar des_pic =parseDom(html,'.lazyload&&data-original');\n\n}catch(e){\nvar des_desc ='没有正确获取到简介图片路径哟！\\n'+des_desc;\n}\n\n//线路名列表的定位\nvar arts = parseDomForArray(html,'body&&h3');\n\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n   \nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))      //' 列表名改'ul&&li'\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))//有可能改Text\n\n}\n\n\n//下面除了获取选集名称例如1,2,3集，有的需要改下\n//有其他不需要修改\n\nd.push({\ntitle:des_title,\ndesc:des_desc,\npic_url:des_pic,\nurl:MY_URL,\ncol_type:'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    col_type: 'line_blank'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'scroll_button'\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    d.push({\n        col_type: 'line_blank'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    d.push({\n        col_type: 'big_blank_block'\n    });\n    if (getVar('shsort') == '1') {\n        for (var j = list.length - 1; j >= 0; j--) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    } else {\n        for (var j = 0; j < list.length; j++) {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/, '$1').replace('第', '').replace('期', '');\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                col_type: jm.length > 5 ? 'text_2' : 'text_5'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://img.guguzhu.com/d/file/android/ico/2021/07/20/rednjufmj4m.png"},{"firstHeader":"class","last_chapter_rule":"","title":"黑狐影院.Dr","author":"道长&&Killer","version":1,"type":"video","url":"hiker://empty##http://fagmn.com/list/fyclass_fypage.html","col_type":"movie_3_marquee","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([]);\n设置(cates);\n自动一级(null,cates);\n}\n混合(ui,\"/edu\",\"\");","searchFind":"js:\nrequire(config.自动匹配);\nlet key=MY_URL.split('key=')[1];\nlog(key);\nMY_URL=获取搜索链接();\n//log(MY_URL);\nhtml = post(MY_URL,{body:{searchword:key}});\n自动搜索('影片');","search_url":"hiker://empty##/search.php?key=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=黑狐"},{"last_chapter_rule":"","title":"被窝电影网","author":"发粪涂墙&佐手","version":0,"type":"other","url":"https://www.bei5dy.com/vodshow/fyAll--------fypage---/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&综合片","area_url":"dongzuopian&xijupian&aiqingpian&kehuanpian&kongbupian&juqingpian&zhanzhengpian&lunlipian","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧&其他剧","sort_url":"","year_url":"guochanju&gangtaiju&rihanju&oumeiju&qitaju","find_rule":".stui-vodlist&&li;h4&&Text;a&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-vodlist__media&&li;h3&&Text;a&&href;span,1&&Text;.detail--h3&&Text;a&&data-original","search_url":"https://www.bei5dy.com/vodsearch/**----------fypage---/","titleColor":"#f20c00","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n\n//特别注意：视频顶部滚动的文字信息均属诈骗信息，请勿相信和打开，切记切记！！！\n\n\nvar res = {};\nvar d = [];\nvar html = getResCode(); \nvar tabs = parseDomForArray(html, 'body&&h3'); \nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nfor (var i = 0; i < conts.length; i++) { \n\tvar list = parseDomForArray(conts[i],\"ul&&a\"); \n\tif (list != null) { \n\t\td.push({ \n\t\t\ttitle: parseDomForHtml(tabs[i],\"alt&&Text\"), \n\t\t\tcol_type: 'text_1' \n\t\t}); \n\t\tfor (var j = 0; j < list.length; j++) { \n\t\t\td.push({ \n\t\t\t\ttitle: parseDomForHtml(list[j],\"Text\"), \n\t\t\t\turl: 'https://www.bei5dy.com/' + parseDomForHtml(list[j],\"a&&href\")+'@lazyRule=.stui-player__video&&script&&Html.js:eval(input);decodeURIComponent(player_aaaa.url)',\ncol_type: list.length >3?'text_3':'text_2' \n\t\t\t}); \n\t\t} \n\t} \n} \nres.data = d; \nsetHomeResult(res);\n\n","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#f20c00"},{"firstHeader":"class","last_chapter_rule":"","title":"NFYS·N","author":"Namo","version":2,"type":"video","url":"https://www.nfyingshi.com/fyclass/page/fypage/","col_type":"movie_3_marquee","class_name":"热门电影&电视剧&美剧","class_url":"在线观看&电视剧&美剧","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.bt_img&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.dytit&&Text'),\r\n       desc: parseDomForHtml(list[j], '.hdinfo&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.search_list&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.dytit&&Text'),\r\n       desc: parseDomForHtml(list[j], '.hdinfo&&Text'),\r\n       pic_url: parseDom(list[j], '.lazy&&data-original'),\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.nfyingshi.com/?s=**","titleColor":"#00b0f8","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar Color=\"#1aad19\";\nfunction getHead(title){\n    return '‘‘’’<b><font color=\"'+Color+'\">'+title+'</font></b>';\n}\n\n//影片名称的定位\ntry{\nvar des_title = parseDomForHtml(html, '.moviedteail_tt&&Text');\n}catch(e){\nvar des_title ='没有正确获取到影片名称';\n}\n\n//影片主演的定位\ntry{\nvar des_zhuyan = '主演：'+parseDomForHtml(html, '.moviedteail_list&&li,7&&Text').replace('展开全部','');\n}catch(e){\nvar des_title ='没有正确获取到主演名称';\n}\n\n//剧情简介的定位\ntry{\nvar des_desc = parseDomForHtml(html, '.yp_context&&p&&Text');\n}catch(e){\nvar des_desc ='没有正确获取到剧情简介';\n}\n\n//简介图片路径的定位\ntry{\nvar des_pic =parseDom(html, '.dyimg&&img&&src');\n}catch(e){\nvar des_pic ='没有正确获取到图片';\n}\n\n// 获取线路标题\nvar arts = parseDomForArray(html,'.mi_paly_box&&.ypxingq_t');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n// 获取线路列表\nvar conts = parseDomForArray(html, 'body&&.paly_list_btn');\n\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.paly_list_btn&&a'))\n}\n\nvar _x5 = $.toString(() => {\n    //fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp4|\\.m3u8|video_mp4/)) {\n            //fy_bridge_app.log(urls[i])\n            return urls[i].replace(/http.*url=/, '') +'#isVideo=true#'\n        }\n    }\n});\n\n//输出简介部分\nd.push({\ntitle: '片名：'+des_title+'\\n'+des_zhuyan,\ndesc: '此规则仅限学习交流使用，请于导入后24小时内删除，支持正版！',\npic_url: des_pic,\ncol_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">' + des_desc.substr(0, 60) + '...</font><small><font color=\"red\">查看详情</font></small></small>',\n       url: 'hiker://empty#' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title:MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,\n       col_type: 'text_1'\n   });\n\nd.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">⬇️排序</span></b>': '““””<b><span style=\"color: #1aad19\">⬆️排序</span></b>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage(false);'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'flex_button'\n        })\nfunction setTabs(tabs, vari) {\n             for (var i in tabs) {\n             var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\nd.push({\n        title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n        url: url,\n        col_type: 'flex_button'\n            })\n            }\nd.push({\n        col_type: \"line\"\n    });\n            }\n    function setLists(lists, index) {\n           var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\nd.push({\n       title: parseDomForHtml(list[j], 'a&&Text').replace('第','').replace('集',''),\n       url: \"x5Rule://\" + parseDom(list[j], 'a&&href') + '@' + _x5,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n       col_type: list.length >3?'text_5':'text_2'\n             });\n            }\n            } else {\n            for (var j = 0; j < list.length; j++) {\nd.push({\n       title: parseDomForHtml(list[j], 'a&&Text').replace('第','').replace('集',''),\n       url: \"x5Rule://\" + parseDom(list[j], 'a&&href') + '@' + _x5,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n       col_type: list.length >3?'text_5':'text_2'\n            });\n           }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({title: '<br>', col_type: 'rich_text'});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://www.nfyingshi.com/wp-content/themes/mibt/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"多吉影音·N","author":"Namo","version":3,"type":"video","url":"https://dogevod.com/browse/fyAll.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"movies&tvseries&tv_show&anime","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href').replace('ep','title').replace('-1-1.html','.html') +\"#immersiveTheme#\"\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href.js:input+\"#immersiveTheme#\";.pic-text&&Text;p,1&&Text;a&&data-original","search_url":"https://dogevod.com/search/**----------fypage---.html","titleColor":"#00b0f8","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.myui-panel__head:has(.sort-button)');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace('線路',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,5&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i)\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前选择线路 </font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_2' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl:parseDom(list[j], 'a&&href') + `@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`,\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\t\naddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t}\n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\t\n\t\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"https://dogevod.com/images/indexlogo.png?v=0.3"},{"firstHeader":"class","last_chapter_rule":"","title":"剧迷TVᴺᵐ","author":"Namo","version":4,"url":"https://gimytv.com/genre/fyclass-fyarea--fypage/by/fysort.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"movies&tvseries&tv_show&anime","area_name":"全部&美国&欧美&大陆&韩国&香港&日本&英国","area_url":"&美國&歐美&大陸&韓國&香港&日本&英國","sort_name":"时间&周人气&月人气","year_name":"","sort_url":"time&hits_week&hits_month","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":".myui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;p,-2&&Text;a&&data-original","search_url":"https://gimytv.com/search/**----------fypage---.html","titleColor":"#00b0f8","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar d = [];\n\n//警告：本规则仅供写源爱好者学习交流。若作他用，后果自负！\n//简介\nvar des_desc = parseDom(getResCode(), '.text-collapse&&Text').replace(getUrl()+\"/\",\"\");\n//图片\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\n//线路\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/\"myui-panel__head bottom-line[\\s\\S]*?<\\/h3/g);\n//选集\nvar conts = parseDom(getResCode(), 'body&&Html').match(/\"myui-content__list[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length + '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: '线路'+(i+1),\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: 'https://gimytv.com'+list[j].split('href=\"')[1].split('\"')[0]+`@lazyRule=.embed-responsive&&script&&Html.js:eval(input);var jsurl = player_data.url;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\n\t\t\t});\n\t\t}\n\t}\n}\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/48.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"4K影视.Dr","author":"道长&Killer","version":2,"type":"video","url":"hiker://empty##https://m.4kdv.com/fl/dianying_fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.replace('hiker://empty##','');\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page=MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.nav-list',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|直播))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索结果');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=4K影视"},{"last_chapter_rule":"","title":"60影视","author":"ᝰꫛꫀꪝ藍凋","version":3,"type":"video","url":"https://www.60kan.com/vodshow/fyclass/area/fyarea/by/fysort/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshi&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.60kan.com/vodsearch/wd/**/page/fypage.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.fed-part-rows,1&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.fed-col-xs12,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.fed-col-xs12,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.fed-col-xs6.fed-col-md3,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-layout,1&&.fed-tabs-boxs&&.fed-tabs-item,1&&.fed-text-muted&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"39影院","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://39kan.com/vodshow/fyclass/area/fyarea/by/fysort/page/fypage/year/fyyear.html.js:input.replace('area//','/').replace('letter//','/').replace('year/.','.')","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshi&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-deta-info');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://39kan.com/vodsearch/wd/%E6%88%91/page/2.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-drop-tops&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], '.fed-part-rows,1&&li'))\n}\n\nvar 导演 = parseDomForHtml(html, '.fed-col-xs12,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.fed-col-xs12,1&&Text');\n\nvar 更新 = parseDomForHtml(html, '.fed-col-xs6.fed-col-md3,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.fed-lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-part-layout,1&&.fed-tabs-boxs&&.fed-tabs-item,1&&.fed-text-muted&&Text').replace('[收起部分]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"EFUNS","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://www.pili5.cn/vodtype/fyAll-fypage.html","col_type":"movie_3","class_name":"动作&喜剧&爱情&科幻&恐怖&剧情&战争&记录","class_url":"6&7&8&9&10&11&12&22","area_name":"国产&港台&欧美&日韩&泰剧&网络&海外","area_url":"13&14&16&20&27&21&23","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\r\n       pic_url: parseDom(list[j], 'a&&data-original'),\r\n       url: parseDom(list[j],'a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://www.pili5.cn/vodsearch/-------------.html?wd=**","titleColor":"#ff228be6","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy=`@lazyRule=.js:JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,0&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"看神马","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"hiker://empty##https://kansmtv.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        pic_url: pd(list[j], '.lazyload&&data-original')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], '.lazyload&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://kansmtv.com/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy =\n`@lazyRule=.stui-player__video&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=player_aaaa.url;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-pannel__head:not(:contains(介绍)):not(:contains(喜欢))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 更新 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-content__desc&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 更新,\n    desc: 主演 + '\\n' + 导演,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    \n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"76度","author":"ᝰꫛꫀꪝ藍凋","version":2,"type":"video","url":"hiker://empty##https://176876.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/page\\/(.*)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'h3&&Text'),\r\n       desc: parseDomForHtml(list[j], '.video-serial&&Text'),\r\n       img: parseDom(list[j], '.lazyload&&data-src')+\"@Referer=\",\r\n       content: parseDomForHtml(list[j], '.video-info-main&&.video-info-items,2&&Text'),\n       url: parseDom(list[j], 'h3&&a&&href')\r+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://176876.com/index.php/vod/search/page/fypage/wd/**.html","titleColor":"#ff673ab7","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy =\n`@lazyRule=.player-wrapper&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(base64Decode(player_aaaa.url));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else{url}`\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-content&&Text').replace('[收起]','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"策驰","author":"ᝰꫛꫀꪝ藍凋&sm`回忆","version":5,"type":"video","url":"https://www.cecidy.cc/vodshow/fyclass-fyarea-fysort------fypage---fyyear/","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.name;\n    r.img = j.pic.indexOf('http') != -1 ? j.pic : 'https://www.cecidy.cc' + j.pic;\n    r.url = 'https://www.cecidy.cc/voddetail/' + j.id + '/' + \"#immersiveTheme#\";\n    r.content = j.name + '\\n' + j.en;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\nres.data = d;\nsetSearchResult(res);","search_url":"https://www.cecidy.cc/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy =\n`@lazyRule=.myui-player__video&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var url=decodeURIComponent(base64Decode(player_aaaa.url));if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/LT/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));ParseS.maoss(\"https://www.cecidy.cc/v/?url=\" + url, false, \"A42EAC0C2B408472\")}else{url}`\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 状态 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.data,3&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"奇趣","author":"ᝰꫛꫀꪝ藍凋","version":1,"type":"video","url":"https://www.qiqu.me/vodshow/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&dianshiju&zongyi&dongman","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"人气&时间&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"hits&time&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.qiqu.me/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=xx.url;var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav&&a');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar 图片链接 = MY_URL;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    //url: 图片链接,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/170.png"},{"last_chapter_rule":"","title":"钉子影院","author":"","version":0,"type":"other","url":"http://www.dingzi77.com/fyclass/list.html?year=fyyear&country=fyarea&cate=0&page=fypage&per-page=24","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"m&t&a&var","area_name":"全部&中国&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","area_url":"&中国&美国&日本&韩国&印度&法国&泰国&英国&俄罗斯&加拿大&意大利","sort_name":"","year_name":"全部&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","sort_url":"","year_url":"&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000&90年代&80年代","find_rule":"body&&.col-md-3;h2&&Text;img&&src;p&&Text;a&&href.js:input+\"；；get；；utf-8；；{User-Agent@Android}\"","searchFind":"body&&.service-item;h4&&Text;a&&href.js:input+'；；get；；utf-8；；{User-Agent@Android}';p&&Text;p,3&&Text;img&&src","search_url":"http://www.dingzi77.com/movie/search?keyword=**&_csrf=VGNFNHZEWEMZOTYFMDNsOmZRcn0PD2FxBRYQUE4bF3Y5DQkFPTAMBA==;post;utf-8;{Cookie@PHPSESSID=bbhh64utq6huekup5o9a0f1paq；；thb=1；；_csrf=264bd13a7be5ea3f1feb4280f2362a519e48a452a42e0865e0cddfc6fecb499fa%3A2%3A%7Bi%3A0%3Bs%3A5%3A%22_csrf%22%3Bi%3A1%3Bs%3A32%3A%22MZs1Fw4y227IyK92QuUd8_O5mnL1KtTG%22%3B%7D；；UM_distinctid=1727599ebfe5d4-09aec00cec2fec-1b3a6250-11cc40-1727599ebff641；；CNZZDATA1258110017=402050104-1591107600-%7C1591107600；；Hm_lvt_4a98ef3bdc7cc49357c04a8a751975da=1591110932；；Hm_lpvt_4a98ef3bdc7cc49357c04a8a751975da=1591111249}","titleColor":"#ffff00ff","group":"视频","detail_col_type":"text_2","detail_find_rule":"body&&.panel-heading;.panel-heading&&Text.js:input.replace(\"剧情介绍\" ,\"视频资源0\");*;*;*==>body&&.list-group,fyIndex&&a;li&&Text;*;*;a&&href.js:input+'@lazyRule=html＆＆＆＆iframe＆＆＆＆src.js:if(input.split(\\'surl=\\').length>1){input}else{base64Decode(input.split(\\'url=\\')[1])}'","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#ffff00ff"},{"title":"豆角电影网","author":"发粪涂墙","version":0,"url":"https://m.tvb52.com/index.php?m=vod-list-id-fyAll-pg-fypage-order--by-time-class--year--letter--area--lang-.html","col_type":"movie_3","class_name":"连续剧&电影&视频大全&综艺&动漫","class_url":"2&1&25&30&4","area_name":"动作片&科幻片&恐怖片&喜剧片&战争片&爱情片&剧情片","area_url":"5&8&9&6&11&7&10","sort_name":"","year_name":"国产剧&韩剧&港剧&台剧&泰剧&日剧&美剧&海外剧","sort_url":"","year_url":"12&15&13&14&26&17&16&18","find_rule":"#resize_list&&li;.sTit&&Text;.lazyload&&data-src;.sNum&&Text;a&&href","searchFind":".ulPicTxt&&li;.sTit&&Text;a&&href;span,3&&Text;.sDes&&Text;img&&data-src","search_url":"https://m.doujiaow.com/index.php?m=vod-search-pg-fypage-wd-**.html","titleColor":"#ffff00ff","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar res = {};\nvar result = [];\nvar html = getResCode();\nresult.push({\n    title: parseDomForHtml(html, '.sDes,-1&&Text'),\n    desc: parseDomForHtml(html, '#intro_0,-1&&Text'),\n    pic_url: parseDom(html, '.posterPic&&img&&src'),\n    url:getUrl(),\n\t\tcol_type: 'pic_1'\n});\nvar jsurl = fetch(parseDom(fetch(parseDom(html, '.ulNumList&&a&&href'),{}), '.detailPosterIntro&&script&&src'),{});\neval(jsurl);\nvar arr1 = mac_url.split(\"$$$\");\nvar link = mac_from.split(\"$$$\");\nfor(var i = 0; i < arr1.length; i++) {\n    var line = link[i] + '线路';\n    var linkArr = arr1[i].split('#');\n        result.push({\n            title: line,\n            col_type: \"text_1\"\n        });\n    for(var j = 0; j <linkArr.length; j++) {\n      result.push({\n        title: linkArr[j].split(\"$\")[0],\n        url: linkArr[j].split('$')[1],\n   col_type:linkArr.length >3?'text_3':'text_2'\n            });\n      }\n}\nres.data = result;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","icon":"#ffff00ff"},{"title":"虎看网","author":"膜拜","version":0,"url":"https://www.hukanyy.com/vodtypehtml/fyAll-fypage.html[firstPage=https://www.hukanyy.com/vodtypehtml/fyAll.html]","col_type":"movie_3","class_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片","class_url":"5&6&7&8&9&10&11&16","area_name":"网络剧&国产剧&香港剧&韩国剧&欧美剧&台湾剧&日本剧&海外剧","area_url":"22&12&13&14&15&17&18&20","sort_name":"","year_name":"国产动漫&日本动漫&海外动漫","sort_url":"","year_url":"26&27&28","find_rule":"body&&.stui-vodlist__thumb;title;data-original;.pic-text&&Text;href","searchFind":".stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;*;a&&data-original","search_url":"https://www.hukanyy.com/index.php?m=vod-search-pg-fypage-wd-**.html","titleColor":"#ffff00ff","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\n\r\nvar des_desc = parseDom(getResCode(), 'meta,1&&content').replace(getUrl()+\"/\",\"\");\r\n\r\nvar des_pic = parseDom(getResCode(), '.lazyload&&data-original');\r\n\r\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/<h3 class=\\\"title[\\s\\S]*?<\\/h3>/g);\r\n\r\nvar conts = parseDom(getResCode(), 'body&&Html').match(/class=\\\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\r\n\r\nd.push({\r\n\ttitle: '共有' + conts.length + '条线路',\r\n desc: des_desc,\r\n\tpic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'pic_1'\r\n});\r\n\r\nfor (var i = 0; i < conts.length; i++) {\r\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\r\n\tif (list != null) {\n\r\n\t\td.push({\r\n\t\t\ttitle: tabs[i+1].split(\">\")[1].split(\"<\")[0],\r\n\t\t\tcol_type: 'text_1'\r\n\t\t});\n\r\n\t\tfor (var j = 0; j < list.length; j++) {\r\n\t\t\td.push({\r\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\r\n\t\t\t\turl: parseDom( list[j],'a&&href')+'@lazyRule=body&&.stui-player__video&&script,1&&Html.js:var js_str=input.match(/eval[\\\\s\\\\S]*?jiekou.*?;/)[0];eval(js_str);str.indexOf(\"m3u8\")>-1?str:\"https://www.hukanyy.com\"+jiekou+str', col_type: list.length >2?'text_3':'text_2'\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ffff00ff"},{"title":"热剧电影天堂","author":"戏太深","version":0,"url":"http://www.rejuttyy.com/zuixin/gaoqingfyAll_fypage.html[firstPage=http://www.rejuttyy.com/zuixin/gaoqingfyAll.html];get;gbk","col_type":"movie_3","class_name":"电视&电影&动漫&综艺","class_url":"44&45&46&15","area_name":"剧情片&动作片&喜剧片&爱情片&战争片&科幻片&恐怖片","area_url":"6&7&8&9&10&11&12","sort_name":"写真集&伦 理片&纪录片&动画片&动漫剧场&综艺娱乐","year_name":"内地剧&香港剧&韩国剧&台湾剧&日本剧&泰国剧&欧美剧","sort_url":"34&40&13&14&43&15","year_url":"1&2&3&5&4&27&39","find_rule":".stui-vodlist&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":".stui-pannel_bd&&li;h3&&Text;a&&href;.pic-text&&Text;.detail--h3&&Text;.lazyload&&data-original","search_url":"http://www.rejuttyy.com/search.asp?page=fypage&searchword=**&searchtype=-1;get;gbk","titleColor":"#ffff00ff","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\n\r\n// 子\r\nvar des_desc = parseDom(getResCode(), 'head&&meta,-1&&content').replace(getUrl()+\"/\",\"\");\r\n// 丑\r\nvar des_pic = parseDom(getResCode(), 'body&&.stui-content__thumb&&a&&data-original');\r\n// 寅\r\nvar tabs = parseDom(getResCode(), 'body&&Html').match(/#play[\\s\\S]*?<\\/li/g);\r\n// 卯\r\nvar conts = parseDom(getResCode(), 'body&&Html').match(/class=\\\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\r\n\r\nd.push({\r\n\ttitle: '共有' + conts.length + '条线路',\r\n desc: des_desc,\r\n\tpic_url: des_pic,\r\n\turl: getUrl(),\r\n\tcol_type: 'pic_1'\r\n});\r\nvar html = fetch(parseDom(getResCode(),'.stui-content__playlist&&a&&href'),{});\r\nvar js =fetch( parseDom(html,'.stui-player__video&&script&&src'),{});\r\neval(js.split(',urlinfo')[0]);\r\nfor(var i = 0;i<VideoListJson.length;i++){\r\n\td.push({\r\n\t\ttitle:'线路'+(i+1),\r\n\t\tcol_type: 'text_1'\r\n\t});\r\n var m = VideoListJson[i][1];\r\n\tfor(var j = 0; j<m.length; j++){\r\n\t\tvar k = m[j].split('$');\r\n\t\td.push({\r\n\t\t\ttitle:k[0],\r\n\t\t\turl:k[1]+ `@lazyRule=.js:var jsurl=input;var jssp = jsurl.split(\"\\/share\")[0];var json = fetch(jsurl,{});jsurl.indexOf(\"m3u8\")>-1?jsurl:jsurl.indexOf(\"v5\")>-1?jssp+json.split(\"url: '\")[1].split(\"'\")[0]:jssp+json.split(\\'main = \"\\')[1].split(\\'\"\\')[0]`,\r\n\t\t\tcol_type: 'text_3'\r\n\t\t});\r\n\t}\r\n}\r\nres.data=d;\r\nsetHomeResult(res);\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","icon":"#ffff00ff"},{"last_chapter_rule":".single_info&&.date&&Text.js:'最近更新：'+input","title":"美剧迷","author":"永远の明日","version":7,"type":"video","url":"https://www.meijumi.net/fyAll/page/fypage;GET;UTF-8;{User-Agent@.js:PC_UA}","col_type":"movie_1","class_name":"美剧:&灵异/惊悚&魔幻/科幻&罪案/动作谍战&剧情/历史&喜剧&律政/医务&动漫/动画&纪录片&综艺/真人秀","class_url":"usa&usa/xuanyi&usa/mohuan&usa/zuian&usa/qinggan&usa/xiju&usa/yiwu&usa/katong&usa/jilu&usa/zongyi","area_name":"韩剧:&剧情&古装&喜剧&恐怖&爱情&犯罪/悬疑&科幻/奇幻&综艺/选秀","area_url":"hanju&hanju/hjjuqing&hanju/hjlishi&hanju/hjxiju&hanju/hjkongbu&hanju/hjaiqing&hanju/hjfanzui&hanju/hjkehuan&hanju/hjzongyi","sort_name":"","year_name":"英剧&周一&周二&周三&周四&周五&周六&周日&资讯","sort_url":"","year_url":"en&tag/zhouyi&tag/zhouer&tag/zhousan&tag/zhousi&tag/zhouwu&tag/zhouliu&tag/zhouri&zixun","find_rule":"js:\r\nsetResult(parseDomForArray(getResCode(), '#post_list_box&&article').map((v) => {\r\n  let [, title, mode] = parseDomForHtml(v, '.entry-title&&Text').match(/^(.*?) ?(迅雷下载)?$/)\r\n  return {\r\n    title: title,\r\n    desc: parseDomForHtml(v, mode ? '.gxts&&Text' : '.entry-meta&&Text'),\r\n    url: (mode ? '' : 'web://') + parseDom(v, 'a&&href') + '#immersiveTheme#',\r\n    img: parseDom(v, 'img&&src'),\r\n    col_type: mode ? 'movie_3_marquee' : 'pic_1'\r\n  }\r\n}))","searchFind":"js:\r\nsetResult(parseDomForArray(getResCode(), 'ul.search-page&&article').map((v) => {\r\n  let [, title, mode] = parseDomForHtml(v, '.entry-title&&Text').match(/^(.*?) ?(迅雷下载)?$/)\r\n  return {\r\n    title: title,\r\n    desc: parseDomForHtml(v, mode ? '.gxts&&Text' : '.entry-meta&&Text'),\r\n    content: parseDomForHtml(v, '.archive-content&&Text'),\r\n    url: (mode ? '' : 'web://') + parseDom(v, 'a&&href') + '#immersiveTheme#',\r\n    img: parseDom(v, 'img&&src'),\r\n  }\r\n}))","search_url":"/page/fypage/?s=**;GET;UTF-8;{User-Agent@.js:PC_UA}","group":"视频","detail_col_type":"text_2","detail_find_rule":"js:\r\nlet d = [{ desc: \"0\", col_type: \"x5_webview_single\" }],\r\n  html = getResCode(), tabMode = getVar('meijumi-tabMode', '0')\r\n\r\n// 简介\r\nlet title = parseDomForArray(html, '.article-tags&&a').map((v) => parseDomForHtml(v, 'Text')).join(' • '),\r\n  desc = parseDomForHtml(html, '.single-content&&blockquote&&Text'),\r\n  img = parseDomForHtml(html, '.single-content&&img&&src')\r\n// 选集\r\nlet tabs = [parseDomForArray(html, '.single-content&&h2~p:has(a)'), []]\r\ntry {\r\n  let playerUrl = parseDom(\r\n    parseDomForArray(html, '.single-content&&a')\r\n      .filter((v) => parseDomForHtml(v, 'a&&Text') == '在线云播')[0],\r\n    'a&&href')\r\n  tabs[1] = parseDomForArray(\r\n    fetch(playerUrl, { headers: { 'User-Agent': PC_UA } }),\r\n    '.container&&.playlist')\r\n} catch (e) { }\r\n\r\nd.push({\r\n  title: title,\r\n  desc: desc,\r\n  img: img,\r\n  url: MY_URL,\r\n  col_type: 'movie_1_vertical_pic_blur'\r\n}, {\r\n  title: ['✅', ''][tabMode] + ' 下载[' + tabs[0].length + ']',\r\n  url: $('#noLoading#').lazyRule(() => (putVar('meijumi-tabMode', '0'), refreshPage(), 'toast://已切换'))\r\n}, {\r\n  title: ['', '✅'][tabMode] + ' 云播[' + tabs[1].length + ']',\r\n  url: $('#noLoading#').lazyRule(() => (putVar('meijumi-tabMode', '1'), refreshPage(), 'toast://已切换'))\r\n})\r\n\r\nif (tabMode == 0)\r\n  tabs[0].forEach((v) => d.push({ col_type: 'line_blank' }, {\r\n    title: v.replace(/(href=\".*?)\"/g, '$1#ignoreVideo=true#\"')\r\n      .replace(/(>(?:\\s|&nbsp;|[\\u4e00-\\u9fa5]{2,3}：)+?)([0-9a-zA-Z]{4})((?:\\s|&nbsp;|\\|)*?<)/g, '$1<a href=\"copy://$2\"><code>$2 📋</code></a>$3').slice(3, -4),\r\n    col_type: 'rich_text'\r\n  }))\r\nelse\r\n  tabs[1].forEach((v) => {\r\n    let list = parseDomForArray(v, 'ul&&li')\r\n    if (list.length) {\r\n      d.push({ col_type: 'line_blank' }, {\r\n        title: '““””<b><span style=\"color:#323e58\">' + parseDomForHtml(v, '.title&&Text') + '</span></b>',\r\n        url: 'hiker://empty',\r\n        col_type: 'text_center_1'\r\n      })\r\n      list.forEach((vv) => d.push({\r\n        title: parseDomForHtml(vv, 'a&&Text'),\r\n        url: $(parseDom(vv, 'a&&href')).lazyRule(() => {\r\n          let html = fetch(input, { headers: { 'User-Agent': PC_UA } })\r\n          return JSON.parse(/var player_aaaa=({.*?})/.exec(parseDom(html, '.container&&Html'))[1]).url\r\n        }),\r\n        col_type: 'text_4'\r\n      }))\r\n    }\r\n  })\r\n\r\nsetResult(d)","sdetail_col_type":"text_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.meijumi.net/favicon.ico"},{"last_chapter_rule":"","title":"瓜田","author":"ᝰꫛꫀꪝ藍凋","version":6,"type":"video","url":"https://www.gtdy.cc/index.php?m=vod-list-id-fyclass-pg-fypage-order--by-fysort-class-0-year-fyyear-letter--area-fyarea-lang-.shtml","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"地区&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.fed-list-info&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a,1&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-list-details');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'h3&&Text'),\n     desc:parseDomForHtml(list[j], '.fed-list-remarks&&Text'),\n     pic_url: parseDom(list[j], '.fed-lazy&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.gtdy.cc/index.php?m=vod-search-pg-fypage-wd-**.shtml","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar _x5 = $.toString(() => {\n    fba.log(fba.getUrls())\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i].replace(/https.*url=/,'').replace(/\\.m3u8.*/,\".m3u8\")\n        }\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.fed-tabs-top&&.fed-tabs-title');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '.fed-tabs-btm&&.fed-row');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 主演 = parseDomForHtml(html, '.fed-elip,7&&Text');\n\nvar 导演 = parseDomForHtml(html, '.fed-elip,8&&Text');\n\nvar 地区 = parseDomForHtml(html, '.fed-col-xs6,7&&Text');\n\nvar 年份 = parseDomForHtml(html, '.fed-col-xs6,8&&Text');\n\nvar 图片 = parseDom(html, '.fed-pic&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.fed-conv-content&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演 ,\n    desc: 地区 + '\\n' + 年份,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:\"x5Rule://\"+parseDom(list[j], 'a&&href')+ '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://s4.ax1x.com/2021/12/24/TNKkr9.png"},{"last_chapter_rule":"","title":"西瓜𝙯","author":"佐手丶","version":2,"type":"other","url":"http://www.xiguashare.com/h-fyAll-fypage.html[firstPage=http://www.xiguashare.com/h-fyAll.html]","col_type":"movie_3","class_name":"国产&港剧&韩剧&欧美&美剧&英剧&日剧&热搜&偶像&言情&古装&家庭理论&美剧&韩剧&日剧&港台&泰剧&喜剧&科幻&悬疑&动作&剧情&内地&热门&热搜&热门更新&最新更新&最新发布","class_url":"hottvguochan&hottvgangju&hottvhanju&hottvoumei&hottvmeiju&hottvyingju&hottvriju&topsearchtv&topsearchtvouxiang&topsearchtvyanqing&topsearchtvguzhuan&topsearchtvjiatinglunli&topsearchtvmeiju&topsearchtvhangju&topsearchtvriju&topsearchtvgangtai&topsearchtvtaiju&topsearchtvxiju&topsearchtvkehuan&topsearchtvxuanyi&topsearchtvdongzuo&topsearchtvjuqing&topsearchtvneidi&hottv&topsearchtv&hotupdatetv&newupdatetv&newpublishtv","area_name":"热门&热门更新&经典&高分&冷门佳片&华语&欧美&韩国&日本&动作&喜剧&爱情&科幻&悬疑&恐怖","area_url":"hotmovie&hotupdatemovie&hotmoviejingdian&hotmoviegaofen&hotmovielenmenjiapian&hotmoviehuayu&hotmovieoumei&hotmoviehanguo&hotmovieriben&hotmoviedonzuo&hotmoviexiju&hotmovieaiqing&hotmoviekehuan&hotmoviexuanyi&hotmoviekongbu","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"body&&.col-xs-12;h3&&Text;img&&src;.newest||.small&&Text;a&&href","searchFind":"body&&.col-xs-12;h3&&Text;a&&href;.small&&Text;.desc-wrapper&&Text;img&&src","search_url":"http://www.xiguashare.com/q-**","titleColor":"#ff13b66a","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy =\n`@lazyRule=.embed-responsive&&iframe&&src;if(url.indexOf('.html')!=-1){request('https://jx.yunboys.cn/?url='+url).match(/\t\"url\":\"(.*?)\"/)[1]}else{url+\"#isVideo=true#\"}`;\n\nvar arts = parseDomForArray(html,'body&&.tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], '.tab-item&&Text').replace('',''))\n}\nvar conts = parseDomForArray(html, 'body&&.play-list');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nd.push({\npic_url: parseDom(html, '.thumbnail&&img&&src'),\ntitle: '共有'+conts.length+'线路'+'☞勿信水印广告zzz⃤',\nurl: MY_URL,\ncol_type: 'pic_1'\n});\n\nvar des_desc = parseDomForHtml(html, '.desc-wrapper&&Text');\nd.push({\n          title: des_desc.length > 50 ? des_desc.replace(des_desc, des_desc.substring(0, 50) +'...‘‘’’<font color=\"#0aa344\">详情</font></small>') : des_desc,\n          url: 'hiker://empty#' + parseDomForHtml(html,'body&&.desc-wrapper&&Html').split('/h1>')[0].replace(/;/g,'').replace(/<li/g,'<br><ul') + `@rule=js:var res = {}; var d = [];d.push({title: MY_URL.split('hiker://empty#')[1],col_type: 'rich_text'});res.data = d; setHomeResult(res);`,     \n          col_type: 'text_1'\n});\n\nfunction setTabs(tabs, vari) {\n        d.push({\n            title: '‘‘线路’’',\n            url: `@lazyRule=.js:let conf = getVar('折叠');if(conf=='关'){putVar({key:'折叠', value:'开'});}else{putVar({key:'折叠', value:'关'})};refreshPage(false);'toast://切换成功'`,\n            col_type: 'flex_button'\n        })\nif (getVar('折叠') == '开'||getVar('折叠') == '') {\n        var title = '';\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: tabs[i] + (getVar(vari, '0') == i ? '✅' : ''),\n                url: url,\n                col_type: 'flex_button'\n            })\n        }\n        d.push({\n            col_type: 'line_blank'\n        })\n    }\n}\n    function setLists(lists, index) {\n        d.push({\n            title: '‘‘选集’’',\n            url: `@lazyRule=.js:let conf = getVar('shsort');if(conf==' - 逆序'){putVar({key:'shsort', value:' - 正序'});}else{putVar({key:'shsort', value:' - 逆序'})};refreshPage(false);'toast://切换排序成功'`,\n            col_type: 'flex_button'\n        })\n        var list = lists[index];\n\nif (getVar('shsort') == ' - 逆序') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text'),\n                url: parseDom(list[j], 'a&&href'),\n                col_type: 'flex_button'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'a&&Text'),\n                url: parseDom(list[j], 'a&&href'),\n                col_type: 'flex_button'\n                });\n            }\n        }\n    }\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({title: '<br>', col_type: 'rich_text'});\n\nsetResult(d);\n\n\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ff13b66a"},{"last_chapter_rule":"","title":"咪酷2","author":"陨落悳流星✨","version":0,"type":"video","url":"http://www.miku2.com/filter/fyclass-fyarea-fysort------fypage---fyyear.html;get;UTF-8;{User-Agent@Mozilla/5.0 (Windows NT 10.0；； WOW64)&&Cookie@.js:'say=hbnl'+getVar('myip','')}","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&最新最热&微电影&纪录片&娱乐","class_url":"movie&tv&variety&cartoon&hot&microfilm&documentary&ent","area_name":"地区&大陆&香港&台湾&内地&美国&法国&英国&日本&韩国&新加坡&德国&俄国&泰国&印度&意大利&西班牙&加拿大&俄罗斯&其他","area_url":"&大陆&香港&台湾&内地&美国&法国&英国&日本&韩国&新加坡&德国&俄国&泰国&印度&意大利&西班牙&加拿大&俄罗斯&其他","sort_name":"时间&人气&评分","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar res = {};\r\nvar items = [];\r\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.fed-list-info&&li');\n\r\n    for (var i in list) {\r\n        var title = parseDomForHtml(list[i], '.fed-list-title&&Text');\n        var img = parseDom(list[i], '.fed-list-pics&&data-original');\r\n        var url = parseDom(list[i], 'a&&href');\n        var desc = parseDomForHtml(list[i], '.fed-list-remarks&&Text');\r\n        items.push({\r\n            title: title,\n            pic_url: img,\r\n            url: url,\n            desc: desc\r\n        });\r\n    }\n\r\nres.data = items;\r\nsetHomeResult(res);","searchFind":"js:\nvar d = [];\nfunction D(L, Label){\n    try{\n        return parseDomForHtml(L, Label);\n    }catch(e){return '';}\n};\nvar list = parseDomForArray(getResCode(), 'body&&dl');\n//try{\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: D(L, 'h1&&Text'),\n            url: parseDom(L, 'a&&href'),\n            desc: D(L, '.fed-part-esan&&Text') + '｜' + D(L, '.fed-col-xs12&&Text'),\n            content: D(L, '.fed-list-remarks&&Text') + '｜' + D(L, '.fed-col-xs12&&Text') + '\\n' + D(L, '.fed-text-muted&&Text'),\n            img: parseDom(L, 'a&&data-original'),\n        });\r\n    }\n//}catch(e){ }\nsetSearchResult({data: d});","search_url":"http://www.miku2.com/so/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar des_desc = parseDomForHtml(html, '.fed-part-esan--span&&Text');\nvar des_pic = parseDom(html, '.fed-deta-images&&a&&data-original');\nvar tabs = parseDom(html, 'body&&.fed-drop-boxs&&Html').match(/href=[\\s\\S]*?</g);\nvar conts = parseDom(html, '.fed-drop-btms&&Html').match(/class=\\\"fed-part-rows\\\">[\\s\\S]*?<\\/ul>/g);\n\nd.push({\n\ttitle: '共有' + conts.length +  '条线路',\n desc: des_desc,\n\tpic_url: des_pic,\n\turl: getUrl(),\n\tcol_type: 'pic_1'\n});\n\nfor (var i = 0; i < conts.length; i++) {\n\tvar list = conts[i].match(/<a[\\s\\S]*?<\\/a>/g);\n\tif (list != null) {\n\t\td.push({\n\t\t\ttitle: tabs[i].split('>')[1].split('<')[0],\n\t\t\tcol_type: 'text_1'\n\t\t});\n\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\td.push({\n\t\t\t\ttitle: list[j].split('>')[1].split('<')[0],\n\t\t\t\turl: parseDom(list[j],'a&&href')+`@lazyRule=body&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_data={'));var url=decodeURIComponent(player_data.url);if(url.indexOf('.html')!=-1){request('https://m2090.com/?url='+url).match(/\t\"url\":\"(.*?)\"/)[1]}else{url+\"#isVideo=true#\"}`,\n       col_type: list.length >3?'text_3':'text_2'\n\t\t\t});\n\t\t}\n\t}\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视在线","author":"","version":0,"type":"other","url":"https://www.yszxwang.com/search.php?page=fypage&searchtype=5&tid=fyclass&area=fyarea&year=fyyear","col_type":"movie_3","class_name":"全部&电影&电视剧&综艺&动漫","class_url":"&1&2&3&4","area_name":"全部&大陆&香港&台湾&日本&韩国&美国&英国&印度&泰国&法国&德国","area_url":"&大陆&香港&台湾&日本&韩国&美国&英国&印度&泰国&法国&德国","sort_name":"","year_name":"全部&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&更早","sort_url":"","year_url":"&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&more","find_rule":".hy-video-list&&li;a&&title;.videopic&&data-original;.textbg&&Text;a&&href","searchFind":"body&&.hy-video-details;h3&&Text;h3&&a&&href;.textbg&&Text;ul&&Text;a&&style","search_url":"https://www.yszxwang.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"#673AB7","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"","pages":"[]","proxy":"","icon":"#673AB7"},{"last_chapter_rule":"","title":"东京不够热","author":"子丑寅卯","version":3,"type":"other","url":"https://www.tokyonothot.com/fyAll/page/fypage/[firstPage=https://www.tokyonothot.com/fyAll/]","col_type":"movie_3","class_name":"日剧&日影","class_url":"drama&movie","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {}; var d = [];\n\nvar list = parseDomForArray(getResCode(), '.area&&li');\r\nfor (var i in list) {\ntitle = parseDomForHtml(list[i], 'a&&title');\r\n   d.push({\r\n      title: title,\r\n      img: parseDom(list[i], 'img&&src'),\r\n      url: parseDom(list[i],'a&&href')+'#immersiveTheme#'\r\n   });\r\n}\n\r\nres.data = d; setHomeResult(res);","searchFind":"js:\r\nvar res = {}; var d = [];\n\nvar list = parseDomForArray(getResCode(), '.area&&li');\r\nfor (var i in list) {\ntitle = parseDomForHtml(list[i], 'a&&title');\r\n   d.push({\r\n      title: title,\r\n      img: parseDom(list[i], 'img&&src'),\r\n      url: parseDom(list[i],'a&&href')+'#immersiveTheme#'\r\n   });\r\n}\n\r\nres.data = d; setHomeResult(res);","search_url":"https://www.tokyonothot.com/search/**/page/fypage/","titleColor":"#ffff00ff","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html = getResCode();\r\nvar list = parseDom(html,'.section_body&&ul&&Html').match(/<a[\\s\\S]*?】/g);\nd.push({\n        desc:\"0\",\n        col_type:\"x5_webview_single\"\n});\nd.push({\r\n\ttitle: parseDomForHtml(html,'.posttitle&&Text'),\r\n desc: parseDomForHtml(html,'.title_head&&span&&Text'),\r\n\tpic_url: parseDomForHtml(html,'.aligncenter&&src'),\r\n\turl: getUrl(),\r\n\tcol_type: 'movie_1_vertical_pic_blur'\r\n});\r\n\r\nfor (var j = 0; j < list.length; j++) {\nvar jxUrl =parseDomForHtml(list[j],'a&&href');\n  d.push({\r\n       title: parseDomForHtml(list[j],'a&&Text'),\r\n       url: jxUrl,\ncol_type: 'text_2'\r\n  });\n/*\nd.push({\r\n       title:(j+1)+ '密码:'+parseDomForHtml(list[j],'body&&Html').match(/密码：(.*?)】/)[1],\ncol_type: 'text_2' });\n*/\n\n    d.push({\n            title:'点击复制提取码\\n'+parseDomForHtml(list[j],'body&&Html').match(/密码：(.*?)】/)[1],\n\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"复制成功!\\n\"+value)\n                },parseDomForHtml(list[j],'body&&Html').match(/密码：(.*?)】/)[1]),\n          col_type: 'text_2'\n    });\r\n\r\n}\r\nres.data = d;\r\nsetHomeResult(res);\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fen.pimg.jp%2F031%2F294%2F058%2F1%2F31294058.jpg&refer=http%3A%2F%2Fen.pimg.jp&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1636974071&t=051e2c67a0f5b4b1fad41a5a9d736f74"},{"last_chapter_rule":"","title":"霸王龙影库","author":"子丑寅卯","version":6,"type":"other","url":"https://t-rex.tzfile.com/fyAll/page/fypage?action=ajax_getcat_post;post","col_type":"movie_3","class_name":"美剧&韩剧&日剧&英剧&其他剧&电影","class_url":"meiju&hanju&riju&yingju&qitaju&%e7%94%b5%e5%bd%b1","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.posts-wrapper&&.entry-media');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'img&&alt'),       \r\n//desc: parseDomForHtml(list[j], 'a&&Text'),       \r\npic_url: parseDom(list[j], 'img&&data-src'),       \r\nurl: parseDom(list[j],'a&&href') +'#immersiveTheme#'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ffff00ff","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\nvar html=getResCode();\r\nvar list=parseDomForArray(html,'.entry-content&&p:has(a)')\nd.push({\n        desc:\"0\",\n        col_type:\"x5_webview_single\"\n});\n\nd.push({\r\ntitle:parseDomForHtml(html,'h1&&Text'),\ndesc:'==>默认提取码/解压密码TREX',  \tpic_url:parseDomForHtml(html,'.aligncenter&&src'),\ncol_type: 'movie_1_vertical_pic_blur'\r\n});\n\nd.push({\n            title:'‘‘点击复制提取码’’',\n\n            url:$().x5Rule((value)=>{\n                    document.write('<input type=\"text\" id=\"copy\"/>');\n                    var text = document.getElementById('copy');\n                    text.value = value;\n                    text.select();\n                    document.execCommand('Copy');\n                    text.parentNode.removeChild(text);\n                    alert(\"复制成功!\\n\"+value)\n                },'trex'),\n          col_type: 'text_2'\n    });\r\n\r\n\nfor(i in list){\nd.push({       \r\ntitle: parseDomForHtml(list[i],'body&&Text').split(' ')[0],  \nurl: parseDomForHtml(list[i],'a&&href'),       \ncol_type: 'text_center_1'\r\n});\n}\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fwww.huanghelou.cc%2Fzb_users%2Fupload%2F2020%2F06%2F20200601111701_66464.jpg&refer=http%3A%2F%2Fwww.huanghelou.cc&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=jpeg?sec=1636973641&t=4644d89fd3d0bc864386b4e2dafb3e76"},{"last_chapter_rule":"","title":"影视工厂D","author":"道长&爱是用心","version":2,"type":"video","url":"hiker://empty##https://www.ysgc.tv/vodtype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-lg-7;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url=获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.nav-menu',\n        子分类: 'ul&&li[class~=hidden-xs]:not(:matches(首页|资讯|APP下载))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.ysgc.tv/index.php/verify/index.html?');\n    let ret=提交验证码('https://www.ysgc.tv/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n        html=获取源码(MY_URL);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nlet parStr=\".myui-vodlist__media&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,1&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.ysgc.tv/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.myui-content__detail&&.title&&Text;.myui-content__detail&&p.data&&Text;.myui-content__detail&&p.data,2&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p.otherbox&&Text;.myui-content__detail&&p.data,3&&Text',\n    content: '.text-collapse&&.data&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\n\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://www.ysgc.tv/index.php/verify/index.html?';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/85.svg"},{"last_chapter_rule":"js:\nrequire(config.模板);\n最新('.tab-content&&ul&&li,-1&&Text');","title":"90影视.dr","author":"道长&ssl","version":10,"type":"video","url":"https://www.90mov.com/vodtype/2-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist&&li;a&&title;.lazyload&&data-original;div.module-item-text&&Text;a&&href\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-list',\n    子分类: 'body&&li:gt(0):lt(5)',\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".myui-vodlist__media#searchList&&li;a&&title;a&&data-original;.pic_text&&Text;a&&href;p,3&&Text\";\n一级(parStr,true);","search_url":"https://www.90mov.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"line","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.title&&Text;#rating&&Text;p.data,0&&Text',\n img:'.lazyload&&data-original',\n url:'.lazyload&&data-original',\n desc:'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\ncontent:'span.sketch.content&&Text',\n tabs:'.nav-tabs&&li',\n lists:'.tab-content&&#id&&ul&&li',\n tab_id:'a&&href',\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\nvar 模板 = getApi('importUrl')+\"2505\";\nrequire(模板);\n预处理()","pages":"[{\"col_type\":\"text_1\",\"name\":\"Url处理器\",\"path\":\"url-processor\",\"rule\":\"function UrlProcessor() {\\n    this.params = {}\\n    this.regexMap = [\\n        {\\n            reg: /videot\\\\/\\\\d+/,\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+.html/, '-' + this.params.page + '.html')\\n                    .replace(/(videot\\\\/\\\\d+).html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: 'vodtype\\\\\\\\/\\\\\\\\d+',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/-\\\\d+.html/, '-' + this.params.page + '.html')\\n                    .replace(/(vodtype\\\\/\\\\d+).html/, '$1-' + this.params.page + '.html')\\n            }\\n        },\\n        {\\n            reg: '\\\\\\\\/?[\\\\\\\\w\\\\\\\\d]+-.*?-.*?-.*?-.*?-.*?-.*?-.*?-\\\\\\\\d*---\\\\\\\\d*.html',\\n            exec: () => {\\n                return this.params.url\\n                    .replace(/(---.html)/, this.params.page + '$1')\\n                    .replace(/(---\\\\d+.html)/, this.params.page + '$1'); // 拼接页码\\n            }\\n        },\\n    ]\\n}\\n\\nObject.assign(UrlProcessor.prototype, {\\n    constructor: UrlProcessor,\\n    checkParams() {\\n        if (!this.params.url) {\\n            throw new Error(\\\"请先调用 .baseUrl(url) 传入链接进行初始化!\\\")\\n        }\\n        if (!this.params.page) {\\n            throw new Error(\\\"请先调用 .page(page) 传入页码进行初始化!\\\")\\n        }\\n    },\\n    baseUrl(url){\\n        this.params.url = url\\n        return this\\n    },\\n    page(page){\\n        this.params.page = page\\n        return this\\n    },\\n    addExtra(regExp) {\\n        if (regExp.constructor === Array) {\\n            this.regexMap = this.regexMap.concat(regExp)\\n        } else {\\n            this.regexMap.push(regExp)\\n        }\\n        return this;\\n    },\\n    exec() {\\n        this.checkParams()\\n        let true_url = ''\\n        for (let i = 0; i < this.regexMap.length; i++) {\\n            let regObj = this.regexMap[i];\\n            let urlExp = regObj.reg;\\n            if (typeof urlExp === 'string') {\\n                urlExp = new RegExp(urlExp)\\n            }\\n            if (urlExp.test(this.params.url)) {\\n                true_url = regObj.exec();\\n                break;\\n            }\\n        }\\n        if (true_url) {\\n            return true_url;\\n        } else {\\n            return this.params.url\\n        }\\n    },\\n    获取处理结果() {\\n        return this.exec()\\n    },\\n    链接(url) {\\n        return this.baseUrl(url)\\n    },\\n    页码(page) {\\n        return this.page(page)\\n    },\\n    插入新处理规则(regExp) {\\n        return this.addExtra(regExp)\\n    }\\n})\\n$.exports=new UrlProcessor()\\n$.exports\\n\"}]","proxy":"","icon":"https://www.90mov.com/template/mytheme/statics/image/20210416/474aa0850.png"},{"last_chapter_rule":"","title":"无名影视.dr","author":"道长&ssl","version":0,"type":"video","url":"hiker://empty##http://www.5yingshi.com/type/2-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.stui-vodlist__box;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.type',\n        子分类: 'ul&&li:gt(0):lt(6)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: '#screenbox&&.clearfix',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.stui-vodlist__box;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.text-muted&&Text\";\n一级(parStr,true);","search_url":"http://www.5yingshi.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://www.5yingshi.com/template/jianbai/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"快云影音D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://kuaiyunyy.com/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|福利|纪录片|歌曲MV))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://movie.fush8.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.sort-list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&.scroll-content&&a'))\n}\n\nvar title = parseDomForHtml(html, '.video-info-header&&Text');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items,0&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/19.svg"},{"last_chapter_rule":"","title":"旋风影视","author":"爱是用心","version":0,"type":"video","url":"https://miao101.com/tag/fyAll/fypage","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"电视剧&电影&动漫&综艺","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&动漫片&纪录片","area_url":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&犯罪片&动漫片&纪录片","sort_name":"","year_name":"国产剧&香港剧&韩国剧&欧美剧&台湾剧&日本剧&海外剧","sort_url":"","year_url":"国产剧&香港剧&韩国剧&欧美剧&台湾剧&日本剧&海外剧","find_rule":"body&&.col-md-3;.mt-1&&a&&Text;.cover&&img&&src;.badge-pill&&Text;a&&href","searchFind":"body&&.col-md-3;.mt-1&&Text;a&&href;.badge-warning&&Text;.time&&Text;.cover&&img&&src","search_url":"https://miao101.com/search?q=**=fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'').replace(/m3u8,.*/,'m3u8').replace(/\\/.*html,/,'')\n        }\n    }\n});\n\nvar arts = parseDomForArray(html, '.nav-item&&#home-tab');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.tab-pane#home');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '');\n\nvar 简介 = parseDomForHtml(html, '').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/47.svg"},{"last_chapter_rule":"","title":"传递影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.chuandi.cc/vodtype/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-lg-6;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.nav-list',\n        子分类: 'ul&&li:gt(0):lt(6)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist__media&&.clearfix;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,3&&Text\";\n一级(parStr,true);","search_url":"https://www.chuandi.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.myui-content__detail&&p.data,2&&Text;.myui-content__detail&&p.data,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p.data,4&&Text;.myui-content__detail&&p.data&&Text',\n    content: '.myui-content__detail&&p.data,3&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: 'body&&.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/80.svg"},{"last_chapter_rule":"","title":"优剧网D","author":"道长&爱是用心","version":1,"type":"video","url":"hiker://empty##https://www.ujuba.com/v/show/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.myui-vodlist__box;.title&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\n//log(true_url);\nlet cates=打造动态分类([{\n  \n        一级分类: '.nav-list',\n        子分类: 'ul&&li:gt(0):lt(5)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(.*?)\\.html/, 'show/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist__media&&li;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,1&&Text\";\n一级(parStr,true);","search_url":"https://www.ujuba.com/v/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.myui-content__detail&&p.data,2&&Text;.myui-content__detail&&p.data,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p.data,0&&Text;.myui-content__detail&&p.data,3&&Text',\n    content: '.sketch&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: 'body&&.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/74.svg"},{"last_chapter_rule":"","title":"蚂蚁影视","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.91mayi.com/vodtype/2-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-md-6;h4&&Text;.lazyload&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.stui-header__menu',\n        子分类: 'ul&&li:gt(0):lt(5)',\n分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".stui-vodlist__media&&li;h3&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,2&&Text\";\n一级(parStr,true);","search_url":"https://www.91mayi.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.stui-content__detail&&p,1&&Text;.stui-content__detail&&p,0&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.stui-content__detail&&p,2&&Text;.pic-text&&Text',\n    content: '.detail-sketch&&Text',\n    tabs: '.play_source&&a',\n    lists: '.stui-content__playlist,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/90.svg"},{"last_chapter_rule":"","title":"麻花影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##http://www.mahuayingshi.me/vod_show/1--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".bd-video-list&&li;.title&&Text;.pic&&img&&src;.update&&Text;a&&href\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.bd-filter-list',\n        子分类: 'body&&a',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\"body&&.sp-cont;.title&&Text;.poster&&img&&src;.update-info&&Text;a&&href;.brief&&Text\";\n一级(parStr,true);","search_url":"http://www.mahuayingshi.me/vod_search/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.intro-cell-1&&Text;.d-intro-actors&&Text',\n    img: '.a-poster&&img&&src',\n    url: '.a-poster&&img&&src',\n    desc: '.intro-cell-5&&Text;.intro-cell-6&&Text',\n    content: '.p-intro-bref&&Text',\n    tabs: 'body&&.playname&&li',\n    lists: 'body&&.ul-series-body,#id&&a',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/34.svg"},{"last_chapter_rule":"","title":"红玫瑰视频D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://v.redmg.cn/vodshow/2--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE; \ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.nav-list',\n        子分类: 'body&&li:gt(0):lt(5)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.myui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.myui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h4&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        content: parseDomForHtml(list[j], '.detail&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original'),\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://v.redmg.cn/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/42.svg"},{"last_chapter_rule":"","title":"麦豆TV&D","author":"爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.mdoutv.cc/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.search-hot',\n        子分类: 'body&&a',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.myui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.myui-vodlist__thumb&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.myui-panel_bd&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], '.myui-vodlist__thumb&&data-original'),\n        content: parseDomForHtml(list[j], '.hidden-xs&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://fantuan.tv/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'body&&Text').replace(' ',''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n//标题\nvar title = parseDomForHtml(html, '.title&&Text');\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&p,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&p,3&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&p,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&p,1&&Text');\n\nvar 图片 = parseDom(html, '.myui-vodlist__thumb&&img&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.content&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',})","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/52.svg"},{"last_chapter_rule":"","title":"八一影院D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.bjoku.com/ystop/aqdy/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'ul&&li:gt(0):lt(6)',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.col-md-7');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h2&&Text'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h2&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.bjoku.com/sosou**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = unescape(base64Decode(player.url));\n    var from = player.from;\n    log('jsurl=' + jsurl + '\\n' + 'parse=' + from);\n    if (jsurl.match(/youku|mgtv|ixigua|qq\\.com|qiyi|migu|bili|sohu|pptv|le/)) {\n        require('https://gitea.com/AI957/Hiker/raw/m/v/Route.js');\n        return aytmParse(jsurl);\n    } else if (from.match(/m3u8/)) {\n        return jsurl;\n    } else if(jsurl.match(/renrenmi/)){\n        var urll = request(\"https://jiexi.moeamv.com/analysis.php?v=\"+jsurl).match(/urls = \"(.*?)\"/)[1];\n        writeFile('hiker://files/cache/video.m3u8', fetch(urll, {}));\n        return 'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+urll;\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n});\n\neval(JSON.parse(request('hiker://page/h3?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',})","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/10.svg"},{"last_chapter_rule":"","title":"免费电影网D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.dyuzs.com/vodtype/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'body&&a:not(:matches(首页|资讯|专题))'})\n    .添加分类定位({\n        一级分类: 'body&&.item#screenbox&&ul',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.stui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h4&&Text'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.col-md-6');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        content: parseDomForHtml(list[j], 'h4&&Text'),\n        img: parseDom(list[j], '.lazyload&&data-original'),\n        url: parseDom(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://www.dyuzs.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n\n//嗅探\nvar lazy1 = $('').lazyRule(() => {\n\n    //x5rule强力嗅探\nfunction x5rule(jiexurl, srcurl) {\n    showLoading(\"网页访问检索中，请稍候...\");\n    var video = 'webRule://' + jiexurl + '@' + $.toString((srcurl) => {\n        //fba.log(fba.getUrls());\n        var urls = _getUrls();\n        if (window.count == null || window.count == undefined) {\n            window.count = 0\n        }\n        if (window.count >= 23) {\n            return srcurl\n        }\n        window.count = window.count + 1;\n        if (window.count > 1 && window.count <= 3 && window.count != null && window.count != undefined) {\n            if (document.querySelector('body').innerText.search(/触发了防盗链|未授权|接口防盗|请到主站观看/) != -1) {\n                if (!srcurl) {\n                \tfba.log('尝试跳防盗验证一');\n                    location.href = location.href;\n                } else {\n                \tfba.log('尝试跳防盗验证二');\n                    location.href = srcurl\n                }\n            };\n        } else if(window.count > 3 && window.count != null && window.count != undefined){\n            if (urls.length < 1) {\n                fba.hideLoading();\n                return 'toast://检索失败，可能链接无法访问。';\n            } else if (urls.length == 1) {\n                fba.log('尝试直链与JSON解析');\n                if (urls[0].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[0].match(/\\.html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    //fy_bridge_app.log(urls[0])\n                    if (urls[0].indexOf('bilivideo') != -1) {\n                        return urls[0] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                    } else if (urls[0].indexOf('titan.mgtv.com') != -1) {\n                        return urls[0] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                    } else {\n                        return urls[0]\n                    };\n                } else if (location.href.match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !location.href.match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                    return location.href;\n                } else {\n                    var html = fba.fetch(location.href, {});\n                    if (!/\\<meta/.test(html)&&!/\\<html/.test(html)) {\n                    return JSON.parse(html).url;\n                    }else{\n                    return location.href}\n                };\n            } else {\n                fba.log('日志检索第' + window.count + '次');\n                for (var i in urls) {\n                    if (urls[i].match(/dycdn\\-tos\\.pstatp|\\.m3u8|\\.mp4|\\.flv|netease\\.com|video_mp4|type\\=m3u8|pt\\=m3u8/) && !urls[i].match(/html|m3u8\\.tv|\\&next|ac\\=dm|\\=http|https\\:\\/\\/[\\d]\\.m3u8|\\?url\\=\\/m3u8/)) {\n                        //fy_bridge_app.log(urls[i])\n                        if (urls[i].indexOf('bilivideo') != -1) {\n                            return urls[i] + ';{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('titan.mgtv.com') != -1) {\n                            return urls[i] + '#isVideo=true#' + ';{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}';\n                        } else if (urls[i].indexOf('juhaokan') != -1) {\n                            return urls[i] + ';{Referer@https://www.juhaokan.cc/}';\n                        } else if (urls[i].indexOf('ojbk') != -1) {\n                            return urls[i] + ';{Referer@https://v.ojbkjx.com/}';\n                        } else if (urls[i].indexOf('wkfile') != -1) {\n                            return urls[i] + ';{Referer@https://fantuan.wkfile.com/}';\n                        } else {\n                            return urls[i] + '#isVideo=true#'\n                        }\n                    }\n                } //end for i\n            }\n        }\n    }, srcurl);\n    return video\n}\n//结束x5rule强力嗅探\n    return x5rule(input, input);\n});\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, 'body&&.stui-vodlist__head:has(.clearfix)');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text').replace(' ',''))\n}\n\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar title = parseDomForHtml(html, 'h1&&title');\n\nvar 导演 = parseDomForHtml(html, 'p,4&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, 'p,5&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, 'p,0&&Text');\n\nvar 状态 = parseDomForHtml(html, 'p,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.detail-sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['嗅探','通免','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','嗅探');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','嗅探')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','嗅探')==='嗅探'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','嗅探')==='通免'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/2.svg"},{"last_chapter_rule":"","title":"三米影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##http://d1ys.cc/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态) \n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'ul&&li:not(:matches(首页|下载|求片))',\n    })\n    .添加分类定位({\n        一级分类: 'body&&.stui-screen__list',\n        子分类: 'ul&&li:gt(0)',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.col-md-5');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'),\n        desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n        img: parseDom(list[j], 'a&&data-original'),\n        content: parseDomForHtml(list[j], '.detail--h3&&Text'),\n        url: parseDom(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"http://d1ys.cc/index.php/vod/search/page/fypage/wd/**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url);if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \n\n\nvar arts = parseDomForArray(html, '.stui-pannel_hd&&li');\n\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\n}\n\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\n\nvar title = parseDomForHtml(html, '.data&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text').replace(/剧情介绍：/,'').replace('简介：','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '云盘汇影',\n    url: 'hiker://search?s=' + title + '&rule=云盘汇影',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/3.svg"},{"last_chapter_rule":"","title":"无双影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://wsdy.top/vodshow/1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.fed-casc-list&&dl'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/page\\/(.*?)\\./)[1]\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\n\n\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)  \n\n    .开始打造分类();\nvar list = pdfa(html, 'body&&.fed-list-item');\nfor (var j in list) {\n    d.push({\n        \n        title: pdfh(list[j], '.fed-list-title&&Text'),\n       \n        desc: pdfh(list[j], '.fed-list-remarks&&Text'),\n       \n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n       \n        url: pd(list[j], 'a&&href').replace('play', 'detail') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&dl');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'h1&&Text'),\n       desc: parseDomForHtml(list[j], '.fed-list-remarks&&Textt'),\n\t    content: parseDomForHtml(list[j], '.fed-part-esan--span&&Text'),\n       img: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j], 'a&&href')\n  });\n}\nsetResult(d)","search_url":"https://wsdy.top/vodsearch/so**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');\r\nlet parse={\r\n title:'h1&&Text',   img:'.fed-deta-images&&a&&data-original',\r\n url:'.fed-deta-images&&a&&data-original',\r\n desc:'.fed-part-esan&&Text',\r\n content:'.fed-part-esan&&Text',\r\n tabs:'.fed-matp-v,0&&a',\r\n lists:'.fed-matp-v,1&&ul,1&&li',\r\n tab_id:'',\r\n 样式:'滚动'\r\n};\nlazy=通免();\r\nvar 动态最新章节=true;\r\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/38.svg"},{"last_chapter_rule":"","title":"星空影视D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://xkys.tv/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.library-list'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_URL.match(/--------(.*?)---\\.html/)[1] //获取页码\n\ntrue_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能()\n    .折叠(当前折叠状态) \n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 大类定位,\n        子分类: 小类定位,\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-search-item');\nlog('搜索结果')\nlog(list)\nif (list.length == 0) throw \"搜索为空，可能匹配错误\"\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'h3&&Text'),\n        desc: parseDomForHtml(list[j], '.video-serial&&Text'),\n        content: parseDomForHtml(list[j], '.video-info-aux&&Text'),\n        img: parseDom(list[j], 'img&&data-src'),\n        url: parseDom(list[j], '.video-serial&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://xkys.tv/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar lazy = $('').lazyRule(() => {\n    try {\n        var html = request(input, {});\n        eval(parseDomForHtml(html, \".player-box-main&&script&&Html\").replace(/player_.*?={/, 'player_data={'));\n        var fro = player_data.from;\n        var urll = player_data.url;\n        if (player_data.encrypt == '1') {\n            var urll = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            var urll = unescape(base64Decode(player_data.url));\n        };\n        var jvs = parseDom(html, \".player-box-main&&script,1&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        } else {\n            return urll\n        };\n        //log(jiek);\n        var jhtml = request(jiek + urll);\n        eval(getCryptoJS());\n        var le_token = jhtml.match(/_token = \\\"(.*?)\\\"/)[1];\n        var _token_key = CryptoJS.enc.Utf8.parse(\"A42EAC0C2B408472\");\n        var _token_iv = CryptoJS.enc.Utf8.parse(le_token);\n        var VideoInfo = jhtml.match(/getVideoInfo\\(\\\"(.*?)\\\"/)[1];\n\n        function v_decrypt(data, token_key, token_iv) {\n            return CryptoJS.AES.decrypt(data, token_key, {\n                iv: token_iv\n            }).toString(CryptoJS.enc.Utf8);\n        };\n        return v_decrypt(VideoInfo, _token_key, _token_iv);\n    } catch (e) {\n        return input\n    }\n});\nvar tabs = parseDomForArray(html, '.module-tab-content&&.module-tab-item');\nvar conts = parseDomForArray(html, 'body&&.module-player-list:has(.module-blocklist)');\nvar listlen = parseDomForArray(conts[0], 'body&&.scroll-content&&a');\n\nvar thumb = parseDom(html, \".module-item-pic&&img&&data-src\");\nd.push({\n    title: '剧情简介：' + '    共' + conts.length + '条线路',\n    desc: parseDomForHtml(html, \".video-info-content&&Text\"),\n    pic_url: thumb,\n    url: thumb,\n    col_type: 'movie_1_vertical_pic'\n});\n\nfunction dpsh(list) {\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], \"a&&Text\"),\n            url: parseDom(list[j], \"a&&href\") + lazy,\n            extra: {\n                id: parseDom(list[j], \"a&&href\")\n            },\n            col_type: 'text_3'\n        });\n    }\n};\n\nif (tabs.length > 1 && listlen.length > 12) {\n    var title = 'xkys' + parseDomForHtml(html, '.video-info-header&&h1&&Text');\n    //处理线路显示\n    for (var i in conts) {\n        d.push({\n            title: (getMyVar(title, '0') == i ? '👇🏻' : '') + parseDomForHtml(tabs[i], 'body&&Text'),\n            url: `hiker://empty@lazyRule=.js:putMyVar('` + title + \"', '\" + i + `');refreshPage();'toast://切换成功！'`,\n            col_type: 'flex_button'\n        });\n    };\n    //分割线\n    d.push({\n        col_type: 'line_blank'\n    });\n\n    //开始处理选集显示\n    var list = parseDomForArray(conts[getMyVar(title, '0')], 'body&&.scroll-content&&a');\n    dpsh(list);\n} else {\n    for (var i in conts) {\n        var list = parseDomForArray(conts[i], 'body&&.scroll-content&&a');\n        if (list != null) {\n            d.push({\n                title: parseDomForHtml(tabs[i], \"body&&Text\"),\n                col_type: 'text_1'\n            });\n            dpsh(list);\n        }\n    }\n}\n\n\n//二级模板by香雅情\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/28.svg"},{"last_chapter_rule":"","title":"LIBVIO&D","author":"Reborn&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.libvio.com/type/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar('header.url', MY_URL)\n\nconst page = MY_PAGE\n\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\n\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n}) \n\n\nconst 当前折叠状态 = getMyVar('header.fold', '1')\nlet htmlCategories = requireCache(config.categoryLib)\nhtmlCategories.界面(d)\n\n    .开启内置折叠功能() \n    .折叠(当前折叠状态)\n\n    .分类链接(true_url)\n    .源码(html)\n    .页码(page)\n    .添加分类定位({\n        一级分类: 'body&&.stui-header__menu',\n        子分类: 'body&&a:not(:matches(首页|资讯|专题))'})\n    .添加分类定位({\n        一级分类: 'body&&.item#screenbox&&ul',\n        子分类: 'body&&a',\n    })\n    .开始打造分类();\n\nvar list = pdfa(html, 'body&&.stui-vodlist__box');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h4&&Text'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.libvio.com/index.php/verify/index.html?');\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.libvio.com/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        //log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\n//log(html);\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original;a&&Text;a&&href;li&&Text\";\nvar 一级处理={\n    沉浸:false\n}\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.libvio.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1.title&&Text;p.data&&Text;p.data,4&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: 'p.data,1&&Text;p.data,2&&Text;p.data,3&&Text',\n    content: '.detail-content&&Text',\n    tabs: 'body&&h3:not(:matches(喜欢))',\n    lists: 'body&&.stui-content__playlist,#id&&li',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule((解析) => {\n    eval(pdfh(request(input, {}), 'body&&.embed-responsive&&script&&Html'));\n    var fr = player_aaaa.from;\n    var true_url = player_aaaa.url.replace(/\\\\\\//g, '/');\n   eval(getCryptoJS());\n        function De(word) {\n            var a = CryptoJS.enc.Utf8.parse(md5('rXjWvXl6'))\n            var t = CryptoJS.enc.Utf8.parse('NXbHoWJbpsEOin8b')\n            return CryptoJS.AES.decrypt(word, a, {\n                iv: t,\n                mode: CryptoJS.mode.CBC,\n                padding: CryptoJS.pad.Pkcs7\n            }).toString(CryptoJS.enc.Utf8)\n        };\n    if (/\\.m3u8|\\.mp4/.test(true_url)) {\n        return 解析.是否视频(true_url)\n    } else if (fr == 'duoduozy') {\n        var url = De(pdfh(request('https://bo.movie06.com/ddplay/ddplay.php?url=' + true_url, {\n            headers: {\n                'Referer': 'https://www.libvio.com'\n            }\n        }), 'script,-4&&Html').split(\"'\")[1]);\n        log(url);\n        return 解析.是否视频(url)\n    } else {\n        return 解析.纯通免(input)\n    }\n}, 解析);\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://www.libvio.com/index.php/verify/index.html?';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');\ninitConfig({\n    categoryLib: 'http://hiker.nokia.press/hikerule/rulelist.json?id=2705',\n    categoryLocalLib: 'hiker://files/rules/js/categories-header.js',\n});","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/43.svg"},{"last_chapter_rule":"","title":"如梦影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.rumengys.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.col-lg-6;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.nav-list',\n        子分类: 'ul&&li:gt(0):lt(6)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist__media&&.clearfix;h4&&Text;.lazyload&&data-original;.pic-text&&Text;a&&href;.detail&&p,3&&Text\";\n一级(parStr,true);","search_url":"https://www.rumengys.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.myui-content__detail&&p.data,2&&Text;.myui-content__detail&&p.data,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p.data,4&&Text;.myui-content__detail&&p.data&&Text',\n    content: '.myui-content__detail&&p.data,3&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/83.svg"},{"last_chapter_rule":"","title":"暖光采集","author":"爱是用心","version":0,"type":"video","url":"https://app.bl210.com/api.php/v1.vod?type=fyclass&page=fypage&limit=20&area=fyarea&lass=&year=fyyear&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"全部&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","area_url":"&大陆&美国&香港&韩国&英国&台湾&日本&法国&意大利&德国&西班牙&其他","sort_name":"","year_name":"全部&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","sort_url":"","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010","find_rule":"js:var d=[];\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://app.bl210.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).data.list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].vod_name,\ndesc:list[i].vod_remarks,\npic_url:list[i].vod_pic+\"@Referer=\",\nurl:'https://app.bl210.com/api.php/v1.vod/detail?vod_id='+list[i].vod_id+\"#immersiveTheme#\",\ncol_type:'movie_3'\n});\n}\n\nsetResult(d);","search_url":"https://app.bl210.com/api.php/v1.vod?page=fypage&limit=10&wd=**&token=;get;utf-8;{User-Agent@Dart/2.15(dart:io)}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = JSON.parse(getResCode());\n\nvar lazy = `@lazyRule=.js:var url = input;if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(url)}else if(url.match(/renrenmi/)){request('https://kuba.renrenmi.cc:2266/api/?key=ZTSkid2ROth73IfIIR&url='+url).match(/url\": \"(.*?)\"/)[1]+'#isVideo=true#'}else if(url.match(/LT/)){request('http://121.62.60.222:1314/lt.php?url='+url).match(/\"url\":\"(.*?)\"/)[1]+\"#isVideo=true#\"}else if(url.match(/xfy/)){request('https://vip.xfyun.one/home/api?type=ys&uid=2581923&key=aefiklotwzCEFHJO48&url='+url).match(/\"url\":\"(.*?)\"/)[1]+'#isVideo=true#'}else{url}`;\n\n//标题图片简介\n      d.push({\n            title:'地区：'+html.data.vod_area+'    \\n年代：'+html.data.vod_year+'\\n状态：'+html.data.vod_remarks,\n          pic_url:html.data.vod_pic, \ndesc:html.data.vod_blurb,\nurl:html.data.vod_pic,\n     col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n        });\n\n\n//线路与选集代码开始\nvar tabs = html.data.vod_play_list;\nvar title = 'www'+html.data.vod_play_list;\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n\n// 调用新版断插设置与编辑 \nrequire('https://gitea.com/AI957/Hiker/raw/m/v/Route.js'); \nd.push({ \n    title: '断插设置', \n    url: setupPages(\"设置\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/213.png\", \n    col_type: 'icon_2_round' \n}) \nd.push({ \n    title: '断插编辑', \n    url: setupPages(\"编辑\"), \n    pic_url: \"https://lanmeiguojiang.com/tubiao/more/275.png\", \n    col_type: 'icon_2_round' \n}); \n\n//正反序\n     d.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'flex_button'\n})\n\n//处理线路显示\nfor (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + title + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(title, '0') == i ? '““'+ '▶️' +tabs[i].player_info.from+ tabs[i].player_info.show + '””': tabs[i].player_info.from+tabs[i].player_info.show ,\n                url: url,\n                col_type: 'scroll_button'\n            })\n        }\n\n\n\n//分割线\nd.push({\n    col_type: 'line_blank'\n})\n    d.push({\n            title: '““””<span style=\"color:#003472\">'+'选集↑↓</span>',\nurl: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\ncol_type:'text_center_1',extra: {lineVisible: false}\n})\n\n\n        var list = tabs[getVar(title, '0')].url.split('#');\n      if (getVar('shsort') == '1'){\n      for (var j = list.length - 1; j >= 0; j--) {\n      \n      if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n      if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n\n      d.push({\n         title: jm,           \n         url: dz + lazy,\n            col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n} else {\n    for (var j = 0; j < list.length; j++) {\n\n\n//去除集数字样        \n        if(list[j].search(/\\$/)>=0){jm =list[j].split('$')[0].replace(/第|集|话|期/g,'');} else {jm =list[j].match(/(.*?)http/)[1].replace(/第|集|话|期/g,'');}\n\n        if(list[j].search(/\\$/)>=0){dz =list[j].split('$')[1];} else {dz =list[j].match(/http.*/);}\n        \n        d.push({\n         title: jm,           \n         url: dz + lazy,\n         col_type: jm.length > 4 ? 'text_2' : 'text_4'\n    });\n  }\n}\n\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/70.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"星格影院.dr","author":"道长&ssl","version":1,"type":"video","url":"hiker://empty##http://xg.d0336.xyz/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    //log(true_url);\n    let cates = 打造动态分类([{\n       一级分类:'body&&.library-box',\n       子分类:'body&&a',\n    }]);\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n混合(ui,\"voddetail\",\"label/app\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##http://xg.d0336.xyz/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://xg.d0336.xyz/mxstatic/image/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"京广航.dr","author":"道长&ssl","version":1,"type":"video","url":"https://www.jingguanghang.com/vodtypehtml/1/index_fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n    一级分类:'body&&.type-slide',\n    子分类:'body&&a:not(:matches(首页))',\n    }]);\n    设置(cates,true);\n    自动一级(null,cates,html);\n}\n混合(ui,\"/voddetail/\",\"\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://css.jingguanghang123.com/statics/img/logo.png"},{"last_chapter_rule":"","title":"极速影视.dr","author":"道长&ssl","version":1,"type":"video","url":"hiker://empty##https://v.ir12.cn/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.hl-list-item;.hl-item-title&&Text;.hl-lazy&&data-original;.hl-pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: 'body&&.hl-navswiper',\n        子分类: 'ul&&li:has(a[href]):not(:matches(首页|资讯|最新|排行))',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n}]);\n设置(cates,true);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.huohuo99.com/index.php/verify/index.html?');\n    let ret=提交验证码('https://www.huohuo99.com/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n        html=获取源码(MY_URL);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nlet parStr=\"body&&.hl-item-div;.hl-item-title&&Text;.hl-lazy&&data-original;.hl-pic-text&&Text;a&&href;.hl-item-sub,2&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://v.ir12.cn/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h2&&Text;.hl-col-xs-12,4&&Text;.hl-col-xs-12,3&&Text',\n    img: '.hl-lazy&&data-original',\n    url: '.hl-lazy&&data-original',\n    desc: '.hl-col-xs-12,11&&Text;.hl-col-xs-12,5&&Text',\n    content: '.hl-col-xs-12,12&&Text',\n    tabs: 'body&&.hl-tabs-btn',\n    lists: '.hl-plays-list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var 验证码='https://www.huohuo99.com/index.php/verify/index.html?';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://v.ir12.cn/upload/site/20220508-1/456b939ef186db55676d647df62daecc.png"},{"last_chapter_rule":"","title":"回响影视.D🐺","author":"家娃","version":20220921,"type":"video","url":"hiker://empty##https://hxys.tv/vodshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-swiper'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/list\\/(.*?)\\.html/,'vodshow/$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.list-a&&ul&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.list-remarks&&Text'),\n        pic_url: pd(list[j], '.eclazy&&data-original')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = JSON.parse(getResCode()).list;\n\nfor (var i = 0; i < list.length; i++) {\n    d.push({\n        title: list[i].name,\n        img: list[i].pic + '@Referer=',\n        url: 'https://hxys.tv/video/' + list[i].id + '.html#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"https://hxys.tv/index.php/ajax/suggest?mid=fypage&wd=**&limit=100&timestamp=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n //log(html)\n\nvar lazy = $('').lazyRule(() => {\n    try {\n        showLoading(\"正在进行检索，请稍候...\");\n        var video = 'x5Rule://' + input + '@' + $.toString(() => {\n            //fba.log(fba.getUrls())\n            var urls = _getUrls()\n            var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css|\\.jpg|\\.jpeg|\\.png|\\.gif/;\n            var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n            for (var i in urls) {\n                if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                    //fy_bridge_app.log(urls[i])\n                    if (/mgtv|sohu/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                    } else if (/bili/.test(urls[i])) {\n                        return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                    } else if (/ixigua/.test(urls[i])) {\n                        return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                    } else {\n                        return urls[i]\n                    }\n                }\n            }\n        });\n        return video;\n    } catch (e) {\n        setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&#tag&&.swiper-slide');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace('', ''))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&#tagContent&&ul');\n //log(conts)\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.lightSpeedIn&&.item:matches(导演)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.lightSpeedIn&&.item:matches(演员|主演)&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.lightSpeedIn&&.item:matches(更新|类型)&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.lightSpeedIn&&.item:matches(状态|地区)&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.s-cover-img&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.desc_txt&&Text').replace(/展开/g, ' ').replace(/收起/g, ' ').replace(/详情：/g, ' ').replace(//g, '').replace(//g, '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2',\n                    extra: {\n                        blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n                        jsLoadingInject: true\n                    }\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2',\n                    extra: {\n                        blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n                        jsLoadingInject: true\n                    }\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"http://dd-static.jd.com/ddimg/jfs/t1/188704/2/24658/2663/62bc015cEf8c59137/8adaf97769497571.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item')[0];\n//选集列表的定位\nvar list=parseDomForArray(conts, 'body&&a');\nvar title=parseDomForHtml(list[list.length-1],'a&&Text');\nsetResult(\"更新至: \"+title);","title":"剧荒TV_晓","author":"晓","version":0,"type":"video","url":"https://juhuang.tv/type/fyAll_type_fypage.html[firstPage=https://juhuang.tv/type/fyAll_type.html]","col_type":"movie_3","class_name":"剧集&电影&综艺&动漫&纪录片","class_url":"2&1&3&4&21","area_name":"华语&日韩&欧美&韩剧&日剧&港剧&美剧","area_url":"7&6&20&13&15&14&16","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href') + \"#noRecordHistory#\"\n  });\r\n}\r\nsetResult(d);","searchFind":"js: var json = {};\neval('json=' + getResCode());\nvar res = {};\nvar d = [];\n\nfor (var i = 0; i < json.list.length; i++) {\n    var r = {};\n    var j = json.list[i];\n    r.title = j.vod_name;\n    r.img = j.vod_pic;\n    r.desc = j.vod_area + j.vod_year;\n    r.url = 'https://juhuang.tv/play/'+j.vod_id+'_play_1_1.html' + \"#noRecordHistory#\";\n    r.content = j.vod_blurb;\n    if (r.title !== null && r.title !== undefined && r.title !== '') d.push(r);\n}\n    d.push({\n    col_type: 'movie_3'\n})\nres.data = d;\nsetSearchResult(res);","search_url":"https://so.juhuang.tv/soapi.php?wd=**&page=fypage&count=30;get;utf-8;{User-Agent@Dart/2.13(dart:io)}","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:eval(JSON.parse(fetch('hiker://page/erji', {})).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"erji\",\"path\":\"erji\",\"rule\":\"var d = []\\nvar html = getResCode()\\nd.push({\\n    title: pdfh(html, '.video-info-aux&&Text'),\\n    desc: pdfh(html, '.sqjj_a&&Text'),\\n    col_type: 'pic_1_card'\\n});\\nvar lazy = `@lazyRule=.js:var url = decodeURIComponent(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));var url = decodeURIComponent(base64Decode(url));var url = request('https://web-webapi-tsjqsvyzyx.cn-shenzhen.fcapp.run/?url='+url).match(/\\\"play_url\\\": \\\"(.*?)\\\"/)[1];if(url.match(/daodm|szg|gzc/)){url}else{url}`\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nvar conts = parseDomForArray(html, 'body&&.sort-item');\\nfor (var i in conts) {\\n    var list = parseDomForArray(conts[i], 'body&&a');\\n\\n    for (var j in list) {\\n        d.push({\\n            title: parseDomForHtml(list[j], 'a&&Text'),\\n            url: parseDom(list[j], 'a&&href') + lazy,\\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\\n        });\\n    }\\n}\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'line_blank'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nvar listxc = parseDomForArray(getResCode(), 'body&&.module-item');\\nfor (var i in listxc) {\\n    try {\\n        d.push({\\n            title: parseDomForHtml(listxc[i], 'a&&title'),\\n            desc: parseDomForHtml(listxc[i], '.module-item-text&&Text'),\\n            pic_url: parseDom(listxc[i], '.lazy&&data-src') + '@Referer=',\\n            url: $(parseDom(listxc[i], 'a&&href') + \\\"#noRecordHistory#\\\").rule(() => {\\n                eval(JSON.parse(fetch('hiker://page/erji', {})).rule)\\n            }),\\n            col_type: 'movie_3'\\n        });\\n    } catch (e) {}\\n}\\nsetResult(d);\"}]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2022/01/10/6/110_eeba526b8c9dceac92e459c70bf33175_con_130x130.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"Nike_晓","author":"晓","version":0,"type":"video","url":"https://www.ajeee.com/show/fyclass/fyarea/fysort/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧&少儿&纪录片","class_url":"Tv&Movie&Variety&Cartoon&6&7&8&9&10&11&12&13&14&15&16&20&21","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"热门&时间&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"by/hits&by/time&by/score&class/纪录&喜剧&class/古装&class/动作&class/爱情&class/科幻&class/动画&class/悬疑&class/惊悚&class/恐怖&class/灾难&class/历史&class/%E4%BC%A6%E7%90%86&class/传记","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004","find_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&.module-item'\nvar 标题 = '.module-poster-item-title&&Text'\nvar 描述 = '.module-item-note&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&.module-card-item'\nvar 标题 = '.module-card-item-title&&Text'\nvar 描述 = '.module-item-note&&Text'\nvar 类型 = '.module-info-item-content&&Text'\nvar 简介 = '.module-card-item&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://www.ajeee.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-item:not(:matches(榜))';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\nvar 类型 = '.module-info-item,2&&Text';\nvar 演员 = '.module-info-item,3&&Text';\nvar 更新 = '.module-info-item,4&&Text';\nvar 导演 = '.module-info-item,5&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 图片链接 =setUrl;\nvar 简介 = '.module-info-introduction-content&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"http://www.ajeee.com/mxtheme/images/favicon.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"9优_晓","author":"晓","version":0,"type":"video","url":"https://www.9udy.com/index.php/vod/show/fyarea/fysort/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&国产剧&港台剧&日韩剧&欧美剧&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","class_url":"2&1&3&4&13&14&15&16&6&7&8&9&10&11&12","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/内地&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"by/time&by/hits&by/score&class/纪录&喜剧&class/古装&class/动作&class/爱情&class/科幻&class/动画&class/悬疑&class/惊悚&class/恐怖&class/灾难&class/历史&class/%E4%BC%A6%E7%90%86&class/传记","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004","find_rule":"js:requireCache(config.xiao);\nvar 列表 = '.module-items&&.module-item';\nvar 标题 = 'a&&title';\nvar 描述 = '.module-item-text&&Text';\nvar 图片 = '.lazyloaded&&data-src';\nvar 链接 = 'a&&href';\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&.module-list&&.module-search-item'\nvar 标题 = 'img&&alt'\nvar 描述 = '.video-serial&&Text'\nvar 类型 = '.video-info-items,1&&Text'\nvar 简介 = '.video-info-items,2&&Text'\nvar 图片 = 'img&&data-src'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://www.9udy.com/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-content&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\nvar 类型 = '.video-info-aux&&Text';\nvar 演员 = '.video-info-items,1&&Text';\nvar 更新 = '.video-info-items,2&&Text';\nvar 导演 = '.video-info-items,3&&Text';\nvar 图片 = '.lazyload&&data-src';\nvar 图片链接 = setUrl\nvar 简介 = '.zkjj_a&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2022/06/21/3/123_bc2cbf9b130dd4244298193da651b23d_con_130x130.png"},{"last_chapter_rule":"js:requireCache(config.xiao);\nvar 选集列表 = 'body&&.myui-content__list';\nvar 选集标签 = 'ul&&li';\n章节.A()","title":"剧迷_晓","author":"晓","version":0,"type":"video","url":"https://gimy.tv/genre/fyclass-fyarea-fyyear-fypage/by/fysort.html","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&奇幻片&恐怖片&剧情片&战争片&记录片&悬疑片&冒险片&犯罪片&国产剧&港台剧&日韩剧","class_url":"1&2&3&4&6&7&8&9&38&10&11&12&22&44&45&46&13&14&15","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:requireCache(config.xiao);\nvar 列表 = '.myui-vodlist&&li';\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 图片 = 'a&&data-original';\nvar 链接 = 'a&&href';\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = '.myui-vodlist__media&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.pic-text&&Text'\nvar 类型 = 'p,2&&Text'\nvar 简介 = 'p,3&&Text'\nvar 图片 = 'a&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://gimy.tv/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.myui-panel__head:not(:matches(剧情简介|猜你喜欢|熱播))';\nvar 线路标签 = 'h3&&Text';\nvar 选集列表 = 'body&&.myui-content__list';\nvar 选集标签 = 'ul&&li';\nvar 类型 = '.data&&Text';\nvar 演员 = '.data,2&&Text';\nvar 更新 = '.data,1&&Text';\nvar 导演 = '.data,3&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 图片链接 = setUrl;\nvar 简介 = '.text-collapse&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2021/12/21/10/110_ae3e0bb8a4161762458f9d84206806c3_con_130x130.png"},{"last_chapter_rule":"","title":"九亿国语🐯","author":"逐风者","version":22082215,"type":"video","url":"http://www.9eguoyu.com/vodshow/dianying/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/yiji')).rule)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\nif (html.indexOf('验证') > -1) {\n    function getVCode2(img, headers) {\n        function ocr(hex) {\n            let ret = request('http://ocr.nokia.press/dz/api/ocr', {\n                headers: {\n                    'content-type': 'application/x-www-form-urlencoded',\n                },\n                body: 'hex=' + hex,\n                method: 'POST'\n            });\n            return ret\n        }\n        let hex = request(img, {\n            headers: JSON.parse(headers),\n            toHex: true\n        });\n        return ocr(hex);\n\n    }\n\n    let headers = {\n        \"User-Agent\": PC_UA,\n        \"Cookie\": getVar('9eguoyu$cookie'),\n        \"Referer\": MY_URL\n    };\n    let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers));\n    fetch(MY_HOME + '/index.php/ajax/verify_check?type=search&verify=' + JSON.parse(vcode).ret, {\n        headers: headers,\n        method: 'POST'\n    });\n    //java.lang.Thread.sleep(5000);\n    html = fetch(MY_URL, {\n        headers: headers\n    });\n}\nif (/5秒/.test(html)) {\n    d.push({\n        title: '搜索间隔5秒，等待结果'\n    })\n    java.lang.Thread.sleep(5000);\n    refreshPage()\n}\nvar list = pdfa(html, 'body&&.myui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        content: pdfh(list[j], 'p,-2&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"http://www.9eguoyu.com/vodsearch/9eguoyu/page/fypage/wd/**.html;get;utf-8;{User-Agent@Mobile&&Cookie@.js:getMyVar('9eguoyu$cookie')}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = unescape(base64Decode(JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url));if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)+ '#isVideo=true#'}else{jsurl+ '#isVideo=true#'}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    } else {\n        jsurl\n    };\n    var from = player.from;\n    if (jsurl.search(/m3u8|mp4/) > -1) {\n        var video = jsurl\n    } else {\n        var play = input;\n        showLoading(\"网页嗅探中,请稍后...\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (!urls[i].includes(\"v=\") && !urls[i].includes(\"url=\") && urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i];\n                } else if (urls[i].match(/\\.flv/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n                }\n            }\n        })\n    }\n    return video\n}); \neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插认')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"if(!getVar('9eguoyu$cookie')){\nlet cookie = JSON.parse(fetchCookie('https://www.9eguoyu.com/index.php/verify/index.html?', {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    }\n}));\nlog(cookie);\nputVar('9eguoyu$cookie', cookie.join(';'));\n}","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级动态.myui-vodlist\",\"path\":\"yiji\",\"rule\":\"js:\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\nvar getRangeColors = function(){\\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\\n      }\\nconst 分类颜色 = getRangeColors()\\nconst 大类定位 = 'body&&.myui-header__menu'\\nconst 拼接分类 = 'body&&.myui-screen__list'\\nconst 小类定位 = 'body--li&&li:not(.col-lg-5):not(:matches(明星|专题|资讯|APP))'\\nconst 分类标题 = 'a&&Text'\\nconst 分类链接 = 'a&&href'\\nMY_URL = MY_URL.replace('hiker://empty##', '')\\nlet true_url = getVar(MY_RULE.url, MY_URL)\\nconst page = MY_URL.match(/page\\\\/(.*)\\\\./)[1]\\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')\\nvar html = fetch(true_url, {\\n    headers: {\\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n    }\\n})\\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\\npdfa(html, '.myui-vodlist&&li').forEach(list => {\\n  d.push({\\n       title: pdfh(list, 'h4&&Text'),\\n       desc: pdfh(list, '.pic-text&&Text')+'  '+pdfh(list, '.pic-tag&&Text'),\\n       img: pd(list, '.lazyload&&data-original')+'@Referer=',\\n       url: pd(list,'a&&href')+'#immersiveTheme#'\\n  });\\n})\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索\",\"path\":\"sbso\",\"rule\":\"js:\\n\\n//log(MY_URL);\\nrequire(config.模板);\\nlog('cookie:'+getMyVar('cookie'));\\nvar html=获取源码(MY_URL);\\nif(/输入验证码/.test(html)){\\n    showLoading(\\\"验证码识别中，请稍等\\\");\\n    let vcode=获取验证码('http://www.9eguoyu.com/vodsearch/9eguoyu.html?');;\\n    log('获取验证码:'+vcode);\\n    let ret=提交验证码('http://www.9eguoyu.com/index.php/ajax/verify_check?type=search&verify='+vcode,false,false,{});\\n    hideLoading();\\n    if(/\\\"msg\\\"/.test(ret)&&/\\\"ok\\\"/.test(ret)){\\n       // refreshPage(true);\\n        html=获取源码(MY_URL);\\n        //log(html);\\n        if(/搜索时间间隔/.test(html)){\\n            setResult([{\\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\\n                col_type:'text_1',\\n                url:'toast://疼！别点！'\\n            }]);\\n        }\\n    }else{\\n        //log('验证未通过:'+ret);\\n        setResult([{\\n                title:'验证未通过，请尝试重新搜索',\\n                col_type:'text_1',\\n                url:'toast://疼！别点！'\\n            }]);\\n    }\\n}\\n//log(html);\\nlet parStr=\\\"body&&.myui-vodlist__media&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href;.hidden-xs&&Text\\\";\\nvar 一级处理={\\n    //沉浸:false\\n}\\n一级(parStr,true,null,null,html);\"},{\"col_type\":\"movie_3\",\"name\":\"二级页面信息nav-tabs&&li\",\"path\":\"xnxi\",\"rule\":\"//二级页面\\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, 'h1&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&Text');\\nvar 图片 = parseDom(html, '.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.data,-1&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\"}]","proxy":"","icon":"http://www.9eguoyu.com/template/mytheme/statics/image/20220305/a5dd5144f.png"},{"last_chapter_rule":"","title":"99K影视🐯","author":"逐风者","version":22082215,"type":"video","url":"https://www.99k.hk/type/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\neval(JSON.parse(request('hiker://page/yiji1')).rule)","searchFind":"js:\neval(JSON.parse(request('hiker://page/sbso1')).rule)","search_url":"https://www.99k.hk/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\neval(JSON.parse(request('hiker://page/erji1')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级.fed-list-info\",\"path\":\"yiji\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\ntry{\\nvar list = parseDomForArray(getResCode(), 'body&&.fed-list-info&&li');//列表\\r\\nfor (var j in list) {\\r\\n  d.push({\\r\\n       title: parseDomForHtml(list[j], 'a,1&&Text'),//标题\\r\\n       desc: parseDomForHtml(list[j], '.fed-text-center&&Text')+' '+parseDomForHtml(list[j], '.fed-back-green&&Text'),//双重描述\\r\\n       pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',//图片\\r\\n       url: parseDom(list[j],'a&&href')+\\\"#immersiveTheme#\\\"//链接\\r\\n  });\\r\\n}}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"二级通免.fed-tabs-boxs&&.fed-drop-btns\",\"path\":\"erji\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'body&&.fed-tabs-boxs&&.fed-drop-btns');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.fed-play-item');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body--a&&a'))\\n}\\n\\n//标题\\nvar title = parseDomForHtml(html, 'h1&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.fed-deta-content&&li,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.fed-deta-content&&li&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, '.fed-deta-images&&.fed-text-center&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.fed-deta-content&&li,5&&Text');\\n\\nvar 图片 = parseDom(html, '.fed-deta-images&&a&&data-original');\\n\\nvar 简介 = parseDomForHtml(html, '.fed-deta-content&&li,6&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.fed-deta-info\",\"path\":\"sbso\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.fed-deta-info');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'h1&&Text'),//【标题】\\n       desc: parseDomForHtml(list[j], '.fed-text-center&&Text')  + '评分：' +parseDomForHtml(list[j], '.fed-back-green&&Text'),//【描述】\\n       content: parseDomForHtml(list[j], 'li,-1&&Text'),//【详情】\\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"二级通免h2&&.mo-movs-btns\",\"path\":\"erji1\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\n//嗅探\\nvar _x5 = $.toString(() => {\\n    var urls = _getUrls();\\n    for (var i in urls) {\\n        if (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n            fy_bridge_app.log(urls[i]);\\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\\n        }\\n    }\\n});\\n\\n//线路名列表的定位\\nvar arts = parseDomForArray(html, 'h2&&.mo-movs-btns');\\n\\n//线路名列表名称的定位\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\n\\n//播放列表的列表的定位\\nvar conts = parseDomForArray(html, 'body&&.mo-movs-item');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\n\\n//标题\\nvar title = parseDomForHtml(html, 'h1&&Text');\\n\\nvar 导演 = parseDomForHtml(html, '.mo-cols-sm9&&li,1&&Text').replace(/\\\\//g,' ');\\n\\nvar 主演 = parseDomForHtml(html, '.mo-cols-sm9&&li&&Text').replace(/\\\\//g,' ');\\n\\nvar 更新 = parseDomForHtml(html, 'body&&.mo-paxs-5px.mo-pamd-10px&&a&&Text');\\n\\nvar 状态 = parseDomForHtml(html, '.mo-cols-sm9&&li,5&&Text');\\n\\nvar 图片 = parseDom(html, 'body&&.mo-paxs-5px.mo-pamd-10px&&a&&data-original');\\n\\nvar 简介 = parseDomForHtml(html, '.mo-cols-sm9&&li,6&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\\n\\n\\n\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nlet line_model = 8;\\nlet line_type_model = 'blank_block';\\nd.push({\\n    title: 导演 + '\\\\n' + 主演,\\n    desc: 更新 + '\\\\n' + 状态,\\n    pic_url: 图片,\\n    url: \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\\\",   \\n    col_type: 'movie_1_vertical_pic_blur'\\n});\\nd.push({\\n    title: '‘‘’’<small><font color=\\\"#ff148e8e\\\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\\\"red\\\">详情</font></small></small>',\\n    url: 'hiker://empty#' + '\\\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\\n    col_type: 'text_1'\\n});\\nfor (let i = 0; i < line_model; i++) {\\n    d.push({\\n        col_type: line_type_model\\n    })\\n}\\nfunction setTabs(tabs, vari) {\\n    for (var i in tabs) {\\n        var url = \\\"#noLoading#@lazyRule=.js:putVar('\\\" + vari + \\\"', '\\\" + i + \\\"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\\\";\\n        d.push({\\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\\n            url: url,\\n            col_type: 'scroll_button'\\n        })\\n    }\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        col_type: 'line_blank'\\n    })\\n}\\nif (getVar('shsort') == '1') {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#0aa344\\\">↑</font></small>' + '<small><font color=\\\"#ff4c00\\\">↓</font></small>';\\n} else {\\n    var sx = '‘‘’’<font color=\\\"#0aa344\\\">排序</font></small>' + '<small><font color=\\\"#ff4c00\\\">↑</font></small>' + '<small><font color=\\\"#0aa344\\\">↓</font></small>';\\n}\\nfunction setLists(lists, index) {\\n    d.push({\\n        title: '‘‘’’<span style=\\\"color:' + Color1 + '\\\"><small>选集列表</small>' + '\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t<span style=\\\"float:right\\\">' + '<small>' + sx + '</small>',\\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\\n        col_type: 'text_center_1'\\n    })\\n    var list = lists[index];\\n\\n    if (getVar('shsort') == '1') {\\n        try {\\n            for (var j = list.length - 1; j >= 0; j--) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n    } else {\\n        try {\\n            for (var j = 0; j < list.length; j++) {\\n                d.push({\\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\\n                    url:'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\\n                });\\n            }\\n        } catch (e) {\\n            d.push({\\n                title: '没有选集哟，不信点图片去看看👀',\\n                col_type: 'text_center_1'\\n            });\\n        }\\n\\n    }\\n}\\n\\n//搜索，以下基本不需要修改。\\nvar Color = \\\"#f13b66a\\\";\\nvar Color1 = \\\"#098AC1\\\";\\n\\nfunction getHead(title) {\\n    return '‘‘’’<strong><font color=\\\"' + Color + '\\\">' + title + '</front></strong>';\\n}\\nd.push({\\n    title: '老黑',\\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: 'APP',\\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '搜索',\\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\\n    pic_url: \\\"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\\\",\\n    col_type: 'icon_small_4'\\n})\\nd.push({\\n    title: '豆瓣',\\n    url: 'hiker://search?s=' + title + '&rule=青豆',\\n    pic_url: \\\"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\\\",\\n    col_type: 'icon_small_4'\\n})\\n\\nsetTabs(tabs, MY_URL);\\nsetLists(lists, getVar(MY_URL, '0'));\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    col_type: 'big_blank_block'\\n});\\nd.push({\\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\\n    url: MY_URL,\\n    col_type: 'text_center_1'\\n});\\nd.push({\\n    title: '<br>',\\n    col_type: 'rich_text'\\n});\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"一级.mo-cols-lg2\",\"path\":\"yiji1\",\"rule\":\"js:\\r\\nvar res = {};\\r\\nvar d = [];\\nif (MY_PAGE == 1) {\\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\\n    搜索建议(d, '海报开')\\n}\\n\\ntry{\\nvar list = parseDomForArray(getResCode(), 'body&&.mo-cols-lg2');//列表\\r\\nfor (var j in list) {\\r\\n  d.push({\\r\\n       title: parseDomForHtml(list[j], 'a,1&&Text'),//标题\\r\\n       desc: parseDomForHtml(list[j], '.mo-coxs-center&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\\r\\n       pic_url: parseDom(list[j], 'a&&data-original') + '@Referer=',//图片\\r\\n       url: parseDom(list[j],'a&&href')+\\\"#immersiveTheme#\\\"//链接\\r\\n  });\\r\\n}}catch(e){}\\r\\nres.data = d;\\r\\nsetHomeResult(res);\"},{\"col_type\":\"movie_3\",\"name\":\"搜索.mo-deta-info\",\"path\":\"sbso1\",\"rule\":\"js:\\n//以下是 列表解析规则（JS）\\nvar d = [];\\n\\nvar list = parseDomForArray(getResCode(), 'body&&.mo-deta-info.mo-cols-rows');//【列表】\\nfor (var j in list) {\\n  d.push({\\n       title: parseDomForHtml(list[j], 'h1&&Text'),//【标题】\\n       desc: parseDomForHtml(list[j], '.mo-coxs-center&&Text'),//【描述】\\n       content: parseDomForHtml(list[j], 'li,-1&&Text'),//【详情】\\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\\\"#immersiveTheme#\\\"\\n  });//【链接】\\n}\\nsetResult(d)\"}]","proxy":"","icon":"https://www.99k.hk/template/mojia/asset/img/favicon.png"},{"last_chapter_rule":"","title":"1080p·Q","author":"发粪涂墙","version":0,"type":"video","url":"hiker://empty##https://1080p.one/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper,1:'\nconst 拼接分类 = 'body&&.site-tabs'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\n/*\nif (/验证码|系统安全验证/.test(html)) {\n\n    let headers = {\n        \"User-Agent\": MOBILE_UA,\n        \"Referer\": MY_URL\n    };\n    function getVCode2(img, headers,type) {\n    const MAP_NUM = {a:4,b:6,d:0,e:9,g:9,i:1,l:1,m:3,s:5,t:7,o:0,q:9,u:4,z:2};\n    const MAP_ALPHA = {4:'a',6:'b',9:'q',1:'l',3:'m',5:'s',7:'t',0:'o',2:'z'}; \n    function ocr(hex) {\n        let ret = request('http://www.zruiry.com:9898/ocr/hex/json', {\n            headers: {\n                'content-type': 'application/x-www-form-urlencoded',\n            },\n            body: 'hex=' + hex,\n            method: 'POST'\n        });\n        return ret\n    }       \n    let hex=request(img,{headers:JSON.parse(headers),toHex:true});\n    let ret=JSON.parse(ocr(hex));\nlog(ret)\n    let result=ret.ret.split('');\n    for(i=0;i<result.length;i++){\n        if(type=='num'&&MAP_NUM[result[i]]) result[i]=MAP_NUM[result[i]];\n        else if(type=='alpha'&&MAP_ALPHA[result[i]]) result[i]=MAP_ALPHA[result[i]];\n    }\n    ret.text=result.join('');\n    return JSON.stringify(ret);\n}\n\n    let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\n\n    fetch(MY_HOME + html.match(/\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\n        headers: headers,\n        method: 'POST'\n    })\n   //var yz = !true_url ? MY_URL : true_url\n    var yz = MY_TYPE=='home' ? true_url : MY_URL\n\n    html = fetch(yz, {\n        headers: headers\n    });\n}\nif (/5秒/.test(html)) {\n    d.push({\n        title: '搜索间隔5秒，下拉刷新'\n    })}\n*/\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.list-a&&li')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.list-remarks&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\r\nvar list = pdfa(html, 'body&&.search-list');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),//标题\n        desc: pdfh(list[j], '.deployment&&Text'),//第几集或清晰度\n        img: pd(list[j], '.lazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://1080p.one/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode()\nvar lazy = $('').lazyRule((MY_HOME) => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n       \n        return request('https://1080p.one/addons/dp/player/dp.php?key=0&from=&id=43558&api=&url=' + url, {\n            headers: {\n                'Referer': MY_URL\n            }\n        }).match(/url\": \"(.*?)\"/)[1]\n    }\n},MY_HOME)\nd.push({\n    title: pdfh(getResCode(), 'p,1&&Text').replace('类型：', '').replace('地区：', ' ').replace('年份：', '').replace('语言：', '') + '\\n\\n' + pdfh(getResCode(), 'p,0&&Text').substring(0, 30), //定位的两个分别是更新至第几集和演员信息\n    desc: pdfh(getResCode(), '.play-bottom&&Text'), //剧情简介\n    pic_url: MY_PARAMS.img,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.swiper-wrapper&&a'\nvar 选集 = 'body&&.content-playlist'\nvar 线路名 = 'a&&Text'\nvar 选集列表 = 'ul&&li'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://1080p.one/template/Ds-pc/images/ico/favicon.ico"},{"last_chapter_rule":"","title":"极速影视","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##http://www.x34.cn/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=极速影视"},{"last_chapter_rule":"","title":"天空TV","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##http://tv.tkys.tv/api.php/iptv/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"电影先生.D🐰","author":"家娃","version":1,"type":"video","url":"https://dyxs15.com/pianku-dianying--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\n\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = true_url.replace(/---(\\d*)\\//, +page + '---$1/');\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        pic_url: pd(list[j], 'img||.lazy&&data-src')+'@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-list&&.module-search-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'img&&alt'),\r\n       desc: parseDomForHtml(list[j], '.video-info-items:contains(主演)&&Text').replace(/\\//g, ' '),\n       content:parseDomForHtml(list[j], '.video-info-items:contains(剧情)&&Text').replace(/\\//g, ' '),\n       img: parseDom(list[j], 'img&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a,1&&href')+\"#immersiveTheme#\"\n  });\r\n}\r\nsetResult(d);","search_url":"https://dyxs15.com/search-**-----------fypage--/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return cacheM3u8(playUrl);\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        //获取下网站配置文件的解析接口\n        var jvs = parseDom(html, \"body&&.player-box-main&&script,2&&src\");\n        eval(request(jvs, {}));\n        var jiek = '';\n\n        if (MacPlayerConfig.player_list[fro].ps == \"1\") {\n            jiek = MacPlayerConfig.player_list[fro].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[fro].parse;\n        }\n        if (jiek != '') {\n            if (jiek.substring(0, 4) == 'http') {\n                jiek = jiek;\n            } else if (jiek.substring(0, 2) == '\\/\\/') {\n                jiek = 'https:' + jiek;\n            } else {\n                jiek = \"http://dyxs15.com\" + jiek\n            }\n        }\n\n        var jiexi = jiek + playUrl;\n       // log(\"jiexi-->\" + jiexi);\n        var playerHtml = request(jiexi, {\n            headers: {\n                \"User-Agent\": MOBILE_UA,\n                \"Referer\": input\n            }\n        });\n        playUrl = playerHtml.match(/urls = \\\"(.*?)\\\"/)[1];\n\n        //log(playUrl);\n        return toUrl(playUrl);\n    } catch (e) {\n        //setError(e);\n        return 'toast://嗅探异常，可能链接超时。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items:contains(导演)&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items:contains(主演)&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items:contains(集数)&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items:contains(上映)&&Text').replace(/\\//g,' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.video-info-items:contains(剧情：)&&Text').replace(/剧情：/g,' ');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"http://dyxs15.com/statics/logo.png"},{"last_chapter_rule":"","title":"我爱跟剧.W","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##https://www.genmov.com/mogai_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=我爱跟剧"},{"last_chapter_rule":"","title":"可米影视","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##http://www.kmysw.vip/lvdou_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=可米影视"},{"last_chapter_rule":"","title":"绕滚内部","author":"浅殇","version":1,"type":"video","url":"http://www.raogun1.cc/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"剧集&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.stui-vodlist&&li');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//描述\r\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p,2&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',//【图片】\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"http://www.raogun1.cc/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\n\n//断插\nvar lazy1 = `@lazyRule=.js:var jsurl = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]).url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|letv|le/)){var input=jsurl;`+lazy+`}else if(jsurl.match(/renrenmi|LT/)){xx=request('https://www.msdv.cn/dplayer/analysis.php?v='+jsurl).match(/urls = \"(.*?)\"/)[1];writeFile('hiker://files/cache/video.m3u8',fetch(xx, {}));'file:///storage/emulated/0/Android/data/com.example.hikerview/files/Documents/cache/video.m3u8#'+xx}else{jsurl}`;\n\n//通免\nvar lazy2=$(\"\").lazyRule(() => {\nshowLoading(\"已开启强力嗅探，请稍候\")\nlet playUrl = input\nlet result=$(playUrl).x5Lazy(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n         if (!urls[i].match(/url=/)&&urls[i].match(/mp4|m3u8|obj/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isVideo=true#'\n        }\n     }\n   });\n   return result\n   });\n\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n\ttabs.push(parseDomForHtml(arts[i], 'Text').replace('',''))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n\tlists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\n//标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,1&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.data&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.pic-text&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original')+'@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace(/简介：/,'').replace('详情','').replace('展开全部','');\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nvar aa='hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#';\nputVar('aa',aa);\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n\t   title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\n\nd.push({\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 50) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nd.push({\n    title: '线路配置',\n    url: getVar('aa'),\n    pic_url: \"https://lanmeiguojiang.com/tubiao/messy/30.svg\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n});\n\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://gitee.com/Joker_tx/hiker/raw/master/img/青豆.png\",\n    col_type: 'icon_small_4'\n})\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nlet sel_title = ['断插','嗅探','网页'].map((it) => {\n    let test_mode = getItem('dn.test_mode','断插');\n    return it===test_mode?'👉'+it:it;\n});\nd.push({\n    title:'‘‘’’<strong><font color= \"#098AC1\">' + getItem('dn.test_mode','断插')+ '</front></strong>',\n    col_type:'scroll_button',\n    url:$(sel_title,3).select(()=>{\n        input = input.replace(/👉/g,'');\n        setItem('dn.test_mode',input);    \n       refreshPage(true);\n        return 'toast://已切换模式为:'+input\n    })\n});\nif(getItem('dn.test_mode','断插')==='断插'){\n    var lazy=lazy1\n}else if(getItem('dn.test_mode','断插')==='嗅探'){\n    var lazy=lazy2\n}else{\n    var lazy=\"\"\n};\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i);\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n\tvar list = lists[index];\n\t// log('选集有：'+list.length+' · 线路有：'+tabs.length)\n\t// 将反序归正\n\ttry{\n\t\tif (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0]>pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0]) list.reverse()\n\t} catch (e) {}\n\tif (tabs.length > 0 || list.length > 2) {\n\t\tvar icon_s = 'http://82.156.222.77/weisyr/icon/';\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tvar avatar = icon_s + '正序.svg'\n\t\t} else {\n\t\t\tvar avatar = icon_s + '反序.svg'\n\t\t}\n\nd.push({\n\t\t\tcol_type: 'line_blank'\n\t\t});\n\n\t\td.push({\n\t\t\ttitle:'<font color=\"#778899\">当前线路</font></small>'+getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 条' +\n\t\t\t\t\"</font></small>\",\n\t\t\turl: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n\t\t\tcol_type: 'avatar',\n\t\t\timg: avatar\n\t\t})\nd.push({\n\t\t\tcol_type: 'line'\n\t\t});\n\t}\n\n\tfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\n\n\tfunction playLists() {\n\t\tvar jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期|-/g, '').replace(/预告/g, '📢');\n\t\tif (list.length < 5) {\n\t\t\tvar col = 'text_2'\n\t\t} else {\n\t\t\tvar col = jm.length > 5 ? 'text_3' : 'text_5'\n\t\t}\n\t\td.push({\n\t\t\ttitle: jm,\n\t\t\turl: parseDom(list[j], 'a&&href') + lazy,extra: {id:parseDom(list[j],'a&&href'),blockRules: ['.m4a', '.mp3','.mp4','.m3u8','.flv','.avi','.3gp','.mpeg','.wmv','.mov','.rmvb','.gif','.jpg','.jpeg','.png','.ico','.svg']},\n\t\t\tcol_type: col\n\t\t});\n\t}\n\t// 开始选集分区\n\taddListener('onClose', $.toString(() => {\n\t\tclearMyVar('当前线路名');\n\t\tclearMyVar('分集起');\n\t\tclearMyVar('分集终');\n\t}))\n\t//选集＞则启用选集分区（list替换成你的选集数组）\n\tvar 选集数组 = list; //改\n\tif (选集数组.length > 110) {\n\t\t//设置每区选集数目\n\t\tvar page_number = 100;\nlet 底部换页='关闭';\n\t\tvar star = getMyVar('分集起', '1');\n\t\tvar end = getMyVar('分集终', JSON.stringify(page_number));\n\t\tvar total = Math.ceil(选集数组.length / page_number);\n\t\tvar catalogue = []\n\t\tfor (let i = 0; i < total; i++) {\n\t\t\tcatalogue += i * page_number + ',';\n\t\t\tcatalogue = catalogue.split(',');\n\t\t}\n\t\tfor (let i = 0; i < 8; i++) {\n\t\t\td.push({\n\t\t\t\tcol_type: \"blank_block\"\n\t\t\t})\n\t\t}\n\t\tfor (var i = 0; i < catalogue.length - 1; i++) {\n\t\t\tvar total1 = parseInt(catalogue[i]) + 1;\n\t\t\tvar total2 = parseInt(catalogue[i + 1]);\n\t\t\tif (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n\t\t\td.push({\n\t\t\t\ttitle: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((total1, total2) => {\n\t\t\t\t\tputMyVar('分集起', total1);\n\t\t\t\t\tputMyVar('分集终', total2);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, total1, total2),\n\t\t\t\tcol_type: 'scroll_button'\n\t\t\t});\n\t\t}\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = end - 1; j >= star - 1; j--) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = star - 1; j < end; j++) {\n\t\t\t\t// 打印选集列表\n\t\t\t\tplayLists() //改\n\t\t\t}\n\t\t}\n\t//底部页码\nd.push({\n\t\t\t\tcol_type: \"line\"\n\t\t\t})\nvar yema=Math.ceil(end/page_number);\nd.push({\n\ttitle: \"““”” <small><small><font color='grey'>\" + yema +' / '+ total+\"</font> </small></small>\",\n\tcol_type: \"text_center_1\",\n\textra: {\n\t\tlineVisible: false\n\t}\n})\nif(底部换页=='开启'){\nd.push({\n\t\t\t\ttitle: '首页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number) => {\nputMyVar('分集起', '1');\nputMyVar('分集终', page_number);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '上一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)-page_number;\nvar e= parseInt(end)-page_number;\nif(end=选集数组.length) var e= s+page_number-1;\nif(s<1){ \nvar s=1;\nvar e=page_number;\n}\nif(s>0){\nputMyVar('分集起', s);\nputMyVar('分集终', e);\nlog(s+'-'+e)\n\t\t\t\t\trefreshPage(false);\n}\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n\t\td.push({\n\t\t\t\ttitle: '下一页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule((star,end, page_number,total,选集数组) => {\n\t\t\t\tvar s= parseInt(star)+page_number;\nvar e= parseInt(end) +page_number;\nlog(s+'-'+e)\nif(e>选集数组.length){ \nvar s=(total-1)*page_number+1;\nvar e=选集数组.length;\n}\nputMyVar('分集起', s);\nputMyVar('分集终', e);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, star, end,page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\nd.push({\n\t\t\t\ttitle: '尾页',\n\t\t\t\turl: $(\"#noLoading#\").lazyRule(( page_number,total,选集数组) => {\nvar s=(total-1)*page_number+1;\nputMyVar('分集起', s);\nputMyVar('分集终', 选集数组.length);\n\t\t\t\t\trefreshPage(false);\n\t\t\t\t\treturn 'hiker://empty'\n\t\t\t\t}, page_number,total,选集数组),\n\t\t\t\tcol_type: 'text_4'\n\t\t\t});\n}\n\t} \n\n\t// 结束选集分区\n\telse {\n\t\tif (getMyVar('选集排序') == 1) {\n\t\t\tfor (var j = list.length - 1; j >= 0; j--) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t} else {\n\t\t\tfor (var j = 0; j < list.length; j++) {\n\t\t\t\tplayLists() \n\t\t\t}\n\t\t}\n\t}\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\t\n\td.push({\n\t\ttitle: '\\n',\n\t\turl: 'hiker://empty',\n\t\tcol_type: 'rich_text'\n\t});\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.raogun1.cc/statics/img/load.gif"},{"last_chapter_rule":"","title":"星海直连","author":"道长&老子胸口有纹身","version":1,"type":"video","url":"hiker://empty##https://www.xhzy01.com/api.php/provide/vod/from/xhm3u8#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=星海直连"},{"last_chapter_rule":"","title":"电影狗","author":"香雅情","version":1,"type":"video","url":"https://www.dianyinggou.com/soMore/fyclass-all-fyarea-fyyear-/page_fypage.html","col_type":"movie_3","class_name":"全部&电影&电视剧&纪录片&动漫","class_url":"all&movie&tv&doc&comic","area_name":"地区&美国&英国&韩国&日本&中国大陆&香港&台湾&法国&德国&俄罗斯&泰国&印度&意大利&加拿大&西班牙&澳大利亚&比利时&瑞典&伊朗","area_url":"all&meiguo&yingguo&hanguo&riben&zhongguodalu&xianggang&taiwan&faguo&deguo&eluosi&taiguo&yindu&yidali&jianada&xibanya&aodaliya&bilishi&ruidian&yilang","sort_name":"","year_name":"年份&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","sort_url":"","year_url":"all&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&2000","find_rule":".movies&&.each;a&&title;img&&data-url;.rating&&Text;a&&href","searchFind":".movies&&.each;a&&title;a&&href;.rating&&Text;.info&&Text;img&&data-url","search_url":"https://www.dianyinggou.com/so/**/page_fypage.html","titleColor":"#ffff7000","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\nvar thumb = parseDom(getResCode(), \".mainContainer&&img&&data-url\");\nd.push({\n\t\t\ttitle: '剧情简介：',\n    desc:parseDomForHtml(getResCode(), \".mainContainer&&details&&Text\"),\n    pic_url:thumb,\n    url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nvar tit=parseDomForHtml(getResCode(), \"#web_ajax&&script&&Html\").split(\"'\")[1];\nvar listcode=fetch('https://www.dianyinggou.com/SpiderMovie/zy/'+tit,{headers:{'X-Requested-With':'XMLHttpRequest'}});\n//setError(listcode);\n\nvar conts=parseDom(listcode,'body&&.movieZy&&Html').match(/<a title=[\\s\\S]*?<\\/a>/g);\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(conts[i], \"li,0&&Text\")+'  '+'““'+parseDomForHtml(conts[i], \"li,-1&&Text\")+'””',\n      url:parseDom(conts[i], \"a&&href\"),\n      col_type: 'text_1'\n\t\t\t});\n   }\n\n\n//二级模板\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"#ffff7000"},{"last_chapter_rule":"","title":"久久影视","author":"逐风者","version":2020102203,"type":"video","url":"http://www.9fm.cc/8fm-vodshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"dianying&lianxuju&zongyi&dongman","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.stui-vodlist__box');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '')+' '+parseDomForHtml(list[j], '.pic-text&&Text'),//双重描述\r\n       pic_url: parseDom(list[j], 'a&&data-original'),//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"body&&.stui-vodlist__media&&li;a&&title;a&&href;.pic-text&&Text;;a&&data-original","search_url":"http://www.9fm.cc/8fm-vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n//嗅探\nvar _x5 = $.toString(() => {\n    var urls = _getUrls();\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i]);\n            return urls[i].replace(/http.*url=/,'').replace(/https.*url=/,'')\n        }\n    }\n});\n\n\n//①类型地区等②主演③导演④简介\nd.push({\n\ttitle: parseDomForHtml(html, 'body&&p,0&&Text').replace(/\\//g,'')+ '\\n' + parseDomForHtml(html,'body&&p,1&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15)+'\\n'+parseDomForHtml(html, 'body&&p,2&&Text').replace(/\\//g,' ').replace('  ','').substring(0, 15),\tdesc: parseDomForHtml(html,'body&&p,4&&Text').replace('[收起部分]','').replace('　',''),\n//图片\n\tpic_url: parseDom(html, 'img&&data-original'),\n\turl: parseDom(html, 'img&&data-original'),\n\ncol_type: 'movie_1_vertical_pic_blur'\n});\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h4&&Text');\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '老黑',\n    url: 'hiker://search?s=' + title + '&rule=黑黑影视🌚',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dz',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①高清',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2019/09/16/7/110_9bcb18fc9a2cec98bd037bf37bb06164_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\n\n\n\n//线路列表名称\nvar arts = parseDomForArray(html,'body&&.nav&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'a&&Text'))\n}\n\n//选集列表\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists =[];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\n\n\n//线路切换\nfunction setTabs(tabs, vari) {\n     d.push({\n         title: '‘‘线路:’’',\n            col_type: 'scroll_button',}) \n  for (var i = 0; i < tabs.length; i++) {\n    d.push({\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\n\t\t      col_type: 'scroll_button',\n        })\n    }\n    \n\n//正反序         \n    d.push({        col_type: 'line_blank'    })}\n\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\n    function setLists(lists, index) {\n        d.push({\n           // title: '‘‘选集’’',\n            title: '‘‘选集’’' +''+ sx,\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\nif(lists.length != '')  {\n        var list = lists[index];\nif (getVar('shsort') == '1') {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } else {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                title: parseDomForHtml(list[j], 'Text').replace(/第|集|话|期/g,''),\n                url: 'x5Rule://' + parseDom(list[j], 'a&&href') + '@' + _x5,\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        }\n        \n        }\n      d.push({title:'<br>',col_type:'rich_text' });      \n    }\n\n// 调用函数\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/19.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"91影院🐯","author":"逐风者","version":22082215,"type":"video","url":"https://www.91cinema.cn/vshow/fyAll--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar res = {};\r\nvar d = [];\nif (MY_PAGE == 1) {\nrequire('http://hiker.nokia.press/hikerule/rulelist.json?id=4508');\n    搜索建议(d, '海报开')\n}\n\ntry{\nvar list = parseDomForArray(getResCode(), 'body&&.list-width');//列表\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),//标题\r\n       desc: parseDomForHtml(list[j], '.list-remarks&&Text')+' '+parseDomForHtml(list[j], ''),//双重描述\r\n       pic_url: parseDom(list[j], '.lazy&&data-original') + '@Referer=',//图片\r\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"//链接\r\n  });\r\n}}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), 'body&&.list-width');//【列表】\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),//【标题】\n       desc: parseDomForHtml(list[j], '.list-remarks&&Text'),//【描述】\n       content: parseDomForHtml(list[j], 'p&&Text'),//【详情】\n       pic_url: parseDom(list[j], 'a&&data-original'),//【图片】\n       url: parseDom(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });//【链接】\n}\nsetResult(d)","search_url":"https://www.91cinema.cn/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    var newUrls = urls.filter(url => {\n        return !url.includes(\"url=\") &&\n            url.match(/\\.mp4|\\.m3u8|\\.flv/)\n    });\n    return newUrls[0]\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\n\neval(JSON.parse(request('hiker://page/xnxi')).rule)\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=香情影视',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/18/11/110_c6a1f70c163d781483c9b2651cf92db9_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: 'APP',\n    url: 'hiker://search?s=' + title + '&rule=app影视.dp',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/03/23/8/110_0b65fb0f0a90060a0996c4e7414937f2_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=①免嗅',\n    pic_url: \"https://android-artworks.25pp.com/fs08/2021/09/23/6/110_c6bf3e6cd4fa4ee1cddec2b2ac2fed1c_con_130x130.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '豆瓣',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://img3.doubanio.com/f/frodo/144e6fb7d96701944e7dbb1a9bad51bdb1debe29/pics/app/logo.png\",\n    col_type: 'icon_small_4'\n})\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"二级页面信息play_source_tab\",\"path\":\"xnxi\",\"rule\":\"//二级页面基本信息\\nvar arts = parseDomForArray(html, 'body&&.play_source_tab&&a');\\nvar tabs = [];\\nfor (var i in arts) {\\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(' ',''))\\n}\\nvar conts = parseDomForArray(html, 'body&&.content_playlist');\\nvar lists = [];\\nfor (var i in conts) {\\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\\n}\\nvar title = parseDomForHtml(html, '.hidden&&Text');\\nvar 导演 = parseDomForHtml(html, '.data,3&&Text').replace(/\\\\//g,' ');\\nvar 主演 = parseDomForHtml(html, '.data,2&&Text').replace(/\\\\//g,' ');\\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\\nvar 状态 = parseDomForHtml(html, '.data&&Text');\\nvar 图片 = parseDom(html, '.lazy||.lazyload&&data-original');\\nvar 简介 = parseDomForHtml(html, '.desc||.m-box&&Text').replace(/简介：/,'').replace('收起','').replace('详情：','').replace('展开','');\"}]","proxy":"","icon":"https://www.91cinema.cn/template/Ds-wap/img/logo.png"},{"last_chapter_rule":"js:\nrequireCache(config.依赖, config.更新间隔);\nvar 集数总列表 = 'body&&.myui-content__list'\nvar 集数列表 = 'body&&a'\n章节.A()","title":"影视工厂🤡","author":"缘分","version":0,"type":"video","url":"https://www.ysgc.tv/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"https://www.ysgc.vip/vodshow/1-----------.html","year_url":"","find_rule":"js:\nrequireCache(config.依赖, config.更新间隔);\n大类定位 = 'body&&.nav-list'\n拼接分类 = '.myui-panel_bd&&ul'\n小类定位 = 'body--a&&a:not(:matches(资|明|A))'\n分类标题 = 'a&&Text'\n分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\n\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/vodtype(\\/\\d+)\\.html/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = fetch(true_url)\n\nvar 列表 = '.myui-vodlist&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.pic-text&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n一级1.A()","searchFind":"js:\nvar d = []\nvar list = JSON.parse(getResCode()).list\nfor (var j in list) {\n    d.push({\n        title: list[j].name,\n        img: list[j].pic + \"@Referer=\",\n        url: 'https://www.ysgc.tv/voddetail/' + list[j].id + '.html#immersiveTheme#'\n    })\n}\nsetResult(d)","search_url":"https://www.ysgc.tv/index.php/ajax/suggest?mid=fypage&wd=**&limit=10&timestamp","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.nav-tabs&&li');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.myui-content__list');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.myui-content__detail&&.data,2&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '').substring(0, 18),\n    desc: pdfh(html, '.myui-content__detail&&.data&&Text'),\n    img: pd(html,\n        '.lazyload&&data-original') + '@Referer=',\n    url: pd(html,\n        '.lazyload&&data-original')+'.jpg',\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n} catch (e) {\nd.push({ \n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"' ,  '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '<font color=\"#1aad19\">' + tabs[i] + '</font>' : tabs[i],\n            img: pd(arts[i], 'img&&src'),\n            url: url,\n            col_type: 'icon_small_3'\n        })\n    }\n  d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })  \n}\nd.push({\n    col_type: 'blank_block'\n})\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: 'https://pastebin.com/raw/D2iimVHk',\n    更新间隔: 48\n});","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n    try {\\n        var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n        var jsurl = player.url;\\n        var from = player.from;\\n        var jx = request('https://www.ysgc.tv/static/player/' + from + '.js').match(/src=\\\"(.*?)'/)[1];\\n        var parse = 'https://www.ysgc.tv' + jx + jsurl;\\n        var url = eval(request(parse).match(/var urls[\\\\s\\\\S]*?urls =([\\\\s\\\\S]*?);/)[1]);\\n        var url = (base64Decode(url)).match(/http.*/)[0];\\n        var url = url.substring(0, url.length - 8);\\n        return url\\n    } catch (e) {\\n        \\n    return $.require('hiker://page/drDmLazy.js?rule=dm盒子').dmLazy();\\n\\n    }\\n});\"},{\"col_type\":\"movie_3\",\"name\":\"lazy1\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\r\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\r\\n    var url = html.url\\r\\n    if (html.encrypt == '1') {\\r\\n        url = unescape(url);\\r\\n    } else if (html.encrypt == '2') {\\r\\n        url = unescape(base64Decode(url));\\r\\n    }\\r\\n    var jx = fetch(MY_HOME + '/static/player/' + html.from + '.js').match(/src=\\\"(.*?)'/)[1]\\r\\n    eval(request(jx + url).match(/var config = {[\\\\s\\\\S]*?}/)[0])\\r\\n    jx = jx.replace('?url=', '')\\r\\n    eval('jxk = ' + request(jx + 'js/setting.js').match(/var.*=(\\\\[.*?);/)[1])\\r\\n\\r\\n    jx += jxk[4]\\r\\n    config.sign = jxk[8]\\r\\n    eval(request('https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js'))\\r\\n\\r\\n    function dd(url, jx) {\\r\\n        return getVideoInfo(JSON.parse(post(jx, {\\r\\n            headers: {\\r\\n                'Referer': MY_URL\\r\\n            },\\r\\n            body: config,\\r\\n        })).url);\\r\\n    }\\r\\n    if (/m3u8|mp4/.test(url)) {\\r\\n        return url\\r\\n    } else {\\r\\n        return dd(url, jx) + '#isVideo=true#'\\r\\n    }\\r\\n}, MY_HOME);\"}]","proxy":"","icon":"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/52f969bf-a8e0-4b5c-b14c-2f379814348c.ico"},{"firstHeader":"class","last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title);}","title":"完美看看🤡","author":"缘分","version":2,"type":"video","url":"https://www.wanmeikk.me/category/fyAll-fypage.html","col_type":"movie_3_marquee","class_name":"电影&动漫&综艺&纪录片&","class_url":"1&6&7&10&","area_name":"欧美剧&韩剧&日剧&国产剧&泰剧&","area_url":"2&3&4&5&9&","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = [];\nMY_RULE.url.match(/fypage/)[0]\nvar list = pdfa(getResCode(), '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], '.lazyload||a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\nvar list = pdfa(html, '.stui-vodlist__media&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'a&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        content: pdfh(list[j], ''),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"https://www.wanmeikk.me/so/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar arts = pdfa(html, 'body--h3,-1--h3,-1&&h3');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'h3&&Text'))\n}\nvar conts = pdfa(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.stui-content__detail&&p,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '.stui-content__detail&&p,2&&Text'),\n    img: pd(html,\n        '.lazyload&&data-original') + '@Referer=',\n    url: pd(html,\n        '.lazyload&&data-original') + '.jpg',\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n} catch (e) {\nd.push({ \n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n        var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n        var url = html.url\\n        if (html.encrypt == '1') {\\n            url = unescape(url);\\n        } else if (html.encrypt == '2') {\\n            url = unescape(base64Decode(url));\\n        }\\n        var jx = \\\"https://www.wanmeikk.film/addons/dplayer/GetData.php?url=\\\"\\n        var parse = jx + url;\\nlog(parse)\\n      var url = pdfh(request(parse), 'body&&script&&Html').match(/var urls = \\\"(.*?)\\\"/)[1];\\nlog(url)\\nif (url.search(/\\\\.mp4|\\\\.m3u8|video/) > -1) {\\n        return url+'#isVideo=true#' }\\n    else {\\n   return \\\"toast://线路以失效，更换其它线路观看\\\"\\n    }\\n\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"if (html.indexOf('系统安全验证') > -1) {\\n\\n    let headers = {\\n        \\\"User-Agent\\\": MOBILE_UA,\\n        \\\"Referer\\\": MY_URL\\n    };\\n    eval(JSON.parse(request('hiker://page/jxhs?rule=模板·Q')).rule);\\n    evalPrivateJS(ssyz);\\n\\n    let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n    fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n        headers: headers,\\n        method: 'POST'\\n    })\\n    var yz = !/search/.test(MY_URL) ? true_url : MY_URL\\n    html = fetch(yz, {\\n        headers: headers\\n    });\\n}\"}]","proxy":"","icon":"https://www.wanmeikk.me/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.list_block')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nvar title = pdfh(list[i,0], 'a&&Text');\nif (/集|第|期/.test(title)){\nsetResult(\"更新至: \" + title);}","title":"乐猪影视🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##http://www.lezhutv.com/list/1_fypage_______.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.nav'\nconst 拼接分类 = '.tbox_t'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/type\\/(\\d+)-1\\.html/, 'list/$1_'+page+'_______.html').replace(/1(_desc.*html)/,  page+'$1')\nlog(true_url)\n}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm')).rule);\n\n//一级页面\nvar list = pdfa(html, '.tbox_m2&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'a&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\n//以下是 列表解析规则（JS）\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\ntry {\n    var list = parseDomForArray(html, '.tbox_m&&li'); //       【列表】\n    for (var i in list) {\n        d.push({\n            title: parseDomForHtml(list[i], 'a&&title'), //【标题】\n            pic_url: parseDom(list[i], 'a&&data-original'), //【图片】\n            desc: parseDomForHtml(list[i], 'a&&Text'), //【描述】\n            url: parseDom(list[i], 'a&&href') + '#immersiveTheme#', //【链接】\n\n        })\n    }\n} catch (e) {}\nsetResult(d)","search_url":"http://www.lezhutv.com/search-pg-fypage-wd-**.html","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\neval(JSON.parse(fetch('hiker://page/lazy1', {})).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body--h3,-1--h3,-1&&h3');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('(支持手机)','').replace('1.','').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.list_block');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&p,1&&Text').replace('类型：','');\n\nvar 主演 = parseDomForHtml(html, '.data&&p,2&&Text').substring(0,15);\n\nvar 导演 = parseDomForHtml(html, '.data&&p,0&&Text');\n\nvar 状态 = parseDomForHtml(html, '');\n\nvar 图片 = parseDom(html, '.img&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.tbox_js&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url:图片,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\nfunction setLists(lists, index) {\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1_vertical_pic_blur","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy1\",\"path\":\"lazy1\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    eval(pdfh(request(input), '.mplayer&&script&&Html'))\\n\\n    function sign(data) {\\n        var code = '';\\n        var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'];\\n        var b = ['z', 'y', 'x', 'w', 'v', 'u', 't', 's', 'r', 'q', 'p', 'o', 'n', 'm', 'l', 'k', 'j', 'i', 'h', 'g', 'f', 'e', 'd', 'c', 'b', 'a'];\\n        var MD5 = md5(window0.btoa(window0.btoa(data) + window0.btoa('566'))).split('');\\n        for (var i = 0; i < MD5.length; i++) {\\n            if (!isNaN(MD5[i])) {\\n                code += MD5[i];\\n            } else {\\n                code += b[a.indexOf(MD5[i])];\\n            }\\n        }\\n        return code;\\n    }\\n\\n    var MD5 = sign(request('http://www.lezhutv.com/hls2/index.php?url=' + view_path).match(/value=\\\"(.*?)\\\"/)[1]);\\n    var bod = 'id=' + view_path + '&type=vid&siteuser=&md5=' + MD5 + '&referer=' + input + '&hd=&lg='\\n    var url = JSON.parse(request('http://www.lezhutv.com/hls2/url.php', {\\n        redirect: false,\\n        withHeaders: true,\\n        body: bod,\\n        method: 'POST'\\n    })).body\\n    var url = JSON.parse(url).media.url\\n    return url;\\n})\"},{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"验证码\",\"path\":\"yzm\",\"rule\":\"function check(url, html, d) {\\n    let reload = false;\\n    if (/验证码|系统安全验证/.test(html)) {\\n        let headers = {\\n            \\\"User-Agent\\\": MOBILE_UA,\\n            \\\"Referer\\\": url\\n        };\\n        MY_HOME = getHome(url);\\n        let ssyz = 'TloGnnikThrfs/5fDNlk5CSsbaGtAH7W/uMZjuYoIupB6bCoo9CotLQHfPIdGgbkbynKqL2aUE2Xy558X2QxHYtTU09vD+4oaCDIuSZO7nxDbLfRGfWj7zql+yMbvF+aJoD/m6Psfw/PyYOAp/ZVGdrPzaCByfd0HL5DFVSw+YF2OC40V8SP9RxdFKKdrBuPxCWdxUCFrJ+1lRy/TU3LC84C4xxEBhgud7RtBp0zZArqBE06+Z3JtDP0eFCz/D5X0409qPHK3e1y/LuUgccuxpHnjYLE1GjlP8wYA2hQWe7yPngggQBHw33/gvb3tuCcxEKTWgmah/R32AH9ZF8jF7WemT26lUizVXe/spCdhDgHR/zUhODD4PO6glI8JPhdu+VwfPyRLG2D7CUo1L6SIF+0fYf0oTOWN13UPITo5+uZd/WnQQLU8NYx/WFCThEnkbzln9YGt60fRxsH+8uMDFgaBiC+z2SpcxB9gZ6GXypLSXWaj+qEUbGJKEx+jK/v5fnrkIhCdwNbkp9dRks6dmlYlBifzoWF8RkuC3rqPtoScBkMOMZu7GiVtoHEdHUozmnUIdrU1LGIqq9WnG7X2a3yH8s65mjLuLnd3q0U8v+LMPnHL2/GjQuTQKVh+RKEPqK/JdrChGLNrjcHvLHDbHEshrGZuQOdEphbx/PkhkvaYy4K1MO84R17guRsKs/V6niUPaL+XbQ7c3fqJS4VHJwludJTDe02euffGCm0PJIPlAOgLHnX0izJhA6q738R2UwQcWBQjJt79aF+kyqSdyt1QPVQVjaC3IpRf7PgsDhEJ7bi9nSclyIzgJ9DCJ4T+8dG1xHhKyZasT7L/x9Lfr1Mgs8nBZER2W9ax7iTkNK+X5ACU//p/YoP/uAanDtb3D0iKUUuXFH+Jbb0x1P322S2w6BJ46nuNHBMHTpVuWwhZeZzriGh7qoOywLWiExBMKyxTGLnmKh7r03/yXKYWIJnpBN2MMycVHRZJ7RumHV4CIsVrq7iRP48823RJVt9OtyP7uuc3wBBV3kcZUzbbaYdWBx1+Au+Od2u7lR6joOL810mcJm/f7J5TvGQP6HGph1YHHX4C7453a7uVHqOgyjjh5EBd720MEBY23c+TKq/z9UpWDDOg48ZFnwSIhFqitWdiZiqsaYuN0/SXwiK8EG9eQ29u2XDJoDW4mlwtcRO7vaX5XcFsgf4/mLU07mi';\\n        evalPrivateJS(ssyz);\\n\\n        let vcode = getVCode2(MY_HOME + '/index.php/verify/index.html?', JSON.stringify(headers), 'num');\\n        fetch(MY_HOME + html.match(/\\\\/index.php.*?verify=/)[0] + JSON.parse(vcode).ret, {\\n            headers: headers,\\n            method: 'POST'\\n        });\\n        reload = true;\\n    }\\n    return reload;\\n}\\n\\nfunction test(url, html, d, old, key, rule) {\\n    if (/5秒|频繁/.test(html)) {\\n        d.push({\\n            title: '搜索需间隔5秒，点击重新加载',\\n            col_type: \\\"text_1\\\",\\n            desc: \\\"““””<font color=#f13b66a>\\\" + rule + \\\"</font>\\\",\\n            url: $().lazyRule((url, old, key, rule) => {\\n                let sp = $.require(\\\"hiker://page/sp\\\");\\n                let d = sp(old, key, rule);\\n                let {\\n                    wrap\\n                } = $.require(\\\"hiker://page/tool\\\");\\n                for (let it of d) {\\n                    it.title = wrap(it.title, key);\\n                }\\n                addItemAfter(url, d);\\n                deleteItem(url);\\n                return \\\"toast://OK\\\";\\n            }, url, old, key, rule),\\n            extra: {\\n                id: url\\n            }\\n        });\\n    }\\n}\\n\\n$.exports = {\\n    check: check,\\n    test: test\\n}\"}]","proxy":"","icon":"http://www.lezhutv.com/template/mobile_tpl_two/images/favicon.ico"},{"last_chapter_rule":"js:requireCache(config.依赖, config.更新间隔);\nvar 集数总列表 = '.col-lg-wide-75&&.stui-content__playlist'\nvar 集数列表 = 'body&&a'\n章节.A()","title":"VIP电影🤡","author":"缘分","version":0,"type":"video","url":"http://www.vip1280.net/frim/index1/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list||.stui-pannel__head'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/index(\\d+)/, 'index$1.html').replace('.html', '/page/'+page + '.html')}\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'a&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=http://www.vip1280.net',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:requireCache(config.依赖, config.更新间隔);\nvar 列表 = '.stui-vodlist__media&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.pic-text&&Text'\nvar 详情 = 'p,1&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"http://www.vip1280.net/search**/page/fypage.html","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nrequireCache(config.依赖, config.更新间隔);\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nvar 片名 = \"\";\nvar 信息 = \".stui-content__detail&&p,1&&Text\";\nvar 信息1 = \".stui-content__detail&&p,2&&Text\";\nvar 信息2 = \"\";\nvar 信息3 = \".stui-content__detail&&p&&Text\";\nvar 封面 = \".lazyload&&data-original\";\nvar 图片链接 = \"\";\nvar 简介 = \".detail&&Text\";\nvar 路线列表 = \".col-lg-wide-75--h3,-1--h3,-1&&h3\";\nvar 路线名 = \"Text\";\nvar 过滤 = \"\";\nvar 集数总列表 = \".col-lg-wide-75&&.stui-content__playlist\";\nvar 集数列表 = \"body&&a\";\n二级1.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: 'https://pastebin.com/raw/D2iimVHk',\n    更新间隔: 48\n})","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    if (url.search(/\\\\.mp4|\\\\.m3u8/) > -1) {\\n        return url\\n    } else {\\n        eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n        var jx = MacPlayerConfig.parse;\\n\\n        var url = request(jx + url, {\\n            headers: {\\n                'Referer': MY_URL\\n            }\\n        }).match(/source:\\\"(.*?)\\\"/)[1];\\n\\n        return url\\n    }\\n}, MY_HOME)\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"http://pic.downcc.com/upload/2016-9/20169221550398484.png"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, '.message&&ul')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title);}","title":"Auete🤡","author":"缘分","version":0,"type":"video","url":"https://auete.com/fyAll/indexfypage.html[firstPage=https://auete.com/fyAll/index.html]","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"Movie&Tv&Zy&Dm","area_name":"MV&其他","area_url":"Music&qita","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    eval(pdfh(request(input), '#player||#video&&script&&Html').match(/var url =.*?;/)[0])\n    var url = url;\n    if (url.search(/http/) > -1) {\n        return url.split(\"&\")[0]\n    }\n})\ntry {\n    var list = parseDomForArray(getResCode(), '.threadlist&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'img&&alt'),\n            desc: parseDomForHtml(list[j], '.hdtag||.text-grey&&Text'),\n            pic_url: parseDom(list[j], 'img&&src'),\n            url: MY_URL.indexOf('Music') > -1 ? pd(list[j], 'a&&href') + lazy : parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.card-body,1&&li');\n   // log(list)\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            desc: pdfh(list[j], 'text-grey&&Text'),\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://auete.com/search.php?searchword=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\nvar arts = parseDomForArray(html, 'body--small&&h2');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace(/『.*?』/, '').replace(/（高清.*?下一集！）/, '').replace('：', '').split('解析')[0].split('（')[0])\n};\nvar conts = parseDomForArray(html, '.message&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n};\ntry {\n    var 主演 = parseDomForHtml(html, 'p,6&&Text').substring(0, 15).replace('◎影片', '');\n    var 导演 = parseDomForHtml(html, 'p,4&&Text').replace('◎影片', '');\n    var 分类 = parseDomForHtml(html, 'p,7&&Text').replace('◎影片', '');\n    var 状态 = parseDomForHtml(html, 'p,10&&Text').replace('◎', '');\n    var 图片 = parseDom(html, '.card-body&&a&&img&&src');\n    var 简介 = parseDomForHtml(html, 'p,15&&Text').replace('简介：', '');\n    var Color = \"#f13b66a\";\n    var Color1 = \"#098AC1\";\n\n    function getHead(title) {\n        return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n    }\n    let line_model = 8;\n    let line_type_model = 'blank_block';\n\n    d.push({\n        title: 主演 + '\\n' + 导演,\n        desc: 分类 + '\\n' + 状态,\n        pic_url: 图片,\n        url: 图片,\n        col_type: 'movie_1_vertical_pic_blur',\n        extra: {\n            gradient: true\n        }\n    });\n    d.push({\n        title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n        url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n        col_type: 'text_1'\n    });\n} catch (e) {}\nfor (let i = 0; i < 5; i++) {\n    d.push({\n        col_type: \"blank_block\"\n    })\n}\nif (getVar(\"ms\") == \"1\") {\n    var Color = \"red\";\n} else {\n    var Color = \"#098AC1\"\n}\n\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    };\n    d.push({\n        col_type: 'line_blank'\n    })\n};\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n};\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\n  \\n  var urls = pdfh(request(input), '#player||#video&&script&&Html');\\n   var url = urls.match(/base64decode\\\\(\\\"(.*?)\\\"/)[1];\\n url = unescape(base64Decode(url));\\n    var pn = urls.match(/pn=\\\"(.*?)\\\"/)[1]   \\n    var vid = urls.match(/vid=\\\"(.*?)\\\"/)[1]  \\n    if (pn == 'ccyun') {\\nvar url ='https://datas-s8pwfqdu9yystn90fb----------------cache.haozhansou.com/'+url;     \\nreturn url;\\n  } \\n   else  { \\nvar url = request('https://auete.com/ass.php?url=dp&vid='+vid+'&vfrom=0&vpart=0').match(/video\\\":\\\\[\\\"(.*?)\\\"/)[1].replace(/\\\\\\\\/g,'')  \\nreturn url+';{Origin@https://auete.com}'\\n}\\n});\"}]","proxy":"","icon":"https://auete.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar playhtml = request('https://m.4pcc.com' + pdfh(html, '.btn-primary&&href'));\nvar conts = pdfa(playhtml, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length;\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title);}","title":"玄天影视🤡","author":"缘分","version":0,"type":"video","url":"https://m.4pcc.com/show/2--------fypage---.html","col_type":"blank_block","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/list(\\/\\d+)\\.html/, 'show$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(fetch('hiker://page/sm')).rule);\n//一级页面\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: pd(list[j], 'a&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#',\n col_type: \"movie_3\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-vodlist&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n            pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://so.4pcc.com/search/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//视频标题\nvar title = parseDomForHtml(html, 'h1&&Text');\n//剧情简介\nvar des_desc = parseDomForHtml(html, '.detail-sketch&&Text').replace('详情', '[收起部分]', '');\n//视频封面\nvar des_pic = parseDom(html, '.lazyload&&data-original');\n\n\n\nvar playhtml = request('https://m.4pcc.com' + pdfh(html, '.btn-primary&&href'));\n\n//线路名列表\nvar arts = parseDomForArray(playhtml, '.dropdown-menu&&li');\n//选集列表\nvar conts = parseDomForArray(playhtml, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar tabs = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('youku', '优酷').replace('qq', '腾讯').replace('qiyi', '爱奇艺'))\n}\n\n//二级新样式（已封装断插，变量名lazy）\nconst hd = requireCache(\"http://hiker.nokia.press/hikerule/rulelist.json?id=2968&v=1\", 24);\n\n\n\nhd(d, {\n    //显示的白色大字\n    大字: title,\n    //片名搜索用\n    片名: title,\n    //图片一定不要加Referer\n    图片: des_pic,\n    //描述里用<br>换行\n    描述: parseDomForHtml(html,\n        '.stui-content__detail&&p,1&&Text').substring(0, 33) + '<br>' + parseDomForHtml(html,\n        '.stui-content__detail&&p&&Text').substring(0, 33) + '<br>' + des_desc,\n})\n\n//技术支持:追剧君,图标支持:蓝莓\n//图标\nfor (let i = 0; i < 5; i++) {\n    d.push({\n        col_type: \"blank_block\"\n    })\n}\nif (getVar(\"ms\") == \"1\") {\n    var Color = \"red\";\n} else {\n    var Color = \"#098AC1\"\n}\n\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n    title: (getVar(\"ms\") == \"1\" ? getHead(\"正版断插\") : getHead(\"网站资源\")),\n    url: \"hiker://empty\" + `@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n    col_type: 'scroll_button',\n\n})\n\nfunction setTabs(tabs, taburl) {\n    for (var i in tabs) {\n        var tabname = tabs[i];\n        d.push({\n            title: getMyVar('当前线路名', tabs[0]) == tabs[i] ? '‘‘’’<strong><font color=\"#19B89D\">' + tabs[i] + '</front></strong>' : tabs[i],\n\n            col_type: 'scroll_button',\n            url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                putMyVar('当前线路名', tabname);\n                putMyVar(taburl, i)\n                refreshPage();\n                return 'hiker://empty'\n            }, tabname, taburl, i)\n        })\n    }\n}\ntry {\n    function setLists(lists, index) {\n        var list = lists[index];\n        // log('选集有：'+list.length+' · 线路有：'+tabs.length)\n        if (tabs.length > 1 || list.length > 20) {\n            var icon_s = 'http://82.156.222.77/weisyr/icon/';\n            if (getMyVar('选集排序') == 1) {\n                var avatar = icon_s + '正序.svg'\n            } else {\n                var avatar = icon_s + '反序.svg'\n            }\n            d.push({\n                title: getMyVar('当前线路名', tabs[0]) + \"<small><font color='grey'>\" + '\\t\\t共 ' + list.length + ' 集' +\n                    \"</font></small>\",\n                url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage();'hiker://empty'`,\n                col_type: 'avatar',\n                img: avatar\n            })\n            d.push({\n                col_type: 'line_blank'\n            });\n        }\n\n\n        for (let i = 0; i < 5; i++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n\n        eval(JSON.parse(fetch(\"hiker://page/lazy\")).rule)\n\n\n        function playLists() {\n            var jm = parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, '').replace(/预告/g, '📢');\n            if (list.length < 5) {\n                var col = 'text_3'\n            } else {\n                var col = jm.length > 5 ? 'text_3' : 'text_5'\n            }\n            d.push({\n                title: jm,\n                url: parseDom(list[j], 'a&&href') + lazy,\n                extra: {\n                    blockRules: ['m3u8', 'mp4', '.m4a', '.mp3', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg']\n                },\n                col_type: col\n            });\n        }\n        // 开始选集分区\n        addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区（list替换成你的选集数组）\n        var 选集数组 = list; //改\n        if (选集数组.length > 26) {\n            //设置每区选集数目\n            var page_number = 25;\n            var star = getMyVar('分集起', '1');\n            var end = getMyVar('分集终', JSON.stringify(page_number));\n            var total = Math.ceil(选集数组.length / page_number);\n            var catalogue = []\n            for (let i = 0; i < total; i++) {\n                catalogue += i * page_number + ',';\n                catalogue = catalogue.split(',');\n            }\n            for (let i = 0; i < 8; i++) {\n                d.push({\n                    col_type: \"blank_block\"\n                })\n            }\n            for (var i = 0; i < catalogue.length - 1; i++) {\n                var total1 = parseInt(catalogue[i]) + 1;\n                var total2 = parseInt(catalogue[i + 1]);\n                if (i == (catalogue.length - 2)) var total2 = 选集数组.length;\n                d.push({\n                    title: star == total1 ? '‘‘' + total1 + '-' + total2 + '’’' : total1 + '-' + total2,\n                    url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                        putMyVar('分集起', total1);\n                        putMyVar('分集终', total2);\n                        refreshPage();\n                        return 'hiker://empty'\n                    }, total1, total2),\n                    col_type: 'scroll_button'\n                });\n            }\n            if (getMyVar('选集排序') == 1) {\n                for (var j = end - 1; j >= star - 1; j--) {\n                    // 打印选集列表\n                    playLists() //改\n                }\n            } else {\n                for (var j = star - 1; j < end; j++) {\n                    // 打印选集列表\n                    playLists() //改\n                }\n            }\n        }\n        // 结束选集分区\n        else {\n            if (getMyVar('选集排序') == 1) {\n                for (var j = list.length - 1; j >= 0; j--) {\n                    playLists()\n                }\n            } else {\n                for (var j = 0; j < list.length; j++) {\n                    playLists()\n                }\n            }\n        }\n\n        d.push({\n            title: '\\n',\n            url: 'hiker://empty',\n            col_type: 'rich_text'\n        });\n    }\n} catch (e) {}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getMyVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"    ","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy1 = $(\\\"\\\").lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\nlog(html)\\n    var url = html.url;\\n    var fr = html.from;\\n    if (url.match(/m3u8|mp4|\\\\/tos/)) {\\n\\n        return url\\n    } else if (/qq.com|iqiyi|youku|mgtv|bili/.test(url)) {\\n\\n        \\n\\n        return v_decode(url, 'https://jsonjx.110353.com/dmplayer/jxplayer.php?v=')\\n\\n    } else {\\n        const {\\n                        lazyParse\\n                    } = $.require(\\\"hiker://page/globalParse?rule=\\\\u9053\\\\u957f\\\\u4ed3\\\\u5e93Pro\\\");\\n\\n                    return lazyParse(input)\\n    }\\n\\n\\n});\\n\\n\\n\\nvar lazy2 = $(\\\"\\\").lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var url = html.url;\\n    var fr = html.from;\\n    eval(\\\"var config =\\\" + fetch(\\\"hiker://files/cache/MyParseSet.json\\\"));\\n    eval(fetch(config.cj));\\n    if (url.match(/m3u8|mp4|\\\\/tos/)) {\\n        return url + '#isVideo=true#'\\n    } else if (fr.match(/leduo/)) {\\n        return 'x5WebView://https://api.leduotv.com/wp-api/ifr.php?vid=' + url\\n    } else if (url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|letv|le.com|pptv|migu|m1905/)) {\\n\\n        return aytmParse(url)\\n    } else if (url.indexOf(\\\"RongXingVR\\\") > -1) {\\n        showLoading(\\\"正在进行断插解析，请稍候...\\\");\\n        try {\\n            return ParseS['ltnb(通用函数)'](url)\\n        } catch (e) {\\n            return ParseS['xfyun(通用函数)'](url)\\n        }\\n    }\\n});\\n\\nvar lazy = (getVar(\\\"ms\\\") == \\\"1\\\" ? lazy2 : lazy1)\"},{\"col_type\":\"movie_3\",\"name\":\"分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"http://api.btstu.cn/getfav/api.php?url=https://m.4pcc.com"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar title = pdfh(html, '.video-detail&&h2&&span&&Text');\nsetResult(title);","title":"石榴电影🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##https://hei19.com/catalog?column=1&sort=1&per_page=72&page=fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n分类颜色 = getRangeColors()\n大类定位 = '.filter&&.filter-list'\n拼接分类 = ''\n小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\n分类标题 = 'a&&Text'\n分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/column=(.*)/, 'column=$1&page='+page)\n}\n//log(true_url);\nvar html = request(true_url)\neval(JSON.parse(fetch('hiker://page/sm')).rule);\n    var lists=pdfh(html, 'body&&script&&Html').match(/cover\":\".*?\"/g);\n    var list = pdfa(html, '.media-list-2&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.tag&&Text'),\n            pic_url: lists[j].match(/(http.*?)\"/)[1],\n            url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\nvar lists=pdfh(getResCode(), 'body&&script&&Html').match(/pic\":\".*?\"/g);\n    var list = pdfa(getResCode(), '.search-list&&a');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], '.pro&&Text'),\n            pic_url: lists[j].match(/(http.*?)\"/)[1],\n            url: pd(list[j], 'a&&Text') + \"#immersiveTheme#\"\n    \n        })\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://hei19.com/search?type=1&keywords=**&page=fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar conts = pd(html, 'body&&script&&Html').match(/data\":[\\s\\S]*?\\}\\]/g);\nvar lists = [];\nfor (var i in conts) {\n    lists.push(conts[i].split(\"},{\"))\n}\ntry {\nvar pic = pd(html, 'body&&script&&Html').match(/pic\":\"(.*?)\"/)[1];\nd.push({\n    title: pdfh(html, '.video-desc-item&&div&&Text').substring(0, 26) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'').substring(0, 18),\n    desc: pdfh(html, '.video-desc-type&&Text'),\n    img: pic,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    img: pd(html, 'body&&script&&Html').match(/pic\":\"(.*?)\"/)[1] +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'Text').match(/episode\":(\\d+),/)[1],              \n            url: pd(list[j], 'Text').match(/url\":\"(.*?)\"/)[1] ,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"initConfig({\n    依赖: 'https://pastebin.com/raw/0j3YrGUK',\n    更新间隔: 48\n});","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://www.hei17.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.stui-content__playlist')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length;\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title);}","title":"一起看🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##https://www.17kty.com/show/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list'\nconst 小类定位 = 'body&&a:not(:matches(首页|排行榜|资讯|专题|更新))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/type(\\/\\d+)/, 'show$1-----------.html').replace('---.html', +page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = fetch(true_url)\n\nvar 列表 = '.stui-vodlist&&li'\nvar 标题 = 'a&&title'\nvar 描述 = '.lazyload&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\nrequireCache('https://pastebin.com/raw/D2iimVHk');\n一级1.A()","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.stui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], '.lazyload&&Text'),\n            pic_url: parseDom(list[j], '.lazyload&&data-original') + '@Referer=',\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.17kty.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (!urls[i].includes(\"url=\") && urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]\n        }\n    }\n}))\n\nvar lazy2 = $(\"\").lazyRule(() => {\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\n    var jsurl = player.url;\n    if (player.encrypt == '1') {\n        var jsurl = unescape(jsurl);\n    } else if (player.encrypt == '2') {\n        var jsurl = unescape(base64Decode(jsurl));\n    };\n    var from = player.from;\n\n    var jx = \"https://z1.m1907.cn/?jx=\";\n\n    var parse = jx + jsurl;\n    log('\\n线路：' + from + '\\n' + '解析接口：' + jx + '\\nURL：' + jsurl);\n    showLoading(\"网页嗅探中,请稍后...\");\n    var video = 'x5Rule://' + parse + '@' + $.toString(() => {\n        var urls = _getUrls();\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        for (var i in urls) {\n            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                //fy_bridge_app.log(urls[i])\n                if (/mgtv|sohu/.test(urls[i])) {\n                    return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                } else if (/bili/.test(urls[i])) {\n                    return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                } else {\n                    return urls[i]\n                }\n            }\n        }\n    }) //video\n    return video\n});\n\nvar lazy1 = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    return html.url\n});\n\nvar lazy = (getVar(\"ms\") == \"1\" ? lazy2 : lazy1)\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('超清不卡，推荐NO.1', '').replace('资源广告请无视。', '').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 分类 = parseDomForHtml(html, '.stui-content__detail&&p,1&&Text').replace('类型：', '');\n\nvar 主演 = parseDomForHtml(html, '.stui-content__detail&&p,2&&Text').substring(0, 15);\n\nvar 导演 = parseDomForHtml(html, '.stui-content__detail&&p,0&&Text');\n\nvar 状态 = parseDomForHtml(html, '.stui-content__detail&&p,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.stui-content__detail&&p,4&&Text').replace('简介：', '');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n    d.push({\n        col_type: \"blank_block\"\n    })\n}\nif (getVar(\"ms\") == \"1\") {\n    var Color = \"red\";\n} else {\n    var Color = \"#098AC1\"\n}\n\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n    title: (getVar(\"ms\") == \"1\" ? getHead(\"♥️探嗅\") : getHead(\"💎免嗅\")),\n    url: \"hiker://empty\" + `@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n    col_type: 'scroll_button',\n\n})\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">▲</font></small>' + '<small><font color=\"#ff4c00\">▼</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">▲</font></small>' + '<small><font color=\"#0aa344\">▼</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.17kty.com/statics/img/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.sort-item')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nvar title = pdfh(list[i,i-1], 'a&&Text');\nif (/集|第|期/.test(title)){\nsetResult(\"更新至: \" + title);}","title":"看看铺🤡","author":"缘分","version":0,"type":"video","url":"https://www.kankanpu.com/vshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.box&&.library-box'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")){\ntrue_url = true_url.replace(/vt(\\/\\d+)\\.html/, 'vshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: pd(list[j], 'img&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.module-items&&.module-search-item');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'h3&&a&&title'),\n       desc:parseDomForHtml(list[j], '.video-info-aux&&Text'),\n       pic_url: parseDom(list[j], '.lazyload&&data-original')+'@Referer=',\n       url: parseDom(list[j], 'h3&&a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.kankanpu.com/vsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nd.push({\n    desc: '330&&float',\n    col_type: 'x5_webview_single'\n});\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.module-tab-content&&span');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('超清不卡，推荐NO.1','').replace('资源广告请无视。','').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.sort-item');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').substring(0,15).replace(/\\//g,'  ');\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,'  ');\n\nvar 分类 = parseDomForHtml(html, '.video-info-items,2&&Text').replace(/\\//g,' ');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演,\n    desc: 分类 + '\\n' + 状态,\n    pic_url: 图片,\n    url: 图片,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\nif(getVar(\"ms\")==\"1\"){\nvar Color =\"red\";\n}else{\nvar Color=\"#098AC1\"\n}\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n \n\n   d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    var from = html.from\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    if (/m3u8|mp4/.test(url)) {\\n        return url\\n    }\\n     else {\\n        return $.require('hiker://page/drDmLazy.js?rule=dm盒子').dmLazy();\\n\\n    }\\n});\"}]","proxy":"","icon":"https://www.kankanpu.com/template/movieA/static/picture/logo.png"},{"last_chapter_rule":"js:\nrequireCache('https://pastebin.com/raw/D2iimVHk');\nvar 集数总列表 = '.bd&&ul'\nvar 集数列表 = 'body&&a'\n章节.A()","title":"片库🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##https://www.pkmp4.com/ms/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.menu_bottom&&.over-auto'\nconst 拼接分类 = '.list-box&&dl'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace(/vt(\\/\\d+)\\.html/, 'ms$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n//一级页面\nvar list = pdfa(html, '.pic-list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], 'span&&Text'),\n        img: pd(list[j], 'img&&src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\n\ntry {\n    var list = parseDomForArray(html, '.sr_lists&&dl||li');\n\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a,1&&Text'),\n            desc: parseDomForHtml(list[j], '.ss1&&Text'),\n            pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.pkmp4.com/vs/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar arts = pdfa(html, '.py-tabs&&li');\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\nvar conts = pdfa(html, '.bd&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.text-overflow&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '.main-ui-meta&&div,1&&Text').substring(0, 18),\n    desc: pdfh(html, '.main-ui-meta&&div,7&&Text'),\n    img: pd(html,\n        '.img&&img&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'.img&&img&&src') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\n        return lazyParse(input);\n    }\n});\n\nvar listt = pdfa(html, '#url&&li:has(p)');\nfor (var j in listt) {\n    d.push({\n        title: '‘‘' + pdfh(listt[j], 'a&&title'),\n        url: pd(listt[j], 'a&&href'),\n        col_type: 'text_1'\n    });\n}\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://www.pkmp4.com/static/images/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, '.ji-box&&ul')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"小千影视🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##http://www.nikucms.com/vod/cid/1/page/fypage.shtml","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.classification-type&&li'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/list(\\/\\d+)/, 'vod/cid$1.shtml').replace('.shtml', '/page/'+page + '.shtml')}\n\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.videoul&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], '.videoul-title&&Text'),\n        desc: pdfh(list[j], '.videoul-tips&&Text'),\n        img: pd(list[j], 'img&&lay-src||src')+ '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = eval(html).info;\nfor (var j in list) {\n//var pic = pdfh(request('http://www.nikucms.com/snh_'+list[j].id+'.shtml'),'.vod-info-pic&&img&&src');\n    d.push({\n        title: list[j].title,\n        desc: list[j].type,\n        /*pic_url: 'http://www.nikucms.com'+pic ,*/\n        url: 'http://www.nikucms.com/snh_'+list[j].id+'.shtml'+ '#immersiveTheme#'\n    });\n}\nsetResult(d)","search_url":"http://vip.nidecms.com/api.php?out=jsonp&wd=**","group":"视频","detail_col_type":"text_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nd.push({\n    desc: '330&&float',\n    col_type: 'x5_webview_single'\n});\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.zu-box&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text').replace('超清不卡，推荐NO.1','').replace('资源广告请无视。','').split('解析')[0])\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, '.ji-box&&ul');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 主演 = parseDomForHtml(html, 'p,2&&Text').substring(0,15);\n\nvar 导演 = parseDomForHtml(html, 'p,1&&Text');\n\nvar 分类 = parseDomForHtml(html, 'p&&Text');\n\nvar 状态 = parseDomForHtml(html, 'p,3&&Text');\n\nvar 图片 = parseDom(html, '.pic&&img&&src');\n\nvar 简介 = parseDomForHtml(html, '.text&&Text').replace('简介：','');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 主演 + '\\n' + 导演,\n    desc: 分类 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < 5; i++) {\n\t\td.push({\n\t\t\tcol_type: \"blank_block\"\n\t\t})\n\t}\nif(getVar(\"ms\")==\"1\"){\nvar Color =\"red\";\n}else{\nvar Color=\"#098AC1\"\n}\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</front>';\n}\nd.push({\n   title:(getVar(\"ms\")==\"1\"?getHead(\"♥️探嗅\"):getHead(\"💎免嗅\")),\n url:\"hiker://empty\"+`@lazyRule=.js:putVar('ms',getVar('ms')=='1'?'0':'1');refreshPage();'toast://已切换模式'`,\n  col_type: 'scroll_button',\n\n})\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small></small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\nvar list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                        blockRules: ['.m4a', '.mp3', '.mp4', '.flv', '.avi', '.3gp', '.mpeg', '.wmv', '.mov', '.rmvb', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg','cnzz']\n                    },\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule((MY_HOME) => {\\nvar id = input.match(/(\\\\d+)\\\\.shtml/)[1];\\nvar url = JSON.parse(request('http://www.nikucms.com/index.php/ajax/vodurl',{redirect: false,\\n         withHeaders: true,\\n         body: \\\"jid=\\\" + id,\\n         method: 'POST'})).body\\nurl = JSON.parse(url).data.playurl;\\nurl = pd(request(MY_HOME+url),'#infclsoapc&&a&&href').replace(/.*url=/,'');\\nlog(url)\\n    return url\\n},MY_HOME);\"}]","proxy":"","icon":"http://www.nikucms.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, '.linkbox&&.l1')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"高分电影🤡","author":"缘分","version":0,"type":"video","url":"hiker://empty##http://www.gaofen1.com/s.php?key=1___&p=fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.cid'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|全部分类|下载))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url+'&p='+page\n}\nvar html = fetch(true_url)\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\nvar list = parseDomForArray(html, '.list&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),\n        desc: parseDomForHtml(list[j], 'i&&Text'),\n        pic_url: base64Decode(parseDomForHtml(list[j], 'li&&p')).replace('//pic','http://pic')+ '@Referer=',\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar key = MY_URL.split(\"##\")[1];\nvar key = base64Encode(key);\nvar html = request('http://www.gaofen1.com/s.php?key=_'+key+'__&p='+MY_PAGE);\nvar list = parseDomForArray(html, '.list&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&Text'),\n        desc: pdfh(list[j], 'i&&Text'),\n        pic_url: base64Decode(pdfh(list[j], 'li&&p')).replace('//pic','http://pic')+ '@Referer=',\n        url: 'http://www.gaofen1.com'+parseDomForHtml(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d)","search_url":"hiker://empty##**##fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, '.playlist&&ul&&.l1');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, '.linkbox&&.l1');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.infodetail&&p,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '.infodetail&&p&&Text').substring(0, 18),\n    desc: pdfh(html, '.infodetail&&p,3&&Text'),\n    img: base64Decode(parseDomForHtml(html,\n        'img&&p')).replace('//pic', 'http://pic') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\n} catch (e) {\nd.push({\n    img: pd(html, \n'') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var url = request(input).match(/decode\\\\(\\\"(.*?)\\\"/)[1] \\n        url = unescape(base64Decode(url));   \\n        return url\\n}, MY_HOME)\"}]","proxy":"","icon":"http://www.gaofen1.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar conts = pdfa(html, 'body&&.module-play-list-content')[0];\nvar list = pdfa(conts, 'body&&a');\nvar i = list.length\nif (i>1){\nvar title = pdfh(list[i,i-1], 'a&&Text');\nsetResult(\"更新至: \" + title)}","title":"麻花视频🤡","author":"缘分","version":0,"type":"video","url":"https://www.mhyyy.com/show/mhdy/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.navbar-items'\nconst 拼接分类 = 'body&&.module-item-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|今|热))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url.replace('vodtype', 'show').replace('.html', /page/ + page + '.html')\n}\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\n\n//一级页面\nvar list = pdfa(html, '.module-items&&a');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = pdfa(html, 'body&&.module-card-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'strong&&Text'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","search_url":"https://www.mhyyy.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar arts = pdfa(html, 'body&&.module-tab-item');\n\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(pdfh(arts[i], 'Text'))\n}\n\nvar conts = pdfa(html, 'body&&.module-play-list-content');\n\nvar lists = [];\nfor (var i in conts) {\n    lists.push(pdfa(conts[i], 'body&&a'))\n}\ntry {\nd.push({\n    title: pdfh(html, '.module-info-item,3&&Text').replace(/\\//g,' ').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n             pdfh(html,\n'.module-info-item,1&&Text').substring(0, 18).replace(/\\//g,' '),\n    desc: pdfh(html, '.module-info-item,4&&Text'),\n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n} catch (e) {\nd.push({\n    \n    img: pd(html, \n'.lazyload&&data-original') +'@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',extra: {gradient: true}\n});\n}\n eval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfor (var b = 0; b < 2; b++) {\nd.push({\n    col_type: 'big_blank_block'\n})\n}\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'scroll_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text')\n                .replace(/第(\\d+)集/, '$1')\n                .replace('第', '')\n                .replace('期', ''),\n            url: pd(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME)=> {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\nif (/m3u8|mp4|flv/.test(url)) {\\n        return url\\n}else{\\n    return $.require('hiker://page/dmLazy.js?rule=dm盒子').dmLazy();\\n}\\n}, MY_HOME)\"}]","proxy":"","icon":"https://www.mhyyy.com/upload/mxcms/20220702-1/c78d585170f6446576c7fc1c4d0ca443.png"},{"last_chapter_rule":"","title":"西影网片库","author":"家娃","version":20221123,"type":"video","url":"https://www.1958xy.com/page/listFilmLibraryWithCondition?SEARCH_TYPE=fyAll&TAGS=&PUBLISH_COUNTRY=&PUBLISH_DATE=&startIndex=fypage@-1@ ","col_type":"movie_3","class_name":"电影&电视剧&纪录片","class_url":"movie&TVplay&documentary","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar html = getResCode()\n\nif (html.indexOf('暂无数据') == -1) {\n    var json = JSON.parse(html).varList;\n    for (var j in json) {\n        var item = json[j];\n        d.push({\n            title: item.TITLE,\n            desc: item.DURATION,\n            pic_url: item.COVERURL + '@Referer=',\n            extra: {\n                type: MY_RULE.class_url,\n                videoId: item.VIDEOID,\n                mytitle: item.TITLE,\n                imgUrl: item.COVERURL,\n                mark: item.DESCRIPTION,\n                toStar: item.TOSTAR,\n                videoCount: item.videoCount\n            },\n            url: 'https://www.1958xy.com/player/toPlay/' + item.VIDEOID + \"#immersiveTheme#\"\n        });\n    }\n\n    setResult(d);\n}","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n // log(html);\nvar list = parseDomForArray(html,'body&&.sk-result-list&&.sk-mod');\n     \n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, '.spc-lv-1&&Text'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  '',//parseDomForHtml(L, '.module-info-item-content,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.row-ellipsis&&Text').replace(/简介:/g,' '),\n            img: parseDom(L, 'img&&src'),\n        });\n    }\nsetResult(d)","search_url":"https://www.1958xy.com/search?currentPage=fypage&showCount=10&keywords=**;post;utf-8","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n //log(html)\nvar lists = [];\nvar urls = [];\nvar tabs = [];\ntabs.push('播放列表');\n\nif (MY_PARAMS.type == 'movie') {\n    urls.push('<a cur_vid=\"'+ MY_PARAMS.videoId+'\" href=\"https://www.1958xy.com/player/toPlay/' + MY_PARAMS.videoId + '\">' + MY_PARAMS.mytitle + '</a>');\n    lists.push(urls)\n} else {\n    var conts = parseDomForArray(html, 'body&&#vItemList||.wangqi||.listBoxContent');\n    for (var i in conts) {\n        lists.push(parseDomForArray(conts[i], 'body&&a'))\n    }\n}\n //log(lists)\nvar 导演 = '';\n\nvar 主演 = MY_PARAMS.toStar ? '主演：' + MY_PARAMS.toStar : '主演：未知';\n\nvar 状态 = '';\n\nvar 更新 = MY_PARAMS.videoCount ? '更新：至' + MY_PARAMS.videoCount + '集' : ' ';\n\nvar 图片 = MY_PARAMS.imgUrl?MY_PARAMS.imgUrl + '@Referer=':'';\n\nvar 简介 = MY_PARAMS.mark?MY_PARAMS.mark:' ';\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\n\nlet line_model = 8;\nlet line_type_model = 'blank_block';\n\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                var mtitle = parseDomForHtml(list[j], 'a&&v_title||Text').replace(/第|集|话|期/g, '');\n \n                if (mtitle.indexOf(' ')) {\n                    mtitle = mtitle.split(' ')[1]?mtitle.split(' ')[1]:mtitle.split(' ')[0];\n                }\n          \n                d.push({\n                    title: mtitle,\n                    url: 'video://' + parseDom(list[j], 'a&&cur_vid'),\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                var mtitle = parseDomForHtml(list[j], 'a&&v_title||Text').replace(/第|集|话|期/g, '');\n            \n                if (mtitle.indexOf(' ')) {\n                    mtitle = mtitle.split(' ')[1]?mtitle.split(' ')[1]:mtitle.split(' ')[0];\n                }\n                d.push({\n                    title: mtitle,\n                    url: 'video://' + parseDom(list[j], 'a&&cur_vid'),\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://img.1958xy.com/img/ico/favicon.ico"},{"last_chapter_rule":"","title":"苦瓜影视.D🐺","author":"家娃","version":20221111,"type":"video","url":"hiker://empty##https://www.kgysw.com/vodshow/9666666v--------fypage---/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n    var d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-box'\nconst 小类定位 = 'body&&a:not(:matches(首页|今日更新|写真|APP|热榜|地址))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\//, 'vodshow/$1-----------/').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1')\n //log(page)\n //log(true_url)\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&title'), //标题\n        desc: parseDomForHtml(list[j], '.module-item-note&&Text'), //描述\n        pic_url: parseDom(list[j], '.lazyload&&data-original'), //图片\n        url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\" //链接\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n  //log(html);\nvar list = parseDomForArray(html,'body&&.module-items&&.module-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.module-info-item-content,0&&Text').replace(/\\//g,' '),\n            content: parseDomForHtml(L, '.module-info-item-content,1&&Text').replace(/简介：/g,' '),\n            img: parseDom(L, '.lazyload&&data-original'),\n        });\n    }\nsetResult(d)","search_url":"https://www.kgysw.com/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\nvar lazy = $('').lazyRule(() => {\n    function toUrl(playUrl) {\n        if (/mgtv|sohu/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n        } else if (/bili/.test(playUrl)) {\n            return playUrl + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n        } else if (/ixigua/.test(playUrl)) {\n            return playUrl + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n        } else {\n            return cacheM3u8(playUrl);\n        }\n    }\n\n    var playUrl = \"\";\n    try {\n        var html = request(input, {});\n        var player_data = JSON.parse(html.match(/r player_.*?=(.*?)</)[1]);\n        var fro = player_data.from;\n        playUrl = player_data.url;\n\n        if (player_data.encrypt == '1') {\n            playUrl = unescape(player_data.url);\n        } else if (player_data.encrypt == '2') {\n            playUrl = unescape(base64Decode(player_data.url));\n        };\n        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n        var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n        if (!exclude.test(playUrl) && contain.test(playUrl)) {\n            return toUrl(playUrl);\n        }\n\n        if (fro != 'bilibili') {\n            var apiUrl = 'https://jx.quankan.app/api.php';\n            var jxHtml =request(apiUrl, {\n                headers: {\n                    \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0)\"\n                },\n                body: \"url=\" + playUrl + \"&ac=jx\",\n                method: \"POST\"\n            });\n\t\t\t//log(jxHtml)\n            var json = JSON.parse(jxHtml);\n            if (json.code == 200) {\n                return toUrl(json.url);\n            } else {\n                return 'toast://' + json.msg;\n            }\n        } else {\n            var jxUrl ='https://jx.iztyy.com/svip/?url='+playUrl;\n            log(jxUrl)\n            showLoading(\"正在进行检索，请稍候...\");\n            var video = 'x5Rule://' + jxUrl + '@' + $.toString(() => {\n                fba.log(fba.getUrls())\n                var urls = _getUrls()\n                var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.css/;\n                var contain = /\\.mp4|\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                for (var i in urls) {\n                    if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                         fy_bridge_app.log(urls[i])\n                        if (/mgtv|sohu/.test(urls[i])) {\n                            return urls[i] + \";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\";\n                        } else if (/bili/.test(urls[i])) {\n                            return urls[i] + \";{User-Agent@Mozilla/5.0&&Referer@https://www.bilibili.com}\";\n                        } else if (/ixigua/.test(urls[i])) {\n                            return urls[i] + \"#isVideo=true#\" + \"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\";\n                        } else {\n                            return urls[i]\n                        }\n                    }\n                }\n            });\n            return video;\n        }\n\n\n    } catch (e) {\n        setError(e);\n        return 'toast://嗅探异常，可能链接无法访问。'\n    }\n});\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'div&&data-dropdown-value'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content||.module-sorttab');\n\n//播放列表的列表名称的定位\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item:contains(导演：)&&Text');\n\n    var 主演 = parseDomForHtml(html, '.module-info-item:contains(主演：)&&Text');\n\n    var 更新 = parseDomForHtml(html, '.module-info-item:matches(上映：|更新：)&&Text');\n\n    var 状态 = parseDomForHtml(html, '.module-info-item:matches(集数：|备注：)&&Text');\n\n    var 图片 = parseDom(html, '.lazyload&&data-src||data-original');\n\n    var 简介 = parseDomForHtml(html, '.module-info-introduction-content||.video-info-content&&Text').replace('收起', '');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n},\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    extra: {\n    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n    jsLoadingInject: true\n},\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: \\\"🔍\\\",\\n        url: \\\"'hiker://search?rule=\\\" + MY_RULE.title + \\\"&s='+input\\\",\\n        desc: \\\"搜你想看...\\\",\\n        col_type: \\\"input\\\"\\n    });\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://www.kgysw.com/upload/mxprocms/20221104-1/21a9cc5509957ce27a5d64921c2afdfc.jpg"},{"last_chapter_rule":"","title":"789D♔","author":"道长&蓝莓果酱UX","version":2,"type":"other","url":"hiker://empty##https://789ys.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: '.nav-tabs',\n    子分类: 'ul&&li:not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","search_url":"https://789ys.com/search/**-------------.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情简介|日韩剧周榜单|日韩剧月榜单|国产剧月榜单|国产剧周榜单|榜单))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/55.png"},{"last_chapter_rule":"","title":"淘剧影院♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"http://m.huigutongying.cn/list/fyclass_fypage.html?order=fysort\n","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气","year_name":"","sort_url":"time&hit","year_url":"","find_rule":".stui-vodlist&&li;a&&title;.lazyload&&data-original;.pic-text&&Text;a&&href","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.thumb');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.huigutongying.cn/search.php?searchword=**;post","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar res ={};\nvar d=[];\ntry{\nvar thumb = parseDom(getResCode(), \".stui-content__thumb&&img&&data-original\");\nd.push({\n\t\t\ttitle: '线路预览'+' 共'+getResCode().match(/\\\"stui-content__playlist/g).length+'条线路',\n    desc:parseDomForHtml(getResCode(), \".stui-content__detail&&p,-1&&Text\"),\n    pic_url:thumb,\n\t\tcol_type: 'pic_1'\n});\n\nvar tabs=parseDom(getResCode(),'body&&.nav-tabs&&Html').match(/<li[\\s\\S]*?<\\/li>/g);\nvar conts=parseDom(getResCode(),'body&&.tab-content&&Html').match(/<ul class=\\\"stui-content__playlist[\\s\\S]*?<\\/ul>/g);\n//setError(conts.length);\n\nfor(var i = 0;i<conts.length;i++){\n  var list=conts[i].match(/<a.*?<\\/a>/g);\n\t\td.push({\n\t\t\ttitle:parseDomForHtml(tabs[i], \"body&&Text\"),\n\t\t\tcol_type: 'text_center_1'\n\t\t});\n//setError(list[0]);\n\n\t\tfor(var j = 0; j<list.length; j++){\n    //setError(parseDom(list[j], \"a&&href\"));\n\t\t\td.push({\n\t\t\t\ttitle:parseDomForHtml(list[j], \"a&&Text\"),\n      url:parseDom(list[j], \"a&&href\")+`@lazyRule=.js:var get =fetch(input,{})；；var js = parseDomForHtml(get,\".stui-player__video＆＆＆＆iframe＆＆＆＆src\")；；var jx = fetch(js,{headers:{'Referer':'http://www.anluyg.net/'}})；；if(jx.indexOf('ldgplayer')!=-1){if(jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0].indexOf('http')!=-1){jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0]；；}else{'http:'+jx.split(\"ldgurl = \\'\")[1].split(\"\\'\")[0]；；}}else if(jx.indexOf('id=\\\"vod\\\"')!=-1){jx.match(/http.*?m3u8/g)[0]；；}else if(jx.indexOf('DPlayer')!=-1){jx.match(/http.*?m3u8/g)[0]；；}else{if(input.indexOf('http')!=-1){input}else{'http:'+input}}`,\n      col_type: 'text_5'\n\t\t\t});\n   }\n}\n} catch (e) { }\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\n\nres.data=d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/81.png"},{"last_chapter_rule":"","title":"UU美剧D♔","author":"蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##https://www.uumjw.com/vshow/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".module-items&&.module-item;a&&title;img&&data-src;.module-item-text&&Text;a&&href.js:input +'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/page\\/(\\d+)\\.html/)[1];\n//true_url = 获取正确链接();\nif(!/page/.test(true_url)){\n    true_url = true_url.replace(/\\.html/,'/page/'+page+'.html')\n}\nelse{\ntrue_url = true_url.replace('/page\\/(\\d+)\\.html/','page/'+page+'.html')\n}\n\nlog(true_url);\nlet cates=打造动态分类([{\n  一级分类: 'body&&.library-list',\n        子分类: 'body&&a:not(:matches(直播))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL);\nparStr=\"body&&.module-list&&.module-search-item;img&&alt;img&&data-src;.video-info&&a&&Text;a,1&&href.js:input+'#immersiveTheme#';.video-info-main&&.video-info-item,2&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.uumjw.com/vsearch**/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nrequire(config.模板);\r\nlet parse={\n    title:'.video-info-items,1&&Text;.video-info-aux&&Text',\n    img:'.lazyload&&data-src',\n    url:'.lazyload&&data-src',\n    desc: '.video-info-item,5&&Text',\n    tabs:'.module-tab-content,0&&.tab-item',\n    lists:'body&&.sort-item,#id&&a',\n    tab_id:'',\r\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/36.png"},{"last_chapter_rule":"","title":"武德影视D♔","author":"道长&蓝莓果酱UX","version":1,"type":"other","url":"hiker://empty##http://www.wudeyy.com/list/2-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nMY_URL=MY_URL.split('##')[1];\nlet parStr=\".stui-vodlist&&li;a&&title;a&&data-original.js:input+'@Referer=';.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|专题|留言))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n},{\n    一级分类: '.nav-tabs',\n    子分类: 'ul&&li:not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nparStr=\".stui-vodlist__media&&li;a&&title;a&&data-original;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","search_url":"http://www.438kp.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'p.data,1&&Text;p.data,3&&Text',//图片右侧的文字，可以是影片名，主演等\n img:'.lazyload&&data-original',//图片\n url:'.lazyload&&data-original',//可以是影片链接，或者图片也行\n desc:'.desc&&Text',//一般主演，地区，影片评分等描述\n tabs:'body&&h3:not(:matches(猜你喜欢|剧情简介|日韩剧周榜单|日韩剧月榜单|国产剧月榜单|国产剧周榜单|榜单))',//列表\n lists:'.stui-content__playlist,#id&&li',//列表\n tab_id:'',//线路id，可不填,\n};\nvar 动态最新章节=true;\nvar 倒序=false;\r\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://www.wudeyy.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"麦豆TV♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"https://mdoutv.cc/vodshow/fyclass-fyarea-fysort---------fyyear.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&|#|&动作片&喜剧片&爱情片&科幻片&恐怖片&战争片&犯罪片&记录片&悬疑片&惊悚片&冒险片&|#|&港台剧&日韩剧&欧美剧&国创&","class_url":"1&13&3&4&|#|&6&7&8&9&10&12&20&21&22&30&31&|#|&14&15&16&27&","area_name":"全部&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/内地&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&热门&评分","year_name":"年代&2021&2020&2019&2018&2017&2016&2015&2014","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.myui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j], 'a&&title'),\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n       pic_url: parseDom(list[j], 'a&&data-original'),\n       url: parseDom(list[j],'a&&href')+\"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\n\nvar list = parseDomForArray(getResCode(), '.myui-vodlist__media&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n            content: parseDomForHtml(list[j], 'p,-2&&Text'),\n            img: parseDom(list[j], 'a&&data-original'),\n            url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n        });\n    }\r\nres.data = d;\r\nsetSearchResult(res);","search_url":"https://mdoutv.cc/vodsearch/-------------.html?wd=**&submit=","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar jsUrl = fetch('hiker://files/cache/MyParseSet.json');\n    if(jsUrl == '' || !fetch(JSON.parse(jsUrl).cj)){var jsFile = fetch('https://gitee.com/Duan-Nian/Dn/raw/master/hikerview/CloudParse-V2_Dn.js');}else{var jsFile = fetch(JSON.parse(jsUrl).cj);}eval(jsFile);\nvar lazy = `@lazyRule=.embed-responsive&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));var jsurl=player_aaaa.url;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|letv|le|alizy/)){var input=jsurl;` + lazy + `}else{jsurl}`;\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, '.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text').replace('分类：','').replace('地区：','').replace('年份：','');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, '.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,1&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.sketch&&Text').replace('简介：','');\n\nvar 图片链接 = setUrl;\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演 ,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url: 图片链接,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/movie/3.png"},{"last_chapter_rule":"","title":"5G影院♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"http://www.gggggyy.com/show/fyclass-fyarea----------fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"大陆&韩国&香港&台湾&日本","area_url":"大陆&韩国&香港&台湾&日本","sort_name":"","year_name":"2021&2020&2019&2018","sort_url":"","year_url":"2021&2020&2019&2018","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.stui-vodlist&&li');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], 'span,1&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original')+'@Referer=',\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'body&&.thumb');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.pic-text&&Text'),\n     pic_url: parseDom(list[j], 'a&&data-original'),\n     url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\n  });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.gggggyy.com/search/-------------.html?wd=**","group":"视频","detail_col_type":"text_2","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\n/*免嗅地址*/\n//通用匹配\nputVar(\"_x5\", $.toString(() => {\n    var urls = _getUrls()\n    for (var i in urls) {\n        if (urls[i].match(/\\.mp3|\\.mp4|\\obj|\\.m3u8/)) {\n            fy_bridge_app.log(urls[i])\n            return urls[i]+'#isVideo=true#'\n        }\n    }\n}))\nvar lazy = \"@lazyRule=.js:showLoading('动态解析中，请稍候');'x5Rule://'+input+'@' + getVar('_x5')\";\n\nvar tabs = [];\nvar conts = parseDomForArray(html, 'body&&.b');\nvar lists = [];\nfor (var i in conts) {\n    tabs.push(parseDomForHtml(conts[i], 'h3&&Text'))\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\ntry {\n    var fm = set_switch\n} catch (e) {\n    fm = MY_URL\n}\nd.push({\n    title: parseDomForHtml(html, '.stui-content__detail--h1&&Text').replace('地区', '\\n地区').replace('主演', '\\n主演'),\n    desc: parseDomForHtml(html, '.desc||.detail-content&&Text'),\n    pic_url: parseDom(html, '.lazyload&&data-original'),\n    url: fm,\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nfunction setTabs(tabs, vari) {\nd.push({\n    col_type: 'line'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\n        for (var i = 0; i < tabs.length; i++) {\n            var url = \"@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！'\";\n            d.push({\n                title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n                url: url,\n                col_type: 'scroll_button'\n            })\n\n        }\nd.push({\n    title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">~◆~正在使用逆序~◆~</span></b>' : '““””<b><span style=\"color: #1aad19\">~◆~正在使用正序~◆~</span></b>',\n    url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n    col_type: 'text_center_1'\n})\n}\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text').replace(/第(\\d+)集/,'$1').replace('第', '').replace('期', ''),\n            url: parseDom(list[j], 'a&&href') + lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\n\n//搜索，以下基本不需要修改。\nvar title = parseDomForHtml(html, 'h1&&Text').replace(/0.0/, \"\");\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nd.push({\n    title: '青豆',\n    url: 'hiker://search?s=' + title + '&rule=青豆',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/10.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '香情',\n    url: 'hiker://search?s=' + title + '&rule=资源网采集.xyq',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/3.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '搜索',\n    url: 'hiker://search?s=' + title + '&group=',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/7.png\",\n    col_type: 'icon_small_4'\n})\nd.push({\n    title: '影视',\n    url: 'hiker://search?s=' + title + '&rule=APP影视(P)',\n    pic_url: \"https://lanmeiguojiang.com/tubiao/q/4.png\",\n    col_type: 'icon_small_4'\n})\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\n\nd.push({\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_2","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/127.png"},{"last_chapter_rule":"","title":"艾迪影视♔","author":"蓝莓果酱UX","version":8,"type":"video","url":"https://aidi.tv/show/fyclass-fyarea-fysort------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&韩国&记录片","class_url":"dianying&lianxuju&zongyi&dongman&hanguodianying&jilu","area_name":"地区&大陆&香港&台湾&美国&法国","area_url":"&大陆&香港&台湾&美国&法国","sort_name":"时间&人气&评分","year_name":"年代&2021&2020&2019&2018","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018","find_rule":"js:\nrequire(config.模板);\nlet parStr=\".vodlist&& li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".vodlist&& li;a&&title;a&&data-original.js:input+'@Referer=';.pic_text&&Text;a&&href.js:input+'#immersiveTheme#'\";\n一级(parStr,true);","search_url":"https://aidi.tv/vsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\ntitle:'.hd_tit&&Text;.content_detail,1&&ul&&li,0&&Text',  \n img:'.lazyload&&data-original',\n url:'a&&href',\ndesc:'.data,1&&Text;.data,2&&Text;.data,3&&Text',\n content:'.full_text&&Text',\n tabs:'#NumTab&&a',\n lists:'body&&div.playlist_full,#id&&li',\n tab_id:''\n};\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//initConfig({分类颜色:'#D96715FF'});\ninitConfig({分类颜色:'#D96715FF',模板:'http://hiker.nokia.press/hikerule/rulelist.json?id=2505',\n样式:'滚动'\n});","pages":"[]","icon":"https://lanmeiguojiang.com/tubiao/ke/150.png"},{"firstHeader":"class","last_chapter_rule":"","title":"VIP影院.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://vipyingyuan.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vod/detail/','');\n//一级书签('vod/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索();","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//eval(JSON.parse(request('hiker://page/lazy?rule='+MY_RULE.title)).rule);\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=VIP影院"},{"firstHeader":"class","last_chapter_rule":"","title":"新叶子.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://m.6ygo.com/6ytype/2.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('6yvod/','');\n//一级书签('6yvod/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索();","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//eval(JSON.parse(request('hiker://page/lazy?rule='+MY_RULE.title)).rule);\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=爱疯"},{"firstHeader":"class","last_chapter_rule":"","title":"耐看点播.DR","author":"道长&Btea","version":1,"type":"video","url":"hiker://empty##https://www.nkdyw.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail/','');\n//一级书签('detail/',true);","searchFind":"js:\nMY_URL=MY_URL.split(\"##\")[1];\n//log(MY_URL);\nrequire(config.模板);\nlog('cookie:'+getMyVar('cookie'));\nvar html=获取源码(MY_URL);\nif(/输入验证码/.test(html)){\n    showLoading(\"验证码识别中，请稍等\");\n    let vcode=获取验证码('https://www.nkdyw.com/verify/index.html?');;\n    log('获取验证码:'+vcode);\n    let ret=提交验证码('https://www.nkdyw.com/index.php/ajax/verify_check?type=search&verify='+vcode);\n    hideLoading();\n    if(/\"msg\"/.test(ret)&&/\"ok\"/.test(ret)){\n       // refreshPage(true);\n        html=获取源码(MY_URL);\n        //log(html);\n        if(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'搜索验证已自动跳过，等待3秒后下拉刷新',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }\n    }else{\n        log('验证未通过:'+ret);\n        setResult([{\n                title:'验证未通过，请尝试重新搜索',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n    }\n}\nparStr=\"body&&.module-search-item;h3&&Text;.lazyload&&data-src;.video-info-aux&&Text;a&&href;.video-info-item&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.nkdyw.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var 验证码='https://www.nkdyw.com/verify/index.html?';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=耐看点播"},{"firstHeader":"class","last_chapter_rule":"","title":"花猫.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##http://www.huamaotv.com/type/fyclass-fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-menu-items',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(资讯))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/type/, 'show')\n            }\n        }\n},{\n    一级分类: 'body&&.scroll-content',\n    子分类: 'body&&a:not(:matches(片库|类型))',\n}]);\n设置(cates);\n自动一级(null,html,cates);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search-pg-fypage-wd-**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=W花猫"},{"firstHeader":"class","last_chapter_rule":"","title":"58电影院.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.58kdy.net/type/1.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/v-','');\n//一级书签('/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索();","search_url":"hiker://empty##/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//eval(JSON.parse(request('hiker://page/lazy?rule='+MY_RULE.title)).rule);\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=58电影院.DR"},{"firstHeader":"class","last_chapter_rule":"","title":"喵喵.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.2345ka.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/v/','/t/6.html');\n//一级书签('/v/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索();","search_url":"hiker://empty##/s/**/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//eval(JSON.parse(request('hiker://page/lazy?rule='+MY_RULE.title)).rule);\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=喵喵"},{"firstHeader":"class","last_chapter_rule":"","title":"4k极客影院.DR","author":"道长&xiao","version":2,"type":"video","url":"hiker://empty##https://www.i8k.cc/show/57/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n一级分类: '.navbar-items',\n    子分类: 'body&&.navbar-item:gt(0):lt(9)',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'show/$1')\n            }\n        }\n},{\n    一级分类: 'body&&.scroll-content',\n    子分类: 'body&&a',\n}]);\n设置(cates);\n自动一级(null,cates,html);\n//一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=4k极客影院"},{"firstHeader":"class","last_chapter_rule":"","title":"酷绘.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://m.kuhuiv.com/channel/tv.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('show','');\n//一级书签('show',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/so/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"//var ua=MOBILE_UA;\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=酷绘"},{"firstHeader":"class","last_chapter_rule":"","title":"酷客影院.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.kukefun.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vr/','');\n//一级书签('vr/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search.php?page=dypage&searchword=**&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=酷客影院"},{"firstHeader":"class","last_chapter_rule":"","title":"船长放映室.DR","author":"道长&Btea","version":1,"type":"video","url":"hiker://empty##https://www.4kcz.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n//一级书签('vodplay','');\n一级书签('voddetail','');\n//一级书签('/voddetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索();","search_url":"hiker://empty##/vodsearch/page/fypage/wd/**/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"var ua='Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.87 Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=船长放映室"},{"firstHeader":"class","last_chapter_rule":"","title":"酷绘.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##http://m.kuhuiv.com/filter/movie--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\nMY_URL=MY_URL.replace('hiker://empty##','');\n//log('MY_URL:'+MY_URL);\nvar true_url = getMyVar('header.url', MY_URL);\n//true_url = 获取正确链接();\nif(page>1){\n    true_url=true_url.replace(/(.*)---(.*)\\.html/,'$1'+page+'---$2.html')\n}\n//log('true_url:'+true_url);\nlet cates=打造动态分类([{\n    一级分类: '.fed-casc-list&&dl',\n    子分类: 'dl&&dd:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n自动一级(null,cates,html);\n//自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/so/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=酷绘"},{"firstHeader":"class","last_chapter_rule":"","title":"极客.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.i8k.cc/show/57/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\nMY_URL=MY_URL.replace('hiker://empty##','');\n//log('MY_URL:'+MY_URL);\ntrue_url = 获取正确链接();\n/*\nvar true_url = getMyVar('header.url', MY_URL);\nif(page>1){\n    true_url = true_url\n.replace('vodtype', 'show')\n.replace('.html', /page/+page+'.html')\n}\n*/\nlog('true_url:'+true_url);\nlet cates=打造动态分类([{\n    一级分类: 'body&&.navbar-items',\n    子分类: 'body&&li:has(a[href]):not(:matches(首页|APP|TG))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype/, 'show')\n            }\n        }\n},{\n    一级分类: 'body&&.module-class-items',\n    子分类: 'body&&.module-item-box&&a',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=8k"},{"firstHeader":"class","last_chapter_rule":"","title":"影视工厂.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.ysgc.cc/vodshow/1--------fypage---/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.replace('hiker://empty##','');\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page=MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.nav-list',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(首页|明星|资讯|敏感|直播))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n    一级分类: 'body&&.myui-screen__list',\n    子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索结果');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=影视工厂"},{"firstHeader":"class","last_chapter_rule":"","title":"达达龟.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://www.dadagui.me/","col_type":"movie_3_marquee","class_name":"1&2&3&4","class_url":"电影&电视剧&综艺&动漫","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('/voddetail/','true');\n//一级书签('/voddetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=达达龟"},{"firstHeader":"class","last_chapter_rule":"","title":"人人影视.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.rr520.cc/show/2--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.stui-header__menu',\n    子分类: 'body&&li:gt(0):lt(5)',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/list\\/(\\d+)/, 'show/$1-----------')\n            }\n        }\n},{\n    一级分类: '.stui-pannel_hd&&ul',\n    子分类: 'body&&a',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://www.rr520.cc/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=人人影视"},{"firstHeader":"class","last_chapter_rule":"","title":"火火影视.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.huohuo99.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".hl-vod-list&&li;a&&title;.hl-lazy&&data-original;span&&Text;a&&href\";\nvar page = MY_URL.match(/(.*)-(.*?)---.html/)[2];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.hl-nav',\n    子分类: 'ul&&li:gt(0):lt(6):not(:matches(^$))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------')\n            }\n        }\n},{\n    一级分类: 'body&&.hl-filter-list',\n    子分类: 'body&&a:not(:matches(^$))',\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('与|相关的共|个搜索结果');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=火火影视"},{"firstHeader":"class","last_chapter_rule":"","title":"小熊影视.DR","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.xxys520.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-menu-items',\n    子分类: 'ul&&li:gt(0):lt(6)',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------')\n            }\n        }\n},{\n    一级分类: 'body&&.scroll-content',\n    子分类: 'body&&a:not(:matches(片库))',\n}]);\n设置(cates);\n自动一级(null,cates,html);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('搜索|找到|部影视作品');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=小熊影视"},{"firstHeader":"class","last_chapter_rule":"","title":"骚火.Dr","author":"道长","version":2,"type":"video","url":"hiker://empty##https://saohuo.vip/list/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    //true_url = 获取正确链接();\n    page = MY_PAGE;\n    true_url = getMyVar('header.url', MY_URL);\nif(page>1){\ntrue_url=true_url.replace(/(\\d+)\\.html/,'$1-'+page+'.html')\n}\n    //log(true_url);\n    let cates = 打造动态分类([{\n        一级分类:'body&&.type_list',\n        子分类:'body&&li:matches(电影|电视剧)'\n    },{\n        一级分类:'body&&.top_bar',\n        子分类:'body&&a:not(:matches(^$))'\n    }\n    ]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"/movie/\",\"\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search.php?page=fypage&searchword=斗&searchtype=","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=骚火"},{"firstHeader":"class","last_chapter_rule":"","title":"影视录.Dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://yingshilu.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n        一级分类:'body&&.scroll-content',\n        子分类:'body&&a'\n    }]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"detail\",\"\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=影视录"},{"firstHeader":"class","last_chapter_rule":"","title":"酷视屋.Dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.kushiwu.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n     一级分类:'body&&.hl-nav',\n     子分类:'body&&li:has(a[href]):matches(电影|电视|综艺|动漫)',\n     分类链接:{\n         二次处理(u){\n             return u.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------');\n         }\n     }\n },{\n     一级分类:'body&&.hl-filter-list',\n     子分类:'body&&a'\n }]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"voddetail\",\"app\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n//自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=酷视屋.Dr"},{"firstHeader":"class","last_chapter_rule":"","title":"ikan234.Dr","author":"道长&Btea","version":2,"type":"video","url":"hiker://empty##https://www.ikan234.com/list/2-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n  一级分类: 'body&&.stui-header__menu',\n    子分类: 'body&&a:not(:matches(首页|留言))',\n},{\n    一级分类: 'body&&.stui-screen__list',\n    子分类: 'body&&a'\n},{\n    一级分类: 'body&&.nav-tabs',\n    子分类: 'body&&a'\n}]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"vod/\",\"gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=ikan234"},{"firstHeader":"class","last_chapter_rule":"","title":"6v电影.Dr","author":"道长&&Taoist","version":3,"type":"video","url":"hiker://empty##https://www.ai66.cc/index_fypage.html[firstPage=hiker://empty##https://www.ai66.cc/index.html]","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"磁力","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    //true_url = 获取正确链接();\n    page = MY_PAGE;\ntrue_url = getMyVar('header.url', MY_URL);\n//true_url = 获取正确链接();\nif(page>1){\n    if(!true_url.includes('index.html')){\n        true_url=true_url+'index_'+page+'.html'\n    }else{\n    true_url=true_url.replace('index.html',\n    'index_'+page+'.html');\n    }\n}\n//log('true_url:'+true_url);\n    关闭折叠=true;\n    let cates = 打造动态分类([{\n    一级分类: 'body&&#menus',\n    子分类: 'body&&li:has(a[href]):not(:matches(旧版|最新))',\n}]);\n    设置(cates);\n    let p='.masonry&&li;a&&title;img&&src;span&&Text;a&&href';\n    一级(p,true,cates,null,html);\n}\n混合(ui,\"/(\\\\d+)\\\\.html\",\"qian50\");","searchFind":"js:\nMY_URL=MY_URL.replace('hiker://empty##','');\nrequire(config.模板);\nlet page=MY_PAGE;\nif(page>1){\n    url=getMyVar('last_ss')+'&page='+parseInt(page-1)\n    html=获取源码(url)\n}else{\n    let ret=JSON.parse(post('https://www.ai66.cc/e/search/index.php',{body:MY_URL.split('#')[1],withHeaders:true}));\nlet url=ret.url;\n//log(url);\nputMyVar('last_ss',url);\n   html=ret.body;\n}\nif(/搜索时间间隔/.test(html)){\n            setResult([{\n                title:'网站有30秒搜索间隔，请等待',\n                col_type:'text_1',\n                url:'toast://疼！别点！'\n            }]);\n        }else{\nlet p='.masonry&&li;h2&&Text;img&&src;;a&&href';\n一级(p,true,null,null,html);\n}","search_url":"hiker://empty##/e/search/result/index.php?page=fypage@-1@&searchid=#show=title&tempid=1&tbname=article&mid=1&dopost=search&submit=&keyboard=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\ntitle:'.article_container&&h1&&Text',\nimg:'#post_content&&img&&src',\nurl:'#post_content&&img&&src',\n//desc:'',\ncontent:'#post_content&&p,1&&Text',\ntabs:'.context&&h3:not(:matches(网盘))',\n//tab_text:'body&&Text',\nlists:'.context&&.box:not(:matches(网盘|帮助)),#id&&a',\n//list_text:'body--a&&Text',\n//tab_id:'',\n\n线路处理:function(u){\n    return u.replace(/（无插件 极速播放）|（无需安装插件）/,'').trim()\n}\n};\nvar 动态最新章节=true;\nvar 倒序=false;\nvar 二级处理={\n    附加数据(html){\n        let a=pdfa(html,'.context&&td');\n        a=a.map((it)=>{\n            return {\n            title:pdfh(it,'Text'),\n            pic_url: 'http://pic.pdowncc.com/skin/img/6.jpg',\n            url:pdfh(it,'a&&href'),\n            col_type:'avatar'\n            }\n        });\n        return a\n    },\n    附加数据标题:'磁力'\n}\n//香免();\n//var lazy=';get';\n//二级(parse,lazy);\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.ai66.cc/favicon.ico"},{"firstHeader":"class","last_chapter_rule":"","title":"干饭.Dr","author":"道长&Btea","version":1,"type":"video","url":"hiker://empty##http://www.gfysys.com/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([{\n       一级分类:'body&&.stui-header__menu',\n       子分类:'body&&li:has(a[href]):matches(电影|剧集|综艺|动漫|记录)',分类链接:{\n         二次处理(u){\n             return u.replace(/vodtype\\/(\\d+)/, 'vodshow/$1-----------');\n         } }\n    },{\n        一级分类:'#screenbox&&.clearfix',\n        子分类:'body&&li:has(a[href]):not(:matches(^$))'\n    }]);\n    设置(cates);\n    自动一级('首页',html,cates);\n}\n混合(ui,\"voddetail\",\"gbook\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('相关的影片');","search_url":"hiker://empty##//vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=干饭"},{"firstHeader":"class","last_chapter_rule":"","title":"追剧啦.Dr","author":"道长&Btea","version":1,"type":"video","url":"hiker://empty##https://www.zhuiju.la/vodshow/1--------fypage---.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    //log(true_url);\n    let cates = 打造动态分类([{\n       一级分类:'body&&.library-box',\n       子分类:'body&&a' }]);\n    设置(cates);\n    自动一级('首页',html,cates);\n}\n混合(ui,\"voddetail\",\"label/web\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n//自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=追剧啦"},{"firstHeader":"class","last_chapter_rule":"","title":"🍏.dr","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.ipgys.com/vodtype/fyclass-fypage.html","col_type":"movie_3_marquee","class_name":"电影🦅&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&纪录片&动画片&奇幻片&电视📺&国产剧&港台剧&日韩剧&欧美剧&海外剧&动漫🐶&国漫&日韩漫&欧美漫&港台漫&动漫&综艺🐔","class_url":"1&6&7&8&9&10&11&12&22&33&34&2&13&14&15&16&5&4&27&28&29&30&31&3","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"https://www.ipgys.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=青苹果"},{"last_chapter_rule":"","title":"假多多切片","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://api.dd520.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=假多多"},{"firstHeader":"class","last_chapter_rule":"","title":"胖虎影视.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##http://www.panghuys.com/vodshow/fyclass.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    //page = MY_PAGE;\n    //true_url = getMyVar('header.url', MY_URL);\n    //if(page>1){true_url=true_url.replace(/(\\d+)\\.html/,'$1-'+page+'.html')}\n    true_url = 获取正确链接();\n    //log(true_url);\n    /*\n    可能用到: 一级分类 子分类 分类标题\n    分类链接:{\n        二次处理(u){\n        return u.replace(/type/,'show')}\n    }\n    */\n    let cates = 打造动态分类([{\n    一级分类:'',\n    子分类:'',\n    }]);\n    设置(cates);\n    自动一级(null,cates);\n}\n混合(ui,\"/detail/\",\"/gbook\");","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##http://www.panghuys.com/vodsearch/**-/page/fypage.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=胖虎影视"},{"firstHeader":"class","last_chapter_rule":"","title":"爱影视.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://aiyingshis.com/vodshow/id/fyclass.html","col_type":"movie_3_marquee","class_name":"蓝光&电影&电视剧&综艺&动漫","class_url":"37&1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=爱影视"},{"firstHeader":"class","last_chapter_rule":"","title":"5G影院.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://www.91dyy.tv/sw/fyclass-----------.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/sh/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=5G影院"},{"firstHeader":"class","last_chapter_rule":"","title":"私人影院.DR","author":"道长&☜無忧☞","version":1,"type":"video","url":"hiker://empty##https://soumk.com/vodtype/fyclass.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: '.nav-menu-items',\n    子分类: 'ul&&li:gt(0):lt(8):not(:matches(资讯))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/type/, 'show')\n            }\n        }\n},{\n    一级分类: 'body&&.scroll-content',\n    子分类: 'body&&a:not(:matches(片库|类型))',\n}]);\n设置(cates);\n自动一级(null,html,cates);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##https://soumk.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=私人影院"},{"last_chapter_rule":"","title":"量子","author":"道长","version":1,"type":"video","url":"hiker://empty##http://cj.lziapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=量子"},{"last_chapter_rule":"","title":"快播","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.kuaibozy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=快播"},{"last_chapter_rule":"","title":"大猫","author":"道长","version":1,"type":"video","url":"hiker://empty##http://app.ishen520.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=大猫"},{"last_chapter_rule":"","title":"阿里","author":"道长","version":1,"type":"video","url":"hiker://empty##http://aliys.cn:90/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=阿里"},{"last_chapter_rule":"","title":"暖光","author":"道长","version":1,"type":"video","url":"hiker://empty##https://app.bl210.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=暖光"},{"last_chapter_rule":"","title":"蟑螂","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=蟑螂"},{"last_chapter_rule":"","title":"网站","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.bcwzg.com/api.php/app/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=网站"},{"last_chapter_rule":"","title":"战狼","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.zhanlangbu.com/ruifenglb_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=战狼"},{"last_chapter_rule":"","title":"UU","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.uumjw.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=UU"},{"last_chapter_rule":"","title":"佑尘云","author":"道长","version":1,"type":"video","url":"hiker://empty##http://v.i7yc.cn/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=佑尘云"},{"last_chapter_rule":"","title":"万能","author":"道长","version":1,"type":"video","url":"hiker://empty##http://app.wnvod.net/lvdou_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=万能"},{"last_chapter_rule":"","title":"兔子窝","author":"道长","version":1,"type":"video","url":"hiker://empty##http://cj.huimaojia.com:12345/mogai_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=兔子窝"},{"last_chapter_rule":"","title":"淘剧社","author":"道长","version":1,"type":"video","url":"hiker://empty##https://app.shuhai99.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=淘剧社"},{"last_chapter_rule":"","title":"豆芽","author":"道长","version":1,"type":"video","url":"hiker://empty##http://bdintv.cn/lvdou_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=豆芽"},{"last_chapter_rule":"","title":"啊玲","author":"道长","version":1,"type":"video","url":"hiker://empty##http://520dml.xyz/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=啊玲"},{"last_chapter_rule":"","title":"影库","author":"道长","version":1,"type":"video","url":"hiker://empty##https://yingkudy.com/lvdou_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=影库"},{"last_chapter_rule":"","title":"月儿","author":"道长","version":1,"type":"video","url":"hiker://empty##https://yue52.xyz/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=月儿"},{"last_chapter_rule":"","title":"鑫总","author":"道长","version":1,"type":"video","url":"hiker://empty##http://app.mmhkj.xyz/lvdou_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=鑫总"},{"last_chapter_rule":"","title":"夕阳","author":"道长","version":1,"type":"video","url":"hiker://empty##http://cms.seo-tv.work/mogai_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=夕阳"},{"last_chapter_rule":"","title":"星辰TV","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.xingchentv.cn/mogai_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=星辰TV"},{"last_chapter_rule":"","title":"悟空","author":"道长","version":1,"type":"video","url":"hiker://empty##http://dapi.pntao.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=悟空"},{"last_chapter_rule":"","title":"群鑫","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.qunxinys.com/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=群鑫"},{"last_chapter_rule":"","title":"佳佳","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.jiajia.pub/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=佳佳"},{"last_chapter_rule":"","title":"爱电影","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.idianying.com.cn/mogai_api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"秒播APP类(不需要魔断)","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=爱电影"},{"last_chapter_rule":"","title":"醉璃笙TV","author":"道长","version":1,"type":"video","url":"hiker://empty##http://web.xhdj.vip/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=醉璃笙TV"},{"last_chapter_rule":"","title":"2号币","author":"道长","version":1,"type":"video","url":"hiker://empty##http://phoebe.cf/api.php/iptv/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"神马","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=2号币"},{"last_chapter_rule":"","title":"6U资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.6uzy.cc/inc/apijson_vod.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"官方解析","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=6U资源"},{"last_chapter_rule":"","title":"天堂资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://vipmv.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"官方解析","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=天堂资源"},{"last_chapter_rule":"","title":"忆梦","author":"道长","version":1,"type":"video","url":"hiker://empty##http://anltv.cn/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"官方解析","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=忆梦"},{"last_chapter_rule":"","title":"小猫咪","author":"道长","version":1,"type":"video","url":"hiker://empty##http://zy.xiaomaomi.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"官方解析","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=小猫咪"},{"last_chapter_rule":"","title":"77韩剧","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.77hanju.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=77韩剧"},{"last_chapter_rule":"","title":"星海资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.xhzy01.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=星海资源"},{"last_chapter_rule":"","title":"光速资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.guangsuapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=光速资源"},{"last_chapter_rule":"","title":"天空资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.tiankongapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=天空资源"},{"last_chapter_rule":"","title":"量子资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://cj.lziapi.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=量子资源"},{"last_chapter_rule":"","title":"新浪资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://api.xinlangapi.com/xinlangapi.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=新浪资源"},{"last_chapter_rule":"","title":"鱼乐资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.ylzy1.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=鱼乐资源"},{"last_chapter_rule":"","title":"极客资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://jkzy1.com/api.php/provide/vod/from/zkzym3u8/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=极客资源"},{"last_chapter_rule":"","title":"1080资源库","author":"道长","version":1,"type":"video","url":"hiker://empty##https://api.1080zyku.com/inc/api_mac10.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"searchable:0"},{"last_chapter_rule":"","title":"红牛资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.hongniuzy2.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=红牛资源"},{"last_chapter_rule":"","title":"酷点资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://kudianzy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=酷点资源"},{"last_chapter_rule":"","title":"速更资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://sugengzy.cn/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=速更资源"},{"last_chapter_rule":"","title":"飞速资源","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.feisuzy.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=飞速资源"},{"last_chapter_rule":"","title":"韩剧资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.hanjuzy.com/inc/apijson_vod.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"searchable:0"},{"last_chapter_rule":"","title":"八戒资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://cj.bajiecaiji.com/inc/apijson_vod.php#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"searchable:0"},{"last_chapter_rule":"","title":"番茄资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://api.fqzy.cc/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"切片资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"playUrl:https://dp.fqplayer.com/dplayer/?url="},{"last_chapter_rule":"","title":"龙腾资源","author":"道长","version":1,"type":"video","url":"hiker://empty##http://175.178.7.35:2020/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"优质资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=龙腾资源"},{"last_chapter_rule":"","title":"土剧TV","author":"道长","version":1,"type":"video","url":"hiker://empty##http://tujutv.top/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"优质资源","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=土剧TV"},{"last_chapter_rule":"","title":"电视家","author":"道长","version":1,"type":"video","url":"hiker://empty##http://mytvhome.xyz/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=电视家"},{"last_chapter_rule":"","title":"海玉影视","author":"道长","version":1,"type":"video","url":"hiker://empty##http://tv2.hykjtv.cn/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=海玉影视"},{"last_chapter_rule":"","title":"热剧天堂","author":"道长","version":1,"type":"video","url":"hiker://empty##http://175.178.7.35:2020/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=热剧天堂"},{"last_chapter_rule":"","title":"飘花电影","author":"道长","version":1,"type":"video","url":"hiker://empty##http://www.zzrhgg.com/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=飘花电影"},{"last_chapter_rule":"","title":"爱兜视频","author":"道长","version":1,"type":"video","url":"hiker://empty##http://id190.tpddns.cn:81/mogai_api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=爱兜视频"},{"last_chapter_rule":"","title":"香瓜影视","author":"道长","version":1,"type":"video","url":"hiker://empty##http://v.xgvod.top/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"三方聚合","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","icon":"http://1.117.152.239:39000/tupian.php?text=香瓜影视"},{"firstHeader":"class","last_chapter_rule":"","title":"追剧吧","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##https://zjuba.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vod/detail/','true');\n//一级书签('vod/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/10.svg"},{"firstHeader":"class","last_chapter_rule":"","title":"星格影院","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##http://xg.d0336.xyz/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('vod/detail/','true');\n//一级书签('vod/detail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://xg.d0336.xyz/mxstatic/picture/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"兰花影视","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##http://www.lanhua.tv/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('voddetail/','true');\n//一级书签('voddetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://www.lanhua.tv/upload/mxcms/20221029-1/10e96ffc1b8ec9940582daec68785df8.png"},{"firstHeader":"class","last_chapter_rule":"","title":"1080P影视","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##https://1080p.tv/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('voddetail/','true');\n//一级书签('voddetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://dbzytv-1080-img.oss-cn-hongkong.aliyuncs.com/2021/08/14/71599ed9205d8.png"},{"firstHeader":"class","last_chapter_rule":"","title":"KOK影院","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##https://www.kokyy.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('kokd/','true');\n//一级书签('kokd/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/kokso/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.kokyy.com/template/conch/asset/img/kokico.png"},{"firstHeader":"class","last_chapter_rule":"","title":"万博剧院","author":"道长&浅殇","version":1,"type":"video","url":"hiker://empty##https://www.wanbotv.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('wbd/','true');\n//一级书签('wbd/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/wbso/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.wanbotv.com/mxstatic/picture/helplogo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"天天追剧","author":"道长&浅殇","version":2,"type":"video","url":"hiker://empty##https://www.zhuiju.la/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('voddetail/','true');\n//一级书签('voddetail/',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.zhuiju.la/upload/mxcms/20220404-1/6834b7c96d7e4838b6d42cb80f4ae349.png"},{"firstHeader":"class","last_chapter_rule":"","title":"追剧兔.dr","author":"狗浩啊","version":1,"type":"video","url":"https://www.zjtu.cc/vodshow/1--------fypage---/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    true_url = 获取正确链接();\n    let cates = 打造动态分类([\n{一级分类:'body&&.nav-swiper',\n子分类:'body&&a',\n       分类链接:{\n        二次处理(u){\n        return u.replace(/type\\/(.*?)\\.html/, 'vodshow/$1-----------.html')}\n    }},\n])\n    设置(cates,true);\n    自动一级('首页',cates,html);\n}\n\n\n混合(ui,\"vodplay\",\"gbook\",\"/\");\n","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, 'body&&.search-list');//列表\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),//标题\n        desc: pdfh(list[j], ''),//第几集或清晰度\n        img: pd(list[j], '.eclazy&&data-original')+'@Referer=',//图片\ncontent:pdfh(list[j], '.deployment,0&&Text'),//简介或影片信息\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.zjtu.cc/vodsearch/**----------fypage---/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.play-title,0&&a,0&&Text',\n    img: '',\n    url: '',\n    desc: '.play-top,0&&p,0&&Text;.play-top,0&&p,1&&Text',\n    content: '',\n    tabs: '.play-source-tab&&.swiper-slide',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.content-playlist,#id&&a',\n    tab_id: '',\n};\nvar lazy = $('').lazyRule(() => {\n        return 'video://'+input\n})\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=追剧兔"},{"last_chapter_rule":"","title":"魔洞影视Q","author":"狗浩啊","version":0,"type":"video","url":"http://www.modying.com/vodtype/4-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.myui-screen__list:not(:matches(类型))'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace('---.html', page + '---.html').replace(/(---\\d+.html)/, page + '$1')\n}\nvar html = request(true_url)\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.myui-vodlist__thumb')\nfor (var j in list) {\n    var img = pd(list[j], '.lazyload&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.pic-text&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\",\n        extra: {\n            img: img\n        }\n    })\n}\nsetResult(d)","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.modying.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"麻花电影Q","author":"","version":0,"type":"video","url":"http://www.mhyyy.com/show/fyclass/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"mhdy&mhds&mhzy&mhdm","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://www.mhyyy.com/search/page/fypage/wd/**.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"飞飞电影网","author":"","version":0,"type":"video","url":"https://www.feifeisp.com/type/fyclass/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = 'body&&.stui-screen__list:not(:matches(类型|语言))'\nconst 小类定位 = 'body--li&&li:has(a)'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\.html/, 'vodshow/'+ '$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+\\.html)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.stui-vodlist&&li')\n\nfor (var i in list) {\n    d.push({\n        title: pdfh(list[i], 'h4&&Text'),\n        desc: pdfh(list[i], '.pic-text&&Text'),\n        img: pd(list[i], 'a&&data-original')+'@Referer=',\n        url: pd(list[i], 'a&&href')+'#immersiveTheme#'\n    })\n}\nsetResult(d)","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.feifeisp.com/index.php/search/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"天天电影网","author":"","version":0,"type":"video","url":"https://m1518.com/vodtype/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺&泰国&动作&喜剧&爱情&科幻&恐怖&剧情&战争&国产&港台&日韩&欧美","class_url":"1&2&3&4&5&6&7&8&9&10&11&12&13&14&15&16","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://m1518.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"骑士影院","author":"","version":0,"type":"video","url":"https://www.74yyz.com/74yy/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.stui-header__menu'\nconst 拼接分类 = '#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(首|留))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace(/vodtype\\/(.*?)\\.html/, 'vodshow/'+ '$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+\\.html)/, page + '$1')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.stui-vodlist&&li')\n\nfor (var i in list) {\n    d.push({\n        title: pdfh(list[i], 'h4&&Text'),\n        desc: pdfh(list[i], '.pic-text&&Text'),\n        img: pd(list[i], 'a&&data-original')+'@Referer=',\n        url: pd(list[i], 'a&&href')+'#immersiveTheme#'\n    })\n}\nsetResult(d)","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.74yyz.com/search.php?page=fypage&searchword=**&searchtype=","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"巨人影院DR","author":"道长&狗浩啊","version":1,"type":"video","url":"https://www.jurenm.com/show/fyAll/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺&动画片","class_url":"1&2&3&4&6","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":".hl-vod-list&&li;.hl-item-title&&Text;a&&data-original;.hl-text-conch&&Text;a&&href","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n香免();\n自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=巨人影院"},{"last_chapter_rule":"","title":"66影视","author":"","version":0,"type":"video","url":"https://www.ledlmw.com/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"sx-1&sx-2&sx-3&sx-4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.ledlmw.com/baidu**/page/fypage.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"飘花播播","author":"","version":0,"type":"video","url":"https://www.piaohuabo.com/vodshow/fyclass-----------fypage.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.piaohuabo.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"影视录","author":"","version":0,"type":"video","url":"https://quanyingshi.com/vodtype/fyclass/fypage.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://quanyingshi.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"不灵影视","author":"古月&ZHJ","version":1,"type":"video","url":"http://www.0bt0.com/tlist.php?page=fypage&fyAll","col_type":"movie_1_vertical_pic","class_name":"电影&电视剧&周榜&月榜&年榜","class_url":"sc=1&sc=2&sc=3&sc=4&sc=5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar items = [];//自定义一个 空数组\n\nfyAll=MY_URL.split(\"&\")[1]\nfypage=MY_URL.split(\"page=\")[1].split(\"&\")[0]*3-2\n\n\nif(fyAll==1){\nd.push({\n    title: \"🔍\",\n    url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n    desc: \"请输入关键词\",\n    col_type: \"input\"\n});\n}\n\n\n/*\n\n\n\nfor(z=0;3>z;z++){\n\nMY_URL=\"http://www.0bt0.com/tlist.php?page=\"+fypage+\"&\"+fyAll\nfypage=fypage+1\n\n*/\n\nvar html = request(MY_URL);\n\nvar lbb_a = pdfa(html,'.tabs-content&&.container');\n           \n\n\nif(fypage==1) putMyVar(\"排名变量\",\"1\")\n\n\nfor (var i in lbb_a) {\n排名数=getMyVar(\"排名变量\",\"1\")\n排名=\"第\"+排名数+\"名\"\nif(排名数==1)排名=\"🥇\"\nif(排名数==2)排名=\"🥈\"\nif(排名数==3)排名=\"🥉\"\n\nif(fyAll==\"sc=1\"||fyAll==\"sc=2\")\n描述=pdfh(lbb_a[i],'.right&&Text')+'\\n'+pdfh(lbb_a[i],'.lh15&&Text')\nelse 描述=排名+'\\n'+pdfh(lbb_a[i],'.lh15&&Text')\n排名数=parseInt(排名数) + 1\nputMyVar(\"排名变量\",排名数)\n       \n标题=pdfh(lbb_a[i],'.marr16&&Text')\n图片=pdfh(lbb_a[i],'.po_abs&&style')\n\n链接=pd(lbb_a[i],'a&&href')\n\nitems.push({\ntitle:标题,\npic_url:图片,\nurl:链接+\"#noHistory##immersiveTheme#\",\ndesc:描述,\n\n});\n}\n\n\n\n\n\n\n\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar items = [];//自定义一个 空数组\nvar html = getResCode();\n\nvar lbb_a = pdfa(html,'.masonry&&#showdiv&&.masonry_item');\n\n\nfor (var i in lbb_a) {\n           \n标题=pdfh(lbb_a[i],'h5&&Text')\n图片=pdfh(lbb_a[i],'.po_abs&&style')\n描述=pdfh(lbb_a[i],'h5&&span&&Text')\n链接=pd(lbb_a[i],'a&&href')\n\nitems.push({\ntitle:标题,\npic_url:图片,\nurl:链接+\"#noHistory##immersiveTheme#\",\ndesc:描述,\n\n});\n}\n\n\n\nres.data = items;\nsetHomeResult(res);\n\n\n\n","search_url":"http://www.0bt0.com/search.php?page=fypage&sa=&sb=**&sc=&sd=&se=&sf=&sg=1&sh=&si=&sj=&sk=&sl=&sm=&sct=&sdt=&set=&sft=&sht=&pagenum=","group":"视频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar res = {}; //定义一个map 键值 前面是键后面是值 当前值为空\nvar items = [];//自定义一个 空数组\nvar html = getResCode();\n\n数组合集=[];\n合集变量=0\nvar lbb_a = pdfa(html,'body&&.picture-container');\n\nfor (var i in lbb_a) {\n\n子数组变量=pdfh(lbb_a[i],'.col-md-10&&Text')\n数组合集[合集变量]=子数组变量\n合集变量++\n}\n\n\n\nvar lbb_b = pdfa(html,'body&&.tabs-content&&.container');\nfor (var i in lbb_b) {\n\n标签=pdfh(lbb_b[i],'.cz_label&&Text')\n\nif(标签==\"中文字幕\"||标签==\"\"||标签==\"国语\"&&html.includes(\"语言: 汉语普通话\")&&html.includes(\"语言: 汉语普通话,\")==false)\n标题=pdfh(lbb_b[i],'.torrent-title&&Text')\nelse if(标签==\"国语\"&&html.includes(\"语言: 汉语普通话\")==false||标签==\"国语\"&&html.includes(\"语言: 汉语普通话,\")) 标题=\"✅汉语中字\"+pdfh(lbb_b[i],'.torrent-title&&Text')\nelse 标题=标签+\"-\"+pdfh(lbb_b[i],'.torrent-title&&Text')\n\n\nif(标题.includes(\"集\")&&标题.includes(\"全\")==false){\n标题=标题.replace(\"集\",'\\n').replace(\"第\",\"\")\n}\nif(标题.includes(\"集\")&&标题.includes(\"全\"))\n{\n标题='全集\\n'+标题\n}\n\n\n /*\nif (标题.includes(\"chs\")||标题.includes(\"字幕\")&&标题.includes(\"中\")||标题.includes(\"中字\")||标题.includes(\"压制\")&&标题.includes(\"中\")||标题.includes(\"GOSSIP\")&&标题.includes(\"rartv\")==false)标题='中字-'+标题\n*/\nif(html.includes(\"语言: 汉语普通话\")==false||html.includes(\"语言: 汉语普通话,\"))\nif(lbb_b[i].includes(\"中文字幕\")&&标签!=\"国语\")标题='✅中字'+标题\n\n\n\n磁力=pdfh(lbb_b[i],'.col-md-3,2&&a&&href')\n清晰度=pdfh(lbb_b[i],'.col-md-3,1&&Text')\n\nfor (i=0;数组合集.length>i;i++) {\n\nif(数组合集[i].includes(\"间隔\"))\n清晰度分类=数组合集[i].split(\"间隔\")[0]\nelse 清晰度分类=数组合集[i]\nif(清晰度==清晰度分类){\n数组合集[i]=数组合集[i]+\"间隔\"+\"title:\"+标题+\",\"+\"url:\"+磁力+\",\"\n}\n\n}\n\n}\n\n\nconst hd = require(\"http://hiker.nokia.press/hikerule/rulelist.json?id=2968&v=1\");\n描述=\"\"\nvar lbb_z = pdfa(html,'.main-container&&.tiny-title');\n\n\n\nfor (var i in lbb_z) {\n描述=描述+pdfh(lbb_z[i],'.tiny-title&&Text')+\"<br>\"\n           \n}\n\n豆瓣评分=描述.split(\"豆瓣评分:\")[1].split(\"IMDB评分:\")[0]\nIMDB评分=描述.split(\"IMDB评分:\")[1].split(\"<br>\")[0]\n\nif(豆瓣评分==\" \")描述=描述.replace('豆瓣评分:',\"\")\nif(IMDB评分==\"\"){\n\nif(豆瓣评分==\" \")\n描述=描述.replace('IMDB评分:',\"无法显示评分\")\nelse 描述=描述.replace('IMDB评分:',\"\")\n\n}\n描述=描述.split(\"种子资源数\")[0]+描述.split(\"种子资源数\")[1].split(\"<br>\")[1]\n\n图片=pdfh(html,'.br10&&img&&src')\n标题=pdfh(html,'.info-title&&Text')\n\nhd(items, {\n//显示的白色大字 \n大字: 标题+豆瓣评分+IMDB评分, //片名搜索用 \n片名: 标题, //图片一定不要加Referer \n图片: 图片, //描述里用<br>换行 \n描述: 描述.replace('上映地区: 美国,中国大陆<br>',\"\").replace('上映日期: 2018-03-23(美国/中国大陆)<br>',\"\").replace('首播: 2018-03-23(美国/中国大陆)<br>',\"\")+pdfh(html,'.summary-card&&Text'), \n})\n\n\n\n/*\n\nconst hd = require(\"https://gitee.com/JackieChou/HiKerRules/raw/master/stylerule.js\");\nlog(hd);\nhd(items, {\n\t//显示的白色大字\n\t大字: 标题,\n\t//片名搜索用\n\t片名: 标题,\n\t//图片一定不要加Referer\n\t图片: 图片,\n\t//描述里用<br>换行\n\t描述: 描述.replace('豆瓣评分: ', '')+pdfh(html,'.summary-card&&Text'),\n})\n*/\n\nitems.push({\ntitle:\"空白\",\ncol_type: \"line\"\n});\nfor(z=0;5>z;z++){\nitems.push({\ntitle:\"空白\",\ncol_type: \"blank_block\"\n});\n}\n\n\nfor (i=0;数组合集.length>i;i++){\n子数组=数组合集[i].split(\"间隔\")\n\nitems.push({\ntitle:子数组[0],\nurl:子数组[0],\npic_url:\"https://lanmeiguojiang.com/tubiao/ke/157.png\",\ncol_type: \"avatar\"\n});\n\nfor (j=1;子数组.length>j;j++) {\nitems.push({\ntitle:子数组[j].split(\"title:\")[1].split(\",\")[0],\nurl:子数组[j].split(\"url:\")[1].split(\",\")[0],\ncol_type: \"text_3\"\n});\n}\n\nitems.push({\ntitle:\"空白\",\ncol_type: \"line\"\n});\nfor(z=0;5>z;z++){\nitems.push({\ntitle:\"空白\",\ncol_type: \"blank_block\"\n});\n}\n\n}\n\n\n\n\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://p1.meituan.net/dpplatform/d2a349511a84b24c1323672cf2226de313178.png"},{"firstHeader":"class","last_chapter_rule":"","title":"喵喵影视.dr","author":"道长","version":1,"type":"video","url":"https://www.2345ka.com/t/fyclass/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫&音乐","class_url":"1&2&3&4&6","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/search?wd=**#","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=喵喵影视"},{"firstHeader":"class","last_chapter_rule":"","title":"北川影视.dr","author":"道长","version":1,"type":"video","url":"https://www.bcwzg.com/vodshow/fyclass--------fypage---/","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/**-------------/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=北川影视"},{"firstHeader":"class","last_chapter_rule":"","title":"UM影视.dr","author":"道长","version":1,"type":"video","url":"https://www.umkan.com/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/index.php/vod/search/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=UM影视"},{"firstHeader":"class","last_chapter_rule":"","title":"万博影院","author":"道长&幻梦月光贝","version":2,"type":"video","url":"https://www.wanbotv.com/wbs/fyclass/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺&记录","class_url":"WbMovie&WbTv&WbCartoon&WbVariety&Wbdocumentary","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/wbso.html?wd=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=万博影院"},{"last_chapter_rule":"","title":"300看世界","author":"道长","version":1,"type":"video","url":"hiker://empty##https://300ys.xyz/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级();","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/4.png"},{"last_chapter_rule":"","title":"耐克影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##https://www.ajeee.com/show/Movie/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype/, 'show').replace('.html', '/page/' + page + '.html')\n}\nlog(true_url)\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nconst list = parseDomForArray(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img&&data-original')+'@Referer=',\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.ajeee.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item:not(:matches(首页|更新|榜|APP))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"//蓝\\nevalPrivateJS('vLrmLHEXDew5Wm2f/s4IJJbJIXdwuJFz/adduvbmQ2FnlqrIA5sMWnmRxD3BMHkAGUxKs2osorxqH6h8IHHjzrK/Jr7NEB0A0HLRxyACVxUeNp8WCQFkyAVYUE6156K68mZ/xI7NEB9sA6GS+UCtHVOuJ8yNtNCK5RFDIbmCazM9+NKVloApmndgtLk+OnXia1E/U9qfj6sUm5yWu+4qLDTq43oXPCAIlTkkFBF8knefSpNF/gTR25nfPmsgfxDSsLXxMWC9EPyn4xra5yAjeCeGoHKIJYFQZc1b8OnfNJ+Wd/P26OetDy8/VTD0OEdjpJFHZ4nrNaAcmi9hGXxzNzHXdmqLDOnf44LFlMsRDsyvywS1Mg4U4gkFMifvABJoxPZii5H3CCMZ2koHmKnT0g0SM7tUYbLdm1E3HR089MIT/+OcnSH8jThz6ec0MsNiG6K6vP9ADlB7pifnoCNFLKEu/hUNh3rAGcG4Gglor13dWF6NH6l7KnoN9Xpu6yUuTLsNaDedvG3RgD8yBGVu8nIqyE2nxlpNoEQj2Pn8N0IlWoq/dIWbo2MmRvy3GDJSFq6XtB+yrZay6p7qS1KRUkUSz/VtzIzoIo8fat9/3HWkRABzMBNEkFQC93+nbs1uWOJVDG5VhXmq5YrmIYdjGS7b5BhteZfj+PTJQa1NS3ntMUZeqAYZOiHZ5ItTUuO01R9YLl/G1g8PGV9uj3/b1NS+JNif5KCewMabmBHOvSH/DVrgvP11bPH4qNI+PA5KZc7BY2QM5CykSPs9M2oMgvIqH3/D+F/2K6w4sDC1zeejwig2Eg4KIDoaEDhl4Sc3/QpgXgxv6aoATOJu6qDTo72/HsrQHMp9ml1xsC9PSetNU0nSkD/595H5WsRg4HQ4am74Jy/griHCatSSES5bNMVbcpMXYnTAqEzAUOyvaSLhETUEcW7Dn2DHVhnIKNoruWxINUxjfxrD1rRn4bOe2yrNWRcP9VL3Td8HaUO6fSkFFtEujhTQQgzg3EdAtCLMOqWbU9nhQjdMVr7a/i8O/yleL1C3e6zGFdS48NbbFjbhO5/1XpiVDveRVgJP43YkELAZ7AOlFjzkspud/ksW/SZFT4/9cPnax53wVNFmEK2OQxQTmykKaCR0z64OcdjImXZ9ewxyOd+xG69VU48QxYeHazU9V3tWSmEjpGgpcQ4qfV7lWXxJDMTT8EmFSNLkzEcCsoJt9pZEei2ejahtbE1TSdKQP/n3kflaxGDgdDiFmWY14VjsF27HKw9btwh1ueR8eKy+6/qi7Yfz6cpQTSQ71kDaqmumS/gHTIk9eJW4+/T9uDQuKe1IxP2IhWN3+qrOrPk6ioycjcbsosvkVWZluhrAVORiWX+6xBJDpLbEWheIpxIxkTffU9k1bBbhxRFEnJHloZrGvC8cy+sDJ8sry0jWVnP7CJ/71kgB1Pazu/Owkg/P9U0Vnw79s9+CGR0XZVmwKwxkncLDKmWUKod8QNSwLU6ZGXjJBMLexL1HYmaLTBR+6PKBoCaj0Zde13xpTA01gCp2luDkfuH6FxB60nA6G8N56J0yrILg6gQ7UWt3ZJKuMkvmqVsy1Kq3B0Zz1kFvFZz2PazPkwB8eydUJOg+3WvLXRkWcpZalg7OlDL7DvzzsOQnK+/bCc4nX296r4JTx1BQcKm/5YVomLIqbRtDQUy9VfXL/DPxioSd9nvbxOrAlGNKbc4B6tIKPJ4IZIRT3ndsGocKonr4iefvvC5OU5bD4GgD1ts4cNhlc1CZhIeYHDhvun/ngfkimwePe41HTI6MhJlAVd+F1Xb4q2vywlFZhKZDwoLzlXzWOhSh81mmEBgVQ4d9klk5TNYK/o+cUhj8QO82Mo7GEGLc7okStYXgb8N7a6suXtddT78nw3jmlhnxuE1U5MAYI3V8w6u3MZGzh8v8eaB1E5JgO6399AP38qWjYzB/3dz1azhVi9yXfovB8rFdIwNwCamrLo+g2ymq6donD0tqcp+fcETtV2tbNuuG5dQp1sGULpZSFAaDmMk6EbpXCTZy05oJQ/APt7E2aNlv0zzW6z5krD8i1p6PhXIog30G7Gfsy8EHJBzx+zkP72U/68J3WNUMYt9Urq5rZjT1MBrnrh31dvzhzfY33b9VSplaGbOwGpgr2IHEW3cawUwWlWJd1qnX2fAdYQ623OfrmM0mVc6UMvsO/POw5Ccr79sJzif0YUaMycf32srFiiiIy6IUXuOyPLIzihYwneIIsj5k26Xs4TI1bURzoQcOdXWstYAOHjU66S5aRqC8KqeD4cFaZ2eBgCn3nUYYKLAWlkv3TrXv9NQOeL3ri+il7eiZCGF2DPih2i2Soow0c3IHHYiTZJsyHAnbwRPlVVRjIxc3a1mP7b5/eaFjjRgy9qA+aPQ4g1n1iGzSwrmjKlD3Yp0tnbSwDs6cWZnugJujXnnZZn0D0OJ16q0jfc3MjXC5U/Q3OD/CUl5K1PXB7ZZ5GoEwGDtKFZBT2Nl39+ePV5Y7Ti1C2/M3Y7sXb2O2aiIn+TkROL+DTNgsNhsVDc8rgDBE+GCkiNMCL+g4c/CTCwva42beWfPSLsZNcv2PeyH1bu3LK8tI1lZz+wif+9ZIAdT26C24h+hRkBrpFz8Z/qXoPKyUqVxrF8PDlaWoWxckUkfLK8tI1lZz+wif+9ZIAdT2s2pLa0gJmWnn1lRXaMxnCvjXxxqlnOVMg7ZUgEYx6myLwIc4XY8ljeXZFYXhR5RAyyvLSNZWc/sIn/vWSAHU9jc5fLCKFZgqNI/KclvXZo/k6TQNRL48yk0b2DIzoud8bF4G4eBkc4lCk8p7FndbGAeskCFXwB1pJxk9lk/1CAKFepSAPTeDApUIlS1Yy3EmTicKuv1x8jzVKRoQqKJ+ahkgWjC0Hug0Gu2vnTODOOfpVgaWcIwrkdAdIYVcY9qzkGqp6x0pdOppiGCoZes3PkTBx2iFdNd006hMLn5U/OPLK8tI1lZz+wif+9ZIAdT2MY/rnXI07clDCQeExAFThFIt5eOmXc/WUrIjzpp0bp8Rcn+AujV/zP6ESp6MY0DVxkO/re39jXCGOHA/VQUZ8W9fPM7ZuIIHZkO+igFxftd489YAmMpbY6Cd3bc7kgniyyvLSNZWc/sIn/vWSAHU9hNcw6Tv/ETfHg0e7iYC0UbLK8tI1lZz+wif+9ZIAdT2f6mJExMOAmAjHo2KGfWksc6UMvsO/POw5Ccr79sJzieIMrvKcvwfvoiZ6wflaX5BGSBaMLQe6DQa7a+dM4M458SJwHsbKzrNkZEArfjvWF+iUpFTfsjcW8oRIHpqPShFhuwQJQxSz0Vs8MEEqWoohLzGpru7+2JXLx95rIh5bksbmT006dmXhkZwXty4uLbWzbdRGRo6kUAjJqLKfNBsyXggoR7Y7QFhGfUPpSHpigPxNfmZexlpdyGEVieJphVxURDViAlADpNHl0XtEOMHoKBh6fbN1zthIJwQz8ocV4TS3hKpd+0cfvkw4l7YxIi/MKipgr6G8qZswOYAvsHjGSDW7B78LVwyaIXCcXz/cufnjam1U7kUB43WrbLgrQiCs66AzRF1yW6ZIukVVLdvzc6UMvsO/POw5Ccr79sJzicIi201FP/UP/+J13DvrbinGEy5+U8hPtPW6cgwegBI+xlCC1QNgULq27JEZ2Q7K0uDByR4IS2XW8iadGPvpBKq1i+rm8+uazidJy3fzQ+Jf/WUsCpPMoFkcI8+35+jRnR71N8ZjodiRxHTiPGXcawczpQy+w7887DkJyvv2wnOJzuCuCBKfeRNRRjUvU8IseFANOWX0uVFGEsU4HGPbSlD4Yx+EMJLmJE5BZ9PMF8bPzUNIxShwJb5i2TcbZSo5bfROfb/h02l68zp95hu98pPJr1s6akZfn0HfVoOh2e7zegNXAo5r9iOMypQWh4uVLBSYHEzBJhH4VT+KDUouyr9LVioRvVANB3HZwnvDoJjXyfX1BHEh1r5PH6cp8PgZGDtEiM4Dc37/UXquBCb5Cy8yyvLSNZWc/sIn/vWSAHU9lMbV25d1MRv7pBDBhjvS+xWBwgKJoISngnK5gCMiH3/yyvLSNZWc/sIn/vWSAHU9nZW2VyZYk7aUBbYr/IGAqJ28aEqssiPJrXXIGnYsy3MvEUSV7vjtuI2Z2nktADNdMsry0jWVnP7CJ/71kgB1Pbq75dH0EIrhFaJCH+DfgA5h19A5QUhGVWR3A6BHHKpjaITI5NPyPkSnYtPPQ4KDG/LK8tI1lZz+wif+9ZIAdT2P9rzdwsuYp7ir+26Svr/XTG6EfSg4DtAK7JVS/LkGvinEUVN2rJrPYMcDDpp938UKHHdharnTEp0X3NVFZRn3y6XXHeKGcdN2D4uT0Fe1RfGSE8H9brUaKUJnA5Y5mBaTdIsJaO39GIYejnigZo1/wahwju+hUS6mrKG3NtmsfiCRzumzF5WV5BvBvzC5oNj63VpkoZasJk8gbxiITdXibFeS8B/YEdP31Lu0AypuNg/c5TNnMO8XNStnulxjMYpzpQy+w7887DkJyvv2wnOJ+PbGey/p0ryodewtfNAvSLLK8tI1lZz+wif+9ZIAdT2qLzrXSbt1uh8vnx1kFFdljVs9lL+puszWbekOALcuK5l8glU4nYStdeQox8cmMFpw4xIYcCpQcY48OyDMrSCN3SylqsHtzJVpD4cSu+cu5waoCdLKlxR8eLtpLbr38+5GMrue83OAoBOa1/R5BHdM+OVrNChlWAPCAaNHiaWPU314493gs+cHG4GFnZ67UhcMEHxxwQnowuB3c15gOTaGL9KEoEfCUGtcID1dPhNDLShVCAHpTQAOLqu8sGCALhywp/+KT1gMRdvbu/NUHLknye7ZAnKTvAxovFayoYBInMKm2NvgVIS5unUMsFcR5XI/owOKW5hyu2Q2obwjsIxNKmux4C1SQ7nolcGwT+AvB+BZ7e/UkIkN4ajAcpZg+Hr4p5Yehs+uBFeM0WVS0ZiXn4wYk/doXSvFTPMfZpqjzNJRXgLi21pMDq0Cy9DCiSXUDIYjTcwL7q2GudUVy0ZzvVfBl7uFMXq1D2gjG8suFPjaLJo8zsDVVYFs5kqYM73iVrwl4QFNYBVeg4NUe6j+aUP9+Saqh5sSIBdo6e4MSmsPuPRplNh8l9VKLSfoRbdyyvLSNZWc/sIn/vWSAHU9peUjih5Q7rsD1q5sBCGpD+M35vo+OhVIG6w2LOWJWzHn8c1NJG8WbX95hJkEoRv1kFuHeG64fJXpWvYbPThGiOebBI1klJ4EG8Zi81aO9hpsmfiqjJvAR7mLJk7fs0MXssry0jWVnP7CJ/71kgB1PYVZHDfdWsr6mTzMMtxlVm7bD6yt99Rzr+GEhoMJwBE1nPDP2EVntRGgPPucr9CM9mNdhVG/wVCetOWwIuBJRZUGs3kOprbGpVeyYD+urBCEjwXaWl0XIvCFWa4q91yzOHOlDL7DvzzsOQnK+/bCc4ndn8SCXqSR9neETCCgQD+Zssry0jWVnP7CJ/71kgB1PYOHjU66S5aRqC8KqeD4cFaHtIgYwhE9dLN4Qo8hx+WHYGDFrDKpsZqGqHtakl3ddXOlDL7DvzzsOQnK+/bCc4nBqHCO76FRLqasobc22ax+Ba3wTcOSF0QsxCS+lR2CP1V/uImZF03qXWq2lFeBVk+H/Yo1VgO7MDag4WzO0XKw29fPM7ZuIIHZkO+igFxftd489YAmMpbY6Cd3bc7kgniyyvLSNZWc/sIn/vWSAHU9oQNNZLDVj4i45AG/FLSiatRr9GpdicvP56XKQ2Z/xq7+5oDG+Igz8Goe9kSwdEuQTY2WAd5ZFpoVukg+co0swrLK8tI1lZz+wif+9ZIAdT2L9jcJED34unc22TVT8JzilciyJfWv+xcs1kFB61C3Bi51Y0YdctMK9wdfy7D5Zqso/a7e/7I0SQbKFS1b8a+1de8H6uZDdQ+RYUpOwG0t3p7gJgQbIWhkPUfH3mKtcwcyyvLSNZWc/sIn/vWSAHU9o5ERC52Pf+5ro9sbbZo0w2sIic1W2ig7pmAfl73DcIO0hrPnxU8zagOrGoEP9auCv4jjbbfunb3GwkTNSXhe+/LK8tI1lZz+wif+9ZIAdT22GAutdJwZxR5VCB0X2M+33zHYi3Uab7878GDKGf8uLPt1LS1UKO3IgCKxjgGqWm0AxhuFVs5r/Nu4mhATB8y7Msry0jWVnP7CJ/71kgB1PawGpgr2IHEW3cawUwWlWJd8lWZW339rTGyvxPi6t4h9eBG89ZTh8ZqZmD8eEGr7OnLK8tI1lZz+wif+9ZIAdT2ERo42chXCUP0OmiW79C6RMpfbye0yJjJxo6k4zlAn39YHO6MVKQMSDiiddFMcmG34AmtUGqGBDIlaYV8E3gBJMsry0jWVnP7CJ/71kgB1Pbokj8A26PKXzoDty+1RBDOOx3PNzt7ea5+F4GsfhfPvLDDW4tIf7tDYKVDFGZWWCgESwcE6kq8HMADSVGR7NOcyyvLSNZWc/sIn/vWSAHU9qrX+WGJnTQQacDlTjdygIdeln5s+liEIQiXGxfjzh0knu2K98f1IQpvMaAQQ8unLuIxnDq2uCs5NXdA/2QGYtXLK8tI1lZz+wif+9ZIAdT2M6CYL+mnSSEShTROq7rTtiOqLy02kgL+2A23vW4ngl8bZaAWRyIriz2u+sJehfDF9nmI5esPf6MXr7OSCJAIQMsry0jWVnP7CJ/71kgB1PYxj+udcjTtyUMJB4TEAVOENWs8F4/yNFEOcGXLOrrU/zQ+lelcaIVKObDES5cgVObox/hhfew9F6Bm/eVafYm1yyvLSNZWc/sIn/vWSAHU9hkgWjC0Hug0Gu2vnTODOOcfJxTlL5EX5Eb2Uh6oSjl9oduQhxrq8zxNP8/w5ZA4a4vAhzhdjyWN5dkVheFHlEDLK8tI1lZz+wif+9ZIAdT2+7rDzGLVjGo5KEjTOgYOOgpWujFJXQQAWLAWvbO9bZ8p2bStgepnAaAZP46F9mAoOlgFdIV6L3QLmw6BW21PRHbxoSqyyI8mtdcgadizLcyJlNygY1vTgxnt3oeDdjO9W1V26oilFYyXFZ+v7EHE8CfX1BHEh1r5PH6cp8PgZGCYYMq4ARIhCSngPJ6wDel9iJZgCHNcMPaiQWKMrMzPeM6UMvsO/POw5Ccr79sJzidUrZ1J5uj5L+PdYuaH+OMsmpuanfinoJJBEjhvJEEHqc6UMvsO/POw5Ccr79sJzic/v7NRTVBbT/TK9Io4sP/CCqQ0yvy1+43huy+1R2WawiZdHpHgiX7sL+4h0eUrzMUGop8c/zroWBoN/aVKmn8sYVR+iuXgYtRPVcydH6yQ0SNv1z38hF+Fjr1LK6TuFP0fXOqzo3EYb7K4NFzlWEqDSw/gwaJ8tIjhMViXMqMlkmfuLDRlwdBdChkKx5mBRQ18zpzxIRG/z+uJEtv8h9OuIffQWVMTukbrJmjLeMTXYw==')\\n//莓\"}]","proxy":"","icon":"https://www.ajeee.com/mxtheme/images/favicon.png"},{"last_chapter_rule":"","title":"玖卿乐播","author":"道长","version":1,"type":"video","url":"hiker://empty##https://vod.nqcode.cn/api.php/v1.vod#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=玖卿乐播"},{"last_chapter_rule":"","title":"醉璃笙🌱","author":"道长","version":1,"type":"video","url":"hiker://empty##http://web.xhdj.vip/api.php/iptv/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=醉璃笙🌱"},{"last_chapter_rule":"","title":"电视家📺","author":"道长","version":1,"type":"video","url":"hiker://empty##http://mytvhome.xyz/api.php/provide/vod/#pg=fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n一级();","searchFind":"js:\nrequire(config.模板);\n搜索一级()","search_url":"hiker://empty##?wd=**&pg=fypage&ac=videolist","group":"视频","detail_col_type":"text_5","detail_find_rule":"js:\nrequire(config.模板);\n二级();","sdetail_col_type":"text_5","sdetail_find_rule":"*","ua":"mobile","preRule":"js:\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/资源网预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=电视家📺"},{"last_chapter_rule":"","title":"爱看影视Q","author":"","version":0,"type":"other","url":"https://www.ikyy.cc/type/fyclass-fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫","class_url":"1&2&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.ikyy.cc/search/**-------------.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"北川影视Q","author":"","version":0,"type":"other","url":"https://www.bcwzg.com/vodshow/fyclass--------fypage---/","col_type":"movie_3","class_name":"电影","class_url":"1","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.bcwzg.com/vodsearch/**-------------/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nlazy = $('').lazyRule(() => {\n    return $.require('hiker://page/dmLazyV.js?rule=dm盒子').dmLazy();\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"js:require(config.依赖);\n//定位列表和集的标签\nvar 影片列表 = '.stui-pannel-box&&.stui-content__playlist';\nvar 单个影片 = 'ul&&li';\nzuixin()","title":"在线之家√","author":"帅√`人才","version":5,"type":"other","url":"https://zxzj.vip/list/fyAll-fypage.html","col_type":"movie_3","class_name":"电影&动漫","class_url":"1&6","area_name":"美剧&韩剧&日剧&泰剧","area_url":"2&3&4&5","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:require(config.依赖);\n//影片列表定位，到每一个影片的标签\nvar 列表 = 'body&&.stui-vodlist&&li';\n//每一个影片的详情项定位\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 图片 = '.lazyload&&data-original@Referer=';\nvar 链接 = 'a&&href';\nyiji()\n","searchFind":"js:require(config.依赖);\n//影片列表定位，需可以定位到每一个影片的标签\nvar 列表 = '.stui-pannel__bd&&.stui-vodlist&&li';\n//每一个影片的详情项定位\nvar 标题 = 'a&&title';\nvar 描述 = '';\nvar 内容 = '.pic-text&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 链接 = 'a&&href';\nsousuo()","search_url":"/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\n//二级变量\nvar 项目1 = '.stui-content__detail&&.data,1&&Text';//显示在影片详情右上第一行\nvar 项目2 = '.stui-content__detail&&.data,2&&Text';//显示在影片详情右上第二行\nvar 项目3 = '.stui-content__detail&&.data,0&&Text';//显示在影片详情右上第三行1\nvar 项目4 = '';//显示在影片详情右上第三行2\nvar 项目5 = '.stui-content__detail&&.data,3&&Text';//显示在影片详情右上第四行\nvar 项目6 = '';//显示在影片详情右上第五行\nvar 图片 = '.pic&&img&&data-original';\nvar 简介 = '.detail-content&&Text';\nvar 过虑 = '猜你喜欢|播放线路3';//过虑字符以|隔开，支持通配符.*\nvar 线路列表 = '.stui-pannel__bd&&h3';//此标签定位到线路数组\nvar 单个线路 = 'Text';//此标签定位到每一条线路的名称\nvar 影片列表 = '.stui-pannel-box&&.stui-content__playlist';//此标签定位到所有播放地址数组\nvar 单个影片 = 'ul&&li';//此标签定位到每一集的名称和地址\nvar 调用断插 = 0;//有使用断插解析时写1点图片进入设置，0则图片链接为图片\n\n//解析设置\nvar lazy = $(\"\").lazyRule(() => {\n  var player = JSON.parse(request(input, { headers: { 'User-Agent': PC_UA } }).match(/ player_.*?=(.*?)</)[1]);\n    var url = player.url\n    if (url.search(/\\.mp4|\\.m3u8/)>-1) {\n        return url + '#isVideo=true#'   \n\t  } else if (url.search(/daodm_/)>-1) {\n        var html = request('https://www.zxzjtv.com/ckplayer.php?url='+url, {header: {\"Referer\": input}}); \n        return html.match(/urls = '(.*?)'/)[1] + '#isVideo=true#'   \n\t  } else if (player.from.search(/xunlei|yunpan/)>-1) {\n\t\t   return $('#noHistory##noRecordHistory#hiker://empty#').b64().rule((url) => {if(!url.split('|')[1]){var mm = 'zxzj'}else{var mm = url.split('|')[1]};var d = [];d.push({title:'下载地址：'+ url.split('|')[0]+'\\n提取密码：'+mm,col_type: 'long_text'});setHomeResult(d)},url);\n    } else {\n\t     showLoading('强力嗅探解析中，请稍候');\n\t     return 'x5Rule://' + input + '@' + $.toString(() => {\n\t\t       //fba.log(fba.getUrls());\n            var urls = _getUrls()\n            for (var i in urls) { \n                if (urls[i].match(/\\.mp4|\\.m3u8/)) {\n                    //fy_bridge_app.log(urls[i])\n                    return urls[i] + '#isVideo=true#'  \n                }\n            }\n        })\n\t }\n     \n});\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://gitcode.net/src48597962/hk/-/raw/master/srcDyTmpl.js\"\n});\n//上面的代码不要修改，by.帅√`人才 影视模板","pages":"[]","proxy":"","icon":"https://zxzj.vip/statics/img/favicon.ico"},{"last_chapter_rule":"js:require(config.依赖);\n//定位列表和集的标签\nvar 影片列表 = '.play_source&&.playlist_full';\nvar 单个影片 = 'ul&&li';\nzuixin()","title":"叶子影视√","author":"帅√`人才","version":3,"type":"other","url":"https://www.6ygo.com/6ytype-fyAll--------fypage---.html","col_type":"movie_3","class_name":"电视剧&电影&动漫&综艺","class_url":"2&1&4&3","area_name":"动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","area_url":"5&6&7&8&9&10&11","sort_name":"","year_name":"国产剧&港台剧&日韩剧&欧美剧","sort_url":"","year_url":"12&13&14&15","find_rule":"js:require(config.依赖);\n//影片列表定位，到每一个影片的标签\nvar 列表 = 'body&&.stui-vodlist&&li';\n//每一个影片的详情项定位\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 链接 = 'a&&href';\nyiji()\n","searchFind":"js:require(config.依赖);\n//影片列表定位，需可以定位到每一个影片的标签\nvar 列表 = 'body&&.stui-vodlist__media&&li';\n//每一个影片的详情项定位\nvar 标题 = 'a&&title';\nvar 描述 = '.pic-text&&Text';\nvar 内容 = '.detail&&p,1&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 链接 = 'a&&href';\nsousuo()\n","search_url":"https://www.6ygo.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:require(config.依赖);\n//二级变量\nvar 项目1 = '.stui-content__detail&&.data,1&&Text';//显示在影片详情右上第一行\nvar 项目2 = '.stui-content__detail&&.data,2&&Text';//显示在影片详情右上第二行\nvar 项目3 = '.stui-content__detail&&.data,0&&Text';//显示在影片详情右上第三行1\nvar 项目4 = '';//显示在影片详情右上第三行2\nvar 项目5 = '.stui-content__detail&&.data,3&&Text';//显示在影片详情右上第四行\nvar 项目6 = '';//显示在影片详情右上第五行\nvar 图片 = '.stui-content__thumb&&img&&data-original';\nvar 简介 = '#desc&&.col-pd&&Text';\nvar 过虑 = '';//过虑字符以|隔开，支持通配符.*\nvar 线路列表 = '.col-lg-wide-75&&.playlist';//此标签定位到线路数组\nvar 单个线路 = 'h3&&Text';//此标签定位到每一条线路的名称\nvar 影片列表 = '.col-lg-wide-75&&.stui-content__playlist';//此标签定位到所有播放地址数组\nvar 单个影片 = 'ul&&li';//此标签定位到每一集的名称和地址\n\n//解析设置\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.stui-player__video&&script&&Html'));\n    var url = player_aaaa.url;   \n    require(config.依赖.match(/https.*\\//)[0] + 'SrcParseS.js');\n    if (url.search(/\\.mp4|\\.m3u8/)>-1) {\n        return url + '#isVideo=true#' \n    } else if(url.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bilibili|sohu|pptv|le/)){\n\t    return SrcParseS.官网(url);\n    }else{\n\t    return SrcParseS.嗅探(input);\n    }\n});\n\nerji()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://gitcode.net/src48597962/hk/-/raw/master/srcDyTmpl.js\"\n});\n//上面的代码不要修改，by.帅√`人才 影视模板","pages":"[]","proxy":"","icon":"https://m.6ygo.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"IMAxw","author":"","version":0,"type":"video","url":"hiker://empty##https://imaxw.com/vodshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = []\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.page-wrapper&&dl'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a:not(:matches(首页|追剧|热搜|APP|专题|更新))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype(\\/\\d+)\\.html/, 'vodshow$1-----------.html').replace('---.html', page + '---.html').replace(/(---\\d+\\.html)/, page + '$1')\n}\n//log(true_url)\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.card-sm')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, '.card-title&&Text'),\n        desc: pdfh(video, 'text-muted&&Text'),\n        img: pd(video, '.object-cover&&src'),\n        url: pd(video, 'a&&href'),\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar d = [];\r\nvar html = getResCode();\n//var lazy = `@lazyRule=html&&#video&&script&&Html.js:eval(input.replace(/player_.*?={/,'player_aaaa={'));unescape(base64Decode(player_aaaa.url))`\nvar lazy=`@lazyRule=.js:var xx=JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);var jsurl=unescape(base64Decode(xx.url));var from=xx.from;if(jsurl.match(/youku|mgtv|ixigua|qq.com|qiyi|migu|bili|sohu|pptv|le|RongXing/)){eval(\"var config =\" + fetch(\"hiker://files/cache/MyParseSet.json\"));eval(fetch(config.cj));aytmParse(jsurl)}else if(from === 'liangzi'){x='https://vip.lz-cdn14.com'+request(jsurl,{headers: {'Referer':'https://imaxw.com/'}}).match(/main = \"(.*?)\"/)[1]}else{jsurl}`;\r\nvar 简介 = ' '+pdfh(html , '#synopsis&&p&&Text');\n//log(简介)\r\nvar des_pic = pd(html , '.col-md-auto&&img&&src');//图片\n\r\nd.push({\r\n\t  title: pdfh(html, 'body&&.mb-md-2,3&&p&&Text')+'\\n'+pdfh(html, 'body&&.mb-md-2,4&&p&&Text'),\r\n\r\n         desc:pdfh(html, ''),\r\n\r\n         pic_url:des_pic,\r\n\r\n         url: \"hiker://page/Route?rule=MyFieldᴰⁿ&type=设置#noHistory#\",\r\n\r\n         col_type: 'movie_1_vertical_pic_blur'\r\n});\r\nd.push({\r\n   title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(3, 65) + '...</font><small><font color=\"red\">详情</font></small></small>',\r\n    url: 'hiker://empty#' +'\\n\\t\\t\\t\\t\\t\\t\\t'+ 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\r\n    col_type: 'text_1'\r\n});\r\n\r\n\r\n//线路列表名称\r\nvar arts = pdfa(html,'body&&.nav&&li');\n//error(arts)\r\nvar tabs = [];\r\nfor (var i in arts) {\r\n    tabs.push(pdfh(arts[i], 'a&&Text'))\r\n}\r\n\r\n//选集列表\r\nvar conts = pdfa(html, 'body&&div[class=\"d-flex\"]');\r\nvar lists =[];\r\nfor (var i in conts) {\r\n    lists.push(pdfa(conts[i], 'body&&a'))\r\n}\r\n\r\n//线路切换\r\nfunction setTabs(tabs, vari) {\r\n     d.push({\r\n         title: '‘‘线路:’’',\r\n            col_type: 'scroll_button',}) \r\n  for (var i = 0; i < tabs.length; i++) {\r\n    d.push({\r\n        title: getVar(vari, '0') == i ? '““' + tabs[i] + '↓' + '””' : tabs[i],\r\n        url: `hiker://empty@lazyRule=.js:putVar('` + vari + \"', '\" + i + `');refreshPage();'toast://切换线路';'#noHistory#hiker://empty'`,\r\n\t\t      col_type: 'scroll_button',\r\n        })\r\n    }\r\n    \r\n\r\n\r\n\r\n//正反序         \r\n    d.push({        col_type: 'line_blank'    })}\r\n\r\nif (getVar('shsort') == '1') {var sx='‘‘’’<font color=\"#228be6\"> (逆序)</font></small>';}else {var sx='‘‘’’<font color=\"#0aa344\"> (正序)</font></small>';}\r\n    function setLists(lists, index) {\r\n        d.push({\r\n           // title: '‘‘选集’’',\r\n            title: '‘‘选集’’' +''+ sx,\r\n            url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\r\n            col_type: 'text_center_1'\r\n        })\r\n\r\nif(lists.length != '')  {\r\n        var list = lists[index];\r\nif (getVar('shsort') == '1') {\r\n            for (var j = list.length - 1; j >= 0; j--) {\r\n                d.push({\r\n                title: pdfh(list[j], 'Text').replace(/第|话|期/g,''),\r\n                url:pd(list[j], 'a&&href')+lazy,\r\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\r\n                });\r\n            }\r\n        } else {\r\n            for (var j = 0; j < list.length; j++) {\r\n                d.push({\r\n                title: pdfh(list[j], 'Text').replace(/第|话|期/g,''),\r\n                url:pd(list[j], 'a&&href')+lazy,\r\n                col_type: list.length > 4 ? 'text_4' : 'text_2'\r\n                });\r\n            }\r\n        }\r\n        \r\n        }\r\n      d.push({title:'<br>',col_type:'rich_text' });      \r\n    }\r\n\r\n// 调用函数\r\nsetTabs(tabs, MY_URL);\r\nsetLists(lists, getVar(MY_URL, '0'));\r\nd.push({\r\n    col_type: 'big_blank_block'\r\n});\r\nd.push({\r\n    col_type: 'big_blank_block'\r\n});\r\nd.push({\r\n    title: '““””<small><font color=#871f78>以上数据来源于网络，如您喜欢，请支持官方</font></small>',\r\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何组织或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\r\n    url: MY_URL,\r\n    col_type: 'text_center_1'\r\n});\r\nd.push({\r\n    title: '<br>',\r\n    col_type: 'rich_text'\r\n});\r\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"蛋蛋赞·Q","author":"发粪涂墙","version":0,"type":"video","url":"https://www.dandanzan10.top/fyclass/-fyarea-fyyear-fypage-fysort.html[firstPage=https://www.dandanzan10.top/fyclass/-fyarea-fyyear--fysort.html]","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"dianshiju&dianying&zongyi&dongman","area_name":"全部&中国大陆&美国&香港&台湾&日本&韩国&英国&法国&德国&意大利&西班牙&印度&泰国&俄罗斯&伊朗&加拿大&澳大利亚&爱尔兰&瑞典&巴西&丹麦","area_url":"&中国大陆&美国&香港&台湾&日本&韩国&英国&法国&德国&意大利&西班牙&印度&泰国&俄罗斯&伊朗&加拿大&澳大利亚&爱尔兰&瑞典&巴西&丹麦","sort_name":"按时间排序&按人气排序&按评分排序","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&更早","sort_url":"newstime&onclick&rating","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2002&2001&1__2000","find_rule":"js:\nvar d = [];\r\nvar html = getResCode();\r\nvar list = pdfa(html, 'body&&ul,1&&li');\r\n\r\nfor (var i in list) {\r\n    var title = pdfh(list[i], 'h2&&Text');\r\n    var img = pd(list[i], 'img&&src');\r\n    var url = pd(list[i], 'a&&href');\r\n    var desc = pdfh(list[i], 'body&&.thumbnail||body&&.thumbnail&&Text');\r\n    d.push({\r\n        title: title,\r\n        pic_url: img,\r\n        url: url + '#immersiveTheme#',\r\n        desc: desc\r\n    });\r\n}\r\nsetResult(d);","searchFind":".lists-content&&li;h2&&Text;a&&href.js:input+'#immersiveTheme#';span&&Text;.countrie&&Text;img&&src","search_url":"/so/**-**-fypage@-1@-newstime.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode()\nd.push({\n    title: pdfh(html, '.product-excerpt,3&&Text') + '\\n' + pdfh(html, '.product-excerpt,2&&Text') + '\\n' + pdfh(html, '.product-excerpt,1&&Text'),\n    img: pd(html, 'img,1&&src'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n})\n\nif (getVar(MY_URL + '1', '') == '') {\n    d.push({\n        col_type: \"x5_webview_single\",\n        url: MY_URL,\n        desc: \"0\",\n        extra: {\n            blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '*.js', '.m3u8', '.mp4', '.php'],\n            js: $.toString((lb, json) => {\n                if (json == '') {\n                    eval(request('https://www.dandanzan10.top/js/runtime.js'));\n                    var T = new(window.sablejs()),\n                        J = T.getGlobal();\n                    eval(request('hiker://files/rules/js/Run.js'))\n                    fba.putVar(lb, newlinks.value)\n                }\n            }, MY_URL + '1', getVar(MY_URL + '1', ''))\n        }\n    })\n    refreshPage(true)\n    d.push({\n        title: '正在获取资源',\n        url: '',\n        col_type: \"text_center_1\",\n    });\n\n}\n\nvar video = getVar(MY_URL + '1', '').split('@@@');\nvar tabs = [];\nvar lists = [];\n\nvar conts = video\n\nfor (var i in conts) {\n    if (conts[i] != '') {\n        tabs.push(conts[i].split('!!!')[0])\n        lists.push(conts[i].split('!!!')[1].split('|'))\n    }\n}\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? '““' + tabs[i] + '””' : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n}\n\nfunction setLists(lists, index) {\n    var list = lists[index];\n    if (getVar('shsort') == '1') {\n        var list = lists[index].reverse();\n    }\n    for (var j in list) {\n        if (list[j] != '') {\n            let params = list[j].split('$');\n            let t = params[0];\n            let u = params[1];\n            if (!u.startsWith('http')) {\n                u = u + $('').lazyRule((MY_HOME) => {\n                    var play = postRequest(MY_HOME + '/url.php', {\n                        body: {\n                            url: input,\n                            sign: parseInt(\"0x62AB43C9\") + input.length\n                        }\n                    })\n                    return play\n                }, MY_HOME)\n            }\n            d.push({\n                title: t,\n                url: u,\n                col_type: 'text_3'\n            });\n        }\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.dandanzan10.top/js/logo.png"},{"last_chapter_rule":"","title":"恐怖迷Q","author":"","version":0,"type":"other","url":"https://kbfans.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电影vip","class_url":"mianfeidianying&dianyingvip","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://kbfans.com/vodsearch/**-------------.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"不休影视Q","author":"","version":0,"type":"video","url":"https://www.bxiutv.com/btop/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"dianying&dianshiju&dongman&zongyi","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.bxiutv.com/so**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"thefree影视","author":"","version":0,"type":"video","url":"https://www.thefree.vip/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧","class_url":"1&2","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.thefree.vip/vodsearch/-------------.html?wd=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"真卡影院.dr","author":"","version":1,"type":"video","url":"hiker://empty##http://www.kan8.tv/films/fyclass_fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&动漫&综艺","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"body&&.thumb;a&&title;a&&href.js:input+\"#immersiveTheme#\";;a&&Text;a&&data-original","search_url":"http://www.kan8.tv/search.php?searchword=**;POST;","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"动态分类\",\"rule\":\"const Color = \\\"#19B89D\\\";\\nconst empty = \\\"hiker://empty\\\"\\n\\nlet true_url = getVar(MY_RULE.url,MY_URL.split('##')[1])\\n//log(true_url)\\nconst page = MY_PAGE\\n//log(page)\\nif (getVar(MY_RULE.url)) {\\n    true_url = true_url.replace(/---(\\\\d*)\\\\.html/, +page + '---$1.html');\\n    //log(true_url)\\n}\\nvar html = fetch(true_url, {\\n    headers: {\\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n    }\\n})\\n\\nconst category = ['<a href=\\\\\\\"/vodshow/2-----------.html\\\\\\\" >电视剧</a> <a href=\\\\\\\"/vodshow/1-----------.html\\\\\\\" >电影</a> <a href=\\\\\\\"/vodshow/3-----------.html\\\\\\\" >综艺</a> <a href=\\\\\\\"/vodshow/4-----------.html\\\\\\\" >动漫</a>']\\n\\nconst categories =category.concat(parseDomForArray(html, '.main&&.scroll-content'))\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #F54343\\\">∨</span></b>' : '““””<b><span style=\\\"color: ' + Color + '\\\">∧</span></b>',\\n        url: $(empty).lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'flex_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = parseDomForArray(category, 'body&&a');\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = parseDomForHtml(item, 'a&&Text')\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color:' + Color + '\\\">' + title + '</span></b>' : title,\\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'flex_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = parseDomForHtml(item, 'a&&Text')\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<span style=\\\"color:' + Color + '\\\">' + title + '</span>' : title,\\n                    url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=真卡影院"},{"last_chapter_rule":"","title":"核桃影院","author":"","version":0,"type":"other","url":"http://kkkk.plus/vodshow/fyclass--fysort------fypage---fyyear.html","col_type":"movie_3_marquee","class_name":"电影&连续剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"时间&人气&评分","year_name":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2001&2000","sort_url":"time&hits&score","year_url":"2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004&2003&2001&2000","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://kkkk.plus/so/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        return 'video://'+input\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":".name&&span&&Text","title":"哈哩哈哩","author":"永远の明日","version":4,"type":"video","url":"http://halihali.icu/#fyclass#fyyear#fysort#fyarea#fypage","col_type":"movie_3","class_name":"动漫 ->番表:&周一&周二&周三&周四&周五&周六&周日&‖ 电影&电视剧&综艺","class_url":"acg&1&2&3&4&5&6&7&mov&tv&zongyi","area_name":"地区:&大陆&日本&美国&英国&韩国&香港&台湾&泰国","area_url":"all&china&japan&american&england&korea&hk&tw&thailand","sort_name":"剧情:&搞笑&经典&热血&催泪&治愈&猎奇&励志&战斗&后宫&机战&恋爱&百合&科幻&奇幻&推理&校园&运动&魔法&历史&伪娘&美少女&萝莉&亲子&青春&冒险&竞技&本分类只适用于动漫","year_name":"年代:&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&更早","sort_url":"0&71&72&73&74&75&76&78&80&81&82&84&85&86&88&89&90&91&94&95&101&102&103&105&107&108&109&0","year_url":"0&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2000","find_rule":"js:\n// halihali.li\nlet [, action, year, plot, area, page] = /^http:\\/\\/halihali.icu\\/#(.*?)#(.*?)#(.*?)#(.*?)#(.*?)$/.exec(MY_URL)\nlet data = []\nif (/^[1-7]$/.exec(action)) {\n  let list = parseDomForArray(fetch('http://halihali.icu/zhougen/', {}), '#con_dm_' + action + '&&span').slice(1)\n  data.push({ col_type: 'line' })\n  list.forEach((v) => data.push({\n    title: parseDomForHtml(v, 'a&&Text'),\n    url: parseDom(v, 'a&&href') + '#immersiveTheme#',\n    col_type: 'text_1'\n  }))\n} else {\n  if (action != 'acg') plot = 0\n  let url = /http:\\/\\/(?:\\d{1,4}\\.){3}\\d{1,4}:\\d{1,5}\\/getsortdata_all_z\\.php/.exec(fetch(MY_URL.replace(/#/g, '/') + '.html', {}))[0]\n  log(fetch(url + '?action=' + action + '&page=' + page + '&year=' + year + '&area=' + area + '&class=' + plot, {}))\n  let list = parseDomForArray(fetch(url + '?action=' + action + '&page=' + page + '&year=' + year + '&area=' + area + '&class=' + plot, {}), 'body&&li')\n  list.forEach((v) => data.push({\n    title: parseDomForHtml(v, 'a&&title'),\n    desc: parseDomForHtml(v, '.img&&Text'),\n    pic_url: parseDom(v, 'img&&src'),\n    url: parseDom(v, 'a&&href') + '#immersiveTheme#'\n  }))\n}\nsetResult(data)","searchFind":"js:\nlet [, url] = /var my_search='(http.*php)'/.exec(getResCode())\nlet list = JSON.parse(fetch(url + '?q=' + MY_URL.split('?searchword=')[1], {}))\nvar data = []\nlist.forEach((v) => data.push({\n  title: v.title,\n  url: 'http://halihali.icu/' + v.url + '#immersiveTheme#',\n  content: '连载集数: ' + v.lianzaijs + '\\n演员: ' + v.star,\n  desc: v.time + ' • ' + v.area,\n  img: v.thumb\n}))\nsetResult(data);","search_url":"http://halihali.icu/search.php?searchword=**","titleColor":"#ff00ff","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nlet html = getResCode()\nsetPageTitle(parseDomForHtml(html, '.lazy&&alt'))\nlet playUrl = fetch(MY_URL.slice(0, -16) + '1.html', {}).match(/<script[^<>]*?src=\"(.*?)\"><\\/script>[^<>]*?<body>/)[1],\n  tabs = fetch(playUrl, {}).match(/var lianzaijs.*?ed=1/g).map((v) => v.match(/\".*?\"/g).map((v) => v.slice(1, -1))),\n  data = []\n\ndata.push({\n  title: parseDomForHtml(html, '.name&&span&&Text') + '\\n共有' + tabs.length + '条线路',\n  desc: parseDomForHtml(html, '.des2--b&&Text'),\n  pic_url: parseDom(html, '.lazy&&data-original'),\n  url: MY_URL,\n  col_type: 'movie_1_vertical_pic_blur'\n});\ntabs.forEach((v, i) => {\n  data.push({\n    title: '线路' + (i + 1) + '    集数:' + v.length,\n    col_type: 'text_center_1'\n  });\n  v.forEach((v) => {\n    let [url,, title] = v.split(',')\n    data.push({\n      title: unescape(title),\n      url: $(url).lazyRule(() => {\n        try {\n          let jx = JSON.parse(fetch('https://1717.ntryjd.net/0526/api.php', { body: 'url=' + input, method: 'POST' })).url\n          return (jx.indexOf('https:') == -1 ? 'https:' + jx : jx) + '#isVideo=true#'\n        } catch (e) { return input }\n      })\n    })\n  })\n})\n\nsetResult(data);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"#ff00ff"},{"last_chapter_rule":"","title":"爱影视","author":"","version":0,"type":"video","url":"https://aiyingshis.com/vodshow/fyarea/by/fysort/id/fyclass/page/fypage/year/fyyear.html","col_type":"movie_3","class_name":"蓝光电影&蓝光电视剧&蓝光综艺&蓝光动漫&哔哩视频","class_url":"38&39&40&41&43","area_name":"全部&大陆&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/大陆&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"时间&人气&评分","year_name":"全部&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","sort_url":"time&hits&score","year_url":"&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&2004","find_rule":"js:\r\nvar d = [];\nvar list = parseDomForArray(getResCode(), 'body&&.module-item');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], '.lazyloaded&&alt'),\r\n       desc: parseDomForHtml(list[j], '.module-item-text&&Text'),\r\n       img: parseDom(list[j], '.lazyloaded&&data-src')+'@Referer=',\r\n       url: parseDom(list[j], 'a&&href')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode();\n\nvar list = parseDomForArray(html,'body&&.module-list&&.module-search-item');\n\n    for (var i = 0; i < list.length; i++) {\n        var L = list[i];\n        d.push({\n            title: parseDomForHtml(L, 'img&&alt'),\n            url: parseDom(L, 'a,1&&href')+\"#immersiveTheme#\",\n            desc:  parseDomForHtml(L, '.video-info&&a&&Text'),\n            content: parseDomForHtml(L, '.video-info-main&&.video-info-item,2&&Text'),\n            img: parseDom(L, 'img&&data-src'),\n        });\r\n    }\nsetResult(d)","search_url":"https://aiyingshis.com/vodsearch/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    eval(parseDomForHtml(fetch(input, {\n        headers: {\n            'User-Agent': MOBILE_UA\n        }\n    }), '.player-wrapper&&script&&Html'));\n    var url = player_aaaa.url;\n    if (url.search(/m3u8|mp4/)>-1) {\n        var video = url\n    } else {\neval(fetch('https://aiyingshis.com/static/js/playerconfig.js'));\n        var jx = MacPlayerConfig.player_list[player_aaaa.from].parse;\n        if (jx == '') {\n            jx = MacPlayerConfig.parse\n        };\n        var play = jx + url\n        showLoading(\"\\u5df2\\u5f00\\u542f\\u5f3a\\u529b\\u55c5\\u63a2\\uff0c\\u8bf7\\u7a0d\\u5019\");\n        var video = 'x5Rule://' + play + '@' + $.toString(() => {\n            var urls = _getUrls()\n            for (var i in urls) {\n                if (urls[i].match(/\\.mp3|\\.mp4|\\.m3u8/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i];} else if (urls[i].match(/\\.flv/)) {\n                    fy_bridge_app.log(urls[i])\n                    return urls[i]+';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\n               }\n            }\n        })\n    }\n    return video\n});\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.scroll-box-y');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.video-info-items&&Text').replace(/\\//g,' ');\n\nvar 主演 = parseDomForHtml(html, '.video-info-items,1&&Text').replace(/\\//g,' ');\n\nvar 更新 = parseDomForHtml(html, '.video-info-items,2&&Text');\n\nvar 状态 = parseDomForHtml(html, '.video-info-items,3&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-src');\n\nvar 简介 = parseDomForHtml(html, '.vod_content&&span&&Text');\n\n\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,   \n    col_type: 'movie_1_vertical_pic_blur'\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://aiyingshis.com/mxstatic/picture/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"348影视.dr","author":"道长","version":1,"type":"video","url":"https://www.348z.com/vodshow/id/fyclass/page/fypage.html","col_type":"movie_3_marquee","class_name":"电影&电视剧&综艺&动漫&4k","class_url":"1&2&3&4&37","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\n自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/vodsearch/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=348影视"},{"last_chapter_rule":"","title":"韩剧TV","author":"道长","version":1,"type":"video","url":"hiker://empty##https://www.hanjutv.me/hanju/page/fypage","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".m-movies&&.u-movie;h2&&Text;img&&data-original;.zhuangtai&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page=MY_PAGE;\ntrue_url = 获取正确链接();\n//log(true_url);\nlet data=[{\n        一级分类: 'body&&.nav',\n        子分类: 'body&&li:has(a[href]):matches(韩剧|韩综|韩影)',\n        分类链接: {\n            二次处理(url) {\n                return url.replace(/type\\/(.*).html/, 'show/$1-----------.html')\n            }\n        }\n    }];\nif(/\\/hanju/.test(true_url)){\n    data.push({\n        一级分类: 'body&&.sub-menu',\n        子分类: 'ul&&li:has(a[href]):not(:matches(^$))',\n    });\n}\nlet cates=打造动态分类(data);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nMY_URL=MY_URL.split('##')[1];\nvar html=获取源码(MY_URL,PC_UA,'https://www.hanjutv.me/');\nparStr=\".m-movies&&.u-movie;h2&&Text;img&&data-original;.zhuangtai&&Text;a&&href\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##https://www.siguyy.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse={\n title:'h1.article-title&&Text;.article-meta&&Text',\n img:'.video_img&&img&&src',\n url:'.video_img&&img&&src',\n desc:'.video_info&&Text',\n content:\"p.jianjie&&Text\",\n tabs:'#playnav&&li',\n lists:'#playcontainer&&.tab,#id&&a',\n tab_id:'',\n};\nvar 二级处理={\n    重定向:function(url,html){\n    url=pd(html,'#video_list_li&&.vlink&&a&&href');    \n  log('选集列表重定向:'+url);          \n  html= 获取源码(url,PC_UA,url);\n  return html;\n}\n\n}\nvar 动态最新章节=true;\nvar 倒序=false;\n二级(parse,false,true);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.hmtv.me/images/icon.png"},{"last_chapter_rule":"","title":"AH视频","author":"发粪涂墙&ssl","version":0,"type":"video","url":"hiker://empty##https://www.sstv.pw/vodshow-2/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.swiper-wrapper,1:'\nconst 拼接分类 = 'body&&.site-tabs'\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url+'page/'+page\n}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.list-a&&li')\nfor (var j in list) {\n    var img = pd(list[j], '.lazy&&data-original') + '@Referer='\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.list-remarks&&Text'),\n        img: img,\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d = [];\nvar html = getResCode()\nvar list = pdfa(html, 'body&&.search-list');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'h2&&Text'),\n        desc: pdfh(list[j], '.deployment&&Text'),\n        img: pd(list[j], '.lazy&&data-original') + '@Referer=',\n        content: pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    })\n}\nsetResult(d)","search_url":"/index.php/vod/search/page/fypage/wd/**/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n    return x5rule(input, input);\n});\nd.push({\n    title: pdfh(html, '.deployment&&Text'),\n    desc: pdfh(html, '.detail-box&&Text'),\n    img: pd(html, '.lazy&&data-original'),\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur'\n});\nvar 线路 = '.swiper-wrapper&&a'\nvar 选集 = 'body&&.content-playlist'\nvar 线路名 = 'a&&Text'\nvar 选集列表 = 'ul&&li'\neval(JSON.parse(request('hiker://page/erji?rule=模板·Q')).rule)\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.sstv.pw/template/Ds-pc/images/ico/favicon.ico"},{"last_chapter_rule":"","title":"VOFLIX♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##https://www.voflix.com/show/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function(){\n        return '#'+('00000'+(Math.random()*0x1000000<<0).toString(16)).substr(-6);\n      }\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.module-class-items'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|APP))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/type\\/(\\d+).html/, 'show/$1-----------.html').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1').replace('.html', '/page/' + page + '.html')\n}\nlog(true_url)\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dt')).rule);\n\nconst list = parseDomForArray(html, '.module-items&&a')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.module-item-note&&Text'),\n        img: pd(video, 'img&&data-original') + \"@Referer=\",\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\r\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img&&data-original')+'@Referer=',\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"https://www.voflix.com/search/**----------fypage---.html","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.module-tab-item');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'span&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.module-play-list-content');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.module-info-item,2&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 主演 = parseDomForHtml(html, '.module-info-item,1&&Text').replace(/\\//g,' ').replace('  ','');\n\nvar 更新 = parseDomForHtml(html, '.module-info-item,3&&Text');\n\nvar 状态 = parseDomForHtml(html, '.module-info-item,4&&Text');\n\nvar 图片 = parseDom(html, '.lazy&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.module-info-introduction-content&&Text').replace('[收起部分]','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#3490de\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 3 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"text_3","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var MY_HOME= 'https://www.jubaibai.cc'\\n\\nvar lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    eval(getCryptoJS())\\n\\n    if (/ddzy|duoduo/.test(html.from)) {\\n        eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n        var jx = MacPlayerConfig.player_list[html.from].parse\\n        eval(request(jx + url, {\\n            headers: {\\n                'Referer': MY_URL\\n            }\\n        }).match(/var config = {[\\\\s\\\\S]*?}/)[0])\\n        jx = jx.replace('?url=', '')\\n        eval(request(jx + 'js/decode.js'))\\n        jxk = request(jx + 'js/setting.js').split(',')\\n        jx += '555tZ4pvzHE3BpiO838.php' //eval(jxk[32])\\n        config.tm = new Date().getTime()\\n        config.sign = 'F4penExTGogdt6U8' //eval(jxk[36])\\n        return getVideoInfo(JSON.parse(fetch(buildUrl(jx, config))).url)\\n    } else {\\n        return url\\n    }\\n}, MY_HOME);\"}]","proxy":"","icon":"https://gmu-download.oss-cn-beijing.aliyuncs.com/MTY1OTQ5MDQ1OTA4MiM3MDkjcG5n.png"},{"last_chapter_rule":"","title":"影视工厂♔","author":"蓝莓果酱UX","version":12,"type":"video","url":"hiker://empty##https://www.ysgc.fun/vodshow/1--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.nav-list'\nconst 拼接分类 = 'body&&.nav-slide'\nconst 小类定位 = 'body&&a:not(:matches(首页|APP下载|剧情|地区|年份|语言|字母|排序|资讯|明星|直播))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_URL.match(/(.*)-(.*?)---/)[2];\ntrue_url = true_url.replace(/---(\\d*)\\.html/, +page + '---$1.html');\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dt')).rule)\n\nvar list = pdfa(html, 'body&&.myui-vodlist&&li');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.text-right&&Text'),\n        img: pd(list[j], '.lazyload&&data-original') + '@Referer=',\n        url: pd(list[j], 'a&&href') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:var d=[];\n\nvar list=JSON.parse(getResCode()).list;\n\nfor(var i in list){\nd.push({\ntitle:list[i].name,\ndesc:list[i].name,\npic_url:list[i].pic.indexOf('http') != -1 ? list[i].pic : 'https://www.ysgc.cc' + list[i].pic,\nurl:'https://www.ysgc.cc/voddetail/'+list[i].id+'/'+'#immersiveTheme#',\ncontent:list[i].name+'\\n'+list[i].en,                                                col_type:'movie_3'\n});\n}\nsetResult(d);","search_url":"https://www.ysgc.cc/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.nav-tabs&&li');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    var item = parseDomForHtml(arts[i], 'a&&Text');\n    tabs.push(item);\n\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.tab-content&&.myui-content__list');\nvar lists = [];\nfor (var i in conts) {\n    //log(conts[i]);\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\nvar 导演 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(导演)&&Text').replace(/\\//g, ' ');\n\nvar 主演 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(主演)&&Text').replace(/\\//g, ' ');\n\nvar 更新 = parseDomForHtml(html, '.myui-content__detail&&.data:contains(更新)&&Text').replace(/\\//g, ' ');\n\nvar 状态 = parseDomForHtml(html, '.myui-content__detail&&.data,0&&Text').replace(/\\//g, ' ');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original') + '@Referer=';\n\nvar 简介 = parseDomForHtml(html, '.text-collapse&&Text').replace(/详情/g, ' ');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\n\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 导演 + '\\n' + 主演,\n    desc: 更新 + '\\n' + 状态,\n    pic_url: 图片,\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\n\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#0aa344\">↑</font></small>' + '<small><font color=\"#ff4c00\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#ff4c00\">↑</font></small>' + '<small><font color=\"#0aa344\">↓</font></small>';\n}\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url: parseDom(list[j], 'a&&href') + lazy,\n                    col_type: list.length > 4 ? 'text_5' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\n\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    title: '““””<small><font color=#871f78>以上数据均来源于网络，如您喜欢，请支持正版！</font></small>',\n    desc: '““””<small><font color=#f20c00>此规则仅限学习交流使用，请于导入后24小时内删除，任何团体或个人不得以任何方式方法传播此规则的整体或部分！</font></small>',\n    url: MY_URL,\n    col_type: 'text_center_1'\n});\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule((MY_HOME) => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl = unescape(base64Decode(jsurl));\\n    } else {\\n        jsurl\\n    }\\n    var from = player.from;\\n    eval(fetch(MY_HOME + \\\"/static/js/playerconfig.js\\\"));\\n    var Parse = MacPlayerConfig.player_list[from].parse == '' ? MacPlayerConfig.parse : MacPlayerConfig.player_list[from].parse;\\n    if (Parse == '') {\\n        var pshtml = fetch(MY_HOME + \\\"/static/player/\\\" + from + \\\".js\\\");\\n        Parse = pdfh(pshtml, \\\"iframe&&src\\\").split(\\\"=\\\")[0] + \\\"=\\\"\\n    }\\n    if(Parse.startsWith(\\\"/\\\")){\\n        Parse = MY_HOME + Parse\\n    }\\n    var jxurl = Parse + jsurl;    \\n    log(jxurl)\\n   \\n    function GetPlayUrl(playUrl) {\\n        if (/mgtv|sohu/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\";\\n        } else if (/bili/.test(playUrl)) {\\n            return playUrl + \\\";{Referer@https://www.bilibili.com}\\\";\\n        } else if (/ixigua/.test(playUrl)) {\\n            return playUrl + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)&&Referer@https://www.ixigua.com/}\\\";\\n        } else {\\n            return playUrl + \\\"#isVideo=true#\\\";\\n        }\\n    }\\n    \\n    var html = request(jxurl, {\\n        headers: {\\n            \\\"Referer\\\": MY_HOME\\n        },\\n        method: \\\"get\\\"\\n    });\\n    try{\\n    eval(html.match(/var config = {[\\\\s\\\\S]*?}/)[0] + '');    \\n    //let sethtml = fetch(\\\"https://p.tjomet.com/duoduo/js/setting.js\\\");\\n    let sethtml = fetch(Parse.split('?')[0] + 'js/setting.js');\\n    eval(\\\"var adata = \\\" + sethtml.match(/;var __O.*?=(.*?)]/)[1] + \\\"]\\\");   \\n    //log(adata[8])    \\n    //log(config.token)\\n    var url = JSON.parse(request(Parse.split('?')[0] + adata[4], {\\n        headers: {       \\n            'origin': jxurl\\n        },\\n        body: \\\"url=\\\" + config.url + \\\"&vkey=\\\" + config.vkey + \\\"&token=\\\" + config.token + \\\"&sign=\\\" + adata[8],\\n        method: \\\"POST\\\"\\n    })).url;\\n    //log(url)\\n    eval(fetch(Parse.split(\\\"?\\\")[0] + \\\"js/decode.js\\\"));\\n    return GetPlayUrl(getVideoInfo(url))\\n    }catch(e){\\n        eval(fetch(\\\"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/2e54cc42-9b4c-457d-b2de-0cdf3e2aeeaa.js\\\"))\\n        var urls = html.match(/var urls = '(.*?)'/)[1];\\n        //log(urls)\\n        let playUrl = getVideoInfo(urls);\\n        //log(playUrl)\\n        return GetPlayUrl(playUrl)        \\n    }\\n}, MY_HOME);\\n$.exports.lazy=lazy;\"},{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n\\n    \\n\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"}]","proxy":"","icon":"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-03ee1f89-f0d4-49aa-a2b3-50e203514d8a/52f969bf-a8e0-4b5c-b14c-2f379814348c.ico"},{"last_chapter_rule":"js:\nvar chp = [];\ntry {\n    var html = getResCode();\n    var conts = parseDomForArray(html, 'body&&.stui-content__playlist');\n    for (var i = 0; i < conts.length; i++) {\n        var list = pdfa(conts[i], 'body&&li');\n        chp.push(list.length);\n    }     \n} catch (e) {}\nsetResult('更新至:' + (Math.max.apply(null, chp)));","title":"达达龟♔","author":"蓝莓果酱UX","version":3,"type":"video","url":"hiker://empty##http://www.dadagui.me/vodtype/1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.stui-header__menu'\nconst 拼接分类 = '#screenbox&&ul'\nconst 小类定位 = 'body&&a:not(:matches(首|留))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/vodtype\\/(\\d+).html/, 'vodshow/$1-----------.html').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1').replace('.html', '/page/' + page + '.html')\n}\nlog(true_url)\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\nlog(page)\neval(JSON.parse(request('hiker://page/dt')).rule)\nconst list = pdfa(html, '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, '.pic-text&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\" + pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nconst list = pdfa(getResCode(), '.stui-vodlist&&li')\nlist.forEach(video => {\n    d.push({\n        title: pdfh(video, 'a&&title'),\n        desc: pdfh(video, 'span&&Text'),\n        img: pd(video, 'a&&data-original') + \"@Referer=\" + pd(video, 'a&&data-original'),\n        url: pd(video, 'a&&href') + '#immersiveTheme#'\n    })\n})\nsetResult(d);","search_url":"https://www.dadagui.me/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n\neval(JSON.parse(request('hiker://page/lazy')).rule);\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&h3:not(:matches(猜你喜欢|剧情介绍|剧情简介|影片评论|推荐专题|&nbsp;热播榜|剧情 热播榜|热播榜|热门|更新|最新))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'ul&&li'))\n}\n\nvar 分类 = parseDomForHtml(html, '.data&&Text');\n\nvar 主演 = parseDomForHtml(html, '.data,2&&Text');\n\nvar 导演 = parseDomForHtml(html, 'p.data,3&&Text');\n\nvar 更新 = parseDomForHtml(html, '.data,4&&Text');\n\nvar 图片 = parseDom(html, '.lazyload&&data-original');\n\nvar 简介 = parseDomForHtml(html, '.desc&&Text').replace('简介：','').replace('详情','');\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#098AC1\";\nfunction getHead(title) {\n    return '‘‘’’<strong><font color=\"' + Color + '\">' + title + '</front></strong>';\n}\nlet line_model = 8;\nlet line_type_model = 'blank_block';\nd.push({\n    title: 分类 + '\\n' + 主演,\n    desc: 导演 + '\\n' + 更新,\n    pic_url: 图片,\n    url:MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra:{gradient: true}\n});\nd.push({\n    title: '‘‘’’<small><font color=\"#ff148e8e\">简介：' + 简介.substr(0, 55) + '...</font><small><font color=\"red\">详情</font></small></small>',\n    url: 'hiker://empty#' + '\\n' + 简介 + `@rule=js:var res = {}; var d = [];d.push({title:'影片简介：'+ MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n    col_type: 'text_1'\n});\n\n\nfor (let i = 0; i < line_model; i++) {\n    d.push({\n        col_type: line_type_model\n    })\n}\nfunction setTabs(tabs, vari) {\n    for (var i in tabs) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? getHead(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'scroll_button'\n        })\n    }\n    \n}\nfunction setLists(lists, index) {\n    d.push({\n        col_type: 'line_blank'\n    })\n}\nif (getVar('shsort') == '1') {\n    var sx = '‘‘’’<font color=\"#6639a6\">排序</font></small>' + '<small><font color=\"#f6416c\">↑</font></small>' + '<small><font color=\"#2b2e4a\">↓</font></small>';\n} else {\n    var sx = '‘‘’’<font color=\"#0aa344\">排序</font></small>' + '<small><font color=\"#2b2e4a\">↑</font></small>' + '<small><font color=\"#f6416c\">↓</font></small>';\n}\n\nvar Color = \"#f13b66a\";\nvar Color1 = \"#ea5455\";\n\nfunction setLists(lists, index) {\n    d.push({\n        title: '‘‘’’<span style=\"color:' + Color1 + '\"><small>选集列表</small>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t<span style=\"float:right\">' + '<small>' + sx + '</small>',\n        url: `#noLoading#@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功';'#noHistory#hiker://empty'`,\n        col_type: 'text_center_1'\n    })\n    var list = lists[index];\n\n    if (getVar('shsort') == '1') {\n        try {\n            for (var j = list.length - 1; j >= 0; j--) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href')+lazy,\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n    } else {\n        try {\n            for (var j = 0; j < list.length; j++) {\n                d.push({\n                    title: parseDomForHtml(list[j], 'a&&Text').replace(/第|集|话|期/g, ''),\n                    url:parseDom(list[j], 'a&&href') +lazy,extra: {\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', '.m3u8', '.mp4']\n                },\n                    col_type: list.length > 4 ? 'text_4' : 'text_2'\n                });\n            }\n        } catch (e) {\n            d.push({\n                title: '没有选集哟，不信点图片去看看👀',\n                col_type: 'text_center_1'\n            });\n        }\n\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nd.push({\n    title: '<br>',\n    col_type: 'rich_text'\n});\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"dt\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\n\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getVar(MY_RULE.group, \\\"0\\\")\\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #19B89D\\\">: (</span></b>' : '““””<b><span style=\\\"color: #910113\\\">: )</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putVar(MY_RULE.group, fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\ncategories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putVar(MY_RULE.title, JSON.stringify(new_cate))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putVar(MY_RULE.title, JSON.stringify(params.cate_temp))\\n                        putVar(MY_RULE.url, input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n    if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\n    eval(getCryptoJS())\\n\\n    if (/ddzy|duoduo/.test(html.from)) {\\n        eval(request(MY_HOME + '/static/js/playerconfig.js'));\\n        var jx = MacPlayerConfig.player_list[html.from].parse\\n        eval(request(jx + url, {\\n            headers: {\\n                'Referer': MY_URL\\n            }\\n        }).match(/var config = {[\\\\s\\\\S]*?}/)[0])\\n        jx = jx.replace('?url=', '')\\n        eval(request(jx + 'js/decode.js'))\\n        jxk = request(jx + 'js/setting.js').split(',')\\n        jx += '555tZ4pvzHE3BpiO838.php' //eval(jxk[32])\\n        config.tm = new Date().getTime()\\n        config.sign = 'F4penExTGogdt6U8' //eval(jxk[36])\\n        return getVideoInfo(JSON.parse(fetch(buildUrl(jx, config))).url)\\n    } else {\\n        return url\\n    }\\n}, MY_HOME);\"}]","proxy":"","icon":"https://www.dadagui.me/template/ddg/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"饭团影视♔","author":"蓝莓果酱UX","version":2,"type":"video","url":"hiker://empty##https://www.fantuanhd.com/type/id-1-fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\naddListener('onRefresh', $.toString(() => {\n    clearMyVar('Mykey');\n}));\nconst Color = \"#19B89D\";\nlet true_url = getVar(MY_RULE.url, MY_URL.split('##')[1])\n\nconst page = MY_PAGE\n//log(page)\nif (getVar(MY_RULE.url)) {\n    true_url = true_url.replace(/\\/type\\/(\\d*)\\.html/, '/show/$1-----------.html').replace(/(\\d+)\\.html/, '$1' + '/page/' + page + '.html').replace(/---(\\d*)\\.html/, +page + '---$1.html');\n    //log(true_url);\n}\n\nvar html = request(true_url);\nconst empty = \"hiker://empty\"\n\n\nconst categories = pdfa(html, '.stui-header__menu')\n\nlet init_cate = []\n\nfor (let i = 0; i < 20; i++) {\n    init_cate.push(\"0\")\n}\n\nconst fold = getVar(MY_RULE.group, \"0\")\nconst cate_temp_json = getVar(MY_RULE.title, JSON.stringify(init_cate))\nconst cate_temp = JSON.parse(cate_temp_json)\nif (parseInt(page) === 1) {\n \ncategories.forEach((category, index) => {\n    let sub_categories = parseDomForArray(category, 'body&&li:not(:matches(首页|专题|APP))');\n    if (index === 0) {\n        sub_categories.forEach((item, key) => {\n            let title = parseDomForHtml(item, 'a&&Text')\n            d.push({\n                title: key.toString() === cate_temp[index] ? '““””<b><span style=\"color:' + Color + '\">' + title + '</span></b>' : title,\n                url: $(parseDom(item, 'a&&href')).lazyRule((params) => {\n                    let new_cate = []\n                    params.cate_temp.forEach((cate, index) => {\n                        new_cate.push(index === 0 ? params.key.toString() : \"0\")\n                    })\n                    putVar(MY_RULE.title, JSON.stringify(new_cate))\n                    putVar(MY_RULE.url, input)\n                    refreshPage(true)\n                    return \"hiker://empty\"\n                }, {\n                    cate_temp: cate_temp,\n                    key: key,\n                    page: page,\n                }),\n                col_type: 'scroll_button',\n            })\n        })\n    }\n})\n}\n\n\nvar list = pdfa(html, '.stui-vodlist&&li');\nfor (var i in list) {\n    d.push({\n        title: pdfh(list[i], 'a&&title'),\n        desc: pdfh(list[i], '.pic-text&&Text') + '  ' + pdfh(list, '.pic-tag&&Text'),\n        img: pd(list[i], 'a&&data-original') + '@Referer=',\n        url: pd(list[i], 'a&&href').replace('play', 'detail').replace('-1-1.html', '.html') + '#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode().replace(/<!--|-->/g,\"\");\n\nvar list = parseDomForArray(html, '.stui-vodlist&&li');\r\nfor (var j in list) {\r\n  d.push({\r\n       title: parseDomForHtml(list[j], 'a&&title'),\r\n       desc: parseDomForHtml(list[j], '.pic-text&&Text'),\n      content:'主演：'+parseDomForHtml(list[j], 'p,-1&&Text'),\r\n       img: parseDom(list[j], 'a&&data-original')+`@Referer=`,\r\n       url: parseDom(list[j], 'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\r\n  });\r\n}\r\nsetResult(d);","search_url":"https://www.fantuanhd.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\n//自定义颜色\nconst Color = \"#19B89D\";\n\n//线路名列表的定位\nvar arts = parseDomForArray(html, 'body&&.stui-vodlist__head:not(:matches(猜你))');\n\n//线路名列表名称的定位\nvar tabs = [];\nfor (var i in arts) {\n    tabs.push(parseDomForHtml(arts[i], 'h3&&Text'))\n}\n\n//播放列表的列表的定位\nvar conts = parseDomForArray(html, 'body&&.stui-content__playlist');\nvar lists = [];\nfor (var i in conts) {\n    lists.push(parseDomForArray(conts[i], 'body&&a'))\n}\n\neval(JSON.parse(fetch('hiker://page/lazy', {})).rule);\n\nfunction getHead(title) {\n    return '‘‘’’<font color=\"' + Color + '\">' + title + '</font>';\n}\n\n//影片信息\ntry {\n    var title = pdfh(html, 'h1&&Text');\n    var des_desc = parseDomForHtml(html, '.detail-sketch&&Text').replace('展开全部', '').replace('　　', '');\n    var des_title = parseDomForHtml(html, '.data,2&&Text').substring(0, 35) + '<br>' + parseDomForHtml(html, '.data,1&&Text').substring(0, 35);\n    var des_pic = pd(html, '.lazyload&&data-original');\n/*\n    //调用x5二级新样式\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=2968');\n    //执行x5样式\n    header(d, {\n        大字: title,\n        片名: title,\n        图片: des_pic,\n        描述: des_title + '<br><br>' + '简介：' + des_desc\n    })\n    */\n            des_title = des_title.replace(/<br>/g, '\\n')\n            d.push({\n                title: des_title,\n                desc: des_desc,\n                pic_url: des_pic,\n                url: 'hiker://empty#' + des_title + '\\n影片介绍：' + des_desc + `@rule=js:var res = {}; var d = [];d.push({title:MY_URL.split('hiker://empty#')[1],col_type: 'long_text'});res.data = d; setHomeResult(res);`,\n                col_type: 'movie_1_vertical_pic_blur',\n                extra: {\n                    gradient: true\n                }\n\n            });\n    \n} catch (e) {\n    for (let m = 0; m < 16; m++) {\n        d.push({\n            col_type: \"big_blank_block\"\n        })\n    }\n}\n\nif (tabs.length > 0) {\n    function setTabs(tabs, taburl) {\n        if (getMyVar('选集排序') == 1) {\n            var sx = '<small>排序</small>' + '<font color = \"grey\"><b>↿</b></font>' + '<font color = \"' + Color + '\"><b>⇂</b></font>';\n        } else {\n            var sx = '<small>排序</small>' + '<font color = \"' + Color + '\"><b>↿</b></font>' + '<font color = \"grey\"><b>⇂</b></font>';\n        }\n\n        d.push({\n            title: '‘‘’’<b><span style=\"color:' + Color + '\">选集列表</span></b>' + '\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t' + sx,\n            url: `@lazyRule=.js:if(getMyVar('选集排序')==1){putMyVar('选集排序', 0);}else{putMyVar('选集排序', 1)};refreshPage(false);'hiker://empty'`,\n            col_type: 'text_center_1'\n        })\n\n        if (tabs.length > 1) {\n            d.push({\n                col_type: \"big_blank_block\"\n            });\n            d.push({\n                col_type: \"big_blank_block\"\n            });\n            for (var i in tabs) {\n                var tabname = tabs[i];\n                d.push({\n                    title: getMyVar(taburl, '0') == i ? getHead(tabname) : tabname,\n                    col_type: 'scroll_button',\n                    url: $(\"#noLoading#\").lazyRule((tabname, taburl, i) => {\n                        putMyVar('当前线路名', tabname);\n                        putMyVar(taburl, i)\n                        refreshPage(false);\n                        return 'hiker://empty'\n                    }, tabname, taburl, i)\n                })\n            }\n            d.push({\n                col_type: 'line_blank'\n            })\n        }\n    }\n\n    function setLists(lists, index) {\n        var list = lists[index];\n        try {\n            if (pdfh(list[0], \"a&&Text\").match(/(\\d+)/)[0] > pdfh(list.slice(-1)[0], \"a&&Text\").match(/(\\d+)/)[0])\n                list.reverse()\n        } catch (e) {}\n\n        function playLists() {\n            var jm = pdfh(list[j], 'a&&Text').replace(/第|集|话|期/g, '');\n            var url = pd(list[j], 'a&&href');\n            if (list.length < 5) {\n                var col = 'text_2'\n            } else {\n                var col = jm.length > 5 ? 'text_3' : 'text_4'\n            }\n\n            d.push({\n                title: jm,\n                url: url + lazy,\n                col_type: col,\n                extra: {\n                    id: url,\n                    blockRules: ['.css', '.gif', '.jpg', '.jpeg', '.png', '.ico', '.svg', 'cnzz', 'google', 'xn--*:*', 'hm.baidu.com', '/ads/*.js', '.m3u8', '.mp4'],\n                    jsLoadingInject: true\n                }\n            });\n        }\n        addListener('onClose', $.toString(() => {\n            clearMyVar('当前线路名');\n            clearMyVar('分集起');\n            clearMyVar('分集终');\n        }))\n        //选集＞则启用选集分区\n        if (list.length > 24) {\n            //设置内页选集数目\n            var page_number = 20;\n            var star = getMyVar('分集起', '1');\n            var end = getMyVar('分集终', JSON.stringify(page_number));\n            var total = Math.ceil(list.length / page_number);\n            var catalogue = []\n            for (let i = 0; i < total; i++) {\n                catalogue += i * page_number + ',';\n                catalogue = catalogue.split(',');\n            }\n            for (let i = 0; i < 8; i++) {\n                d.push({\n                    col_type: \"blank_block\"\n                })\n            }\n            for (var i = 0; i < catalogue.length - 1; i++) {\n                var total1 = parseInt(catalogue[i]) + 1;\n                var total2 = parseInt(catalogue[i + 1]);\n                if (i == (catalogue.length - 2))\n                    var total2 = list.length;\n                d.push({\n                    title: star == total1 ? \"““””<font color='\" + Color + \"'>\" + total1 + \"-\" + total2 + \"</font>\" : total1 + \"-\" + total2,\n                    url: $(\"#noLoading#\").lazyRule((total1, total2) => {\n                        putMyVar('分集起', total1);\n                        putMyVar('分集终', total2);\n                        refreshPage();\n                        return 'hiker://empty'\n                    }, total1, total2),\n                    col_type: 'scroll_button'\n                });\n            }\n            if (getMyVar('选集排序') == 1) {\n                for (var j = end - 1; j >= star - 1; j--) {\n                    playLists()\n                }\n            } else {\n                for (var j = star - 1; j < end; j++) {\n                    playLists()\n                }\n            }\n        } else {\n            if (getMyVar('选集排序') == 1) {\n                for (var j = list.length - 1; j >= 0; j--) {\n                    playLists()\n                }\n            } else {\n                for (var j = 0; j < list.length; j++) {\n                    playLists()\n                }\n            }\n        }\n\n        // 底部留空\n        for (let n = 0; n < 6; n++) {\n            d.push({\n                col_type: \"blank_block\"\n            })\n        }\n    }\n\n    setTabs(tabs, MY_URL);\n    setLists(lists, getMyVar(MY_URL, '0'));\n} else {\n    d.push({\n        title: '‘‘暂无剧集’’',\n        url: 'hiker://empty',\n        col_type: 'text_center_1'\n    })\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"var lazy = $(\\\"\\\").lazyRule(() => {\\nrequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n    return x5rule(input, input);\\n});\"}]","proxy":"","icon":"https://www.fantuanhd.com/statics/img/favicon.ico"},{"last_chapter_rule":"","title":"星格影视","author":"妄炁","version":0,"type":"video","url":"http://xg.d0336.xyz/index.php/vod/show/id/1/page/fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.scroll-content'\nconst 拼接分类 = ''\nconst 小类定位 = 'body&&a'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nconst page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url.replace('.html', '/page/' + page + '.html')}\nvar html = fetch(true_url, {\n    headers: {\n        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\n    }\n})\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, 'body&&.module-item');\nfor (var j in list) {\n  var img = pd(list[j], 'img&&data-src')\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-text&&Text'),\n        img: img+'@Referer='+img,\n        url: pd(list[j], 'a&&href')+'#immersiveTheme#'\n    });\n}\nsetResult(d);","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"http://xg.d0336.xyz/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"糖糖","author":"幻梦月光贝","version":1,"type":"other","url":"https://www.1020ys.cn/index.php/vod/show/id/fyclass/page/fypage.html","col_type":"movie_3","class_name":"电影&剧集&综艺&动漫&B站","class_url":"1&2&3&4&5","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.1020ys.cn/index.php/vod/search.html?wd=**","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"#ffff6877"},{"last_chapter_rule":"","title":"78910","author":"幻梦月光贝","version":6,"type":"video","url":"https://www.789ba.com/show/fyclass---%E5%96%9C%E5%89%A7-----fypage---.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫","class_url":"2&1&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.789ba.com/search/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.789ba.com/template/789kp/statics/img/logo.png"},{"last_chapter_rule":"","title":"动视影院","author":"发粪涂墙&ssl","version":0,"type":"video","url":"hiker://empty##http://www.5207.top/index.php/vod/show/id/2/page/fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = 'body&&.navbar-items'\nconst 拼接分类 = 'body&&.scroll-content'\nconst 小类定位 = 'body&&a:not(:matches(首页|更新|热榜|资讯))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getVar(MY_RULE.url, MY_URL)\nvar page = MY_PAGE\nif(getVar(MY_RULE.url)){\ntrue_url = true_url\n        .replace(/type/,'show')\n        .replace('.html', '/page/' + page + '.html')}\nvar html = request(true_url)\n\neval(JSON.parse(request('hiker://page/dtfl?rule=模板·Q')).rule)\n\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'a&&title'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img||.lazy&&data-original||src') + '@Referer=',\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar html = getResCode()\neval(JSON.parse(request('hiker://page/yzm?rule=模板·Q')).rule)\r\nvar list = pdfa(html, '.module-items&&.module-item');\nfor (var j in list) {\n    d.push({\n        title: pdfh(list[j], 'img&&alt'),\n        desc: pdfh(list[j], '.module-item-note&&Text'),\n        img: pd(list[j], 'img&&data-original')+'@Referer=',\ncontent:pdfh(list[j], '.module-info-item-content&&Text'),\n        url: pd(list[j], 'a&&href') + \"#immersiveTheme#\"\n    });\n}\r\nsetResult(d)","search_url":"http://www.5207.top/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\neval(JSON.parse(request('hiker://page/y-playList?rule=模板·Q')).rule)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\\n    var url = html.url\\n   if (html.encrypt == '1') {\\n        url = unescape(url);\\n    } else if (html.encrypt == '2') {\\n        url = unescape(base64Decode(url));\\n    }\\nlog(url)\\nif (url.search(/\\\\.mp4|\\\\.flv|\\\\.m3u8/) > -1) {\\n        return url;\\n    } else {\\n    var ju = pd(fetch(input), '.player-box&&script,1&&src');\\n        eval(fetch(ju));\\n    var jx =  MacPlayerConfig.player_list[html.from].parse\\n    if (jx == '') {\\n            jx = MacPlayerConfig.parse\\n        }\\n        var jxurl = jx + url;log(jxurl)}\\n        showLoading(\\\"网页解析直连嗅探中,请稍后...\\\");\\n        var video = 'webRule://' + jxurl + '@'+ $.toString(() => {\\n            var urls = _getUrls()\\n            for (var i in urls) {\\n                if (urls[i].match(/\\\\.flv|\\\\.mp4|\\\\.m3u8/)) {\\n                    return urls[i];\\n                } \\nelse if (urls[i].match(/\\\\.flv/)) {\\n                    return urls[i] +  ';{Referer@https://www.bilibili.com/&&User-Agent@Mozilla/5.0}';\\n                }\\n                                     }\\n                          })\\n    return video\\n})\\n\"}]","proxy":"","icon":"https://api.iowen.cn/favicon/www.yinghua5.cc.png"},{"last_chapter_rule":"","title":"追剧影视D","author":"道长&爱是用心","version":0,"type":"video","url":"hiker://empty##https://www.a2mu.com/t/1-fypage.html","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split('##')[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\".myui-vodlist&&.col-lg-8;h3&&Text;.lazyload&&src;.pic-text&&Text;a&&href.js:input+'#immersiveTheme#'\";\nvar true_url = getMyVar('header.url', MY_URL);\nvar page = MY_URL.match(/-(.*?).html/)[1];\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n  一级分类: '.nav-list',\n        子分类: 'ul&&li:gt(0):lt(6)',\n   分类链接: {\n            二次处理(url) {\n                return url.replace(/vodtype\\/(\\d+)\\.html/, 'vodshow/$1-----------.html')\n            }\n        }\n},{\n        一级分类: 'body&&.myui-screen__list',\n        子分类: 'ul&&li:has(a[href])',\n    }]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nrequire(config.模板);\nlet parStr=\".myui-vodlist__media&&.clearfix;.title&&Text;.lazyload&&src;.pic-text&&Text;a&&href;.detail&&p,3&&Text\";\n一级(parStr,true);","search_url":"https://www.a2mu.com/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: 'h1&&Text;.myui-content__detail&&p.data,2&&Text;.myui-content__detail&&p.data,1&&Text',\n    img: '.lazyload&&data-original',\n    url: '.lazyload&&data-original',\n    desc: '.myui-content__detail&&p.data,4&&Text;.myui-content__detail&&p.data&&Text',\n    content: '.text-collapse&&Text',\n    tabs: '.nav-tabs&&li',\n    lists: '.myui-content__list,#id&&li',\n    //tab_id:'a&&href'\n};\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"https://www.a2mu.com/template/mytheme/statics/img/logo.png"},{"firstHeader":"class","last_chapter_rule":"","title":"鸭鸭鸭","author":"鸭鸭","version":1,"type":"video","url":"hiker://empty##https://www.rtmmf.com","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=鸭鸭鸭"},{"firstHeader":"class","last_chapter_rule":"","title":"鸭鸭不帅.DR","author":"鸭鸭","version":1,"type":"video","url":"hiker://empty##https://www.lzpan.com/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=鸭鸭不帅"},{"firstHeader":"class","last_chapter_rule":"","title":"稀饭影视.dr","author":"道长&Killer","version":0,"type":"video","url":"hiker://empty##https://www.xifanys.com/yingpianshow/dianying--------fypage---.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\nrequire(config.自动匹配);\nvar page = MY_PAGE;\nMY_URL=MY_URL.replace('hiker://empty##','');\n//log('MY_URL:'+MY_URL);\nvar true_url = getMyVar('header.url', MY_URL);\n//true_url = 获取正确链接();\nif(page>1){\n    true_url=true_url.replace(/type\\/(\\d+).html/, 'show/$1-----------.html').replace('---/', page + '---/').replace(/(---\\d+\\/)/, page + '$1').replace('.html', '/page/' + page + '.html')\n}\n//log('true_url:'+true_url);\nlet cates=打造动态分类([{\n    一级分类: 'body&&.library-list',\n    子分类: 'body&&a:not(:matches(首页|更新|热榜|APP))',\n}]);\n设置(cates);\n自动一级(null,cates,html);\n//自动一级();","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##/yingpiansearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//requireCache('https://lanmeiguojiang.com/lmysdm/lazy.js',24); \n//require('https://hjdhnx.coding.net/p/hiker/d/dr/git/raw/master/js/lazy.js');\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='Mozilla/5.0 (Linux; Android 11; Mi 10 Pro) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.152 Mobile Safari/537.36';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"聆听音乐","author":"旧巷陌人","version":0,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('hiker://page/Config.view')\ngetBaseParse()","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"Config.view\",\"rule\":\"const empty = 'hiker://empty'\\nconst page = MY_PAGE;\\n\\nconst Color = (test) => {\\n    return '<font color=\\\"#FA7298\\\">' + test + '</front>';\\n}\\n\\nconst Strong = (test) => {\\n    return '<strong>' + test + '</strong>';\\n}\\n\\nconst Small = (test) => {\\n    return '<small>' + test + '</small>';\\n}\\n\\nconst Gray = (test) => {\\n    return \\\"<font color='gray'>\\\" + test + \\\"</font>\\\";\\n}\\n\\nconst Big = (test) => {\\n    return '<b><font color=#000>' + test + '</font></b>'\\n}\\n\\nconst Rich = (test) => {\\n    return \\\"‘‘’’\\\" + test;\\n}\\n\\nconst getSearchUrl = (kw, empty) => {\\n    let mem = storage0.getItem(\\\"聆听记录\\\", []);\\n    mem = mem.filter(it => it != kw);\\n    if (mem.length >= 10) {\\n        mem = mem.slice(1);\\n    }\\n    mem.push(kw);\\n    storage0.setItem(\\\"聆听记录\\\", mem);\\n    return empty;\\n};\\n\\nconst getConfirm = () => {\\n    confirm({\\n        title: \\\"清除记录\\\",\\n        content: \\\"确定好了吗？记录将会不复存在~\\\",\\n        confirm: () => {\\n            clearItem(\\\"聆听记录\\\");\\n            refreshPage();\\n            toast('清除成功~');\\n        }\\n    })\\n}\\n\\nconst getConfigUrl = (path) => {\\n    return JSON.parse(request(path))\\n}\\n\\nconst getBaseParse = () => {\\n    try {\\n        let iTag = storage0.getMyVar(\\\":iTag\\\", []);\\n        if (iTag.length == 0) {\\n            path = 'http://101.43.12.135:3200/getSongListCategories'\\n            iTag = getConfigUrl(path).response.data.categories\\n            storage0.putMyVar(\\\":iTag\\\", iTag);\\n        }\\n        const d = []\\n        const contlist = [];\\n        iTag.forEach((tabs, i) => {\\n            name = tabs.categoryGroupName\\n            if (page == 1) {\\n                d.push({\\n                    title: getMyVar('分类', '0') == i ? Rich(Strong(Color(name))) : name,\\n                    url: $('#noLoading#').lazyRule((empty, i) => {\\n                        putMyVar('分类', i);\\n                        refreshPage()\\n                        return empty;\\n                    }, empty, i),\\n                    col_type: 'scroll_button'\\n                });\\n            }\\n            contlist[i] = [];\\n            conts = tabs.items;\\n            conts.forEach(item => {\\n                contlist[i].push({\\n                    title: item.categoryName,\\n                    url: item.categoryId\\n                });\\n            })\\n        })\\n        const index = getMyVar('分类', '0')\\n        if (page == 1) {\\n            d.push({\\n                col_type: 'blank_block'\\n            })\\n            contlist[index].forEach((contslist, i) => {\\n                d.push({\\n                    title: getMyVar(index, '0') == i ? Rich(Strong(Color(contslist.title))) : contslist.title,\\n                    url: $('#noLoading#').lazyRule((index, empty, i) => {\\n                        putMyVar(index, i);\\n                        refreshPage();\\n                        return empty;\\n                    }, index, empty, i),\\n                    col_type: 'scroll_button'\\n                });\\n            })\\n            d.push({\\n                title: \\\"请输入歌曲名称/关键词\\\",\\n                url: $(empty + '#noHistory##noRecordHistory#fypage').rule(() => {\\n                    setPageTitle('聆听·搜索')\\n                    require('hiker://page/Config.view')\\n                    const d = [];\\n                    getSearchParse(d)\\n                    setResult(d)\\n                }),\\n                col_type: \\\"icon_1_search\\\"\\n            })\\n        }\\n        id = contlist[index][getMyVar(index, '0')].url\\n        body = 'http://101.43.12.135:3200/getSongLists?categoryId=' + id + '&page=' + page\\n        data = getConfigUrl(body).response.data.list\\n        layoutParse(d, data)\\n        setResult(d)\\n    } catch (e) {\\n        setResult([{\\n            title: Rich(Gray(Small('~~~当前网络异常，请刷新重试~~~'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        }])\\n    }\\n}\\n\\nconst layoutParse = (d, data) => {\\n    if (data.length) {\\n        data.forEach(item => {\\n            d.push({\\n                title: item.dissname,\\n                pic_url: item.imgurl,\\n                url: $(empty + 'fypage').rule((item) => {\\n                    require('hiker://page/Config.view')\\n                    body = 'http://101.43.12.135:3200/getSongListDetail?disstid=' + item.dissid\\n                    data = getConfigUrl(body).response.cdlist[0]\\n                    const d = []\\n                    layoutsParse(d, data)\\n                    setResult(d)\\n                }, item),\\n                col_type: 'card_pic_3'\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst getplayer = (item) => {\\n    try {\\n        nameMap = ['标准', '高清', 'HD高清', '无损']\\n        musicMap = ['size_128mp3', 'size_192aac', 'size_320mp3', 'size_flac']\\n        musics = []\\n        i = musicMap.length\\n        while (i--) {\\n            body = 'https://api.dog886.com/v1/qq/getQQSong?id=' + (item.mid || item.songmid) + '&code=' + musicMap[i]\\n            music = getConfigUrl(body).data.url\\n            if (music.search('guid') >= 1) {\\n                musics.push(music)\\n            } else {\\n                nameMap.splice(i, 1)\\n            }\\n        }\\n        names = []\\n        x = nameMap.length\\n        while (x--) {\\n            names.push(nameMap[x])\\n        }\\n        body = 'https://api.dog886.com/v1/qq/getQQLyric?id=' + (item.mid || item.songmid)\\n        lysic = getConfigUrl(body).data\\n        if (musics.length) {\\n            return JSON.stringify({\\n                urls: musics,\\n                names: names,\\n                lyric: lysic\\n            })\\n        }\\n        return 'toast://暂无资源可播！！'\\n    } catch (e) {\\n        return 'toast://糟糕崩溃了！！请等待治愈....'\\n    }\\n}\\n\\nconst layoutsParse = (d, data) => {\\n    if (page == 1) {\\n        d.push({\\n            title: data.dissname,\\n            desc: Rich(Small(data.desc)),\\n            pic_url: data.logo,\\n            url: $(empty).lazyRule((data) => {\\n                getCope = '腾讯歌单' + '\\\\n歌单名称：' + data.dissname + '\\\\n歌单识别：' + base64Encode('' + data.disstid + '')\\n                return 'copy://' + getCope\\n            }, data),\\n            col_type: 'movie_1_vertical_pic'\\n        })\\n        data.songlist.forEach(item => {\\n            singer = item.singer.map(it => it.name).join('\\\\t')\\n            img = 'https://missuo.ru/file/51e785d34aba81f61994f.jpg'\\n            if (item.album.mid) {\\n                img = 'https://y.gtimg.cn/music/photo_new/T002R300x300M000' + item.album.mid + '.jpg'\\n            }\\n            d.push({\\n                title: item.name,\\n                desc: singer,\\n                img: img,\\n                url: $(empty).lazyRule((item) => {\\n                    MY_PAGE = 1\\n                    require('hiker://page/Config.view')\\n                    return getplayer(item)\\n                }, item),\\n                col_type: 'card_pic_3',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst getSearchParse = (d) => {\\n    if (!getMyVar('返回')) {\\n        confirm({\\n            title: \\\"返回记录\\\",\\n            content: \\\"当下次进入搜索页面时，将返回到搜索记录\\\",\\n            confirm: () => {\\n                putMyVar('返回', true);\\n                toast('emmm~');\\n            },\\n            cancel: () => {\\n                putMyVar('返回', false);\\n                toast('俺不要ヽ(≧Д≦)ノ~');\\n            }\\n        })\\n        java.lang.Thread.sleep(3000);\\n        toast('下次重启，将重新拉启弹窗')\\n    }\\n    if (getMyVar('返回') == 'true') {\\n        addListener('onClose', () => {\\n            clearMyVar('关键词')\\n        })\\n    }\\n    if (page == 1) {\\n        d.push({\\n            title: '🔍',\\n            desc: \\\"搜你想要的......\\\",\\n            url: $.toString((getSearchUrl, empty) => {\\n                putMyVar('关键词', input);\\n                if (input != '') getSearchUrl(input);\\n                refreshPage();\\n                return empty;\\n            }, getSearchUrl, empty),\\n            col_type: 'input',\\n            extra: {\\n                defaultValue: getMyVar('关键词')\\n            }\\n        })\\n    }\\n    if (getMyVar('关键词') == '') {\\n        let mem = storage0.getItem(\\\"聆听记录\\\", []);\\n        if (mem.length > 0) {\\n            d.push({\\n                title: Rich(Big('📝 搜索历史')),\\n                url: $(\\\"#noLoading#\\\").lazyRule((empty, getConfirm) => {\\n                    getConfirm()\\n                    return empty;\\n                }, empty, getConfirm),\\n                col_type: 'text_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        } else {\\n            d.push({\\n                title: Rich(Small(Gray('～～～还没搜索呢～～～'))),\\n                url: empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n        for (let i = mem.length - 1; i >= 0; i--) {\\n            let it = mem[i];\\n            d.push({\\n                title: it,\\n                url: $(\\\"#noLoading#\\\").lazyRule((getSearchUrl, it, empty) => {\\n                    putMyVar('关键词', it);\\n                    getSearchUrl(it);\\n                    refreshPage();\\n                    return empty;\\n                }, getSearchUrl, it, empty),\\n                col_type: \\\"flex_button\\\"\\n            })\\n        }\\n    } else {\\n        time = new Date().getTime()\\n        path = 'https://shc.y.qq.com/soso/fcgi-bin/search_for_qq_cp?_=' + time + '&g_tk=&uin=&format=json&inCharset=utf-8&outCharset=utf-8&notice=0&platform=h5&needNewCode=1&w=' + getMyVar('关键词') + '&zhidaqu=1&catZhida=1&t=0&flag=1&ie=utf-8&sem=1&aggr=0&perpage=20&n=20&p=' + page + '&remoteplace=txt.mqq.all'\\n        data = JSON.parse(request(path, {\\n            headers: {\\n                'referer': 'https://i.y.qq.com'\\n            }\\n        })).data.song.list\\n        if (data.length) {\\n            data.forEach(item => {\\n                singer = item.singer.map(it => it.name).join('\\\\t')\\n                img = 'https://missuo.ru/file/51e785d34aba81f61994f.jpg'\\n                if (item.albummid) {\\n                    img = 'https://y.gtimg.cn/music/photo_new/T002R300x300M000' + item.albummid + '.jpg'\\n                }\\n                d.push({\\n                    title: item.songname,\\n                    desc: singer,\\n                    img: img,\\n                    url: $(empty).lazyRule((item) => {\\n                        MY_PAGE = 1\\n                        require('hiker://page/Config.view')\\n                        return getplayer(item)\\n                    }, item),\\n                    col_type: 'card_pic_3',\\n                    extra: {\\n                        lineVisible: false\\n                    }\\n                })\\n            })\\n        } else {\\n            d.push({\\n                title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n                url: empty,\\n                col_type: 'text_center_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n    }\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"葫芦侠","author":"旧巷陌人","version":0,"type":"video","url":"hiker://empty##fypage","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nrequire('hiker://page/config.html')\ngetBaseParse()","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"页面\",\"path\":\"config.html\",\"rule\":\"const empty = 'hiker://empty'\\nconst page = MY_PAGE;\\n\\nconst Color = (test) => {\\n    return '<font color=\\\"#FA7298\\\">' + test + '</front>';\\n}\\n\\nconst SpringGreen = (test) => {\\n    return '<font color=\\\"#3CB371\\\">' + test + '</front>';\\n}\\n\\nconst Strong = (test) => {\\n    return '<strong>' + test + '</strong>';\\n}\\n\\nconst Small = (test) => {\\n    return '<small>' + test + '</small>';\\n}\\n\\nconst Center = (test) => {\\n    return \\\"<h4 style='text-align:center'>\\\" + test + \\\"</h4>\\\"\\n}\\n\\nconst Big = (test) => {\\n    return '<b><font color=#000>' + test + '</font></b>'\\n}\\n\\nconst Gray = (test) => {\\n    return \\\"<font color='gray'>\\\" + test + \\\"</font>\\\";\\n}\\n\\nconst Rich = (test) => {\\n    return \\\"‘‘’’\\\" + test;\\n}\\n\\nconst getFormat = (oldTime) => {\\n    const add0 = (m) => {\\n        return m < 10 ? '0' + m : m\\n    }\\n    let time = new Date(oldTime);\\n    let y = time.getFullYear();\\n    let m = time.getMonth() + 1;\\n    let d = time.getDate();\\n    let h = time.getHours();\\n    let mm = time.getMinutes();\\n    let s = time.getSeconds();\\n    return y + '-' + add0(m) + '-' + add0(d) + ' ' + add0(h) + ':' + add0(mm) + ':' + add0(s);\\n}\\n\\nif (!getMyVar('UUID')) {\\n    const generateUUID = () => {\\n        let d = new Date().getTime()\\n        let uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\\n            let r = (d + Math.random() * 16) % 16 | 0 d = Math.floor(d / 16)\\n            return (c == 'x' ? r : (r & 0x3 | 0x8)).toString(36)\\n        })\\n        return uuid\\n    }\\n    putMyVar('UUID', generateUUID())\\n}\\n\\nconst getSearchUrl = (kw, empty) => {\\n    let mem = storage0.getItem(\\\"葫芦侠\\\", []);\\n    mem = mem.filter(it => it != kw);\\n    if (mem.length >= 10) {\\n        mem = mem.slice(1);\\n    }\\n    mem.push(kw);\\n    storage0.setItem(\\\"葫芦侠\\\", mem);\\n    return empty;\\n};\\n\\nif (!getMyVar('域名')) {\\n    域名 = 'http://floor.huluxia.com'\\n    putMyVar('域名', 域名)\\n}\\n\\nconst getConfigUrl = (path, body) => {\\n    path = getMyVar('域名') + path\\n    body = '?platform=2&gkey=000000&app_version=4.2.0.1&versioncode=20141465&market_id=floor_baidu&_key=' + getItem('葫芦侠TOKEN', '') + '&device_code=%5Bw%5D02%3A00%3A00%3A00%3A00%3A00-%5Bi%5DA00000A49D3B6A-%5Bs%5D898602A51317F3030582&phone_brand_type=OP' + body\\n    return JSON.parse(request(path + body, {\\n        headers: {\\n            'User-Agent': 'okhttp/3.8.1'\\n        }\\n    }))\\n}\\n\\nconst loginConfigUrl = (path, body) => {\\n    path = getMyVar('域名') + path + '?platform=2&gkey=000000&app_version=4.2.0.1&versioncode=20141465&market_id=floor_baidu&_key=&device_code=%5Bd%5D' + getMyVar('UUID') + '&phone_brand_type=UN'\\n    return JSON.parse(request(path, {\\n        headers: {\\n            'User-Agent': 'okhttp/3.8.1'\\n        },\\n        body: body,\\n        method: 'POST'\\n    }))\\n}\\n\\nconst RegExpParse = (text) => {\\n    centers = text\\n        .replace(/<text>|<\\\\/text>/g, '')\\n        .replace(/\\\\n/g, '<br>')\\n        .replace(/<image>(.*?),.*?<\\\\/image>/g, '<img src=\\\"$1\\\">')\\n        .replace(/([^\\\"])(http[^<\\\\s\\\"]+)/g, '$1<a href=\\\"$2\\\">$2</a>')\\n    return centers\\n}\\n\\nconst getConfirm = () => {\\n    confirm({\\n        title: \\\"清除记录\\\",\\n        content: \\\"确定好了吗？记录将会不复存在~\\\",\\n        confirm: () => {\\n            clearItem(\\\"葫芦侠\\\");\\n            refreshPage();\\n            toast('清除成功~');\\n        }\\n    })\\n}\\n\\nconst getIconSearch = (d) => {\\n    d.push({\\n        title: \\\"请输入帖子名称/关键词\\\",\\n        url: $(empty + 'fypage' + '#noHistory##noRecordHistory#').rule(() => {\\n            const d = [];\\n            require(\\\"hiker://page/config.html\\\")\\n            if (getItem('葫芦侠TOKEN', '') == '') {\\n                getLoginParse(d)\\n            } else {\\n                getSearchParse(d)\\n            }\\n            setResult(d)\\n        }),\\n        col_type: \\\"icon_1_search\\\"\\n    })\\n}\\n\\nconst time = new Date().getTime()\\n\\nif (Number(time - getItem('葫芦侠TOKEN-Time', '0')) > 259200000) {\\n    setItem('葫芦侠TOKEN-Time', '' + time + '')\\n    clearItem('葫芦侠TOKEN')\\n}\\n\\nconst getLoginUrl = () => {\\n    account = getItem('葫芦侠账号')\\n    password = md5(getItem('葫芦侠密码'))\\n    sign = 'account' + account + 'device_code[d]' + getMyVar('UUID') + 'password' + password + 'voice_codefa1c28a5b62e79c3e63d9030b6142e4b'\\n    path = '/account/login/ANDROID/4.1.8'\\n    body = 'account=' + account + '&login_type=2&password=' + password + '&sign=' + md5(sign).toUpperCase()\\n    data = loginConfigUrl(path, body)\\n    if (data._key != null) {\\n        avatar = data.user.avatar\\n        nick = data.user.nick\\n        setItem('葫芦侠avatar', avatar)\\n        setItem('葫芦侠nick', nick)\\n        token = data._key\\n        setItem('葫芦侠TOKEN', token)\\n        refreshPage()\\n        toast(\\\"登录成功\\\")\\n    } else {\\n        clearItem(\\\"葫芦侠账号\\\")\\n        clearItem(\\\"葫芦侠密码\\\")\\n        toast(data.msg)\\n    }\\n    return empty\\n}\\n\\nconst getBaseParse = () => {\\n    let iTag = getMyVar(\\\":iTag\\\", \\\"\\\");\\n    if (iTag) {\\n        iTag = JSON.parse(iTag);\\n    } else {\\n        try {\\n            path = '/category/list/ANDROID/2.0'\\n            body = '&is_hidden=1'\\n            iTag = getConfigUrl(path, body).categories\\n            putMyVar(\\\":iTag\\\", JSON.stringify(iTag));\\n        } catch (e) {\\n            iTag = [];\\n        }\\n    }\\n    const d = []\\n    const contlist = [];\\n    const tabs = iTag.slice(3, iTag.length - 3)\\n    tabs.forEach((tab, i) => {\\n        if (page == 1) {\\n            name = tab.title\\n            id = tab.categoryID\\n            d.push({\\n                title: getMyVar('分类', '0') == i ? Rich(Strong(Color(name))) : name,\\n                url: $('#noLoading#').lazyRule((empty, i, id) => {\\n                    clearMyVar('Page')\\n                    putMyVar('分类', i);\\n                    putMyVar('类ID', id);\\n                    refreshPage()\\n                    return empty;\\n                }, empty, i, id),\\n                col_type: 'scroll_button'\\n            });\\n        }\\n        contlist[i] = [];\\n        conts = tab.tags;\\n        conts.forEach(cont => {\\n            contlist[i].push({\\n                title: cont.name,\\n                url: cont.ID\\n            });\\n        })\\n    })\\n    const category = getMyVar('类ID', '' + tabs[0].categoryID + '')\\n    const index = getMyVar('分类', '0')\\n    if (contlist[index].length) {\\n        if (page == 1) {\\n            d.push({\\n                col_type: 'blank_block'\\n            })\\n            contlist[index].forEach((contslist, i) => {\\n                d.push({\\n                    title: getMyVar(index, '0') == i ? Rich(Strong(Color(contslist.title))) : contslist.title,\\n                    url: $('#noLoading#').lazyRule((index, empty, i) => {\\n                        clearMyVar('Page')\\n                        putMyVar(index, i);\\n                        refreshPage();\\n                        return empty;\\n                    }, index, empty, i),\\n                    col_type: 'scroll_button'\\n                });\\n            })\\n        }\\n        id = contlist[index][getMyVar(index, '0')].url\\n    } else {\\n        id = ''\\n    }\\n    sortTypeParse(d)\\n    if (page == 1) {\\n        getIconSearch(d)\\n        path = '/post/list/ANDROID/4.1.8'\\n        body = '&start=0&count=20&cat_id=' + category + '&tag_id=' + id + '&sort_by=' + sortType\\n        date = getConfigUrl(path, body)\\n        layoutParse(d, date, id, sortType, category)\\n    }\\n    setResult(d)\\n}\\n\\nconst sortTypeParse = (d) => {\\n    排序 = ['按回复时间', '按本版精华', '按发布时间'];\\n    if (page == 1) {\\n        d.push({\\n            col_type: 'blank_block'\\n        })\\n        排序.forEach(item => {\\n            d.push({\\n                title: item == getMyVar('排序', 排序[0]) ? Rich(Strong(Color(item))) : item,\\n                url: $('#noLoading#').lazyRule((item, empty) => {\\n                    clearMyVar('Page')\\n                    putMyVar('排序', item);\\n                    refreshPage();\\n                    return empty;\\n                }, item, empty),\\n                col_type: 'scroll_button'\\n            })\\n        })\\n    }\\n    switch (getMyVar('排序', 排序[0])) {\\n        case 排序[0]:\\n            sortType = 0\\n            break;\\n        case 排序[1]:\\n            sortType = 2\\n            break;\\n        case 排序[2]:\\n            sortType = 1\\n            break;\\n    }\\n}\\n\\nconst layoutParse = (d, data, id, sortType, category) => {\\n    addListener('onRefresh', () => {\\n        clearMyVar('Page')\\n    })\\n    if (data.posts.length) {\\n        data.posts.forEach(date => {\\n            userID = date.user.userID\\n            nick = date.user.nick\\n            d.push({\\n                title: nick + '\\\\t\\\\t' + Small(Color(getFormat(date.createTime))),\\n                pic_url: date.user.avatar,\\n                url: $(empty).rule((userID, nick) => {\\n                    MY_PAGE = 1\\n                    sortType = ''\\n                    category = ''\\n                    clearMyVar('Page')\\n                    setPageTitle(nick)\\n                    require('hiker://page/config.html')\\n                    path = '/post/create/list/ANDROID/4.1.8'\\n                    body = '&start=0&count=20&user_id=' + userID\\n                    date = getConfigUrl(path, body)\\n                    const d = []\\n                    layoutParse(d, date, userID, sortType, category)\\n                    setResult(d)\\n                }, userID, nick),\\n                col_type: 'avatar'\\n            })\\n            postID = date.postID\\n            d.push({\\n                title: Rich(Gray(date.title)),\\n                url: $(empty + 'fypage' + '#autoCache##gameTheme#').rule((postID) => {\\n                    require('hiker://page/config.html')\\n                    const d = []\\n                    playUrlParse(d, postID)\\n                    setResult(d)\\n                }, postID),\\n                col_type: 'text_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n            try {\\n                images = date.detail.match(/<image>(.*?)<\\\\/image>/g)\\n                images = images.map(item => item.match(/<image>(.*?),.*?<\\\\/image>/)[1])\\n            } catch (e) {\\n                images = date.images\\n            }\\n            if (images.length) {\\n                for (let i = 0; i < 3; i++) {\\n                    if (images[i] != null) {\\n                        d.push({\\n                            pic_url: images[i],\\n                            url: images[i],\\n                            col_type: 'card_pic_3'\\n                        })\\n                    }\\n                }\\n            }\\n            d.push({\\n                col_type: 'line_blank'\\n            })\\n        })\\n        if (getMyVar('Page', '') == '') {\\n            d.push({\\n                title: Rich(Small(SpringGreen('～～～加载更多～～～'))),\\n                url: $(\\\"#noLoading#\\\").lazyRule((data, id, sortType, category) => {\\n                    MY_PAGE = 1\\n                    require('hiker://page/config.html')\\n                    if (sortType == '' && category == '') {\\n                        path = '/post/create/list/ANDROID/4.1.8'\\n                        body = '&start=' + getMyVar('Page', data.start) + '&count=20&user_id=' + id\\n                        date = getConfigUrl(path, body)\\n                    } else {\\n                        path = '/post/list/ANDROID/4.1.8'\\n                        body = '&start=' + getMyVar('Page', data.start) + '&count=20&cat_id=' + category + '&tag_id=' + id + '&sort_by=' + sortType\\n                        date = getConfigUrl(path, body)\\n                    }\\n                    putMyVar('Page', date.start)\\n                    const d = []\\n                    layoutParse(d, date, id, sortType, category)\\n                    addItemBefore('Page' + id, d);\\n                    if (!date.posts.length) {\\n                        deleteItemByCls('PageCls' + id)\\n                    }\\n                    return empty\\n                }, data, id, sortType, category),\\n                col_type: 'text_center_1',\\n                extra: {\\n                    id: 'Page' + id,\\n                    cls: 'PageCls' + id,\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n    } else {\\n        d.push({\\n            title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst layoutSearchParse = (d, data) => {\\n    if (data.length) {\\n        data.forEach(date => {\\n            userID = date.user.userID\\n            nick = date.user.nick\\n            d.push({\\n                title: nick + '\\\\t\\\\t' + Small(Color(getFormat(date.createTime))),\\n                pic_url: date.user.avatar,\\n                url: $(empty).rule((userID, nick) => {\\n                    MY_PAGE = 1\\n                    sortType = ''\\n                    category = ''\\n                    clearMyVar('Page')\\n                    setPageTitle(nick)\\n                    require('hiker://page/config.html')\\n                    path = '/post/create/list/ANDROID/4.1.8'\\n                    body = '&start=0&count=20&user_id=' + userID\\n                    date = getConfigUrl(path, body)\\n                    const d = []\\n                    layoutParse(d, date, userID, sortType, category)\\n                    setResult(d)\\n                }, userID, nick),\\n                col_type: 'avatar'\\n            })\\n            postID = date.postID\\n            d.push({\\n                title: Rich(Gray(date.title)),\\n                url: $(empty + 'fypage' + '#autoCache##gameTheme#').rule((postID) => {\\n                    require('hiker://page/config.html')\\n                    const d = []\\n                    playUrlParse(d, postID)\\n                    setResult(d)\\n                }, postID),\\n                col_type: 'text_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n            try {\\n                images = date.detail.match(/<image>(.*?)<\\\\/image>/g)\\n                images = images.map(item => item.match(/<image>(.*?),.*?<\\\\/image>/)[1])\\n            } catch (e) {\\n                images = date.images\\n            }\\n            if (images.length) {\\n                for (let i = 0; i < 3; i++) {\\n                    if (images[i] != null) {\\n                        d.push({\\n                            pic_url: images[i],\\n                            url: images[i],\\n                            col_type: 'card_pic_3'\\n                        })\\n                    }\\n                }\\n            }\\n            d.push({\\n                col_type: 'line_blank'\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst playUrlParse = (d, postID) => {\\n    setPageTitle('详情页面')\\n    path = '/post/detail/ANDROID/4.1.8'\\n    body = '&post_id=' + postID + '&page_no=' + page + '&page_size=20&doc=1'\\n    data = getConfigUrl(path, body)\\n    if (page == 1) {\\n        for (let i = 0; i < 60; i++) {\\n            d.push({\\n                col_type: 'blank_block'\\n            })\\n        }\\n        centers = RegExpParse(data.post.detail)\\n        d.push({\\n            title: '<h1>' + data.post.title + '</h1>' + Small(Gray(centers)),\\n            col_type: 'rich_text'\\n        })\\n        voice = data.post.voice\\n        if (voice.length) {\\n            voice = JSON.parse(voice)\\n            video = voice.videohost + voice.videofid\\n            d.push({\\n                title: '<p><a href=\\\"' + video + '#isVideo=true#\\\">[点击查看视频]</a></p>',\\n                col_type: 'rich_text'\\n            })\\n        }\\n        images = data.post.images\\n        if (images.length) {\\n            images.forEach(image => {\\n                d.push({\\n                    pic_url: image,\\n                    url: image,\\n                    col_type: 'pic_1_full'\\n                })\\n            })\\n        }\\n        for (let i = 0; i < 20; i++) {\\n            d.push({\\n                col_type: 'blank_block'\\n            })\\n        }\\n    }\\n    if (data.comments.length) {\\n        if (page == 1) {\\n            d.push({\\n                title: Rich(Strong(Big('全部评论#' + data.post.commentCount + '条'))),\\n                url: empty,\\n                col_type: 'text_1',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n        }\\n        data.comments.forEach(date => {\\n            refComment = date.refComment\\n            if (refComment != null) {\\n                nickComment = refComment.nick\\n                refComment = '回复\\\\t' + nickComment + '：<br>' + RegExpParse(refComment.text)\\n                refComment = \\\"<blockquote>\\\" + Small(Gray(refComment)) + \\\"</blockquote>\\\"\\n            } else {\\n                refComment = ''\\n            }\\n            isTop = '顶置'\\n            if (date.isTop != 1) isTop = date.seq + '楼'\\n            centers = RegExpParse(date.text)\\n            userID = date.user.userID\\n            nick = date.user.nick\\n            d.push({\\n                title: nick + '\\\\t\\\\t' + Small(SpringGreen(isTop)) + '\\\\t\\\\t' + Small(Color(getFormat(date.createTime))),\\n                pic_url: date.user.avatar,\\n                url: $(empty).rule((userID, nick) => {\\n                    MY_PAGE = 1\\n                    sortType = ''\\n                    category = ''\\n                    clearMyVar('Page')\\n                    setPageTitle(nick)\\n                    require('hiker://page/config.html')\\n                    path = '/post/create/list/ANDROID/4.1.8'\\n                    body = '&start=0&count=20&user_id=' + userID\\n                    date = getConfigUrl(path, body)\\n                    const d = []\\n                    layoutParse(d, date, userID, sortType, category)\\n                    setResult(d)\\n                }, userID, nick),\\n                col_type: 'avatar'\\n            }, {\\n                title: refComment + Small(Gray(centers)),\\n                url: empty,\\n                col_type: 'rich_text',\\n                extra: {\\n                    lineVisible: false\\n                }\\n            })\\n            if (date.images.length) {\\n                date.images.forEach(image => {\\n                    d.push({\\n                        pic_url: image,\\n                        url: image,\\n                        col_type: 'pic_1_full'\\n                    })\\n                })\\n            }\\n            d.push({\\n                col_type: 'line_blank'\\n            })\\n        })\\n    } else {\\n        d.push({\\n            title: Rich(Small(Gray('～～～我是有底线的～～～'))),\\n            url: empty,\\n            col_type: 'text_center_1',\\n            extra: {\\n                lineVisible: false\\n            }\\n        })\\n    }\\n}\\n\\nconst getLoginParse = (d) => {\\n    setPageTitle('葫芦侠·登录')\\n    d.push({\\n        desc: \\\"请输入您的手机号/邮箱\\\",\\n        col_type: \\\"input\\\",\\n        extra: {\\n            onChange: \\\"setItem('葫芦侠账号', input)\\\",\\n            titleVisible: false\\n        }\\n    }, {\\n        desc: \\\"请输入您的密码\\\",\\n        col_type: \\\"input\\\",\\n        extra: {\\n            onChange: \\\"setItem('葫芦侠密码', input)\\\",\\n            type: \\\"password\\\",\\n            titleVisible: false\\n        }\\n    }, {\\n        title: Rich(Center(\\\"登录账号\\\")),\\n        url: $(empty).lazyRule(() => {\\n            MY_PAGE = 1\\n            require('hiker://page/config.html')\\n            return getLoginUrl()\\n        }),\\n        col_type: \\\"text_center_1\\\",\\n        extra: {\\n            lineVisible: false\\n        }\\n    })\\n}\\n\\nconst getSearchParse = (d) => {\\n    setPageTitle('葫芦侠·搜索')\\n    addListener('onClose', () => {\\n        clearMyVar(\\\"搜索关键词\\\")\\n    })\\n    if (page == 1) {\\n        d.push({\\n            title: getItem('葫芦侠nick'),\\n            pic_url: getItem('葫芦侠avatar'),\\n            url: $(empty).lazyRule(() => {\\n                confirm({\\n                    title: \\\"退出登录\\\",\\n                    content: \\\"确定好了吗？当前账号将会退出~\\\",\\n                    confirm: () => {\\n                        clearItem('葫芦侠TOKEN');\\n                        refreshPage();\\n                        toast('退出成功~');\\n                    }\\n                })\\n                return input\\n            }),\\n            col_type: 'avatar'\\n        }, {\\n            title: '🔍',\\n            desc: '请输入帖子名称/关键词',\\n            url: $.toString((getSearchUrl, empty) => {\\n                putMyVar('搜索关键词', input);\\n                if (input != '') getSearchUrl(input);\\n                refreshPage();\\n                return empty;\\n            }, getSearchUrl, empty),\\n            col_type: 'input',\\n            extra: {\\n                defaultValue: getMyVar('搜索关键词')\\n            }\\n        })\\n    }\\n    if (getMyVar('搜索关键词') == '') {\\n        if (page == 1) {\\n            let mem = storage0.getItem(\\\"葫芦侠\\\", []);\\n            if (mem.length > 0) {\\n                d.push({\\n                    title: Rich(Big('📝 搜索历史')),\\n                    url: $(\\\"#noLoading#\\\").lazyRule((empty, getConfirm) => {\\n                        getConfirm()\\n                        return empty;\\n                    }, empty, getConfirm),\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false\\n                    }\\n                })\\n            } else {\\n                d.push({\\n                    title: Rich(Center(\\\"喂喂~还没搜索呢～(￣▽￣～)~\\\")),\\n                    url: empty,\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false\\n                    }\\n                })\\n            }\\n            for (let i = mem.length - 1; i >= 0; i--) {\\n                let it = mem[i];\\n                d.push({\\n                    title: it,\\n                    url: $(\\\"#noLoading#\\\").lazyRule((it, getSearchUrl, empty) => {\\n                        putMyVar('搜索关键词', it);\\n                        getSearchUrl(it)\\n                        refreshPage();\\n                        return empty;\\n                    }, it, getSearchUrl, empty),\\n                    col_type: \\\"flex_button\\\"\\n                })\\n            }\\n        }\\n    } else {\\n        path = '/post/search/ANDROID/4.1.8'\\n        body = '&start=' + (page - 1) * 20 + '&count=20&cat_id=43&keyword=' + getMyVar('搜索关键词') + '&flag=0'\\n        date = getConfigUrl(path, body)\\n        try {\\n            layoutSearchParse(d, date.posts)\\n        } catch (e) {\\n            if (page == 1) {\\n                d.push({\\n                    title: Rich(Center(date.msg)),\\n                    url: empty,\\n                    col_type: 'text_1',\\n                    extra: {\\n                        lineVisible: false\\n                    }\\n                })\\n            }\\n        }\\n    }\\n}\"}]","proxy":"","icon":""},{"last_chapter_rule":"","title":"zzzfun.dr","author":"道长&xiao&狗浩啊","version":0,"type":"video","url":"hiker://empty##http://www.zzzfun.com/vod_type_id_1_page_fypage.html","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nMY_URL=MY_URL.split(\"##\")[1];\nrequire(config.模板);\n依赖检测();\nlet parStr=\"body&&.leo-video-item;h2&&Text;img&&data-original;.leo-ellipsis-1&&Text;a&&href\";\nvar page = MY_PAGE;\ntrue_url = 获取正确链接();\nlet cates=打造动态分类([{\n    一级分类: 'body&&.swiper-wrapper.clearfix',\n    子分类: 'body&&a:not(:matches(留言|下载|首页|求片))',\n    分类链接: {\n            二次处理(url) {\n                return url.replace(/type/, 'show')\n            }\n        }\n}]);\n设置(cates);\n一级(parStr,true,cates,false,html);","searchFind":"js:\nMY_URL = MY_URL.split(\"##\")[1];\nrequire(config.模板);\nvar html=获取源码(MY_URL);\nparStr=\"body&&.leo-detail-wrap;h1&&Text;img&&data-original;.leo-ellipsis-1,3&&Text;a&&href;.leo-ellipsis-1,2&&Text\";\n一级(parStr,true,null,null,html);","search_url":"hiker://empty##http://www.zzzfun.com/vod_search_page_fypage_wd_**.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.leo-ellipsis-1,2&&Text;.leo-ellipsis-1,3&&Text',\n    img: '.page-cover&&img&&src',\n    url: '.page-cover&&img&&src',\n    desc: '.leo-ellipsis-1,4&&Text;.leo-ellipsis-1,5&&Text',\n    content: '.leo-ellipsis-2&&Text',\n    tabs: '.swiper-wrapper&&li',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.leo-play-num:not(.swiper-wrapper),#id&&li',\n    tab_id: '',\n};\neval(JSON.parse(request('hiker://page/lazy')).rule);\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse, lazy);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[{\"col_type\":\"movie_3\",\"name\":\"解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule((MY_HOME) => {\\n    var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n    var jsurl = player.url;\\n    var from = player.from;\\n    if (player.encrypt == '1') {\\n        var jsurl = unescape(jsurl);\\n    } else if (player.encrypt == '2') {\\n        var jsurl = unescape(base64Decode(jsurl));\\n    } else {\\n        jsurl\\n    }\\n    //log(jsurl)\\n    eval(request(\\\"http://www.zzzfun.com/static/player/pic1.js\\\").split(\\\"MacPlayer.Html\\\")[0]);\\n    var jxurl = \\\"http://www.zzzfun.com/static/danmu/a-pic.php?d=\\\" + jsurl + \\\"&t=\\\" + md5_a;\\n    //log(jxurl)\\n    let playUrl = request(jxurl).match(/video.src = '(.*?)'/)[1];\\n    if (playUrl.match(/m3u8/)) {\\n        return cacheM3u8(playUrl);\\n    } else {\\n        return 'video://'+input\\n    }\\n}, MY_HOME);\"}]","proxy":"","icon":"https://pp.myapp.com/ma_icon/0/icon_54185980_1649849403/96"},{"last_chapter_rule":"","title":"追剧喵简封","author":"顺&&彩","version":20220824,"type":"video","url":"hiker://empty##https://zjmiao.com/vod/show/id/fyclass/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n\nif (MY_PAGE == 1) {\n    require('http://hiker.nokia.press/hikerule/rulelist.json?id=4091'); //顺搜h5版\n    顺搜(d)\n    //require('http://hiker.nokia.press/hikerule/rulelist.json?id=4508'); //顺搜原生版\n    //搜索建议(d, '海报开')\n\n    var 分类 = {\n        '电影': 'https://lanmeiguojiang.com/tubiao/more/131.png',\n        '电视剧': 'https://lanmeiguojiang.com/tubiao/more/271.png',\n        '综艺': 'https://lanmeiguojiang.com/tubiao/more/86.png',\n        '动漫': 'https://lanmeiguojiang.com/tubiao/more/180.png'\n    };\n    /*\n    for (var i = 0; i < 4; i++) {\n        d.push({\n            title: Object.keys(分类)[i],\n            img: Object.values(分类)[i],\n            col_type: 'icon_4',\n            url: $(\"#noLoading#\").lazyRule((i) => {\n                putMyVar('分类', i + 1);\n                refreshPage();\n                return \"hiker://empty\";\n            }, i)\n        })\n    }\n    */\n\n//这首页动态刷新没卵用，就好看点\n    for (var x = 0; x < 4; x++) {\n        d.push({\n            title: Object.keys(分类)[x],\n            img: Object.values(分类)[x],\n            col_type: 'icon_4',\n            url: $(\"#noLoading#\").lazyRule((x) => {\n                putMyVar('分类', x + 1);\n\n                var fyclass = getMyVar('分类', '1');\n                var html = 'https://zjmiao.com/index.php/vod/show/id/' + (x + 1) + '/page/' + 1 + '/';\n\n                var list = fetch(html, {\n                    headers: {\n                        'User-Agent': PC_UA\n                    }\n                });\n                list = pdfa(list, 'body&&.pack-packcover');\n                let a = []\n                for (var y in list) {\n                    a.push({\n                        title: pdfh(list[y], 'a&&title'),\n                        desc: pdfh(list[y], '.pack-prb&&Text'),\n                        img: pd(list[y], '.bj&&data-original') + '@Referer=',\n                        url: pd(list[y], '.aplus-exp&&href') + \"#immersiveTheme#\"\n                    });\n                    updateItem('列表'+y, {\n                        title: a[y].title,\n                        desc: a[y].desc,\n                        img: a[y].img,\n                        url: a[y].url,\n                        extra: {\n                            id: '列表'+y\n                        }\n                    })\n                }\n                return \"hiker://empty\";\n            }, x)\n        })\n    }\n\n\n}\n\n\n    var fyclass = getMyVar('分类', '1');\n    var html = 'https://zjmiao.com/index.php/vod/show/id/' + fyclass + '/page/' + MY_PAGE + '/';\n\n    var list = fetch(html, {\n        headers: {\n            'User-Agent': PC_UA\n        }\n    });\n    list = pdfa(list, 'body&&.pack-packcover');\n    for (var i in list) {\n        d.push({\n            title: pdfh(list[i], 'a&&title'),\n            desc: pdfh(list[i], '.pack-prb&&Text'),\n            img: pd(list[i], '.bj&&data-original') + '@Referer=',\n            url: pd(list[i], '.aplus-exp&&href') + \"#immersiveTheme#\",\n            extra: {\n                id: '列表'+i\n            }\n        });\n    }\n\n\nsetResult(d);","searchFind":"js:\nvar d = [];\nvar list = pdfa(getResCode(), 'body&&.search-list');\nfor (var j in list) {\n  d.push({\n       title: pdfh(list[j], 'a&&title'),\n       desc: pdfh(list[j], '.pack-prb&&Text'),\n       content: pdfh(list[j], 'p,-1&&Text'),\n       img: pd(list[j], '.eclazy&&data-original'),\n       url: pd(list[j],'a&&href').replace('play','detail').replace('-1-1.html','.html')+\"#immersiveTheme#\"\n  });\n}\nsetResult(d)","search_url":"https://zjmiao.com/index.php/vod/search/page/fypage/wd/**/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\n\nvar d = [];\n\nvar html = getResCode();\n\n// 影片名称用于搜索\n\nvar 影片名称 = pdfh(html, 'h1&&Text');\n\nvar 简介 = pdfh(html, '.desc_txt&&Text').replace(/详情|介绍|简介/, '');\n\nvar 封面 = pd(html, '.s-cover&&img&&src');\n\n// 短讯是简介上方展示的一块数据，自行diy，一般由影片名称、演职人员等组成\n\nvar 短讯 = pdfh(html, '.s-top-right&&p,2&&Text').substring(0, 35) + '\\n' + pdfh(html,'.s-top-right&&p,1&&Text').substring(0, 35);\n\n//线路名数组tabs\n\nvar arts = pdfa(html, 'body&&.swiper-wrapper:has(.channelname)&&a');\n\nvar tabs = [];\n\nfor (var i in arts) {\n\n    tabs.push(pdfh(arts[i], 'Text').replace(/\\d+|\\(|\\)| /g, ''))\n\n}\n\n//选集数组lists\n\nvar conts = pdfa(html, 'body&&.content_playlist');\n\nvar lists = [];\n\nfor (var i in conts) {\n\n    lists.push(pdfa(conts[i], 'body&&a'))\n\n}\n\n// 可以修改但建议保留28\n\nvar 每页集数 = 28;\n\n// 强调颜色\n\nvar Color = \"#19B89D\";\n\n/*\n\n值可取：自写、通免、弹幕通免、常规断插\n\ntip1:自写免嗅变量lazy写到页面标识为lazy的子页面(注意lazy变量已封装只需在子页面编写lazy的具体操作，参见顺封)\n\ntip2:若赋值弹幕通免,则还需设置变量弹幕文件(值有远程、盒子),例如var 弹幕文件='远程',若赋值“盒子”则本地必须有dm盒子规则\n\n*/\n\nvar 动态解析 = '自写';\n\n/*\n\n选插变量值可取开和关。如果过开启选插必须有魔断环境（导入魔断并初始化脚本和配置文件）否则无法进入二级\n\n建议开启选插,便捷且不会刷新页面\n\n*/\n\nvar 选插 = '开';\n\n/*\n\n如果开启了选插需要填写下面两个变量，若选插 = '关'则不需要填写(关闭选插搜索功能丢失)\n\n搜索模式：分组或小程序\n\n调用名称：分组名称或小程序名称\n\n*/\n\nvar 搜索模式 = '小程序';\n\nvar 调用名称 = '易搜';\n\nrequireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=5285', 24);\n\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"/* lazy已封装，请用函数包裹，最后换行执行，不要return */\\nfunction 常规嗅探(input) {\\n\\t\\tshowLoading(\\\"资源嗅探中，请稍候……\\\");\\n\\t\\tvar video = 'x5Rule://' + input + '@' + $.toString((input) => {\\n\\t\\t\\tvar urls = _getUrls();\\n\\t\\t\\tif (window.c == null) window.c = 0;\\n\\t\\t\\twindow.c++;\\n\\t\\t\\tif (window.c * 250 > 5 * 1000) {\\n\\t\\t\\t\\t//fba.log(\\\"嗅探超时\\\");\\n\\t\\t\\t\\tfba.hideLoading();\\n\\t\\t\\t\\treturn fba.parseLazyRule($$$('').lazyRule((input) => {\\n\\t\\t\\t\\t\\tshowLoading(\\\"嗅探超时，启用解析\\\");\\n\\t\\t\\t\\t\\ttry {\\n\\t\\t\\t\\t\\t\\teval(fetch(JSON.parse(fetch('hiker://files/cache/MyParseSet.json')).cj));\\n\\t\\t\\t\\t\\t\\tlet ts = /ixigua|iqiyi|qq.com|mgtv|le.com|bili|sohu|youku|pptv|cctv|1905.com/;\\n\\t\\t\\t\\t\\t\\tif(!input.match(ts)){\\n\\t\\t\\t\\t\\t\\t\\tlet From = JSON.parse(request(input).match(/var player_.*?=(.*?)</)[1]);\\n\\t\\t\\t\\t\\t\\t\\tlet 加密 = From.encrypt;\\n\\t\\t\\t\\t\\t\\t\\tlet 来自 = From.from;\\n\\t\\t\\t\\t\\t\\t\\t原链 = From.url;\\n\\t\\t\\t\\t\\t\\t\\t//log(From)\\n\\t\\t\\t\\t\\t\\t\\tif (加密 == '1') {\\n\\t\\t\\t\\t\\t\\t\\t\\t原链 = unescape(原链);\\n\\t\\t\\t\\t\\t\\t\\t} else if (加密 == '2') {\\n\\t\\t\\t\\t\\t\\t\\t\\t原链 = unescape(base64Decode(原链));\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t\\thideLoading();\\n\\t\\t\\t\\t\\t\\t\\tif (/\\\\.mp4|\\\\.m3u8|\\\\.flv/.test(原链)) {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn 原链;\\n\\t\\t\\t\\t\\t\\t\\t} else if (ts.test(原链)) {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn aytmParse(原链);//爱优腾等地址\\n\\t\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\t\\treturn playParse.playerS(input);//盗版站地址\\n\\t\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t\\t} else {\\n\\t\\t\\t\\t\\t\\t\\treturn aytmParse(input)\\n\\t\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t\\t} catch (e) {\\n\\t\\t\\t\\t\\t\\tshowLoading('解析出错，通免嗅探中');\\n\\t\\t\\t\\t\\t\\trequireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n\\t\\t\\t\\t\\t\\treturn x5rule(input, input);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}, input))\\n\\t\\t\\t} else {\\n\\t\\t\\t\\tfor (var i in urls) {\\n\\t\\t\\t\\t\\tif (urls[i].match(/\\\\.mp3|\\\\.mp4|\\\\.m3u8/)) {\\n\\t\\t\\t\\t\\t\\t//fba.log(urls[i]);\\n\\t\\t\\t\\t\\t\\treturn urls[i].replace(/.*url=/, '')\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}, input);\\n\\t\\treturn video\\n\\t}\\n常规嗅探(input)\\n\\n\\n/*\\nlazy = $(\\\"\\\").lazyRule(() => {\\n                   try {\\n                       var player = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1]);\\n                       var jsurl = player.url;\\n                       var api = \\\"https://play.videomiao.vip/API.php\\\";\\n                       var parse = \\\"https://play.videomiao.vip/?url=\\\" + jsurl + \\\"&tm=\\\" + player.tm + \\\"&key=\\\" + player.key + \\\"&next=\\\" + input + \\\"&title=\\\";\\n                       //log(parse);\\n                       var ref = \\\"https://zjmiao.com/\\\"\\n                       if (ref) {\\n                           var jxHtml = request(parse, {\\n                               headers: {\\n                                   \\\"Referer\\\": ref\\n                               }\\n                           });\\n                       } else {\\n                           var jxHtml = request(parse);\\n                       }\\n                       eval(jxHtml.match(/var config = {[\\\\s\\\\S]*?}/)[0] + \\\"\\\");\\n                       var key = config.key;\\n                       var time = config.time;\\n                       var json = JSON.parse(request(api, {\\n                           headers: {\\n                               \\\"User-Agent\\\": MOBILE_UA\\n                           },\\n                           body: \\\"url=\\\" + jsurl + \\\"&time=\\\" + time + \\\"&key=\\\" + key,\\n                           method: \\\"POST\\\"\\n                       }));\\n                       var url = json.code == 200 ? json.url : \\\"404\\\";\\n                       if (url == \\\"404\\\") {\\n                           return \\\"toast://\\\\u89e3\\\\u6790\\\\u5931\\\\u8d25\\\\uff0c\\\\u8bf7\\\\u91cd\\\\u65b0\\\\u914d\\\\u7f6e\\\";\\n                       }\\n                       if (url.indexOf(\\\"bilibili\\\") > -1) {\\n                           return url + \\\"#isVideo=true#\\\" + \\\";{Referer@https://www.bilibili.com&&User-Agent@Mozilla/5.0}\\\";\\n                       } else if (url.indexOf(\\\"mgtv\\\") > -1) {\\n                           return url + \\\"#isVideo=true#\\\" + \\\";{Referer@www.mgtv.com&&User-Agent@Mozilla/5.0}\\\";\\n                       } else if (url.indexOf(\\\"ixigua\\\") > -1) {\\n                           return url + \\\"#isVideo=true#\\\" + \\\"#.mp4;{Referer@https://www.ixigua.com/&&User-Agent@Mozilla/5.0}\\\";\\n                       } else {\\n                           return /sohu/.test(url) ? url + \\\";{User-Agent@Mozilla/5.0 (Windows NT 10.0)}\\\" : url;\\n                       }\\n                   } catch (e) {\\n                           requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\\n                           return x5rule(input, input);\\n                   }\\n               });\\n               */\"}]","proxy":"","icon":"https://zjmiao.com/upload/site/20220213-1/47aa96d2fd9dfc7c2cfb56f6a4effbf8.png@Referer="},{"last_chapter_rule":"","title":"易搜","author":"cy","version":2,"type":"video","url":"hiker://empty","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: \"https://yiso.fun/\",\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\",\nua: MOBILE_UA\n    }\n}])","searchFind":"js:\n\nvar d = [];\n\nvar res = {};\n\nData = JSON.parse(getResCode()).data.list;\n\nData.forEach(rs => {\n\n    d.push({\n\n        title: rs.fileInfos[0].fileName,\n\n        img: \"https://vkceyugu.cdn.bspapp.com/VKCEYUGU-f8a257d1-9881-4a83-a5fd-bc791c52b534/4de275eb-8bd0-4ae7-827f-facf6a5a1ca9.png@Referer=\",\n\n        url: rs.url,\n\n        content: '创建时间：' + rs.gmtCreate + '\\n分享时间：' + rs.gmtShare,\n\n        desc: \"⭐来源：\" + rs.from\n\n    });\n\n});\n\nres.data = d;\n\nsetSearchResult(res);\n\n","search_url":"https://yiso.fun/api/search?name=**&pageNo=fypage&from=ali","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\n/** 无需下载APP，点返回即可。*/\nsetResult([{\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n\t    js: \"var isShare=location.href.startsWith('https://www.aliyundrive.com/s/');var token_timer=function(){setTimeout(()=>{if(isShare){fba.open(JSON.stringify({rule:'云盘汇影',url:'hiker://page/detail?rule=云盘汇影&url='+location.href+'??fypage'})); history.back(-1);}else{token_timer()}},500)};token_timer();\"\n    }\n}])","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://dd-static.jd.com/ddimg/jfs/t1/211286/27/24345/11647/62c788b8E133daae8/fe330163d88611bf.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"大师兄_晓","author":"晓/body&&.module-item","version":1,"type":"video","url":"https://dsxys.com/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-');get;utf-8;{User-Agent@Mobile}","col_type":"movie_3","class_name":"电影&连续剧&综艺&动漫&动作片&喜剧片&爱情片&科幻片&奇幻片&恐怖片&剧情片&战争片&记录片&悬疑片&冒险片&犯罪片&国产剧&港台剧&日韩剧","class_url":"1&2&3&4&6&7&8&9&38&10&11&12&22&44&45&46&13&14&15","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&.module-item'\nvar 标题 = 'a&&title'\nvar 描述 = '.module-item-note&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&.module-card-item'\nvar 标题 = '.module-card-item-title&&Text'\nvar 描述 = '.module-item-note&&Text'\nvar 类型 = '.module-info-item-content&&Text'\nvar 简介 = '.module-card-item&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://dsxys.com/sb/ke7nhZe3c1**-/page/fypage.html;get;utf-8;{User-Agent@Mobile}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\nvar 类型 = '.module-info-item,2&&Text';\nvar 演员 = '.module-info-item,3&&Text';\nvar 更新 = '.module-info-item,4&&Text';\nvar 导演 = '.module-info-item,5&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 图片链接 =setUrl;\nvar 简介 = '.module-info-introduction-content&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"http://android-artworks.25pp.com/fs08/2021/09/28/6/110_679cd6e1a4cfcab32625a7c6f559a2bc_con_100x100.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"CJT_晓","author":"晓","version":0,"type":"video","url":"https://www.cjtyy.top/index.php/vod/show/fyarea/fysort/id/fyclass/page/fypage/fyyear.html","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&b站&国产剧&港台剧&日韩剧&欧美剧&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片","class_url":"2&1&39&4&42&13&14&15&16&6&7&8&9&10&11&12","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&/area/内地&/area/香港&/area/台湾&/area/美国&/area/法国&/area/英国&/area/日本&/area/韩国&/area/德国&/area/泰国&/area/印度&/area/意大利&/area/西班牙&/area/加拿大&/area/其他","sort_name":"人气&时间&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"by/hits&by/time&by/score&class/纪录&喜剧&class/古装&class/动作&class/爱情&class/科幻&class/动画&class/悬疑&class/惊悚&class/恐怖&class/灾难&class/历史&class/%E4%BC%A6%E7%90%86&class/传记","year_url":"&year/2022&year/2021&year/2020&year/2019&year/2018&year/2017&year/2016&year/2015&year/2014&year/2013&year/2012&year/2011&year/2010&year/2009&year/2008&year/2007&year/2006&year/2005&year/2004","find_rule":"js:requireCache(config.xiao);\nvar 列表 = '.module-items&&.module-item';\nvar 标题 = 'a&&title';\nvar 描述 = '.module-item-text&&Text';\nvar 图片 = '.lazyloaded&&data-src';\nvar 链接 = 'a&&href';\n一级.A()","searchFind":"js:requireCache(config.xiao);\nvar 列表 = 'body&&.module-list&&.module-search-item'\nvar 标题 = 'img&&alt'\nvar 描述 = '.video-serial&&Text'\nvar 类型 = '.video-info-items,1&&Text'\nvar 简介 = '.video-info-items,2&&Text'\nvar 图片 = 'img&&data-src'\nvar 链接 = 'a&&href'\n搜索.A()","search_url":"https://www.cjtyy.top/index.php/vod/search/page/fypage/wd/**.html","group":"视频","detail_col_type":"text_3","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-content&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\nvar 类型 = '#main&&.content,0&&.box,0&&.video-info,0&&.video-info-header,0&&.scroll-box,0&&Text';\nvar 演员 = '.video-info-items,1&&Text';\nvar 更新 = '.video-info-items,3&&Text';\nvar 导演 = '.video-info-items,0&&Text';\nvar 图片 = '.lazyload&&data-src';\nvar 图片链接 = setUrl\nvar 简介 = '.video-info-items,-1&&Text&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"auto","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2020/12/10/4/110_4971a76161768db2541019cc094d3614_con_130x130.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"奈落_晓","author":"晓","version":0,"type":"video","url":"https://newfii.com/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-')","col_type":"movie_3","class_name":"电视剧&电影&综艺&动漫&BiLiBiLi&动作片&喜剧片&爱情片&科幻片&恐怖片&剧情片&战争片&国产剧&港台剧&日韩剧&欧美剧","class_url":"2&1&4&3&34&6&7&8&9&10&11&12&13&14&15&16","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&更新&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&更新&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&传记","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","find_rule":"js:requireCache(config.xiao)\nvar 列表 = '.module-items&&.module-item';\nvar 标题 = 'a&&title';\nvar 描述 = '.module-item-text&&Text';\nvar 图片 = '.lazyloaded&&data-src';\nvar 链接 = 'a&&href';\n一级.A()","searchFind":"js:requireCache(config.xiao)\nvar url = 'https://newfii.com';\nvar urll = 'https://newfii.com/voddetail/';\n搜索.B()","search_url":"https://newfii.com/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-content&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.sort-item';\nvar 选集标签 = 'body&&a';\nvar 类型 = '#main&&.content,0&&.box,0&&.video-info,0&&.video-info-header,0&&.scroll-box,0&&Text';\nvar 演员 = '.video-info-items,1&&Text';\nvar 更新 = '.video-info-items,3&&Text';\nvar 导演 = '.video-info-items,0&&Text';\nvar 图片 = '.lazyload&&data-src';\nvar 图片链接 = setUrl\nvar 简介 = '.video-info-items,-1&&Text&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: \"http://hiker.nokia.press/hikerule/rulelist.json?id=4928\",\n});","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2021/02/09/0/110_1f762ac33841430301f1e0609a3b4199_con_130x130.png"},{"last_chapter_rule":"js:requireCache(config.xiao)\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\n章节.A()","title":"大米影视_晓","author":"晓","version":0,"type":"video","url":"https://www.dmxq.cc/vodshow/fyclass-fyarea--fysort-----fypage---fyyear.html.js:input.replace('-time', 'time-').replace('-hits', 'hits-').replace('-score', 'score-')","col_type":"movie_3","class_name":"电影&电视剧&动漫&综艺","class_url":"20&21&22&23","area_name":"地区&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","area_url":"&内地&香港&台湾&美国&法国&英国&日本&韩国&德国&泰国&印度&意大利&西班牙&加拿大&其他","sort_name":"时间&热门&评分&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&成人&传记","year_name":"年代&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更早","sort_url":"time&hits&score&纪录&喜剧&古装&动作&爱情&科幻&动画&悬疑&惊悚&恐怖&灾难&历史&%E4%BC%A6%E7%90%86&传记","year_url":"&2022&2021&2020&2019&2018&2017&2016&2015&2014&2013&2012&2011&2010&2009&2008&2007&2006&2005&更多","find_rule":"js:requireCache(config.xiao)\nvar 列表 = 'body&&.module-item'\nvar 标题 = 'a&&title'\nvar 描述 = '.module-item-note&&Text'\nvar 图片 = '.lazyload&&data-original'\nvar 链接 = 'a&&href'\n一级.A()","searchFind":"js:requireCache(config.xiao)\nvar url = 'https://www.dmxq.cc';\nvar urll = 'https://www.dmxq.cc/voddetail/';\n搜索.B()","search_url":"https://www.dmxq.cc/index.php/ajax/suggest?mid=1&wd=**&limit=500;get;utf-8;{User-Agent@Mobile}","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:requireCache(config.xiao);\nvar 线路列表 = 'body&&.module-tab-item';\nvar 线路标签 = 'span&&Text';\nvar 选集列表 = 'body&&.module-play-list-content';\nvar 选集标签 = 'body&&a';\nvar 类型 = '.module-info-item,2&&Text';\nvar 演员 = '.module-info-item,3&&Text';\nvar 更新 = '.module-info-item,4&&Text';\nvar 导演 = '.module-info-item,5&&Text';\nvar 图片 = '.lazyload&&data-original';\nvar 图片链接 =setUrl;\nvar 简介 = '.module-info-introduction-content&&Text';\n二级.A()","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    xiao: 'http://hiker.nokia.press/hikerule/rulelist.json?id=4928',\n})","pages":"[]","proxy":"","icon":"https://android-artworks.25pp.com/fs08/2022/04/08/3/109_554b5fe714122e2d04ea6d34ebb46108_con_130x130.png"},{"last_chapter_rule":"","title":"测试自动缓存","author":"ccc","version":0,"type":"video","url":"hiker://empty##","col_type":"text_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n    title: \"无更新\",\n    url: $(\"hiker://empty#autoCache#\").rule(() => {\n        java.lang.Thread.sleep(600);\n        setResult([{\n            title: \"第一章\",\n            col_type: \"movie_1\"\n        }, {\n            title: \"第二章\",\n            col_type: \"movie_1\"\n        }])\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"新增了\",\n    url: $(\"hiker://empty#autoCache#\").rule(() => {\n        java.lang.Thread.sleep(600);\n        let n = parseInt(getMyVar(\"i\", \"1\")) + 1;\n        putMyVar(\"i\", \"\" + n);\n        let d = [];\n        for (let i = 0; i < n; i++) {\n            d.push({\n                title: \"第一章\",\n                url: \"\",\n                col_type: \"text_1\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n\n        }\n        setResult(d)\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"修改了\",\n    url: $(\"hiker://empty#autoCache#\").rule(() => {\n        java.lang.Thread.sleep(600);\n        let n = parseInt(getMyVar(\"i2\", \"1\")) + 1;\n        putMyVar(\"i2\", \"\" + n);\n        let d = [];\n        for (let i = 0; i < n; i++) {\n            d.push({\n                title: i == n % 2 ? \"第\" + i + \"章\" : \"第一章\",\n                url: \"\",\n                col_type: \"text_3\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n\n        }\n        setResult(d)\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nd.push({\n    title: \"减少了\",\n    url: $(\"hiker://empty#autoCache#\").rule(() => {\n        java.lang.Thread.sleep(600);\n        let n = parseInt(getMyVar(\"i3\", \"20\")) - 1;\n        putMyVar(\"i3\", \"\" + n);\n        let d = [];\n        for (let i = 0; i < n; i++) {\n            d.push({\n                title: \"第一章\" + i,\n                url: \"\",\n                col_type: \"text_1\",\n                desc: \"\",\n                pic_url: \"\"\n            });\n\n        }\n        setResult(d)\n    }),\n    col_type: \"\",\n    desc: \"\",\n    pic_url: \"\"\n});\nsetResult(d);","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"测试requirejs","author":"小棉袄🌞","version":0,"type":"video","url":"hiker://empty##","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n//加载libs目录下的c.js模块\nwriteFile(\"hiker://files/libs/c.js\", \"exports.c = 'iam from exports'\");\n//加载libs下的非远程模块使用require和requirejs一样\nlet {\n    c\n} = require(\"c\");\nlog(c);\n/*加载远程js模块\n/*因为require被用作别的用途了，需使用requirejs\n/*或者前面加一行require = requirejs;\n*/\nlet {\n    test\n} = requirejs(\"http://gh.haikuoshijie.cn/https://github.com/qiusunshine/hiker-rules/blob/master/plugin/module.js\");\ntest.a();\nlog(test.b);\n\n\nd.push({\n    title: \"看日志吧\",\n    url: $().lazyRule(() => {\n        //演示全局缓存\n        //即使文件被删了没重启软件的情况下还是可以使用模块\n        deleteFile(\"hiker://files/libs/c.js\");\n        let {\n            c\n        } = require(\"c\");\n        log(c);\n        return \"hiker://empty\"\n    }),\n    col_type: \"text_1\",\n    desc: \"\",\n    pic_url: \"\"\n});\n\nsetResult(d);","searchFind":"","search_url":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"🦈弹幕","author":"cy","version":1,"type":"video","url":"hiker://empty##https://zjmiao.com/vod/show/id/fyclass/page/fypage/","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\r\nvar d = [];\r\nvar page = MY_PAGE;\r\nhtml = fetch('https://www.skrtv.com/');\r\nvar 顶部大类 = {};\r\n大分类 = pdfa(html, '.am-nav&&li');\r\nfor (let i = 0; i < 大分类.length; i++) {\r\n    if (i > 4) {\r\n        break;\r\n    }\r\n    分类名称 = pdfh(大分类[i], 'a&&Text');\r\n    if (分类名称.match(/首页|解析|关于|直播|优惠|搜索|豆瓣|资源|音乐|帮助|更多/)) {\r\n        continue;\r\n    } else {\r\n        分类链接 = pd(大分类[i], 'a&&href');\r\n        顶部大类[分类名称] = 分类链接;\r\n    }\r\n}\r\n// 首页动态分类\r\nif (page == 1) {\r\n    // 折叠开关\r\n    d.push({\r\n        title: getMyVar('折叠', '关') == '关' ? '““””<b><span style=\"color: #FF0000\">∨</span></b>' : '““””<b><span style=\"color: #1aad19\">∧</span></b>',\r\n        url: $('#noLoading#').lazyRule(() => {\r\n            if (getMyVar('折叠', '关') == '开') {\r\n                putMyVar('折叠', '关');\r\n                clearMyVar('类型');\r\n                clearMyVar('地区');\r\n                clearMyVar('year');\r\n                clearMyVar('rank');\r\n            } else {\r\n                putMyVar('折叠', '开');\r\n            }\r\n            refreshPage(true);\r\n            return \"hiker://empty\";\r\n        }),\r\n        col_type: 'scroll_button',\r\n    })\r\n    for (var prop in 顶部大类) {\r\n        d.push({\r\n            title: 顶部大类[prop] == getMyVar('大类', 'https://www.skrtv.com/tv.html') ? '““””<b><font color=#1aad19>' + prop + '</font></b>' : prop,\r\n            url: $('#noLoading#').lazyRule((href) => {\r\n                putMyVar('大类', href);\r\n                refreshPage(true);\r\n                return \"hiker://empty\";\r\n            }, 顶部大类[prop]),\r\n            col_type: 'scroll_button',\r\n        })\r\n    }\r\n    d.push({\r\n        col_type: 'blank_block'\r\n    })\r\n    // 判断小分类是否展开\r\n    if (getMyVar('折叠', '关') == '开') {\r\n        html = fetch(getMyVar('大类', 'https://www.skrtv.com/tv.html'));\r\n        分类列表 = pdfa(html, '#filter-form&&.am-u-md-3').slice(0, 2);\r\n        // 类型、地区\r\n        分类列表.forEach(ul => {\r\n            筛选条件 = pdfh(ul, 'select&&placeholder');\r\n            子分类列表 = pdfa(ul, 'body&&option');\r\n            d.push({\r\n                title: getMyVar(筛选条件, '全部') == '全部' ? '““””<b><font color=#1aad19>全部</font></b>' : '全部',\r\n                url: $('#noLoading#').lazyRule((筛选条件) => {\r\n                    putMyVar(筛选条件, '');\r\n                    refreshPage(true);\r\n                    return \"hiker://empty\";\r\n                }, 筛选条件),\r\n                col_type: 'scroll_button'\r\n            })\r\n            子分类列表.forEach(li => {\r\n                分类名称 = pdfh(li, 'option&&Text');\r\n                if (分类名称 == '' || 分类名称.match(/类型|地区/)) {\r\n                    return;\r\n                }\r\n                d.push({\r\n                    title: getMyVar(筛选条件, '全部') == 分类名称 ? '““””<b><font color=#1aad19>' + 分类名称 + '</font></b>' : 分类名称,\r\n                    url: $('#noLoading#').lazyRule((筛选条件, 分类名称) => {\r\n                        putMyVar(筛选条件, 分类名称);\r\n                        refreshPage(true);\r\n                        return \"hiker://empty\";\r\n                    }, 筛选条件, 分类名称),\r\n                    col_type: 'scroll_button'\r\n                })\r\n            });\r\n            d.push({\r\n                col_type: 'blank_block'\r\n            })\r\n        });\r\n        // 单独设置年份\r\n        year = new Date().getFullYear().toString();\r\n        d.push({\r\n            title: getMyVar('year', '全部') == '全部' ? '““””<b><font color=#1aad19>全部</font></b>' : '全部',\r\n            url: $('#noLoading#').lazyRule(() => {\r\n                putMyVar('year', '');\r\n                refreshPage(true);\r\n                return \"hiker://empty\";\r\n            }),\r\n            col_type: 'scroll_button'\r\n        })\r\n        for (let i = 0; i < 6; i++) {\r\n            d.push({\r\n                title: getMyVar('year', year) == parseInt(year - i) ? '““””<b><font color=#1aad19>' + parseInt(year - i) + '</font></b>' : parseInt(year - i) + '',\r\n                url: $('#noLoading#').lazyRule((year, i) => {\r\n                    putMyVar('year', parseInt(year - i));\r\n                    refreshPage(true);\r\n                    return \"hiker://empty\";\r\n                }, year, i),\r\n                col_type: 'scroll_button'\r\n            })\r\n        }\r\n        d.push({\r\n            col_type: 'blank_block'\r\n        })\r\n        // 单独设置排序\r\n        d.push({\r\n            title: getMyVar('rankname', '全部') == '全部' ? '““””<b><font color=#1aad19>全部</font></b>' : '全部',\r\n            url: $('#noLoading#').lazyRule(() => {\r\n                putMyVar('rank', '');\r\n                refreshPage(true);\r\n                return \"hiker://empty\";\r\n            }),\r\n            col_type: 'scroll_button'\r\n        })\r\n        ranks = pdfa(pdfa(html, 'body&&.am-nav-pills')[1], 'body&&li');\r\n        ranks.forEach(list => {\r\n            分类名称 = pdfh(list, 'a&&Text');\r\n            d.push({\r\n                title: getMyVar('rankname', '最新上映') == 分类名称 ? '““””<b><font color=#1aad19>' + 分类名称 + '</font></b>' : 分类名称,\r\n                url: $('#noLoading#').lazyRule((list) => {\r\n                    putMyVar('rankname', pdfh(list, 'a&&Text'));\r\n                    putMyVar('rank', pdfh(list, 'li&&id'));\r\n                    refreshPage(true);\r\n                    return \"hiker://empty\";\r\n                }, list),\r\n                col_type: 'scroll_button'\r\n            })\r\n        });\r\n    }\r\n}\r\n// 展示\r\ntrue_url = getMyVar('大类', 'https://www.skrtv.com/tv.html') + '?cat=' + getMyVar('类型', '') + '&area=' + getMyVar('地区', '') + '&year=' + getMyVar('year', '') + '&rank=' + getMyVar('rank', '') + '&pageno=' + page;\r\nvar list = fetch(true_url, {\r\n    headers: {\r\n        'User-Agent': PC_UA\r\n    }\r\n});\r\nlist = pdfa(list, '.movie-lists&&li');\r\nfor (var i in list) {\r\n    d.push({\r\n        title: pdfh(list[i], '.movie-title&&.movie-name&&Text'),\r\n        desc: pdfh(list[i], '.movie-title&&.movie-tags&&Text'),\r\n        img: pd(list[i], 'img&&data-original') + '@Referer=',\r\n        url: pd(list[i], 'a&&href') + \"#immersiveTheme#\",\r\n        extra: {\r\n            id: '列表' + i,\r\n            img: pd(list[i], 'img&&data-original') + '@Referer='\r\n        }\r\n    });\r\n}\r\nsetResult(d);\r\n","searchFind":"js:\n\nvar d = [];\n\nhtml = getResCode();\n\nlist = pdfa(html, '.am-list&&li');\n\nfor (var i in list) {\n\n    d.push({\n\n        title: pdfh(list[i], '.am-list-item-hd&&a&&Text'),\n\n        img: pdfh(list[i], '.am-list-thumb&&img&&data-original') + \"@Referer=\",\n\n        desc: pdfh(list[i], '.am-text-danger&&Text'),\n\n        content: pdfh(list[i], '.am-list-item-text&&Text'),\n\n        url: pdfh(list[i], 'a&&href') + \"#immersiveTheme#\",\n\n    });\n\n}\n\nsetResult(d);\n\n\n","search_url":"https://www.skrtv.com/search.php?wd=**&type=bozy","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\r\nvar d = [];\r\n// 搜索二级——推荐使用搜索\r\nif (MY_URL.match(/boid/)) {\r\n    var html = getResCode();\r\n    //标题\r\n    var 影片名称 = pdfh(html, '.decs&&span,0&&Text').split(' ')[0];\r\n    // 图片\r\n    var 封面 = pd(html, '.am-g&&img&&data-original');\r\n    //剧情简介\r\n    var 简介 = pdfh(html, '.decs&&span,-2&&Text');\r\n    //线路名数组tabs\r\n    var arts = pdfa(html, '.am-tabs-nav&&li');\r\n    var tabs = [];\r\n    for (var i in arts) {\r\n        tabs.push(pdfh(arts[i], 'a&&Text').replace(/\\d+|\\(|\\)| /g, ''));\r\n    }\r\n    //选集数组lists\r\n    var conts = pdfa(html, '.am-tabs-bd&&.am-tab-panel');\r\n    var lists = [];\r\n    for (var i in conts) {\r\n        dataUrlArray=pdfa(conts[i].replace(/button/g, 'a').replace(/data-url/g, 'href').replace(/(\"[\\s]+data-name=\"|\"[\\s]+data-oriurl=\")/g, '#'), 'body&&a');\r\n        realArray=[];\r\n        try {\r\n            dataUrlArray.forEach(item => {\r\n                href=pdfh(item,'a&&href');\r\n                parms = href.split('#');\r\n                originUrl = '';\r\n                if (parms.length == 2) {\r\n                    dataUrl = parms[0];\r\n                    title = parms[1];\r\n                } else {\r\n                    dataUrl = parms[0];\r\n                    originUrl = parms[1];\r\n                    title = parms[2];\r\n                }\r\n                realArray.push(item.replace(/href.+\"/g,'href=\"https://line1.favnow.com/?uid=89&token=mui&v=' + dataUrl + '&title=' + title+'\"'));\r\n            });\r\n        }catch{\r\n            dataUrl='hiker://empty';\r\n            log('链接参数拼接错误！');\r\n        }\r\n        lists.push(realArray);\r\n    }\r\n} else if (MY_URL.match(/vaid/)) {\r\n    // 首页片库进去的综艺类（fetchCodeByWebView以获取等待加载中的数据...慢而且并不理想将就着吧）\r\n    html = fetchCodeByWebView(MY_URL);\r\n    //标题\r\n    var 影片名称 = pdfh(html, '.am-panel-hd&&Text').split(' ')[0];\r\n    // 图片\r\n    var 封面 = MY_PARAMS.img;\r\n    // 演员\r\n    var 演员 = '演员：' + pdfh(html, 'body&&.am-panel-bd,2&&span,0&&Text').replace(/】【/g, '、').replace(/【|】/g, '');\r\n    //剧情简介\r\n    var 简介 = pdfh(html, 'body&&.am-panel-bd,2&&span,-1&&Text');\r\n    //线路名数组tabs——保留年份线路名称\r\n    var arts = pdfa(html, '.am-tabs-nav&&li');\r\n    var tabs = [];\r\n    for (var i in arts) {\r\n        tabs.push(pdfh(arts[i], 'a&&Text'));\r\n    }\r\n    // 选集数组\r\n    var conts = pdfa(html, '.am-tabs-bd&&.am-tab-panel');\r\n    var lists = [];\r\n    for (var i in conts) {\r\n        dataUrlArray=pdfa(conts[i].replace(/button/g, 'a').replace(/data-url/g, 'href').replace(/(\"[\\s]+data-name=\"|\"[\\s]+data-oriurl=\")/g, '#'), 'body&&a');\r\n        realArray=[];\r\n        try {\r\n            dataUrlArray.forEach(item => {\r\n                href=pdfh(item,'a&&href');\r\n                parms = href.split('#');\r\n                originUrl = '';\r\n                if (parms.length == 2) {\r\n                    dataUrl = parms[0];\r\n                    title = parms[1];\r\n                } else {\r\n                    dataUrl = parms[0];\r\n                    originUrl = parms[1];\r\n                    title = parms[2];\r\n                }\r\n                realArray.push(item.replace(/href.+\"/g,'href=\"https://line1.favnow.com/?uid=89&token=mui&v=' + dataUrl + '&title=' + title+'\"'));\r\n            });\r\n        }catch{\r\n            dataUrl='hiker://empty';\r\n            log('链接参数拼接错误！');\r\n        }\r\n        lists.push(realArray);\r\n    }\r\n} else if (MY_URL.match(/mid/)) {\r\n    // 首页片库进去的电影\r\n    var html = getResCode();\r\n    //标题\r\n    var 影片名称 = pdfh(html, '.am-panel-hd&&Text').split(' ')[0];\r\n    // 图片\r\n    var 封面 = MY_PARAMS.img;\r\n    // 演员\r\n    var 演员 = '演员：' + pdfh(html, 'body&&.am-panel-bd,2&&span,0&&Text').replace(/】【/g, '、').replace(/【|】/g, '');\r\n    //剧情简介\r\n    var 简介 = pdfh(html, 'body&&.am-panel-bd,2&&span,-1&&Text');\r\n    //线路名数组tabs\r\n    var arts = pdfa(html, '.am-btn-group&&button');\r\n    var tabs = [];\r\n    for (var i in arts) {\r\n        tabs.push(pdfh(arts[i], 'button&&Text'));\r\n    }\r\n    //选集数组lists\r\n    var conts = pdfa(html, '.am-btn-group&&button');\r\n    var lists = [];\r\n    for (var i in conts) {\r\n        dataUrlArray=pdfa(conts[i].replace(/button/g, 'a').replace(/data-url/g, 'href').replace(/(\"[\\s]+data-name=\"|\"[\\s]+data-oriurl=\")/g, '#'), 'body&&a');\r\n        realArray=[];\r\n        try {\r\n            dataUrlArray.forEach(item => {\r\n                href=pdfh(item,'a&&href');\r\n                parms = href.split('#');\r\n                originUrl = '';\r\n                if (parms.length == 2) {\r\n                    dataUrl = parms[0];\r\n                    title = parms[1];\r\n                } else {\r\n                    dataUrl = parms[0];\r\n                    originUrl = parms[1];\r\n                    title = parms[2];\r\n                }\r\n                realArray.push(item.replace(/href.+\"/g,'href=\"https://line1.favnow.com/?uid=89&token=mui&v=' + dataUrl + '&title=' + title+'\"'));\r\n            });\r\n        }catch{\r\n            dataUrl='hiker://empty';\r\n            log('链接参数拼接错误！');\r\n        }\r\n        lists.push(realArray);\r\n    }\r\n}else{\r\n    // 首页片库进去的\r\n    var html = getResCode();\r\n    //标题\r\n    var 影片名称 = pdfh(html, '.am-panel-hd&&Text').split(' ')[0];\r\n    // 图片\r\n    var 封面 = MY_PARAMS.img;\r\n    // 演员\r\n    var 演员 = '演员：' + pdfh(html, 'body&&.am-panel-bd,2&&span,0&&Text').replace(/】【/g, '、').replace(/【|】/g, '');\r\n    //剧情简介\r\n    var 简介 = pdfh(html, 'body&&.am-panel-bd,2&&span,-1&&Text');\r\n    //线路名数组tabs\r\n    var arts = pdfa(html, '.am-tabs-nav&&li');\r\n    var tabs = [];\r\n    for (var i in arts) {\r\n        tabs.push(pdfh(arts[i], 'a&&Text').replace(/\\d+|\\(|\\)| /g, ''));\r\n    }\r\n    //选集数组lists\r\n    var conts = pdfa(html, '.am-tabs-bd&&.am-tab-panel');\r\n    var lists = [];\r\n    for (var i in conts) {\r\n        dataUrlArray=pdfa(conts[i].replace(/button/g, 'a').replace(/data-url/g, 'href').replace(/(\"[\\s]+data-name=\"|\"[\\s]+data-oriurl=\")/g, '#'), 'body&&a');\r\n        realArray=[];\r\n        try {\r\n            dataUrlArray.forEach(item => {\r\n                href=pdfh(item,'a&&href');\r\n                parms = href.split('#');\r\n                originUrl = '';\r\n                if (parms.length == 2) {\r\n                    dataUrl = parms[0];\r\n                    title = parms[1];\r\n                } else {\r\n                    dataUrl = parms[0];\r\n                    originUrl = parms[1];\r\n                    title = parms[2];\r\n                }\r\n                realArray.push(item.replace(/href.+\"/g,'href=\"https://line1.favnow.com/?uid=89&token=mui&v=' + dataUrl + '&title=' + title+'\"'));\r\n            });\r\n        }catch{\r\n            dataUrl='hiker://empty';\r\n            log('链接参数拼接错误！');\r\n        }\r\n        lists.push(realArray);\r\n    }\r\n}\r\n// 短讯是简介上方展示的一块数据，自行diy，一般由影片名称、演职人员等组成\r\nvar 短讯 = 演员 ? pdfh(html, '.am-panel-hd&&Text') + '\\n' + 演员 : pdfh(html, '.decs&&span,0&&Text');\r\n// 可以修改但建议保留28\r\nvar 每页集数 = 28;\r\n// 颜色\r\nvar Color = \"#19B89D\";\r\n/*\r\n值可取：自写、通免、弹幕通免、常规断插\r\ntip1:自写免嗅变量lazy写到页面标识为lazy的子页面(注意lazy变量已封装只需在子页面编写lazy的具体操作，参见顺封)\r\ntip2:若赋值弹幕通免,则还需设置变量弹幕文件(值有远程、盒子),例如var 弹幕文件='远程',若赋值“盒子”则本地必须有dm盒子规则\r\n*/\r\nvar 动态解析 = '自写';\r\n/*\r\n选插变量值可取开和关。如果过开启选插必须有魔断环境（导入魔断并初始化脚本和配置文件）否则无法进入二级\r\n建议开启选插,便捷且不会刷新页面\r\n*/\r\nvar 选插 = '关';\r\n/*\r\n如果开启了选插需要填写下面两个变量(关闭选插搜索功能丢失)\r\n搜索模式：分组或小程序\r\n调用名称：分组名称或小程序名称\r\n*/\r\nvar 搜索模式 = '分组';\r\nvar 调用名称 = '简影';\r\nrequireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=5285', 24);\r\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"lazy\",\"path\":\"lazy\",\"rule\":\"function 弹幕解析(input) {\\r\\n    showLoading(\\\"获取弹幕中，请稍候……\\\");\\r\\n    try {\\r\\n        if (getVar('get', '') == input) {\\r\\n            dm = 'hiker://files/鲨鱼/dm.xml';\\r\\n        } else {\\r\\n            var data = fetch(input, {\\r\\n                headers: {\\r\\n                    'User-Agent': PC_UA\\r\\n                }\\r\\n            });\\r\\n            // 获取弹幕\\r\\n            danmuAddress = data.match(/addan[\\\\S\\\\s]+(?=',next)/)[0].replace(\\\"addan='\\\", '');\\r\\n            var data = ''\\r\\n            // 弹幕大小\\r\\n            var size = JSON.parse(readFile('hiker://files/dm盒子/settings.json')).fontSize;\\r\\n            danmu = JSON.parse(fetch(danmuAddress));\\r\\n            danmuData = danmu.danmuku;\\r\\n            for (let i = 0; i < danmuData.length; i++) {\\r\\n                // 弹幕发送时间\\r\\n                timepoint = danmuData[i][0];\\r\\n                // 弹幕样式\\r\\n                ct = 1;\\r\\n                if (danmuData[i][1] == 'top') {\\r\\n                    // 顶端弹幕\\r\\n                    ct = 5;\\r\\n                }\\r\\n                // 颜色设置\\r\\n                if (danmuAddress.match(/youku/)) {\\r\\n                    color = (danmuData[i][2].match(/[0-9]+/g)[0] << 16) + (danmuData[i][2].match(/[0-9]+/g)[1] << 8) + parseInt((danmuData[i][2].match(/[0-9]+/g)[2]));\\r\\n                } else {\\r\\n                    color = parseInt(danmuData[i][2].replace('#', ''), 16);\\r\\n                }\\r\\n                // 弹幕内容\\r\\n                content = danmuData[i][4];\\r\\n                if (content.indexOf('<') != -1 || content.indexOf('>') != -1 || content.indexOf('&') != -1 || content.indexOf('\\\\u0000') != -1 || content.indexOf('\\\\b') != -1) {\\r\\n                    continue;\\r\\n                }\\r\\n                tempdata = `<d p=\\\"${timepoint},${ct},${size},${color},0\\\">${content}</d>\\\\n`;\\r\\n                data += tempdata;\\r\\n            }\\r\\n            // 最终待写入的弹幕数据\\r\\n            danmustr = `<?xml version=\\\"1.0\\\" encoding=\\\"UTF-8\\\"?>\\\\n<i>\\\\n${data}</i>`;\\r\\n            // 写入弹幕\\r\\n            dm = 'hiker://files/鲨鱼/dm.xml';\\r\\n            saveFile(dm, danmustr);\\r\\n            putVar('get', input);\\r\\n            log('success');\\r\\n        }\\r\\n    } catch (e) {\\r\\n        dm = 'hiker://files/鲨鱼/dm.xml';\\r\\n        showLoading('弹幕获取失败,将直链播放');\\r\\n    }\\r\\n    return JSON.stringify({\\r\\n        urls: ['video://' + input],\\r\\n        names: ['鲨鱼官弹'],\\r\\n        danmu: dm,\\r\\n        extra: {\\r\\n            js: 'fy_bridge_app.setWebUa(Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.25)'\\r\\n        }\\r\\n    });\\r\\n}\\r\\n弹幕解析(input)\"}]","proxy":"","icon":"https://img0.baidu.com/it/u=3342455619,3583883355&fm=253&fmt=auto&app=138&f=JPEG?w=500&h=582"},{"last_chapter_rule":"","title":"360魔改（助手）","author":"发粪涂墙&cy","version":0,"type":"video","url":"https://api.web.360kan.com/v1/filter/list?size=35&pageno=fypage&catid=fyclass","col_type":"movie_3","class_name":"电视剧&电影&动漫","class_url":"2&1&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nJSON.parse(getResCode()).data.movies.forEach(video => {\n    d.push({\n        title: video.title,\n        desc: video.upinfo ? video.upinfo + '集' : (video.doubanscore ? video.doubanscore : video.tag),\n        img: 'https:' + video.cover + '@Referer=https:' + video.cover,\n        url: 'https://api.web.360kan.com/v1/detail?cat=' + MY_URL.split('catid=')[1] + '&id=' + video.id + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","searchFind":"js:\nvar d = [];\nJSON.parse(getResCode()).data.longData.rows.forEach(video => {\n    d.push({\n        title: video.titleTxt,\n        content: video.description,\n        desc: video.coverInfo.txt || video.coverInfo.quality,\n        img: video.cover + '@Referer=' + video.cover,\n        url: 'https://api.web.360kan.com/v1/detail?cat=' + video.cat_id + '&id=' + video.en_id + '#immersiveTheme#',\n        col_type: 'movie_3_marquee',\n    })\n})\nsetResult(d);","search_url":"https://api.so.360kan.com/index?force_v=1&kw=**&pageno=fypage&v_ap=1&tab=all","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = JSON.parse(getResCode()).data;\n\nfunction red(text) {\n    return '““' + text + '””';\n}\n\nd.push({\n    title: html.area.join(' ') + ' ' + html.moviecategory.join(' ').substring(0, 15) + '\\n' + html.actor.join(' ').substring(0, 15) + '\\n' + html.pubdate,\n    desc: html.description.substring(0, 38),\n    img: html.cdncover,\n    url: $('').lazyRule(() => {\n        return $().rule(() => {\n            eval(JSON.parse(request('hiker://page/home?rule=配置助手&type=设置#noHistory#')).rule);\n        })\n    }),\n    col_type: 'movie_1_vertical_pic_blur'\n});\n\nvar lazy = $('').lazyRule(() => {\n    return $.require(\"hiker://page/mulParse?rule=配置助手\").mulParse(input);\n});\nvar tabs = [];\nvar lists = [];\nvar arts = html.playlink_sites;\nfor (var i in arts) {\n    if (html.upinfo) {\n        var upinfo = MY_URL.split('#')[0] + '&start=1&end=' + html.upinfo + '&site=' + arts[i]\n    } else {\n        upinfo = MY_URL.split('#')[0] + '&site=' + arts[i]\n    }\n    tabs.push(arts[i])\n    lists.push(upinfo)\n\n}\n\nfunction setTabs(tabs, vari) {\n    d.push({\n        title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序</span></b>' : '““””<b><span style=\"color: #1aad19\">正序</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'flex_button'\n    })\n    for (var i = 0; i < tabs.length; i++) {\n        var url = \"#noLoading#@lazyRule=.js:putVar('\" + vari + \"', '\" + i + \"');refreshPage(false);'toast://切换成功！';'#noHistory#hiker://empty'\";\n        d.push({\n            title: getVar(vari, '0') == i ? red(tabs[i]) : tabs[i],\n            url: url,\n            col_type: 'flex_button'\n        })\n    }\n    d.push({\n        col_type: 'line_blank'\n    })\n}\n\nfunction setLists(lists, index) {\n    var json = JSON.parse(request(lists[index])).data\n    var site = lists[index].split('&site=')[1]\n    if (json.allepidetail && json.playlinksdetail) {\n        var html = json.allepidetail;\n        var list = html[site]\n        if (getVar('shsort') == '1') {\n            var list = html[site].reverse();\n        }\n        for (var j in list) {\n            d.push({\n                title: list[j].playlink_num,\n                url: list[j].url + lazy,\n                col_type: 'text_4'\n            });\n        }\n    } else {\n        var html = JSON.parse(request(lists[index])).data.playlinksdetail;\n        var list = html[site]\n        d.push({\n            title: json.pubdate,\n            img: list.cdn_h_cover,\n            desc: json.moviecategory.join(' '),\n            url: list.default_url + lazy,\n            col_type: 'movie_2'\n        });\n    }\n}\nsetTabs(tabs, MY_URL);\nsetLists(lists, getVar(MY_URL, '0'));\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bkimg.cdn.bcebos.com/pic/caef76094b36acaf2fadca5a70d98d1000e99cc2"},{"firstHeader":"class","last_chapter_rule":"","title":"二级简封实例","author":"道长&Killer&cy","version":2,"type":"video","url":"hiker://empty##https://zjmiao.com/index.php/vod/show/id/1/page/fypage/","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.自动匹配);\nlet ui = ()=>{\n    //true_url = 获取正确链接();\n    page=MY_PAGE;\n    true_url = getMyVar('header.url',MY_URL);\n    if(page>1&&!/page/.test(true_url)){\n        true_url=true_url+'page/'+page+'/'\n    }\n    log(true_url);\n    let cates = 打造动态分类([{一级分类: 'body&&.swiper-wrapper:has(.ecnav-dt)',\n        子分类: 'ul&&li'\n},{\n一级分类: 'body&&.site-tabs',\n        子分类: 'body&&a'\n}]);\n    设置(cates);\n    自动一级(null,cates,html);\n}\n混合(ui,\"detail/\",\"/app\",\"/\");","searchFind":"js:\nrequire(config.自动匹配);\nMY_URL = 获取搜索链接();\nhtml = 获取源码(MY_URL,PC_UA);\n自动搜索('搜索结果');","search_url":"hiker://empty##/index.php/vod/search/page/fypage/wd/**/","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nMY_URL=MY_URL.split('##')[1];\n//var html = getResCode();\nvar html=fetch(MY_URL);\n// 影片名称用于搜索\n\nvar 影片名称 = pdfh(html, 'h1&&Text');\n\nvar 简介 = pdfh(html, '.desc_txt&&Text').replace(/详情|介绍|简介/, '');\n\nvar 封面 = pd(html, '.s-cover&&img&&src');\n\n// 短讯是简介上方展示的一块数据，自行diy，一般由影片名称、演职人员等组成\n\nvar 短讯 = pdfh(html, '.s-top-right&&p,2&&Text').substring(0, 35) + '\\n' + pdfh(html,'.s-top-right&&p,1&&Text').substring(0, 35);\n\n//线路名数组tabs\n\nvar arts = pdfa(html, 'body&&.swiper-wrapper:has(.channelname)&&a');\n\nvar tabs = [];\n\nfor (var i in arts) {\n\n    tabs.push(pdfh(arts[i], 'Text').replace(/\\d+|\\(|\\)| /g, ''))\n\n}\n\n//选集数组lists\n\nvar conts = pdfa(html, 'body&&.content_playlist');\n\nvar lists = [];\n\nfor (var i in conts) {\n\n    lists.push(pdfa(conts[i], 'body&&a'))\n\n}\n\n// 可以修改但建议保留28\n\nvar 每页集数 = 28;\n\n// 强调颜色\n\nvar Color = \"#19B89D\";\n\n/*\n\n值可取：自写、通免、弹幕通免、常规断插\n\ntip1:自写免嗅变量lazy写到页面标识为lazy的子页面(注意lazy变量已封装只需在子页面编写lazy的具体操作，参见顺封)\n\ntip2:若赋值弹幕通免,则还需设置变量弹幕文件(值有远程、盒子),例如var 弹幕文件='远程',若赋值“盒子”则本地必须有dm盒子规则\n并设置嗅探模式:原生-香免-道长，三者任选其一\n*/\n\nvar 动态解析 = '弹幕通免';\nvar 弹幕文件='盒子';\nvar 嗅探模式='原生';\n\n/*\n\n选插变量值可取开和关。如果过开启选插必须有魔断环境（导入魔断并初始化脚本和配置文件）否则无法进入二级\n\n建议开启选插,便捷且不会刷新页面\n\n*/\n\nvar 选插 = '关';\n\n/*\n\n如果开启了选插需要填写下面两个变量，若选插 = '关'则不需要填写(关闭选插搜索功能丢失)\n\n搜索模式：分组或小程序\n\n调用名称：分组名称或小程序名称\n\n*/\n\nvar 搜索模式 = '小程序';\n\nvar 调用名称 = '易搜';\n\nrequireCache('http://hiker.nokia.press/hikerule/rulelist.json?id=5285', 24);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua=MOBILE_UA;\n//require('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');\nvar dr_jsRoot = 'https://gitcode.net/qq_32394351/dr/-/raw/master/js/';\n    try {\n        const {getApi} = $.require(\"hiker://page/utiliy?rule=道长仓库Pro\");\n        var 模板 = getApi('importUrl')+\"2505\";\n        require(模板);\n        预处理(模板)\n    }catch (e) {\n        log('预处理执行失败:'+e.message);\n        initConfig({\n            模板:dr_jsRoot+'dr.js',\n            自动匹配:dr_jsRoot+'自动模板匹配.js',\n        });\n    }","pages":"[]","proxy":"","icon":"https://zjmiao.com/upload/site/20220213-1/47aa96d2fd9dfc7c2cfb56f6a4effbf8.png@Referer="},{"last_chapter_rule":"","title":"奇书","author":"@LoyDgIk","version":8,"type":"video","url":"http://m.qishuxsw.com/fyclassindex_fypage.html[firstPage=http://m.qishuxsw.com/fyclass;gbk];gbk","col_type":"movie_1_vertical_pic","class_name":"最新全本&玄幻奇幻&武侠仙侠&女频言情&现代都市&历史军事&游戏竞技&精校小说","class_url":"newbook/&xuanhuan/&xianxia/&yanqing/&dushi/&lishi/&youxi/&jingjiao/","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"#ulist&&li;.book_title&&Text;img&&src;p,1&&Text+\"\\n\"+p,-1&&Text;a&&href.js:(input.startsWith(\"http\")?\"hiker://empty##\"+input:\"hiker://empty##http://m.qishuxsw.com\"+input)+\"#immersiveTheme##noRecordHistory##noHistory#\"","searchFind":".main&&.listtxt,1:;a&&Text;a&&href.js:(input.startsWith(\"http\")?\"hiker://empty##\"+input:\"hiker://empty##http://m.qishuxsw.com\"+input)+\"#immersiveTheme##noRecordHistory##noHistory#\";.bookauthor&&Text;;","search_url":"http://qishuk.com/e/search/index.php?show=title,writer&tbname=book&tempid=1&keyboard=**;post;gbk","group":"视频","detail_col_type":"text_center_1","detail_find_rule":"js:\n(function() {\n    let html = fetch(MY_URL.replace(\"hiker://empty##\", \"\"), {\n        headers: {\n            'content-type': 'text/plain; charst=gbk'\n        }\n    });\n    const Config = $.require(\"hiker://page/Config.json?rule=本地资源管理\");\n    if (!html) {\n        setResult([{\n            col_type: \"big_big_blank_block\",\n        }, {\n            title: '<h1 style=\"text-align: center;\">网络不佳，加载失败</h1>',\n            col_type: \"rich_text\",\n        }]);\n        return;\n    }\n    \n    let d = [];\n    let title = pdfh(html, \".title&&Text\");\n    let desc = pdfa(html, \".bookcover&&p\").map(v => pdfh(v, \"p&&Text\")).join(\"\\n\");\n    d.push({\n        title: title,\n        pic_url: pd(html, \".pic&&img&&src\"),\n        desc: desc,\n        url: $(desc).confirm(() => {}),\n        col_type: \"movie_1_vertical_pic_blur\",\n        extra: {\n            gradient: true\n        }\n    });\n   \n    let path = \"file://\" + Config.externalImportPath + title + \".txt\";\n    let butText = \"下载到阅读器\";\n    let butCol = \"text_center_1\";\n\n    if (fileExist(path)) {\n        butText = \"重新下载\";\n        butCol = \"text_3\";\n        d.push({\n            title: \"打开书架\",\n            url: \"hiker://page/externalimportTxt.view?rule=本地资源管理\",\n            col_type: butCol\n        });\n        d.push({\n            title: \"本地阅读\",\n            url: \"hiker://page/txtParser.view?rule=本地资源管理\",\n            col_type: butCol,\n            extra: {\n                isCache: true,\n                path: path\n            }\n        });\n    }\n    d.push({\n        title: butText,\n        url: !Config.externalImportPath ? \"toast://未安装本地资源管理\" : $(pd(html, \".greenBtn:matches(下载)&&a&&href\") + \"#noLoading#\").lazyRule((title, path) => {\n            showLoading(\"下载中...\");\n            input = pd(fetch(input), \".greenBtn&&href\");\n            downloadFile(input, path);\n            refreshPage(false);\n            log(\"『\" + title + \"』下载的完成\");\n            hideLoading();\n            toast(\"『\" + title + \"』下载的完成\");\n            return \"hiker://page/txtParser.view?rule=本地资源管理&path=\" + encodeURIComponent(path);\n        }, title, path),\n        col_type: butCol,\n        extra: {\n            isCache: true\n        }\n    });\n    d.push({\n        title: \"<big><strong>小说简介</strong></big><br>　　\" + pdfh(html, \".bookintro&&.con&&Text\"),\n        col_type: \"rich_text\",\n    });\n    \n    setResult(d);\n})()","sdetail_col_type":"text_center_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://m.qishuxsw.com/images/logo.gif"},{"last_chapter_rule":"","title":"bilili","author":"侠名","version":2,"type":"video","url":"hiker://empty##fypage","col_type":"movie_1_vertical_pic","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar page = MY_PAGE;\nisLogin = JSON.parse($.require(\"hiker://page/api\").isLoggedIn());\n// 验证登录\nif (isLogin.type === true) {\n    biliDate = JSON.parse(request(\"hiker://files/rules/cy/bili.txt\"));\n    cookie = biliDate.cookie;\n    userName = biliDate.userName;\n    mid = biliDate.userMid;\n    userFace = biliDate.face + \"@Referer=\";\n    if (page == 1) {\n        var Tab = ['热映', '片库', '推送','热门', '订阅', '关注', '收藏', '足迹','动态'];\n        Tab = Tab.map((it) => {\n            return it === getItem('首页', '推送') ? '👉' + it : it;\n        });\n        d.push({\n            title: '<font color=\"blue\">' + userName + '</font>⭐<font color=\"#19B89D\">' + getItem('首页', '推送') + '</font>⭐',\n            url: $('#noLoading#').lazyRule((Tab) => {\n                return $(Tab, 3).select(() => {\n                    input = input.replace(/👉/g, '');\n                    setItem('首页', input);\n                    refreshPage(true);\n                    return \"toast://切换首页为:\" + input;\n                })\n            }, Tab),\n            img: userFace === undefined ? 'https://lanmeiguojiang.com/tubiao/movie/20.svg' : userFace,\n            col_type: \"avatar\",\n            extra: {\n                id: '首页显示'\n            }\n        });\n        d.push({\n            col_type: 'blank_block'\n        })\n    }\n    // 匹配首页选项\n    switch (getItem('首页', '推送')) {\n        case '热映':\n            eval(JSON.parse(request('hiker://page/UpdateTables')).rule);\n            break;\n        case '片库':\n            eval(JSON.parse(request('hiker://page/vault')).rule);\n            break;\n        case '推送':\n            eval(JSON.parse(request('hiker://page/feed')).rule);\n            break;\n        case '热门':\n            eval(JSON.parse(request('hiker://page/hotVideo')).rule);\n            break;\n        case '订阅':\n            eval(JSON.parse(request('hiker://page/subscription')).rule);\n            break;\n        case '关注':\n            eval(JSON.parse(request('hiker://page/attention')).rule);\n            break;\n        case '收藏':\n            eval(JSON.parse(request('hiker://page/colection')).rule);\n            break;\n        case '足迹':\n            eval(JSON.parse(request('hiker://page/track')).rule);\n            break;\n        case '动态':\n            eval(JSON.parse(request('hiker://page/latetNews')).rule);\n            break;\n        default:\n            eval(JSON.parse(request('hiker://page/UpdateTables')).rule);\n            break;\n    }\n} else {\n    let a = []\n    let time = 10\n    a.push({\n        title: `                     使用前须知\n本规则调用https://github.com/SocialSisterYi/bilibili-API-collect的api，所有代码全部开源，并且不存在上传用户信息的行为\n本规则为学习目的，请于导入24小时内删除！！！                        \n开始使用本规则即代表遵守规则                       \n            `,\n        \"col_type\": \"long_text\",\n        extra: {\n            id: \"text\"\n        }\n    }, {\n        title: time + \"秒后继续\",\n        col_type: \"text_1\",\n        extra: {\n            id: \"timer\"\n        }\n    })\n    setResult(a)\n    while (time != 0) {\n        java.lang.Thread.sleep(1000)\n        time -= 1\n        updateItem(\"timer\", {\n            title: time + \"秒后继续\"\n        })\n    }\n    addItemAfter(\"timer\", {\n        title: \"登陆\",\n        url: \"hiker://page/login\",\n        col_type: \"text_center_1\"\n    })\n    deleteItem(\"text\")\n    deleteItem(\"timer\")\n}\nsetResult(d);","searchFind":"js:\r\nMY_URL = MY_URL.split('##');\r\nlet seaword = MY_URL[1];\r\nvar d = [];\r\ncookie = JSON.parse(fetchCookie('https://www.bilibili.com/', {\r\n    headers: {\r\n        \"User-Agent\": PC_UA,\r\n        \"Referer\": \"https://www.bilibili.com/\",\r\n    },\r\n    method: \"GET\"\r\n}))[1];\r\nif (MY_PAGE==1) {\r\n    d.push({\r\n        title: \"up搜=>\" + seaword,\r\n        url: 'hiker://page/upSearch?fypage',\r\n        extra: {\r\n            seaword: seaword\r\n        }\r\n    });\r\n    d.push({\r\n        title: \"video搜=>\" + seaword,\r\n        url: 'hiker://page/videoSearch?fypage',\r\n        extra: {\r\n            seaword: seaword\r\n        }\r\n    });\r\n}\r\n// 番剧\r\nlist1 = JSON.parse(fetch(\"https://api.bilibili.com/x/web-interface/search/type?__refresh__=true&_extra=&context=&page=\" + MY_PAGE + \"&page_size=12&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword=\" + seaword + \"&search_type=media_bangumi&preload=true&com2co=true\", {\r\n    headers: {\r\n        \"User-Agent\": PC_UA,\r\n        \"Referer\": \"https://www.bilibili.com/\",\r\n        \"Cookie\": cookie\r\n    },\r\n    method: \"GET\"\r\n})).data.result;\r\nif (list1) {\r\n    list1.forEach(item => {\r\n        d.push({\r\n            title: item.title.replace(/<em class=\"keyword\">/g, '').replace(/<\\/em>/g, ''),\r\n            img: item.cover.replace('http','https') + \"@Referer=\",\r\n            url: 'hiker://page/filmerji#immersiveTheme#',\r\n            content: item.desc,\r\n            desc: item.styles,\r\n            extra: {\r\n                season_id: item.season_id\r\n            }\r\n        });\r\n    });\r\n}\r\n// 影视\r\nlist2 = JSON.parse(fetch(\"https://api.bilibili.com/x/web-interface/search/type?__refresh__=true&_extra=&context=&page=\" + MY_PAGE + \"&page_size=12&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword=\" + seaword + \"&category_id=&search_type=media_ft&preload=true&com2co=true\", {\r\n    headers: {\r\n        \"User-Agent\": PC_UA,\r\n        \"Referer\": \"https://www.bilibili.com/\",\r\n        \"Cookie\": cookie\r\n    },\r\n    method: \"GET\"\r\n})).data.result;\r\nif (list2) {\r\n    list2.forEach(item => {\r\n        d.push({\r\n            title: item.title.replace(/<em class=\"keyword\">/g, '').replace(/<\\/em>/g, ''),\r\n            img: item.cover.replace('http','https') + \"@Referer=\",\r\n            url: 'hiker://page/filmerji#immersiveTheme#',\r\n            content: item.desc,\r\n            desc: item.styles,\r\n            extra: {\r\n                season_id: item.season_id\r\n            }\r\n        });\r\n    });\r\n}\r\nsetSearchResult(d);\r\n","search_url":"hiker://empty##**##fypage","group":"视频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"js:\n// 图片预处理\nimgLocation = {\n    \"已收藏\": 'hiker://files/rules/cy/bili_pic/已收藏.png',\n    \"未收藏\": 'hiker://files/rules/cy/bili_pic/未收藏.png',\n    \"稍后再看\": 'hiker://files/rules/cy/bili_pic/稍后再看.png',\n    \"未点赞\": 'hiker://files/rules/cy/bili_pic/未点赞.png',\n    \"已点赞\": 'hiker://files/rules/cy/bili_pic/已点赞.png',\n    \"添加关注\": 'hiker://files/rules/cy/bili_pic/添加关注.png',\n    \"已关注\": 'hiker://files/rules/cy/bili_pic/已关注.png',\n    \"专栏\": 'hiker://files/rules/cy/bili_pic/专栏.png',\n    \"查看评论\": 'hiker://files/rules/cy/bili_pic/查看评论.png',\n    \"周边\": 'hiker://files/rules/cy/bili_pic/周边.png',\n    \"双边\": 'hiker://files/rules/cy/bili_pic/双边.png',\n    \"列表\": 'hiker://files/rules/cy/bili_pic/列表.png',\n    \"订阅\": 'hiker://files/rules/cy/bili_pic/订阅.png',\n    \"日历\": 'hiker://files/rules/cy/bili_pic/日历.png',\n    \"动态\": 'hiker://files/rules/cy/bili_pic/动态.png'\n}\nstorage0.putMyVar('图标', imgLocation);\n// 如果仅仅想使用大会员cookie用来播放视频不查看他人隐私，那么再加上独立的bf_cookie即可，将未定义改成他人账号的cookie即可\nputMyVar('bf_cookie',\"未定义\");\n","pages":"[{\"col_type\":\"movie_3\",\"name\":\"分类片库\",\"path\":\"vault\",\"rule\":\"顶部大类 = ['国创', '电视', '纪录片', '综艺', '番剧', '电影']\\n\\nif (page == 1) {\\n\\n    // 折叠开关\\n\\n    d.push({\\n\\n        title: getMyVar('折叠', '关') == '关' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n\\n        url: $('#noLoading#').lazyRule(() => {\\n\\n            if (getMyVar('折叠', '关') == '开') {\\n\\n                putMyVar('折叠', '关');\\n\\n            } else {\\n\\n                putMyVar('折叠', '开');\\n\\n            }\\n\\n            refreshPage(true);\\n\\n            return \\\"hiker://empty\\\";\\n\\n        }),\\n\\n        col_type: 'scroll_button',\\n\\n    })\\n\\n    顶部大类.forEach(li => {\\n\\n        d.push({\\n\\n            title: li == getMyVar('大类', '国创') ? '““””<b><font color=#1aad19>' + li + '</font></b>' : li,\\n\\n            url: $('#noLoading#').lazyRule((li) => {\\n\\n                putMyVar('大类', li);\\n\\n                refreshPage(true);\\n\\n                return \\\"hiker://empty\\\";\\n\\n            }, li),\\n\\n            col_type: 'scroll_button',\\n\\n        })\\n\\n    });\\n\\n    d.push({\\n\\n        col_type: 'blank_block'\\n\\n    })\\n\\n}\\n\\n// 顶部分类参数映射\\n\\nswitch (getMyVar('大类', '国创')) {\\n\\n    case '国创':\\n\\n        seasonType = 4;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/guochuang/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    case '电视':\\n\\n        seasonType = 5;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/tv/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    case '纪录片':\\n\\n        seasonType = 3;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/documentary/index/');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    case '综艺':\\n\\n        seasonType = 7;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/variety/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    case '番剧':\\n\\n        seasonType = 1;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/anime/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    case '电影':\\n\\n        seasonType = 2;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/movie/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n    default:\\n\\n        seasonType = 4;\\n\\n        if (getMyVar('折叠', '关') == '开') {\\n\\n            if (page == 1) {\\n\\n                html = fetch('https://www.bilibili.com/anime/index');\\n\\n                分类列表 = pdfa(html, '.filter-list&&.filter-block');\\n\\n                分类列表.forEach(ul => {\\n\\n                    筛选条件 = pdfh(ul, '.filter-name&&Text');\\n\\n                    子分类列表 = pdfa(ul, 'ul&&li');\\n\\n                    子分类列表.forEach(li => {\\n\\n                        if (pdfh(li, 'li&&Text') == '其他') {\\n\\n                            return;\\n\\n                        }\\n\\n                        d.push({\\n\\n                            title: getMyVar(筛选条件, '全部') == pdfh(li, 'li&&Text') ? '““””<b><font color=#1aad19>' + pdfh(li, 'li&&Text') + '</font></b>' : pdfh(li, 'li&&Text'),\\n\\n                            url: $('#noLoading#').lazyRule((li, 筛选条件) => {\\n\\n                                putMyVar(筛选条件, pdfh(li, 'li&&Text'));\\n\\n                                refreshPage(true);\\n\\n                                return \\\"hiker://empty\\\";\\n\\n                            }, li, 筛选条件),\\n\\n                            col_type: 'scroll_button'\\n\\n                        })\\n\\n                    });\\n\\n                    d.push({\\n\\n                        col_type: 'blank_block'\\n\\n                    })\\n\\n                });\\n\\n            }\\n\\n        }\\n\\n        break;\\n\\n}\\n\\n// 子分类参数映射\\n\\nswitch (getMyVar('类型', '全部')) {\\n\\n    case '正片':\\n\\n        season_version = 1;\\n\\n        break;\\n\\n    case '电影':\\n\\n        season_version = 2;\\n\\n        break;\\n\\n    case '其他':\\n\\n        season_version = 3;\\n\\n        break;\\n\\n    default:\\n\\n        season_version = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('配音', '全部')) {\\n\\n    case '原声':\\n\\n        spoken_language_type = 1;\\n\\n        break;\\n\\n    case '中文配音':\\n\\n        spoken_language_type = 2;\\n\\n        break;\\n\\n    default:\\n\\n        spoken_language_type = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('地区', '全部')) {\\n\\n    case '中国大陆':\\n\\n        area = 1;\\n\\n        break;\\n\\n    case '日本':\\n\\n        area = 2;\\n\\n        break;\\n\\n    case '美国':\\n\\n        area = 3;\\n\\n        break;\\n\\n    case '英国':\\n\\n        area = 4;\\n\\n        break;\\n\\n    case '中国港台':\\n\\n        area = [6, 7];\\n\\n        break;\\n\\n    case '韩国':\\n\\n        area = 8;\\n\\n        break;\\n\\n    case '法国':\\n\\n        area = 9;\\n\\n        break;\\n\\n    case '泰国':\\n\\n        area = 10;\\n\\n        break;\\n\\n    case '西班牙':\\n\\n        area = 13;\\n\\n        break;\\n\\n    case '德国':\\n\\n        area = 15;\\n\\n        break;\\n\\n    case '意大利':\\n\\n        area = 35;\\n\\n        break;\\n\\n    case '其他':\\n\\n        // 只是番剧的情况_共55，要减去出现的——算了，直接在动态分类的时候去掉了\\n\\n        area = [1, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55];\\n\\n        break;\\n\\n    default:\\n\\n        area = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('状态', '全部')) {\\n\\n    case '完结':\\n\\n        is_finish = 1;\\n\\n        break;\\n\\n    case '连载':\\n\\n        is_finish = 0;\\n\\n        break;\\n\\n    default:\\n\\n        is_finish = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('出品', '全部')) {\\n\\n    case '央视':\\n\\n        producer_id = 4;\\n\\n        break;\\n\\n    case 'BBC':\\n\\n        producer_id = 1;\\n\\n        break;\\n\\n    case '探索频道':\\n\\n        producer_id = 7;\\n\\n        break;\\n\\n    case '国家地理':\\n\\n        producer_id = 14;\\n\\n        break;\\n\\n    case 'NHK':\\n\\n        producer_id = 2;\\n\\n        break;\\n\\n    case '历史频道':\\n\\n        producer_id = 6;\\n\\n        break;\\n\\n    case '卫视':\\n\\n        producer_id = 8;\\n\\n        break;\\n\\n    case '自制':\\n\\n        producer_id = 9;\\n\\n        break;\\n\\n    case 'ITV':\\n\\n        producer_id = 5;\\n\\n        break;\\n\\n    case 'SKY':\\n\\n        producer_id = 3;\\n\\n        break;\\n\\n    case 'ZDF':\\n\\n        producer_id = 10;\\n\\n        break;\\n\\n    case '合作机构':\\n\\n        producer_id = 11;\\n\\n        break;\\n\\n    case '国内其他':\\n\\n        producer_id = 12;\\n\\n        break;\\n\\n    case '国外其它':\\n\\n        producer_id = 13;\\n\\n        break;\\n\\n    default:\\n\\n        producer_id = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('版权', '全部')) {\\n\\n    case '独家':\\n\\n        copyright = 3;\\n\\n        break;\\n\\n    case '其他':\\n\\n        copyright = [1, 2, 4];\\n\\n        break;\\n\\n    default:\\n\\n        copyright = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('付费', '全部')) {\\n\\n    case '免费':\\n\\n        season_status = 1;\\n\\n        break;\\n\\n    case '付费':\\n\\n        season_status = [2, 6];\\n\\n        break;\\n\\n    case '大会员':\\n\\n        season_status = [4, 6];\\n\\n        break;\\n\\n    default:\\n\\n        season_status = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('季度', '全部')) {\\n\\n    case '1月':\\n\\n        season_month = 1;\\n\\n        break;\\n\\n    case '4月':\\n\\n        season_month = 4;\\n\\n        break;\\n\\n    case '7月':\\n\\n        season_month = 7;\\n\\n        break;\\n\\n    case '10月':\\n\\n        season_month = 10;\\n\\n        break;\\n\\n    default:\\n\\n        season_month = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('时间', '全部')) {\\n\\n    case '2022':\\n\\n        year = '[2022,2023)';\\n\\n        break;\\n\\n    case '2021':\\n\\n        year = '[2021,2022)';\\n\\n        break;\\n\\n    case '2020':\\n\\n        year = '[2020,2021)';\\n\\n        break;\\n\\n    case '2019':\\n\\n        year = '[2019,2020)';\\n\\n        break;\\n\\n    case '2018':\\n\\n        year = '[2018,2019)';\\n\\n        break;\\n\\n    case '2017':\\n\\n        year = '[2017,2018)';\\n\\n        break;\\n\\n    case '2016':\\n\\n        year = '[2016,2017)';\\n\\n        break;\\n\\n    case '2015':\\n\\n        year = '[2015,2016)';\\n\\n        break;\\n\\n    case '2014-2010':\\n\\n        year = '[2010,2015)';\\n\\n        break;\\n\\n    case '2009-2005':\\n\\n        year = '[2005,2010)';\\n\\n        break;\\n\\n    case '2004-2000':\\n\\n        year = '[2000,2005)';\\n\\n        break;\\n\\n    case '90年代':\\n\\n        year = '[1990,2000)';\\n\\n        break;\\n\\n    case '80年代':\\n\\n        year = '[1980,1990)';\\n\\n        break;\\n\\n    case '更早':\\n\\n        year = '[,1980)';\\n\\n        break;\\n\\n    default:\\n\\n        year = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('年份', '全部')) {\\n\\n    case '2022':\\n\\n        release_date = '[2022-01-01 00:00:00,2023-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2021':\\n\\n        release_date = '[2021-01-01 00:00:00,2022-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2020':\\n\\n        release_date = '[2020-01-01 00:00:00,2021-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2019':\\n\\n        release_date = '[2019-01-01 00:00:00,2020-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2018':\\n\\n        release_date = '[2018-01-01 00:00:00,2019-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2017':\\n\\n        release_date = '[2017-01-01 00:00:00,2018-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2016':\\n\\n        release_date = '[2016-01-01 00:00:00,2017-01-01 00:00:00)';\\n\\n        break;\\n\\n    case '2015-2010':\\n\\n        release_date = '[2010-01-01 00:00:00,2016-01-01 00:00:00)'\\n\\n        break;\\n\\n    case '2009-2005':\\n\\n        release_date = '[2005-01-01 00:00:00,2010-01-01 00:00:00)'\\n\\n        break;\\n\\n    case '2004-2000':\\n\\n        release_date = '[2000-01-01 00:00:00,2005-01-01 00:00:00)'\\n\\n        break;\\n\\n    case '90年代':\\n\\n        release_date = '[1990-01-01 00:00:00,2000-01-01 00:00:00)'\\n\\n        break;\\n\\n    case '80年代':\\n\\n        release_date = '[1980-01-01 00:00:00,1990-01-01 00:00:00)'\\n\\n        break;\\n\\n    case '更早':\\n\\n        release_date = '[,1980-01-01 00:00:00)';\\n\\n        break;\\n\\n    default:\\n\\n        release_date = -1;\\n\\n        break;\\n\\n}\\n\\nswitch (getMyVar('风格', '全部')) {\\n\\n    case '电影':\\n\\n        style_id = -10;\\n\\n        break;\\n\\n        // 番剧栏目\\n\\n    case '原创':\\n\\n        style_id = 10010;\\n\\n        break;\\n\\n    case '漫画改':\\n\\n        style_id = 10011;\\n\\n        break;\\n\\n    case '小说改':\\n\\n        style_id = 10012;\\n\\n        break;\\n\\n    case '游戏改':\\n\\n        style_id = 10013;\\n\\n        break;\\n\\n    case '特摄':\\n\\n        style_id = 10014;\\n\\n        break;\\n\\n    case '布袋戏':\\n\\n        style_id = 10015;\\n\\n        break;\\n\\n    case '热血':\\n\\n        style_id = 10016;\\n\\n        break;\\n\\n    case '穿越':\\n\\n        style_id = 10017;\\n\\n        break;\\n\\n    case '奇幻':\\n\\n        style_id = 10018;\\n\\n        break;\\n\\n        // 咋跳了一个捏~\\n\\n    case '战斗':\\n\\n        style_id = 10020;\\n\\n        break;\\n\\n    case '搞笑':\\n\\n        style_id = 10021;\\n\\n        break;\\n\\n    case '日常':\\n\\n        style_id = 10022;\\n\\n        break;\\n\\n    case '科幻':\\n\\n        style_id = 10023;\\n\\n        break;\\n\\n    case '萌系':\\n\\n        style_id = 10024;\\n\\n        break;\\n\\n    case '治愈':\\n\\n        style_id = 10025;\\n\\n        break;\\n\\n    case '校园':\\n\\n        style_id = 10026;\\n\\n        break;\\n\\n    case '少儿':\\n\\n        style_id = 10027;\\n\\n        break;\\n\\n    case '泡面':\\n\\n        style_id = 10028;\\n\\n        break;\\n\\n    case '恋爱':\\n\\n        style_id = 10029;\\n\\n        break;\\n\\n    case '少女':\\n\\n        style_id = 10030;\\n\\n        break;\\n\\n    case '魔法':\\n\\n        style_id = 10031;\\n\\n        break;\\n\\n    case '冒险':\\n\\n        style_id = 10032;\\n\\n        break;\\n\\n    case '历史':\\n\\n        style_id = 10033;\\n\\n        break;\\n\\n    case '架空':\\n\\n        style_id = 10034;\\n\\n        break;\\n\\n    case '机战':\\n\\n        style_id = 10035;\\n\\n        break;\\n\\n    case '神魔':\\n\\n        style_id = 10036;\\n\\n        break;\\n\\n    case '声控':\\n\\n        style_id = 10037;\\n\\n        break;\\n\\n    case '运动':\\n\\n        style_id = 10038;\\n\\n        break;\\n\\n    case '励志':\\n\\n        style_id = 10039;\\n\\n        break;\\n\\n    case '音乐':\\n\\n        style_id = 10040;\\n\\n        break;\\n\\n    case '推理':\\n\\n        style_id = 10041;\\n\\n        break;\\n\\n    case '社团':\\n\\n        style_id = 10042;\\n\\n        break;\\n\\n    case '智斗':\\n\\n        style_id = 10043;\\n\\n        break;\\n\\n    case '催泪':\\n\\n        style_id = 10044;\\n\\n        break;\\n\\n    case '美食':\\n\\n        style_id = 10045;\\n\\n        break;\\n\\n    case '偶像':\\n\\n        style_id = 10046;\\n\\n        break;\\n\\n    case '乙女':\\n\\n        style_id = 10047;\\n\\n        break;\\n\\n    case '职场':\\n\\n        style_id = 10048;\\n\\n        break;\\n\\n\\n        // 综艺栏目、电影\\n\\n    case '剧情':\\n\\n        style_id = 10050;\\n\\n        break;\\n\\n    case '喜剧':\\n\\n        style_id = 10051;\\n\\n        break;\\n\\n    case '爱情':\\n\\n        style_id = 10052;\\n\\n        break;\\n\\n    case '动作':\\n\\n        style_id = 10053;\\n\\n        break;\\n\\n    case '恐怖':\\n\\n        style_id = 10054;\\n\\n        break;\\n\\n    case '犯罪':\\n\\n        style_id = 10055;\\n\\n        break;\\n\\n    case '惊悚':\\n\\n        style_id = 10056;\\n\\n        break;\\n\\n    case '悬疑':\\n\\n        style_id = 10057;\\n\\n        break;\\n\\n    case '战争':\\n\\n        style_id = 10058;\\n\\n        break;\\n\\n    case '动画':\\n\\n        style_id = 10059;\\n\\n        break;\\n\\n    case '传记':\\n\\n        style_id = 10060;\\n\\n        break;\\n\\n    case '家庭':\\n\\n        style_id = 10061;\\n\\n        break;\\n\\n    case '歌舞':\\n\\n        style_id = 10062;\\n\\n        break;\\n\\n    case '纪实':\\n\\n        style_id = 10063;\\n\\n        break;\\n\\n    case '灾难':\\n\\n        style_id = 10064;\\n\\n        break;\\n\\n    case '人文':\\n\\n        style_id = 10065;\\n\\n        break;\\n\\n    case '科技':\\n\\n        style_id = 10066;\\n\\n        break;\\n\\n    case '宇宙':\\n\\n        style_id = 10068;\\n\\n        break;\\n\\n    case '萌宠':\\n\\n        style_id = 10069;\\n\\n        break;\\n\\n    case '社会':\\n\\n        style_id = 10070;\\n\\n        break;\\n\\n    case '动物':\\n\\n        style_id = 10071;\\n\\n        break;\\n\\n    case '自然':\\n\\n        style_id = 10072;\\n\\n        break;\\n\\n    case '医疗':\\n\\n        style_id = 10073;\\n\\n        break;\\n\\n    case '军事':\\n\\n        style_id = 10074;\\n\\n        break;\\n\\n    case '罪案':\\n\\n        style_id = 10075;\\n\\n        break;\\n\\n    case '神秘':\\n\\n        style_id = 10076;\\n\\n        break;\\n\\n    case '旅行':\\n\\n        style_id = 10077;\\n\\n        break;\\n\\n    case '武侠':\\n\\n        style_id = 10078;\\n\\n        break;\\n\\n    case '青春':\\n\\n        style_id = 10079;\\n\\n        break;\\n\\n    case '都市':\\n\\n        style_id = 10080;\\n\\n        break;\\n\\n    case '古装':\\n\\n        style_id = 10081;\\n\\n        break;\\n\\n    case '谍战':\\n\\n        style_id = 10082;\\n\\n        break;\\n\\n    case '经典':\\n\\n        style_id = 10083;\\n\\n        break;\\n\\n    case '情感':\\n\\n        style_id = 10084;\\n\\n        break;\\n\\n    case '神话':\\n\\n        style_id = 10085;\\n\\n        break;\\n\\n    case '年代':\\n\\n        style_id = 10086;\\n\\n        break;\\n\\n    case '农村':\\n\\n        style_id = 10087;\\n\\n        break;\\n\\n    case '刑侦':\\n\\n        style_id = 10088;\\n\\n        break;\\n\\n    case '军旅':\\n\\n        style_id = 10089;\\n\\n        break;\\n\\n    case '访谈':\\n\\n        style_id = 10090;\\n\\n        break;\\n\\n    case '脱口秀':\\n\\n        style_id = 10091;\\n\\n        break;\\n\\n    case '真人秀':\\n\\n        style_id = 10092;\\n\\n        break;\\n\\n    case '选秀':\\n\\n        style_id = 10094;\\n\\n        break;\\n\\n    case '旅游':\\n\\n        style_id = 10095;\\n\\n        break;\\n\\n    case '晚会':\\n\\n        style_id = 10098;\\n\\n        break;\\n\\n    case '演唱会':\\n\\n        style_id = 10096;\\n\\n        break;\\n\\n    case '亲子':\\n\\n        style_id = 10097;\\n\\n        break;\\n\\n    case '养成':\\n\\n        style_id = 10099;\\n\\n        break;\\n\\n    case '文化':\\n\\n        style_id = 10100;\\n\\n        break;\\n\\n        // 电影栏目\\n\\n    case '短片':\\n\\n        style_id = 10104;\\n\\n        break;\\n\\n    default:\\n\\n        style_id = -1;\\n\\n        break;\\n\\n}\\n\\n// 映射真实请求地址\\n\\nswitch (seasonType) {\\n\\n    case 4:\\n\\n        // 国创\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?season_version=' + season_version + '&is_finish=' + is_finish + '&copyright=&s' + copyright + 'eason_status=' + season_status + '&year=' + year + '&style_id=' + style_id + '&order=3&st=4&sort=0&page=' + page + '&season_type=4&pagesize=20&type=1'\\n\\n        break;\\n\\n    case 5:\\n\\n        // 电视剧\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?area=' + area + '&style_id=' + style_id + '&release_date=' + release_date + '&season_status=' + season_status + '&order=2&st=5&sort=0&page=' + page + '&season_type=5&pagesize=20&type=1'\\n\\n        break;\\n\\n    case 7:\\n\\n        // 综艺\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?season_status=' + season_status + '&style_id=' + style_id + '&order=2&st=7&sort=0&page=' + page + '&season_type=7&pagesize=20&type=1';\\n\\n        break;\\n\\n    case 1:\\n\\n        // 番剧\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?season_version=' + season_version + '&spoken_language_type=' + spoken_language_type + '&area=' + area + '&is_finish=' + is_finish + '&copyright=' + copyright + '&season_status=' + season_status + '&season_month=' + season_month + '&year=' + year + '&style_id=' + style_id + '&order=3&st=1&sort=0&page=' + page + '&season_type=1&pagesize=20&type=1';\\n\\n        break;\\n\\n    case 3:\\n\\n        // 纪录片\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?style_id=' + style_id + '&producer_id=' + producer_id + '&release_date=' + release_date + '&season_status=' + season_status + '&order=2&st=3&sort=0&page=' + page + '&season_type=3&pagesize=20&type=1'\\n\\n        break;\\n\\n    case 2:\\n\\n        // 电影\\n\\n        true_url = 'https://api.bilibili.com/pgc/season/index/result?area=' + area + '&style_id=' + style_id + '&release_date=' + release_date + '&season_status=' + season_status + '&order=2&st=2&sort=0&page=' + page + '&season_type=2&pagesize=20&type=1'\\n\\n        break;\\n\\n}\\n\\ntrue_url = encodeURI(true_url);\\n\\nlist = JSON.parse(fetch(true_url)).data.list;\\n\\ntry {\\n\\n    list.forEach(movie => {\\n\\n        d.push({\\n\\n            title: movie.title,\\n\\n            url: \\\"hiker://page/filmerji#immersiveTheme#\\\",\\n\\n            img: movie.cover + \\\"@Referer=\\\",\\n\\n            desc: movie.order,\\n\\n            col_type: 'movie_3',\\n\\n            extra: {\\n\\n                season_id: movie.season_id\\n\\n            }\\n\\n        });\\n\\n    });\\n\\n} catch (e) {\\n\\n    log('已经抵达页底' + MY_PAGE);\\n\\n}\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"热映时间表\",\"path\":\"UpdateTables\",\"rule\":\"function color(text, color) {\\n\\n    text += \\\"\\\";\\n\\n    if (text.indexOf(\\\"““””\\\") === 0) {\\n\\n        text.replace(\\\"““””\\\", \\\"\\\");\\n\\n    }\\n\\n    return \\\"““””<font color='\\\" + color + \\\"'>\\\" + text + \\\"</font>\\\";\\n\\n}\\n\\nvar tabs = {\\n\\n    \\\"番剧\\\": 1,\\n\\n    \\\"纪录片\\\": 3,\\n\\n    \\\"国创\\\": 4\\n\\n}\\n\\nif (MY_PAGE == 1) {\\n\\n    Object.keys(tabs).forEach(item => {\\n\\n        d.push({\\n\\n            title: (getMyVar(\\\"juji\\\", \\\"国创\\\") == item ? color(item, \\\"red\\\") : item),\\n\\n            url: $().lazyRule((a) => {\\n\\n                putMyVar(\\\"juji\\\", a)\\n\\n                refreshPage()\\n\\n                return \\\"toast://切换成功\\\"\\n\\n            }, item),\\n\\n            col_type: \\\"scroll_button\\\"\\n\\n        })\\n\\n    })\\n\\n    d.push({\\n\\n        col_type: \\\"line\\\"\\n\\n    })\\n\\n    let days = 7\\n\\n    for (let i = 1; i < days; i++) {\\n\\n        d.push({\\n\\n            title: (getMyVar(\\\"from\\\", \\\"1\\\") == i + \\\"\\\" ? color(i + \\\"天前\\\", \\\"red\\\") : i + \\\"天前\\\"),\\n\\n            url: $().lazyRule((i) => {\\n\\n                putMyVar(\\\"from\\\", i + \\\"\\\")\\n\\n                refreshPage()\\n\\n                return \\\"hiker://empty\\\"\\n\\n            }, i),\\n\\n            col_type: \\\"scroll_button\\\"\\n\\n        })\\n\\n    }\\n\\n    d.push({\\n\\n        col_type: \\\"line\\\"\\n\\n    })\\n\\n    for (let i = 1; i < days; i++) {\\n\\n        d.push({\\n\\n            title: (getMyVar(\\\"to\\\", \\\"1\\\") == i + \\\"\\\" ? color(i + \\\"天后\\\", \\\"red\\\") : i + \\\"天后\\\"),\\n\\n            url: $().lazyRule((i) => {\\n\\n                putMyVar(\\\"to\\\", i + \\\"\\\")\\n\\n                refreshPage()\\n\\n                return \\\"hiker://empty\\\"\\n\\n            }, i),\\n\\n            col_type: \\\"scroll_button\\\"\\n\\n        })\\n\\n    }\\n\\n\\n    $.require(\\\"hiker://page/api\\\").getMovies(tabs[getMyVar(\\\"juji\\\", \\\"国创\\\")], getMyVar(\\\"from\\\", \\\"1\\\"), getMyVar(\\\"to\\\", \\\"1\\\")).forEach(item => {\\n\\n        d.push({\\n\\n            title: item.date + \\\" 周\\\" + item.day_of_week,\\n\\n            col_type: \\\"text_1\\\",\\n\\n            url: \\\"hiker://empty\\\"\\n\\n        })\\n\\n        item.episodes.forEach(i => {\\n\\n            d.push({\\n\\n                title: i.title,\\n\\n                img: i.cover+'@Referer=',\\n\\n                desc:i.pub_index.match(/即将/)?'‘‘’’<font color=\\\"red\\\">'+i.pub_index+'\\\\n'+i.pub_time+'</font>': i.pub_index+ '\\\\n' + i.pub_time,\\n\\n                url: \\\"hiker://page/filmerji#immersiveTheme#\\\",\\n\\n                extra: {\\n\\n                    \\\"season_id\\\": i.season_id\\n\\n                }\\n\\n            })\\n\\n        })\\n\\n    })\\n\\n}\\n\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"登录\",\"path\":\"login\",\"rule\":\"js:\\r\\nvar d = [];\\r\\nd.push({\\r\\n    title: '登陆说明',\\r\\n    desc:\\\"页面下方登陆成功后，再点击确认登录即可\\\",\\r\\n    url: \\\"hiker://empty\\\",\\r\\n    col_type: 'text_center_1'\\r\\n},{\\r\\n    title: '登陆成功后，再点我！',\\r\\n    url: $('#noLoading#').lazyRule(() => {\\r\\n        back(true);\\r\\n        return 'toast://如果没有登陆成功，建议你下次登陆成功后不要点那么快~'\\r\\n    }),\\r\\n    col_type: 'text_1'\\r\\n}, {\\r\\n    url: \\\"https://m.bilibili.com/\\\",\\r\\n    col_type: \\\"x5_webview_single\\\",\\r\\n    desc: \\\"list&&screen-300\\\",\\r\\n    extra: {\\r\\n        js: $.toString(() => {\\r\\n            var token_timer = function () {\\r\\n                var timer = setInterval(() => {\\r\\n                    settings = JSON.stringify({\\r\\n                        cookie: fba.getCookie(\\\"https://m.bilibili.com/\\\"),\\r\\n                        face: 'https://lanmeiguojiang.com/tubiao/movie/20.svg'\\r\\n                    });\\r\\n                    fba.writeFile(\\\"hiker://files/rules/cy/bili.txt\\\", settings);\\r\\n                }, 100)\\r\\n            };\\r\\n            token_timer();\\r\\n        }),\\r\\n        canBack: true\\r\\n    }\\r\\n})\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"影视二级\",\"path\":\"filmerji\",\"rule\":\"js:\\r\\n// 数据定位\\r\\nvar d = [];\\r\\nif (MY_PARAMS.season_id) {\\r\\n    season_id = MY_PARAMS.season_id + \\\"\\\";\\r\\n    Data = JSON.parse(fetch('https://api.bilibili.com/pgc/view/web/season?season_id=' + season_id)).result;\\r\\n} else {\\r\\n    Data = JSON.parse(fetch('https://api.bilibili.com/pgc/view/web/season?ep_id=' + MY_PARAMS.ep_id)).result;\\r\\n}\\r\\n封面 = Data.cover.replace('http','https') + \\\"@Referer=\\\";\\r\\ntry {\\r\\n    地区 = Data.areas[0].name;\\r\\n} catch (e) {\\r\\n    地区='地区暂无';\\r\\n}\\r\\n简介 = Data.evaluate;\\r\\n// 正片\\r\\n类型 = Data.positive.title;\\r\\n上映时间 = Data.publish.pub_time;\\r\\ntry {\\r\\n    得分 = Data.rating.score;\\r\\n} catch (e) {\\r\\n    得分 = '暂无得';\\r\\n}\\r\\n追剧日历 = Data.new_ep.desc;\\r\\n更新进度 = Data.new_ep.title;\\r\\n影片名称 = Data.title;\\r\\n第二标题 = Data.share_sub_title;\\r\\n剧集列表 = Data.episodes;\\r\\n短讯 = \\\"⭐\\\" + 类型 + \\\"⭐\\\" + 第二标题 + '\\\\n' + 地区 + '-' + 得分 + '分\\\\n-' + 上映时间 + '-';\\r\\n// 重定义二级页面数据\\r\\nsetPageTitle(影片名称);\\r\\nsetPagePicUrl(封面);\\r\\n// 前置参数和预处理---\\r\\nimgLink = storage0.getMyVar('图标');\\r\\n// 全局lazy——直链+断插\\r\\nvar lazy = $('').lazyRule(() => {\\r\\n    videoParms = findItem(input);\\r\\n    aid = videoParms.extra.aid;\\r\\n    bvid = videoParms.extra.bvid;\\r\\n    cid = videoParms.extra.cid;\\r\\n    badge = videoParms.extra.badge;\\r\\n    // 提交历史记录\\r\\n    $.require(\\\"hiker://page/api\\\").reportProcess(aid, cid);\\r\\n    vipStatus=JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).vipStatus;\\r\\n    if (vipStatus==1) {\\r\\n        // 大会员\\r\\n        if (badge.match(/付费/)) {\\r\\n            return $(['魔断解析','已购买'], 1).select((input,aid,cid) => {\\r\\n                if (input=='魔断解析') {\\r\\n                    eval(fetch('hiker://files/cache/Parse_Dn.js', {}));\\r\\n                    return aytmParse(link);\\r\\n                }else{\\r\\n                    return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, 116).replace(/;/g, \\\"；；\\\");\\r\\n                }\\r\\n            },link,aid,cid)\\r\\n        } else {\\r\\n            return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, 116).replace(/;/g, \\\"；；\\\");\\r\\n        }\\r\\n    } else {\\r\\n        // 普通用户\\r\\n        if (getMyVar('bf_cookie','未定义')=='未定义') {\\r\\n            if (badge.match(/会员|付费/)) {\\r\\n                eval(fetch('hiker://files/cache/Parse_Dn.js', {}));\\r\\n                return aytmParse(input);\\r\\n            } else {\\r\\n                return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, 116).replace(/;/g, \\\"；；\\\");\\r\\n            }  \\r\\n        }else{\\r\\n            // 共享会员权限\\r\\n            if (badge.match(/付费/)) {\\r\\n                return $(['魔断解析','已购买'], 1).select((input,aid,cid) => {\\r\\n                    if (input=='魔断解析') {\\r\\n                        eval(fetch('hiker://files/cache/Parse_Dn.js', {}));\\r\\n                        return aytmParse(link);\\r\\n                    }else{\\r\\n                        return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, 116).replace(/;/g, \\\"；；\\\");\\r\\n                    }\\r\\n                },link,aid,cid)\\r\\n            } else {\\r\\n                return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, 116).replace(/;/g, \\\"；；\\\");\\r\\n            }\\r\\n        }\\r\\n    }\\r\\n});\\r\\nvar Color = \\\"#19B89D\\\";\\r\\nvar 每页集数 = 30;\\r\\nvar 搜索模式 = '分组';\\r\\nvar 调用名称 = '简影';\\r\\nputMyVar('折叠', '关');\\r\\nputMyVar('日历', '关');\\r\\nputMyVar('Data', Data);\\r\\nputMyVar('lazy', lazy);\\r\\n// 清除变量\\r\\naddListener('onClose', $.toString(() => {\\r\\n    clearMyVar('分集起');\\r\\n    clearMyVar('分集终');\\r\\n    clearMyVar('折叠');\\r\\n    clearMyVar('日历');\\r\\n    clearMyVar('Data');\\r\\n    clearMyVar('lazy');\\r\\n    clearMyVar('剧集列表');\\r\\n}))\\r\\n// 设置动态最新章节\\r\\nsetLastChapterRule('js:' + $.toString(() => {\\r\\n    if (MY_PARAMS.season_id) {\\r\\n        season_id = MY_PARAMS.season_id + \\\"\\\";\\r\\n        Data = JSON.parse(fetch('https://api.bilibili.com/pgc/view/web/season?season_id=' + season_id)).result;\\r\\n    } else {\\r\\n        Data = JSON.parse(fetch('https://api.bilibili.com/pgc/view/web/season?ep_id=' + MY_PARAMS.ep_id)).result;\\r\\n    }\\r\\n    追剧日历 = Data.new_ep.desc;\\r\\n    更新进度 = Data.new_ep.title;\\r\\n    更新状态 = 追剧日历.match(/完结|期待/) ? 追剧日历 : '更新至' + (更新进度.match(/[\\\\u4e00-\\\\u9fa5]/) ? 更新进度 : ('第' + (更新进度 == '' ? 0 : 更新进度)) + '话')\\r\\n    setResult(更新状态);\\r\\n}));\\r\\n// 页面内容正文---\\r\\n// 基本信息模块\\r\\nd.push({\\r\\n    title: 短讯,\\r\\n    desc: 简介 == '' ? '暂无简介' : 简介.substring(0, 45) + '‘‘’’…<font color=\\\"#1C1C1C\\\">详情</font>',\\r\\n    img: 封面,\\r\\n    url: $().rule((简介) => {\\r\\n        res = {};\\r\\n        var d = [];\\r\\n        d.push({\\r\\n            title: '影片简介：' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + 简介,\\r\\n            col_type: 'long_text'\\r\\n        });\\r\\n        res.data = d;\\r\\n        setHomeResult(res);\\r\\n    }, 简介),\\r\\n    col_type: 'movie_1_vertical_pic_blur',\\r\\n});\\r\\n// 更新日历模块\\r\\nd.push({\\r\\n    title: '日历',\\r\\n    img: imgLink.日历,\\r\\n    url: $('#noLoading#').lazyRule((追剧日历, 更新进度) => {\\r\\n        if (getMyVar('日历', '关') == '开') {\\r\\n            deleteItem('追剧日历');\\r\\n            putMyVar('日历', '关');\\r\\n        } else {\\r\\n            addItemAfter('显示模式', {\\r\\n                title: 追剧日历.match(/完结|期待/) ? 追剧日历 : 追剧日历 + '<br><font color=\\\"red\\\">更新至' + (更新进度.match(/[\\\\u4e00-\\\\u9fa5]/) ? 更新进度 : ('第' + (更新进度 == '' ? 0 : 更新进度) + '话')) + '</font>',\\r\\n                col_type: \\\"rich_text\\\",\\r\\n                extra: {\\r\\n                    id: '追剧日历'\\r\\n                }\\r\\n            });\\r\\n            putMyVar('日历', '开');\\r\\n        }\\r\\n        return 'toast://已切换日历为:' + getMyVar('日历', '开')\\r\\n    }, 追剧日历, 更新进度),\\r\\n    col_type: 'icon_5'\\r\\n});\\r\\n// 订阅模块\\r\\nd.push({\\r\\n    title: '订阅',\\r\\n    img: imgLink.订阅,\\r\\n    url: $('#noLoading#').lazyRule(() => {\\r\\n        selectionList = ['订阅', '取消订阅'];\\r\\n        return $(selectionList, 2).select(() => {\\r\\n            season_id = JSON.parse(getMyVar('Data')).season_id;\\r\\n            if (input == '订阅') {\\r\\n                res = $.require(\\\"hiker://page/api\\\").subscribeFilm(season_id);\\r\\n            } else {\\r\\n                res = $.require(\\\"hiker://page/api\\\").cancelSubscribeFilm(season_id);\\r\\n            }\\r\\n            return 'toast://' + res;\\r\\n        });\\r\\n    }),\\r\\n    col_type: 'icon_5'\\r\\n});\\r\\n// 评论模块\\r\\nd.push({\\r\\n    title: '评论',\\r\\n    img: imgLink.查看评论,\\r\\n    url: $('#noLoading#').lazyRule(() => {\\r\\n        return $('hiker://empty').rule(() => {\\r\\n            var d = [];\\r\\n            List = JSON.parse(getMyVar('Data')).episodes;\\r\\n            List.forEach(item => {\\r\\n                d.push({\\r\\n                    title: item.share_copy + '<font color=\\\"#33cccc\\\">\\t➮</font>',\\r\\n                    img: item.cover + '@Referer=',\\r\\n                    url: 'hiker://page/Comments?p=fypage',\\r\\n                    col_type: \\\"avatar\\\",\\r\\n                    extra: {\\r\\n                        \\\"id\\\": item.aid,\\r\\n                        \\\"type\\\": 1\\r\\n                    }\\r\\n                });\\r\\n            });\\r\\n            setResult(d);\\r\\n        });\\r\\n    }),\\r\\n    col_type: 'icon_5'\\r\\n});\\r\\n\\r\\n// 精彩继续模块\\r\\nd.push({\\r\\n    title: '周边',\\r\\n    img: imgLink.周边,\\r\\n    url: $('#noLoading#').lazyRule(() => {\\r\\n        Data = JSON.parse(getMyVar('Data'));\\r\\n        // 有些没有直接去掉懒得处理~\\r\\n        if (Data.section) {\\r\\n            周边数组 = [\\\"🏷️相关系列\\\", \\\"🤣PV&花絮\\\", \\\"🍉竖屏也精彩\\\", \\\"🔥精彩二创\\\"];\\r\\n        } else {\\r\\n            周边数组 = [\\\"🏷️相关系列\\\"];\\r\\n        }\\r\\n        // 周边数组 = [\\\"🏷️相关系列\\\", \\\"🤣PV&花絮\\\", \\\"竖屏也精彩\\\", \\\"精彩二创\\\"];\\r\\n        return $(周边数组, 1, 'ღ精彩继续').select(() => {\\r\\n            Data = JSON.parse(getMyVar('Data'));\\r\\n            lazy = getMyVar('lazy');\\r\\n            if (input === '🏷️相关系列') {\\r\\n                系列名称 = Data.season_title\\r\\n                系列数据 = Data.seasons;\\r\\n                return $().rule((系列数据) => {\\r\\n                    d = [];\\r\\n                    setPageTitle('🏷️相关系列');\\r\\n                    if (系列数据 == [] || 系列数据 == '') {\\r\\n                        d.push({\\r\\n                            title: '‘‘’’<big><font color=\\\"red\\\">⭐该影片没有相关系列哦~⭐</font></big>',\\r\\n                            url: 'toast://都没有，，你点啥呀~',\\r\\n                            desc: '敬请期待~',\\r\\n                            col_type: 'text_center_1'\\r\\n                        });\\r\\n                    }\\r\\n                    系列数据.forEach(list => {\\r\\n                        d.push({\\r\\n                            title: list.season_title,\\r\\n                            img: (list.horizontal_cover_1610 == '' ? (list.horizontal_cover_169 == '' ? list.cover : list.horizontal_cover_169) : list.horizontal_cover_1610) + \\\"@Referer=\\\",\\r\\n                            url: 'hiker://page/filmerji#immersiveTheme#',\\r\\n                            desc: list.new_ep.index_show,\\r\\n                            col_type: 'movie_1_left_pic',\\r\\n                            extra: {\\r\\n                                \\\"ep_id\\\": list.new_ep.id\\r\\n                            }\\r\\n                        });\\r\\n                    });\\r\\n                    setHomeResult(d);\\r\\n                }, 系列数据)\\r\\n            } else if (input === '🤣PV&花絮') {\\r\\n                try {\\r\\n                    PV和花絮数据 = Data.section[0].episodes;\\r\\n                    return $().rule((PV和花絮数据, lazy) => {\\r\\n                        d = [];\\r\\n                        setPageTitle('🤣PV&花絮');\\r\\n                        if (PV和花絮数据 == [] || PV和花絮数据 == '') {\\r\\n                            d.push({\\r\\n                                title: '‘‘’’<big><font color=\\\"red\\\">⭐该影片/视频没有相关PV和花絮哦~⭐</font></big>',\\r\\n                                url: 'toast://都没有，，你点啥呀~',\\r\\n                                desc: '敬请期待~',\\r\\n                                col_type: 'text_center_1'\\r\\n                            });\\r\\n                        }\\r\\n                        PV和花絮数据.forEach(list => {\\r\\n                            d.push({\\r\\n                                title: list.title,\\r\\n                                img: list.cover + \\\"@Referer=\\\",\\r\\n                                url: list.link + lazy,\\r\\n                                desc: list.subtitle + '\\\\n' + list.long_title,\\r\\n                                col_type: 'movie_1_left_pic',\\r\\n                                extra: {\\r\\n                                    id: list.link,\\r\\n                                    aid: list.aid,\\r\\n                                    bvid: list.bvid,\\r\\n                                    cid: list.cid,\\r\\n                                    badge: list.badge\\r\\n                                }\\r\\n                            });\\r\\n                        });\\r\\n                        setHomeResult(d);\\r\\n                    }, PV和花絮数据, lazy)\\r\\n                } catch (e) {\\r\\n                    return 'toast://没有数据哦~'\\r\\n                }\\r\\n            } else if (input === '🍉竖屏也精彩') {\\r\\n                try {\\r\\n                    竖屏也精彩数据 = Data.section[1].episodes;\\r\\n                    return $().rule((竖屏也精彩数据, lazy) => {\\r\\n                        d = [];\\r\\n                        setPageTitle('🍉竖屏也精彩');\\r\\n                        if (竖屏也精彩数据 == [] || 竖屏也精彩数据 == '') {\\r\\n                            d.push({\\r\\n                                title: '‘‘’’<big><font color=\\\"red\\\">⭐该影片/视频没有相关竖屏短视频哦~⭐</font></big>',\\r\\n                                url: 'toast://都没有，，你点啥呀~',\\r\\n                                desc: '敬请期待~',\\r\\n                                col_type: 'text_center_1'\\r\\n                            });\\r\\n                        }\\r\\n                        竖屏也精彩数据.forEach(list => {\\r\\n                            d.push({\\r\\n                                title: list.title,\\r\\n                                img: list.cover + \\\"@Referer=\\\",\\r\\n                                url: list.link + lazy,\\r\\n                                desc: list.subtitle + '\\\\n' + list.long_title,\\r\\n                                col_type: 'movie_1_left_pic',\\r\\n                                extra: {\\r\\n                                    id: list.link,\\r\\n                                    aid: list.aid,\\r\\n                                    bvid: list.bvid,\\r\\n                                    cid: list.cid,\\r\\n                                    badge: list.badge\\r\\n                                }\\r\\n                            });\\r\\n                        });\\r\\n                        setHomeResult(d);\\r\\n                    }, 竖屏也精彩数据, lazy)\\r\\n                } catch (e) {\\r\\n                    return 'toast://没有数据哦~'\\r\\n                }\\r\\n            } else if (input === '🔥精彩二创') {\\r\\n                try {\\r\\n                    精彩二创数据 = Data.section[2].episodes;\\r\\n                    return $().rule((精彩二创数据, lazy) => {\\r\\n                        d = [];\\r\\n                        setPageTitle('🔥精彩二创');\\r\\n                        if (精彩二创数据 == [] || 精彩二创数据 == '') {\\r\\n                            d.push({\\r\\n                                title: '‘‘’’<big><font color=\\\"red\\\">⭐该影片/视频没有二创作品哦~⭐</font></big>',\\r\\n                                url: 'toast://都没有，，你点啥呀~',\\r\\n                                desc: '敬请期待~',\\r\\n                                col_type: 'text_center_1'\\r\\n                            });\\r\\n                        }\\r\\n                        精彩二创数据.forEach(list => {\\r\\n                            // 针对部分参数缺失的情况如凡人修仙传写的，，\\r\\n                            if (list.aid == 0 || list.cid == 0) {\\r\\n                                viedeoData = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + list.link.split('av')[1], {\\r\\n                                    headers: {\\r\\n                                        \\\"User-Agent\\\": PC_UA,\\r\\n                                        \\\"Referer\\\": 'https://www.bilibili.com/'\\r\\n                                    },\\r\\n                                    method: \\\"GET\\\"\\r\\n                                })).data;\\r\\n                                aid = viedeoData.aid;\\r\\n                                bvid = viedeoData.bvid;\\r\\n                                cid = viedeoData.cid;\\r\\n                            } else {\\r\\n                                aid = list.aid;\\r\\n                                bvid = list.bvid;\\r\\n                                cid = list.cid;\\r\\n                            }\\r\\n                            d.push({\\r\\n                                title: list.title,\\r\\n                                img: list.cover + \\\"@Referer=\\\",\\r\\n                                url: list.link + lazy,\\r\\n                                desc: list.subtitle + '\\\\n' + list.long_title,\\r\\n                                col_type: 'movie_1_left_pic',\\r\\n                                extra: {\\r\\n                                    id: list.link,\\r\\n                                    aid: aid,\\r\\n                                    bvid: bvid,\\r\\n                                    cid: cid,\\r\\n                                    badge: list.badge\\r\\n                                }\\r\\n                            });\\r\\n                        });\\r\\n                        setHomeResult(d);\\r\\n                    }, 精彩二创数据, lazy)\\r\\n                } catch (e) {\\r\\n                    return 'toast://没有数据哦~'\\r\\n                }\\r\\n            }\\r\\n            return \\\"toast://正在进入\\\" + input + \\\"界面...\\\";\\r\\n        })\\r\\n    }),\\r\\n    col_type: \\\"icon_5\\\",\\r\\n    extra: {\\r\\n        id: '精彩继续'\\r\\n    }\\r\\n});\\r\\n// 显示模式更改模块\\r\\nd.push({\\r\\n    title: getItem('模式', '双边'),\\r\\n    img: getItem('模式', '双边') == '列表' ? imgLink.列表 : imgLink.双边,\\r\\n    url: $('#noLoading#').lazyRule(() => {\\r\\n        显示的剧集列表 = JSON.parse(getMyVar('显示的剧集列表'));\\r\\n        if (getItem('模式', '双边') == '列表') {\\r\\n            显示的剧集列表.forEach(el => {\\r\\n                updateItem(el.link, {\\r\\n                    col_type: 'movie_2',\\r\\n                });\\r\\n            });\\r\\n            setItem('模式', '双边')\\r\\n        } else {\\r\\n            显示的剧集列表.forEach(el => {\\r\\n                updateItem(el.link, {\\r\\n                    col_type: 'movie_1_left_pic',\\r\\n                });\\r\\n            });\\r\\n            setItem('模式', '列表')\\r\\n        }\\r\\n        imgLink = storage0.getMyVar('图标');\\r\\n        updateItem('显示模式', {\\r\\n            title: getItem('模式', '双边'),\\r\\n            img: getItem('模式', '双边') == '列表' ? imgLink.列表 : imgLink.双边,\\r\\n        });\\r\\n        return 'toast://已切换模式为:' + getItem('模式', '双边')\\r\\n    }),\\r\\n    col_type: 'icon_5',\\r\\n    extra: {\\r\\n        id: '显示模式'\\r\\n    }\\r\\n}, {\\r\\n    col_type: 'line_blank',\\r\\n});\\r\\n// 选插模块——局部刷新版\\r\\n来源 = 'bl';\\r\\nputMyVar('简插', $.toString(() => {\\r\\n    let titleArr = []\\r\\n    setFile = readFile('hiker://files/rules/DuanNian/MyParse.json');\\r\\n    try {\\r\\n        eval('json=' + setFile);\\r\\n    } catch (e) {\\r\\n        log('Json解析发生了错误:' + e.message);\\r\\n    }\\r\\n    titleArr = json.title;\\r\\n    let barry1 = ['✍️辅助'];\\r\\n    let barry2 = ['📦️魔断'];\\r\\n    let barry3 = ['🔍搜索'];\\r\\n    titleArr = barry3.concat(titleArr);\\r\\n    titleArr = barry2.concat(titleArr);\\r\\n    titleArr = barry1.concat(titleArr);\\r\\n    eval('op=json.settings.' + 来源);\\r\\n    titleArr = titleArr.map((it) => {\\r\\n        return it === op ? '👉' + it : it;\\r\\n    });\\r\\n    putMyVar('解析数组', titleArr);\\r\\n    putMyVar('setFile', setFile);\\r\\n}))\\r\\neval(getMyVar('简插'));\\r\\nd.push({\\r\\n    title: '解析：🔘<font color=\\\"' + Color + '\\\">' + op + '</font>\\\\t\\\\t页码：<font color=\\\"' + Color + '\\\">' + ((getMyVar('分集起', '首页') == '首页') ? '首页' : (getMyVar('分集起') + '-' + getMyVar('分集终'))) + '</font>',\\r\\n    url: $('#noLoading#').lazyRule((json, 来源, Color, op, 影片名称, 搜索模式, 调用名称) => {\\r\\n        eval(getMyVar('简插'));\\r\\n        return $(eval(getMyVar('解析数组')), 3).select((json, 来源, Color, op, 影片名称, 搜索模式, 调用名称) => {\\r\\n            setFile = getMyVar('setFile');\\r\\n            input = input.replace(/👉/g, '');\\r\\n            if (input === '✍️辅助') {\\r\\n                return $().rule(() => {\\r\\n                    eval(JSON.parse(request('hiker://page/home?rule=配置助手')).rule);\\r\\n                })\\r\\n            }else if (input === '📦️魔断') {\\r\\n                return \\\"hiker://page/Route?rule=MyFieldᴰⁿ&type=编辑#noHistory#\\\";\\r\\n            } else if (input === '🔍搜索') {\\r\\n                if (搜索模式 == '分组') {\\r\\n                    return \\\"hiker://search?s=\\\" + 影片名称 + \\\"&group=\\\" + 调用名称;\\r\\n                } else {\\r\\n                    return \\\"hiker://search?s=\\\" + 影片名称 + \\\"&rule=\\\" + 调用名称;\\r\\n                }\\r\\n            }\\r\\n            // 原先的配置\\r\\n            originSettings = JSON.stringify(json.settings);\\r\\n            // 修改配置\\r\\n            eval('json.settings.' + 来源 + '=input;');\\r\\n            setFile = setFile.replace(originSettings, JSON.stringify(json.settings));\\r\\n            saveFile('hiker://files/rules/DuanNian/MyParse.json', setFile);\\r\\n            // 刷新元素\\r\\n            eval(getMyVar('简插'));\\r\\n            updateItem('op', {\\r\\n                title: '解析：🔘<font color=\\\"' + Color + '\\\">' + op + '</font>\\\\t\\\\t页码：<font color=\\\"' + Color + '\\\">' + ((getMyVar('分集起', '首页') == '首页') ? '首页' : (getMyVar('分集起') + '-' + getMyVar('分集终'))) + '</font>',\\r\\n            });\\r\\n            return \\\"toast://切换解析口为:\\\" + input;\\r\\n        }, json, 来源, Color, op, 影片名称, 搜索模式, 调用名称)\\r\\n    }, json, 来源, Color, op, 影片名称, 搜索模式, 调用名称),\\r\\n    img: 'https://lanmeiguojiang.com/tubiao/movie/20.svg',\\r\\n    col_type: \\\"avatar\\\",\\r\\n    extra: {\\r\\n        id: 'op'\\r\\n    }\\r\\n});\\r\\n// 滚动剧集条栏\\r\\n剧集长度 = 剧集列表.length;\\r\\nif (剧集长度 > 每页集数) {\\r\\n    putMyVar('刷新选集', $.toString(() => {\\r\\n        putMyVar('分集起', start);\\r\\n        putMyVar('分集终', end);\\r\\n        eval(getMyVar('简插'));\\r\\n        updateItem('op', {\\r\\n            title: '解析：🔘<font color=\\\"' + Color + '\\\">' + op + '</font>\\\\t\\\\t页码：<font color=\\\"' + Color + '\\\">' + ((getMyVar('分集起', '首页') == '首页') ? '首页' : (getMyVar('分集起') + '-' + getMyVar('分集终'))) + '</font>',\\r\\n        })\\r\\n        // 删除\\r\\n        显示的剧集列表 = JSON.parse(getMyVar('显示的剧集列表'));\\r\\n        显示的剧集列表.forEach(el => {\\r\\n            deleteItem(el.link);\\r\\n        });\\r\\n        // 添加\\r\\n        lazy = getMyVar('lazy');\\r\\n        剧集列表 = JSON.parse(getMyVar('剧集列表'));\\r\\n        显示的剧集列表 = 剧集列表.slice(start - 1, end);\\r\\n        newArray = [];\\r\\n        index = 1;\\r\\n        显示的剧集列表.forEach(list => {\\r\\n            if (getItem('模式', '双边') == '列表') {\\r\\n                newArray.push({\\r\\n                    title: list.long_title,\\r\\n                    img: list.cover + \\\"@Referer=\\\",\\r\\n                    url: list.link + lazy,\\r\\n                    desc: list.title.match(/[0-9]/) ? (list.badge + '第' + list.title + '话') : list.title,\\r\\n                    col_type: 'movie_1_left_pic',\\r\\n                    extra: {\\r\\n                        id: list.link,\\r\\n                        aid: list.aid,\\r\\n                        bvid: list.bvid,\\r\\n                        cid: list.cid,\\r\\n                        badge: list.badge\\r\\n                    }\\r\\n                });\\r\\n            } else {\\r\\n                newArray.push({\\r\\n                    title: list.long_title,\\r\\n                    img: list.cover + \\\"@Referer=\\\",\\r\\n                    url: list.link + lazy,\\r\\n                    desc: list.title.match(/[0-9]/) ? (list.badge + '第' + list.title + '话') : list.title,\\r\\n                    col_type: 'movie_2',\\r\\n                    extra: {\\r\\n                        id: list.link,\\r\\n                        aid: list.aid,\\r\\n                        bvid: list.bvid,\\r\\n                        cid: list.cid,\\r\\n                        badge: list.badge\\r\\n                    }\\r\\n                });\\r\\n            }\\r\\n            index += 1;\\r\\n        });\\r\\n        addItemAfter(getMyVar('末页'), newArray);\\r\\n        putMyVar('显示的剧集列表', 显示的剧集列表);\\r\\n    }));\\r\\n    d.push({\\r\\n        col_type: 'scroll_button',\\r\\n        url: 'hiker://empty',\\r\\n        title: '∷',\\r\\n        extra: {\\r\\n            id: '占位符',\\r\\n        }\\r\\n    })\\r\\n    putMyVar('分集起', 1);\\r\\n    putMyVar('分集终', 每页集数);\\r\\n    putMyVar('剧集列表', 剧集列表);\\r\\n    总页数 = Math.ceil(剧集长度 / 每页集数);\\r\\n    start = 1;\\r\\n    end = 每页集数;\\r\\n    for (let page = 1; page <= 总页数; page++) {\\r\\n        if (end > 剧集长度) {\\r\\n            end = 剧集长度;\\r\\n        }\\r\\n        d.push({\\r\\n            title: start + '-' + end,\\r\\n            url: $('#noLoading##noHistory#').lazyRule((start, end, Color, 来源) => {\\r\\n                eval(getMyVar('刷新选集'));\\r\\n                return \\\"hiker://empty\\\";\\r\\n            }, start, end, Color, 来源),\\r\\n            col_type: 'scroll_button',\\r\\n            extra: {\\r\\n                id: start + '-' + end\\r\\n            }\\r\\n        });\\r\\n        if (end < 剧集长度) {\\r\\n            start += 每页集数;\\r\\n            end += 每页集数;\\r\\n        }\\r\\n    }\\r\\n    // 记录末页的id\\r\\n    putMyVar('末页', start + '-' + end);\\r\\n} else {\\r\\n    putMyVar('分集起', 1);\\r\\n    putMyVar('分集终', 剧集长度);\\r\\n}\\r\\n// 展示剧集:\\r\\n显示的剧集列表 = 剧集列表.slice(0, getMyVar('分集终'));\\r\\nputMyVar('显示的剧集列表', 显示的剧集列表);\\r\\nindex = 1;\\r\\n显示的剧集列表.forEach(list => {\\r\\n    if (getItem('模式', '双边') == '列表') {\\r\\n        d.push({\\r\\n            title: list.long_title,\\r\\n            img: list.cover + \\\"@Referer=\\\",\\r\\n            url: list.link + lazy,\\r\\n            desc: list.title.match(/[0-9]/) ? (list.badge + '第' + list.title + '话') : list.title,\\r\\n            col_type: 'movie_1_left_pic',\\r\\n            extra: {\\r\\n                id: list.link,\\r\\n                aid: list.aid,\\r\\n                bvid: list.bvid,\\r\\n                cid: list.cid,\\r\\n                badge: list.badge\\r\\n            }\\r\\n        });\\r\\n    } else {\\r\\n        d.push({\\r\\n            title: list.long_title,\\r\\n            img: list.cover + \\\"@Referer=\\\",\\r\\n            url: list.link + lazy,\\r\\n            desc: list.title.match(/[0-9]/) ? (list.badge + '第' + list.title + '话') : list.title,\\r\\n            col_type: 'movie_2',\\r\\n            extra: {\\r\\n                id: list.link,\\r\\n                aid: list.aid,\\r\\n                bvid: list.bvid,\\r\\n                cid: list.cid,\\r\\n                badge: list.badge\\r\\n            }\\r\\n        });\\r\\n    }\\r\\n    index += 1;\\r\\n});\\r\\nsetResult(d);\\r\\n\"},{\"col_type\":\"movie_3\",\"name\":\"up主页\",\"path\":\"upHome\",\"rule\":\"js:\\r\\nvar d = [];\\r\\n// 预处理\\r\\nputMyVar('upInfo', '关');\\r\\nsetPageTitle(MY_PARAMS.title);\\r\\nimgLink = storage0.getMyVar('图标');\\r\\n// 防止反爬虫，从上一个页面传递数据——反爬虫严重\\r\\nupMid = MY_PARAMS.mid + \\\"\\\";\\r\\nupName = MY_PARAMS.title;\\r\\nupFace = MY_PARAMS.face;\\r\\nrelation = $.require(\\\"hiker://page/api\\\").userMapping(upMid);\\r\\n// 头像栏\\r\\nd.push({\\r\\n    title: '<font color=\\\"blue\\\">' + upName + '</font>',\\r\\n    url: $('#noLoading#').lazyRule((upMid) => {\\r\\n        if (getMyVar('upInfo', '关') == '开') {\\r\\n            deleteItem('upInfo');\\r\\n            putMyVar('upInfo', '关');\\r\\n        } else {\\r\\n            // 用户基本信息\\r\\n            upData = JSON.parse(fetch('https://api.bilibili.com/x/space/acc/info?mid=' + upMid + '&token=&platform=web&jsonp=jsonp', {\\r\\n                headers: {\\r\\n                    \\\"User-Agent\\\": PC_UA,\\r\\n                    \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\r\\n                    \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\r\\n                }\\r\\n            })).data;\\r\\n            upName = upData.name;\\r\\n            upSex = upData.sex;\\r\\n            upSign = upData.sign;\\r\\n            upBirthday = upData.birthday;\\r\\n            try {\\r\\n                upSchool = upData.school.name;\\r\\n            } catch (e) {\\r\\n                upSchool = '';\\r\\n            }\\r\\n            try {\\r\\n                upIdentification = upData.official.title;\\r\\n            } catch (e) {\\r\\n                upIdentification = '';\\r\\n            }\\r\\n            addItemAfter('currentUp', {\\r\\n                title: 'up:' + upName + '\\\\nmid:' + upMid + '\\\\n性别:' + upSex + '\\\\n生日:' + (upBirthday == '' ? '未填写' : upBirthday) + '\\\\n' + (upSchool == '' ? '' : '学校:' + upSchool + '\\\\n') + (upSign == '' ? '\\\\n' : upSign + '\\\\n') + (upIdentification == '' ? '' : '认证:'),\\r\\n                url: 'hiker://empty',\\r\\n                col_type: 'long_text',\\r\\n                extra: {\\r\\n                    id: 'upInfo'\\r\\n                }\\r\\n            });\\r\\n            putMyVar('upInfo', '开');\\r\\n        }\\r\\n        return 'toast://信息折叠:' + getMyVar('upInfo', '开')\\r\\n    }, upMid),\\r\\n    img: upFace + \\\"@Referer=\\\",\\r\\n    col_type: \\\"avatar\\\",\\r\\n    extra: {\\r\\n        id: 'currentUp'\\r\\n    }\\r\\n}, {\\r\\n    col_type: 'line'\\r\\n});\\r\\n// 公告\\r\\nnoticeText = JSON.parse(fetch('https://api.bilibili.com/x/space/notice?mid=' + upMid + '&jsonp=jsonp', {\\r\\n    headers: {\\r\\n        \\\"User-Agent\\\": PC_UA,\\r\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\r\\n        \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\r\\n    }\\r\\n})).data;\\r\\nif (noticeText != '') {\\r\\n    d.push({\\r\\n        title: '公告',\\r\\n        url: $().rule((noticeText) => {\\r\\n            var d = [];\\r\\n            d.push({\\r\\n                title: '公告：' + '\\\\n\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t\\\\t' + noticeText,\\r\\n                col_type: 'long_text'\\r\\n            });\\r\\n            setHomeResult(d);\\r\\n        }, noticeText),\\r\\n        desc: noticeText == '' ? '暂无公告' : noticeText,\\r\\n        col_type: 'text_1',\\r\\n    });\\r\\n}\\r\\nd.push({\\r\\n    col_type: 'line'\\r\\n}, {\\r\\n    title: relation,\\r\\n    img: relation == '未关注' ? imgLink.添加关注 : imgLink.已关注,\\r\\n    url: $('#noLoading##noHistory#').lazyRule((upMid) => {\\r\\n        return $.require(\\\"hiker://page/api\\\").changeUserRelation(upMid, 11)\\r\\n    }, upMid),\\r\\n    col_type: \\\"icon_small_4\\\",\\r\\n    extra: {\\r\\n        id: 'relation'\\r\\n    }\\r\\n}, {\\r\\n    title: '动态',\\r\\n    img: imgLink.动态,\\r\\n    url: $('#noLoading##noHistory#').lazyRule((upMid) => {\\r\\n        return $('hiker://empty?p=fypage').rule((upMid) => {\\r\\n            let d = [];\\r\\n            latenews = $.require(\\\"hiker://page/api\\\").getDynamicData('upSpace', upMid);\\r\\n            eval($.require(\\\"hiker://page/api\\\").showDynamicData());\\r\\n            setResult(d);\\r\\n        }, upMid)\\r\\n    }, upMid),\\r\\n    col_type: \\\"icon_small_4\\\",\\r\\n}, {\\r\\n    title: '专栏',\\r\\n    img: imgLink.专栏,\\r\\n    url: \\\"hiker://page/acticleList?p=fypage\\\",\\r\\n    col_type: \\\"icon_small_4\\\",\\r\\n    extra: {\\r\\n        mid: upMid\\r\\n    }\\r\\n})\\r\\n// 用户视频-合集、系列\\r\\nupVideo = JSON.parse(fetch('https://api.bilibili.com/x/polymer/space/seasons_series_list?mid=' + upMid + '&page_num=1&page_size=10', {\\r\\n    headers: {\\r\\n        \\\"User-Agent\\\": PC_UA,\\r\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\"\\r\\n    }\\r\\n})).data.items_lists;\\r\\n// 视频合集、系列\\r\\ntry {\\r\\n    upVideo.seasons_list.forEach(list => {\\r\\n        season_id = list.meta.season_id;\\r\\n        // 标题-跳转更多\\r\\n        d.push({\\r\\n            title: '<font color=\\\"#33cccc\\\">' + list.meta.name.substring(0, 30) + '</font>\\\\t\\\\t<font color=\\\"red\\\">' + list.meta.total + '</font>\\t➮',\\r\\n            img: 'https://lanmeiguojiang.com/tubiao/more/137.png@Referer=',\\r\\n            // img: list.meta.cover+'@Referer=',\\r\\n            col_type: 'avatar',\\r\\n            url: $('#noLoading##noHistory#').lazyRule((upMid, season_id) => {\\r\\n                return $('hiker://empty?fypage').rule((upMid, season_id) => {\\r\\n                    var d = [];\\r\\n                    let u = 'https://api.bilibili.com/x/polymer/space/seasons_archives_list?mid=' + upMid + '&season_id=' + season_id + '&sort_reverse=false&page_num=' + MY_PAGE + '&page_size=30';\\r\\n                    Video = JSON.parse(fetch(u, {\\r\\n                        headers: {\\r\\n                            \\\"User-Agent\\\": PC_UA,\\r\\n                            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\"\\r\\n                        }\\r\\n                    })).data;\\r\\n                    maxPage = Math.ceil(Video.page.total / Video.page.page_size);\\r\\n                    if (MY_PAGE <= maxPage) {\\r\\n                        d.push({\\r\\n                            title: '当前:第' + Video.page.page_num + '页\\\\t\\\\t\\\\t共有' + maxPage + '页,' + Video.page.total + '条数据',\\r\\n                            url: \\\"hiker://empty\\\",\\r\\n                            col_type: \\\"text_center_1\\\",\\r\\n                        });\\r\\n                        Video.archives.forEach(list => {\\r\\n                            d.push({\\r\\n                                title: list.title,\\r\\n                                img: list.pic + '@Referer=',\\r\\n                                desc: '播放量：' + list.stat.view,\\r\\n                                col_type: 'movie_1_left_pic',\\r\\n                                url: \\\"hiker://page/video\\\",\\r\\n                                extra: {\\r\\n                                    aid: list.aid\\r\\n                                }\\r\\n                            });\\r\\n                        });\\r\\n                    }\\r\\n                    setHomeResult(d);\\r\\n                }, upMid, season_id)\\r\\n            }, upMid, season_id)\\r\\n        });\\r\\n        if (list.archives === undefined) {\\r\\n            log(list.meta.name + '为空');\\r\\n        } else {\\r\\n            if (list.archives.length < 2) {\\r\\n                list.archives.forEach(list => {\\r\\n                    d.push({\\r\\n                        title: list.title,\\r\\n                        img: list.pic + '@Referer=',\\r\\n                        desc: '播放量：' + list.stat.view,\\r\\n                        col_type: 'movie_1_left_pic',\\r\\n                        url: \\\"hiker://page/video\\\",\\r\\n                        extra: {\\r\\n                            aid: list.aid\\r\\n                        }\\r\\n                    });\\r\\n                });\\r\\n            } else if (list.archives.length == 0) {\\r\\n                d.push({\\r\\n                    title: \\\"好家伙，这家伙没有合集视频！\\\",\\r\\n                    desc: \\\"要不去点击全部视频看看~\\\",\\r\\n                    col_type: 'text_center_1',\\r\\n                    url: \\\"hiker://empty\\\",\\r\\n                });\\r\\n            } else {\\r\\n                for (let i = 0; i < 2; i++) {\\r\\n                    d.push({\\r\\n                        title: list.archives[i].title,\\r\\n                        img: list.archives[i].pic + '@Referer=',\\r\\n                        desc: '播放量：' + list.archives[i].stat.view,\\r\\n                        col_type: 'movie_1_left_pic',\\r\\n                        url: \\\"hiker://page/video\\\",\\r\\n                        extra: {\\r\\n                            aid: list.archives[i].aid\\r\\n                        }\\r\\n                    });\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    });\\r\\n} catch (e) {\\r\\n    d.push({\\r\\n        title: '合集为空',\\r\\n        url: 'hiker://empty',\\r\\n        desc: 'Sorry,没有数据呢~',\\r\\n        col_type: 'text_center_1',\\r\\n    });\\r\\n}\\r\\ntry {\\r\\n    upVideo.series_list.forEach(list => {\\r\\n        series_id = list.meta.series_id;\\r\\n        // 标题-跳转更多\\r\\n        d.push({\\r\\n            title: '<font color=\\\"#33cccc\\\">' + list.meta.name.substring(0, 30) + '</font>\\\\t\\\\t<font color=\\\"red\\\">' + list.meta.total + '</font>\\t➮',\\r\\n            img: 'https://lanmeiguojiang.com/tubiao/more/137.png@Referer=',\\r\\n            // img: list.meta.cover+'@Referer=',\\r\\n            col_type: 'avatar',\\r\\n            url: $('#noLoading##noHistory#').lazyRule((upMid, series_id) => {\\r\\n                return $('hiker://empty?fypage').rule((upMid, series_id) => {\\r\\n                    var d = [];\\r\\n                    let u = 'https://api.bilibili.com/x/series/archives?mid=' + upMid + '&series_id=' + series_id + '&only_normal=true&sort=desc&pn=' + MY_PAGE + '&ps=30';\\r\\n                    Video = JSON.parse(fetch(u, {\\r\\n                        headers: {\\r\\n                            \\\"User-Agent\\\": PC_UA,\\r\\n                            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\"\\r\\n                        }\\r\\n                    })).data;\\r\\n                    maxPage = Math.ceil(Video.page.total / Video.page.size);\\r\\n                    if (MY_PAGE <= maxPage) {\\r\\n                        d.push({\\r\\n                            title: '当前:第' + Video.page.num + '页\\\\t\\\\t\\\\t共有' + maxPage + '页,' + Video.page.total + '条数据',\\r\\n                            url: \\\"hiker://empty\\\",\\r\\n                            col_type: \\\"text_center_1\\\",\\r\\n                        });\\r\\n                        Video.archives.forEach(list => {\\r\\n                            d.push({\\r\\n                                title: list.title,\\r\\n                                img: list.pic + '@Referer=',\\r\\n                                desc: '播放量：' + list.stat.view,\\r\\n                                col_type: 'movie_1_left_pic',\\r\\n                                url: \\\"hiker://page/video\\\",\\r\\n                                extra: {\\r\\n                                    aid: list.aid\\r\\n                                }\\r\\n                            });\\r\\n                        });\\r\\n                    }\\r\\n                    setHomeResult(d);\\r\\n                }, upMid, series_id)\\r\\n            }, upMid, series_id)\\r\\n        });\\r\\n        if (list.archives === undefined) {\\r\\n            log(list.meta.name + '为空');\\r\\n        } else {\\r\\n            if (list.archives.length < 2) {\\r\\n                list.archives.forEach(list => {\\r\\n                    d.push({\\r\\n                        title: list.title,\\r\\n                        img: list.pic + '@Referer=',\\r\\n                        desc: '播放量：' + list.stat.view,\\r\\n                        col_type: 'movie_1_left_pic',\\r\\n                        url: \\\"hiker://page/video\\\",\\r\\n                        extra: {\\r\\n                            aid: list.aid\\r\\n                        }\\r\\n                    });\\r\\n                });\\r\\n            } else if (list.archives.length == 0) {\\r\\n                d.push({\\r\\n                    title: \\\"好家伙，这家伙没有合集视频！\\\",\\r\\n                    desc: \\\"要不去点击全部视频看看~\\\",\\r\\n                    col_type: 'text_center_1',\\r\\n                    url: \\\"hiker://empty\\\",\\r\\n                });\\r\\n            } else {\\r\\n                for (let i = 0; i < 2; i++) {\\r\\n                    d.push({\\r\\n                        title: list.archives[i].title,\\r\\n                        img: list.archives[i].pic + '@Referer=',\\r\\n                        desc: '播放量：' + list.archives[i].stat.view,\\r\\n                        col_type: 'movie_1_left_pic',\\r\\n                        url: \\\"hiker://page/video\\\",\\r\\n                        extra: {\\r\\n                            aid: list.archives[i].aid\\r\\n                        }\\r\\n                    });\\r\\n                }\\r\\n            }\\r\\n        }\\r\\n    });\\r\\n} catch (e) {\\r\\n    d.push({\\r\\n        title: '系列为空',\\r\\n        url: 'hiker://empty',\\r\\n        desc: 'Sorry,没有数据呢~',\\r\\n        col_type: 'text_center_1',\\r\\n    });\\r\\n}\\r\\n// up投稿\\r\\nd.push({\\r\\n    title: 'TA的视频,点击展开全部',\\r\\n    col_type: 'text_center_1',\\r\\n    url: $('#noLoading##noHistory#').lazyRule((upMid) => {\\r\\n        return $().rule((upMid) => {\\r\\n            var d = [];\\r\\n            try {\\r\\n                upTotalVideoInfo = JSON.parse(fetch('https://api.bilibili.com/x/space/arc/search?mid=' + upMid + '&pn=' + getMyVar('_page', '1') + '&ps=25&index=1&jsonp=jsonp', {\\r\\n                    headers: {\\r\\n                        \\\"User-Agent\\\": PC_UA,\\r\\n                        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\r\\n                        \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\r\\n                    }\\r\\n                }));\\r\\n                if (upTotalVideoInfo.message == '啥都木有') {\\r\\n                    d.push({\\r\\n                        title: '啥都木有...',\\r\\n                        img: 'https://pic.imgdb.cn/item/632c204e16f2c2beb13652aa.jpg@Referer=',\\r\\n                        url: 'hiker://empty',\\r\\n                        desc: '不小心来到了真空的世界~',\\r\\n                        col_type: \\\"pic_1\\\"\\r\\n                    });\\r\\n                } else {\\r\\n                    upTotalVideo = upTotalVideoInfo.data;\\r\\n                    maxPage = Math.ceil(upTotalVideo.page.count / upTotalVideo.page.ps);\\r\\n                    for (let page = 1; page <= maxPage; page++) {\\r\\n                        d.push({\\r\\n                            title: (page + \\\"\\\") == getMyVar('_page', '1') ? '‘‘’’<font color=\\\"red\\\">' + (page + \\\"\\\") + '</font>' : (page + \\\"\\\"),\\r\\n                            url: $('#noLoading##noHistory#').lazyRule((page) => {\\r\\n                                putMyVar('_page', (page + \\\"\\\"));\\r\\n                                refreshPage(true);\\r\\n                                return \\\"hiker://empty\\\";\\r\\n                            }, page),\\r\\n                            col_type: 'scroll_button',\\r\\n                        });\\r\\n                    }\\r\\n                    upTotalVideo.list.vlist.forEach(list => {\\r\\n                        creatTime=$.require(\\\"hiker://page/api\\\").timeConvert(list.created);\\r\\n                        d.push({\\r\\n                            title: list.title,\\r\\n                            img: list.pic + '@Referer=',\\r\\n                            desc: '播放量：' + list.play+'\\\\n'+creatTime,\\r\\n                            col_type: 'movie_1_left_pic',\\r\\n                            url: \\\"hiker://page/video\\\",\\r\\n                            extra: {\\r\\n                                aid: list.aid\\r\\n                            }\\r\\n                        });\\r\\n                    });\\r\\n                }\\r\\n            } catch (e) {\\r\\n                d.push({\\r\\n                    title: '页面走丢了...',\\r\\n                    img: 'https://i0.hdslb.com/bfs/general/f7b667011a46615732c701f4bb1d07f793f8d1df.png@Referer=',\\r\\n                    url: 'hiker://empty',\\r\\n                    desc: '太频繁了！稍后再试~',\\r\\n                    col_type: \\\"pic_1\\\"\\r\\n                });\\r\\n            }\\r\\n            setHomeResult(d);\\r\\n        }, upMid)\\r\\n    }, upMid)\\r\\n});\\r\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"up搜索\",\"path\":\"upSearch\",\"rule\":\"js:\\n\\nseaword = MY_PARAMS.seaword;\\n\\nvar d = [];\\n\\ncookie = JSON.parse(fetchCookie('https://www.bilibili.com/', {\\n\\n    headers: {\\n\\n        \\\"User-Agent\\\": PC_UA,\\n\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n\\n    },\\n\\n    method: \\\"GET\\\"\\n\\n}))[1];\\n\\nresultData = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/search/type?__refresh__=true&_extra=&context=&page=\\\" + MY_PAGE + \\\"&page_size=36&order=&duration=&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword=\\\" + seaword + \\\"&qv_id=R2IhBDb0XZ8EM69clo2rwesz9L4wRgZy&category_id=&search_type=bili_user&order_sort=0&user_type=0&dynamic_offset=0&preload=true&com2co=true\\\", {\\n\\n    headers: {\\n\\n        \\\"User-Agent\\\": PC_UA,\\n\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n\\n        \\\"Cookie\\\": cookie\\n\\n    },\\n\\n    method: \\\"GET\\\"\\n\\n})).data;\\n\\nif (MY_PAGE <= resultData.numPages) {\\n\\n    d.push({\\n\\n        title: '当前:第' + resultData.page + '页\\\\t\\\\t\\\\t共有' + resultData.numPages + '页,' + resultData.numResults + '条数据',\\n\\n        url: \\\"hiker://empty\\\",\\n\\n        col_type: \\\"text_center_1\\\",\\n\\n    });\\n\\n    resultData.result.forEach(list => {\\n\\n        d.push({\\n\\n            title: \\\"<big><font color='blue'>\\\" + list.uname + \\\"</font></big><small>\\\" + list.usign + \\\"</small>\\\",\\n\\n            img: 'https://' + list.upic + \\\"@Referer=\\\",\\n\\n            col_type: 'avatar',\\n\\n            url: \\\"hiker://page/upHome\\\",\\n\\n            extra: {\\n\\n                mid: list.mid,\\n\\n                title: list.uname,\\n\\n                face: 'https://' + list.upic\\n\\n            }\\n\\n        });\\n\\n    });\\n\\n}\\n\\nsetSearchResult(d);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"video搜索\",\"path\":\"videoSearch\",\"rule\":\"js:\\n\\nseaword = MY_PARAMS.seaword;\\n\\nvar d = [];\\n\\ncookie = JSON.parse(fetchCookie('https://www.bilibili.com/', {\\n\\n    headers: {\\n\\n        \\\"User-Agent\\\": PC_UA,\\n\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n\\n    },\\n\\n    method: \\\"GET\\\"\\n\\n}))[1];\\n\\nresultData = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/search/type?__refresh__=true&_extra=&context=&page=\\\" + MY_PAGE + \\\"&page_size=42&from_source=&from_spmid=333.337&platform=pc&highlight=1&single_column=0&keyword=\\\" + seaword + \\\"&qv_id=vTtUT4Rfhzt2pPz9p5Wu3ZI9QQgUfxsA&category_id=&search_type=video&dynamic_offset=0&preload=true&com2co=true\\\", {\\n\\n    headers: {\\n\\n        \\\"User-Agent\\\": PC_UA,\\n\\n        \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n\\n        \\\"Cookie\\\": cookie\\n\\n    },\\n\\n    method: \\\"GET\\\"\\n\\n})).data;\\n\\nif (MY_PAGE <= resultData.numPages) {\\n\\n    d.push({\\n\\n        title: '当前:第' + resultData.page + '页\\\\t\\\\t\\\\t共有' + resultData.numPages + '页,' + resultData.numResults + '条数据',\\n\\n        url: \\\"hiker://empty\\\",\\n\\n        col_type: \\\"text_center_1\\\",\\n\\n    });\\n\\n    resultData.result.forEach(list => {\\n\\n        // title=list.title.replace('<em class=\\\\\\\"keyword\\\\\\\">','<font color=\\\"red\\\">').replace('</em>','</font>')\\n\\n        title = list.title.replace(/<em class=\\\\\\\"keyword\\\\\\\">/g, '').replace(/<\\\\/em>/g, '')\\n\\n        d.push({\\n\\n            title: title,\\n\\n            img: 'https://' + list.pic + \\\"@Referer=\\\",\\n\\n            desc: list.description,\\n\\n            col_type: 'movie_1_left_pic',\\n\\n            url: \\\"hiker://page/video\\\",\\n\\n            extra: {\\n\\n                // 视频标识\\n\\n                aid: list.aid,\\n\\n                title: title\\n\\n            }\\n\\n        });\\n\\n    });\\n\\n}\\n\\nsetSearchResult(d);\\n\\n\"},{\"col_type\":\"movie_1_left_pic\",\"name\":\"推送\",\"path\":\"feed\",\"rule\":\"$.require(\\\"hiker://page/api\\\").getFeed().forEach(item => {\\n\\n    d.push({\\n\\n        title: item.title,\\n\\n        img: item.pic+'@Referer=',\\n\\n        desc: 'up:' + item.owner.name + '\\\\n' + item.stat.view + \\\"播放※\\\" + item.stat.like + \\\"点赞\\\",\\n\\n        url: \\\"hiker://page/video\\\",\\n\\n        col_type: 'movie_1_left_pic',\\n\\n        extra: {\\n\\n            // id其实是aid\\n\\n            aid: item.id,\\n\\n            cid: item.cid,\\n\\n        }\\n\\n    })\\n\\n})\\n\\n\\n\"},{\"col_type\":\"text_1\",\"name\":\"API\",\"path\":\"api\",\"rule\":\"// part1:聚合函数----------------\\n// 登录验证\\n$.exports.isLoggedIn = function () {\\n    if (fileExist(\\\"hiker://files/rules/cy/bili.txt\\\")) {\\n        biliDate = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\"));\\n        var cookie = biliDate.cookie;\\n        let userinfo = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/nav\\\", {\\n            headers: {\\n                \\\"Cookie\\\": cookie\\n            }\\n        })).data;\\n        if (userinfo.isLogin === false) {\\n            return JSON.stringify({\\n                \\\"userName\\\": '未登录',\\n                \\\"userMid\\\": '',\\n                \\\"userFace\\\": '',\\n                \\\"type\\\": false\\n            })\\n        } else {\\n            biliDate.userName = userinfo.uname;\\n            biliDate.userMid = userinfo.mid;\\n            // 1：会员开通；0：未开通\\n            biliDate.vipStatus = userinfo.vipStatus;\\n            biliDate.face = userinfo.face + \\\"@Referer=\\\";\\n            saveFile('hiker://files/rules/cy/bili.txt', JSON.stringify(biliDate));\\n            // return true;\\n            return JSON.stringify({\\n                \\\"userName\\\": biliDate.userName,\\n                \\\"userMid\\\": biliDate.userMid,\\n                \\\"userFace\\\": biliDate.face,\\n                \\\"type\\\": true\\n            });\\n        }\\n    } else {\\n        return JSON.stringify({\\n            \\\"userName\\\": '未登录',\\n            \\\"userMid\\\": '',\\n            \\\"userFace\\\": '',\\n            \\\"type\\\": false\\n        });\\n    }\\n}\\n// 哔哩视频解析：获取播放地址+提交播放记录\\n$.exports.biliLazy = function (id, cid, qn) {\\n    var data = $.require(\\\"hiker://page/api\\\").getUrl(id, cid, qn);\\n    // 提交历史记录\\n    $.require(\\\"hiker://page/api\\\").reportProcess(id, cid);\\n    // qualityNum=dash.audio.length;不需要了，找到了更好的判断方法，虽然我并不知道这些参数的含义是什么\\n    videoList = [];\\n    audioList = [];\\n    nameList = [];\\n    headers = [];\\n    try {\\n        data.audio.forEach(item => {\\n            audioList.push(item.baseUrl);\\n            headers.push({\\n                \\\"Referer\\\": \\\"https://www.bilibili.com\\\",\\n                \\\"User-Agent\\\": PC_UA\\n            });\\n        });\\n        data.video.forEach(item => {\\n            if (item.codecid == 7) {\\n                videoList.push(item.baseUrl + \\\"#isVideo=true#\\\");\\n                if (item.id == 126) {\\n                    nameList.push('杜比视界');\\n                } else if (item.id == 125) {\\n                    nameList.push('HDR 真彩色');\\n                } else if (item.id == 120) {\\n                    nameList.push('4K超清');\\n                } else if (item.id == 116) {\\n                    nameList.push('1080P60高帧率');\\n                } else if (item.id == 112) {\\n                    nameList.push('1080P+高码率');\\n                } else if (item.id == 80) {\\n                    nameList.push('1080P高清');\\n                } else if (item.id == 74) {\\n                    nameList.push('720P60高帧率');\\n                } else if (item.id == 64) {\\n                    nameList.push('720P高清');\\n                } else if (item.id == 32) {\\n                    nameList.push('480P清晰');\\n                } else if (item.id == 16) {\\n                    nameList.push('360P流畅');\\n                } else if (item.id == 6) {\\n                    nameList.push('240P极速');\\n                }\\n            }\\n        });\\n        return JSON.stringify({\\n            urls: videoList,\\n            audioUrls: audioList,\\n            headers: headers,\\n            names: nameList,\\n            danmu: 'https://comment.bilibili.com/' + cid + '.xml'\\n        })\\n    } catch (e) {\\n        return JSON.stringify({\\n            urls: [data.durl[0].url + \\\"#isVideo=true#\\\"],\\n            names: [data.quality + \\\"\\\"],\\n            danmu: 'https://comment.bilibili.com/' + cid + '.xml',\\n            headers: [{\\n                \\\"Referer\\\": \\\"https://www.bilibili.com\\\",\\n                \\\"User-Agent\\\": PC_UA\\n            }]\\n        })\\n    }\\n}\\n// 稍后在看——总操作判断\\n$.exports.judgeToview = function (aid) {\\n    selection = ['添加', '移除'];\\n    return $(selection, 1).select((aid) => {\\n        if (input == '添加') {\\n            res = $.require(\\\"hiker://page/api\\\").addToview(aid);\\n            if (res == 0) {\\n                return \\\"toast://添加成功\\\"\\n            } else if (res == -101) {\\n                return \\\"toast://账号未登录\\\"\\n            } else if (res == -111) {\\n                return \\\"toast://csrf校验失败\\\"\\n            } else if (res == -400) {\\n                return \\\"toast://请求错误\\\"\\n            } else if (res == 90001) {\\n                return \\\"toast://列表已满\\\"\\n            } else if (res == 90003) {\\n                return \\\"toast://稿件已经被删除\\\"\\n            } else {\\n                return \\\"toast://未知错误\\\"\\n            }\\n        } else {\\n            res = $.require(\\\"hiker://page/api\\\").delToview(aid);\\n            if (res == 0) {\\n                return \\\"toast://移除成功\\\"\\n            } else if (res == -101) {\\n                return \\\"toast://账号未登录\\\"\\n            } else if (res == -111) {\\n                return \\\"toast://csrf校验失败\\\"\\n            } else if (res == -400) {\\n                return \\\"toast://请求错误\\\"\\n            } else {\\n                return \\\"toast://未知错误\\\"\\n            }\\n        }\\n    }, aid)\\n}\\n// 操作用户关系\\n$.exports.changeUserRelation = function (mid, re_src) {\\n    selection = ['关注', '取关', '悄悄关注', '取消悄悄关注', '拉黑', '取消拉黑', '踢出粉丝', '移动分组'];\\n    return $(selection, 2).select((mid, re_src) => {\\n        if (input == '移动分组') {\\n            beforeTagids = [];\\n            groups = $.require(\\\"hiker://page/api\\\").getUserGroup(mid);\\n            if (JSON.stringify(groups) == '{}') {\\n                beforeTagids.push(0);\\n            } else {\\n                for (var prop in groups) {\\n                    beforeTagids.push(parseInt(prop));\\n                }\\n            }\\n            // 获取我的分组\\n            focusGroupList = [];\\n            $.require(\\\"hiker://page/api\\\").getMyAttentionGroupList().forEach(list => {\\n                focusGroupList.push(list.name + ' ' + list.tagid);\\n            });\\n            return $(focusGroupList, 1).select((beforeTagids, mid) => {\\n                afterTagids = [];\\n                afterTagids.push(parseInt(input.split(' ')[1]));\\n                fids = [];\\n                fids.push(Number(mid));\\n                res = $.require(\\\"hiker://page/api\\\").moveUsers(beforeTagids, afterTagids, fids);\\n                if (res == 0) {\\n                    return \\\"toast://移动用户到\\\" + input.split(' ')[0] + \\\"分组成功\\\"\\n                } else if (res == -101) {\\n                    return \\\"toast://账号未登录\\\"\\n                } else if (res == -111) {\\n                    return \\\"toast://csrf校验失败\\\"\\n                } else if (res == -400) {\\n                    return \\\"toast://请求错误\\\"\\n                } else if (res == 22104) {\\n                    return \\\"toast://无权限\\\"\\n                } else if (res == 22105) {\\n                    return \\\"toast://未关注\\\"\\n                } else {\\n                    return \\\"toast://未知错误\\\"\\n                }\\n            }, beforeTagids, mid);\\n        } else {\\n            if (input == '关注') {\\n                var act = 1;\\n            } else if (input == '取关') {\\n                var act = 2;\\n            } else if (input == '悄悄关注') {\\n                var act = 3;\\n            } else if (input == '取消悄悄关注') {\\n                var act = 4;\\n            } else if (input == '拉黑') {\\n                var act = 5;\\n            } else if (input == '取消拉黑') {\\n                var act = 6;\\n            } else if (input == '踢出粉丝') {\\n                var act = 7;\\n            }\\n            res = $.require(\\\"hiker://page/api\\\").addAttention(mid, act, re_src);\\n            relation = $.require(\\\"hiker://page/api\\\").userMapping(mid);\\n            updateItem('relation', {\\n                title: relation,\\n                img: relation == '未关注' ? storage0.getMyVar('图标').添加关注 : storage0.getMyVar('图标').已关注\\n            });\\n            if (res == 0) {\\n                return \\\"toast://\\\" + input + \\\"成功\\\"\\n            } else if (res == -101) {\\n                return \\\"toast://账号未登录\\\"\\n            } else if (res == -111) {\\n                return \\\"toast://csrf校验失败\\\"\\n            } else if (res == -400) {\\n                return \\\"toast://请求错误\\\"\\n            } else if (res == 22001) {\\n                return \\\"toast://不能对自己进行此操作\\\"\\n            } else if (res == 22003) {\\n                return \\\"toast://用户位于黑名单\\\"\\n            } else {\\n                return \\\"toast://未知错误\\\"\\n            }\\n        }\\n    }, mid, re_src)\\n}\\n// 映射用户关系\\n$.exports.userMapping = function (mid) {\\n    relationRes = $.require(\\\"hiker://page/api\\\").getRelation(mid);\\n    if (relationRes.relation.attribute == 0) {\\n        relation = '未关注'\\n    } else if (relationRes.relation.attribute == 1) {\\n        relation = '悄悄关注'\\n    } else if (relationRes.relation.attribute == 2) {\\n        relation = '已关注'\\n    } else if (relationRes.relation.attribute == 6) {\\n        relation = '已互粉'\\n    } else if (relationRes.relation.attribute == 128) {\\n        relation = '已拉黑'\\n    }\\n    return relation;\\n}\\n// 点赞操作逻辑\\n$.exports.likeLogic = function (aid) {\\n    hasLike = $.require(\\\"hiker://page/api\\\").hasLike(aid);\\n    if (hasLike == 0) {\\n        res = $.require(\\\"hiker://page/api\\\").setLike(aid, 1);\\n        if (res == 0) {\\n            like = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid)).data.stat.like;\\n            updateItem('setLike', {\\n                title: (like + 1) + '',\\n                img: storage0.getMyVar('图标').已点赞\\n            });\\n            return \\\"toast://点赞成功\\\";\\n        } else {\\n            return \\\"toast://点赞出错了~\\\";\\n        }\\n    } else {\\n        res = $.require(\\\"hiker://page/api\\\").setLike(aid, 2);\\n        if (res == 0) {\\n            like = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid)).data.stat.like;\\n            updateItem('setLike', {\\n                title: (like - 1) + '',\\n                img: storage0.getMyVar('图标').未点赞\\n            });\\n            return \\\"toast://取消点赞成功\\\";\\n        } else {\\n            return \\\"toast://取消点赞出错了~\\\";\\n        }\\n    }\\n}\\n// 收藏操作逻辑\\n$.exports.favourLogic = function (aid, mid) {\\n    hasFavour = $.require(\\\"hiker://page/api\\\").hasFavour(aid);\\n    if (hasFavour) {\\n        // 移出收藏\\n        favourIdList = $.require(\\\"hiker://page/api\\\").getFavourIdList(aid, mid);\\n        res = $.require(\\\"hiker://page/api\\\").setFavour(aid, '', favourIdList);\\n        if (res == 0) {\\n            like = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid)).data.stat.favorite;\\n            updateItem('setFavour', {\\n                title: (like - 1) + '',\\n                img: storage0.getMyVar('图标').未收藏\\n            });\\n            return \\\"toast://取消收藏成功\\\";\\n        } else {\\n            return \\\"toast://取消收藏出错了~\\\";\\n        }\\n    } else {\\n        // 选择收藏\\n        res = $.require(\\\"hiker://page/api\\\").getCollectionGroupList()[0].mediaListResponse.list;\\n        GroupList = [];\\n        res.forEach(item => {\\n            GroupList.push(item.title + ' ' + item.id);\\n        });\\n        return $(GroupList, 1).select((aid) => {\\n            selectId = parseInt(input.split(' ')[1])\\n            res = $.require(\\\"hiker://page/api\\\").setFavour(aid, selectId, '');\\n            if (res == 0) {\\n                like = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid)).data.stat.favorite;\\n                updateItem('setFavour', {\\n                    title: (like + 1) + '',\\n                    img: storage0.getMyVar('图标').已收藏\\n                });\\n                return \\\"toast://收藏成功\\\";\\n            } else {\\n                return \\\"toast://收藏出错了~\\\";\\n            }\\n        }, aid);\\n    }\\n}\\n\\n\\n\\n// part2:散装API----------------\\n// 视频推荐\\n$.exports.getFeed = function () {\\n    let u = \\\"https://api.bilibili.com/x/web-interface/index/top/feed/rcmd\\\";\\n    var res = JSON.parse(fetch(u, {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    }));\\n    return res.data.item\\n}\\n// 获取播放地址\\n$.exports.getUrl = function (avid, cid, qn) {\\n    if (getMyVar('bf_cookie', '未定义') == '未定义') {\\n        var Cookie = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n    } else {\\n        var Cookie = getMyVar('bf_cookie');\\n    }\\n    try {\\n        let u = request(buildUrl(\\\"http://api.bilibili.com/x/player/playurl\\\", {\\n            \\\"avid\\\": avid,\\n            \\\"cid\\\": cid,\\n            \\\"qn\\\": qn,\\n            \\\"fnver\\\": 0,\\n            // \\\"fnval\\\": 4048,\\n            \\\"fnval\\\": 16,\\n            \\\"fourk\\\": 1\\n        }), {\\n            headers: {\\n                Cookie: Cookie\\n            }\\n        })\\n        return JSON.parse(u).data.dash\\n    } catch (e) {\\n        try {\\n            // 一人之下第一季的第1，2集——可以获取大会员剧集的前3min\\n            log('尝试更改请求接口...');\\n            let u = request(buildUrl(\\\"https://api.bilibili.com/pgc/player/web/playurl\\\", {\\n                \\\"avid\\\": avid,\\n                \\\"cid\\\": cid,\\n                \\\"qn\\\": qn,\\n                \\\"fnver\\\": 0,\\n                // \\\"fnval\\\": 4048,\\n                \\\"fnval\\\": 16,\\n                \\\"fourk\\\": 1\\n            }), {\\n                headers: {\\n                    Cookie: Cookie\\n                }\\n            })\\n            // 仙王的日常第三季第10集，没有dash，服了\\n            if (JSON.parse(u).result.dash) {\\n                return JSON.parse(u).result.dash;\\n            }else{\\n                log('尝试走单线路画质~');\\n                return JSON.parse(u).result;\\n            }\\n        } catch (error) {\\n            log('cookie有没有可能失效了呢~');\\n            return '';\\n        }\\n    }\\n}\\n// 提交播放记录\\n$.exports.reportProcess = function (avid, cid) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let res = post(\\\"http://api.bilibili.com/x/v2/history/report\\\", {\\n        body: {\\n            \\\"aid\\\": avid,\\n            \\\"cid\\\": cid,\\n            \\\"csrf\\\": csrf,\\n            \\\"progress\\\": 0\\n        },\\n        headers: {\\n            Cookie: JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })\\n}\\n\\n// 获取评论\\n$.exports.getComments = function (id, type, page) {\\n    let u = buildUrl(\\\"http://api.bilibili.com/x/v2/reply\\\", {\\n        \\\"type\\\": type,\\n        \\\"oid\\\": id,\\n        \\\"pn\\\": page\\n    });\\n    let res = request(u, {\\n        headers: {\\n            Cookie: JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })\\n    return JSON.parse(res).data.replies\\n}\\n// 添加稍后在看——真的麻了，为什么fetch就错呢~\\n$.exports.addToview = function (aid) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"https://api.bilibili.com/x/v2/history/toview/add\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"aid\\\": aid,\\n        \\\"csrf\\\": csrf,\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 删除稍后在看\\n$.exports.delToview = function (aid) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"http://api.bilibili.com/x/v2/history/toview/del\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"aid\\\": aid,\\n        \\\"csrf\\\": csrf,\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 订阅影视(追番、追剧)\\n$.exports.subscribeFilm = function (season_id) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"https://api.bilibili.com/pgc/web/follow/add\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"season_id\\\": season_id,\\n        \\\"csrf\\\": csrf,\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).result.toast;\\n}\\n// 取消订阅\\n$.exports.cancelSubscribeFilm = function (season_id) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"https://api.bilibili.com/pgc/web/follow/del\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"season_id\\\": season_id,\\n        \\\"csrf\\\": csrf,\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).result.toast;\\n}\\n/*操作用户关系\\nfid:用户mid\\nact:操作代码\\nre_src：关注来源\\n*/\\n$.exports.addAttention = function (mid, act, re_src) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"https://api.bilibili.com/x/relation/modify\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"fid\\\": mid,\\n        \\\"act\\\": act,\\n        \\\"re_src\\\": re_src,\\n        \\\"csrf\\\": csrf\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 移动关注用户分组\\n$.exports.moveUsers = function (beforeTagids, afterTagids, fids) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let u = \\\"https://api.bilibili.com/x/relation/tags/moveUsers\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"beforeTagids\\\": beforeTagids.toString(),\\n        \\\"afterTagids\\\": afterTagids.toString(),\\n        \\\"fids\\\": fids.toString(),\\n        \\\"csrf\\\": csrf\\n    }), {\\n        headers: {\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\",\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        },\\n        method: \\\"POST\\\"\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 获取用户关系\\n$.exports.getRelation = function (mid) {\\n    return JSON.parse(request(\\\"https://api.bilibili.com/x/space/acc/relation?mid=\\\" + mid, {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })).data\\n}\\n// 查询目标用户所在的分组\\n$.exports.getUserGroup = function (mid) {\\n    return JSON.parse(request(\\\"https://api.bilibili.com/x/relation/tag/user?fid=\\\" + mid, {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })).data\\n}\\n// 获取关注分组\\n$.exports.getMyAttentionGroupList = function () {\\n    return JSON.parse(fetch(\\\"https://api.bilibili.com/x/relation/tags?jsonp=jsonp\\\", {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n            \\\"User-Agent\\\": PC_UA,\\n            \\\"Referer\\\": \\\"https://www.bilibili.com/\\\"\\n        }\\n    })).data;\\n}\\n// 是否点赞\\n$.exports.hasLike = function (aid) {\\n    return JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/web-interface/archive/has/like\\\", {\\n        \\\"aid\\\": aid\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })).data\\n}\\n// 是否收藏\\n$.exports.hasFavour = function (aid) {\\n    return JSON.parse(request(buildUrl(\\\"http://api.bilibili.com/x/v2/fav/video/favoured\\\", {\\n        \\\"aid\\\": aid\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })).data.favoured\\n}\\n// 视频点赞\\n$.exports.setLike = function (aid, dealWay) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let res = post(\\\"http://api.bilibili.com/x/web-interface/archive/like\\\", {\\n        body: {\\n            \\\"aid\\\": aid,\\n            \\\"like\\\": dealWay,\\n            \\\"csrf\\\": csrf\\n        },\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 获取收藏列表\\n$.exports.getCollectionGroupList = function () {\\n    return collections = JSON.parse(fetch(\\\"https://api.bilibili.com/x/v3/fav/folder/list4navigate\\\", {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n        }\\n    })).data;\\n}\\n// 收藏/取消视频API\\n$.exports.setFavour = function (aid, add_media_ids, del_media_ids) {\\n    let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/) === null ? JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.split('bili_jct=')[1] : JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n    let res = post(\\\"http://api.bilibili.com/medialist/gateway/coll/resource/deal\\\", {\\n        body: {\\n            \\\"rid\\\": aid,\\n            \\\"type\\\": 2,\\n            \\\"add_media_ids\\\": add_media_ids.toString(),\\n            \\\"del_media_ids\\\": del_media_ids.toString(),\\n            \\\"csrf\\\": csrf\\n        },\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n            \\\"Referer\\\": \\\"https://www.bilibili.com\\\"\\n        }\\n    })\\n    return JSON.parse(res).code;\\n}\\n// 获取视频所在收藏夹\\n$.exports.getFavourIdList = function (aid, userMid) {\\n    let u = \\\"https://api.bilibili.com/x/v3/fav/folder/created/list-all\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"type\\\": 2,\\n        \\\"rid\\\": aid,\\n        \\\"up_mid\\\": userMid,\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n            \\\"Referer\\\": \\\"https://www.bilibili.com\\\"\\n        }\\n    });\\n    favourIdList = [];\\n    JSON.parse(res).data.list.forEach((item) => {\\n        if (item.fav_state == 1) {\\n            favourIdList.push(item.id);\\n        }\\n    })\\n    return favourIdList;\\n}\\n// 热映剧集时间轴\\n$.exports.getMovies = function (type, before, after) {\\n    let u = buildUrl(\\\"http://api.bilibili.com/pgc/web/timeline\\\", {\\n        \\\"types\\\": type,\\n        \\\"before\\\": before,\\n        \\\"after\\\": after\\n    })\\n    let res = JSON.parse(request(u, {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n        }\\n    }))\\n    return res.result\\n}\\n// 获取专栏文章\\n$.exports.getUserArticle = function (upMid, page) {\\n    let u = \\\"https://api.bilibili.com/x/space/article\\\";\\n    let res = request(buildUrl(u, {\\n        \\\"mid\\\": upMid,\\n        \\\"pn\\\": page,\\n        \\\"ps\\\": 12,\\n        \\\"sort\\\": 'publish_time'\\n    }), {\\n        headers: {\\n            \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n            \\\"Referer\\\": \\\"https://www.bilibili.com\\\"\\n        }\\n    });\\n    return JSON.parse(res).data;\\n}\\n// 获取动态数据\\n$.exports.getDynamicData = function (from, upMid) {\\n    var nextInfo = {};\\n    if (MY_PAGE == 1) {\\n        if (from == 'upSpace') {\\n            var u = \\\"https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?offset=&host_mid=\\\" + upMid + \\\"&timezone_offset=-480\\\";\\n        } else {\\n            var u = \\\"https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all\\\";\\n        }\\n        latenews = JSON.parse(fetch(u, {\\n            headers: {\\n                \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie,\\n                \\\"User-Agent\\\": PC_UA,\\n                \\\"Referer\\\": \\\"https://www.bilibili.com/\\\"\\n            }\\n        })).data;\\n        nextInfo.offset = latenews.offset;\\n    } else {\\n        if (from == 'upSpace') {\\n            var u = \\\"https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?offset=\\\" + storage0.getMyVar(JSON.stringify(MY_PAGE)).offset + \\\"&host_mid=\\\" + upMid + \\\"&timezone_offset=-480\\\";\\n        } else {\\n            var u = \\\"https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/all?timezone_offset=-480&type=all&offset=\\\" + storage0.getMyVar(JSON.stringify(MY_PAGE)).offset;\\n        }\\n        latenews = JSON.parse(fetch(u, {\\n            headers: {\\n                \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n            }\\n        })).data;\\n        nextInfo.offset = latenews.offset;\\n    }\\n    storage0.putMyVar(JSON.stringify(MY_PAGE + 1), nextInfo);\\n    return latenews;\\n}\\n\\n// ——特别的行为、工具函数——\\n// 展示动态数据(返回函数方法的可执行字符串)\\n$.exports.showDynamicData = function () {\\n    return $.toString(() => {\\n        latenews.items.forEach(list => {\\n            if (list.type == 'DYNAMIC_TYPE_AV') {\\n                // 投稿视频（当前发布）√\\n                d.push({\\n                    title: list.modules.module_author.name + '\\\\t\\\\t\\\\t<small><small><font color=\\\"grey\\\">' + list.modules.module_author.pub_time + '-' + list.modules.module_author.pub_action + '</font></small></small>',\\n                    img: list.modules.module_author.face + \\\"@Referer=\\\",\\n                    url: 'hiker://page/upHome',\\n                    col_type: 'avatar',\\n                    extra: {\\n                        mid: list.modules.module_author.mid,\\n                        title: list.modules.module_author.name,\\n                        face: list.modules.module_author.face\\n                    }\\n                }, {\\n                    col_type: 'line'\\n                }, {\\n                    // 不一定有文字啊\\n                    title: (list.modules.module_dynamic.desc === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                    url: 'hiker://page/Comments?p=fypage',\\n                    // 这个不能用long_text\\n                    col_type: 'rich_text',\\n                    extra: {\\n                        id: list.basic.comment_id_str,\\n                        type: 1\\n                    }\\n                }, {\\n                    title: list.modules.module_dynamic.major.archive.title,\\n                    img: list.modules.module_dynamic.major.archive.cover + \\\"@Referer=\\\",\\n                    col_type: 'movie_1_left_pic',\\n                    url: \\\"hiker://page/video\\\",\\n                    desc: list.modules.module_dynamic.major.archive.desc,\\n                    extra: {\\n                        aid: list.modules.module_dynamic.major.archive.aid\\n                    }\\n                }, {\\n                    title: '<small><small><font color=\\\"grey\\\">留言:' + list.modules.module_stat.comment.count + '\\\\t\\\\t分享:' + list.modules.module_stat.forward.count + '\\\\t\\\\t喜欢:' + list.modules.module_stat.like.count + '</font></small></small>',\\n                    col_type: 'rich_text'\\n                }, {\\n                    col_type: 'line_blank'\\n                });\\n            } else if (list.type == 'DYNAMIC_TYPE_FORWARD') {\\n                // 引用，多出了orig指向一个(过去)已发布的视频,准确的说是引用之前的帖子不一定是视频√\\n                d.push({\\n                    title: list.modules.module_author.name + '\\\\t\\\\t\\\\t<small><small><font color=\\\"grey\\\">' + list.modules.module_author.pub_time + '</font></small></small>',\\n                    img: list.modules.module_author.face + \\\"@Referer=\\\",\\n                    url: 'hiker://page/upHome',\\n                    col_type: 'avatar',\\n                    extra: {\\n                        mid: list.modules.module_author.mid,\\n                        title: list.modules.module_author.name,\\n                        face: list.modules.module_author.face\\n                    }\\n                }, {\\n                    col_type: 'line'\\n                }, {\\n                    title: (list.modules.module_dynamic.desc === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                    url: 'hiker://page/Comments?p=fypage',\\n                    col_type: 'rich_text',\\n                    extra: {\\n                        id: list.basic.comment_id_str,\\n                        // 也是纯文字，因为只是文字+引用早已投稿的视频\\n                        type: 17\\n                    }\\n                });\\n                // 引用的内容——截断（根据不同的引用类型进行处理）\\n                d.push({\\n                    title: '<small><small>下面内容来自引用的帖子,up是:<a href=\\\"hiker://page/upHome\\\">' + list.orig.modules.module_author.name + '</a></small></small>',\\n                    col_type: \\\"rich_text\\\",\\n                    extra: {\\n                        mid: list.orig.modules.module_author.mid,\\n                        title: list.orig.modules.module_author.name,\\n                        face: list.orig.modules.module_author.face\\n                    }\\n                }, {\\n                    col_type: \\\"line\\\"\\n                });\\n                if (list.orig.type == 'DYNAMIC_TYPE_AV') {\\n                    // 引用视频说说\\n                    d.push({\\n                        title: list.orig.modules.module_dynamic.major.archive.title,\\n                        img: list.orig.modules.module_dynamic.major.archive.cover + \\\"@Referer=\\\",\\n                        col_type: 'movie_1_left_pic',\\n                        url: \\\"hiker://page/video\\\",\\n                        desc: list.orig.modules.module_dynamic.major.archive.desc,\\n                        extra: {\\n                            aid: list.orig.modules.module_dynamic.major.archive.aid\\n                        }\\n                    });\\n                } else if (list.orig.type == 'DYNAMIC_TYPE_WORD') {\\n                    // 引用文字说说\\n                    d.push({\\n                        title: (list.orig.modules.module_dynamic.desc.text === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.orig.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                        url: 'hiker://page/Comments?p=fypage',\\n                        col_type: 'rich_text',\\n                        extra: {\\n                            // 评论id来源都不一样\\n                            id: list.orig.id_str,\\n                            // 纯文字\\n                            type: 17\\n                        }\\n                    });\\n\\n                } else if (list.orig.type == 'DYNAMIC_TYPE_DRAW') {\\n                    // 引用图片说说\\n                    d.push({\\n                        title: (list.orig.modules.module_dynamic.desc.text === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.orig.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                        col_type: 'rich_text',\\n                        url: \\\"hiker://page/Comments?p=fypage\\\",\\n                        extra: {\\n                            id: list.orig.modules.module_dynamic.major.draw.id,\\n                            type: 11\\n                        }\\n                    });\\n                    list.orig.modules.module_dynamic.major.draw.items.forEach(item => {\\n                        d.push({\\n                            img: item.src + \\\"@Referer=\\\",\\n                            col_type: 'pic_3_square',\\n                            url: item.src + \\\"@Referer=\\\",\\n                        });\\n                    });\\n                } else {\\n                    log('可能还有未适配的说说类型');\\n                }\\n                // 分割\\n                d.push({\\n                    title: '<small><small><font color=\\\"grey\\\">留言:' + list.modules.module_stat.comment.count + '\\\\t\\\\t分享:' + list.modules.module_stat.forward.count + '\\\\t\\\\t喜欢:' + list.modules.module_stat.like.count + '</font></small></small>',\\n                    col_type: 'rich_text'\\n                }, {\\n                    col_type: 'line_blank'\\n                });\\n            } else if (list.type == 'DYNAMIC_TYPE_WORD') {\\n                // 纯文字\\n                d.push({\\n                    title: list.modules.module_author.name + '\\\\t\\\\t\\\\t<small><small><font color=\\\"grey\\\">' + list.modules.module_author.pub_time + '</font></small></small>',\\n                    img: list.modules.module_author.face + \\\"@Referer=\\\",\\n                    url: 'hiker://page/upHome',\\n                    col_type: 'avatar',\\n                    extra: {\\n                        mid: list.modules.module_author.mid,\\n                        title: list.modules.module_author.name,\\n                        face: list.modules.module_author.face\\n                    }\\n                }, {\\n                    col_type: 'line'\\n                }, {\\n                    title: (list.modules.module_dynamic.desc === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                    url: 'hiker://page/Comments?p=fypage',\\n                    col_type: 'rich_text',\\n                    extra: {\\n                        id: list.basic.comment_id_str,\\n                        // 纯文字\\n                        type: 17\\n                    }\\n                }, {\\n                    title: '<small><small><font color=\\\"grey\\\">留言:' + list.modules.module_stat.comment.count + '\\\\t\\\\t分享:' + list.modules.module_stat.forward.count + '\\\\t\\\\t喜欢:' + list.modules.module_stat.like.count + '</font></small></small>',\\n                    col_type: 'rich_text'\\n                }, {\\n                    col_type: 'line_blank'\\n                });\\n            } else if (list.type == 'DYNAMIC_TYPE_DRAW') {\\n                // 图片说说\\n                d.push({\\n                    title: list.modules.module_author.name + '\\\\t\\\\t\\\\t<small><small><font color=\\\"grey\\\">' + list.modules.module_author.pub_time + '</font></small></small>',\\n                    img: list.modules.module_author.face + \\\"@Referer=\\\",\\n                    url: 'hiker://page/upHome',\\n                    col_type: 'avatar',\\n                    extra: {\\n                        mid: list.modules.module_author.mid,\\n                        title: list.modules.module_author.name,\\n                        face: list.modules.module_author.face\\n                    }\\n                }, {\\n                    col_type: 'line'\\n                }, {\\n                    title: (list.modules.module_dynamic.desc === null ? '<font color=\\\"grey\\\">up太懒了，连文案都不想配...</font>' : list.modules.module_dynamic.desc.text).replace(/\\\\n/g, '<br>') + '<br><a href=\\\"hiker://page/Comments?p=fypage\\\">查看评论</a>',\\n                    url: 'hiker://page/Comments?p=fypage',\\n                    col_type: 'rich_text',\\n                    extra: {\\n                        id: list.basic.comment_id_str,\\n                        // 相簿（图片动态）\\n                        type: 11\\n                    }\\n                });\\n                list.modules.module_dynamic.major.draw.items.forEach(item => {\\n                    d.push({\\n                        img: item.src + \\\"@Referer=\\\",\\n                        col_type: 'pic_3_square',\\n                        url: item.src + \\\"@Referer=\\\",\\n                    });\\n                });\\n                d.push({\\n                    title: '<small><small><font color=\\\"grey\\\">留言:' + list.modules.module_stat.comment.count + '\\\\t\\\\t分享:' + list.modules.module_stat.forward.count + '\\\\t\\\\t喜欢:' + list.modules.module_stat.like.count + '</font></small></small>',\\n                    col_type: 'rich_text'\\n                }, {\\n                    col_type: 'line_blank'\\n                });\\n            }\\n        });\\n    })\\n}\\n// 时间转换函数\\n$.exports.timeConvert = function (time) {\\n    function formatDate(e, t) {\\n        e = new Date(e * 1000); //时间戳为10位需*1000，时间戳为13位的话不需乘1000\\n        return t.replace(/yyyy|YYYY/, e.getFullYear())\\n            .replace(/yy|YY/, r(e.getFullYear() % 100, 2))\\n            .replace(/mm|MM/, r(e.getMonth() + 1, 2))\\n            .replace(/m|M/g, e.getMonth() + 1)\\n            .replace(/dd|DD/, r(e.getDate(), 2))\\n            .replace(/d|D/g, e.getDate())\\n            .replace(/hh|HH/, r(e.getHours(), 2))\\n            .replace(/h|H/g, e.getHours())\\n            .replace(/ii|II/, r(e.getMinutes(), 2))\\n            .replace(/i|I/g, e.getMinutes())\\n            .replace(/ss|SS/, r(e.getSeconds(), 2))\\n            .replace(/s|S/g, e.getSeconds())\\n            .replace(/w/g, e.getDay())\\n            .replace(/W/g, [\\\"日\\\", \\\"一\\\", \\\"二\\\", \\\"三\\\", \\\"四\\\", \\\"五\\\", \\\"六\\\"][e.getDay()])\\n    }\\n\\n    function r(e, t) {\\n        for (var r = 0, n = t - (e + \\\"\\\").length; r < n; r++) e = \\\"0\\\" + e;\\n        return e + \\\"\\\"\\n    }\\n    return formatDate(time, 'YYYY-MM-DD hh:ii:ss');\\n    // console.log(formatDate(1664089532, 'YYYY-MM-DD hh:ii:ss'));\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"videoPage\",\"path\":\"video\",\"rule\":\"js:\\n\\nvar d = [];\\n\\n// 预处理\\n\\nputMyVar('功能折叠', '关');\\n\\nimgLink=storage0.getMyVar('图标');\\n\\naid = MY_PARAMS.aid + \\\"\\\";\\n\\nmid = MY_PARAMS.mid + \\\"\\\";\\n\\ntry {\\n\\n    //获取视频分P信息\\n\\n    var p = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/view?aid=\\\" + aid)).data;\\n\\n    hasLike=$.require(\\\"hiker://page/api\\\").hasLike(aid);\\n\\n    hasFavour=$.require(\\\"hiker://page/api\\\").hasFavour(aid);\\n\\n    if (p.pages.length == 1) {\\n\\n        cid = p.pages[0].cid;\\n\\n        d.push({\\n\\n            title: p.title,\\n\\n            img: p.pic + '@Referer=',\\n\\n            url: $().lazyRule((aid, cid, qn) => {\\n\\n                // 真离了个大谱，明明替换掉了，ua字符串又变回来了，又要处理一次\\n\\n                return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, qn).replace(/;/g, \\\"；；\\\");\\n\\n            }, aid + \\\"\\\", cid + \\\"\\\", '112'),\\n\\n            col_type: \\\"pic_1\\\"\\n\\n        });\\n\\n        d.push({\\n\\n            title: '<font color=\\\"blue\\\">' + p.owner.name + '</font>',\\n\\n            url: \\\"hiker://page/upHome\\\",\\n\\n            img: p.owner.face + \\\"@Referer=\\\",\\n\\n            col_type: \\\"avatar\\\",\\n\\n            extra: {\\n\\n                mid: p.owner.mid,\\n\\n                title: p.owner.name,\\n\\n                face: p.owner.face\\n\\n            }\\n\\n        },{\\n\\n            col_type: 'line'\\n\\n        },{\\n\\n            title: p.stat.like,\\n\\n            img: hasLike==1?imgLink.已点赞:imgLink.未点赞,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                return $.require(\\\"hiker://page/api\\\").likeLogic(aid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra:{\\n\\n                id:'setLike'\\n\\n            }\\n\\n        },{\\n\\n            title:  p.stat.favorite,\\n\\n            img: hasFavour?imgLink.已收藏:imgLink.未收藏,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                upMid=JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).userMid;\\n\\n                return $.require(\\\"hiker://page/api\\\").favourLogic(aid,upMid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra:{\\n\\n                id:'setFavour'\\n\\n            }\\n\\n        },{\\n\\n            title: '稍后再看',\\n\\n            img: imgLink.稍后再看,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                return $.require(\\\"hiker://page/api\\\").judgeToview(aid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n        }, {\\n\\n            title: '查看评论',\\n\\n            url: 'hiker://page/Comments?p=fypage',\\n\\n            img: imgLink.查看评论,\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra: {\\n\\n                \\\"id\\\": aid,\\n\\n                \\\"type\\\":1\\n\\n            }\\n\\n        },{\\n\\n            col_type: 'line_blank'\\n\\n        },{\\n\\n            title: p.desc,\\n\\n            col_type: \\\"long_text\\\",\\n\\n        });\\n\\n    } else {\\n\\n        d.push({\\n\\n            title: p.title,\\n\\n            img:p.pic + '@Referer=',\\n\\n            url: $('#noLoading##noHistory#').lazyRule((p) => {\\n\\n                return $('hiker://empty?fypage').rule((p) => {\\n\\n                    d = [];\\n\\n                    d.push({\\n\\n                        title: p.desc,\\n\\n                        col_type: \\\"long_text\\\",\\n\\n                    })\\n\\n                    setResult(d);\\n\\n                }, p)\\n\\n            }, p),\\n\\n            col_type: \\\"pic_1\\\"\\n\\n        },{\\n\\n            title: '<font color=\\\"blue\\\">' + p.owner.name + '</font>',\\n\\n            url: \\\"hiker://page/upHome\\\",\\n\\n            img: p.owner.face + \\\"@Referer=\\\",\\n\\n            col_type: \\\"avatar\\\",\\n\\n            extra: {\\n\\n                mid: p.owner.mid,\\n\\n                title: p.owner.name,\\n\\n                face: p.owner.face\\n\\n            }\\n\\n        },{\\n\\n            col_type: 'line'\\n\\n        },{\\n\\n            title: p.stat.like,\\n\\n            img: hasLike==1?imgLink.已点赞:imgLink.未点赞,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                return $.require(\\\"hiker://page/api\\\").likeLogic(aid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra:{\\n\\n                id:'setLike'\\n\\n            }\\n\\n        },{\\n\\n            title: p.stat.favorite,\\n\\n            img: hasFavour?imgLink.已收藏:imgLink.未收藏,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                upMid=JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).userMid;\\n\\n                return $.require(\\\"hiker://page/api\\\").favourLogic(aid,upMid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra:{\\n\\n                id:'setFavour'\\n\\n            }\\n\\n        },{\\n\\n            title: '稍后再看',\\n\\n            img: imgLink.稍后再看,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((aid) => {\\n\\n                return $.require(\\\"hiker://page/api\\\").judgeToview(aid)\\n\\n            }, aid),\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n        }, {\\n\\n            title: '查看评论',\\n\\n            url: 'hiker://page/Comments?p=fypage',\\n\\n            img: imgLink.查看评论,\\n\\n            col_type: \\\"icon_small_4\\\",\\n\\n            extra: {\\n\\n                \\\"id\\\": aid,\\n\\n                \\\"type\\\":1\\n\\n            }\\n\\n        })\\n\\n        d.push({\\n\\n            col_type: 'line_blank'\\n\\n        },{\\n\\n            title: '选集列表\\\\t\\\\t\\\\t<small><small>共'+p.videos+'条视频</small></small>',\\n\\n            url: \\\"hiker://empty\\\",\\n\\n            img: imgLink.列表,\\n\\n            col_type: \\\"avatar\\\",\\n\\n        },{\\n\\n            col_type: 'line'\\n\\n        });\\n\\n        p.pages.forEach(item => {\\n\\n            cid = item.cid;\\n\\n            d.push({\\n\\n                title: item.part,\\n\\n                url: $().lazyRule((aid, cid, qn) => {\\n\\n                    return $.require(\\\"hiker://page/api\\\").biliLazy(aid, cid, qn).replace(/;/g, \\\"；；\\\");\\n\\n                }, aid + \\\"\\\", cid + \\\"\\\", '112'),\\n\\n                col_type: \\\"text_1\\\"\\n\\n            })\\n\\n        })\\n\\n    }\\n\\n} catch (e) {\\n\\n    d.push({\\n\\n        title: '页面走丢了...',\\n\\n        img: 'https://i0.hdslb.com/bfs/general/f7b667011a46615732c701f4bb1d07f793f8d1df.png@Referer=',\\n\\n        url: 'hiker://empty',\\n\\n        desc: '大概率视频被封禁，或者up已跑路~',\\n\\n        col_type: \\\"pic_1\\\"\\n\\n    });\\n\\n}\\n\\nsetResult(d);\\n\\n\\n\"},{\"col_type\":\"long_text\",\"name\":\"评论\",\"path\":\"Comments\",\"rule\":\"js:\\n\\nvar d = [];\\n\\nvar id = MY_PARAMS.id;\\n\\nvar type = MY_PARAMS.type;\\n\\nlog(id);\\n\\nif (MY_PAGE == 1) {\\n\\n    // 貌似暂时只能文字+数字\\n\\n    d.unshift({\\n\\n        title: \\\"发条评论吧\\\",\\n\\n        col_type: \\\"input\\\",\\n\\n        url: $.toString((id,type) => {\\n\\n            let csrf = JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie.match(/bili_jct=(.*?);/)[1];\\n\\n            post(\\\"http://api.bilibili.com/x/v2/reply/add\\\", {\\n\\n                body: {\\n\\n                    \\\"type\\\": type,\\n\\n                    \\\"oid\\\": id,\\n\\n                    \\\"csrf\\\": csrf,\\n\\n                    \\\"message\\\": input\\n\\n                },\\n\\n                headers: {\\n\\n                    \\\"Cookie\\\": JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n\\n                }\\n\\n            })\\n\\n            refreshPage()\\n\\n        }, id,type)\\n\\n    })\\n\\n}\\n\\nlet data = $.require(\\\"hiker://page/api\\\").getComments(id,type,MY_PAGE)\\n\\ndata.forEach(item => {\\n\\n    d.push({\\n\\n        title: item.member.uname+'\\\\t\\\\t\\\\t<small><small><font color=\\\"grey\\\">'+item.reply_control.location + \\\" \\\" + item.reply_control.time_desc+'</font></small></small>',\\n\\n        img: item.member.avatar+'@Referer=',\\n\\n        url:'hiker://page/upHome',\\n\\n        col_type: \\\"avatar\\\",\\n\\n        extra: {\\n\\n            mid: item.member.mid,\\n\\n            title: item.member.uname,\\n\\n            face: item.member.avatar\\n\\n        }\\n\\n    })\\n\\n    d.push({\\n\\n        title: item.content.message,\\n\\n    })\\n\\n})\\n\\nsetResult(d);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"订阅列表\",\"path\":\"subscription\",\"rule\":\"if (getItem('订阅类型', '1') == '1') {\\n\\n    typerName = '追番';\\n\\n} else {\\n\\n    typerName = '追剧';\\n\\n}\\n\\nd.push({\\n\\n    title: '追番' == typerName ? '‘‘’’<font color=\\\"red\\\">追番</font>' : '追番',\\n\\n    url: $('#noLoading##noHistory#').lazyRule(() => {\\n\\n        setItem('订阅类型', '1')\\n\\n        refreshPage(true);\\n\\n        return \\\"hiker://empty\\\";\\n\\n    }),\\n\\n    col_type: 'scroll_button'\\n\\n},{\\n\\n    title: '追剧' == typerName ? '‘‘’’<font color=\\\"red\\\">追剧</font>' : '追剧',\\n\\n    url: $('#noLoading##noHistory#').lazyRule(() => {\\n\\n        setItem('订阅类型', '2')\\n\\n        refreshPage(true);\\n\\n        return \\\"hiker://empty\\\";\\n\\n    }),\\n\\n    col_type: 'scroll_button'\\n\\n});\\n\\nsubscriptions = JSON.parse(fetch(\\\"https://api.bilibili.com/x/space/bangumi/follow/list?type=\\\" + getItem('订阅类型', '1') + \\\"&follow_status=0&pn=\\\" + page + \\\"&ps=15&vmid=\\\" + mid, {\\n\\n    headers: {\\n\\n        \\\"Cookie\\\": cookie\\n\\n    }\\n\\n})).data;\\n\\nif (page == 1) {\\n\\n    d.push({\\n\\n        title: \\\"当前\\\" + typerName + \\\"数量:\\\" + subscriptions.total,\\n\\n        url: \\\"hiker://empty\\\",\\n\\n        col_type: \\\"text_center_1\\\"\\n\\n    })\\n\\n}\\n\\nsubscriptions.list.forEach(list => {\\n\\n    d.push({\\n\\n        title: list.title,\\n\\n        img: list.cover + \\\"@Referer=\\\",\\n\\n        url: \\\"hiker://page/filmerji#immersiveTheme#\\\",\\n\\n        desc: list.evaluate.substring(0, 12) + '‘‘’’…<font color=\\\"#1C1C1C\\\">详情</font>' + '\\\\n' + list.season_type_name + '|' + (list.areas===undefined?'':list.areas[0].name + '\\\\n') + (list.progress == '' ? '尚未观看' : list.progress) + (list.new_ep.index_show===undefined?'':'|'+(list.new_ep.index_show.match(/更新|即将/) ? '‘‘’’<font color=\\\"red\\\">' + list.new_ep.index_show + '</font>': list.new_ep.index_show)),\\n\\n        col_type: 'movie_1_vertical_pic',\\n\\n        extra: {\\n\\n            season_id: list.season_id\\n\\n        }\\n\\n    });\\n\\n});\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"关注列表\",\"path\":\"attention\",\"rule\":\"if (MY_PAGE == 1) {\\n\\n    focusGroups=$.require(\\\"hiker://page/api\\\").getMyAttentionGroupList();\\n\\n    putMyVar('tempId', JSON.stringify(focusGroups[1].tagid));\\n\\n    focusGroups.forEach(list => {\\n\\n        d.push({\\n\\n            title: list.tagid == getItem('关注分组', JSON.stringify(focusGroups[1].id)) ? \\\"““””<font color='red'>\\\" + list.name + list.count + \\\"</font>\\\" : list.name + list.count,\\n\\n            url: $('#noLoading##noHistory#').lazyRule((list) => {\\n\\n                setItem('关注分组', JSON.stringify(list.tagid));\\n\\n                refreshPage(true);\\n\\n                return \\\"toast://切换关注分组为:\\\" + list.name;\\n\\n            }, list),\\n\\n            col_type: 'scroll_button',\\n\\n        });\\n\\n    });\\n\\n    // 末尾补充悄悄关注分组\\n\\n    d.push({\\n\\n        title: '悄悄关注' == getItem('关注分组', JSON.stringify(focusGroups[0].id)) ? \\\"““””<font color='red'>悄悄关注</font>\\\" : \\\"悄悄关注\\\",\\n\\n        url: $('#noLoading##noHistory#').lazyRule(() => {\\n\\n            setItem('关注分组', \\\"悄悄关注\\\");\\n\\n            refreshPage(true);\\n\\n            return \\\"toast://切换关注分组为:\\\" + \\\"悄悄关注\\\";\\n\\n        }),\\n\\n        col_type: 'scroll_button',\\n\\n    },{\\n\\n        col_type: 'line'\\n\\n    });\\n\\n}\\n\\nif (getItem('关注分组')=='悄悄关注') {\\n\\n    groupContent = JSON.parse(fetch(\\\"https://api.bilibili.com/x/relation/whispers?pn=\\\"+page+\\\"&ps=20&jsonp=jsonp\\\", {\\n\\n        headers: {\\n\\n            \\\"Cookie\\\": cookie\\n\\n        }\\n\\n    })).data.list;\\n\\n    groupContent.forEach(list => {\\n\\n        d.push({\\n\\n            title: \\\"<big><font color='blue'>\\\" + list.uname + \\\"</font></big><small>\\\" + list.sign + \\\"</small>\\\",\\n\\n            img: list.face + \\\"@Referer=\\\",\\n\\n            col_type: 'avatar',\\n\\n            url: \\\"hiker://page/upHome\\\",\\n\\n            extra: {\\n\\n                mid: list.mid,\\n\\n                title: list.uname,\\n\\n                face: list.face\\n\\n            }\\n\\n        });\\n\\n    });\\n\\n}else{\\n\\n    groupContent = JSON.parse(fetch(\\\"https://api.bilibili.com/x/relation/tag?mid=\\\" + mid + \\\"&tagid=\\\" + getItem('关注分组', getMyVar('tempId')) + \\\"&pn=\\\" + page + \\\"&ps=20&jsonp=jsonp\\\", {\\n\\n        headers: {\\n\\n            \\\"Cookie\\\": cookie\\n\\n        }\\n\\n    })).data;\\n\\n    groupContent.forEach(list => {\\n\\n        d.push({\\n\\n            title: \\\"<big><font color='blue'>\\\" + list.uname + \\\"</font></big><small>\\\" + list.sign + \\\"</small>\\\",\\n\\n            img: list.face + \\\"@Referer=\\\",\\n\\n            col_type: 'avatar',\\n\\n            url: \\\"hiker://page/upHome\\\",\\n\\n            extra: {\\n\\n                mid: list.mid,\\n\\n                title: list.uname,\\n\\n                face: list.face\\n\\n            }\\n\\n        });\\n\\n    });\\n\\n}\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"收藏列表\",\"path\":\"colection\",\"rule\":\"if (page == 1) {\\r\\n    d.push({\\r\\n        title: '我创建的收藏夹' == getItem('收藏类型', '我创建的收藏夹') ? '‘‘’’<font color=\\\"red\\\">我创建的收藏夹</font>' : '我创建的收藏夹',\\r\\n        url: $('#noLoading##noHistory#').lazyRule(() => {\\r\\n            setItem('收藏类型', '我创建的收藏夹')\\r\\n            refreshPage(true);\\r\\n            return \\\"hiker://empty\\\";\\r\\n        }),\\r\\n        col_type: 'scroll_button'\\r\\n    }, {\\r\\n        title: '稍后在看' == getItem('收藏类型', '我创建的收藏夹') ? '‘‘’’<font color=\\\"red\\\">稍后在看</font>' : '稍后在看',\\r\\n        url: $('#noLoading##noHistory#').lazyRule(() => {\\r\\n            setItem('收藏类型', '稍后在看')\\r\\n            refreshPage(true);\\r\\n            return \\\"hiker://empty\\\";\\r\\n        }),\\r\\n        col_type: 'scroll_button'\\r\\n    });\\r\\n}\\r\\nif (getItem('收藏类型', '我创建的收藏夹') == '我创建的收藏夹') {\\r\\n    try {\\r\\n        if (page == 1) {\\r\\n            d.push({\\r\\n                // col_type: 'blank_block'\\r\\n                col_type: 'line'\\r\\n            }, );\\r\\n        }\\r\\n        collections = JSON.parse(fetch(\\\"https://api.bilibili.com/x/v3/fav/folder/list4navigate\\\", {\\r\\n            headers: {\\r\\n                \\\"Cookie\\\": cookie\\r\\n            }\\r\\n        })).data;\\r\\n        groups = collections[0].mediaListResponse.list;\\r\\n        putMyVar('tempId', JSON.stringify(groups[0].id));\\r\\n        groups.forEach(list => {\\r\\n            d.push({\\r\\n                title: list.id == getItem('收藏夹', JSON.stringify(groups[0].id)) ? \\\"““””<font color='red'>\\\" + list.title + \\\"</font>\\\" : list.title,\\r\\n                url: $('#noLoading##noHistory#').lazyRule((list) => {\\r\\n                    setItem('收藏夹', JSON.stringify(list.id));\\r\\n                    refreshPage(true);\\r\\n                    return \\\"toast://切换收藏夹为:\\\" + list.title;\\r\\n                }, list),\\r\\n                col_type: 'scroll_button',\\r\\n            });\\r\\n        });\\r\\n        d.push({\\r\\n            col_type: 'line'\\r\\n        });\\r\\n        groupContent = JSON.parse(fetch(\\\"https://api.bilibili.com/x/v3/fav/resource/list?media_id=\\\" + getItem('收藏夹', getMyVar('tempId')) + \\\"&pn=\\\" + page + \\\"&ps=20&keyword=&order=mtime&type=0&tid=0&platform=web&jsonp=jsonp\\\", {\\r\\n            headers: {\\r\\n                \\\"Cookie\\\": cookie\\r\\n            }\\r\\n        })).data.medias;\\r\\n        groupContent.forEach(list => {\\r\\n            d.push({\\r\\n                title: list.title,\\r\\n                img: list.cover + \\\"@Referer=\\\",\\r\\n                col_type: 'movie_1_left_pic',\\r\\n                url: \\\"hiker://page/video\\\",\\r\\n                desc: 'UP:' + list.upper.name + '\\\\n' + list.intro,\\r\\n                extra: {\\r\\n                    aid: list.id,\\r\\n                    mid: list.upper.mid\\r\\n                }\\r\\n            });\\r\\n        });\\r\\n    } catch (e) {\\r\\n        showLoading('兄弟，你确认你有收藏吗，快去收藏一个视频~');\\r\\n    }\\r\\n} else {\\r\\n    laterViews = JSON.parse(fetch(\\\"https://api.bilibili.com/x/v2/history/toview/web?jsonp=jsonp\\\", {\\r\\n        headers: {\\r\\n            \\\"Cookie\\\": cookie\\r\\n        }\\r\\n    })).data;\\r\\n    count = laterViews.count;\\r\\n    d.push({\\r\\n        title: \\\"共有\\\" + count + \\\"条待看视频记录\\\",\\r\\n        url: \\\"hiker://empty\\\",\\r\\n        col_type: \\\"text_center_1\\\"\\r\\n    });\\r\\n    laterViews.list.forEach(list => {\\r\\n        d.push({\\r\\n            title: list.title,\\r\\n            img: list.pic + \\\"@Referer=\\\",\\r\\n            col_type: 'movie_1_left_pic',\\r\\n            url: \\\"hiker://page/video\\\",\\r\\n            desc: 'UP:' + list.owner.name + '\\\\n' + list.desc,\\r\\n            extra: {\\r\\n                aid: list.aid,\\r\\n                mid: list.owner.mid\\r\\n            }\\r\\n        });\\r\\n    });\\r\\n}\"},{\"col_type\":\"movie_3\",\"name\":\"足迹\",\"path\":\"track\",\"rule\":\"var nextInfo = {};\\n\\nif (page == 1) {\\n\\n    histories = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/history/cursor?max=0&view_at=0&business=\\\", {\\n\\n        headers: {\\n\\n            \\\"Cookie\\\": cookie\\n\\n        }\\n\\n    })).data;\\n\\n    nextInfo.max = histories.cursor.max;\\n\\n    nextInfo.view_at = histories.cursor.view_at;\\n\\n    nextInfo.business = histories.cursor.business;\\n\\n} else {\\n\\n    histories = JSON.parse(fetch(\\\"https://api.bilibili.com/x/web-interface/history/cursor?max=\\\" + storage0.getMyVar(JSON.stringify(page)).max + \\\"&view_at=\\\" + storage0.getMyVar(JSON.stringify(page)).view_at + \\\"&business=\\\" + storage0.getMyVar(JSON.stringify(page)).business, {\\n\\n        headers: {\\n\\n            \\\"Cookie\\\": cookie\\n\\n        }\\n\\n    })).data;\\n\\n    nextInfo.max = histories.cursor.max;\\n\\n    nextInfo.view_at = histories.cursor.view_at;\\n\\n    nextInfo.business = histories.cursor.business;\\n\\n}\\n\\nstorage0.putMyVar(JSON.stringify(page + 1), nextInfo);\\n\\nhistories.list.forEach(list => {\\n\\n    viewTime=pbtime = $.require(\\\"hiker://page/api\\\").timeConvert(list.view_at);\\n\\n    if (list.history.business == 'article') {\\n\\n        // 专栏文章\\n\\n        d.push({\\n\\n            title: list.show_title==''?list.title:list.show_title,\\n\\n            img: list.covers[0] + \\\"@Referer=\\\",\\n\\n            col_type: 'movie_1_left_pic',\\n\\n            url: \\\"hiker://page/articleDetail\\\",\\n\\n            desc: (list.author_name==''?viewTime:'UP:' + list.author_name+'\\\\n' )+ viewTime,\\n\\n            extra: {\\n\\n                id: list.history.oid,\\n\\n            }\\n\\n        });\\n\\n    } else if(list.history.business == 'article-list'){\\n\\n        // 文章列表？（反正id存放位置不一样）\\n\\n        d.push({\\n\\n            title: list.show_title==''?list.title:list.show_title,\\n\\n            img: list.covers[0] + \\\"@Referer=\\\",\\n\\n            col_type: 'movie_1_left_pic',\\n\\n            url: \\\"hiker://page/articleDetail\\\",\\n\\n            desc: (list.author_name==''?viewTime:'UP:' + list.author_name+'\\\\n' )+ viewTime,\\n\\n            extra: {\\n\\n                id: list.history.cid,\\n\\n            }\\n\\n        });\\n\\n    }else if(list.history.business == 'pgc'){\\n\\n        // 系列剧集（单集）\\n\\n        d.push({\\n\\n            title: list.show_title==''?list.title:list.show_title,\\n\\n            img: list.cover + \\\"@Referer=\\\",\\n\\n            col_type: 'movie_1_left_pic',\\n\\n            url: \\\"hiker://page/filmerji#immersiveTheme#\\\",\\n\\n            desc: (list.author_name==''?list.tag_name+'\\\\t\\\\t'+list.new_desc+'\\\\n'+viewTime:'UP:' + list.author_name+'\\\\n'+viewTime),\\n\\n            extra: {\\n\\n                ep_id:list.history.epid\\n\\n            }\\n\\n        });\\n\\n    }else {\\n\\n        // 普通video\\n\\n        d.push({\\n\\n            title: list.show_title==''?list.title:list.show_title,\\n\\n            img: list.cover + \\\"@Referer=\\\",\\n\\n            col_type: 'movie_1_left_pic',\\n\\n            url: \\\"hiker://page/video\\\",\\n\\n            desc: (list.author_name==''?list.tag_name+'\\\\t\\\\t'+list.new_desc+'\\\\n'+viewTime:'UP:' + list.author_name+'\\\\n'+viewTime),\\n\\n            extra: {\\n\\n                aid: list.history.oid,\\n\\n            }\\n\\n        });\\n\\n    }\\n\\n});\\n\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"动态\",\"path\":\"latetNews\",\"rule\":\"d.push({\\n\\n    col_type: 'line_blank'\\n\\n});\\n\\nlatenews=$.require(\\\"hiker://page/api\\\").getDynamicData('myHome');\\n\\neval($.require(\\\"hiker://page/api\\\").showDynamicData());\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"专栏列表\",\"path\":\"acticleList\",\"rule\":\"js:\\n\\nvar d=[];\\n\\npage=MY_PAGE;\\n\\nupMid = MY_PARAMS.mid + \\\"\\\";\\n\\narticleList=$.require(\\\"hiker://page/api\\\").getUserArticle(upMid,page);\\n\\narticleNum=articleList.count;\\n\\nif (articleNum==undefined) {\\n\\n    d.push({\\n\\n        title: '这up没有专栏文章',\\n\\n        url: \\\"hiker://empty\\\",\\n\\n        col_type: \\\"text_center_1\\\",\\n\\n    });\\n\\n}else{\\n\\n    maxPage = Math.ceil(articleNum / articleList.ps);\\n\\n    if (page <= maxPage) {\\n\\n        d.push({\\n\\n            title: '当前:第' + articleList.pn + '页\\\\t\\\\t\\\\t共有' + maxPage + '页,' + articleNum + '条数据',\\n\\n            url: \\\"hiker://empty\\\",\\n\\n            col_type: \\\"text_center_1\\\",\\n\\n        });\\n\\n        articleList.articles.forEach(list => {\\n\\n            pbtime=$.require(\\\"hiker://page/api\\\").timeConvert(list.publish_time);\\n\\n            d.push({\\n\\n                title: list.title,\\n\\n                img: list.banner_url==''? (list.image_urls+ '@Referer='):(list.banner_url+ '@Referer='),\\n\\n                desc: '‘‘’’<small>'+list.stats.view+'看过\\\\t\\\\t'+list.stats.like+'喜欢\\\\t\\\\t'+list.stats.favorite+'收藏\\\\n' + pbtime+'</small>',\\n\\n                col_type: 'movie_1_left_pic',\\n\\n                url: \\\"hiker://page/articleDetail\\\",\\n\\n                extra: {\\n\\n                    // 专栏文章id\\n\\n                    id: list.id\\n\\n                }\\n\\n            });\\n\\n        });\\n\\n    }\\n\\n}\\n\\nsetResult(d);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"专栏文章X5\",\"path\":\"articleDetail\",\"rule\":\"js:\\n\\nvar d = [];\\n\\npage = MY_PAGE;\\n\\ncvid = MY_PARAMS.id + \\\"\\\";\\n\\nd.push({\\n\\n    url: \\\"https://www.bilibili.com/read/cv\\\"+cvid,\\n\\n    col_type: \\\"x5_webview_single\\\",\\n\\n    desc: \\\"100%&&float\\\",\\n\\n    extra: {\\n\\n        canBack: true\\n\\n    }\\n\\n})\\n\\nsetResult(d);\\n\\n\"},{\"col_type\":\"movie_3\",\"name\":\"综合热门\",\"path\":\"hotVideo\",\"rule\":\"let res = JSON.parse(request(\\\"https://api.bilibili.com/x/web-interface/popular?pn=\\\" + MY_PAGE, {\\n\\n    headers: {\\n\\n        Cookie: JSON.parse(request(\\\"hiker://files/rules/cy/bili.txt\\\")).cookie\\n\\n    }\\n\\n})).data\\n\\nres.list.forEach(item => {\\n\\n    d.push({\\n\\n        title: item.title,\\n\\n        img: item.pic+ \\\"@Referer=\\\",\\n\\n        url: \\\"hiker://page/video\\\",\\n\\n        desc: item.pub_location,\\n\\n        col_type: \\\"movie_2\\\",\\n\\n        extra: {\\n\\n            \\\"aid\\\": item.aid,\\n\\n            \\\"cid\\\": item.cid,\\n\\n        }\\n\\n    })\\n\\n})\\n\\n\\n\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/movie/20.svg"},{"last_chapter_rule":"","title":"苦瓜影视","author":"狗浩啊","version":0,"type":"video","url":"https://www.kgysw.com/vodshow/fyAll--------fypage---fyyear.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫&纪录片&b站资源","class_url":"1&2&3&4&20&21","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".hl-vod-list&&li;.hl-item-title&&Text;.hl-lazy&&data-original;.remarks&&Text;a&&href","searchFind":"body&&.hl-item-div;.hl-item-title&&Text;a&&href;.hl-text-conch&&Text;;.hl-item-thumb&&data-original","search_url":"https://www.kgysw.com/vodsearch/**----------fypage---.html","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.模板);\nlet parse = {\n    title: '.hl-dc-title&&Text',\n    img: '.hl-lazy&&data-original',\n    url: '.hl-lazy&&src',\n    desc: '.hl-col-xs-12,2&&Text;.hl-col-xs-12,3&&Text;.hl-col-xs-12,4&&Text;.hl-col-xs-12,5&&Text;.hl-col-xs-12,6&&Text',\n    content: '.hl-content-text&&Text',\n    tabs: 'body&&.hl-tabs-btn',\n    //tab_text:'h2&&Text',\n    lists: 'body&&.hl-plays-list,#id&&li',\n    tab_id: '',\n};\n\nvar 动态最新章节 = true;\nvar 倒序 = false;\n二级(parse);\n","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"喵影汇Q","author":"狗浩啊","version":0,"type":"video","url":"https://www.miaoyinghui.com/vodshow/fyclass--------fypage---.html","col_type":"movie_3","class_name":"电影&电视剧&综艺&动漫","class_url":"1&2&3&4","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","searchFind":"js:\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","search_url":"https://www.miaoyinghui.com/vodsearch/**----------fypage---.html","titleColor":"","group":"视频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar lazy = $('').lazyRule(() => {\n    var html = JSON.parse(request(input).match(/r player_.*?=(.*?)</)[1])\n    var url = html.url\n    if (html.encrypt == '1') {\n        url = unescape(url);\n    } else if (html.encrypt == '2') {\n        url = unescape(base64Decode(url));\n    }\n    if (/m3u8|mp4/.test(url)) {\n        return url\n    } else {\n        requireCache('https://code.aliyun.com/lzk23559/PublicRule/raw/master/x5rule.js', 24);\n        return x5rule(input, input);\n    }\n})\n\nconst {\n    autoPage\n} = $.require(\"hiker://page/auto?rule=模板·Q\");\nautoPage(getResCode())","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"firstHeader":"class","last_chapter_rule":"","title":"葬花阁综合论坛✈️","author":"道长","version":1,"type":"video","url":"hiker://empty##http://zanghuage.cc/forum.php?mod=guide&view=hot&mobile=2","col_type":"movie_3_marquee","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"影视","year_url":"","find_rule":"js:\nrequire(config.模板);\n依赖检测();\n一级书签('detail','true');\n//一级书签('detail',true);","searchFind":"js:\nrequire(config.自动匹配);\n自动搜索('');","search_url":"hiker://empty##","group":"论坛合集","detail_col_type":"movie_1","detail_find_rule":"js:\nrequire(config.自动匹配);\n//香免();\n//自动二级(lazy);\n自动二级();","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"var ua='';\nrequire('https://gitcode.net/qq_32394351/dr/-/raw/master/js/预处理.js');","pages":"[]","proxy":"","icon":"http://1.117.152.239:39000/tupian.php?text=葬花阁综合论坛"},{"last_chapter_rule":"","title":"聚BT","author":"永远の明日","version":11,"type":"news","url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet datas = JSON.parse(getVar('juBT-datas')), url = datas.pop(), selected = getVar('juBT-selected', '0'), data = []\ndatas.forEach((v, i) => data.push({\n  title: (i == selected ? '““””<span style=\"color:#12b668\"><b>' : '') + v.title,\n  url: i == selected ? 'hiker://empty' : $('#noLoading#').lazyRule((i) => {\n    putVar('juBT-selected', i)\n    refreshPage(true)\n    return 'hiker://empty'\n  }, i),\n  col_type: 'scroll_button',\n}))\ndata.push({ title: datas[selected].title + ' 🔗', url: url + '#' + datas[selected].url, col_type: 'text_center_1' })\nArray.prototype.push.apply(data, datas[selected].children)\nsetResult(data)","searchFind":"js:\nconst key = MY_URL.slice(15)\nlet datas = JSON.parse(getVar('juBT-datas')), data = []\ndatas.slice(0, -1).forEach((v) => {\n  Array.prototype.push.apply(data, v.children\n    .filter((vv) => vv.title.indexOf(key) >= 0)\n    .map((vv) => ({ title: vv.title, url: vv.url, desc: v.title }))\n  )\n})\nsetResult(data)","search_url":"hiker://empty##**","titleColor":"#f20c00","group":"资讯","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"// 聚BT论坛 https://bbs.jubt.live/\n// https://1jubt.top/\n// https://1jubt.xyz/\n// https://jubt.gitlab.io/home/\n\nif (!getVar('juBT-datas')) {\n  // 在这里的fetch中更换发布页的网址，目前测试了上面3个都能用，修改后需要先重启海阔视界\n  let url = 'https://1jubt.top/',\n    urls = parseDomForArray(fetch(url, {}), 'tbody&&tr')\n  for (let i of urls)\n    if (parseDomForHtml(i, 'Text').split(' ')[2] == 'No') {\n      url = parseDomForHtml(i, 'a&&href') + '/cn/index.html'\n      break\n    }\n  let datas = fetch(url, {})\n    .match(/<h4(?:(?!h4).)*h4><div(?:(?!h4).)*div>/g)\n    .slice(1).map((v) => ({\n      title: parseDomForHtml(v, 'h4&&Text'),\n      url: parseDomForHtml(v, 'h4&&i&&id'),\n      children: parseDomForArray('<body>' + v + '</body>', 'body&&.row>div').map((v) => ({ title: parseDomForHtml(v, 'a,1&&Text'), url: parseDomForHtml(v, 'div,1&&data-original-title') })),\n    })).concat(url)\n  putVar('juBT-datas', JSON.stringify(datas))\n}\n","pages":"[]","proxy":"","icon":"#f20c00"},{"firstHeader":"class","title":"新浪图集","author":"","version":0,"url":"http://api.slide.news.sina.com.cn/interface/api_album_all.php?ch=9&page=fypage&num=16","col_type":"movie_1","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:var res={};var d=[];\n\neval(\"json=\"+getResCode());\n\nfor (var i = 0; i <json.data.length; i ++) {\n\nvar j=json.data[i];\n\nvar title=j.name;\n\npic=j.img_url;\n\ndesc=j.createtime;\n\nurl=j.url;\n\nif(url.indexOf(\"slide.fashion\")==-1)\nd.push({title:title,pic_url:pic,desc:desc ,url:url+`@lazyRule=.js:var html=fetch(input,{}).match(/var slide_data = (.*?}})/)[1];eval(\"json=\"+html);var str=\"\";for (var i = 1; i <json.images.length; i ++) {var intro=\"<p>\"+json.images[i].intro+\"</p>\";img=\"<img src=https:\"+json.images[i].image_url+\">\";str=img+\"</br></br>\"+str};var  title='<script>fy_bridge_app.setWebTitle(\"图集故事\")</script>';\"javascript:document.write(\\'<meta name=viewport content=width=device-width, initial-scale=1.0><style type=text/css>body{background:#f4f4f4;color:#272a30;font-size:17px;font-family:Microsoft Yahei}</style><style type=text/css>.contentt img{width: 98% !important;height:auto}</style><style type=text/css>.contentt p{text-indent:1.4em}</style><article class=contentt>\"+(title+intro+str).replace(/\\'/g, \"\")+\"</article>\\')\"`\n});\n}\nres.data=d;setHomeResult(res);","searchFind":"","search_url":"","titleColor":"#ff673ab7","group":"资讯","detail_col_type":"pic_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto"},{"last_chapter_rule":"","title":"秋葵","author":"","version":0,"type":"other","url":"http://fyclass/api/videosort/","col_type":"icon_round_small_4","class_name":"秋葵&榴莲","class_url":"api.klpqk.com&liulianshipin100.com","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js: var json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont;\nvar items = list.map(data => ({\n    title: data.name,\n    url: MY_URL+data.id+'?orderby=new&page=fypage',\n    //desc: data.tagName,\n    pic_url: data.icopath\n}));\nres.data = items;\nsetHomeResult(res);","searchFind":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar lazy = `@lazyRule=Text.js:var u= JSON.parse(input).rescont.videopath;; if(u.search(\"yuanqiplay\")!=-1){ \"http://liulianshipin100.com/api/index.m3u8?m3u8=\"+u; }else{ u; }`;\nvar items = list.map(data => ({\n    title: data.title,\n    url:MY_URL.split('api/')[0]+'api/videoplay/'+data.id +'?uuid=a2c3d1d461980d00' + lazy,\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","search_url":"http:/liulianshipin100.com/api/videosort/0?serach=**&page=fypage","group":"车库","detail_col_type":"movie_2","detail_find_rule":"js:\nvar json = JSON.parse(getResCode());\nvar res = {};\nvar list = json.rescont.data;\nvar lazy = `@lazyRule=Text.js:var u= JSON.parse(input).rescont.videopath;; if(u.search(\"yuanqiplay\")!=-1){ \"http://liulianshipin100.com/api/index.m3u8?m3u8=\"+u; }else{ u; }`;\n\nvar items = list.map(data => ({\n    title: data.title,\n    url: MY_HOME + '/api/videoplay/' + data.id + '?uuid=a2c3d1d461980d00' +lazy,\n    desc: data.authername,\n    pic_url: data.coverpath\n}));\nres.data = items;\nsetHomeResult(res);","sdetail_col_type":"text_2","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"聚轻","author":"网友制作收集","version":107,"type":"all","url":"hiker://empty","col_type":"icon_round_small_4","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', '@'),\n    types = { 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '这是轻合集的搜索哦~~',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n                if (typeShow[0] == '@') {\n                    let filterKey = typeShow.slice(1)\n                    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n                } else rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE),\n    rulesType = rules.reduce((obj, v) => {\n        let type = v.type\n        if (type) {\n            if (!Array.isArray(obj[type]))\n                obj[type] = []\n            obj[type].push(v)\n        }\n        return obj\n    }, {})\nif (typeShow[0] == '@') {\n    let filterKey = typeShow.slice(1)\n    if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n}\nel.push(typeShow[0] == '@' ? {\n    title: '““””' + ('全部' + (typeShow[1] ? '[' + typeShow.slice(1) + ']' : '')).bold().fontcolor('#12b668') + ' ' + (rules.length).toString().small(),\n    url: $(typeShow.slice(5), '查找小程序关键词').input(() => {\n        putMyVar('typeShow', '@' + input)\n        refreshPage(false)\n        return 'hiker://empty'\n    }),\n    col_type: 'scroll_button'\n} : {\n    title: '““””全部 ' + (rules.length).toString().small(),\n    url: $('#noLoading#').lazyRule(() => {\n        putMyVar('typeShow', '@')\n        refreshPage(false)\n        return 'toast://再次点击【全部】可查找小程序'\n    }),\n    col_type: 'scroll_button'\n})\nfor (let k in types)\n    if (k in rulesType)\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]) + ' ' + (rulesType[k].length).toString().small(),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\nif (typeShow[0] != '@') rules = rulesType[typeShow]\nlet { paramHandle } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {})\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/^https?:\\/\\/[^/?#]+/i.exec(ruleTmp.url) || ['hiker://empty'])[0],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + fypage +\n                    '.js:let { runCode, indexUrl } = $.require(\"hiker://page/funcTools？？rule=' + QING_TITLE + '\", '\n                     + JSON.stringify({\n                        MY_RULE: base64Encode(JSON.stringify(ruleTmp)),\n                        QING_TITLE: QING_TITLE\n                    }) + ')；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: base64Encode(JSON.stringify({ title: v.title })),\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '@')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\n            if (typeShow[0] == '@') {\n                let filterKey = typeShow.slice(1)\n                if (filterKey) rules = rules.filter((v) => v.title.includes(filterKey))\n            } else rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"轻聚合","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://shuyuan.miaogongzi.net/shuyuan/1673067628.json')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"var {\\n    QING_TITLE, title, url,\\n    class_name, class_url,\\n    area_name, area_url,\\n    year_name, year_url,\\n    sort_name, sort_url\\n} = $.importParam\\nconst ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('$fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('$fold_' + sign, folded ? '' : 'T')\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nlet fyAll = url.includes('fyAll'),\\n    tabHeader = []\\nif (class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: class_name,\\n    class_url: class_url\\n})\\nif (area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: area_name,\\n    class_url: area_url\\n})\\nif (year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: year_name,\\n    class_url: year_url\\n})\\nif (sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: sort_name,\\n    class_url: sort_url\\n})\\n$.exports = {\\n    fyAll: fyAll,\\n    tabHeader: new ClassTab(tabHeader, { name: title, fold: readFile('tabFold'), })\\n}\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection'),\\n    url = getMyVar('remoteUrl')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE, true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule((url) => {\\n            if (url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }, url),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = disableCustom ? '导入海阔' : getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        input = parseInt(input)\\n        if (Number.isNaN(input)) input = 1\\n        else if (input < 1) input = 0\\n        saveFile('updateInterval', input.toString())\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : 'T')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if (url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if (rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据', '编辑JSON'], 1).select(() => {\\n        switch (input.slice(0, 2)) {\\n            case '清除':\\n                deleteFile('customData')\\n                break\\n            case '启用':\\n                saveFile('disableCustom', '')\\n                break\\n            case '禁用':\\n                saveFile('disableCustom', 'T')\\n                input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n                break\\n            case '编辑':\\n                let url = getMyVar('remoteUrl')\\n                if (!url.startsWith('hiker://files/') && !url.startsWith('file://'))\\n                    url = 'hiker://files/libs/' + md5(url) + '.js'\\n                return  'hiker://page/interface#noRefresh##noHistory##noRecordHistory#?rule=JSON编辑器&Json='+base64Encode(url)\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? ['导入海阔'] : ['启用/禁用', '重新排序', '更改图标', '导入海阔']).forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n});\\nif (editMode == '导入海阔') el.push({\\n    title: '全部导入',\\n    url: '海阔视界￥home_rule_url￥' + (url.startsWith('hiker://') || url.startsWith('file://') ? url : 'hiker://files/libs/' + md5(url) + '.js'),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n(disableCustom ? data : JSON.parse(readFile('customData') || '[]')).forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let data = $.require('hiker://page/dataLoad?rule=' + getMyVar('myCollection'), true)\\n                return 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            }, i)\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nvar myColl_el = []\\neval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(oriRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n} else if (MY_PAGE == 1) {\\n    tabHeader.load(myColl_el)\\n    if (RULE.search_url) myColl_el.push({\\n        title: \\\"搜索\\\",\\n        desc: \\\"这是轻合集的搜索哦~~\\\",\\n        url: '\\\"hiker://search?s=\\\"+input',\\n        extra: {\\n            rules: $.toString((QING_TITLE, title) => {\\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)\\n                rules = [rules.find((v) => v.title == title)]\\n                return JSON.stringify(rules)\\n            }, QING_TITLE, RULE.title),\\n            defaultValue: getMyVar('searchKey', ''),\\n            onChange: \\\"putMyVar('searchKey',input)\\\"\\n        },\\n        col_type: \\\"input\\\",\\n    })\\n}\\n// 正文解析\\nvar {\\n    paramHandle,\\n    runPreRule,\\n    genExUrl,\\n    hijackLazyRule\\n} = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\nrunPreRule(oriRULE.preRule)\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    let { hijackEl } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n    setResult = function(param0, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(param0.data)) param0 = param0.data\\n        Array.prototype.push.apply(myColl_el, param0.map(hijackEl))\\n        method_setResult.invoke(javaContext, myColl_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let { runCode } = $.require('hiker://page/funcTools?rule=' + QING_TITLE),\\n        [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + res.url.slice(reIndex + 4)\\n            } else  if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(Object.assign(genMyRule(), { detail_find_rule: detailFindRule }))),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: base64Encode(JSON.stringify(genMyRule())),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myColl_el.push(res)\\n    })\\n    setResult(myColl_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"let showAll = $.importParam,\\n    url = getMyVar('remoteUrl'),\\n    data = []\\nif (url.startsWith('hiker://') || url.startsWith('file://')) {\\n    // 如果为本地文件则不进行缓存\\n    try {\\n        let oriData = fetch(url)\\n        if (url.startsWith('hiker://page/'))\\n            oriData = JSON.parse(oriData).rule\\n        data = JSON.parse(oriData)\\n    } catch (e) {}\\n} else {\\n    // 获取远程数据，检查间隔默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n        remoteData = []\\n    if (interval == 0) interval = -1\\n    try { remoteData = JSON.parse(fetchCache(url, 24 * interval, { timeout: 50000 })) } catch (e) {}\\n    if (!Array.isArray(remoteData)) remoteData = []\\n    if (remoteData.length < 3) {\\n        log('未获取到数据')\\n        if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n        data = JSON.parse(oldData || '[]')\\n    } else {\\n        log('已获取到数据')\\n        data = remoteData\\n    }\\n}\\ndata = data.filter((v) => v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器'))\\nif (readFile('disableCustom')) $.exports = data\\nelse { // 写入自定义数据\\n    let customData = JSON.parse(readFile('customData') || '[]'),\\n        rewriteData = []\\n    customData = customData.reduce((self, v) => {\\n        let index = data.findIndex((vv) => v.title == vv.title)\\n        if (index >= 0) {\\n            self.push(v)\\n            let rule = data.splice(index, 1)[0]\\n            if (showAll || v.visible)\\n                rewriteData.push(Object.assign(rule, v))\\n        }\\n        return self\\n    }, [])\\n    data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n    saveFile('customData', JSON.stringify(customData))\\n    $.exports = rewriteData.concat(data)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"环境劫持\",\"path\":\"hijackEnv\",\"rule\":\"var { RULE, isIndex, pageTitle } = MY_PARAMS\\nRULE = JSON.parse(base64Decode(RULE))\\nvar oriRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE).find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = oriRULE\\n    var { tabHeader, fyAll } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, RULE))\\n    // 处理MY_RULE\\n    MY_RULE.class_url = tabHeader.getClass(fyAll ? 'fyAll' : 'fyclass').url\\n    MY_RULE.area_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyarea').url\\n    MY_RULE.year_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fyyear').url\\n    MY_RULE.sort_url = fyAll ? MY_RULE.class_url : tabHeader.getClass('fysort').url\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    RULE.pages = oriRULE.pages\\n    // 处理MY_RULE\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\nMY_RULE.ua = RULE.ua\\nlog(MY_RULE.url)\\n// 载入函数工具\\nvar { genMyRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE, {\\n    QING_TITLE: QING_TITLE,\\n    MY_RULE: MY_RULE,\\n    isIndex: isIndex\\n})\\n// 防止require多次运行\\nconst myColl_required = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param2 = param2 != null ? param2 : 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (myColl_required[param0]) return\\n    myColl_required[param0] = true\\n    param3 = param3 != null ? param3 : 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n// 最新章节规则环境劫持\\nsetLastChapterRule = function(param0) {\\n    if (param0.startsWith(\\\"js:\\\")) {\\n        param0 = 'js:' + $.toString((QING_TITLE, MY_PARAMS) => {\\n            eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n            var { runPreRule } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n            runPreRule(oriRULE.preRule)\\n        }, QING_TITLE, { url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex }) + ';' + param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0)\\n}\\n// 动态新增函数劫持\\naddItemAfter = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemAfter.invoke(javaContext, param0, param1)\\n}\\naddItemBefore = function(param0, param1) {\\n    if (Array.isArray(param1)) param1 = param1.map(hijackEl)\\n    else param1 = hijackEl(param1)\\n    method_addItemBefore.invoke(javaContext, param0, param1)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数工具\",\"path\":\"funcTools\",\"rule\":\"let { QING_TITLE, MY_RULE, isIndex } = $.importParam\\nif (!MY_RULE) MY_RULE = {}\\n\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\n// 首页链接替换分类\\nfunction indexUrl(param) {\\n    MY_RULE = JSON.parse(base64Decode(MY_RULE))\\n    let pageNum = parseInt(param.split('###')[1]),\\n        url = MY_RULE.url,\\n        { fyAll, tabHeader } = $.require('hiker://page/ClassTab?rule=' + QING_TITLE, Object.assign({ QING_TITLE: QING_TITLE }, MY_RULE))\\n\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, paramTmp\\n    try { // 链接的编码、UA和Referer应该是首先继承首页链接\\n        [, , charset, paramTmp] = urlTmp.split(';')\\n        paramTmp = paramTmp.match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { paramTmp = [] }\\n    let UserAgent = paramTmp.find((v) => v.startsWith('User-Agent@')),\\n        Referer = paramTmp.find((v) => v.startsWith('Referer@'))\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA和上级Referer\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    if (Referer && !urlParam[2].some((v) => v.startsWith('Referer@')))\\n        urlParam[2].push(Referer)\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n// 预处理并初始化config\\nfunction runPreRule(rule) {\\n    if ((typeof MY_PAGE != 'undefined' &&  MY_PAGE == 1) &&\\n         (isIndex || !getMyVar('$preRule_' + MY_RULE.title))) {\\n        eval(rule)\\n        putMyVar('$preRule_' + MY_RULE.title, 'T')\\n    }\\n    let _cfg = getMyVar('initConfig', '{}')\\n    if (_cfg && _cfg.length > 0) {\\n        config = JSON.parse(_cfg)\\n    }\\n}\\n// 正文解析通用变量\\nfunction genMyRule() {\\n    let RULE = Object.assign({}, MY_RULE)\\n    delete RULE.last_chapter_rule\\n    delete RULE.preRule\\n    delete RULE.pageList\\n    delete RULE.pages\\n    return RULE\\n}\\n\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url)\\n}\\n\\nhijackLazyRule = $.toString((QING_TITLE, MY_PARAMS) => {\\n    if (!MY_RULE) MY_RULE = {}\\n    MY_PARAMS = JSON.parse(base64Decode(MY_PARAMS))\\n    eval(JSON.parse(fetch('hiker://page/hijackEnv?rule=' + QING_TITLE)).rule)\\n    var {\\n        paramHandle,\\n        genExUrl,\\n        hijackLazyRule,\\n        hijackEl\\n    } = $.require('hiker://page/funcTools?rule=' + QING_TITLE)\\n}, QING_TITLE, base64Encode(JSON.stringify({ url: MY_RULE.url, RULE: base64Encode(JSON.stringify(genMyRule())), isIndex: isIndex })))\\n\\nfunction hijackEl(el) {\\n    if(!el || typeof el != 'object') return\\n    if (!el.extra) el.extra = {}\\n    el.col_type = el.col_type || MY_RULE.col_type\\n    let NOW_RULE = Object.assign(genMyRule(), { params: el.extra })\\n\\n    if (typeof el.url != 'string' ||\\n        ['x5_webview_single', 'input'].some((v) => el.col_type == v) ||\\n        ['海阔视界', 'javascript:'].some((v) => el.url.startsWith(v)) ||\\n        ['rule', 'pics', 'toast', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'x5Rule', 'webRule',\\n            'download', 'share', 'fileSelect', 'video'].some((v) => el.url.startsWith(v + '://'))) {\\n        return el\\n    } else if (el.url.startsWith('input://')) {\\n        let para = JSON.parse(el.url.slice(8))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'input://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.startsWith('confirm://')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (el.url.startsWith('select://')) {\\n        let para = JSON.parse(el.url.slice(9))\\n        if (para.js) para.js = hijackLazyRule + ';' + para.js\\n        el.url = 'select://' + JSON.stringify(para)\\n        return el\\n    } else if (el.url.includes('@rule=')) {\\n        let [_, url, rule] = el.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n        el.url = url\\n        NOW_RULE.detail_find_rule = rule\\n        NOW_RULE.detail_col_type = MY_RULE.col_type\\n    } else if (el.url.startsWith('hiker://page/')) {\\n        if (el.url.includes('rule=') || el.extra.rule)\\n            return el\\n        let [_, path, flag, params] = el.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n            subPage = MY_RULE.pageList.find((v) => v.path == path),\\n            subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n        el.url = (subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (el.extra || {}).url) || 'hiker://empty' + flag + '?' + (params || '')\\n        NOW_RULE.detail_find_rule = subPage.rule\\n        NOW_RULE.detail_col_type = subPage.col_type\\n    } else if (el.url.includes('@lazyRule=')) {\\n        let reIndex = el.url.indexOf('.js:')\\n        if (reIndex >= 0) el.url = el.url.slice(0, reIndex) + '.js:' + hijackLazyRule + ';' + el.url.slice(reIndex + 4)\\n        return el\\n    } else if (isIndex) {\\n        if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(el.url)) return el\\n    } else {\\n        return el\\n    }\\n    el.extra = Object.assign({}, el.extra, {\\n        url: genExUrl(el.url),\\n        RULE: base64Encode(JSON.stringify(NOW_RULE)),\\n        pageTitle: isIndex && el.title\\n    })\\n    el.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n    return el\\n}\\n$.exports = {\\n    runCode: runCode,\\n    indexUrl: indexUrl,\\n    paramHandle: paramHandle,\\n    runPreRule: runPreRule,\\n    genMyRule: genMyRule,\\n    genExUrl: genExUrl,\\n    hijackLazyRule: hijackLazyRule,\\n    hijackEl: hijackEl\\n}\\n\"}]","proxy":"","icon":"https://z3.ax1x.com/2021/11/16/IWJhxf.png"},{"last_chapter_rule":"","title":"色AV.dz","author":"道长","version":2,"type":"other","url":"hiker://empty#fyAll#fypage","col_type":"movie_3","class_name":"国产&萝 莉&一线天&粉鲍&处 女&少女枪械师&嫩  穴&韩国女主 播&浆果儿&00后&网 红&蜜桃臀&紧身裤&凹凸&皮裤&蕾 丝&小皮鞭&雨季&龙哥&樱子&法拉女神&完具&私人玩物&隔壁小姐&微博&丝 袜&护 士&空 姐&外围&嫖&人 妻&少 妇&大 奶&无 套&美 \n腿&尤 物&高跟&御姐&金发&偷 情&萌白酱&小可爱&直 播&TS&人妖&小鸟酱&高颜值&极品&VIP&伪娘&赛高&夏总&厕&恋 足&FC2&CWP&秋元&自购&吐血&粉&我是你可爱的小猫&男奴&饮 尿&喷 水&舔 逼&母女&拳 交&借贷宝&白虎&馒头&自 慰&撸 管&特写&福 利姬& 工口小妖精&足 控&调教&剧情&恋足&喷 尿&黑人&肛 交&口 交&女 同&粉木耳&少女&内衣&ASMR&后入&内 射&制 服&涂鸦&尿 尿&偷看&黑白&古装&暴力&洗 澡&母 乳&家庭&男 同&坦克&91大神&口 活&抄底&双性&车震&双 飞&近亲&群 交&国模&舞蹈&三上悠亚&饭岛爱&小泽玛利亚&樱井莉亚&天海翼&北条麻妃&JAVHD&越南&探花&360&萌&内窥&主题&情侣&大 学&酒 店&宾 馆&二次元&混血&KIKI&嫩模&瞳孔&狐仙&瑶瑶&不见星空&新人试镜&蝴蝶&虎牙&大一&迷妹&恩熙&宿舍&瑜伽&按 摩&你好迷人&晓可耐&选妃&草莓&甜心&炮机&跳 蛋&屁 眼&大秀&户外&微胖&白富美&白领&醉酒&推荐&KTV&土豪&奶猫& 掰穴&姐妹&母女&紧&高端&短发&重磅&一字马&健身&星选&跑车&校 花&大长腿&寻花&侦探&双胞胎&翘 臀&COS&咬一口小奈樱&小胖丁&PR社&押尾猫&Tumblr&白袜袜格罗丫&Korean&carib&twitter&人 妻&少 妇&大 奶&无 套","class_url":"国产&萝 莉&一线天&粉鲍&处 女&少女枪械师&嫩  穴&韩国女主 播&浆果儿&00后&网 红&蜜桃臀&紧身裤&凹凸&皮裤&蕾 丝&小皮鞭&雨季&龙哥&樱子&法拉女神&完具&私人玩物&隔壁小姐&微博&丝 袜&护 士&空 姐&外围&嫖&人 妻&少 妇&大 奶&无 套&美 \n腿&尤 物&高跟&御姐&金发&偷 情&萌白酱&小可爱&直 播&TS&人妖&小鸟酱&高颜值&极品&VIP&伪娘&赛高&夏总&厕&恋 足&FC2&CWP&秋元&自购&吐血&粉&我是你可爱的小猫&男奴&饮 尿&喷 水&舔 逼&母女&拳 交&借贷宝&白虎&馒头&自 慰&撸 管&特写&福 利姬& 工口小妖精&足 控&调教&剧情&恋足&喷 尿&黑人&肛 交&口 交&女 同&粉木耳&少女&内衣&ASMR&后入&内 射&制 服&涂鸦&尿 尿&偷看&黑白&古装&暴力&洗 澡&母 乳&家庭&男 同&坦克&91大神&口 活&抄底&双性&车震&双 飞&近亲&群 交&国模&舞蹈&三上悠亚&饭岛爱&小泽玛利亚&樱井莉亚&天海翼&北条麻妃&JAVHD&越南&探花&360&萌&内窥&主题&情侣&大 学&酒 店&宾 馆&二次元&混血&KIKI&嫩模&瞳孔&狐仙&瑶瑶&不见星空&新人试镜&蝴蝶&虎牙&大一&迷妹&恩熙&宿舍&瑜伽&按 摩&你好迷人&晓可耐&选妃&草莓&甜心&炮机&跳 蛋&屁 眼&大秀&户外&微胖&白富美&白领&醉酒&推荐&KTV&土豪&奶猫& 掰穴&姐妹&母女&紧&高端&短发&重磅&一字马&健身&星选&跑车&校 花&大长腿&寻花&侦探&双胞胎&翘 臀&COS&咬一口小奈樱&小胖丁&PR社&押尾猫&Tumblr&白袜袜格罗丫&Korean&carib&twitter&人 妻&少 妇&大 奶&无 套","area_name":"美 腿&尤 物&高 跟&御 姐&金发&偷 情&萌白酱&小可爱&直 播&TS&人 妖&小鸟酱&高颜值&极品&VIP&伪娘&赛高&夏总&厕&恋足&FC2&CWP&秋元&自购&吐 血&粉&我是你可爱的小猫&男 奴&饮尿&喷 水&舔 逼&母 女&拳 \n交&借 贷宝& 白虎&馒头&自  慰&撸 管&特写&副利姬&工 口小妖精&足 控&调 教&剧情&恋 足&喷 尿&黑人&肛 交&口 交&女 同&粉木耳&少女&内衣&ASMR&后 入&内 \n射&制 服&涂鸦&尿 尿&偷看&黑白&古装&暴力&洗 澡&母 乳&家庭&男 同&坦克&91大神&口 活&抄底&双性&车 震&双 飞&近亲&群交&国模&舞蹈&三上悠亚&饭岛爱&小泽玛利亚&樱井莉亚&天海翼&北条麻妃&JAVHD&越南&探花","area_url":"美 腿&尤 物&高 跟&御 姐&金发&偷 情&萌白酱&小可爱&直 播&TS&人 妖&小鸟酱&高颜值&极品&VIP&伪娘&赛高&夏总&厕&恋足&FC2&CWP&秋元&自购&吐 血&粉&我是你可爱的小猫&男 奴&饮尿&喷 水&舔 逼&母 女&拳 \n交&借 贷宝& 白虎&馒头&自  慰&撸 管&特写&副利姬&工 口小妖精&足 控&调 教&剧情&恋 足&喷 尿&黑人&肛 交&口 交&女 同&粉木耳&少女&内衣&ASMR&后 入&内 \n射&制 服&涂鸦&尿 尿&偷看&黑白&古装&暴力&洗 澡&母 乳&家庭&男 同&坦克&91大神&口 活&抄底&双性&车 震&双 飞&近亲&群交&国模&舞蹈&三上悠亚&饭岛爱&小泽玛利亚&樱井莉亚&天海翼&北条麻妃&JAVHD&越南&探花","sort_name":"","year_name":"360&萌&内 窥&主题&情 侣&大学&酒 店&宾 馆&二次元&混血&KIKI&嫩 模&瞳孔&狐仙&瑶瑶&不见星空&新人试镜&蝴蝶&虎牙&大一&迷妹&恩熙&宿舍&瑜伽&按 摩&你好迷人&晓可耐&选妃&草莓&甜心&炮机&跳蛋&屁 眼&大秀&户外&微胖&白富美&白领&醉酒&推荐&KTV&土豪&奶猫&掰 穴&姐妹&母 女&紧&高端&短发&重磅&一字马&健身&星选&跑车&校花&大长腿&寻花&侦探&双胞胎&翘 臀&COS&咬一口小奈樱&小胖丁&PR社&押尾猫&Tumblr&白袜袜格罗丫&Korean&carib&twitter","sort_url":"","year_url":"360&萌&内 窥&主题&情 侣&大学&酒 店&宾 馆&二次元&混血&KIKI&嫩 模&瞳孔&狐仙&瑶瑶&不见星空&新人试镜&蝴蝶&虎牙&大一&迷妹&恩熙&宿舍&瑜伽&按 摩&你好迷人&晓可耐&选妃&草莓&甜心&炮机&跳蛋&屁 眼&大秀&户外&微胖&白富美&白领&醉酒&推荐&KTV&土豪&奶猫&掰 穴&姐妹&母 女&紧&高端&短发&重磅&一字马&健身&星选&跑车&校花&大长腿&寻花&侦探&双胞胎&翘 臀&COS&咬一口小奈樱&小胖丁&PR社&押尾猫&Tumblr&白袜袜格罗丫&Korean&carib&twitter","find_rule":"js:\n//log(MY_URL);\nlet url=getVar(\"av.sav_url\")+base64Decode('L3M/')+'k='+MY_URL.split(\"#\")[1]+\"&page=\"+MY_URL.split(\"#\")[2];\nMY_URL=url;\nvar d = [];\nd.push({\n    col_type:\"x5_webview_single\"\n});\nlet backcode = \"\";\nlet version = \"\";\ntry {\n    let dz_tools = fetch(\"hiker://files/rules/js/DZ_道长插件.js\", {});\n    if (dz_tools) {\n        eval(dz_tools)\n    }\n    version = DzTool.version;\n    backcode = dzget(MY_URL)\n} catch (e) {\n    setError(MY_URL + '/' + dz_tools.length)\n}\nconst {lazyParse} = $.require('hiker://page/globalParse?rule=道长仓库Pro');\nlet videos = parseDomForArray(backcode, 'body&&.vod-item-box');\nfor (var i = 0; i < videos.length; i++) {\n    let img = parseDomForHtml(videos[i], 'img&&src').replace('&', \"＆＆\");\n    let title = parseDomForHtml(videos[i], 'img&&alt');\n    let desc = parseDomForHtml(videos[i], '.vod_hits&&Text');\n    let href = pd(videos[i], 'a&&href');\n    d.push({\n        title: title,\n        pic_url: img,\n        desc: desc,\n        url: $(href).lazyRule((lazyParse)=>{\n           return lazyParse(input)\n        },lazyParse)\n   });\n}\nd.push({\n    col_type: 'big_blank_block'\n});\nd.push({\n    col_type: 'long_text'\n});\nsetResult(d);","searchFind":".image&&img;img&&title;a&&href;.vod_hits&&Text;;img&&src","search_url":"hiker://empty.js:let url=getVar(\"av.sav_url\")+base64Decode('L3M/')+\"k=**&page=fypage\"；；log(url)；；url","group":"道长车库","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"let back=fetch(\"https://sexdizhi.com\");\nlet realUrl=pdfh(back,\"body&&a,1&&href\");\nlog(realUrl);\nputVar(\"av.sav_url\",realUrl);","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"搬淫家.dz","author":"道长","version":2,"type":"other","url":"https://www.byj3.me/videos/fyAll/fypage[firstPage=https://www.byj3.me/videos/fyAll];get;utf-8;{User-Agent@Windows}","col_type":"movie_3","class_name":"麻 豆 传 媒 系 列&果 冻 传 媒 系 列&蜜 桃 传 媒 系 列&天 美 传 媒 系 列&H o n g K o n g D o l l&9 1 制 片 厂&精 东 影 业&P s y c h o P o r n 色 控&星 空 无 限 传 媒&皇 家 华 人&台 湾 S W A G&开 心 鬼 传 媒&兔 子 先 生&J V I D 系 列&M I N I 传 媒&乐 播 传 媒&大 象 传 媒&乌 鸦 传 媒&糖 心 V l o g&杏 吧 专 区","class_url":"madou&guodong&mitao&tianmei&hongkongdoll&91zpc&jingdongyingye&psychoporn&xingkongwuxian&huangjiahuaren&swag&kaixingui&tuzixiansheng&jvid&mini&lebo&daxiang&wuya&tangxinvlog&xingba","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.grid&&.video-thumb');\nfor (var j in list) {\n  d.push({\n     title: parseDomForHtml(list[j], 'a&&title'),\n     desc:parseDomForHtml(list[j], '.video-duration&&Text'),\n     pic_url: parseDom(list[j], 'img&&data-src'),\n     url: parseDom(list[j], 'a&&href')+'@lazyRule=#player-fluid&&source,-1&&src'\n  });\n}\nres.data = d;\nsetHomeResult(res);\n","searchFind":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\r\nvar list = parseDomForArray(getResCode(), '.grid&&.video-thumb');\r\nfor (var j in list) {  \r\nd.push({       \r\ntitle: parseDomForHtml(list[j], 'a&&title'),\ndesc: parseDomForHtml(list[j], '.video-duration&&Text'),\r\npic_url: parseDom(list[j],'img&&data-src'),       \r\nurl:'https://banyinjia3.com/'+parseDomForHtml(list[j],'a&&href')+'@lazyRule=#player-fluid&&source,-1&&src'\r\n});\r\n}\r\n}catch(e){}\r\nres.data = d;\r\nsetHomeResult(res);","search_url":"https://banyinjia3.com/search/video/?s=**&page=fypage","group":"道长车库","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"Zlib Pro","author":"Joe","version":5,"type":"read","url":"hiker://empty","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nlet layout = [];\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    col_type: \"big_blank_block\"\n});\n\nlayout.push({\n    title: '<h1 style=\"text-align: center;\"><big><font color=\"#FEBD6F\">Zlib Pro</font></big><br><small><font color=\"#FB6C73\">下书好帮手</font></small></h1>',\n    col_type: \"rich_text\"\n});\nlayout.push({\n    col_type: \"input\",\n    url: $.toString(() => {\n        return \"hiker://page/搜索?page=fypage&kw=\" + input\n    }),\n    title: \"搜索\"\n})\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    col_type: \"big_blank_block\"\n});\nlayout.push({\n    title: \"🔰 历史记录\",\n    col_type: \"text_1\",\n    url: $(\"确认清除？\").confirm(() => {\n        clearItem(\"history\")\n        refreshPage()\n        toast(\"清理成功\")\n    })\n});\nvar history = storage0.getItem(\"history\", [])\nhistory.forEach(item => {\n    layout.push({\n        title: item,\n        url: \"hiker://page/搜索?page=fypage&kw=\" + item,\n        col_type: \"flex_button\"\n    })\n})\nsetResult(layout);","searchFind":"js:\nsetResult([{\n    url: \"hiker://page/搜索?page=fypage&kw=\" + getParam(\"kw\"),\n    title: \"搜索：\" + getParam(\"kw\")\n}])","search_url":"hiker://empty?kw=**","group":"阅读","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"text_1\",\"name\":\"搜索\",\"path\":\"搜索\",\"rule\":\"js:\\nvar d = [];\\ntry {\\n    if (MY_PAGE == 1) {\\n        var engines = [\\\"Ylibrary\\\", \\\"Zhelper_v5\\\", \\\"Zhelper_v4\\\", \\\"网盘\\\"]\\n        engines.forEach(item => {\\n            d.push({\\n                title: getItem(\\\"engine\\\", \\\"Ylibrary\\\") == item ? `‘‘’’<strong><font color=\\\"#f13b66a\\\">◉ </front></strong>${item}` : item,\\n                url: $().lazyRule((n) => {\\n                    setItem(\\\"engine\\\", n)\\n                    refreshPage()\\n                    return \\\"toast://已切换引擎：\\\" + n\\n                }, item),\\n                col_type: \\\"scroll_button\\\"\\n            })\\n        })\\n    }\\n    var history = storage0.getItem(\\\"history\\\", [])\\n    if (!history.includes(getParam(\\\"kw\\\"))) {\\n        history.unshift(getParam(\\\"kw\\\"))\\n        storage0.setItem(\\\"history\\\", history)\\n    }\\n    $.require(\\\"hiker://page/api\\\")[getItem(\\\"engine\\\", \\\"Ylibrary\\\")](getParam(\\\"kw\\\"), MY_PAGE)\\n} catch (e) {\\n    toast(\\\"搜索失败了，请切换引擎重试\\\")\\n    log(e.message)\\n}\\nsetResult(d);\"},{\"col_type\":\"movie_3\",\"name\":\"api\",\"path\":\"api\",\"rule\":\"$.exports = {\\n    servers: [\\\"https://dweb.link/ipfs/\\\", \\\"https://ipfs.jpu.jp/ipfs/\\\", \\\"https://cf-ipfs.com/ipfs/\\\", \\\"https://gateway.pinata.cloud/ipfs/\\\", \\\"https://ipfs-gateway.cloud/ipfs/\\\"],\\n    getFileSize: function(size) {\\n        if (size <= 0) {\\n            return \\\"\\\";\\n        }\\n        let unitForm = [\\\"Byte\\\", \\\"KB\\\", \\\"MB\\\", \\\"GB\\\", \\\"TB\\\"];\\n        for (let i = 0, len = unitForm.length; i < len; i++) {\\n            if (size > 1024) {\\n                size /= 1024;\\n                continue;\\n            } else {\\n                return size.toFixed(2).replace(/(\\\\.00)$/, \\\"\\\") + unitForm[i];\\n            }\\n        }\\n        return \\\"ERROR:数值过大\\\";\\n    },\\n    Ylibrary: function(kw, page) {\\n        var res = JSON.parse(post(\\\"https://api.ylibrary.org/api/search/\\\", {\\n            body: JSON.stringify({\\n                \\\"keyword\\\": kw,\\n                \\\"page\\\": page,\\n                \\\"sensitive\\\": false\\n            })\\n        })).data\\n        res.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: `““””<small>作者:${item.author} 出版社:${item.publisher?item.publisher:\\\"暂无\\\"} ISBN:${item.isbn?item.isbn:\\\"暂无\\\"} 出版时间:${item.year?item.year:\\\"暂无\\\"} 文件格式:${item.extension} 文件大小:${$.require(\\\"api\\\").getFileSize(item.filesize)}</small>`,\\n                url: $().lazyRule((id) => {\\n                    try {\\n                        var res = JSON.parse(post(\\\"https://api.ylibrary.org/api/detail/\\\", {\\n                            body: JSON.stringify({\\n                                \\\"id\\\": id,\\n                                \\\"source\\\": \\\"zlibrary\\\"\\n                            })\\n                        }))\\n                        var servers = $.require(\\\"hiker://page/api\\\").servers\\n                        servers.unshift(\\\"ipfs下载\\\")\\n                        servers.unshift(\\\"百度云盘转存\\\")\\n                        if (res.in_libgen) {\\n                            servers.unshift(\\\"Libgen(推荐)\\\")\\n                        }\\n                        return $(servers, 1, \\\"选择线路\\\").select((res) => {\\n                            if (input == \\\"Libgen(推荐)\\\") {\\n                                return \\\"download://\\\" + pdfh(request(\\\"http://library.lol/main/\\\" + res.md5), \\\"#download&&a&&href\\\")\\n                            } else if (input == \\\"百度云盘转存\\\") {\\n                                return $.require(\\\"api\\\").baidu(res)\\n                            } else if (input == \\\"ipfs下载\\\") {\\n                                return `x5://https://ipfs-checker.1kbtool.com/${res.ipfs_cid}`\\n                            } else {\\n                                return \\\"download://\\\" + input + res.ipfs_cid\\n                            }\\n                        }, res)\\n                    } catch (e) {\\n                        log(e.message)\\n                        return \\\"toast://解析失败\\\"\\n                    }\\n                }, item.id)\\n            })\\n        })\\n    },\\n    Zhelper_v5: function(kw, page) {\\n        var res = JSON.parse(post(\\\"https://api.v5.zhelper.net/api/search/\\\", {\\n            body: JSON.stringify({\\n                \\\"keyword\\\": kw,\\n                \\\"page\\\": page,\\n                \\\"sensitive\\\": false\\n            })\\n        })).data\\n        res.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: `““””<small>作者:${item.author} 出版社:${item.publisher?item.publisher:\\\"暂无\\\"} ISBN:${item.isbn?item.isbn:\\\"暂无\\\"} 出版时间:${item.year?item.year:\\\"暂无\\\"} 文件格式:${item.extension} 文件大小:${$.require(\\\"api\\\").getFileSize(item.filesize)}</small>`,\\n                url: $().lazyRule((id) => {\\n                    try {\\n                        var res = JSON.parse(post(\\\"https://api.v5.zhelper.net/api/detail/\\\", {\\n                            body: JSON.stringify({\\n                                \\\"id\\\": id,\\n                                \\\"source\\\": \\\"zlibrary\\\"\\n                            })\\n                        }))\\n                        var servers = $.require(\\\"hiker://page/api\\\").servers\\n                        servers.unshift(\\\"ipfs下载\\\")\\n                        servers.unshift(\\\"百度云盘转存\\\")\\n                        if (res.in_libgen) {\\n                            servers.unshift(\\\"Libgen(推荐)\\\")\\n                        }\\n                        return $(servers, 1, \\\"选择线路\\\").select((res) => {\\n                            if (input == \\\"Libgen(推荐)\\\") {\\n                                return \\\"download://\\\" + pdfh(request(\\\"http://library.lol/main/\\\" + res.md5), \\\"#download&&a&&href\\\")\\n                            } else if (input == \\\"百度云盘转存\\\") {\\n                                return $.require(\\\"api\\\").baidu(res)\\n                            } else if (input == \\\"ipfs下载\\\") {\\n                                return `x5://https://ipfs-checker.1kbtool.com/${res.ipfs_cid}`\\n                            } else {\\n                                return \\\"download://\\\" + input + res.ipfs_cid\\n                            }\\n                        }, res)\\n                    } catch (e) {\\n                        log(e.message)\\n                        return \\\"toast://解析失败\\\"\\n                    }\\n                }, item.id)\\n            })\\n        })\\n    },\\n    Zhelper_v4: function(kw, page) {\\n        var res = JSON.parse(post(\\\"https://api.mibooks.tk/api/search/\\\", {\\n            body: JSON.stringify({\\n                \\\"keyword\\\": kw,\\n                \\\"page\\\": page,\\n                \\\"sensitive\\\": false\\n            })\\n        })).data\\n        res.forEach(item => {\\n            d.push({\\n                title: item.title,\\n                desc: `““””<small>作者:${item.author} 出版社:${item.publisher?item.publisher:\\\"暂无\\\"} ISBN:${item.isbn?item.isbn:\\\"暂无\\\"} 出版时间:${item.year?item.year:\\\"暂无\\\"} 文件格式:${item.extension} 文件大小:${$.require(\\\"api\\\").getFileSize(item.filesize)}</small>`,\\n                url: $().lazyRule((id) => {\\n                    try {\\n                        var servers = ['https://test1.zlib.download', 'https://test2.zlib.download', 'https://zlib.jg12123.one']\\n                        return $(servers, 1, \\\"请选择下载线路\\\").select((id) => {\\n                            return \\\"download://\\\" + input + \\\"/download/\\\" + id + \\\"/\\\"\\n                        }, id)\\n                    } catch (e) {\\n                        log(e.message)\\n                        return \\\"toast://解析失败\\\"\\n                    }\\n                }, item.id)\\n            })\\n        })\\n    },\\n    网盘: function(kw, page) {\\n        var res = JSON.parse(post(\\\"https://api.bookpan.net/api/search/\\\", {\\n            body: JSON.stringify({\\n                \\\"keyword\\\": kw,\\n                \\\"page\\\": page,\\n                \\\"sensitive\\\": false\\n            })\\n        })).data\\n        res.forEach(item => {\\n            d.push({\\n                title: item.info,\\n                desc: \\\"““””<small>\\\" + item.source + \\\"</small>\\\",\\n                url: $().lazyRule((id, source) => {\\n                    try {\\n                        var res = JSON.parse(post(\\\"https://api.bookpan.net/api/detail/\\\", {\\n                            body: JSON.stringify({\\n                                \\\"id\\\": id,\\n                                \\\"source\\\": source\\n                            })\\n                        }))\\n                        if (res.download_link) {\\n                            var dict = {}\\n                            res.download_link.unshift({\\n                                name: \\\"原网页\\\",\\n                                url: res.url\\n                            })\\n                            return $(res.download_link.map(function(item) {\\n                                return item.name\\n                            }), 1, \\\"请选择下载线路\\\").select((links) => {\\n                                return links[links.map(function(item) {\\n                                    return item.name\\n                                }).indexOf(input)].url\\n                            }, res.download_link)\\n                        } else {\\n                            return res.url\\n                        }\\n                    } catch (e) {\\n                        log(e.message)\\n                        return \\\"toast://解析失败\\\"\\n                    }\\n                }, item.id, item.source)\\n            })\\n        })\\n    },\\n    baidu: function(res) {\\n        try {\\n            if (!fileExist(\\\"hiker://files/rules/Joe/baidu.txt\\\")) {\\n                toast(\\\"还未登陆\\\")\\n                return $().rule(() => {\\n                    setResult([{\\n                        url: \\\"https://pan.baidu.com/\\\",\\n                        col_type: \\\"x5_webview_single\\\",\\n                        desc: \\\"100%&&float\\\",\\n                        extra: {\\n                            js: $.toString(() => {\\n                                var url = location.href\\n                                if (url.includes(\\\"https://pan.baidu.com/wap\\\")) {\\n                                    fba.writeFile(\\\"hiker://files/rules/Joe/baidu.txt\\\", fba.getCookie(\\\"\\\"))\\n                                    alert(\\\"已获取到cookie，返回即可\\\")\\n                                    fba.back()\\n                                }\\n                            }),\\n                            ua: MOBILE_UA,\\n                            canBack: true\\n                        }\\n                    }])\\n                })\\n            } else {\\n                var bdstoken = JSON.parse(request(\\\"https://pan.baidu.com/api/gettemplatevariable?fields=[%22bdstoken%22]\\\", {\\n                    headers: {\\n                        Cookie: request(\\\"hiker://files/rules/Joe/baidu.txt\\\")\\n                    }\\n                })).result.bdstoken\\n                var res = JSON.parse(post(\\\"https://pan.baidu.com/rest/2.0/xpan/file?method=create&bdstoken=\\\" + bdstoken, {\\n                    headers: {\\n                        Cookie: request(\\\"hiker://files/rules/Joe/baidu.txt\\\")\\n                    },\\n                    body: {\\n                        size: res.filesize + \\\"\\\",\\n                        path: \\\"/电子书/\\\" + res.title + \\\".\\\" + res.extension,\\n                        block_list: [res.md5],\\n                        rtype: 0\\n                    }\\n                }))\\n                if (res.errno == 0) {\\n                    refreshPage()\\n                    return \\\"toast://转存成功\\\"\\n                } else {\\n                    log(res.errno)\\n                    return \\\"toast://转存失败\\\"\\n                }\\n            }\\n        } catch (e) {\\n            log(e.message)\\n            return \\\"toast://转存失败\\\"\\n        }\\n    }\\n}\"}]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/ke/38.png"},{"last_chapter_rule":"","title":"汉典古籍","author":"","version":2,"type":"other","url":"hiker://empty##https://gj.zdic.net/list.php?caid-44/page-fypage.html","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\n/**\n * 以下是分类相关\n */\nvar 分类颜色 = '#1aad19';\n// 这个很简单的，直接看频道链接处理就行\nconst 分类页码 = MY_URL.match(/page-(\\d+).html/)[1];\nconst 大类定位 = 'body&&.gj_dh_jibu_d';\n\n// 四大金刚和其他分类不在同一个定位时可用拼接分类，若所有分类都能一次定位完毕，则拼接分类留空 '' 或删掉即可\nconst 拼接分类的大类定位 = 'body&&.gj_dh&&ul';\n\nconst 统一小类定位 = 'body&&a';\n\n\n\n/**\n * 以下是片单相关\n */\nvar 列表 = '#list_d_1&&li';\nvar 标题 = 'a&&title';\nvar 描述 = '';\nvar 图片 = '';\nvar 链接 = 'a&&href';\n\n\n/**\n * ！！！！！！！！！！！！！！！！！\n * ！！！     以下不用管     ！！！\n * ！！！  上面才是你要干的事  ！！！\n * ！！！！！！！！！！！！！！！！！\n */\nvar d = d || []\nlet 一级 = $.require('hiker://page/yiji?rule=' + MY_RULE.title)\n\nMY_URL = MY_URL.replace('hiker://empty##', '')\nvar page = 分类页码\nvar true_url = 一级.获取正确链接(page)\nvar html = 一级.获取源码(true_url)\nlog(true_url)\n\n一级.打造分类()\n\n一级.生成片单(d, html)\n\n// requireCache(config.依赖, config.更新间隔);\n// yiji()\n\nsetResult(d)","searchFind":"","search_url":"","group":"阅读","detail_col_type":"text_1","detail_find_rule":"js:\nvar d = [];\n\nd.push({\n    title: '',\n    col_type: 'big_big_blank_block'\n});\n\nvar html = getResCode();\nd.push({\n    title: \"<big>\" + pdfh(html, '#shuye&&h1&&Text') + \"</big>\",\n    col_type: 'rich_text'\n});\n\nd.push({\n    title: '',\n    col_type: 'line'\n});\n\nd.push({\n    title: pdfh(html, '#shuye&&#jj_2&&Text'),\n    col_type: 'rich_text'\n});\n\nvar list = pdfa(html, '#shuye&&.mls&&li');\nfor (let i of list){\n    d.push({\n        title: pdfh(i, 'a&&Text'),\n        col_type: 'text_2',\n        url: $(pd(i, 'a&&href')+\"#autoPage##readTheme#\").rule(() => {\n            var d = [];\n            d.push({\n                col_type: \"rich_text\",\n                title: \"<big>\" + pdfh(getResCode(), '#contents&&h1&&Text') + \"</big>\",\n            });\n            d.push({\n                title: pdfh(getResCode(), '#contents&&#snr2&&Html').replace(new RegExp(\"\\n\\n\", \"g\"), \"<br>\").replace(new RegExp(\"\\r\\n\", \"g\"), \"<br>\").replace(new RegExp(\"<br><br>　　<br><br>\", \"g\"), \"<br><br>\"),\n                col_type: 'rich_text',\n                extra: {\n                    textSize: 18,\n                    click: true\n                }\n            });\n            setResult(d);\n        })\n    });\n};\n\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"initConfig({\n    依赖: \"https://gitee.com/xiao-zero/xiao/raw/master/js/xiao688.js\",\n    更新间隔: 48\n});\ninitConfig({\n    动态分类依赖: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/categories-header.js',\n    链接处理工具依赖: 'https://gitee.com/reborn0/HikerRules/raw/master/plugins/UrlProcessor.js'\n})","pages":"[{\"col_type\":\"movie_3\",\"name\":\"一级公用模板\",\"path\":\"yiji\",\"rule\":\"/**\\n * 建议复制粘贴到一个 js 文件，然后上传仓库或者码云，之后都作为依赖进行 requireCache 调用\\n * 有能力者可修改一下自定义项再作为依赖 require\\n */\\nfunction 一级() {};\\nObject.assign(一级.prototype, {\\n    constructor: 一级,\\n    test() {},\\n    获取源码(url, header) {\\n        return fetch(true_url, {\\n            headers: header || {\\n                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0)'\\n            }\\n        }) // 默认统一使用PC UA\\n    },\\n    获取正确链接(page, regex) {\\n        let true_url = getMyVar('header.url', MY_URL);\\n        let 链接处理工具 = requireCache(config.链接处理工具依赖)\\n        true_url = 链接处理工具\\n            .链接(true_url)\\n            .页码(page)\\n            .插入新处理规则(regex || [])\\n            .获取处理结果();\\n        return true_url;\\n    },\\n    打造分类(ruleList) {\\n        if (!ruleList) {\\n            let 分类定位 = [\\n                // 定位四大金刚\\n                {\\n                    一级分类: 大类定位,\\n                    子分类: 统一小类定位 || 小类定位,\\n                    分类链接: {\\n                        二次处理(url) {\\n                            try {\\n                                return 对分类链接进行二次处理(url)\\n                            } catch (e) {\\n                                return url\\n                            }\\n                        }\\n                    }\\n                }\\n            ]\\n\\n            if (拼接分类的大类定位 && (统一小类定位 || 拼接分类的小类定位)) {\\n                分类定位.push(\\n                    // 定位其他大分类，如地区、年份等\\n                    {\\n                        一级分类: 拼接分类的大类定位,\\n                        子分类: 统一小类定位 || 拼接分类的小类定位,\\n                        分类链接: {\\n                            二次处理(url) {\\n                                try {\\n                                    return 对拼接分类链接进行二次处理(url)\\n                                } catch (e) {\\n                                    return url\\n                                }\\n                            }\\n                        }\\n                    }\\n                )\\n            }\\n            ruleList = 分类定位;\\n        }\\n        // '0' 为默认不折叠，'1' 为默认折叠\\n        const 当前折叠状态 = getMyVar('header.fold', '1')\\n\\n        // 引入动态分类依赖\\n        // 框架已经稳定，使用 requireCache 更佳\\n        let htmlCategories = requireCache(config.动态分类依赖)\\n        htmlCategories.界面(d)\\n            // .分类链接(true_url)\\n            .源码(html)\\n            .页码(page)\\n            .添加分类定位(ruleList)\\n            .开启内置折叠功能() // 必须\\n            .折叠(当前折叠状态) // 必须\\n            .选中的分类颜色(分类颜色)\\n            .开始打造分类();\\n    },\\n    生成片单(d, html) {\\n        let list = parseDomForArray(html, 列表);\\n        for (let j in list) {\\n            d.push({\\n                title: parseDomForHtml(list[j], 标题),\\n                desc: parseDomForHtml(list[j], 描述),\\n                img: parseDom(list[j], 图片) + '@Referer=',\\n                url: parseDom(list[j], 链接).replace('play', 'detail').replace('/sid/1/nid/1', '') + \\\"#immersiveTheme#\\\"\\n            });\\n        }\\n    }\\n})\\n\\n$.exports = new 一级();\\n$.exports\"}]","proxy":"","icon":"https://gj.zdic.net/images/common/logo.png"},{"last_chapter_rule":"","title":"YesPlayMusic","author":"缘分","version":0,"type":"video","url":"hiker://empty##fypage@-1@*50@##","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\npage = MY_URL.split(\"##\")[1];\nif (page == 0) {\n    let tabs = {\n        \"歌单\": \"https://lanmeiguojiang.com/tubiao/q/167.png\",\n        \"排行\": \"https://lanmeiguojiang.com/tubiao/q/168.png\"\n    }\n    Object.entries(tabs).forEach(item => {\n        putMyVar('选中颜色', '#3CE68E');\n        xy = '<b><span style=\"color: #1aad19\">' + item[0] + '</span></b>';\n\n        d.push({\n            title: item[0] == getMyVar('mode', '歌单') && page == 0 ? xy : item[0],\n            img: item[1],\n            url: $().lazyRule((ta) => {\n                putMyVar(\"mode\", ta)\n                refreshPage()\n                return \"hiker://empty\"\n            }, item[0]),\n            col_type: \"icon_small_3\"\n        })\n    })\n    d.push({\n        title: (getVar('shsort') == '1') ? 'h5播放器↓' : '原播放器↓',\n        pic_url: 'https://lanmeiguojiang.com/tubiao/q/169.png',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换播放器成功'`,\n        col_type: 'icon_small_3'\n    })\n}\nif (getVar('shsort') == '1') {\n    let mode = getMyVar(\"mode\", \"歌单\")\n    if (mode == \"歌单\") {\n        var list = JSON.parse(request('https://music.qier222.com/api/top/playlist?cat=%E5%85%A8%E9%83%A8&offset=' + page + '&realIP=211.161.244.70')).playlists;\n        for (var j in list) {\n            d.push({\n                title: list[j].name,\n                pic_url: list[j].coverImgUrl + '@Referer=',\n                url: 'hiker://empty##' + list[j].id + '#noRefresh##gameTheme##background#',\n                extra: {\n                    newWindow: true,\n                    windowId: MY_RULE.title\n                }\n            })\n        }\n    } else if (mode == \"排行\") {\n        var list = JSON.parse(request('https://music.qier222.com/api/toplist')).list;\n        log(list)\n        for (var j in list) {\n            d.push({\n                title: list[j].name,\n                pic_url: list[j].coverImgUrl + '@Referer=',\n                url: 'hiker://empty##' + list[j].id + '#noRefresh##gameTheme##background#',\n                extra: {\n                    newWindow: true,\n                    windowId: MY_RULE.title\n                }\n            })\n        }\n    }\n} else {\n    let mode = getMyVar(\"mode\", \"歌单\")\n    if (mode == \"歌单\") {\n        var list = JSON.parse(request('https://music.qier222.com/api/top/playlist?cat=%E5%85%A8%E9%83%A8&offset=' + page + '&realIP=211.161.244.70')).playlists;\n        for (var j in list) {\n            d.push({\n                title: list[j].name,\n                pic_url: list[j].coverImgUrl + '@Referer=',\n                url: 'hiker://empty##' + list[j].id + $('').rule(() => {\n                    eval(JSON.parse(fetch('hiker://page/er', {})).rule)\n                })\n            })\n        }\n    } else if (mode == \"排行\") {\n        var list = JSON.parse(request('https://music.qier222.com/api/toplist')).list;\n        for (var j in list) {\n            d.push({\n                title: list[j].name,\n                pic_url: list[j].coverImgUrl + '@Referer=',\n                url: 'hiker://empty##' + list[j].id + $('').rule(() => {\n                    eval(JSON.parse(fetch('hiker://page/er', {})).rule)\n                })\n            })\n        }\n    }\n}\nsetResult(d)\n$.require(\"hiker://page/更新\")","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar lazy = $(\"\").lazyRule(() => {\n    var url = JSON.parse(request('http://music.fy6b.com/index/music',{headers: {\n            \"User-Agent\": MOBILE_UA\n        },\n        body: 'type=netease&id='+input,\n        method: \"POST\"\n   })).music   \n       var lrc = JSON.parse(request('http://121.4.78.106:4001/lyric?id='+input)).lrc.lyric\n\nreturn JSON.stringify({\n                    urls: [url+'#isMusic=true##'],\n                    lyric: lrc\n                })  \n});\nvar list = JSON.parse(html);\nfor (var j in list) {\n    d.push({\n        title: list[j].name,\n        pic_url: list[j].pic_url,\n        desc: list[j].artist[0],\n        url: list[j].id+lazy\n    });\n}\nsetResult(d)","search_url":"http://music.fy6b.com/?type=netease&keyword=**&page=1&limit=50;post","group":"音乐🎶","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar id = MY_URL.split(\"##\")[1].split(\"#\")[0]\n\nvar lazy = $('').lazyRule(()=> {\nvar id = input.split(\"#\")[0];\nvar url = 'https://test.quanjian.com.cn/m/api/link/index/id/' +id+ '/quality/2000#isMusic=true#';\nreturn url\n})\nvar list = JSON.parse(request('https://test.quanjian.com.cn/m/api/search/playlist', {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    },\n    body: '{\"id\":\"d' + id + '\"}',\n    method: \"POST\"\n})).data.list;\nlet 传输列表 = []\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (let j = 0; j < list.length; j++) {   \n    let title = list[j].name;\n    let first = list[0].name;\n    let desc = list[j].artist[0].name;\n    let img = list[j].pic;\n    let url = list[j].id+'#' +list[j].lyric+lazy\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"原生二级\",\"path\":\"er\",\"rule\":\"var d = [];\\nvar id = MY_URL.split(\\\"##\\\")[1].split(\\\"#\\\")[0]\\nvar lazy = $('').lazyRule(() => {\\nvar url = 'https://test.quanjian.com.cn/m/api/link/index/id/' +input.split(\\\"#\\\")[0]+'/quality/2000#isMusic=true#';\\nvar url1 = 'https://test.quanjian.com.cn/m/api/link/index/id/' +input.split(\\\"#\\\")[0]+'/quality/320#isMusic=true#';\\nvar url2 = 'https://test.quanjian.com.cn/m/api/link/index/id/' +input.split(\\\"#\\\")[0]+'/quality/128#isMusic=true#';\\ntry {\\nvar title = input.split(\\\"#\\\")[1];\\nvar desc = input.split(\\\"#\\\")[2];\\n    var lrc = pdfh(request('http://zhannei.baidu.com/cse/search?q=' + title +'-'+desc+ '&s=2237976389678693530&entry=1'),'.result-list&&a&&href');\\nlog(lrc)\\n    var lrc = 'https://www.igeciku.com' + pdfh(request(lrc),'.download&&a&&href').replace('txt', 'lrc');\\n    return JSON.stringify({\\n        urls: [url,url1,url2],\\n        names:['无损','超清','高清'],\\n        lyric: lrc\\n    })\\n} catch (e) {\\n    return JSON.stringify({\\n        urls: [url,url1,url2],    \\n        names:['无损','超清','高清']\\n    })\\n}\\n})\\nvar list = JSON.parse(request('https://test.quanjian.com.cn/m/api/search/playlist', {\\n    headers: {\\n        \\\"User-Agent\\\": MOBILE_UA\\n    },\\n    body: '{\\\"id\\\":\\\"d' + id + '\\\"}',\\n    method: \\\"POST\\\"\\n})).data.list;\\nfor (let j = 0; j < list.length; j++) {   \\n    let title = list[j].name;\\n    let desc = list[j].artist[0].name;\\n    let img = list[j].pic;\\n    let url = list[j].id +'#'+ list[j].name+'#'+ list[j].artist[0].name+lazy\\n    \\n    d.push({\\n        title: title,\\n        desc: desc,\\n        img: img,\\n        col_type: \\\"avatar\\\",\\n        url: url\\n})\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"更新\",\"path\":\"更新\",\"rule\":\"if (page==0&&getVar('shsort') == '1'){\\n    let myVersion = MY_RULE.version;\\n    let newVersion = JSON.parse(fetchCache(\\\"http://hiker.nokia.press/hikerule/rulelist.json?id=5770\\\",24,{\\n        timeout: 1000,        \\n    })).version;\\n      if (parseInt(newVersion) > parseInt(myVersion)) {\\n        confirm({\\n            title: '更新提示',\\n            content: '检测到你的规则版本小于服务器版本，是否立即更新？',\\n            confirm: () => {\\n                return \\\"海阔视界首页频道规则【YesPlayMusic】￥home_rule_url￥http://hiker.nokia.press/hikerule/rulelist.json?id=5770\\\"\\n            },         \\n        })\\n    }}\\nif (!fileExist(\\\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\\\")) {\\n    confirm({\\n        title: \\\"重要提示\\\",\\n        content: \\\"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\\\",\\n        confirm: $.toString(() => {\\n            return \\\"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\\\"\\n        })\\n    })\\n}\"}]","proxy":"","icon":"https://s1.ax1x.com/2022/11/23/z3f1ne.png"},{"last_chapter_rule":"","title":"zz123🎶","author":"缘分","version":3,"type":"music","url":"https://www.zz123.com/list/mszm.htm?page=fypage","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nvar getRangeColors = function() {       \n    return '#' + ('00000' + (Math.random() * 0x1000000 << 0).toString(16)).substr(-6);     \n}\n\nconst 分类颜色 = getRangeColors()\nconst 大类定位 = '.channel'\nconst 拼接分类 = 'body&&.cate-list||.tabs-list'\nconst 小类定位 = 'body&&a:not(:matches(首页|专题|下载))'\nconst 分类标题 = 'a&&Text'\nconst 分类链接 = 'a&&href'\nMY_URL = MY_URL.replace('hiker://empty##', '')\n\nlet true_url = getMyVar(\"url\", MY_URL)\nconst page = MY_PAGE\nif (getMyVar(\"url\")) {\n    true_url = true_url+'?page='+page\n}\nlog(true_url)\nvar html = fetch(true_url)\n\neval(JSON.parse(fetch('hiker://page/sm', {})).rule);\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/play\\/(\\w+)\\.htm/, 'ajax/?act=songinfo&id=$1&lang=')\n    var json = JSON.parse(request(input)).data\n    url = json.mp3\n    return JSON.stringify({\n        urls: [url],\n        headers: [{\n            'Referer': 'https://www.zz123.com/'\n        }],\n        lyric: json.lrc.replace(/\\r/g, '')\n    })\n});\nvar list = parseDomForArray(html, '.mobile-list&&.mobile-list-item');\nfor (var j in list) {\n\n    var img = parseDom(list[j], '.item-cover&&img&&data-src') + '@Referer=https://www.zz123.com/';\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),\n        desc: parseDomForHtml(list[j], 'a,1&&Text'),\n        img: img,\n        url: parseDom(list[j], 'a&&href') + lazy,\n    });\n}\nsetResult(d)","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/play\\/(\\w+)\\.htm/, 'ajax/?act=songinfo&id=$1&lang=')\n    var json = JSON.parse(request(input)).data\n    url = json.mp3\n    return JSON.stringify({\n        urls: [url],\n        headers: [{\n            'Referer': 'https://www.zz123.com/'\n        }],\n        lyric: json.lrc.replace(/\\r/g, '')\n    })\n});\nvar lists = json.data;\nvar items = lists.map(data => ({\n    title: data.mname,\n    url: 'https://www.zz123.com/play/' + data.id + '.htm' + lazy,\n    desc: data.sname,\n    img: data.pic + '@Referer=https://www.zz123.com/',\n}));\nres.data = items;\nsetSearchResult(res);","search_url":"https://www.zz123.com/ajax/?act=search&key=**&lang=","group":"音频","detail_col_type":"card_pic_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态分类\",\"path\":\"sm\",\"rule\":\"const empty = \\\"hiker://empty\\\"\\naddListener(\\\"onClose\\\", $.toString(() => {\\n    clearMyVar(\\\"url\\\");\\n    clearMyVar(\\\"t\\\");\\n}));\\ntry {\\n    var categories = pdfa(html, 大类定位).concat(pdfa(html, 拼接分类))\\n} catch (e) {\\n    var categories = pdfa(html, 大类定位)\\n}\\n\\nlet init_cate = []\\n\\nfor (let i = 0; i < 20; i++) {\\n    init_cate.push(\\\"0\\\")\\n}\\n\\nconst fold = getMyVar(\\\"fold\\\", \\\"0\\\")\\nconst cate_temp_json = getMyVar(\\\"t\\\", JSON.stringify(init_cate))\\nconst cate_temp = JSON.parse(cate_temp_json)\\n\\nif (parseInt(page) === 1) {\\n    d.push({\\n        title: fold === '1' ? '““””<b><span style=\\\"color: #FF0000\\\">∨</span></b>' : '““””<b><span style=\\\"color: #1aad19\\\">∧</span></b>',\\n        url: $().lazyRule((fold) => {\\n            putMyVar(\\\"fold\\\", fold === '1' ? '0' : '1');\\n            refreshPage(false);\\n            return \\\"hiker://empty\\\"\\n        }, fold),\\n        col_type: 'scroll_button',\\n    })\\n\\n\\n    categories.forEach((category, index) => {\\n        let sub_categories = pdfa(category, 小类定位);\\n        if (index === 0) {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        let new_cate = []\\n                        params.cate_temp.forEach((cate, index) => {\\n                            new_cate.push(index === 0 ? params.key.toString() : \\\"0\\\")\\n                        })\\n                        putMyVar(\\\"t\\\", JSON.stringify(new_cate))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        } else if (fold === '1') {\\n            sub_categories.forEach((item, key) => {\\n                let title = pdfh(item, 分类标题)\\n                d.push({\\n                    title: key.toString() === cate_temp[index] ? '““””<b><span style=\\\"color: ' + 分类颜色 + '\\\">' + title + '</span></b>' : title,\\n                    url: $(pd(item, 分类链接) + '#noLoading#').lazyRule((params) => {\\n                        params.cate_temp[params.index] = params.key.toString()\\n\\n                        putMyVar(\\\"t\\\", JSON.stringify(params.cate_temp))\\n                        putMyVar(\\\"url\\\", input)\\n                        refreshPage(true)\\n                        return \\\"hiker://empty\\\"\\n                    }, {\\n                        cate_temp: cate_temp,\\n                        index: index,\\n                        key: key,\\n                        page: page,\\n                    }),\\n                    col_type: 'scroll_button',\\n                })\\n            })\\n            d.push({\\n                col_type: \\\"blank_block\\\"\\n            });\\n        }\\n    })\\n}\"}]","proxy":"","icon":"https://www.zz123.com/favicon.ico"},{"last_chapter_rule":"","title":"5dn音乐🎶","author":"缘分","version":2,"type":"music","url":"http://m.5nd.com/paihang/fyAll.htm","col_type":"card_pic_3","class_name":"流行歌曲&推荐歌曲&网络歌曲&DJ舞曲&","class_url":"liuxinggequ&tuijiangequ&wangluo&dj&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '#container&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.song&&Text'),\n        desc: parseDomForHtml(list[j], '.artist&&Text'),\n        pic_url: parseDom(list[j], 'img&&src'),\n        url: parseDom(list[j], 'a&&href') +$('').lazyRule(() => {\nvar url ='http://mpge.5nd.com/'+request(input).match(/'(.*\\.mp3)'/)[1]\nvar lrc = pdfh(request(input),'#lrccont&&Html').replace(/<!.*?>/,'').replace(/<br>/g,'')\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n    })           \n })\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.list-song&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], '.song&&Text'),\n        desc: parseDomForHtml(list[j], '.artist&&Text'),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') +$('').lazyRule(() => {\nvar url ='http://mpge.5nd.com/'+request(input).match(/'(.*\\.mp3)'/)[1]\nvar lrc = pdfh(request(input),'#lrccont&&Html').replace(/<!.*?>/,'').replace(/<br>/g,'')\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n    })           \n })\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.5nd.com/so/s_**","group":"音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://m.5nd.com/favicon.ico"},{"last_chapter_rule":"","title":"宝贝DJ🎶","author":"缘分","version":2,"type":"music","url":"http://www.bbdj.com/fyAllfypage.html","col_type":"card_pic_3","class_name":"热门专辑&DJ专辑&慢歌连版&串烧舞曲&华语Remix&外语Remix&","class_url":"/hot/list-0-&/djshow/i&html/list/100_0_0_0_0_&/html/list/2_0_0_0_0_&/html/list/4_0_0_0_0_&/html/list/101_0_0_0_0_&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(request('hiker://page/lazy')).rule);\ntry {\n    var list = parseDomForArray(getResCode(), '.list_musiclist||.remix_list_ct&&ul||.remixbg||tr,1:');\n    //log(list);\n    for (var j in list) {\nlet title = pdfh(list[j], 'h4||h2||a&&Text');\n        d.push({\n            title: title,\n            pic_url: parseDom(list[j], 'img&&src'),\n            url: MY_URL.indexOf('/hot/list-0-') > -1 ? MY_HOME + parseDomForHtml(list[j], 'a&&href').replace('1.html', 'fypage.html')+ \"#noLoading##gameTheme##noRefresh##background#\" : MY_URL.indexOf('/djshow/i') > -1 ? MY_HOME + parseDomForHtml(list[j], 'a&&href').replace('.html', '-0-fypage.html')+ \"#noLoading##gameTheme##noRefresh##background#\" : parseDom(list[j], 'a&&href') + lazy,\n            col_type: MY_URL.indexOf('/hot/list-0-') > -1 ? 'card_pic_3' : MY_URL.indexOf('/djshow/i') > -1 ? 'movie_2' : 'text_1',\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(request('hiker://page/lazy')).rule);\ntry {\n    var list = parseDomForArray(getResCode(), '.list_musiclist&&tr,1:');\n    for (var j in list) {\n        d.push({\n            title: '‘‘' + parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], 'td&&Text'),\n            url: parseDom(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.bbdj.com/search/so?skeys=**&classid=0&specialid=0&qlid=0&byid=0&xkeys=&lx=1&page=fypage","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\neval(JSON.parse(request('hiker://page/lazy')).rule);\nlet 传输列表 = []\n\nlet list = pdfa(getResCode(), '.list_musiclist_hot||.list_musiclist&&tr,1:');\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\n    for (var j in list) {\n        let first = pdfh(list[0], 'a&&title');\n        let title = pdfh(list[j], 'a&&title');\n        let desc = pdfh(list[j], 'td&&Text');\n        let img = pd(getResCode(), '.djtx&&img&&src');\n        let url = pd(list[j], 'a&&href') + lazy;\n        /* 快速告诉x5列表样式，很重要 */\n        let col_type = 'text_1'\n        putVar('样式', col_type)\n        putVar('选中颜色', '#3CE68E');\n        if (col_type == 'text_1')\n            xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        else\n            xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        d.push({\n            title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n            desc: desc,\n            img: img,\n            col_type: col_type,\n            url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n                if (getVar('索引') != title) {\n                    refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                    updateItem(getVar('索引', first), {\n                        title: getVar('索引', first)\n                    })\n                    updateItem(title, {\n                        title: xy\n                    })\n                    putVar('索引', title)\n                } else {\n                    return 'download://' + getVar('播放链接');\n                }\n                return 'hiker://empty';\n            }, title, first, xy),\n            extra: {\n                id: title\n            },\n        });\n\n        传输列表.push({\n            封面: img,\n            曲名: title,\n            歌手: desc,\n            地址: url,\n        })\n    }\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"movie_3\",\"name\":\"动态解析\",\"path\":\"lazy\",\"rule\":\"var lazy = $('').lazyRule(() => {\\n  var html = request(input)\\nfunction DeCode() {\\n  this.OO0O00OO00OO = function (_0x293ce2, _0x5e62b7) {\\n    return _0x5e62b7 > 0 ? _0x293ce2.substring(0, _0x5e62b7) : null;\\n  };\\n\\n  this.OO00OO0O00O0 = function (_0x5a72a3, _0x29f61f) {\\n    return _0x5a72a3.length - _0x29f61f >= 0 && _0x5a72a3.length >= 0 && _0x5a72a3.length - _0x29f61f <= _0x5a72a3.length ? _0x5a72a3.substring(_0x5a72a3.length - _0x29f61f, _0x5a72a3.length) : null;\\n  };\\n\\n  this.O0000OO0OO00O0 = function (_0x146848, _0x14bbd9) {\\n\\n\\n    var _0x2f7c74 = \\\"\\\";\\n\\n    for (_0x141578 = 0; _0x141578 < _0x14bbd9.length; _0x141578++) {\\n      _0x2f7c74 += _0x14bbd9.charCodeAt(_0x141578).toString();\\n    }\\n\\n    for (_0x3a3750 = Math.floor(_0x2f7c74.length / 5), _0x26f55f = parseInt(_0x2f7c74.charAt(_0x3a3750) + _0x2f7c74.charAt(2 * _0x3a3750) + _0x2f7c74.charAt(3 * _0x3a3750) + _0x2f7c74.charAt(4 * _0x3a3750) + _0x2f7c74.charAt(5 * _0x3a3750)), _0x369614 = Math.round(_0x14bbd9.length / 2), _0x3f52ad = Math.pow(2, 31) - 1, _0x3b8bfd = parseInt(_0x146848.substring(_0x146848.length - 8, _0x146848.length), 16), _0x146848 = _0x146848.substring(0, _0x146848.length - 8), _0x2f7c74 += _0x3b8bfd; _0x2f7c74.length > 10;) {\\n      _0x2f7c74 = (parseInt(_0x2f7c74.substring(0, 10)) + parseInt(_0x2f7c74.substring(10, _0x2f7c74.length))).toString();\\n    }\\n\\n    for (_0x2f7c74 = (_0x26f55f * _0x2f7c74 + _0x369614) % _0x3f52ad, _0x43532f = \\\"\\\", _0x1df3b9 = \\\"\\\", _0x141578 = 0; _0x141578 < _0x146848.length; _0x141578 += 2) {\\n      _0x43532f = parseInt(parseInt(_0x146848.substring(_0x141578, _0x141578 + 2), 16) ^ Math.floor(255 * (_0x2f7c74 / _0x3f52ad)));\\n      _0x1df3b9 += String.fromCharCode(_0x43532f);\\n      _0x2f7c74 = (_0x26f55f * _0x2f7c74 + _0x369614) % _0x3f52ad;\\n    }\\n\\n    return _0x1df3b9;\\n  };\\n\\n  this.O0000OO0OO00O = function (_0x533a57, _0x3e7331, _0x36f6c3) {\\n    return _0x533a57.length >= 0 ? _0x533a57.substr(_0x3e7331, _0x36f6c3) : null;\\n  };\\n\\n  this.O0O000000O0O0 = function (_0x448af7) {\\n    return _0x448af7.length;\\n  };\\n\\n  this.O000O0OO0O0OO = function (_0x261f17, _0x35d002) {\\n\\n\\n    var _0x3fd6fa = _0x35d002;\\n\\n    var _0x243e5e = this.O0O000000O0O0(_0x3fd6fa);\\n\\n    var _0x59b6fa = _0x243e5e;\\n\\n    var _0x5347b7 = new Array();\\n\\n    var _0x1bacf4 = new Array();\\n\\n    for (_0x1f10fb = 1; _0x243e5e >= _0x1f10fb; _0x1f10fb++) {\\n      _0x5347b7[_0x1f10fb] = this.O0000OO0OO00O(_0x3fd6fa, _0x1f10fb - 1, 1).charCodeAt(0);\\n      _0x1bacf4[_0x59b6fa] = _0x5347b7[_0x1f10fb];\\n      _0x59b6fa -= 1;\\n    }\\n\\n    for (_0x1f4b91 = \\\"\\\", _0x2b064e = _0x261f17, _0x1f476c = this.OO0O00OO00OO(_0x2b064e, 2), _0x2b064e = this.OO00OO0O00O0(_0x2b064e, this.O0O000000O0O0(_0x2b064e) - 2), _0x1f10fb = 0; _0x1f10fb < this.O0O000000O0O0(_0x2b064e); _0x1f10fb += 4) {\\n      _0x2d0911 = this.O0000OO0OO00O(_0x2b064e, _0x1f10fb, 4);\\n      \\\"\\\" != _0x2d0911 && (_0x35d002 = this.OO0O00OO00OO(_0x2d0911, 1), _0xbe4851 = (parseInt(this.OO00OO0O00O0(_0x2d0911, 3)) - 100) / 3, _0x1f476c == this.O0000OO0OO00O0(\\\"a9ab044c634a\\\", \\\"O0000OO0OO00O\\\") ? (_0x61150f = 2 * parseInt(_0x35d002.charCodeAt(0)), _0x5b6e4e = parseInt(_0x5347b7[_0xbe4851]), _0x5b2182 = _0x61150f - _0x5b6e4e, _0x1f4b91 += String.fromCharCode(_0x5b2182)) : (_0x61150f = 2 * parseInt(_0x35d002.charCodeAt(0)), _0x5b6e4e = parseInt(_0x1bacf4[_0xbe4851]), _0x5b2182 = _0x61150f - _0x5b6e4e, _0x1f4b91 += String.fromCharCode(_0x5b2182)));\\n    }\\n\\n    return _0x1f4b91;\\n  };\\n}\\n  eval(pdfh(html,'.play_ct&&script&&Html'))\\n    return playurl2+'#isMusic=true#'\\n})\"}]","proxy":"","icon":"http://www.bbdj.com/favicon.ico"},{"last_chapter_rule":"","title":"听蛙🎶","author":"缘分","version":1,"type":"music","url":"https://www.itingwa.com/fyAllfypage","col_type":"movie_1_left_pic","class_name":"所有专辑&精选专辑&自建专辑&发行专辑","class_url":"album/index?p=&album/choice?p=&album/collection?p=&album/issue?p=","area_name":"精选电台&最新电台&精选单曲&最新单曲&","area_url":"radio/choice/&radio/news/&music/&new_music/&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar rule=$('').rule(()=>{\nvar d = [];\nvar html =getResCode();\nfor (var b = 0; b < 3; b++) {\nd.push({\n    col_type: 'big_blank_block'\n})\n}\nif (getVar('pd') == '') {\n    d.push({\n        title: pdfh(html, 'h1&&Text').replace('','点击播放 ').fontcolor(\"red\"),\n        pic_url: pd(html, '.music_intro&&img&&src') + '@Referer=',\n        url: pd(html, '#tw_player&&init-data') + '#noHistory#@lazyRule=.js:putVar2(\"pd\",input);refreshPage();\"toast://正在加载播放！\";',\ncol_type: 'avatar'\n    });\n} else {\n    d.push({\n        desc: 'auto',\n        url: getVar('pd'),\n        col_type: 'x5_webview_single'\n    });\n    putVar2('pd', '');\n}\n   d.push({\n    title: parseDom(html, '.song_info&&Html').replace(/\\<script[\\S\\s]*?<\\/script\\>/g, '').replace(/&nbsp;/g, ''),\n    col_type: 'rich_text'\n});   \nd.push({\n    title: parseDom(html, '.music_intro&&Html').replace(/src=\\\"/g,'src=\"https://www.itingwa.com'),\n    col_type: 'rich_text'\n});   \nsetResult(d);\n});\ntry {\n    var list = pdfa(getResCode(), '.album_items||.lt_frame&&dl||li');\n//log(list);\n    for (var j in list) {\nlet title = pdfh(list[j], 'a,1&&Text');\n        d.push({\n            title: title,\n            desc: pdfh(list[j], '.top_10&&Text'),\n            pic_url: pd(list[j], 'img,1||img&&src') + '@Referer=',\n            url: MY_URL.indexOf('album') > -1 ? pd(list[j], 'a&&href')+ \"#noLoading##gameTheme##noRefresh##background#\" :pd(list[j], 'a,1&&href')+rule,\ncol_type: MY_URL.indexOf('album') > -1 ?'card_pic_3':'',\n           extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), 'tbody&&tr');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            desc: pdfh(list[j], 'a,1&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: pd(list[j], 'a&&href') + $('').lazyRule(() => {\n                var url = pdfh(request(input), '#tw_player&&init-data')\n                return url\n            })\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://so.itingwa.com/?c=index&k=**&t=1&p=fypage","group":"音频","detail_col_type":"icon_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nlet 传输列表 = []\n\nlet list = pdfa(getResCode(), '#album_music_items&&li');\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\n    for (var j in list) {\n        let first = pdfh(list[0], 'a,1&&Text');\n        let title = pdfh(list[j], 'a,1&&Text');\n        let desc = pdfh(list[j], '.data_wrap&&Text');\n        let img = pd(list[j], 'img&&src');\n        let url = pd(list[j], 'a,1&&href') + $('').lazyRule(() => {\n                var url = pdfh(request(input), '#tw_player&&init-data')\n                return url\n            });\n        /* 快速告诉x5列表样式，很重要 */\n        let col_type = 'avatar'\n        putVar('样式', col_type)\n        putVar('选中颜色', '#3CE68E');\n        if (col_type == 'text_1')\n            xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        else\n            xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        d.push({\n            title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n            desc: desc,\n            img: img,\n            col_type: col_type,\n            url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n                if (getVar('索引') != title) {\n                    refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                    updateItem(getVar('索引', first), {\n                        title: getVar('索引', first)\n                    })\n                    updateItem(title, {\n                        title: xy\n                    })\n                    putVar('索引', title)\n                } else {\n                    return 'download://' + getVar('播放链接');\n                }\n                return 'hiker://empty';\n            }, title, first, xy),\n            extra: {\n                id: title\n            },\n        });\n\n        传输列表.push({\n            封面: img,\n            曲名: title,\n            歌手: desc,\n            地址: url,\n        })\n    }\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://static.itingwa.com/img/common/favicon.ico?2019"},{"last_chapter_rule":"","title":"百乐米","author":"缘分","version":20221107,"type":"music","url":"https://bailemi.com/fyclassfypage","col_type":"card_pic_3","class_name":"歌曲&歌单&歌手&","class_url":"song/id_1_&dance/songsheet/search?=＆＆page=&index.php/singer/search?=＆＆page=&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    inputs = input.replace(/http.*p(\\d+)\\.html/, 'https://bailemi.com/dance/Playsong/data?id=$1')\n    var url = request(inputs, {\n        headers: {\n            'Referer': MY_URL\n        }\n    }).match(/url\":\"(.*?)\"/)[1]\n    var url = url.replace(/\\\\/g, '')\ntry {\n    var title = pdfh(request(input),'.ss_track_info_innr&&h2&&Text');\n    var lrc = pd(request('http://zhannei.baidu.com/cse/search?q='+title+'&s=2237976389678693530&entry=1'),'a&&href')\n    var lrc = 'https://www.igeciku.com'+pdfh(request(lrc),'.download&&a&&href').replace('txt','lrc')\n\nreturn JSON.stringify({\n                    urls: [url+'#isMusic=true#'],\n                    lyric: lrc,\n                })} catch (e) {\nreturn url+'#isMusic=true#'\n}\n})\ntry {\n    var list = pdfa(getResCode(), '.s_list_songs||.sq_track_slider||#artists_search_result&&.list-recommended||.track||.artist_list');\n    for (var j in list) {\n        let title = pdfh(list[j], 'a&&title')\n        d.push({\n            title: title,\n            desc: pdfh(list[j], 'a,1&&Text'),\n            pic_url: pd(list[j], 'img&&src') ,\n            url: MY_URL.indexOf('dance') > -1 ? pd(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\" : MY_URL.indexOf('search') > -1 ? pd(list[j], 'a&&href').replace('show', 'music/id') + '/fypage' + \"#noLoading##gameTheme##noRefresh##background#\" : pd(list[j], 'a&&href') + lazy,\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy=$('').lazyRule(() => {\ninputs=input.replace(/http.*p(\\d+)\\.html/,'https://bailemi.com/dance/Playsong/data?id=$1')\nvar url=request(inputs,{headers: {\n                'Referer': 'https://bailemi.com/'\n            }}).match(/url\":\"(.*?)\"/)[1]\nvar url=url.replace(/\\\\/g,'')\ntry {\n    var title = pdfh(request(input),'.ss_track_info_innr&&h2&&Text');\n    var lrc = pd(request('http://zhannei.baidu.com/cse/search?q='+title+'&s=2237976389678693530&entry=1'),'a&&href')\n    var lrc = 'https://www.igeciku.com'+pdfh(request(lrc),'.download&&a&&href').replace('txt','lrc')\n\nreturn JSON.stringify({\n                    urls: [url+'#isMusic=true#'],\n                    lyric: lrc,\n                })} catch (e) {\nreturn url+'#isMusic=true#'\n}\n})\ntry {\n    var list = pdfa(getResCode(), '.s_list_songs&&.s_lsongs_child');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            desc: pdfh(list[j], 'a,1&&Text'),\n            pic_url: pd(list[j], 'img&&src') + '@Referer=',\n            url: pd(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://bailemi.com/dance/search?key=**&page=fypage","group":"音频","detail_col_type":"icon_2","detail_find_rule":"js:\nvar d = [];\n\nvar lazy = $('').lazyRule(() => {\n    input = input.replace(/http.*p(\\d+)\\.html/, 'https://bailemi.com/dance/Playsong/data?id=$1')\n    var url = request(input, {\n        headers: {\n            'Referer': MY_URL\n        }\n    }).match(/url\":\"(.*?)\"/)[1]\n    //log(url);\n    return url+'#isMusic=true#'\n})\nlet 传输列表 = []\nvar list = pdfa(getResCode(), '#topic_list||.s_list_songs&&tr:not(:matches(全选))||.s_lsongs_child');\n\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let title = pdfh(list[j], 'a&&title');\n    let first = pdfh(list[0], 'a&&title');\n    let desc = pdfh(list[j], '.lazyload&&Text');\n    let url = pd(list[j], 'a&&href') + lazy;\n    let img = pd(getResCode(), '.al_art_img||.play-img&&style||src');\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'text_1'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://bailemi.com/favicon.ico"},{"last_chapter_rule":"","title":"爱音人","author":"缘分","version":20221107,"type":"music","url":"http://www.iyinren.com/list/fyAll/fypage/","col_type":"text_1","class_name":"专 辑&歌 手&好 歌&新 歌&","class_url":"2&1&13&5&","area_name":"古典乐&电子乐&钢琴曲&影视原声&乡村民谣&胎教音乐&天籁之声&手机铃声&新世纪&催眠曲&","area_url":"14&15&16&17&18&19&20&21&22&23&","sort_name":"","year_name":"人气排行&推荐排行&好评排行&收藏排行&下载排行&免费排行","sort_url":"","year_url":"6&7&8&10&11&12","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    var url = pdfh(request(input), '.page&&script&&Html').split(\"|\")[4] + '.mp3'\n    var id = pdfh(request(input), '.page&&script&&Html').split(\"|\")[0].match(/.*?\"(\\d+)/)[1]\n    var lrc = request('http://www.iyinren.com/lrc/' + id + '.js').match(/song_Lrc.*?= \"(.*)\"/)[1].replace(/\\[/g, '\\n[')\n    return JSON.stringify({\n        urls: [url],\n        lyric: lrc\n    })\n});\ntry {\n    var list = pdfa(getResCode(), '.musicList||.pubList&&li');\n    for (var j in list) {\n        let title = pdfh(list[j], 'strong&&Text');\n        d.push({\n            title: title,\n            desc: pdfh(list[j], 'em&&Text'),\n            pic_url: pd(list[j], 'img&&src'),\n            url: MY_URL.indexOf('list/1/') > -1 ? pd(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\" : MY_URL.indexOf('list/2/') > -1 ? pd(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\" : pd(list[j], 'a&&href') + lazy,\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            },\n            col_type: MY_URL.indexOf('list/1/') > -1 ? 'icon_round_4' : MY_URL.indexOf('list/2/') > -1 ? 'movie_1_left_pic' : '',\n\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule(() => {\n    var url = pdfh(request(input), '.page&&script&&Html').split(\"|\")[4] + '.mp3'\n    var id = pdfh(request(input), '.page&&script&&Html').split(\"|\")[0].match(/.*?\"(\\d+)/)[1]\n    var lrc = request('http://www.iyinren.com/lrc/' + id + '.js').match(/song_Lrc.*?= \"(.*)\"/)[1].replace(/\\[/g, '\\n[')\n    return JSON.stringify({\n        urls: [url],\n        lyric: lrc\n    })\n});\ntry {\n    var list = pdfa(getResCode(), '.musicList&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),\n            desc: pdfh(list[j], 'em&&Text'),\n            url: pd(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.iyinren.com/search.php?action=keyword&key=**&pages=fypage","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = []; \nlet 传输列表 = []\n let list = pdfa(getResCode(), '.musicList&&li');  \n\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let first = pdfh(list[0], 'a&&Text');\n    let title = pdfh(list[j], 'a&&Text');   \n    let desc = pdfh(list[j], 'em&&Text');\n    let img = pd(getResCode(), '#singerPic&&src');\n    let url = pd(list[j], '.t-n&&Text').split(\"|\")[4]+'.mp3';\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://www.iyinren.com/favicon.ico"},{"last_chapter_rule":"","title":"5SING歌单.h5","author":"缘分","version":20220919,"type":"music","url":"http://5sing.kugou.com/gd/gdList?&tagName=fyAll&page=fypage&type=0","col_type":"card_pic_3","class_name":"全部\n&流行&爵士&小清新&轻音乐&中国风&摇滚&DJ&古风&武侠&钢琴曲&广场舞&民谣&乡村","class_url":"&流行&爵士&小清新&轻音乐&中国风&摇滚&DJ&古风&武侠&钢琴曲&广场舞&民谣&乡村","area_name":"感动&寂寞&安静&温暖&浪漫&治愈&伤感&想念&激情&喜悦&失恋&怀念","area_url":"感动&寂寞&安静&温暖&浪漫&治愈&伤感&想念&激情&喜悦&失恋&怀念","sort_name":"原创&翻唱&毕业&情歌&经典&怀旧&爱情&励志&儿歌&影视&男女对唱&歌词控&动漫","year_name":"华语&欧美&日语&韩语&俄语&法语&德语&粤语&闽南语&方言&西班牙语&其它","sort_url":"原创&翻唱&毕业&情歌&经典&怀旧&爱情&励志&儿歌&影视&男女对唱&歌词控&动漫","year_url":"华语&欧美&日语&韩语&俄语&法语&德语&粤语&闽南语&方言&西班牙语&其它","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.lbox&&li');\nfor (var j in list) {\nlet title = parseDomForHtml(list[j], 'img&&alt');\n    d.push({\n        title: title,\n        desc: parseDomForHtml(list[j], ''),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\",\n        extra: {\n                newWindow: true,\n                windowId: title\n            }\n    });\n}\nsetResult(d);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\n var json = {};\n eval('json=' + getResCode());\n var res = {};\n var lazy = $(\"\").lazyRule(() => {\n     input = input.replace(/.*\\/(.*)\\/(\\d+)\\..*/, 'http://service.5sing.kugou.com/song/getsongurl?songtype=$1&songid=$2')\n     //log(input);\n     var json = JSON.parse(request(input)).data\n     if (json.hqurl) {\n         url = json.hqurl\n     } else if (json.lqurl) {\n         url = json.lqurl\n     } else if (json.squrl) {\n         url = json.squrl\n     }\n     return url\n });\n var lists = json.list;\n var items = lists.map(data => ({\n     title: data.songName.match(/\\>(.*?)\\</)[1] + '-『' + data.originSinger + \"』\",\n     url: data.songurl + lazy,\n }));\n res.data = items;\n setSearchResult(res);","search_url":"http://search.5sing.kugou.com/home/json?keyword=**&sort=1&page=fypage&filter=0&type=0","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/.*\\/(.*)\\/(\\d+)\\..*/, 'http://service.5sing.kugou.com/song/getsongurl?songtype=$1&songid=$2')\n    var json = JSON.parse(request(input)).data\n    if (json.hqurl) {\n        url = json.hqurl\n    } else if (json.lqurl) {\n        url = json.lqurl\n    } else if (json.squrl) {\n        url = json.squrl\n    }\n    return url\n});\nvar list = parseDomForArray(getResCode(), '.dj_songitems&&li');\nlet 传输列表 = []\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let first = pdfh(list[0], 'a&&Text');\n    let title = pdfh(list[j], 'a&&Text');   \n    let desc = parseDomForHtml(list[j], '.s_soner&&Text');\n    let img = pd(getResCode(), '.w_30&&img&&src');\n    let url = parseDom(list[j], 'a&&href')+lazy;\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'text_1'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"http://5sing.kugou.com/favicon.ico"},{"last_chapter_rule":"","title":"Y2002DJ🎶","author":"缘分","version":2,"type":"music","url":"http://m.y2002.com/HotSongList/fyAll/fypage.html","col_type":"text_1","class_name":"3D环绕&串烧&语录&中文&外文&","class_url":"27&24&25&29&30&","area_name":"纯电&广场舞&铃声&","area_url":"28&26&23&","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = pdfa(getResCode(), '.datalist&&li');\n    for (var j in list) {\n        \n        d.push({\n            title: pd(list[j], '.songname&&Text'),\n            url: pd(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\",\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar d = [];\n    var list = pdfa(getResCode(), '#J_dances&&tr');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'Text'),           \n            url: pd(list[j], 'a,1&&href').replace('www','m') + $('').lazyRule(() => {\n                var url = pdfh(request(input), 'audio&&src')\n                return url + '#isMusic=true#'\n            })\n        });\n    }\nsetResult(d)","search_url":"https://www.dj97.com/so?t=d&k=**&page=fypage","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $('').lazyRule((MY_HOME) => {\n    var url = request(input).match(/var md = \"(.*?)\"/)[1]\n    url = unescape(base64Decode(url));\n    var urls = request(input).match(/var mu =\"(.*?)\"/)[1]\n    urls = unescape(base64Decode(urls));\n    log(url)\n    return url + urls\n}, MY_HOME)\nlet 传输列表 = []\nlet pic = request(MY_URL.replace('m', 'www'));\nlet list = pdfa(getResCode(), '.hotmusiclist&&li');\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\n    for (var j in list) {\n        let first = pdfh(list[0], 'span&&Text');\n        let title = pdfh(list[j], 'span&&Text');\n        let desc = pdfh(list[j], '');\n        let img = pd(pic, '.userhead&&img&&src');\n        let url = pd(list[j], 'a&&href') + lazy;\n        /* 快速告诉x5列表样式，很重要 */\n        let col_type = 'text_1'\n        putVar('样式', col_type)\n        putVar('选中颜色', '#3CE68E');\n        if (col_type == 'text_1')\n            xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        else\n            xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        d.push({\n            title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n            desc: desc,\n            img: img,\n            col_type: col_type,\n            url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n                if (getVar('索引') != title) {\n                    refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                    updateItem(getVar('索引', first), {\n                        title: getVar('索引', first)\n                    })\n                    updateItem(title, {\n                        title: xy\n                    })\n                    putVar('索引', title)\n                } else {\n                    return 'download://' + getVar('播放链接');\n                }\n                return 'hiker://empty';\n            }, title, first, xy),\n            extra: {\n                id: title\n            },\n        });\n\n        传输列表.push({\n            封面: img,\n            曲名: title,\n            歌手: desc,\n            地址: url,\n        })\n    }\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://js.y2002.com/images/logo.gif"},{"last_chapter_rule":"","title":"5SING歌单","author":"缘分","version":20221107,"type":"music","url":"http://5sing.kugou.com/gd/gdList?&tagName=fyAll&page=fypage&type=0","col_type":"card_pic_3","class_name":"全部\n&流行&爵士&小清新&轻音乐&中国风&摇滚&DJ&古风&武侠&钢琴曲&广场舞&民谣&乡村","class_url":"&流行&爵士&小清新&轻音乐&中国风&摇滚&DJ&古风&武侠&钢琴曲&广场舞&民谣&乡村","area_name":"感动&寂寞&安静&温暖&浪漫&治愈&伤感&想念&激情&喜悦&失恋&怀念","area_url":"感动&寂寞&安静&温暖&浪漫&治愈&伤感&想念&激情&喜悦&失恋&怀念","sort_name":"原创&翻唱&毕业&情歌&经典&怀旧&爱情&励志&儿歌&影视&男女对唱&歌词控&动漫","year_name":"华语&欧美&日语&韩语&俄语&法语&德语&粤语&闽南语&方言&西班牙语&其它","sort_url":"原创&翻唱&毕业&情歌&经典&怀旧&爱情&励志&儿歌&影视&男女对唱&歌词控&动漫","year_url":"华语&欧美&日语&韩语&俄语&法语&德语&粤语&闽南语&方言&西班牙语&其它","find_rule":"js:\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.lbox&&li');\nfor (var j in list) {\nlet title = parseDomForHtml(list[j], 'img&&alt');\n    d.push({\n        title: title,\n        desc: parseDomForHtml(list[j], ''),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n        url: parseDom(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\",\n        extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n    });\n}\nsetResult(d);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\n var json = {};\n eval('json=' + getResCode());\n var res = {};\nvar name = MY_URL.split(\"=\")[1].split(\"&\")[0]\n var lazy = $(\"\").lazyRule((name) => {\n     inputs = input.replace(/.*com\\/(.*?)\\/(\\d+)\\..*/, 'http://service.5sing.kugou.com/song/getsongurl?songtype=$1&songid=$2')\n     var json = JSON.parse(request(inputs)).data\n     if (json.hqurl) {\n         url = json.hqurl\n     } else if (json.lqurl) {\n         url = json.lqurl\n     } else if (json.squrl) {\n         url = json.squrl\n     }\ntry {\nvar lrc = pd(request('http://zhannei.baidu.com/cse/search?q='+name+'&s=2237976389678693530&entry=1'),'a&&href') \nvar lrc = 'https://www.igeciku.com'+pdfh(request(lrc),'.download&&a&&href').replace('txt','lrc')\n     return JSON.stringify({\n                    urls: [url+'#isMusic=true#'],\n                    lyric: lrc,\n                })} catch (e) {\nreturn url+'#isMusic=true#'\n}\n },name);\n var lists = json.list;\n var items = lists.map(data => ({\n     title: data.songName.match(/\\>(.*?)\\</)[1] + '-『' + data.originSinger + \"』\",\n     url: data.songurl + lazy,\n }));\nlog(items)\n res.data = items;\n setSearchResult(res);","search_url":"http://search.5sing.kugou.com/home/json?keyword=**&sort=1&page=fypage&filter=0&type=0","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/.*\\/(.*)\\/(\\d+)\\..*/, 'http://service.5sing.kugou.com/song/getsongurl?songtype=$1&songid=$2')\n    var json = JSON.parse(request(input)).data\n    if (json.hqurl) {\n        url = json.hqurl\n    } else if (json.lqurl) {\n        url = json.lqurl\n    } else if (json.squrl) {\n        url = json.squrl\n    }\n    return url\n});\nvar list = parseDomForArray(getResCode(), '.dj_songitems&&li');\nlet 传输列表 = []\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (var j in list) {\n    let first = pdfh(list[0], 'a&&Text');\n    let title = pdfh(list[j], 'a&&Text');   \n    let desc = parseDomForHtml(list[j], '.s_soner&&Text');\n    let img = pd(getResCode(), '.w_30&&img&&src');\n    let url = parseDom(list[j], 'a&&href')+lazy;\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'text_1'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"http://5sing.kugou.com/favicon.ico"},{"last_chapter_rule":"","title":"音樂mp3🎶","author":"缘分","version":2,"type":"music","url":"http://www.yymp3.com/top/fyAll","col_type":"text_1","class_name":"华语排行&欧美排行&日韩排行&","class_url":"&top_5.html&top_6.html&","area_name":"华语推荐&日韩推荐&欧美推荐","area_url":"top_7.html&top_8.html&top_9.html","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var html = request(input)\n    var url = \"http://ting6.yymp3.net:82/\" + html.match(/\\$song_data\\[0\\]=.*?\";/)[0].split(\"|\")[4].toLowerCase().replace(\".wma\", \".mp3\");\ninput = pd(request(input),'a,-1&&href')\n    var lrc = pdfh(request(input),'#lrc&&Html').replace(/<!.*?>/,'').replace(/<br>/g,'')\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n    })           \n});\ntry {\n    var list = parseDomForArray(getResCode(), '#main&&li:not(:matches(华语音乐|欧美音乐|日韩音乐))');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'),\n            desc: parseDomForHtml(list[j], ''),\n            pic_url: parseDom(list[j], ''),\n            url: parseDom(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    var html = request(input)\n    var url = \"http://ting6.yymp3.net:82/\" + html.match(/\\$song_data\\[0\\]=.*?\";/)[0].split(\"|\")[4].toLowerCase().replace(\".wma\", \".mp3\");\ninput = pd(request(input),'a,-1&&href')\n    var lrc = pdfh(request(input),'#lrc&&Html').replace(/<!.*?>/,'').replace(/<br>/g,'')\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n    })           \n});\ntry {\n    var list = getResCode().match(/song_data\\[3\\]='(.*?)\\|\\|'/)[1].split(\"||\")\nlog(list)\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'Html').match(/\\|(.*?)\\|/)[1],\n            desc: parseDomForHtml(list[j], 'Html').match(/\\|.*\\|(.*?)\\|new/)[1],\n            url: 'http://www.yymp3.com/Play/'+list[j].split(\"|\")[5]+'/'+list[j].split(\"|\")[0]+'.htm'+lazy \n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"http://www.yymp3.com/p/getser.aspx?key=**&page=fypage","group":"音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://img.yymp3.com/favicon.ico"},{"last_chapter_rule":"js:\nvar html = getResCode();\nvar list = pdfa(html, '.compress&&li');\nvar i =list.length\nvar title = pdfh(list[i,i-1], 'a&&title');\nsetResult(\"更新至: \" + title)","title":"海洋听书🎵","author":"缘分","version":2,"type":"music","url":"http://m.ychy.com/list/fyAll_fypage.html;get;gb2312","col_type":"movie_3","class_name":"网络玄幻&恐怖悬疑&评书下载&儿童读物&","class_url":"52&17&3&4&","area_name":"相声戏曲&传统武侠&都市言情&历史军事&","area_url":"7&12&13&15&","sort_name":"探险盗墓&职场商战","year_name":"人物传记&广播剧&百家讲坛&有声文学&","sort_url":"45&81","year_url":"16&18&32&41&","find_rule":"js:\nvar res = {};\nvar d = [];\ntry {\n    var list = parseDomForArray(getResCode(), '.list-ul&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], '.tit&&Text'),\n            desc: parseDomForHtml(list[j], 'p&&span&&Text'),\n            pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n            url: parseDom(list[j], 'a&&href') + \"#immersiveTheme#\"\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar res = {};\nvar d = [];\nlog(getResCode())\ntry{\nvar list = parseDomForArray(getResCode(), '.book_slist&&.bookbox');\nlog(list)\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'h4&&Text'),\n       desc:parseDomForHtml(list[j], '.update&&Text'),\n       pic_url: parseDom(list[j], 'img&&orgsrc')+'@Referer=',\n      url :'http://m.ychy.com/book/'+pdfh(list[j], '.bookbox&&bookid')+'.html' + \"#immersiveTheme#\"\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.ychy.com/search.asp?page=fypage&searchword=**&searchtype=-1;post;gb2312","group":"音频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nvar html = getResCode();\ntry{\nd.push({\n    title: pdfh(html, '.info&&div,1&&Text').substring(0, 18) +\n        '\\n' +\n        '\\n' +\n        pdfh(html,\n            '.info&&div,2&&Text').substring(0, 18),\n    desc: pdfh(html, '.info&&div,4&&Text'),\n    img: pd(html,\n        '.bookimg&&img&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n});}catch(e){}\ntry{\nd.push({\n    title: pdfh(html, '.content_center&&Text').substring(0, 18) ,\n            desc: pdfh(html, ''),\n    img: pd(html,\n        '.content_right&&img&&src') + '@Referer=',\n    url: MY_URL,\n    col_type: 'movie_1_vertical_pic_blur',\n    extra: {\n        gradient: true\n    }\n})}catch(e){}\n/*var urls = pd(html, '.bookbutton&&a&&href');\nvar list = eval(request(urls).match(/VideoListJson=.*?FLV.*?(\\[[\\s\\S]*?\\])\\]\\]/)[1]);\nfor (var j in list) {\n    var title = list[j].split(\"$\")[0];\n    var url = list[j].split(\"$\")[1];\n    d.push({\n        title: title,\n        url: url ,\n        col_type: list.length > 3 ? 'text_4' : 'text_2'\n    });\n}*/\nvar lazy = $('').lazyRule(() => {\nlog(getCookie(input))\nrequireCache('hiker://page/globalParse?rule=道长仓库Pro', 24);\n        return lazyParse(input);    \n});\nvar list = pdfa(html, '.compress||.playlist&&li');\n\nd.push({\n       title: (getVar('shsort') == '1') ? '““””<b><span style=\"color: #FF0000\">逆序▲共' + list.length + '集</span></b>' : '““””<b><span style=\"color: #1aad19\">正序▼共' + list.length + '集</span></b>',\n        url: `@lazyRule=.js:let conf = getVar('shsort');if(conf=='1'){putVar({key:'shsort', value:'0'});}else{putVar({key:'shsort', value:'1'})};refreshPage();'toast://切换排序成功'`,\n        col_type: 'text_center_1'\n    })\nif (getVar('shsort') == '1') {\n\n    for (var j = list.length - 1; j >= 0; j--) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),          \n            url: pd(list[j], 'a&&href') +lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }}else {\nfor (var j = 0; j < list.length; j++) { \n        d.push({\n            title: pdfh(list[j], 'a&&title'),          \n            url: pd(list[j], 'a&&href') +lazy,\n            col_type: list.length > 3 ? 'text_4' : 'text_2'\n        });\n    }\n}\nsetResult(d);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"http://www.ychy.com/template/ychy_2019/images/ychy_logo.png"},{"last_chapter_rule":"","title":"轻音乐🎶","author":"缘分","version":2,"type":"music","url":"http://m.htqyy.com/fyAll","col_type":"movie_1_left_pic","class_name":"专辑&纯音乐&新世纪&钢琴曲&","class_url":"album&album/index/1&album/index/2&album/index/3&","area_name":"电子乐&背景音乐&铃声&流行&","area_url":"album/index/8&album/index/9&album/index/10&album/index/11&","sort_name":"","year_name":"减压放松&中国音乐&天籁&影视&","sort_url":"","year_url":"album/index/4&album/index/5&album/index/6&album/index/7&","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html,'.list&&li');\nfor (var j in list) {\nvar title = parseDomForHtml(list[j], 'a&&Text');\n    d.push({\n        title: title,\n        desc: parseDomForHtml(list[j], 'em&&Text'),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=http://m.htqyy.com/',\n        url: parseDom(list[j], 'a&&href') + \"#noLoading##gameTheme##noRefresh##background#\",\n        extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n    });\n}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar list = parseDomForArray(html, '.list&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),\n        desc: parseDomForHtml(list[j], 'em&&Text'),\n        pic_url: parseDom(list[j], 'img&&src') + '@Referer=',\n        url: parseDom(list[j], 'a&&href')+$('').lazyRule(() => {\nvar mp = request(input).match(/format: \"(.*?)\"/)[1]\nvar url =input.replace(/.*?(\\d+)/, 'http://f3.htqyy.com/play9/$1/'+mp+'/6') + '#isMusic=true#'\nreturn url\n}),\n    });\n}\nres.data = d;\nsetHomeResult(res);","search_url":"http://m.htqyy.com/search/result?id=**","group":"音频","detail_col_type":"movie_1_vertical_pic_blur","detail_find_rule":"js:\nvar res = {};\nvar d = []; \nvar html = getResCode();\nlet 传输列表 = []\n    var list = pdfa(html, '.list&&li');\n    let img = pd(html, '.mod&&img&&src');\n    let xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\n    if (xd == false) {\n        for (var j in list) {\n            let first = pdfh(list[0], 'a&&Text');\n            let title = pdfh(list[j], 'a&&Text');\n            let desc = pdfh(list[j], 'em&&Text');          \n            let url = parseDom(list[j], 'a&&href')+$('').lazyRule(() => {\nvar mp = request(input).match(/format: \"(.*?)\"/)[1]\nvar url =input.replace(/.*?(\\d+)/, 'http://f3.htqyy.com/play9/$1/'+mp+'/6') + '#isMusic=true#'\nreturn url\n});\n\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"http://m.htqyy.com/favicon.ico"},{"last_chapter_rule":"","title":"dj音乐🎶","author":"缘分","version":1,"type":"music","url":"https://www.dj.net/fyclass-fypage.html","col_type":"text_3","class_name":"推荐乐单&慢摇串烧&劲爆串烧&专业串烧&歌曲连版&外文单曲&中文单曲&流行音乐","class_url":"album-all&dj-class-13&dj-class-80&dj-class-82&dj-class-5&dj-class-17&dj-class-84&dj-class-94","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/.*?(\\d+)\\.html/, 'https://www.dj.net/template/zhzh_dzmusic/ajax/?action=geturl&id=$1')\n    var json = JSON.parse(request(input)).data\n    //log(json); \n    url = request(input).match(/\"u\":\"(.*?)\"/)[1]\n    urll = request(input).match(/src\":\"(.*?)\"/)[1]\n    return url + urll\n});\ntry {\n    var list = parseDomForArray(getResCode(), '.tbox1_nohits&&.tb_lt&&li');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&title'),\n            desc: parseDomForHtml(list[j], ''),\n            pic_url: '',\n            url: parseDom(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {\n    var lists = parseDomForArray(getResCode(), '.album-list&&li');\n    //log(lists);\n    for (var j in lists) {\n        d.push({\n            title: pdfh(lists[j], 'a&&title'),\n            desc: parseDomForHtml(lists[j], 'dd&&Text'),\n            pic_url: parseDom(lists[j], 'img&&src') + '@Referer=',\n            url: parseDom(lists[j], 'a&&href').replace('1.html', 'fypage.html')+ \"#noLoading##gameTheme##noRefresh##background#\",      \n            col_type: 'movie_1_left_pic',\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n}\nres.data = d;\nsetHomeResult(res);\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/.*?(\\d+)\\.html/, 'https://www.dj.net/template/zhzh_dzmusic/ajax/?action=geturl&id=$1')\n    var json = JSON.parse(request(input)).data\n    //log(json); \n    url = request(input).match(/\"u\":\"(.*?)\"/)[1]\n    urll = request(input).match(/src\":\"(.*?)\"/)[1]\n    return url + urll\n});\ntry {\n    var list = parseDomForArray(getResCode(), '#Tbs&&.d:has(a)');\n    for (var j in list) {\n        d.push({\n            title: parseDomForHtml(list[j], 'a&&Text'),\n            desc: parseDomForHtml(list[j], ''),\n            url: parseDom(list[j], 'a&&href') + lazy\n        });\n    }\n} catch (e) {}\nres.data = d;\nsetHomeResult(res);","search_url":"https://www.dj.net/search.php?mod=music&formhash=8c964e8a&srchtxt=**&searchsubmit=yes&page=fypage;get;GBK;{User-Agent@Windows&&Cookie@id}","group":"音频","detail_col_type":"text_2","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nvar lazy = $(\"\").lazyRule(() => {\n    input = input.replace(/.*?(\\d+)\\.html/, 'https://www.dj.net/template/zhzh_dzmusic/ajax/?action=geturl&id=$1')\n    var json = JSON.parse(request(input)).data\n    //log(json); \n    url = request(input).match(/\"u\":\"(.*?)\"/)[1]\n    urll = request(input).match(/src\":\"(.*?)\"/)[1]\n    return url + urll\n});\nlet 传输列表 = []\nlet list = pdfa(getResCode(), '.song-list&&li');\nlet img = pd(getResCode(), '.t-i&&img&&src');\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\n    for (var j in list) {\n        let first = pdfh(list[0], 'a&&Text');\n        let title = pdfh(list[j], 'a&&Text');\n        let desc = pdfh(list[j], '');      \n        let url = pd(list[j], 'a&&href') + lazy;\n        /* 快速告诉x5列表样式，很重要 */\n        let col_type = 'text_1'\n        putVar('样式', col_type)\n        putVar('选中颜色', '#3CE68E');\n        if (col_type == 'text_1')\n            xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        else\n            xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n        d.push({\n            title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n            desc: desc,\n            img: img,\n            col_type: col_type,\n            url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n                if (getVar('索引') != title) {\n                    refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                    updateItem(getVar('索引', first), {\n                        title: getVar('索引', first)\n                    })\n                    updateItem(title, {\n                        title: xy\n                    })\n                    putVar('索引', title)\n                } else {\n                    return 'download://' + getVar('播放链接');\n                }\n                return 'hiker://empty';\n            }, title, first, xy),\n            extra: {\n                id: title\n            },\n        });\n\n        传输列表.push({\n            封面: img,\n            曲名: title,\n            歌手: desc,\n            地址: url,\n        })\n    }\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://www.dj.net/favicon.ico"},{"last_chapter_rule":"","title":"云音乐","author":"缘分","version":20221107,"type":"music","url":"hiker://empty##fypage@-1@*30@#noLoading#","col_type":"card_pic_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\npage = getUrl().split(\"#\")[2]\nif (page == 0) {\n\n    let tabs = {\n        \"MV\": \"https://lanmeiguojiang.com/tubiao/q/169.png\",\n        \"歌单\": \"https://lanmeiguojiang.com/tubiao/q/167.png\",\n        \"排行榜\": \"https://lanmeiguojiang.com/tubiao/q/168.png\"\n    }\n    let yy = Object.entries(tabs)[0][0];\n\n    Object.entries(tabs).forEach(item => {\n      /*  putMyVar('选中颜色', '#3CE68E');\n        xy = '<b><font color=' + getMyVar('选中颜色') + '>' + item[0] + '</font></b>';*/\n        d.push({\n            title: item[0] == getMyVar('mode', 'MV')&& page == 00  ? '<b><span style=\"color: #19B89D\">'+item[0]+'</span></b>' : item[0],\n            img: item[1],\n            url: $().lazyRule((ta) => {\n                putMyVar(\"mode\", ta)\n                refreshPage()\n                return \"hiker://empty\"\n            }, item[0]),\n            col_type: \"icon_small_3\"\n        })\n    })\n}\n\nlet mode = getMyVar(\"mode\", \"MV\")\nif (mode == \"MV\") {\n    var html = request('http://121.4.78.106:4001/mv/all?offset=' + page);\n\n    var list = JSON.parse(html).data;\n    for (var j in list) {\n        d.push({\n            title: list[j].name,\n            pic_url: list[j].cover + '@Referer=',\n            url: 'http://121.4.78.106:4001/mv/url?id=' + list[j].id + $('').lazyRule(() => {\n                var url = JSON.parse(request(input)).data.url\n                return url;\n            }),\n            col_type: 'movie_2',\n        });\n    }\n} else if (mode == \"歌单\") {\n    var html = request('http://121.4.78.106:4001/personalized');\n    var list = JSON.parse(html).result;\n    for (var j in list) {\n        let title = list[j].name;\n        d.push({\n            title: title,\n            pic_url: list[j].picUrl,\n            url: 'http://121.4.78.106:4001/playlist/detail?id=' + list[j].id + '#noRefresh##gameTheme##background#' + $('').rule(() => {\n                eval(JSON.parse(fetch('hiker://page/gd')).rule);\n            }),\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n\n} else if (mode == \"排行榜\") {\n    var html = request('http://121.4.78.106:4001/toplist');\n    var list = JSON.parse(html).list;\n    for (var j in list) {\n        let title = list[j].name;\n        d.push({\n            title: title,\n            pic_url: list[j].coverImgUrl,\n            url: 'http://121.4.78.106:4001/playlist/detail?id=' + list[j].id + '#noRefresh##gameTheme##background##noLoading#' + $('').rule(() => {\n                eval(JSON.parse(fetch('hiker://page/phxq')).rule);\n            }),\n            extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n        });\n    }\n}\nsetResult(d)\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = JSON.parse(html).result.songs;\nfor (var j in list) {\nvar play = 'http://music.163.com/api/song/detail/?id=' + list[j].id + '&ids=%5B' + list[j].id + '%5D';\n    var pic = request(play).match(/blurPicUrl\":\"(http.*?jpg)/)[1]\n    d.push({\n        title: list[j].name,\n        desc: list[j].ar[0].name,\n        img: pic,\n        url: 'http://121.4.78.106:4001/song/url?id='+list[j].id+$('').lazyRule(() => {\nvar url = JSON.parse(request(input)).data[0].url\ninput = input.replace('song/url','lyric')\nvar lrc = JSON.parse(request(input)).lrc.lyric\n\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n                })\n}),\n    });\n}\nsetResult(d)","search_url":"http://121.4.78.106:4001/search?keywords=**","group":"音频","detail_col_type":"card_pic_3","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[{\"col_type\":\"card_pic_3\",\"name\":\"歌单\",\"path\":\"yj\",\"rule\":\"js:\\nvar d = [];\\nvar html = request('http://121.4.78.106:4001/personalized');\\n\\n\\n\\nd.push({\\n        col_type: 'blank_block'\\n    });\\nvar list = JSON.parse(html).result;\\nfor (var j in list) {\\n    d.push({\\n        title: list[j].name,\\n        pic_url: list[j].picUrl,\\n        url: 'http://121.4.78.106:4001/playlist/detail?id='+list[j].id+$('').rule(() => {\\neval(JSON.parse(fetch('hiker://page/gd')).rule);\\n})\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"movie_3\",\"name\":\"gd\",\"path\":\"gd\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\nlet 传输列表 = []\\nlet list = JSON.parse(html).playlist.tracks;\\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\\nif (xd == false) {\\n    for (let j = 0; j < list.length; j++) {\\n        let title = list[j].name;\\n        let first = list[0].name;\\n        let desc = list[j].ar[0].name;\\n        let img = list[j].al.picUrl;\\n        let url = 'http://121.4.78.106:4001/song/url?id=' + list[j].id + $('').lazyRule(() => {\\n            var url = JSON.parse(request(input)).data[0].url\\n            return url + '#isMusic=true#';\\n        });\\n        /* 快速告诉x5列表样式，很重要 */\\n        let col_type = 'avatar'\\n        putVar('样式', col_type)\\n        putVar('选中颜色', '#3CE68E');\\n        if (col_type == 'text_1')\\n            xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\\n        else\\n            xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\\n        d.push({\\n            title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\\n            desc: desc,\\n            img: img,\\n            col_type: col_type,\\n            url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\\n                if (getVar('索引') != title) {\\n                    refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\\n                    updateItem(getVar('索引', first), {\\n                        title: getVar('索引', first)\\n                    })\\n                    updateItem(title, {\\n                        title: xy\\n                    })\\n                    putVar('索引', title)\\n                } else {\\n                    return 'download://' + getVar('播放链接');\\n                }\\n                return 'hiker://empty';\\n            }, title, first, xy),\\n            extra: {\\n                id: title\\n            },\\n        });\\n\\n        传输列表.push({\\n            封面: img,\\n            曲名: title,\\n            歌手: desc,\\n            地址: url,\\n        })\\n    }\\n\\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\\n    storage0.putVar('缓存数据', 传输列表)\\n    storage0.putVar('数据校对', list)\\n}\\naddListener('onClose', $.toString(() => {\\n    clearVar('样式');\\n    clearVar('索引');\\n    clearVar('播放链接');\\n    clearVar('数据校对');\\n    clearVar('缓存数据');\\n}))\\n传输列表 = storage0.getVar('缓存数据')\\nputVar('音乐数据', JSON.stringify(传输列表))\\nif (MY_PAGE == 1) {\\n    d.push({\\n        col_type: 'x5_webview_single',\\n        desc: '300&&float',\\n        extra: {\\n            ua: MOBILE_UA,\\n            autoPlay: true\\n        },\\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\\n    });\\n}\\n\\n\\nsetResult(d)\"},{\"col_type\":\"card_pic_3\",\"name\":\"排行榜\",\"path\":\"ph\",\"rule\":\"js:\\nvar d = [];\\nvar html = request('http://121.4.78.106:4001/toplist');\\n\\nd.push({\\n        title: '排行榜',\\n        pic_url: 'http://pp.myapp.com/ma_icon/0/icon_1168851_1660565782/256',\\n        url: 'hiker://empty',\\ncol_type: 'icon_small_3',\\n        \\n    });\\n\\nd.push({\\n        col_type: 'blank_block'\\n    });\\nvar list = JSON.parse(html).list;\\nfor (var j in list) {\\n    d.push({\\n        title: list[j].name,\\n        pic_url: list[j].coverImgUrl,\\n        url: 'http://121.4.78.106:4001/playlist/detail?id='+list[j].id+$('').rule(() => {\\neval(JSON.parse(fetch('hiker://page/phxq')).rule);\\n})\\n    });\\n}\\nsetResult(d)\"},{\"col_type\":\"text_2\",\"name\":\"phxq\",\"path\":\"phxq\",\"rule\":\"js:\\nvar d = [];\\nvar html = getResCode();\\nvar list = JSON.parse(html).playlist.tracks;\\n\\nlet 传输列表 = []\\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\\nif (xd == false) {\\nfor (let j = 0; j < list.length; j++) {   \\n    let title = list[j].name;\\n    let first = list[0].name;\\n    let desc = list[j].ar[0].name;\\n    let img = list[j].al.picUrl;\\n    let url = 'http://121.4.78.106:4001/song/url?id=' + list[j].id + $('').lazyRule(() => {\\n        var url = JSON.parse(request(input)).data[0].url\\n        return url + '#isMusic=true#';\\n    });\\n    /* 快速告诉x5列表样式，很重要 */\\n    let col_type = 'avatar'\\n    putVar('样式', col_type)\\n    putVar('选中颜色', '#3CE68E');\\n    if (col_type == 'text_1')\\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\\n    else\\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\\n    d.push({\\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\\n        desc: desc,\\n        img: img,\\n        col_type: col_type,\\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\\n            if (getVar('索引') != title) {\\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\\n                updateItem(getVar('索引', first), {\\n                    title: getVar('索引', first)\\n                })\\n                updateItem(title, {\\n                    title: xy\\n                })\\n                putVar('索引', title)\\n            } else {\\n                return 'download://' + getVar('播放链接');\\n            }\\n            return 'hiker://empty';\\n        }, title, first, xy),\\n        extra: {\\n            id: title\\n        },\\n    });\\n\\n    传输列表.push({\\n        封面: img,\\n        曲名: title,\\n        歌手: desc,\\n        地址: url,\\n    })\\n}\\n\\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\\n    storage0.putVar('缓存数据', 传输列表)\\n    storage0.putVar('数据校对', list)\\n}\\naddListener('onClose', $.toString(() => {\\n    clearVar('样式');\\n    clearVar('索引');\\n    clearVar('播放链接');\\n    clearVar('数据校对');\\n    clearVar('缓存数据');\\n}))\\n传输列表 = storage0.getVar('缓存数据')\\nputVar('音乐数据', JSON.stringify(传输列表))\\nif (MY_PAGE == 1) {\\n    d.push({\\n        col_type: 'x5_webview_single',\\n        desc: '300&&float',\\n        extra: {\\n            ua: MOBILE_UA,\\n            autoPlay: true\\n        },\\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\\n    });\\n}\\n\\nsetResult(d)\"}]","proxy":"","icon":"https://pp.myapp.com/ma_icon/0/icon_1168851_1661482599/256"},{"last_chapter_rule":"","title":"MyFreeMP3","author":"缘分","version":1,"type":"music","url":"https://pl-fe.cn/cloud-music-api/top/playlist?cat=fyAll&offset=fypage@-1@*50@&","col_type":"card_pic_3","class_name":"全部&华语&流行&摇滚&民谣&欧美&日语\n&韩语&粤语&电子&舞曲&说唱&轻音乐&爵士\n乡村&R＆＆B/Soul&","class_url":"全部&华语&流行&摇滚&民谣&欧美&日语\n&韩语&粤语&电子&舞曲&说唱&轻音乐&爵士\n乡村&R＆＆B/Soul&","area_name":"网络歌曲&KTV&经典&翻唱&吉他&钢琴&器乐&榜单&古典&民族&英伦","area_url":"网络歌曲&KTV&经典&翻唱&吉他&钢琴&器乐&榜单&古典&民族&英伦","sort_name":"金属&蓝调&雷鬼&世界音乐&拉丁&New Age&古风&后摇&Bossa Nova&浪漫&","year_name":"伤感&治愈&放松&孤独&综艺&影视原声&70后&80后&90后&00后","sort_url":"金属&蓝调&雷鬼&世界音乐&拉丁&New Age&古风&后摇&Bossa Nova&浪漫&","year_url":"伤感&治愈&放松&孤独&综艺&影视原声&70后&80后&90后&00后","find_rule":"js:\nvar d = [];\nvar html = getResCode();\nvar list = JSON.parse(html).playlists;\nfor (var j in list) {\n    d.push({\n        title: list[j].name,\n        pic_url: list[j].coverImgUrl + '@Referer=',\n        url: 'hiker://empty##' + list[j].id+'#noRefresh##gameTheme##background#',\n       extra: {\n                newWindow: true,\n                windowId: MY_RULE.title\n            }\n    });\n}\nsetResult(d)\nif (!fileExist(\"hiker://files/rules/dzHouse/html/h5音乐播放器.html\")) {\n    confirm({\n        title: \"重要提示\",\n        content: \"检测到您还没有导入音乐播放插件，点击下方确定按钮导入\",\n        confirm: $.toString(() => {\n            return \"海阔视界本地文件分享￥file_url￥hiker://files/rules/dzHouse/html/h5音乐播放器.html@http://hiker.nokia.press/hikerule/rulelist.json?id=5389\"\n        })\n    })\n}","searchFind":"js:\nvar d = [];\npage = MY_URL.split(\"##\")[1];\nvar ss = MY_URL.split(\"##\")[2];\nvar lazy = $('').lazyRule(() => {\nvar url = 'https://test.quanjian.com.cn/m/api/link/index/id/' +input.split(\"#\")[0]+'/quality/320#isMusic=true#';\ntry {\nvar title = input.split(\"#\")[1];\nvar desc = input.split(\"#\")[2];\n    var lrc = pdfh(request('http://zhannei.baidu.com/cse/search?q=' + title +'-'+desc+ '&s=2237976389678693530&entry=1'),'.result-list&&a&&href');\nlog(lrc)\n    var lrc = 'https://www.igeciku.com' + pdfh(request(lrc), '.download&&a&&href').replace('txt', 'lrc');\n    return JSON.stringify({\n        urls: [url],\n        lyric: lrc\n    })\n} catch (e) {\n    return url\n}\n})\nvar list = JSON.parse(request('https://test.quanjian.com.cn/m/api/search', {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    },\n    body: '{\"type\":\"YQM\",\"text\":\"' + ss + '\",\"page\":' + page + ',\"v\":\"beta\"}',\n    method: \"POST\"\n})).data.list;\nlog(list)\nfor (var j in list) {\n    d.push({\n        title: list[j].name,\n        desc: list[j].artist[0].name, \n        pic_url: list[j].pic + '@Referer=',\n        url: list[j].id +'#'+ list[j].name+'#'+ list[j].artist[0].name+lazy\n    });\n}\nsetResult(d)","search_url":"hiker://empty##fypage##**","group":"音频","detail_col_type":"avatar","detail_find_rule":"js:\nvar d = [];\nvar id = MY_URL.split(\"##\")[1].split(\"#\")[0]\n\nvar lazy = $('').lazyRule(()=> {\nvar id = input.split(\"#\")[0];\nvar url = 'https://test.quanjian.com.cn/m/api/link/index/id/' +id+ '/quality/320#isMusic=true#';\nreturn url\n})\nvar list = JSON.parse(request('https://test.quanjian.com.cn/m/api/search/playlist', {\n    headers: {\n        \"User-Agent\": MOBILE_UA\n    },\n    body: '{\"id\":\"d' + id + '\"}',\n    method: \"POST\"\n})).data.list;\nlet 传输列表 = []\nlet xd = JSON.stringify(list) == JSON.stringify(storage0.getVar('数据校对', []));\nif (xd == false) {\nfor (let j = 0; j < list.length; j++) {   \n    let title = list[j].name;\n    let first = list[0].name;\n    let desc = list[j].artist[0].name;\n    let img = list[j].pic;\n    let url = list[j].id+'#' +list[j].lyric+lazy\n    /* 快速告诉x5列表样式，很重要 */\n    let col_type = 'avatar'\n    putVar('样式', col_type)\n    putVar('选中颜色', '#3CE68E');\n    if (col_type == 'text_1')\n        xy = '““””<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    else\n        xy = '<b><font color=' + getVar('选中颜色') + '>' + title + '</font></b>';\n    d.push({\n        title: title == getVar('索引', first) && MY_PAGE == 1 ? xy : title,\n        desc: desc,\n        img: img,\n        col_type: col_type,\n        url: $('#noHistory##noLoading#').lazyRule((title, first, xy) => {\n            if (getVar('索引') != title) {\n                refreshX5WebView(getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html'))\n                updateItem(getVar('索引', first), {\n                    title: getVar('索引', first)\n                })\n                updateItem(title, {\n                    title: xy\n                })\n                putVar('索引', title)\n            } else {\n                return 'download://' + getVar('播放链接');\n            }\n            return 'hiker://empty';\n        }, title, first, xy),\n        extra: {\n            id: title\n        },\n    });\n\n    传输列表.push({\n        封面: img,\n        曲名: title,\n        歌手: desc,\n        地址: url,\n    })\n}\n\n    传输列表 = storage0.getVar('缓存数据', []).concat(传输列表)\n    storage0.putVar('缓存数据', 传输列表)\n    storage0.putVar('数据校对', list)\n}\naddListener('onClose', $.toString(() => {\n    clearVar('样式');\n    clearVar('索引');\n    clearVar('播放链接');\n    clearVar('数据校对');\n    clearVar('缓存数据');\n}))\n传输列表 = storage0.getVar('缓存数据')\nputVar('音乐数据', JSON.stringify(传输列表))\nif (MY_PAGE == 1) {\n    d.push({\n        col_type: 'x5_webview_single',\n        desc: '300&&float',\n        extra: {\n            ua: MOBILE_UA,\n            autoPlay: true\n        },\n        url: getPath('hiker://files/rules/dzHouse/html/h5音乐播放器.html')\n    });\n}\n\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"放屁音乐🎶","author":"缘分","version":0,"type":"music","url":"https://www.fangpiw.com/","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\nd.push({\n        title: \"🔎\",\n        url: \"'hiker://search?rule=\" + MY_RULE.title + \"&s='+input\",\n        desc: \"请输入歌手或歌曲名。\",\n        col_type: \"input\",\n    });\nvar lists = pdfa(getResCode(), '.container&&.card-body');\n\nfor (var j in lists) {\n    d.push({\n        title: pdfh(lists[j], '.card-title&&Text').replace('更多','  ')+'““' +'更多',\n        url: pd(lists[j],'a&&href'),\n        col_type: \"text_1\",\n    });\nvar urll = pd(lists[j], 'a&&href');\n    var list = pdfa(request(urll), 'tbody&&tr');\n    for (var i in list) {\n        d.push({\n            title: pdfh(list[i], 'Text').replace(/立即搜索/, ''),\n            url: 'hiker://search?s=' + pdfh(list[i], 'a&&Text') + '&rule='+MY_RULE.title\n        });\n    }\n}\nsetResult(d)","searchFind":"js:\nvar d = []; \nvar list = pdfa(getResCode(), 'tbody&&tr');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&Text'),          \n            url: pd(list[j], 'a&&href')+$('').lazyRule(() => {\nvar url = pdfh(request(input),'.container&&script&&Html').match(/url = '(.*?)'/)[1].replace('&amp;','&')\ntry{\nvar lrc = pd(request(input,{}),'#btn-download-lrc&&href')\nreturn JSON.stringify({\n                    urls: [url+'#isMusic=true#'],\n                    lyric: lrc,\n                })} catch (e) {\nreturn url+'#isMusic=true#'\n}\n})\n        });\n    }\nsetResult(d)","search_url":"https://www.fangpiw.com/s/**","group":"音频","detail_col_type":"text_1","detail_find_rule":"js:\nvar res = {};\nvar d = [];\nlog(MY_URL)\n//var ym = pdfh(getResCode(), 'i&&Text').match(/Top(.*)0/)[1];\nfor (var j = 2; j <= 10; j++) {\n    var list = pdfa(request(MY_URL+'?page=' + j), 'tbody&&tr');\n\n    for (var i in list) {\n        d.push({\n            title: pdfh(list[i], 'Text').replace(/立即搜索/, ''),\n            url: 'hiker://search?s=' + pdfh(list[i], 'a&&Text') + '&rule='+MY_RULE.title\n        });\n    }}\n\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.fangpiw.com/favicon.ico"},{"last_chapter_rule":"","title":"流行音乐🎶","author":"缘分","version":1,"type":"music","url":"http://www.jiuku.com/fyAll","col_type":"icon_2_round","class_name":"全部&top500&最新&成名曲&2020","class_url":"&top500.htm&new2017.htm&yryscmq.htm&paihang2017.htm","area_name":"老歌&网络&伤感&英文&2019&dj","area_url":"jingdianlaoge.htm&wangluo.htm&shanggan.htm&yingwen.htm&paihang2016.htm&dj.htm","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\nvar html = getResCode();\nvar lazy = $('').lazyRule((MY_HOME)=> {\n    var title = pdfh(request(input),'h1&&Text');\n    var desc = pdfh(request(input),'.playerSinger&&Text');\n    var url = pd(request(input),'mip-audio&&src')\ntry {\n    var lrc = pd(request('http://zhannei.baidu.com/cse/search?q='+title+'-'+desc+'&s=2237976389678693530&entry=1'),'a&&href') \nvar lrc = 'https://www.igeciku.com'+pdfh(request(lrc),'.download&&a&&href').replace('txt','lrc')\nreturn JSON.stringify({\n                    urls: [url],\n                    lyric: lrc\n                })} catch (e) {\nreturn url\n}\n}, MY_HOME)\nvar list = parseDomForArray(html, 'form||.mdBoxBd&&li');\nfor (var j in list) {\n    d.push({\n        title: parseDomForHtml(list[j], 'a&&Text'),\n        desc: parseDomForHtml(list[j], ''),\n        pic_url: parseDom(list[j], '') + 'https://lanmeiguojiang.com/tubiao/ke/101.png',\n        url: parseDom(list[j], 'a&&href').replace('www', 'm') + lazy\n    });\n}\nres.data = d;\nsetHomeResult(res);","searchFind":"js:\nvar json = {};\neval('json=' + getResCode());\nvar res = {};\nvar name = MY_URL.split(\"=\")[5]\nlog(name)\nvar lazy = $('').lazyRule((name) => {\n    var json = JSON.parse(request(input))\n    try {\n    var lrc = pd(request('http://zhannei.baidu.com/cse/search?q='+name+'&s=2237976389678693530&entry=1'),'a&&href') \nvar lrc = 'https://www.igeciku.com'+pdfh(request(lrc),'.download&&a&&href').replace('txt','lrc')\nreturn JSON.stringify({\n                    urls: [json.url],\n                    lyric: lrc\n                })} catch (e) {\nreturn url\n}\n},name);\nvar items = json.map(data => ({\n    title: data.name + '-『' + data.artist + \"』\",\n    url: 'https://www.amp360.net/inHtml/MusicPlayer/api.php?types=url&id=' + data.url_id + '&source=netease' + lazy,\n}));\nres.data = items;\nsetResult(res);","search_url":"https://www.amp360.net/inHtml/MusicPlayer/api.php?types=search&count=20&source=netease&pages=fypage&name=**","group":"音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.jiuku.com/favicon.ico"},{"last_chapter_rule":"","title":"MV🎶","author":"缘分","version":0,"type":"music","url":"hiker://empty##fypage##fyAll","col_type":"movie_2","class_name":"新歌推荐&华语精选&日韩精选&欧美精选","class_url":"9&13&17&16","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nevalPrivateJS('715o0IBSyYQML8HCrbohIb0Bxmm0YKXMQSXqZ3rV3dTnZD/T+E6rfE/cMCWDvvgM/ffW8Yi2jJEZk490bt1LQk/dziV0ammb9yKgBBOFyltzdDYotVyv1nCeRypRe//9XeLPZGyxoNqQVyN+Z8EFtm8W2EovJNG78NPQRCgQdu5QJwaa0k5HugNgSpDPa0ngHnnaM9h+cDbyPlE5IMbwEpAQZiVai9PuddursjiJIFUq3UoPqXuyKOPm/B7TYh+6RCr5A4tGvp7TpNKCmRLakDVrTSqYF6TXlKbRTFqEEeQsaQDTdlpi6g9Fl0xF4XkrvImdSnod7YPhG2i2D4bBgcDKybK95cFsTkH82DmP4XXyvzyV99zm8eJ2EJdnvp7W72wzZRSsPkW2O2X5E3BFeiiA+kLEiwaMhrjaNYekuE4T3yxfQxJHtjTAlrFY5hbBzRhhjEuyco1aOidT2D5WeMIcbWrpR6BKHHVQULYKuF2ZPpu5mk67iOJh/jPvDbjxQdGLeD+1CEn6yz9Gnhx+/p55Sysyb8WebDtuLmmC3Zd1izKmqKQ1H4Pok1F+u8lcOZASFYDmPu3cAw09hvi2NMpwtFeoo+XAl7p4De0CRDHA+OnZD1ZRw87t0uvHtrP0dvJGtywajmGFjoRl2Sidt+VLI/wbEpa05X9XU32qDf96qrAvEfe5Kok+mxuzGGyLuOpXx4h9tsmVSwJeTjmz4UwneM5KD31JXTLEQrLv9MV6R42+clW9NwSTbJJ8uK2FhpKecK70eFkVnpDr9AKHdNB9W7/ML2LQXl5knV/K4l3xd7N9aooXHRinQ2x28g5FddxadrQsg8BVzt52XJljNZg7ypanktqligMG+XhJrRvsbHHcMvrJZj/xPXvjzo69YcyWIV8rKs7up1TBMt0XX+FQE982wKTpVef6HFoS7BRZ5NrfIt+TNQ8FUe1WOh5pb0+ICOKopOvS/0beh48utw==')","searchFind":"js:\nvar d = [];\nvar html = getResCode();\nvar list = JSON.parse(html).sun;\nfor (var j = 1; j <= list; j++) {\n    var t = JSON.parse(request(MY_URL + j));\n    d.push({\n        title: t.name,\n        desc: t.author,\n        img: t.img,\n        url: t.video\n    });\n}\nsetResult(d)","search_url":"https://api.linhun.vip/api/kgmv?name=**&n=","group":"音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"pc","preRule":"","pages":"[]","proxy":"","icon":"https://lanmeiguojiang.com/tubiao/music/43.svg"},{"last_chapter_rule":"","title":"水晶dj🎶","author":"缘分","version":0,"type":"music","url":"https://m.dj97.com/fyAll/renqi/fypage.htm","col_type":"text_1","class_name":"慢摇串烧&现场舞曲&中文舞曲&酒吧Club&","class_url":"myxc&xc&zw&club&","area_name":"英文Club&慢摇舞曲&英文Disco&交谊舞曲","area_url":"ywclub&my&yw&jy","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d = [];\n    var list = pdfa(getResCode(), '.list_border--li,-1&&li');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'a&&title'),\n            url: pd(list[j], 'a&&href') + $('').lazyRule(() => {\n                var url = pdfh(request(input), 'audio&&src')\n                return url + '#isMusic=true#'\n            })\n        });\n    }\nsetResult(d);","searchFind":"js:\nvar d = [];\n    var list = pdfa(getResCode(), '#J_dances&&tr');\n    for (var j in list) {\n        d.push({\n            title: pdfh(list[j], 'Text'),           \n            url: pd(list[j], 'a,1&&href').replace('www','m') + $('').lazyRule(() => {\n                var url = pdfh(request(input), 'audio&&src')\n                return url + '#isMusic=true#'\n            })\n        });\n    }\nsetResult(d)","search_url":"https://www.dj97.com/so?t=d&k=**&page=fypage","group":"音频","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://m.dj97.com/favicon.ico"},{"last_chapter_rule":"","title":"麦田音乐🎶","author":"缘分","version":2,"type":"music","url":"https://www.mtyyw.com/fyAll/page/fypage/[firstPage=https://www.mtyyw.com/fyAll]","col_type":"pic_1","class_name":"首页&歌单&电台&独立&民谣&摇滚&爵士&轻音乐&麦游记&","class_url":"&gedan/&fm/&tag/indie-pop/&tag/minyao/&tag/rock/&tag/jueshi/&qingyinyue/&tag/maiyouji/&","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar res = {};\nvar d = [];\ntry{\nvar list = parseDomForArray(getResCode(), '.primary&&article:not(:matches(服务器崩溃))');\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   'a&&Text'),\n       desc: parseDomForHtml(list[j],   'p&&Text')+'\\n'+parseDomForHtml(list[j], '.postmeta&&Text'),\n       pic_url: parseDom(list[j], 'img&&src')+'@Referer=',\n       url: parseDom(list[j], 'a&&href')+'#gameTheme#',\ncol_type: \"pic_1_card\",\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"音频","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d = [];\nd.push({\n    col_type: \"x5_webview_single\",\n    url: MY_URL,\n    desc: \"float&&100%\",\n    extra: {\n        canBack: true,\n        js: $.toString((rule) => {\n            var token_timer = function() {\n                var timer = setInterval(() => {\n                    try {\n                        var urls = _getUrls();\n                        var exclude = /playm3u8|m3u8\\.tv|min\\.css|404\\.m3u8|\\.html|\\.php/;\n                        var contain = /\\.mp4|\\.mp3\\.m3u8|\\.flv|\\.avi|\\.mpeg|\\.wmv|\\.mov|\\.rmvb|\\.dat|qqBFdownload|mime=video%2F|video_mp4/;\n                        for (var i in urls) {\n                            //fy_bridge_app.log(urls[i]);\n                            if (!exclude.test(urls[i]) && contain.test(urls[i])) {\n                                clearInterval(timer);\n                                fy_bridge_app.playVideo(urls[i]);\n                                //静音\n                                function muteMe(elem) {\n                                    try {\n                                        elem.pause();\n                                    } catch (e) {}\n                                }\n                                var videos = document.querySelectorAll(\"video\"),\n                                    audios = document.querySelectorAll(\"audio\"),\n                                    v2 = document.querySelectorAll(\"embed\"),\n                                    v3 = document.querySelectorAll(\"#player\");\n                                try {\n                                    [].forEach.call(videos, function(video) {\n                                        muteMe(video);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(audios, function(audio) {\n                                        muteMe(audio);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v2, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                try {\n                                    [].forEach.call(v3, function(v) {\n                                        muteMe(v);\n                                    });\n                                } catch (e) {}\n                                return;\n                                //return urls[i];\n                            }\n                        }\n                    } catch (e) {}\n                }, 200)\n            };\n            token_timer();\n        }, MY_RULE.title)\n    }\n})\nsetResult(d)","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://www.mtyyw.com/favicon.ico"},{"last_chapter_rule":"","title":"发现音乐🎶","author":"缘分","version":0,"type":"music","url":"https://ifish.fun/music/fyAll?p=fypage","col_type":"card_pic_3","class_name":"鱼声音乐精选&落网音乐精选&","class_url":"fish&luoo&","area_name":"大虾记忆&云村部落&杂食天下","area_url":"daily?t=xm&daily?t=wy&daily?t=qq","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\ntry{\nvar res = {};\nvar d = [];\nvar list = parseDomForArray(getResCode(), '.daily-list||.player-list&&a||li');\n\nfor (var j in list) {\n  d.push({\n       title: parseDomForHtml(list[j],   '.player-list-name||.title-left||.item-title&&Text'),\n       desc:parseDomForHtml(list[j], '.player-list-author&&Text'),    \n       pic_url: parseDom(list[j], '.player-list-pic||div&&Text||style')+'@Referer=',\n       url: MY_URL.indexOf('daily?t=')>-1?MY_HOME+parseDomForHtml(list[j], '.player-list-url&&Text')+`@lazyRule=.js:input`:MY_HOME+parseDomForHtml(list[j], 'a&&href')\n  });\n}}catch(e){}\nres.data = d;\nsetHomeResult(res);","searchFind":"","search_url":"","group":"音频","detail_col_type":"avatar","detail_find_rule":"js:\r\nvar res = {};\r\nvar d = [];\r\ntry{\n\r\nvar list = parseDomForArray(getResCode(), '.player-list&&li');\nd.push({\n    title: parseDomForHtml(getResCode(), '.text-center||.rich_media_content&&Html').split(\"jp-player\")[0].replace(/\\<script[\\S\\s]*?<\\/script\\>/g, ''),     \n    col_type: 'rich_text' \n});\n\nfor (var j in list) {  \n\r\nd.push({       \r\ntitle: parseDomForHtml(list[j], '.player-list-name&&Text'),           \r\npic_url: parseDom(list[j], '.player-list-pic&&Text')+'@Referer=',\r\nurl:parseDom(list[j],'.player-list-url&&Text') ,\ncol_type: 'icon_2_round'\r\n});\r\n}\r\n}catch(e){}\nd.push({\n           title: '““””<small><font color=#20b2aa>数据资源收集于网络，海阔不提供任何资源！</font></small>',\n           desc: '““””<small><font color=#ff7f50>本规则仅限学习与交流，请导入后24小时内删除，请勿传播！</font></small>',\n           url: MY_URL,\n           col_type: 'text_center_1'\n           },{col_type: 'rich_text'\n   });\n\r\nres.data = d;\r\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":"https://ifish.fun/img/fish.png"},{"last_chapter_rule":"","title":"夜雨聆风","author":"小🔥星","version":7,"type":"other","url":"https://www.yeyulingfeng.com/category/fyAll/page/fypage","col_type":"movie_1_vertical_pic","class_name":"手机应用&电脑应用&教程&软件&网站源码","class_url":"ruan/sjyy&ruan/dnyy&jishu&ruan&mubann/wzym","area_name":"ios专区&编译开发&游戏&源码&模板主题","area_url":"ruan/ios&ruan/kaifa&pojie/game&muban&muban/wzmb","sort_name":"活动资讯&最新活动&科技资讯&其他资源","year_name":"好片推荐&实用趣站&零散资源&谈天说地","sort_url":"huodong&huodong/xin&huodong/no1&qita","year_url":"qita/dianying&qita/website&qita/scattered&qita/tanhua","find_rule":"body&&.excerpt;img&&alt;img&&data-src.js:input+ \"@Referer=\";time&&Text;a&&href","searchFind":"body&&.excerpt;img&&alt;a&&href;time&&Text;.note&&Text;img&&data-src","search_url":"https://www.yeyulingfeng.com/page/fypage?s=**","titleColor":"#ff228be6","group":"","detail_col_type":"movie_1","detail_find_rule":"js:\nvar d=[];\nvar html=getResCode();\nvar tabs=parseDomForHtml(html,'body&&.article-content&&Html');\n\nd.push({\n\t\t\ttitle: tabs,\n    desc:'',\n    pic_url:'',\n    url:'',\n\t\tcol_type: 'rich_text'\n});\n\nsetHomeResult({data:d});","sdetail_col_type":"movie_1","sdetail_find_rule":"*","ua":"mobile","preRule":"","pages":"[]","icon":"https://z3.ax1x.com/2021/10/28/5L4XlR.png"},{"last_chapter_rule":"","title":"海阔视界规则分享，当前分享的是：小程序￥home_rule_v2￥base64://@秀人美女@eyJsYXN0X2NoYXB0ZXJfcnVsZSI6IiIsInRpdGxlIjoi56eA5Lq6576O5aWzIiwiYXV0aG9yIjoiVGltaWsiLCJ1cmwiOiJodHRwczovL3d3dy54cm1udy5jYy9meWNsYXNzL2luZGV4ZnlwYWdlLmh0bWxbZmlyc3RQYWdlPWh0dHBzOi8vd3d3LnhybW53LmNjL2Z5Y2xhc3MvXSIsInZlcnNpb24iOjEsImNvbF90eXBlIjoibW92aWVfMyIsImNsYXNzX25hbWUiOiLnp4DkurrnvZEm5qih6IyD5a2m6ZmiJumtheWmjeekvibnvo7lqpvppoYm54ix6Jyc56S+JuWFlOWHoOebnyblsKTnianppoYm5LyY5pif6aaGJuicnOahg+ekvibll7Llm6Hlm6Em5b2x56eB6I2fJumhveWRs+eUn+a0uybmmJ/kuZDlm60m6Iqx44Gu6aKcJuW+oeWls+mDjiboloTojbflj7Ym5bCk6Jyc6I2fJuezluaenOeUu+aKpSbmqKHnibnogZTnm58m54yr6JCM5qacJuiKsea8vibmmJ/popznpL4m55S76K+t55WMIiwidHlwZSI6InBpY3R1cmUiLCJjbGFzc191cmwiOiJYaXVSZW4mTUZTdGFyJk1pU3RhciZNeUdpcmwmSW1pc3MmQm9Mb2xpJllvdVd1JlV4aW5nJk1paVRhbyZGZWlMaW4mV2luZ1MmVGFzdGUmTGVZdWFuJkh1YVlhbiZES0dpcmwmTWludFllJllvdU1pJkNhbmR5Jk1UTWVuZyZNaWNhdCZIdWFZYW5nJlhpbmdZYW4mWGlhb1l1IiwiYXJlYV9uYW1lIjoiIiwiYXJlYV91cmwiOiIiLCJzb3J0X25hbWUiOiIiLCJ5ZWFyX25hbWUiOiIiLCJzb3J0X3VybCI6IiIsInllYXJfdXJsIjoiIiwiZmluZF9ydWxlIjoiLnVwZGF0ZV9hcmVhX2xpc3RzJiZsaTsubWV0YS10aXRsZSYmVGV4dC5qczppbnB1dC5yZXBsYWNlKC9cXFsuKj9cXF0vLCcnKTtpbWcmJnNyYzsucG9zdGxpc3QtaW1hZ2VudW0mJlRleHQ7YSYmaHJlZiIsInNlYXJjaF91cmwiOiJodHRwczovL3d3dy54cm1udy5jYy9wbHVzL3NlYXJjaC9pbmRleC5hc3A/a2V5d29yZD0qKiZzZWFyY2h0eXBlPXRpdGxlJnA9ZnlwYWdlIiwiZ3JvdXAiOiLikaXnvo7lm74iLCJzZWFyY2hGaW5kIjoiLmxpc3QmJi5zb3VzdW87aDImJlRleHQ7OztoMiYmYSYmaHJlZiIsImRldGFpbF9jb2xfdHlwZSI6Im1vdmllXzEiLCJkZXRhaWxfZmluZF9ydWxlIjoianM6XG52YXIgcmVzID0ge307XG52YXIgZCA9IFtdO1xudmFyIGh0bWwgPSBnZXRSZXNDb2RlKCk7XG52YXIgcGljcyA9IFtdO1xudmFyIGhvc3QgPSAnaHR0cHM6Ly93d3cueHJtbncuY2MnO1xudHJ5IHtcbiAgICB2YXIgbGlzdF9ydWxlID0gJy5jb250ZW50JiZpbWcnO1xuICAgIHZhciBwaWNfcnVsZSA9IFwiaW1nJiZzcmNcIjtcbiAgICB2YXIgdGl0bGVfcnVsZSA9IFwiaDEmJlRleHRcIjtcbiAgICB2YXIgbnVtX3J1bGUgPSBcIi5wYWdlJiZhLC0yJiZUZXh0XCI7XG4gICAgdmFyIG5leHRfdXJsX3J1bGUgPSBNWV9VUkwucmVwbGFjZShcIi5odG1sXCIsXCJcIikgKyBcIl97cGFnZX0uaHRtbFwiO1xuICAgIHZhciBjaGFyc2V0ID0gXCJ1dGYtOFwiO1xuICAgIHZhciB1c2VyX2FnZW50ID0gJ1dpbmRvd3MnO1xuICAgIHZhciBudW0gPSBwYXJzZURvbUZvckh0bWwoaHRtbCwgbnVtX3J1bGUpO1xuICAgIC8vbG9nKHtudW06bnVtfSk7XG4gICAgbGV0IGh0bWxBcnIgPSBbXTtcbiAgICBodG1sQXJyLnB1c2goeyB1cmw6IE1ZX1VSTCwgb3B0aW9uczogeyBoZWFkZXJzOiB7ICdVc2VyLUFnZW50JzogdXNlcl9hZ2VudCwnY29udGVudC10eXBlJzonYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nK2NoYXJzZXQgfSB9IH0pO1xuICAgIGZvciAoaSA9IDI7IGkgPD0gbnVtOyBpKyspIHtcbiAgICAgICAgdmFyIG5leHRfdXJsID0gbmV4dF91cmxfcnVsZS5yZXBsYWNlKFwie3BhZ2V9XCIsaSk7XG4gICAgICAgIC8vbG9nKHtuZXh0X3VybDpuZXh0X3VybH0pO1xuICAgICAgICBodG1sQXJyLnB1c2goeyB1cmw6IG5leHRfdXJsLCBvcHRpb25zOiB7IGhlYWRlcnM6IHsgJ1VzZXItQWdlbnQnOiB1c2VyX2FnZW50ICwnY29udGVudC10eXBlJzonYXBwbGljYXRpb24vanNvbjsgY2hhcnNldD0nK2NoYXJzZXQgfSB9IH0pO1xuICAgIH1cbiAgICBodG1sQXJyID0gYmF0Y2hGZXRjaChodG1sQXJyKTtcbiAgICB2YXIgdGl0bGUgPSBwYXJzZURvbUZvckh0bWwoaHRtbEFyclswXSwgdGl0bGVfcnVsZSk7XG4gICAgLy9sb2coe3RpdGxlOnRpdGxlfSk7XG4gICAgcHV0VmFyKCd0aXRsZScsIHRpdGxlKTtcbiAgICBodG1sQXJyLmZvckVhY2goeCA9PiB7XG4gICAgICAgIGlmKGxpc3RfcnVsZT09Jycpe1xuICAgICAgICAgICAgdmFyIHBpYyA9IHBhcnNlRG9tRm9ySHRtbCh4LCBwaWNfcnVsZSlcbiAgICAgICAgICAgIGxvZyh7cGljOnBpY30pO1xuICAgICAgICAgICAgcGljcy5wdXNoKHBpYyk7XG4gICAgICAgIH1lbHNlIHtcbiAgICAgICAgICAgIHZhciBsaXN0ID0gcGFyc2VEb21Gb3JBcnJheSh4LCBsaXN0X3J1bGUpXG4gICAgICAgIC8vbG9nKHtsaXN0Omxpc3R9KVxuICAgICAgICBmb3IgKHZhciBrZXkgaW4gbGlzdCkge1xuICAgICAgICAgICAgdmFyIHBpYyA9IGhvc3QgKyBwYXJzZURvbUZvckh0bWwobGlzdFtrZXldLCBwaWNfcnVsZSlcbiAgICAgICAgICAgIC8vbG9nKHtwaWM6cGljfSk7XG4gICAgICAgICAgICBwaWNzLnB1c2gocGljKTtcbiAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSk7XG4gICAgZm9yICh4IGluIHBpY3MpIHtcbiAgICAgICAgZC5wdXNoKHtcbiAgICAgICAgICAgIHBpY191cmw6IHBpY3NbeF0sXG4gICAgICAgICAgICB1cmw6IHBpY3NbeF0sXG4gICAgICAgICAgICBjb2xfdHlwZTogXCJjYXJkX3BpY18zXCJcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHB1dFZhcigncGljcycsIHBpY3MpO1xuICAgIGQudW5zaGlmdCh7XG5cdCAgdGl0bGU6dGl0bGUgKyBcIihcIitwaWNzLmxlbmd0aCtcInApXCIsXG5cdCAgY29sX3R5cGU6ICd0ZXh0X2NlbnRlcl8xJywgZXh0cmE6IHsgbGluZVZpc2libGU6IGZhbHNlIH1cblx0fSk7XG4gICAgZC5wdXNoKHtcbiAgICAgICAgdGl0bGU6ICfkuIvovb3lhajpg6jlm77niYcnLFxuICAgICAgICB1cmw6ICQoJyDmmK/lkKbkuIvovb3lhajpg6jlm77niYcnKS5jb25maXJtKF8gPT4ge1xuICAgICAgICAgICAgdmFyIHBpY3NTdHIgPSBnZXRWYXIoJ3BpY3MnKVxuICAgICAgICAgICAgdmFyIHRpdGxlU3RyID0gZ2V0VmFyKCd0aXRsZScpO1xuICAgICAgICAgICAgdmFyIGpzb25PYmogPSBKU09OLnBhcnNlKHBpY3NTdHIpOy8v6L2s5o2i5Li6anNvbuWvueixoVxuICAgICAgICAgICAgdmFyIHBpY3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwganNvbk9iai5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgIHZhciBzID0ganNvbk9ialtpXTtcbiAgICAgICAgICAgICAgICBsb2coeyBwOiBzIH0pO1xuICAgICAgICAgICAgICAgIHZhciBmaWxlID0gcy5zcGxpdChcIi5cIik7XG4gICAgICAgICAgICAgICAgdmFyIGxlbiA9IGZpbGUubGVuZ3RoXG4gICAgICAgICAgICAgICAgdmFyIHN1ZmZpeCA9IGZpbGVbbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgaWYgKCFmaWxlRXhpc3QoJ2hpa2VyOi8vZmlsZXMvZG93bmxvYWQvJyArIHRpdGxlU3RyICsgJy8nICsgKGkgKyAxKSArICcuJyArIHN1ZmZpeCkpIHtcbiAgICAgICAgICAgICAgICAgICAgc2F2ZUltYWdlKHMsICdoaWtlcjovL2ZpbGVzL2Rvd25sb2FkLycgKyB0aXRsZVN0ciArICcvJyArIChpICsgMSkgKyAnLicgKyBzdWZmaXgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAg","author":"","version":0,"type":"video","url":"","col_type":"movie_3","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"","searchFind":"","search_url":"","group":"","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"小游戏-1","author":"小棉袄🌞&永远の明日","version":97,"type":"news","url":"hiker://empty","col_type":"icon_2_round","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [  {\n        title: '设置',\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: 'https://lanmeiguojiang.com/tubiao/movie/40.svg',\n        col_type: 'icon_small_4'},\n{\n        title: '收藏',\n        url: 'hiker://collection',\n        img: 'https://lanmeiguojiang.com/tubiao/messy/31.svg',\n        col_type: 'icon_small_4'},\n{\n        title: '历史',\n        url: 'hiker://history',\n        img: 'https://lanmeiguojiang.com/tubiao/q/1.png',\n        col_type: 'icon_small_4'},\n{\n        title: '下载',\n        url: 'hiker://download',\n        img: 'https://lanmeiguojiang.com/tubiao/movie/38.svg',\n        col_type: 'icon_small_4'},{\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/#noHistory##noRecordHistory####' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua),\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'https://glot.io/snippets/g618srhzd2/raw')\n// \n/*\n*/","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        defaultClass = JSON.stringify(defaultClass ? {\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        } : { name:  'cannot find id: ' + id + ' in classTab: ' + this.sign, url: ''})\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存，立即更新 <small> （基于远程仓库，不要频繁点击）',\\n        url: $('#noLoading#').lazyRule(() => {\\n            let url = getMyVar('remoteUrl')\\n            if(url.startsWith('hiker://') || url.startsWith('file://'))\\n                return 'toast://仓库为本地文件，不会进行缓存，本功能也无效'\\n            deleteCache(url)\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval == 0 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新\\\\n本地文件链接无效').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💼 备份恢复  ',\\n    url: $(['备份', '恢复'], 1).select((QING_TITLE, updateInterval, newWindow, tabFold, disableCustom) => {\\n        let url = getMyVar('remoteUrl')\\n        if (!url.startsWith('hiker://') && !url.startsWith('file://'))\\n            url = 'hiker://files/libs/' + md5(url) + '.js'\\n        else if(url.startsWith('hiker://page/')) url = 'hiker://empty'\\n        if (input == '备份') return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径')\\n            .input((url, updateInterval, newWindow, tabFold, disableCustom) => {\\n                let rules = request(url),\\n                    customData = readFile('customData')\\n                writeFile(input, JSON.stringify({\\n                    updateInterval: updateInterval,\\n                    newWindow: newWindow,\\n                    tabFold: tabFold,\\n                    disableCustom: disableCustom,\\n                    customData: customData,\\n                    rules: rules\\n                }))\\n                return 'toast://已备份，注意若仓库为子页面则不备份'\\n            }, url, updateInterval, newWindow, tabFold, disableCustom)\\n        else return $('hiker://files/tmp/' + QING_TITLE + '_backup.json', '输入备份路径').input((url) => {\\n            let { updateInterval, newWindow, tabFold, disableCustom, customData, rules } = JSON.parse(request(input))\\n            saveFile('updateInterval', updateInterval)\\n            saveFile('newWindow', newWindow)\\n            saveFile('tabFold', tabFold)\\n            saveFile('disableCustom', disableCustom)\\n            saveFile('customData', customData)\\n            if(rules) writeFile(url, rules)\\n            refreshPage()\\n            return 'toast://已恢复，如果不想同步远程仓库，可以设置更新频率为手动'\\n        }, url)\\n    }, QING_TITLE, updateInterval, newWindow, tabFold, disableCustom),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if (input == '清除自定义数据') {\\n            deleteFile('customData')\\n        } else if (input == '启用合集自定义') {\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                rules[i].visible = !rules[i].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((i) => {\\n                let rules = JSON.parse(readFile('customData') || '[]')\\n                if (input)\\n                    rules[i].icon = input\\n                else\\n                    delete rules[i].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, i)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nlet myCollection_el = [],\\n    { RULE, isIndex, pageTitle } = MY_PARAMS,\\n    thisRULE = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title)\\nif (isIndex) {\\n    RULE = thisRULE\\n} else {\\n    RULE.pages = thisRULE.pages\\n}\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.pages = RULE.pages\\nMY_RULE.pageList = JSON.parse(MY_RULE.pages || '[]')\\nMY_RULE.title = RULE.title\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(thisRULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (isIndex && MY_PAGE == 1) eval(thisRULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 正文解析通用变量\\nlet assignLazyRule = $.toString((QING_TITLE, title) => {\\n    let RULE = $.require(\\\"hiker://page/dataLoad?rule=\\\" + QING_TITLE)().find((v) => v.title == title)\\n    return { pages: RULE.pages, pageList: RULE.pageList }\\n}, QING_TITLE, RULE.title)\\nfunction genMyRule() {\\n    let rule = Object.assign({}, MY_RULE)\\n    delete rule.last_chapter_rule\\n    delete rule.preRule\\n    delete rule.pageList\\n    delete rule.pages\\n    return rule\\n}\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nfunction genExUrl(url) {\\n    url = url.split(';')\\n    return url.shift() + ';' + paramHandle(url, thisRULE.ua, MY_RULE.url)\\n}\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = Object.assign(genMyRule(), { params: v.extra || {} })\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download', 'share'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: genExUrl(v.url),\\n                RULE: MY__RULE,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, ' + assignLazyRule + ');' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: Object.assign(genMyRule(), { detail_find_rule: detailFindRule }),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: genExUrl(url),\\n                    RULE: genMyRule(),\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    let url = getMyVar('remoteUrl'),\\n        data = []\\n    if (url.startsWith('hiker://') || url.startsWith('file://')) {\\n        // 如果为本地文件则不进行缓存\\n        try {\\n            let oriData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                oriData = JSON.parse(oriData).rule\\n            data = JSON.parse(oriData)\\n        } catch (e) {}\\n    } else {\\n        // 获取远程数据，检查间隔默认一天\\n        let interval = parseInt(readFile('updateInterval') || '1'),\\n            oldData = fetch('hiker://files/libs/' + md5(url) + '.js'),\\n            remoteData = fetchCache(url, 24 * interval)\\n        try { remoteData = JSON.parse(remoteData) } catch(e) {}\\n        if(!Array.isArray(remoteData)) remoteData = []\\n        if (remoteData.length < 3) {\\n            log('未获取到数据')\\n            if (oldData) writeFile('hiker://files/libs/' + md5(url) + '.js', oldData)\\n            data = JSON.parse(oldData || '[]')\\n        } else {\\n            log('已获取到数据')\\n            data = remoteData\\n        }\\n    }\\n    data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && thisRULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(thisRULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/g, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, urlTmp) {\\n    let charset, UserAgent\\n    try { // 链接的编码和ua应该是首先继承首页链接\\n        [, , charset, UserAgent] = urlTmp.split(';')\\n        UserAgent = UserAgent.match(/^{(.*)}$/)[1].split('&&').find((v) => v.startsWith('User-Agent@'))\\n    } catch (e) {}\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    try {\\n        urlParam[2] = urlParam[2].match(/^{(.*)}$/)[1].split('&&')\\n    } catch (e) { urlParam[2] = [] }\\n    // 添加全局UA\\n    if (!urlParam[2].some((v) => v.startsWith('User-Agent@'))) {\\n        if (UserAgent) urlParam[2].push(UserAgent)\\n        else if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"https://lanmeiguojiang.com/tubiao/movie/12.svg"},{"last_chapter_rule":"","title":"美食大全","author":"","version":0,"type":"read","url":"https://home.meishichina.com/recipe/fyAll/page/fypage/","col_type":"movie_3","class_name":"热菜&凉菜&汤羹&主食&小吃&西餐&烘焙&饮品&泡酱腌菜&自制食材","class_url":"recai&liangcai&tanggeng&zhushi&xiaochi&xican&hongbei&yinpin&jiangpaoyancai&zizhishicai","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\nvar d =        []\nvar list = pdfa(getResCode(), 'body&&.ui_newlist_1&&ul&&li');//表项\nfor (var j in list) {\n    d.push({\n        title: pdfh(list        [j], 'a&&title'),//标题\n        desc: pdfh(list        [j], 'p.subcontent&&Text'),//简介\n        pic_url: pd(list        [j], 'img&&data-src'),//封面\n        url: pd(list         [j], 'a&&href'),//链接\n    })\n}\nsetResult(d)","searchFind":"js:\nvar d =        []\nvar list = pdfa(getResCode(), 'body&&.ui_list_1&&ul&&li');//表项\nfor (var j in list) {\n    d.push({\n        title: pdfh(list        [j], 'a&&title'),//标题\n        desc: pdfh(list        [j], 'p.subcontent&&Text'),//简介\n        pic_url: pd(list        [j], 'img&&data-src'),//封面\n        url: pd(list         [j], 'a&&href'),//链接\n    })\n}\nsetResult(d)","search_url":"https://home.meishichina.com/search/**/","group":"","detail_col_type":"movie_1","detail_find_rule":"js:\nString.prototype.myReplace=function(f,e) {//吧f替换成e\n    var reg = new RegExp(f, \"g\"); //创建正则RegExp对象   \n    return this.replace(reg, e);\n}\nvar res = {};\nvar d =     [];\nhtml = getResCode();\nvar htmls=   [];\nhtmls   [0]={url:getUrl()};//提取下一页(一种提取方法是不停获取并访问下一页链接)，另一种方法获取总页数，页数后缀替换好，然后一起获取数据\nif(html.indexOf(\"下一页\")<0){var pagetotal=1;}\nelse{var pagetotal=parseInt(parseDomForHtml(html, \"#Pages&&span&&Text\").match(/\\d{1,}/g)   [1]);}\n  for(var i=2;i<=pagetotal;i++){\n     htmls   [i-1]={url:getUrl().replace(\".html\",\"_\"+i+\".html\")}\n }\nd.push({\n    title: \"<h1>\"+parseDomForHtml(html, \"h1,1&&Text\")+\"<\\h1>\",//提取网页标题\n    col_type: 'rich_text'\n},{\n    title: \"<h3>\"+parseDomForHtml(html, \"span.userName&&Text\")+\"<\\h3>\",//提取发帖时间\n    col_type: 'rich_text'\n},{\n    title: parseDomForHtml(html, \".recipDetail&&Html\").myReplace(\"gzh\",\"\"),//提取网页正文+去掉替换不需要字符\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","sdetail_col_type":"movie_1","sdetail_find_rule":"js:\nString.prototype.myReplace=function(f,e) {//吧f替换成e\n    var reg = new RegExp(f, \"g\"); //创建正则RegExp对象   \n    return this.replace(reg, e);\n}\nvar res = {};\nvar d =     [];\nhtml = getResCode();\nvar htmls=   [];\nhtmls   [0]={url:getUrl()};//提取下一页(一种提取方法是不停获取并访问下一页链接)，另一种方法获取总页数，页数后缀替换好，然后一起获取数据\nif(html.indexOf(\"下一页\")<0){var pagetotal=1;}\nelse{var pagetotal=parseInt(parseDomForHtml(html, \"#Pages&&span&&Text\").match(/\\d{1,}/g)   [1]);}\n  for(var i=2;i<=pagetotal;i++){\n     htmls   [i-1]={url:getUrl().replace(\".html\",\"_\"+i+\".html\")}\n }\nd.push({\n    title: \"<h1>\"+parseDomForHtml(html, \"h1,1&&Text\")+\"<\\h1>\",//提取网页标题\n    col_type: 'rich_text'\n},{\n    title: \"<h3>\"+parseDomForHtml(html, \"span.userName&&Text\")+\"<\\h3>\",//提取发帖时间\n    col_type: 'rich_text'\n},{\n    title: parseDomForHtml(html, \".recipDetail&&Html\").myReplace(\"gzh\",\"\"),//提取网页正文+去掉替换不需要字符\n    col_type: 'rich_text'\n});\nres.data = d;\nsetHomeResult(res);","ua":"mobile","preRule":"","pages":"[]","icon":""},{"last_chapter_rule":"","title":"广播猫","author":"","version":0,"type":"other","url":"https://www.guangbomao.com/fyAll/","col_type":"movie_3","class_name":"上海&江苏&浙江&安徽&福建&江西&广东&湖南&广西&贵州&云南&海南&四川&重庆&西藏&陕西&甘肃&青海&宁夏&新疆&辽宁&吉林&黑龙江&内蒙古&网络台&中央&北京&天津&河北&河南&山东&山西&湖北&新闻&交通&音乐&经济&曲艺&故事&综合&女性&体育&方言&其它","class_url":"shanghai&jiangsu&zhejiang&anhui&fujian&jiangxi&guangdong&hunan&guangxi&guizhou&yunnan&hainan&shicuan&chongqing&xizang&shanxi&gansu&qinghai&lingxia&xinjiang&liaoling&jiling&heilongjiang&neimenggu&wangluotai&zhongyang&beijing&tianjing&heiei&henan&shangdong&shangxi&hubei&xinwen&jiaotong&yinyue&jingji&quyu&gushi&zhonghe&nvxing&tiyu&fangyan&qita","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":".list-group&&a;Text;.*;.*;href","searchFind":"","search_url":"","group":"","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"mobile","preRule":"","pages":"[]","proxy":"","icon":""},{"last_chapter_rule":"","title":"轻合集.直播合集","author":"轻合集生成器","version":93,"type":"live","url":"hiker://empty","col_type":"text_2","class_name":"","class_url":"","area_name":"","area_url":"","sort_name":"","year_name":"","sort_url":"","year_url":"","find_rule":"js:\naddListener(\"onClose\", $.toString(() => {\n    JSON.parse(readFile(\"_ruleHashCache\") || \"[]\").forEach((v) => deleteFile(v))\n    deleteFile('_ruleHashCache')\n}))\nconst QING_TITLE = getMyVar('myCollection'),\n    newWindow = readFile('newWindow'),\n    typeShow = getMyVar('typeShow', ''),\n    types = { '': '全部', 'all': '聚合', 'video': '视频', 'music': '音频', 'live': '直播', 'cartoon': '漫画', 'read': '阅读', 'picture': '图集', 'news': '资讯', 'tool': '工具', 'other': '其它' }\nlet el = [{\n        title: ' ' + QING_TITLE.bold() + ' &nbsp &nbsp ' + '⚙ 轻合集设置 ⚙'.small(),\n        url: 'hiker://page/Config?rule=' + QING_TITLE + '&#noRecordHistory#',\n        img: MY_RULE.icon || 'hiker://images/icon1',\n        col_type: 'avatar'\n    }, {\n        url: '\"hiker://search?s=\"+input',\n        desc: '搜你想要的...',\n        title: '搜索',\n        col_type: 'input',\n        extra: {\n            rules: $.toString((QING_TITLE, typeShow) => {\n                let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n                if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n                return JSON.stringify(rules)\n            }, QING_TITLE, typeShow),\n            defaultValue: getMyVar('searchKey', ''),\n            onChange: \"putMyVar('searchKey',input)\"\n        }\n    }],\n    rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\nfor (let k in types)\n    if (!k || rules.find((v) => v.type == k))\n        el.push({\n            title: '““””' + (k == typeShow ? types[k].bold().fontcolor('#12b668') : types[k]),\n            url: k == typeShow ? 'hiker://empty' : $('#noLoading#').lazyRule((k) => {\n                putMyVar('typeShow', k)\n                refreshPage(false)\n                return 'hiker://empty'\n            }, k),\n            col_type: 'scroll_button'\n        })\n\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\nif (typeShow) rules = rules.filter((v) => v.type == typeShow)\nrules.forEach((v) => {\n    let urlParam = v.url.split(';'),\n        ruleTmp = {\n            title: v.title, url: urlParam.shift(),\n            class_name: v.class_name, class_url: v.class_url,\n            area_name: v.area_name, area_url: v.area_url,\n            year_name: v.year_name, year_url: v.year_url,\n            sort_name: v.sort_name, sort_url: v.sort_url\n        },\n        fypage = ruleTmp.url.includes('fypage') ? 'fypage' : '1',\n        domain = (/(https?:\\/\\/.+?)(?:\\/|$)/i.exec(ruleTmp.url) || [, 'hiker://empty'])[1],\n        d = {\n            title: v.title,\n            url: 'hiker://page/frameLoad',\n            img: v.icon || 'hiker://images/icon1',\n            extra: {\n                url: domain + '/###' + JSON.stringify({\n                    RULE: base64Encode(JSON.stringify(ruleTmp)),\n                    pageNum: fypage,\n                    QING_TITLE: getMyVar('myCollection')\n                }) + '.js:eval(JSON.parse(fetch(\"hiker://page/urlParse？？rule=' + QING_TITLE + '\")).rule)；；indexUrl(input);' + paramHandle(urlParam, v.ua) + '#noHistory##noRecordHistory#',\n                RULE: { title: v.title },\n                isIndex: true\n            }\n        }\n    if (newWindow) Object.assign(d.extra, {\n        newWindow: true,\n        windowId: QING_TITLE + '_' + d.title\n    })\n    el.push(d)\n})\nsetResult(el)\n","searchFind":"js:\nsetResult([{\n    title: \"点我开始轻合集•视界聚搜\",\n    url: \"hiker://search?s=\" + getParam(\"keyword\"),\n    extra: {\n        rules: $.toString(() => {\n            const QING_TITLE = getMyVar('myCollection'),\n                typeShow = getMyVar('typeShow', '')\n            let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\n            if (typeShow) rules = rules.filter((v) => v.type == typeShow)\n            return JSON.stringify(rules)\n        })\n    }\n}])\n","search_url":"hiker://empty?keyword=**","group":"","detail_col_type":"movie_1","detail_find_rule":"","sdetail_col_type":"movie_1","sdetail_find_rule":"","ua":"auto","preRule":"putMyVar('myCollection', MY_RULE.title)\nputMyVar('remoteUrl', 'http://hiker.nokia.press/hikerule/rulelist.json?id=3317')\n// \n// ","pages":"[{\"col_type\":\"text_1\",\"name\":\"ClassTab\",\"path\":\"ClassTab\",\"rule\":\"const ClassTab = function(classArray, params) {\\n    Object.assign(this, params)\\n    this.arr = classArray.map(v => this.init(v))\\n    this.sign = '$' + QING_TITLE + '_' + (this.name || '') + '_'\\n    this.color = this.color || '#12b668'\\n    this.boundary = this.boundary || 'blank_block'\\n}\\nClassTab.prototype = {\\n    constructor: ClassTab,\\n    load(el) {\\n        let folded = this.fold && getVar('fold_' + this.sign, '')\\n        if (this.arr.length > 1 && this.fold) el.push({\\n            title: '““””' + (folded ? '▶' : '▼').fontcolor('#049eff'),\\n            url: $('#noLoading#').lazyRule((sign, folded) => {\\n                putVar('fold_' + sign, { '': 'T', 'T': '' } [folded])\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, this.sign, folded),\\n            col_type: 'scroll_button'\\n        })\\n        let arr = folded ? [this.arr[0]] : this.arr\\n        arr.forEach((v) => {\\n            let { id, class_name, class_url } = v,\\n            selected = JSON.stringify(this.getClass(id))\\n            class_name.forEach((name, i) => {\\n                let url = class_url[i],\\n                    now = JSON.stringify({ name: name, url: url })\\n                el.push({\\n                    title: selected == now ? '““””' + name.fontcolor(this.color).bold() : name,\\n                    url: selected == now ? 'hiker://empty' : $('#noLoading#').lazyRule((sign, id, now) => {\\n                        putVar(sign + id, now)\\n                        refreshPage(false)\\n                        return 'hiker://empty'\\n                    }, this.sign, id, now),\\n                    col_type: 'scroll_button'\\n                })\\n            })\\n            el.push({ col_type: this.boundary })\\n        })\\n    },\\n    init(classObject) {\\n        if (typeof classObject.class_name == 'string')\\n            classObject.class_name = classObject.class_name.split('&')\\n        if (typeof classObject.class_url == 'string')\\n            classObject.class_url = classObject.class_url.split('&').map((v) => v.trim())\\n        return classObject\\n    },\\n    push(classObject) {\\n        this.arr.push(this.init(classObject))\\n    },\\n    getClass(id) {\\n        let defaultClass = this.arr.find(item => item.id == id)\\n        if (defaultClass) defaultClass = JSON.stringify({\\n            name: defaultClass.class_name[0],\\n            url: defaultClass.class_url[0]\\n        })\\n        else throw new Error('cannot find id: ' + id + ' in classTab: ' + this.sign)\\n        return JSON.parse(getVar(this.sign + id, defaultClass))\\n    },\\n    setUrl(url) {\\n        return url.replace(/\\\\$\\\\{([^}]*)\\\\}/g, (_, id) => this.getClass(id).url)\\n    }\\n}\\n// 生成头部分类\\nconst fyAll = RULE.url.includes('fyAll')\\nlet tabHeader = []\\nif (RULE.class_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyclass',\\n    class_name: RULE.class_name,\\n    class_url: RULE.class_url\\n})\\nif (RULE.area_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyarea',\\n    class_name: RULE.area_name,\\n    class_url: RULE.area_url\\n})\\nif (RULE.year_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fyyear',\\n    class_name: RULE.year_name,\\n    class_url: RULE.year_url\\n})\\nif (RULE.sort_name) tabHeader.push({\\n    id: fyAll ? 'fyAll' : 'fysort',\\n    class_name: RULE.sort_name,\\n    class_url: RULE.sort_url\\n})\\ntabHeader = new ClassTab(tabHeader, { name: RULE.title, fold: readFile('tabFold'), })\\n\"},{\"col_type\":\"icon_2_round\",\"name\":\"设置\",\"path\":\"Config\",\"rule\":\"js:\\naddListener('onClose', 'clearMyVar(\\\"sortFlag\\\");refreshPage()')\\nsetPageTitle('⚙ 轻合集设置 ⚙')\\nconst QING_TITLE = getMyVar('myCollection')\\nlet data = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)(true),\\n    el = [{\\n        title: '<b> 清除缓存,立即更新 <small> （基于远程仓库,不要频繁点击）',\\n        url: $().lazyRule(() => {\\n            deleteFile('updateTime')\\n            back(false)\\n            return 'toast://已更新'\\n        }),\\n        img: 'hiker://images/icon4',\\n        col_type: 'avatar'\\n    }],\\n    updateInterval = readFile('updateInterval') || '1',\\n    newWindow = readFile('newWindow'),\\n    tabFold = readFile('tabFold'),\\n    disableCustom = readFile('disableCustom'),\\n    editMode = getMyVar('editMode', '启用/禁用')\\n\\nel.push({\\n    title: '  💡 更新频率: ' + (updateInterval < 1 ? '手动' : updateInterval + '天') + '  ',\\n    url: $(updateInterval, '输入更新间隔（天），为0则手动更新').input(() => {\\n        saveFile('updateInterval', input)\\n        refreshPage()\\n        return 'hiker://empty'\\n    }),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  🖥 独立首页: ' + (newWindow ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((newWindow) => {\\n        saveFile('newWindow', newWindow ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, newWindow),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '  💠 分类折叠: ' + (tabFold ? '是' : '否') + '  ',\\n    url: $('#noLoading#').lazyRule((tabFold) => {\\n        saveFile('tabFold', tabFold ? '' : '1')\\n        refreshPage()\\n        return 'hiker://empty'\\n    }, tabFold),\\n    col_type: 'scroll_button'\\n}, {\\n    title: '““””<font color=\\\"#666666\\\"><small>特别鸣谢，小程序提供者：\\\\n' +\\n        data.reduce((self, v) => v.author ? self.concat(v.author.split('&')) : self, [])\\n        .filter((v, i, arr) => v && arr.indexOf(v) == i).join('、'),\\n    url: 'hiker://empty',\\n    col_type: 'text_center_1'\\n})\\n\\nel.push({ col_type: 'line' }, {\\n    title: '““””' + '📝'.small() + '&nbsp 轻合集自定义 &nbsp'.bold().fontcolor('#757575') + (disableCustom ? '❌' : '⭕').small(),\\n    url: $([(disableCustom ? '启用' : '禁用') + '合集自定义', '清除自定义数据'], 1).select(() => {\\n        if(input == '清除自定义数据'){\\n            deleteFile('customData')\\n        } else if(input == '启用合集自定义'){\\n            saveFile('disableCustom', '')\\n        } else {\\n            saveFile('disableCustom', '1')\\n            input += '\\\\n小程序启用/禁用、重新排序等操作均不会体现在首页小程序列表中'\\n        }\\n        refreshPage(false)\\n        return 'toast://已' + input\\n    }),\\n    col_type: 'text_center_1',\\n    extra: { lineVisible: false }\\n});\\n['启用/禁用', '重新排序', '更改图标', '导入海阔'].forEach((v) => {\\n    el.push({\\n        title: v == editMode ? '““””' + v.bold().fontcolor('#12b668') : v,\\n        url: v == editMode ? 'hiker://empty' : $('#noLoading#').lazyRule((v) => {\\n            putMyVar('editMode', v)\\n            refreshPage(false)\\n            return 'hiker://empty'\\n        }, v),\\n        col_type: 'scroll_button'\\n    })\\n})\\nJSON.parse(readFile('customData') || '[]').forEach((v, i) => {\\n    let d = { title: v.title, img: data[i].icon }\\n    switch (editMode) {\\n        case '启用/禁用':\\n            d.title = (v.visible ? '🟢  ' : '🔴  ') + d.title\\n            d.url = $('#noLoading#').lazyRule((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                rules[index].visible = !rules[index].visible\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '重新排序':\\n            let sortFlag = parseInt(getMyVar('sortFlag', '-1'))\\n            d.title = (sortFlag == i ? '🔃  ' : '') + d.title\\n            if (sortFlag == -1)\\n                d.url = $('#noLoading#').lazyRule((i) => {\\n                    putMyVar('sortFlag', i.toString())\\n                    refreshPage(false)\\n                    return 'toast://选择要移动到的位置'\\n                }, i)\\n            else\\n                d.url = $('#noLoading#').lazyRule((oldIndex, newIndex) => {\\n                    let rules = JSON.parse(readFile('customData') || '[]')\\n                    rules.splice(newIndex, 0, rules.splice(oldIndex, 1)[0])\\n                    saveFile('customData', JSON.stringify(rules))\\n                    putMyVar('sortFlag', '-1')\\n                    refreshPage(false)\\n                    return 'hiker://empty'\\n                }, sortFlag, i)\\n            break\\n        case '更改图标':\\n            d.url = $(v.icon || '', '输入新图标地址或颜色代码：').input((rule) => {\\n                let rules = JSON.parse(readFile('customData') || '[]'),\\n                    index = rules.findIndex((v) => v.title == rule.title)\\n                if (input)\\n                    rules[index].icon = input\\n                else\\n                    delete rules[index].icon\\n                saveFile('customData', JSON.stringify(rules))\\n                refreshPage(false)\\n                return 'hiker://empty'\\n            }, v)\\n            break\\n        case '导入海阔':\\n            d.url = 'rule://' + base64Encode(JSON.stringify(data[i]))\\n            break\\n    }\\n    el.push(d)\\n})\\nsetResult(el)\\n\"},{\"col_type\":\"movie_3\",\"name\":\"页面载入\",\"path\":\"frameLoad\",\"rule\":\"js:\\nconst QING_TITLE = getMyVar('myCollection')\\nfunction runCode(rule) {\\n    try {\\n        let [input, code] = rule.split('.js:')\\n        return code ? eval(code) : rule\\n    } catch (e) { return rule }\\n}\\nlet myCollection_el = [],\\n    { RULE, HASH, isIndex, pageTitle } = MY_PARAMS\\nRULE = isIndex ?\\n    $.require('hiker://page/dataLoad?rule=' + QING_TITLE)().find((v) => v.title == RULE.title) :\\n    Object.assign(JSON.parse(readFile(HASH)), RULE)\\n\\neval(JSON.parse(fetch('hiker://page/preFunc?rule=' + QING_TITLE)).rule)\\neval(JSON.parse(fetch('hiker://page/urlParse?rule=' + QING_TITLE)).rule)\\n\\nif (isIndex) {\\n    if (MY_PAGE == 1) {\\n        // 加载ClassTab组件\\n        eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n        tabHeader.load(myCollection_el)\\n        if (RULE.search_url) myCollection_el.push({\\n            title: \\\"搜索\\\",\\n            desc: \\\"搜你想要的...\\\",\\n            url: '\\\"hiker://search?s=\\\"+input',\\n            extra: {\\n                rules: $.toString((QING_TITLE, title) => {\\n                    let rules = $.require('hiker://page/dataLoad?rule=' + QING_TITLE)()\\n                    rules = [rules.find((v) => v.title == title)]\\n                    return JSON.stringify(rules)\\n                }, QING_TITLE, RULE.title),\\n                defaultValue: getMyVar('searchKey', ''),\\n                onChange: \\\"putMyVar('searchKey',input)\\\"\\n            },\\n            col_type: \\\"input\\\",\\n        })\\n    }\\n    // 处理MY_RULE\\n    MY_RULE.url = RULE.url\\n    MY_RULE.col_type = RULE.col_type\\n    MY_RULE.detail_col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.find_rule\\n    MY_RULE.detail_find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = JSON.parse(RULE.pages || '[]')\\n    MY_RULE.pages = JSON.stringify(MY_RULE.pageList)\\n    MY_RULE.params = {}\\n} else {\\n    MY_RULE.url = MY_PARAMS.url\\n    MY_RULE.col_type = RULE.detail_col_type\\n    MY_RULE.find_rule = RULE.detail_find_rule\\n    MY_RULE.pageList = RULE.pageList\\n    MY_RULE.pages = RULE.pages\\n    MY_RULE.params = RULE.params\\n}\\nMY_RULE.ua = RULE.ua\\nMY_RULE.title = RULE.title\\nMY_RULE.preRule = RULE.preRule\\nMY_RULE.last_chapter_rule = RULE.last_chapter_rule\\n\\nif (!isIndex) {\\n    if (pageTitle) setPageTitle(pageTitle)\\n    setLastChapterRule(MY_RULE.last_chapter_rule)\\n    MY_PARAMS = MY_RULE.params\\n}\\n// 预处理并初始化config\\nif (MY_PAGE == 1) eval(MY_RULE.preRule)\\nlet _cfg = getMyVar('initConfig', '{}')\\nif (_cfg && _cfg.length > 0) {\\n    config = JSON.parse(_cfg)\\n}\\n\\n// 缓存规则到本地 避免每个extra重复携带，导致数据太大\\nlet MyRuleStr = JSON.stringify(MY_RULE),\\n    ruleHash = md5(MyRuleStr)\\nif (!fileExist(ruleHash)) {\\n    saveFile(ruleHash, MyRuleStr)\\n    // addListener可能被重写，缓存规则MD5，回首页再去删\\n    let _ruleHashCache = JSON.parse(readFile(\\\"_ruleHashCache\\\") || \\\"[]\\\")\\n    _ruleHashCache.push(ruleHash)\\n    saveFile(\\\"_ruleHashCache\\\", JSON.stringify(_ruleHashCache))\\n}\\n\\n// 正文解析\\nif (MY_RULE.find_rule.startsWith('js:')) {\\n    setResult = function(el, param1, param2, param3) {\\n        param1 = CALLBACK_KEY\\n        param2 = MY_RULE\\n        param3 = MY_TYPE\\n        if (Array.isArray(el.data)) el = el.data;\\n        Array.prototype.push.apply(myCollection_el, el.map((v) => {\\n            let MY__RULE = {};\\n            v.col_type = v.col_type || MY_RULE.col_type\\n\\n            if (!v.url || ['rule', 'pics', 'toast', 'input', 'copy', 'editFile', 'x5', 'x5WebView', 'x5Play', 'web', 'select', 'x5Rule', 'webRule', 'download'].find((vv) => v.url.startsWith(vv + '://')) || ['x5_webview_single', 'input'].find((vv) => v.col_type == vv)) {\\n                return v\\n            } else if (v.url.includes('@rule=')) {\\n                let [_, url, rule] = v.url.match(/^([\\\\s\\\\S]*?)@rule=([\\\\s\\\\S]*)$/)\\n                v.url = url\\n                MY__RULE.detail_find_rule = rule\\n                MY__RULE.detail_col_type = MY_RULE.col_type\\n            } else if (v.url.startsWith('hiker://page/')) {\\n                if (v.url.includes('rule=') || (v.extra || {}).rule)\\n                    return v\\n                let [_, path, flag, params] = v.url.match(/^hiker:\\\\/\\\\/page\\\\/(.+?)(#.*?)?(?:\\\\?(.*))?$/),\\n                    subPage = MY_RULE.pageList.find((v) => v.path == path),\\n                    subUrl = (params || '').split('&').find((v) => v.startsWith('url='))\\n                v.url = subUrl ? subUrl.slice(4).replace(/？？/g, '?').replace(/＆＆/g, '&') : (v.extra || {}).url || 'hiker://empty' + flag + '?' + (params || '')\\n                MY__RULE.detail_find_rule = subPage.rule\\n                MY__RULE.detail_col_type = subPage.col_type\\n                MY__RULE.params = v.extra || {}\\n            } else if (v.url.includes('@lazyRule=')) {\\n                let reIndex = v.url.indexOf('.js:')\\n                if (reIndex >= 0) v.url = v.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + v.url.slice(reIndex + 4)\\n                return v\\n            } else if (isIndex) {\\n                if (!MY_RULE.detail_find_rule || /hiker:\\\\/\\\\/(?!empty.+$)/.test(v.url)) return v\\n            } else {\\n                return v\\n            }\\n            v.extra = {\\n                url: (function(url) {\\n                    url = url.split(';')\\n                    return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                })(v.url),\\n                RULE: MY__RULE,\\n                HASH: ruleHash,\\n                pageTitle: isIndex && v.title\\n            }\\n            v.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            return v\\n        }))\\n        method_setResult.invoke(javaContext, myCollection_el, param1, param2, param3)\\n    }\\n    setHomeResult = setResult\\n    setSearchResult = setResult\\n\\n    eval(MY_RULE.find_rule.slice(3))\\n} else {\\n    let [_, findRule, detailFindRule] = MY_RULE.find_rule.match(/^([\\\\s\\\\S]*?)(?:==>([\\\\s\\\\S]*))?$/)\\n    findRule = findRule.split(';')\\n    parseDomForArray(getResCode(), findRule.shift()).forEach((data) => {\\n        let [title, img, desc, url] = findRule.map((v, i) => {\\n                try {\\n                    if (v == '*') return ''\\n                    else v = (i == 1 || i == 3) ?\\n                        parseDom(data, v) :\\n                        parseDomForHtml(data, v)\\n                    if (i != 3) v = runCode(v)\\n                    return v\\n                } catch (e) { return '' }\\n            }),\\n            res = {\\n                title: title, url: url,\\n                desc: desc, img: img,\\n                col_type: MY_RULE.col_type\\n            }\\n        if (res.url) {\\n            if (res.url.includes('@lazyRule=')) {\\n                let reIndex = res.url.indexOf('.js:')\\n                if (reIndex >= 0) res.url = res.url.slice(0, reIndex) + '.js:\\\\nif(MY_RULE)Object.assign(MY_RULE, JSON.parse(readFile(\\\"' + ruleHash + '\\\")));' + res.url.slice(reIndex + 4)\\n            } else if (detailFindRule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: { detail_find_rule: detailFindRule },\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            } else if (MY_RULE.detail_find_rule) {\\n                res.extra = {\\n                    url: (function(url) {\\n                        url = url.split(';')\\n                        return url.shift() + ';' + paramHandle(url, MY_RULE.ua, MY_RULE.url.split(';')[2])\\n                    })(url),\\n                    RULE: {},\\n                    HASH: ruleHash,\\n                    pageTitle: isIndex && title\\n                }\\n                res.url = 'hiker://page/frameLoad?rule=' + QING_TITLE\\n            }\\n        }\\n        myCollection_el.push(res)\\n    })\\n    setResult(myCollection_el)\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"数据载入\",\"path\":\"dataLoad\",\"rule\":\"$.exports = function(showAll) {\\n    //检查间隔，默认一天\\n    let interval = parseInt(readFile('updateInterval') || '1'),\\n        time = parseInt(readFile('updateTime')) || 0,\\n        now = new Date().getTime(),\\n        data = []\\n    if (time == 0 || interval > 0 && now - time > 1000 * 60 * 60 * 24 * interval) {\\n        // 获取远程数据\\n        let url = getMyVar('remoteUrl')\\n        try {\\n            let remoteData = fetch(url)\\n            if (url.startsWith('hiker://page/'))\\n                remoteData = JSON.parse(remoteData).rule\\n            data = JSON.parse(remoteData)\\n        } catch (e) {}\\n        if(data.length == 0) {\\n            data = JSON.parse(readFile('dataCache') || '[]')\\n            log('没有获取到更新数据')\\n        } else {\\n            data = data.filter((v) => { return v.title != getMyVar('myCollection') && !(v.author || '').includes('轻合集生成器') })\\n            saveFile('dataCache', JSON.stringify(data))\\n            saveFile('updateTime', now.toString())\\n            log('更新数据已写入本地')\\n        }\\n    } else {\\n        data = JSON.parse(readFile('dataCache') || '[]')\\n    }\\n    if (readFile('disableCustom')) return data\\n    else { // 写入自定义数据\\n        let customData = JSON.parse(readFile('customData') || '[]'),\\n            rewriteData = []\\n        customData = customData.reduce((self, v) => {\\n            let index = data.findIndex((vv) => v.title == vv.title)\\n            if (index >= 0) {\\n                self.push(v)\\n                let rule = data.splice(index, 1)[0]\\n                if (showAll || v.visible)\\n                    rewriteData.push(Object.assign(rule, v))\\n            }\\n            return self\\n        }, [])\\n        data.forEach((v) => customData.push({ title: v.title, visible: true }))\\n        saveFile('customData', JSON.stringify(customData))\\n        return rewriteData.concat(data)\\n    }\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"函数重写\",\"path\":\"preFunc\",\"rule\":\"// 防止require多次运行\\nlet rCache = {}\\nrequire = function(param0, param1, param2, param3, param4) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param2 = param2 || 0\\n    param3 = MY_TICKET\\n    param4 = eval\\n    return method_require.invoke(javaContext, param0, param1, param2, param3, param4)\\n}\\nrequireCache = function(param0, param1, param2, param3, param4, param5) {\\n    if (!param0 || rCache[param0] != null) {\\n        return\\n    }\\n    rCache[param0] = 1\\n    param3 = param3 || 0\\n    param4 = MY_TICKET\\n    param5 = eval\\n    return method_requireCache.invoke(javaContext, param0, param1, param2, param3, param4, param5)\\n}\\nrc = requireCache\\n\\n// 最新章节规则注入预处理代码\\nsetLastChapterRule = function(param0) {\\n    if (!param0) return\\n    if (param0.startsWith(\\\"js:\\\") && MY_RULE.preRule) {\\n        param0 = 'js:\\\\ntry{eval(JSON.parse(fetch(\\\"hiker://page/preFunc?rule=' + QING_TITLE + '\\\")).rule);\\\\\\n            eval(base64Decode(\\\"' + base64Encode(MY_RULE.preRule) + '\\\"));\\\\\\n            let _cfg = getMyVar(\\\"initConfig\\\", \\\"{}\\\");\\\\\\n            if (_cfg && _cfg.length>0) {config = JSON.parse(_cfg)}}catch(e){log(e.message)}\\\\n;' +\\n            param0.slice(3)\\n    }\\n    method_setLastChapterRule.invoke(javaContext, param0);\\n}\\n\"},{\"col_type\":\"movie_3\",\"name\":\"链接处理\",\"path\":\"urlParse\",\"rule\":\"// 首页链接替换分类\\nfunction indexUrl(param) {\\n    function runCode(rule) {\\n        try {\\n            let [input, code] = rule.split('.js:')\\n            return code ? eval(code) : rule\\n        } catch (e) { return rule }\\n    }\\n    let { RULE, pageNum, QING_TITLE } = JSON.parse(param.split('###')[1])\\n    RULE = JSON.parse(base64Decode(RULE))\\n    pageNum = parseInt(pageNum)\\n    let url = RULE.url,\\n        tabHeader = []\\n\\n    eval(JSON.parse(fetch('hiker://page/ClassTab?rule=' + QING_TITLE)).rule)\\n    url = tabHeader.setUrl(fyAll ? url.replace(/fyAll/g, '$${fyAll}') : url.replace(/fy(class|area|year|sort)/g, '$${fy$1}'))\\n    url = url.replace(/fypage(?:@(-?\\\\d+)@)?(?:\\\\*(\\\\d+)@)?/, (_, start, space) => parseInt(start || 0) + 1 + (pageNum - 1) * parseInt(space || 1))\\n    url = /^([\\\\s\\\\S]*?)(?:\\\\[firstPage=([\\\\s\\\\S]*?)\\\\])?(?:(\\\\.js:[\\\\s\\\\S]*?))?$/.exec(url)\\n    if (pageNum == 1 && url[2]) url[1] = url[2]\\n    if (url[3] && !url[1].includes('.js:')) url[1] += url[3]\\n    return runCode(url[1])\\n}\\n// 链接参数处理\\nfunction paramHandle(urlParam, ua, charset) {\\n    urlParam[0] = urlParam[0] || 'GET'\\n    urlParam[1] = urlParam[1] || charset || 'UTF-8'\\n    urlParam[2] = urlParam[2] ? urlParam[2].match(/{(.*)}/)[1].split('&&') : []\\n    // 添加全局UA\\n    if (urlParam[2].findIndex((v) => v.startsWith('User-Agent@')) == -1) {\\n        if (ua == 'pc')\\n            urlParam[2].push('User-Agent@' + PC_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n        else if (ua == 'mobile')\\n            urlParam[2].push('User-Agent@' + MOBILE_UA.replace(/;/g, '；；').replace(/\\\\?/, '？？'))\\n    }\\n    urlParam[2] = '{' + urlParam[2].join('&&') + '}'\\n    return urlParam.join(';')\\n}\\n\"}]","icon":"https://img0.baidu.com/it/u=1336316837,4057077451&fm=26&fmt=auto"}]